From 40cf66a730d4328898951127b2d0cf010577cc0d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 28 Sep 2021 20:35:05 +0100 Subject: [PATCH 001/692] Checking in work so far on a 1.13 blockstate deserializer (incomplete, but have at it). --- .../BlockStateDeserializeException.php | 28 + .../blockstate/BlockStateDeserializerR13.php | 1484 +++++++++++++++++ .../bedrock/blockstate/BlockStateNamesR13.php | 131 ++ .../bedrock/blockstate/BlockStateReader.php | 271 +++ .../blockstate/BlockStateStringValuesR13.php | 269 +++ 5 files changed, 2183 insertions(+) create mode 100644 src/data/bedrock/blockstate/BlockStateDeserializeException.php create mode 100644 src/data/bedrock/blockstate/BlockStateDeserializerR13.php create mode 100644 src/data/bedrock/blockstate/BlockStateNamesR13.php create mode 100644 src/data/bedrock/blockstate/BlockStateReader.php create mode 100644 src/data/bedrock/blockstate/BlockStateStringValuesR13.php diff --git a/src/data/bedrock/blockstate/BlockStateDeserializeException.php b/src/data/bedrock/blockstate/BlockStateDeserializeException.php new file mode 100644 index 000000000..03c3b7650 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateDeserializeException.php @@ -0,0 +1,28 @@ + + */ + private array $deserializeFuncs = []; + + /** @phpstan-param \Closure(BlockStateReader) : Block $c */ + private function mapId(string $id, \Closure $c) : void{ + if(array_key_exists($id, $this->deserializeFuncs)){ + throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); + } + $this->deserializeFuncs[$id] = $c; + } + + /** @phpstan-param \Closure(BlockStateReader) : Block $c */ + private function mapVanilla(string $minecraftId, \Closure $c) : void{ + $this->mapId("minecraft:$minecraftId", $c); + } + /** @throws BlockStateDeserializeException */ + private function decodeButton(Button $block, BlockStateReader $in) : Button{ + return $block + ->setFacing($in->readFacingDirection()) + ->setPressed($in->readBool(BlockStateNamesR13::BUTTON_PRESSED_BIT)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeComparator(RedstoneComparator $block, BlockStateReader $in) : RedstoneComparator{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setPowered($in->readBool(BlockStateNamesR13::OUTPUT_LIT_BIT)) + ->setSubtractMode($in->readBool(BlockStateNamesR13::OUTPUT_SUBTRACT_BIT)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeCrops(Crops $block, BlockStateReader $in) : Crops{ + return $block->setAge($in->readBoundedInt(BlockStateNamesR13::GROWTH, 0, 7)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeDoor(Door $block, BlockStateReader $in) : Door{ + //TODO: check if these need any special treatment to get the appropriate data to both halves of the door + return $block + ->setTop($in->readBool(BlockStateNamesR13::UPPER_BLOCK_BIT)) + ->setFacing(Facing::rotateY($in->readLegacyHorizontalFacing(), false)) + ->setHingeRight($in->readBool(BlockStateNamesR13::DOOR_HINGE_BIT)) + ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeFenceGate(FenceGate $block, BlockStateReader $in) : FenceGate{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setInWall($in->readBool(BlockStateNamesR13::IN_WALL_BIT)) + ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeFloorCoralFan(BlockStateReader $in) : FloorCoralFan{ + return VanillaBlocks::CORAL_FAN() + ->setCoralType($in->readCoralType()) + ->setAxis(match($in->readBoundedInt(BlockStateNamesR13::CORAL_FAN_DIRECTION, 0, 1)){ + 0 => Axis::X, + 1 => Axis::Z, + default => throw new AssumptionFailedError("readBoundedInt() should have prevented this"), + }); + } + + /** @throws BlockStateDeserializeException */ + private function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{ + return $block->setFacing($in->readHorizontalFacing()); + } + + /** @throws BlockStateDeserializeException */ + private function decodeLiquid(Liquid $block, BlockStateReader $in, bool $still) : Liquid{ + $fluidHeightState = $in->readBoundedInt(BlockStateNamesR13::LIQUID_DEPTH, 0, 15); + return $block + ->setDecay($fluidHeightState & 0x7) + ->setFalling(($fluidHeightState & 0x1) !== 0) + ->setStill($still); + } + + private function decodeFlowingLiquid(Liquid $block, BlockStateReader $in) : Liquid{ + return $this->decodeLiquid($block, $in, false); + } + + private function decodeStillLiquid(Liquid $block, BlockStateReader $in) : Liquid{ + return $this->decodeLiquid($block, $in, true); + } + + /** @throws BlockStateDeserializeException */ + private function decodeMushroomBlock(RedMushroomBlock $block, BlockStateReader $in) : Block{ + switch($type = $in->readBoundedInt(BlockStateNamesR13::HUGE_MUSHROOM_BITS, 0, 15)){ + case BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM: return VanillaBlocks::ALL_SIDED_MUSHROOM_STEM(); + case BlockLegacyMetadata::MUSHROOM_BLOCK_STEM: return VanillaBlocks::MUSHROOM_STEM(); + default: + //invalid types get left as default + $type = MushroomBlockTypeIdMap::getInstance()->fromId($type); + return $type !== null ? $block->setMushroomBlockType($type) : $block; + } + } + + /** @throws BlockStateDeserializeException */ + private function decodeRepeater(RedstoneRepeater $block, BlockStateReader $in) : RedstoneRepeater{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setDelay($in->readBoundedInt(BlockStateNamesR13::REPEATER_DELAY, 0, 3) + 1); + } + + /** @throws BlockStateDeserializeException */ + private function decodeSimplePressurePlate(SimplePressurePlate $block, BlockStateReader $in) : SimplePressurePlate{ + //TODO: not sure what the deal is here ... seems like a mojang bug / artifact of bad implementation? + //best to keep this separate from weighted plates anyway... + return $block->setPressed($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15) !== 0); + } + + /** @throws BlockStateDeserializeException */ + private function decodeStairs(Stair $block, BlockStateReader $in) : Stair{ + return $block + ->setUpsideDown($in->readBool(BlockStateNamesR13::UPSIDE_DOWN_BIT)) + ->setFacing($in->readWeirdoHorizontalFacing()); + } + + /** @throws BlockStateDeserializeException */ + private function decodeTrapdoor(Trapdoor $block, BlockStateReader $in) : Trapdoor{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setTop($in->readBool(BlockStateNamesR13::UPSIDE_DOWN_BIT)) + ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + private function decodeWall(Wall $block, BlockStateReader $in) : Wall{ + //TODO: our walls don't support the full range of needed states yet + return $block; + } + + /** @throws BlockStateDeserializeException */ + private function mapStoneSlab1Type(BlockStateReader $in) : Slab{ + //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood + return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE)){ + StringValues::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), + StringValues::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + private function mapStoneSlab2Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone + return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_2)){ + StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_2, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + private function mapStoneSlab3Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone + return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_3)){ + StringValues::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_3, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + private function mapStoneSlab4Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone + return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_4)){ + StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_4, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + private function mapWoodenSlabType(BlockStateReader $in) : Slab{ + // * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + return match($type = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), + default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $type), + }; + } + + public function __construct(){ + $this->mapVanilla("acacia_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::ACACIA_BUTTON(), $in)); + $this->mapVanilla("acacia_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::ACACIA_DOOR(), $in)); + $this->mapVanilla("acacia_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::ACACIA_FENCE_GATE(), $in)); + $this->mapVanilla("acacia_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::ACACIA_PRESSURE_PLATE(), $in)); + $this->mapVanilla("acacia_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::ACACIA_STAIRS(), $in)); + $this->mapVanilla("acacia_standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACACIA_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("acacia_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::ACACIA_TRAPDOOR(), $in)); + $this->mapVanilla("acacia_wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACACIA_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("activator_rail", function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACTIVATOR_RAIL() + ->setPowered($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); + }); + $this->mapVanilla("air", fn() => VanillaBlocks::AIR()); + $this->mapVanilla("andesite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::ANDESITE_STAIRS(), $in)); + $this->mapVanilla("anvil", function(BlockStateReader $in) : Block{ + return VanillaBlocks::ANVIL() + ->setDamage(match($value = $in->readString(BlockStateNamesR13::DAMAGE)){ + StringValues::DAMAGE_UNDAMAGED => 0, + StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, + StringValues::DAMAGE_VERY_DAMAGED => 2, + StringValues::DAMAGE_BROKEN => 0, + default => throw $in->badValueException(BlockStateNamesR13::DAMAGE, $value), + }) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("bamboo", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BAMBOO() + ->setLeafSize(match($value = $in->readString(BlockStateNamesR13::BAMBOO_LEAF_SIZE)){ + StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, + default => throw $in->badValueException(BlockStateNamesR13::BAMBOO_LEAF_SIZE, $value), + }) + ->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)) + ->setThick(match($value = $in->readString(BlockStateNamesR13::BAMBOO_STALK_THICKNESS)){ + StringValues::BAMBOO_STALK_THICKNESS_THIN => false, + StringValues::BAMBOO_STALK_THICKNESS_THICK => true, + default => throw $in->badValueException(BlockStateNamesR13::BAMBOO_STALK_THICKNESS, $value), + }); + }); + $this->mapVanilla("bamboo_sapling", function(BlockStateReader $in) : Block{ + //TODO: sapling_type intentionally ignored (its presence is a bug) + return VanillaBlocks::BAMBOO_SAPLING()->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)); + }); + $this->mapVanilla("barrel", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BARREL() + ->setFacing($in->readFacingDirection()) + ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); + }); + $this->mapVanilla("barrier", fn() => VanillaBlocks::BARRIER()); + $this->mapVanilla("beacon", fn() => VanillaBlocks::BEACON()); + $this->mapVanilla("bed", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BED() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setHead($in->readBool(BlockStateNamesR13::HEAD_PIECE_BIT)) + ->setOccupied($in->readBool(BlockStateNamesR13::OCCUPIED_BIT)); + }); + $this->mapVanilla("bedrock", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BEDROCK() + ->setBurnsForever($in->readBool(BlockStateNamesR13::INFINIBURN_BIT)); + }); + $this->mapVanilla("beetroot", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::BEETROOTS(), $in)); + $this->mapVanilla("bell", function(BlockStateReader $in) : Block{ + //TODO: ignored toggle_bit (appears to be internally used in MCPE only, useless for us) + return VanillaBlocks::BELL() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setAttachmentType($in->readBellAttachmentType()); + }); + $this->mapVanilla("birch_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::BIRCH_BUTTON(), $in)); + $this->mapVanilla("birch_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::BIRCH_DOOR(), $in)); + $this->mapVanilla("birch_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::BIRCH_FENCE_GATE(), $in)); + $this->mapVanilla("birch_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::BIRCH_PRESSURE_PLATE(), $in)); + $this->mapVanilla("birch_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::BIRCH_STAIRS(), $in)); + $this->mapVanilla("birch_standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BIRCH_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("birch_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::BIRCH_TRAPDOOR(), $in)); + $this->mapVanilla("birch_wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BIRCH_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("black_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("blast_furnace", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BLAST_FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->mapVanilla("blue_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("blue_ice", fn() => VanillaBlocks::BLUE_ICE()); + $this->mapVanilla("bone_block", function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored "deprecated" blockstate (useless) + return VanillaBlocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("bookshelf", fn() => VanillaBlocks::BOOKSHELF()); + $this->mapVanilla("brewing_stand", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BREWING_STAND() + ->setSlot(BrewingStandSlot::EAST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_A_BIT)) + ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_B_BIT)) + ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_C_BIT)); + }); + $this->mapVanilla("brick_block", fn() => VanillaBlocks::BRICKS()); + $this->mapVanilla("brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::BRICK_STAIRS(), $in)); + $this->mapVanilla("brown_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("brown_mushroom", fn() => VanillaBlocks::BROWN_MUSHROOM()); + $this->mapVanilla("brown_mushroom_block", fn(BlockStateReader $in) => $this->decodeMushroomBlock(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), $in)); + $this->mapVanilla("cactus", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CACTUS() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); + }); + $this->mapVanilla("cake", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CAKE() + ->setBites($in->readBoundedInt(BlockStateNamesR13::BITE_COUNTER, 0, 6)); + }); + $this->mapVanilla("carpet", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CARPET() + ->setColor($in->readColor()); + }); + $this->mapVanilla("carrots", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::CARROTS(), $in)); + $this->mapVanilla("carved_pumpkin", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CARVED_PUMPKIN() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("chemical_heat", fn() => VanillaBlocks::CHEMICAL_HEAT()); + $this->mapVanilla("chemistry_table", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::CHEMISTRY_TABLE_TYPE)){ + StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), + StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), + StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), + StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), + default => throw $in->badValueException(BlockStateNamesR13::CHEMISTRY_TABLE_TYPE, $type), + })->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("chest", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("clay", fn() => VanillaBlocks::CLAY()); + $this->mapVanilla("coal_block", fn() => VanillaBlocks::COAL()); + $this->mapVanilla("coal_ore", fn() => VanillaBlocks::COAL_ORE()); + $this->mapVanilla("cobblestone", fn() => VanillaBlocks::COBBLESTONE()); + $this->mapVanilla("cobblestone_wall", fn(BlockStateReader $in) => $this->decodeWall(VanillaBlocks::COBBLESTONE_WALL(), $in)); + $this->mapVanilla("cocoa", function(BlockStateReader $in) : Block{ + return VanillaBlocks::COCOA_POD() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 2)) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("colored_torch_bp", function(BlockStateReader $in) : Block{ + return $in->readBool(BlockStateNamesR13::COLOR_BIT) ? + VanillaBlocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : + VanillaBlocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->mapVanilla("colored_torch_rg", function(BlockStateReader $in) : Block{ + return $in->readBool(BlockStateNamesR13::COLOR_BIT) ? + VanillaBlocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : + VanillaBlocks::RED_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->mapVanilla("concrete", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CONCRETE() + ->setColor($in->readColor()); + }); + $this->mapVanilla("concretePowder", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CONCRETE_POWDER() + ->setColor($in->readColor()); + }); + $this->mapVanilla("coral", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CORAL() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)); + }); + $this->mapVanilla("coral_block", function(BlockStateReader $in) : Block{ + return VanillaBlocks::CORAL_BLOCK() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)); + }); + $this->mapVanilla("coral_fan", fn(BlockStateReader $in) => $this->decodeFloorCoralFan($in)->setDead(false)); + $this->mapVanilla("coral_fan_dead", fn(BlockStateReader $in) => $this->decodeFloorCoralFan($in)->setDead(true)); + $this->mapVanilla("coral_fan_hang", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType($in->readBool(BlockStateNamesR13::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) + ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->mapVanilla("coral_fan_hang2", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType($in->readBool(BlockStateNamesR13::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE()) + ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->mapVanilla("coral_fan_hang3", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType(CoralType::HORN()) + ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->mapVanilla("crafting_table", fn() => VanillaBlocks::CRAFTING_TABLE()); + $this->mapVanilla("cyan_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("dark_oak_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::DARK_OAK_BUTTON(), $in)); + $this->mapVanilla("dark_oak_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::DARK_OAK_DOOR(), $in)); + $this->mapVanilla("dark_oak_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::DARK_OAK_FENCE_GATE(), $in)); + $this->mapVanilla("dark_oak_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), $in)); + $this->mapVanilla("dark_oak_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DARK_OAK_STAIRS(), $in)); + $this->mapVanilla("dark_oak_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::DARK_OAK_TRAPDOOR(), $in)); + $this->mapVanilla("dark_prismarine_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DARK_PRISMARINE_STAIRS(), $in)); + $this->mapVanilla("darkoak_standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DARK_OAK_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("darkoak_wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DARK_OAK_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("daylight_detector", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DAYLIGHT_SENSOR() + ->setInverted(false) + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); + }); + $this->mapVanilla("daylight_detector_inverted", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DAYLIGHT_SENSOR() + ->setInverted(true) + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); + }); + $this->mapVanilla("deadbush", fn() => VanillaBlocks::DEAD_BUSH()); + $this->mapVanilla("detector_rail", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DETECTOR_RAIL() + ->setActivated($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); + }); + $this->mapVanilla("diamond_block", fn() => VanillaBlocks::DIAMOND()); + $this->mapVanilla("diamond_ore", fn() => VanillaBlocks::DIAMOND_ORE()); + $this->mapVanilla("diorite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DIORITE_STAIRS(), $in)); + $this->mapVanilla("dirt", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DIRT() + ->setCoarse(match($value = $in->readString(BlockStateNamesR13::DIRT_TYPE)){ + StringValues::DIRT_TYPE_NORMAL => false, + StringValues::DIRT_TYPE_COARSE => true, + default => throw $in->badValueException(BlockStateNamesR13::DIRT_TYPE, $value), + }); + }); + $this->mapVanilla("double_plant", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::DOUBLE_PLANT_TYPE)){ + StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), + StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), + StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), + StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), + StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), + StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), + default => throw $in->badValueException(BlockStateNamesR13::DOUBLE_PLANT_TYPE, $type), + })->setTop($in->readBool(BlockStateNamesR13::UPPER_BLOCK_BIT)); + }); + $this->mapVanilla("double_stone_slab", function(BlockStateReader $in) : Block{ + return $this->mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapVanilla("double_stone_slab2", function(BlockStateReader $in) : Block{ + return $this->mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapVanilla("double_stone_slab3", function(BlockStateReader $in) : Block{ + return $this->mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapVanilla("double_stone_slab4", function(BlockStateReader $in) : Block{ + return $this->mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapVanilla("double_wooden_slab", function(BlockStateReader $in) : Block{ + return $this->mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapVanilla("dragon_egg", fn() => VanillaBlocks::DRAGON_EGG()); + $this->mapVanilla("dried_kelp_block", fn() => VanillaBlocks::DRIED_KELP()); + $this->mapVanilla("element_0", fn() => VanillaBlocks::ELEMENT_ZERO()); + $this->mapVanilla("element_1", fn() => VanillaBlocks::ELEMENT_HYDROGEN()); + $this->mapVanilla("element_10", fn() => VanillaBlocks::ELEMENT_NEON()); + $this->mapVanilla("element_100", fn() => VanillaBlocks::ELEMENT_FERMIUM()); + $this->mapVanilla("element_101", fn() => VanillaBlocks::ELEMENT_MENDELEVIUM()); + $this->mapVanilla("element_102", fn() => VanillaBlocks::ELEMENT_NOBELIUM()); + $this->mapVanilla("element_103", fn() => VanillaBlocks::ELEMENT_LAWRENCIUM()); + $this->mapVanilla("element_104", fn() => VanillaBlocks::ELEMENT_RUTHERFORDIUM()); + $this->mapVanilla("element_105", fn() => VanillaBlocks::ELEMENT_DUBNIUM()); + $this->mapVanilla("element_106", fn() => VanillaBlocks::ELEMENT_SEABORGIUM()); + $this->mapVanilla("element_107", fn() => VanillaBlocks::ELEMENT_BOHRIUM()); + $this->mapVanilla("element_108", fn() => VanillaBlocks::ELEMENT_HASSIUM()); + $this->mapVanilla("element_109", fn() => VanillaBlocks::ELEMENT_MEITNERIUM()); + $this->mapVanilla("element_11", fn() => VanillaBlocks::ELEMENT_SODIUM()); + $this->mapVanilla("element_110", fn() => VanillaBlocks::ELEMENT_DARMSTADTIUM()); + $this->mapVanilla("element_111", fn() => VanillaBlocks::ELEMENT_ROENTGENIUM()); + $this->mapVanilla("element_112", fn() => VanillaBlocks::ELEMENT_COPERNICIUM()); + $this->mapVanilla("element_113", fn() => VanillaBlocks::ELEMENT_NIHONIUM()); + $this->mapVanilla("element_114", fn() => VanillaBlocks::ELEMENT_FLEROVIUM()); + $this->mapVanilla("element_115", fn() => VanillaBlocks::ELEMENT_MOSCOVIUM()); + $this->mapVanilla("element_116", fn() => VanillaBlocks::ELEMENT_LIVERMORIUM()); + $this->mapVanilla("element_117", fn() => VanillaBlocks::ELEMENT_TENNESSINE()); + $this->mapVanilla("element_118", fn() => VanillaBlocks::ELEMENT_OGANESSON()); + $this->mapVanilla("element_12", fn() => VanillaBlocks::ELEMENT_MAGNESIUM()); + $this->mapVanilla("element_13", fn() => VanillaBlocks::ELEMENT_ALUMINUM()); + $this->mapVanilla("element_14", fn() => VanillaBlocks::ELEMENT_SILICON()); + $this->mapVanilla("element_15", fn() => VanillaBlocks::ELEMENT_PHOSPHORUS()); + $this->mapVanilla("element_16", fn() => VanillaBlocks::ELEMENT_SULFUR()); + $this->mapVanilla("element_17", fn() => VanillaBlocks::ELEMENT_CHLORINE()); + $this->mapVanilla("element_18", fn() => VanillaBlocks::ELEMENT_ARGON()); + $this->mapVanilla("element_19", fn() => VanillaBlocks::ELEMENT_POTASSIUM()); + $this->mapVanilla("element_2", fn() => VanillaBlocks::ELEMENT_HELIUM()); + $this->mapVanilla("element_20", fn() => VanillaBlocks::ELEMENT_CALCIUM()); + $this->mapVanilla("element_21", fn() => VanillaBlocks::ELEMENT_SCANDIUM()); + $this->mapVanilla("element_22", fn() => VanillaBlocks::ELEMENT_TITANIUM()); + $this->mapVanilla("element_23", fn() => VanillaBlocks::ELEMENT_VANADIUM()); + $this->mapVanilla("element_24", fn() => VanillaBlocks::ELEMENT_CHROMIUM()); + $this->mapVanilla("element_25", fn() => VanillaBlocks::ELEMENT_MANGANESE()); + $this->mapVanilla("element_26", fn() => VanillaBlocks::ELEMENT_IRON()); + $this->mapVanilla("element_27", fn() => VanillaBlocks::ELEMENT_COBALT()); + $this->mapVanilla("element_28", fn() => VanillaBlocks::ELEMENT_NICKEL()); + $this->mapVanilla("element_29", fn() => VanillaBlocks::ELEMENT_COPPER()); + $this->mapVanilla("element_3", fn() => VanillaBlocks::ELEMENT_LITHIUM()); + $this->mapVanilla("element_30", fn() => VanillaBlocks::ELEMENT_ZINC()); + $this->mapVanilla("element_31", fn() => VanillaBlocks::ELEMENT_GALLIUM()); + $this->mapVanilla("element_32", fn() => VanillaBlocks::ELEMENT_GERMANIUM()); + $this->mapVanilla("element_33", fn() => VanillaBlocks::ELEMENT_ARSENIC()); + $this->mapVanilla("element_34", fn() => VanillaBlocks::ELEMENT_SELENIUM()); + $this->mapVanilla("element_35", fn() => VanillaBlocks::ELEMENT_BROMINE()); + $this->mapVanilla("element_36", fn() => VanillaBlocks::ELEMENT_KRYPTON()); + $this->mapVanilla("element_37", fn() => VanillaBlocks::ELEMENT_RUBIDIUM()); + $this->mapVanilla("element_38", fn() => VanillaBlocks::ELEMENT_STRONTIUM()); + $this->mapVanilla("element_39", fn() => VanillaBlocks::ELEMENT_YTTRIUM()); + $this->mapVanilla("element_4", fn() => VanillaBlocks::ELEMENT_BERYLLIUM()); + $this->mapVanilla("element_40", fn() => VanillaBlocks::ELEMENT_ZIRCONIUM()); + $this->mapVanilla("element_41", fn() => VanillaBlocks::ELEMENT_NIOBIUM()); + $this->mapVanilla("element_42", fn() => VanillaBlocks::ELEMENT_MOLYBDENUM()); + $this->mapVanilla("element_43", fn() => VanillaBlocks::ELEMENT_TECHNETIUM()); + $this->mapVanilla("element_44", fn() => VanillaBlocks::ELEMENT_RUTHENIUM()); + $this->mapVanilla("element_45", fn() => VanillaBlocks::ELEMENT_RHODIUM()); + $this->mapVanilla("element_46", fn() => VanillaBlocks::ELEMENT_PALLADIUM()); + $this->mapVanilla("element_47", fn() => VanillaBlocks::ELEMENT_SILVER()); + $this->mapVanilla("element_48", fn() => VanillaBlocks::ELEMENT_CADMIUM()); + $this->mapVanilla("element_49", fn() => VanillaBlocks::ELEMENT_INDIUM()); + $this->mapVanilla("element_5", fn() => VanillaBlocks::ELEMENT_BORON()); + $this->mapVanilla("element_50", fn() => VanillaBlocks::ELEMENT_TIN()); + $this->mapVanilla("element_51", fn() => VanillaBlocks::ELEMENT_ANTIMONY()); + $this->mapVanilla("element_52", fn() => VanillaBlocks::ELEMENT_TELLURIUM()); + $this->mapVanilla("element_53", fn() => VanillaBlocks::ELEMENT_IODINE()); + $this->mapVanilla("element_54", fn() => VanillaBlocks::ELEMENT_XENON()); + $this->mapVanilla("element_55", fn() => VanillaBlocks::ELEMENT_CESIUM()); + $this->mapVanilla("element_56", fn() => VanillaBlocks::ELEMENT_BARIUM()); + $this->mapVanilla("element_57", fn() => VanillaBlocks::ELEMENT_LANTHANUM()); + $this->mapVanilla("element_58", fn() => VanillaBlocks::ELEMENT_CERIUM()); + $this->mapVanilla("element_59", fn() => VanillaBlocks::ELEMENT_PRASEODYMIUM()); + $this->mapVanilla("element_6", fn() => VanillaBlocks::ELEMENT_CARBON()); + $this->mapVanilla("element_60", fn() => VanillaBlocks::ELEMENT_NEODYMIUM()); + $this->mapVanilla("element_61", fn() => VanillaBlocks::ELEMENT_PROMETHIUM()); + $this->mapVanilla("element_62", fn() => VanillaBlocks::ELEMENT_SAMARIUM()); + $this->mapVanilla("element_63", fn() => VanillaBlocks::ELEMENT_EUROPIUM()); + $this->mapVanilla("element_64", fn() => VanillaBlocks::ELEMENT_GADOLINIUM()); + $this->mapVanilla("element_65", fn() => VanillaBlocks::ELEMENT_TERBIUM()); + $this->mapVanilla("element_66", fn() => VanillaBlocks::ELEMENT_DYSPROSIUM()); + $this->mapVanilla("element_67", fn() => VanillaBlocks::ELEMENT_HOLMIUM()); + $this->mapVanilla("element_68", fn() => VanillaBlocks::ELEMENT_ERBIUM()); + $this->mapVanilla("element_69", fn() => VanillaBlocks::ELEMENT_THULIUM()); + $this->mapVanilla("element_7", fn() => VanillaBlocks::ELEMENT_NITROGEN()); + $this->mapVanilla("element_70", fn() => VanillaBlocks::ELEMENT_YTTERBIUM()); + $this->mapVanilla("element_71", fn() => VanillaBlocks::ELEMENT_LUTETIUM()); + $this->mapVanilla("element_72", fn() => VanillaBlocks::ELEMENT_HAFNIUM()); + $this->mapVanilla("element_73", fn() => VanillaBlocks::ELEMENT_TANTALUM()); + $this->mapVanilla("element_74", fn() => VanillaBlocks::ELEMENT_TUNGSTEN()); + $this->mapVanilla("element_75", fn() => VanillaBlocks::ELEMENT_RHENIUM()); + $this->mapVanilla("element_76", fn() => VanillaBlocks::ELEMENT_OSMIUM()); + $this->mapVanilla("element_77", fn() => VanillaBlocks::ELEMENT_IRIDIUM()); + $this->mapVanilla("element_78", fn() => VanillaBlocks::ELEMENT_PLATINUM()); + $this->mapVanilla("element_79", fn() => VanillaBlocks::ELEMENT_GOLD()); + $this->mapVanilla("element_8", fn() => VanillaBlocks::ELEMENT_OXYGEN()); + $this->mapVanilla("element_80", fn() => VanillaBlocks::ELEMENT_MERCURY()); + $this->mapVanilla("element_81", fn() => VanillaBlocks::ELEMENT_THALLIUM()); + $this->mapVanilla("element_82", fn() => VanillaBlocks::ELEMENT_LEAD()); + $this->mapVanilla("element_83", fn() => VanillaBlocks::ELEMENT_BISMUTH()); + $this->mapVanilla("element_84", fn() => VanillaBlocks::ELEMENT_POLONIUM()); + $this->mapVanilla("element_85", fn() => VanillaBlocks::ELEMENT_ASTATINE()); + $this->mapVanilla("element_86", fn() => VanillaBlocks::ELEMENT_RADON()); + $this->mapVanilla("element_87", fn() => VanillaBlocks::ELEMENT_FRANCIUM()); + $this->mapVanilla("element_88", fn() => VanillaBlocks::ELEMENT_RADIUM()); + $this->mapVanilla("element_89", fn() => VanillaBlocks::ELEMENT_ACTINIUM()); + $this->mapVanilla("element_9", fn() => VanillaBlocks::ELEMENT_FLUORINE()); + $this->mapVanilla("element_90", fn() => VanillaBlocks::ELEMENT_THORIUM()); + $this->mapVanilla("element_91", fn() => VanillaBlocks::ELEMENT_PROTACTINIUM()); + $this->mapVanilla("element_92", fn() => VanillaBlocks::ELEMENT_URANIUM()); + $this->mapVanilla("element_93", fn() => VanillaBlocks::ELEMENT_NEPTUNIUM()); + $this->mapVanilla("element_94", fn() => VanillaBlocks::ELEMENT_PLUTONIUM()); + $this->mapVanilla("element_95", fn() => VanillaBlocks::ELEMENT_AMERICIUM()); + $this->mapVanilla("element_96", fn() => VanillaBlocks::ELEMENT_CURIUM()); + $this->mapVanilla("element_97", fn() => VanillaBlocks::ELEMENT_BERKELIUM()); + $this->mapVanilla("element_98", fn() => VanillaBlocks::ELEMENT_CALIFORNIUM()); + $this->mapVanilla("element_99", fn() => VanillaBlocks::ELEMENT_EINSTEINIUM()); + $this->mapVanilla("emerald_block", fn() => VanillaBlocks::EMERALD()); + $this->mapVanilla("emerald_ore", fn() => VanillaBlocks::EMERALD_ORE()); + $this->mapVanilla("enchanting_table", fn() => VanillaBlocks::ENCHANTING_TABLE()); + $this->mapVanilla("end_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::END_STONE_BRICK_STAIRS(), $in)); + $this->mapVanilla("end_bricks", fn() => VanillaBlocks::END_STONE_BRICKS()); + $this->mapVanilla("end_portal_frame", function(BlockStateReader $in) : Block{ + return VanillaBlocks::END_PORTAL_FRAME() + ->setEye($in->readBool(BlockStateNamesR13::END_PORTAL_EYE_BIT)) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("end_rod", function(BlockStateReader $in) : Block{ + return VanillaBlocks::END_ROD() + ->setFacing($in->readFacingDirection()); + }); + $this->mapVanilla("end_stone", fn() => VanillaBlocks::END_STONE()); + $this->mapVanilla("ender_chest", function(BlockStateReader $in) : Block{ + return VanillaBlocks::ENDER_CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("farmland", function(BlockStateReader $in) : Block{ + return VanillaBlocks::FARMLAND() + ->setWetness($in->readBoundedInt(BlockStateNamesR13::MOISTURIZED_AMOUNT, 0, 7)); + }); + $this->mapVanilla("fence", function(BlockStateReader $in) : Block{ + return match($woodName = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), + default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodName), + }; + }); + $this->mapVanilla("fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::OAK_FENCE_GATE(), $in)); + $this->mapVanilla("fire", function(BlockStateReader $in) : Block{ + return VanillaBlocks::FIRE() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); + }); + $this->mapVanilla("flower_pot", function() : Block{ + //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) + return VanillaBlocks::FLOWER_POT(); + }); + $this->mapVanilla("flowing_lava", fn(BlockStateReader $in) => $this->decodeFlowingLiquid(VanillaBlocks::LAVA(), $in)); + $this->mapVanilla("flowing_water", fn(BlockStateReader $in) => $this->decodeFlowingLiquid(VanillaBlocks::WATER(), $in)); + $this->mapVanilla("frame", function(BlockStateReader $in) : Block{ + //TODO: in R13 this can be any side, not just horizontal + return VanillaBlocks::ITEM_FRAME() + ->setFacing($in->readHorizontalFacing()) + ->setHasMap($in->readBool(BlockStateNamesR13::ITEM_FRAME_MAP_BIT)); + }); + $this->mapVanilla("frosted_ice", function(BlockStateReader $in) : Block{ + return VanillaBlocks::FROSTED_ICE() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 3)); + }); + $this->mapVanilla("furnace", function(BlockStateReader $in) : Block{ + return VanillaBlocks::FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->mapVanilla("glass", fn() => VanillaBlocks::GLASS()); + $this->mapVanilla("glass_pane", fn() => VanillaBlocks::GLASS_PANE()); + $this->mapVanilla("glowingobsidian", fn() => VanillaBlocks::GLOWING_OBSIDIAN()); + $this->mapVanilla("glowstone", fn() => VanillaBlocks::GLOWSTONE()); + $this->mapVanilla("gold_block", fn() => VanillaBlocks::GOLD()); + $this->mapVanilla("gold_ore", fn() => VanillaBlocks::GOLD_ORE()); + $this->mapVanilla("golden_rail", function(BlockStateReader $in) : Block{ + return VanillaBlocks::POWERED_RAIL() + ->setPowered($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); + }); + $this->mapVanilla("granite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::GRANITE_STAIRS(), $in)); + $this->mapVanilla("grass", fn() => VanillaBlocks::GRASS()); + $this->mapVanilla("grass_path", fn() => VanillaBlocks::GRASS_PATH()); + $this->mapVanilla("gravel", fn() => VanillaBlocks::GRAVEL()); + $this->mapVanilla("gray_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("green_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("hard_glass", fn() => VanillaBlocks::HARDENED_GLASS()); + $this->mapVanilla("hard_glass_pane", fn() => VanillaBlocks::HARDENED_GLASS_PANE()); + $this->mapVanilla("hard_stained_glass", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_HARDENED_GLASS() + ->setColor($in->readColor()); + }); + $this->mapVanilla("hard_stained_glass_pane", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_HARDENED_GLASS_PANE() + ->setColor($in->readColor()); + }); + $this->mapVanilla("hardened_clay", fn() => VanillaBlocks::HARDENED_CLAY()); + $this->mapVanilla("hay_block", function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored "deprecated" blockstate (useless) + return VanillaBlocks::HAY_BALE()->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("heavy_weighted_pressure_plate", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); + }); + $this->mapVanilla("hopper", function(BlockStateReader $in) : Block{ + return VanillaBlocks::HOPPER() + ->setFacing($in->readFacingWithoutUp()) + ->setPowered($in->readBool(BlockStateNamesR13::TOGGLE_BIT)); + }); + $this->mapVanilla("ice", fn() => VanillaBlocks::ICE()); + $this->mapVanilla("info_update", fn() => VanillaBlocks::INFO_UPDATE()); + $this->mapVanilla("info_update2", fn() => VanillaBlocks::INFO_UPDATE2()); + $this->mapVanilla("invisibleBedrock", fn() => VanillaBlocks::INVISIBLE_BEDROCK()); + $this->mapVanilla("iron_bars", fn() => VanillaBlocks::IRON_BARS()); + $this->mapVanilla("iron_block", fn() => VanillaBlocks::IRON()); + $this->mapVanilla("iron_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::IRON_DOOR(), $in)); + $this->mapVanilla("iron_ore", fn() => VanillaBlocks::IRON_ORE()); + $this->mapVanilla("iron_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::IRON_TRAPDOOR(), $in)); + $this->mapVanilla("jukebox", fn() => VanillaBlocks::JUKEBOX()); + $this->mapVanilla("jungle_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::JUNGLE_BUTTON(), $in)); + $this->mapVanilla("jungle_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::JUNGLE_DOOR(), $in)); + $this->mapVanilla("jungle_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::JUNGLE_FENCE_GATE(), $in)); + $this->mapVanilla("jungle_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), $in)); + $this->mapVanilla("jungle_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::JUNGLE_STAIRS(), $in)); + $this->mapVanilla("jungle_standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::JUNGLE_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("jungle_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::JUNGLE_TRAPDOOR(), $in)); + $this->mapVanilla("jungle_wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::JUNGLE_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("ladder", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LADDER() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("lantern", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LANTERN() + ->setHanging($in->readBool(BlockStateNamesR13::HANGING)); + }); + $this->mapVanilla("lapis_block", fn() => VanillaBlocks::LAPIS_LAZULI()); + $this->mapVanilla("lapis_ore", fn() => VanillaBlocks::LAPIS_LAZULI_ORE()); + $this->mapVanilla("lava", fn(BlockStateReader $in) => $this->decodeStillLiquid(VanillaBlocks::LAVA(), $in)); + $this->mapVanilla("leaves", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::OLD_LEAF_TYPE)){ + StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), + StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), + StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), + StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), + default => throw $in->badValueException(BlockStateNamesR13::OLD_LEAF_TYPE, $type), + }) + ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); + }); + $this->mapVanilla("leaves2", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::NEW_LEAF_TYPE)){ + StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), + StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), + default => throw $in->badValueException(BlockStateNamesR13::NEW_LEAF_TYPE, $type), + }) + ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); + }); + $this->mapVanilla("light_blue_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("light_weighted_pressure_plate", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); + }); + $this->mapVanilla("lime_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("lit_blast_furnace", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BLAST_FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->mapVanilla("lit_furnace", function(BlockStateReader $in) : Block{ + return VanillaBlocks::FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->mapVanilla("lit_pumpkin", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LIT_PUMPKIN() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("lit_redstone_lamp", function() : Block{ + return VanillaBlocks::REDSTONE_LAMP() + ->setPowered(true); + }); + $this->mapVanilla("lit_redstone_ore", function() : Block{ + return VanillaBlocks::REDSTONE_ORE() + ->setLit(true); + }); + $this->mapVanilla("lit_smoker", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SMOKER() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->mapVanilla("log", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::OLD_LOG_TYPE)){ + StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), + default => throw $in->badValueException(BlockStateNamesR13::OLD_LOG_TYPE, $type), + }) + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("log2", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::NEW_LOG_TYPE)){ + StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), + default => throw $in->badValueException(BlockStateNamesR13::NEW_LOG_TYPE, $type), + }) + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("loom", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LOOM() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->mapVanilla("magenta_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("magma", fn() => VanillaBlocks::MAGMA()); + $this->mapVanilla("melon_block", fn() => VanillaBlocks::MELON()); + $this->mapVanilla("melon_stem", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::MELON_STEM(), $in)); + $this->mapVanilla("mob_spawner", fn() => VanillaBlocks::MONSTER_SPAWNER()); + $this->mapVanilla("monster_egg", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::MONSTER_EGG_STONE_TYPE)){ + StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), + StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), + default => throw $in->badValueException(BlockStateNamesR13::MONSTER_EGG_STONE_TYPE, $type), + }; + }); + $this->mapVanilla("mossy_cobblestone", fn() => VanillaBlocks::MOSSY_COBBLESTONE()); + $this->mapVanilla("mossy_cobblestone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), $in)); + $this->mapVanilla("mossy_stone_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), $in)); + $this->mapVanilla("mycelium", fn() => VanillaBlocks::MYCELIUM()); + $this->mapVanilla("nether_brick", fn() => VanillaBlocks::NETHER_BRICKS()); + $this->mapVanilla("nether_brick_fence", fn() => VanillaBlocks::NETHER_BRICK_FENCE()); + $this->mapVanilla("nether_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::NETHER_BRICK_STAIRS(), $in)); + $this->mapVanilla("nether_wart", function(BlockStateReader $in) : Block{ + return VanillaBlocks::NETHER_WART() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 3)); + }); + $this->mapVanilla("nether_wart_block", fn() => VanillaBlocks::NETHER_WART_BLOCK()); + $this->mapVanilla("netherrack", fn() => VanillaBlocks::NETHERRACK()); + $this->mapVanilla("netherreactor", fn() => VanillaBlocks::NETHER_REACTOR_CORE()); + $this->mapVanilla("normal_stone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::STONE_STAIRS(), $in)); + $this->mapVanilla("noteblock", fn() => VanillaBlocks::NOTE_BLOCK()); + $this->mapVanilla("oak_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::OAK_STAIRS(), $in)); + $this->mapVanilla("obsidian", fn() => VanillaBlocks::OBSIDIAN()); + $this->mapVanilla("orange_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("packed_ice", fn() => VanillaBlocks::PACKED_ICE()); + $this->mapVanilla("pink_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("planks", function(BlockStateReader $in) : Block{ + return match($woodName = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), + default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodName), + }; + }); + $this->mapVanilla("podzol", fn() => VanillaBlocks::PODZOL()); + $this->mapVanilla("polished_andesite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), $in)); + $this->mapVanilla("polished_diorite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_DIORITE_STAIRS(), $in)); + $this->mapVanilla("polished_granite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_GRANITE_STAIRS(), $in)); + $this->mapVanilla("portal", function(BlockStateReader $in) : Block{ + return VanillaBlocks::NETHER_PORTAL() + ->setAxis(match($value = $in->readString(BlockStateNamesR13::PORTAL_AXIS)){ + StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, + StringValues::PORTAL_AXIS_X => Axis::X, + StringValues::PORTAL_AXIS_Z => Axis::Z, + default => throw $in->badValueException(BlockStateNamesR13::PORTAL_AXIS, $value), + }); + }); + $this->mapVanilla("potatoes", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::POTATOES(), $in)); + $this->mapVanilla("powered_comparator", fn(BlockStateReader $in) => $this->decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); + $this->mapVanilla("powered_repeater", fn(BlockStateReader $in) => $this->decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + ->setPowered(true)); + $this->mapVanilla("prismarine", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::PRISMARINE_BLOCK_TYPE)){ + StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), + StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), + StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), + default => throw $in->badValueException(BlockStateNamesR13::PRISMARINE_BLOCK_TYPE, $type), + }; + }); + $this->mapVanilla("prismarine_bricks_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), $in)); + $this->mapVanilla("prismarine_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PRISMARINE_STAIRS(), $in)); + $this->mapVanilla("pumpkin", function() : Block{ + //TODO: intentionally ignored "direction" property (obsolete) + return VanillaBlocks::PUMPKIN(); + }); + $this->mapVanilla("pumpkin_stem", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::PUMPKIN_STEM(), $in)); + $this->mapVanilla("purple_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("purpur_block", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::CHISEL_TYPE)){ + StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), + default => throw $in->badValueException(BlockStateNamesR13::CHISEL_TYPE, $type), + }; + }); + $this->mapVanilla("purpur_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); + $this->mapVanilla("quartz_block", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::CHISEL_TYPE)){ + StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) + default => throw $in->badValueException(BlockStateNamesR13::CHISEL_TYPE, $type), + }; + }); + $this->mapVanilla("quartz_ore", fn() => VanillaBlocks::NETHER_QUARTZ_ORE()); + $this->mapVanilla("quartz_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::QUARTZ_STAIRS(), $in)); + $this->mapVanilla("rail", function(BlockStateReader $in) : Block{ + return VanillaBlocks::RAIL() + ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 9)); + }); + $this->mapVanilla("red_flower", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::FLOWER_TYPE)){ + StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), + StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), + StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? + StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), + StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), + StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), + StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), + StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), + StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), + StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), + StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), + default => throw $in->badValueException(BlockStateNamesR13::FLOWER_TYPE, $type), + }; + }); + $this->mapVanilla("red_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::RED_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("red_mushroom", fn() => VanillaBlocks::RED_MUSHROOM()); + $this->mapVanilla("red_mushroom_block", fn(BlockStateReader $in) => $this->decodeMushroomBlock(VanillaBlocks::RED_MUSHROOM_BLOCK(), $in)); + $this->mapVanilla("red_nether_brick", fn() => VanillaBlocks::RED_NETHER_BRICKS()); + $this->mapVanilla("red_nether_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); + $this->mapVanilla("red_sandstone", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), + default => throw $in->badValueException(BlockStateNamesR13::SAND_STONE_TYPE, $type), + }; + }); + $this->mapVanilla("red_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::RED_SANDSTONE_STAIRS(), $in)); + $this->mapVanilla("redstone_block", fn() => VanillaBlocks::REDSTONE()); + $this->mapVanilla("redstone_lamp", function() : Block{ + return VanillaBlocks::REDSTONE_LAMP() + ->setPowered(false); + }); + $this->mapVanilla("redstone_ore", function() : Block{ + return VanillaBlocks::REDSTONE_ORE() + ->setLit(false); + }); + $this->mapVanilla("redstone_torch", function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_TORCH() + ->setFacing($in->readTorchFacing()) + ->setLit(true); + }); + $this->mapVanilla("redstone_wire", function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_WIRE() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); + }); + $this->mapVanilla("reeds", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SUGARCANE() + ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); + }); + $this->mapVanilla("reserved6", fn() => VanillaBlocks::RESERVED6()); + $this->mapVanilla("sand", function(BlockStateReader $in) : Block{ + return match($value = $in->readString(BlockStateNamesR13::SAND_TYPE)){ + StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), + StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), + default => throw $in->badValueException(BlockStateNamesR13::SAND_TYPE, $value), + }; + }); + $this->mapVanilla("sandstone", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), + default => throw $in->badValueException(BlockStateNamesR13::SAND_STONE_TYPE, $type), + }; + }); + $this->mapVanilla("sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); + $this->mapVanilla("sapling", function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNamesR13::SAPLING_TYPE)){ + StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), + StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), + StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), + StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), + StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), + StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), + default => throw $in->badValueException(BlockStateNamesR13::SAPLING_TYPE, $type), + }) + ->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)); + }); + $this->mapVanilla("seaLantern", fn() => VanillaBlocks::SEA_LANTERN()); + $this->mapVanilla("sea_pickle", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SEA_PICKLE() + ->setCount($in->readBoundedInt(BlockStateNamesR13::CLUSTER_COUNT, 0, 3) + 1) + ->setUnderwater(!$in->readBool(BlockStateNamesR13::DEAD_BIT)); + }); + $this->mapVanilla("shulker_box", function(BlockStateReader $in) : Block{ + return VanillaBlocks::DYED_SHULKER_BOX() + ->setColor($in->readColor()); + }); + $this->mapVanilla("silver_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("skull", function(BlockStateReader $in) : Block{ + return VanillaBlocks::MOB_HEAD() + ->setFacing($in->readFacingWithoutDown()) + ->setNoDrops($in->readBool(BlockStateNamesR13::NO_DROP_BIT)); + }); + $this->mapVanilla("slime", fn() => VanillaBlocks::SLIME()); + $this->mapVanilla("smoker", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SMOKER() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->mapVanilla("smooth_quartz_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), $in)); + $this->mapVanilla("smooth_red_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); + $this->mapVanilla("smooth_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), $in)); + $this->mapVanilla("smooth_stone", fn() => VanillaBlocks::SMOOTH_STONE()); + $this->mapVanilla("snow", fn() => VanillaBlocks::SNOW()); + $this->mapVanilla("snow_layer", function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored covered_bit property (appears useless and we don't track it) + return VanillaBlocks::SNOW_LAYER()->setLayers($in->readBoundedInt(BlockStateNamesR13::HEIGHT, 0, 7) + 1); + }); + $this->mapVanilla("soul_sand", fn() => VanillaBlocks::SOUL_SAND()); + $this->mapVanilla("sponge", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNamesR13::SPONGE_TYPE)){ + StringValues::SPONGE_TYPE_DRY => false, + StringValues::SPONGE_TYPE_WET => true, + default => throw $in->badValueException(BlockStateNamesR13::SPONGE_TYPE, $type), + }); + }); + $this->mapVanilla("spruce_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::SPRUCE_BUTTON(), $in)); + $this->mapVanilla("spruce_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::SPRUCE_DOOR(), $in)); + $this->mapVanilla("spruce_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::SPRUCE_FENCE_GATE(), $in)); + $this->mapVanilla("spruce_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), $in)); + $this->mapVanilla("spruce_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SPRUCE_STAIRS(), $in)); + $this->mapVanilla("spruce_standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPRUCE_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("spruce_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::SPRUCE_TRAPDOOR(), $in)); + $this->mapVanilla("spruce_wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPRUCE_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("stained_glass", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_GLASS() + ->setColor($in->readColor()); + }); + $this->mapVanilla("stained_glass_pane", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_GLASS_PANE() + ->setColor($in->readColor()); + }); + $this->mapVanilla("stained_hardened_clay", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_CLAY() + ->setColor($in->readColor()); + }); + $this->mapVanilla("standing_banner", function(BlockStateReader $in) : Block{ + return VanillaBlocks::BANNER() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("standing_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::OAK_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->mapVanilla("stone", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::STONE_TYPE)){ + StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), + StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), + StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), + StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), + StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), + StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), + StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_TYPE, $type), + }; + }); + $this->mapVanilla("stone_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::STONE_BRICK_STAIRS(), $in)); + $this->mapVanilla("stone_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::STONE_BUTTON(), $in)); + $this->mapVanilla("stone_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::STONE_PRESSURE_PLATE(), $in)); + $this->mapVanilla("stone_slab", fn(BlockStateReader $in) => $this->mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); + $this->mapVanilla("stone_slab2", fn(BlockStateReader $in) => $this->mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); + $this->mapVanilla("stone_slab3", fn(BlockStateReader $in) => $this->mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); + $this->mapVanilla("stone_slab4", fn(BlockStateReader $in) => $this->mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); + $this->mapVanilla("stone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); + $this->mapVanilla("stonebrick", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::STONE_BRICK_TYPE)){ + StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla + StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), + default => throw $in->badValueException(BlockStateNamesR13::STONE_BRICK_TYPE, $type), + }; + }); + $this->mapVanilla("stonecutter", fn() => VanillaBlocks::LEGACY_STONECUTTER()); + $this->mapVanilla("stripped_acacia_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_ACACIA_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("stripped_birch_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_BIRCH_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("stripped_dark_oak_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_DARK_OAK_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("stripped_jungle_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_JUNGLE_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("stripped_oak_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_OAK_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("stripped_spruce_log", function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_SPRUCE_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->mapVanilla("sweet_berry_bush", function(BlockStateReader $in) : Block{ + //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 + $growth = $in->readBoundedInt(BlockStateNamesR13::GROWTH, 0, 7); + return VanillaBlocks::SWEET_BERRY_BUSH() + ->setAge(min($growth, SweetBerryBush::STAGE_MATURE)); + }); + $this->mapVanilla("tallgrass", function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNamesR13::TALL_GRASS_TYPE)){ + StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), + StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), + default => throw $in->badValueException(BlockStateNamesR13::TALL_GRASS_TYPE, $type), + }; + }); + $this->mapVanilla("tnt", function(BlockStateReader $in) : Block{ + return VanillaBlocks::TNT() + ->setUnstable($in->readBool(BlockStateNamesR13::EXPLODE_BIT)) + ->setWorksUnderwater($in->readBool(BlockStateNamesR13::ALLOW_UNDERWATER_BIT)); + }); + $this->mapVanilla("torch", function(BlockStateReader $in) : Block{ + return VanillaBlocks::TORCH() + ->setFacing($in->readTorchFacing()); + }); + $this->mapVanilla("trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::OAK_TRAPDOOR(), $in)); + $this->mapVanilla("trapped_chest", function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRAPPED_CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("tripWire", function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRIPWIRE() + ->setConnected($in->readBool(BlockStateNamesR13::ATTACHED_BIT)) + ->setDisarmed($in->readBool(BlockStateNamesR13::DISARMED_BIT)) + ->setSuspended($in->readBool(BlockStateNamesR13::SUSPENDED_BIT)) + ->setTriggered($in->readBool(BlockStateNamesR13::POWERED_BIT)); + }); + $this->mapVanilla("tripwire_hook", function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRIPWIRE_HOOK() + ->setConnected($in->readBool(BlockStateNamesR13::ATTACHED_BIT)) + ->setFacing($in->readLegacyHorizontalFacing()) + ->setPowered($in->readBool(BlockStateNamesR13::POWERED_BIT)); + }); + $this->mapVanilla("underwater_torch", function(BlockStateReader $in) : Block{ + return VanillaBlocks::UNDERWATER_TORCH() + ->setFacing($in->readTorchFacing()); + }); + $this->mapVanilla("undyed_shulker_box", fn() => VanillaBlocks::SHULKER_BOX()); + $this->mapVanilla("unlit_redstone_torch", function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_TORCH() + ->setFacing($in->readTorchFacing()) + ->setLit(false); + }); + $this->mapVanilla("unpowered_comparator", fn(BlockStateReader $in) => $this->decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); + $this->mapVanilla("unpowered_repeater", fn(BlockStateReader $in) => $this->decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + ->setPowered(false)); + $this->mapVanilla("vine", function(BlockStateReader $in) : Block{ + $vineDirectionFlags = $in->readBoundedInt(BlockStateNamesR13::VINE_DIRECTION_BITS, 0, 15); + return VanillaBlocks::VINES() + ->setFace(Facing::NORTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_NORTH) !== 0) + ->setFace(Facing::SOUTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_SOUTH) !== 0) + ->setFace(Facing::WEST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_WEST) !== 0) + ->setFace(Facing::EAST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_EAST) !== 0); + }); + $this->mapVanilla("wall_banner", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_BANNER() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("wall_sign", function(BlockStateReader $in) : Block{ + return VanillaBlocks::OAK_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapVanilla("water", fn(BlockStateReader $in) => $this->decodeStillLiquid(VanillaBlocks::WATER(), $in)); + $this->mapVanilla("waterlily", fn() => VanillaBlocks::LILY_PAD()); + $this->mapVanilla("web", fn() => VanillaBlocks::COBWEB()); + $this->mapVanilla("wheat", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::WHEAT(), $in)); + $this->mapVanilla("white_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), $in)); + $this->mapVanilla("wood", function(BlockStateReader $in) : Block{ + //TODO: our impl doesn't support axis yet + $stripped = $in->readBool(BlockStateNamesR13::STRIPPED_BIT); + return match($woodType = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), + default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodType), + }; + }); + $this->mapVanilla("wooden_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::OAK_BUTTON(), $in)); + $this->mapVanilla("wooden_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::OAK_DOOR(), $in)); + $this->mapVanilla("wooden_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::OAK_PRESSURE_PLATE(), $in)); + $this->mapVanilla("wooden_slab", fn(BlockStateReader $in) => $this->mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); + $this->mapVanilla("wool", function(BlockStateReader $in) : Block{ + return VanillaBlocks::WOOL() + ->setColor($in->readColor()); + }); + $this->mapVanilla("yellow_flower", fn() => VanillaBlocks::DANDELION()); + $this->mapVanilla("yellow_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), $in)); + //$this->mapVanilla("bubble_column", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * drag_down (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("camera", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("campfire", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * direction (IntTag) = 0, 1, 2, 3 + * extinguished (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("cartography_table", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("cauldron", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * cauldron_liquid (StringTag) = lava, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->mapVanilla("chain_command_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("chorus_flower", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * age (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("chorus_plant", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("command_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("composter", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 + */ + //}); + //$this->mapVanilla("conduit", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("dispenser", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("dropper", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("end_gateway", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("end_portal", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("fletching_table", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("grindstone", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * attachment (StringTag) = hanging, multiple, side, standing + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->mapVanilla("jigsaw", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("kelp", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->mapVanilla("lava_cauldron", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * cauldron_liquid (StringTag) = lava, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->mapVanilla("lectern", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * direction (IntTag) = 0, 1, 2, 3 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("lever", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * lever_direction (StringTag) = down_east_west, down_north_south, east, north, south, up_east_west, up_north_south, west + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("light_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->mapVanilla("movingBlock", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("observer", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("piston", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("pistonArmCollision", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("repeating_command_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("scaffolding", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + * stability_check (ByteTag) = 0, 1 + */ + //}); + //$this->mapVanilla("seagrass", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * sea_grass_type (StringTag) = default, double_bot, double_top + */ + //}); + //$this->mapVanilla("smithing_table", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + //$this->mapVanilla("stickyPistonArmCollision", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("sticky_piston", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("stonecutter_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->mapVanilla("structure_block", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * structure_block_type (StringTag) = corner, data, export, invalid, load, save + */ + //}); + //$this->mapVanilla("structure_void", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * structure_void_type (StringTag) = air, void + */ + //}); + //$this->mapVanilla("turtle_egg", function(BlockStateReader $in) : Block{ + /* TODO: parse properties + * cracked_state (StringTag) = cracked, max_cracked, no_cracks + * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg + */ + //}); + //$this->mapVanilla("wither_rose", function(BlockStateReader $in) : Block{ + //TODO: un-implemented block + //}); + } + + /** @throws BlockStateDeserializeException */ + public function deserialize(string $id, CompoundTag $blockState) : Block{ + if(!array_key_exists($id, $this->deserializeFuncs)){ + throw new BlockStateDeserializeException("Unknown block ID \"$id\""); + } + return $this->deserializeFuncs[$id](new BlockStateReader($blockState)); + } +} \ No newline at end of file diff --git a/src/data/bedrock/blockstate/BlockStateNamesR13.php b/src/data/bedrock/blockstate/BlockStateNamesR13.php new file mode 100644 index 000000000..1e27b1731 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateNamesR13.php @@ -0,0 +1,131 @@ +nbt = $nbt; + } + + public function getNbt() : CompoundTag{ return $this->nbt; } + + public function missingOrWrongTypeException(string $name, ?Tag $tag) : BlockStateDeserializeException{ + return new BlockStateDeserializeException("Property \"$name\" " . ($tag !== null ? "has unexpected type " . get_class($tag) : "is missing")); + } + + public function badValueException(string $name, string $stringifiedValue, ?string $reason = null) : BlockStateDeserializeException{ + return new BlockStateDeserializeException( + "Property \"$name\" has unexpected value \"$stringifiedValue\"" . ( + $reason !== null ? " ($reason)" : "" + )); + } + + /** @throws BlockStateDeserializeException */ + public function readBool(string $name) : bool{ + $tag = $this->nbt->getTag($name); + if($tag instanceof ByteTag){ + switch($tag->getValue()){ + case 0: return false; + case 1: return true; + default: throw $this->badValueException($name, (string) $tag->getValue()); + } + } + throw $this->missingOrWrongTypeException($name, $tag); + } + + /** @throws BlockStateDeserializeException */ + public function readInt(string $name) : int{ + $tag = $this->nbt->getTag($name); + if($tag instanceof IntTag){ + return $tag->getValue(); + } + throw $this->missingOrWrongTypeException($name, $tag); + } + + /** @throws BlockStateDeserializeException */ + public function readBoundedInt(string $name, int $min, int $max) : int{ + $result = $this->readInt($name); + if($result < $min || $result > $max){ + throw $this->badValueException($name, (string) $result, "Must be inside the range $min ... $max"); + } + return $result; + } + + /** @throws BlockStateDeserializeException */ + public function readString(string $name) : string{ + //TODO: only allow a specific set of values (strings are primarily used for enums) + $tag = $this->nbt->getTag($name); + if($tag instanceof StringTag){ + return $tag->getValue(); + } + throw $this->missingOrWrongTypeException($name, $tag); + } + + /** + * @param int[] $mapping + * @phpstan-param array $mapping + * @phpstan-return int + * @throws BlockStateDeserializeException + */ + private function parseFacingValue(int $value, array $mapping) : int{ + $result = $mapping[$value] ?? null; + if($result === null){ + throw new BlockStateDeserializeException("Unmapped facing value " . $value); + } + return $result; + } + + /** @throws BlockStateDeserializeException */ + public function readFacingDirection() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNamesR13::FACING_DIRECTION), [ + 0 => Facing::DOWN, + 1 => Facing::UP, + 2 => Facing::NORTH, + 3 => Facing::SOUTH, + 4 => Facing::WEST, + 5 => Facing::EAST + ]); + } + + /** @throws BlockStateDeserializeException */ + public function readHorizontalFacing() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNamesR13::FACING_DIRECTION), [ + 0 => Facing::NORTH, //should be illegal, but 1.13 allows it + 1 => Facing::NORTH, //also should be illegal + 2 => Facing::NORTH, + 3 => Facing::SOUTH, + 4 => Facing::WEST, + 5 => Facing::EAST + ]); + } + + /** @throws BlockStateDeserializeException */ + public function readWeirdoHorizontalFacing() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNamesR13::WEIRDO_DIRECTION), [ + 0 => Facing::EAST, + 1 => Facing::WEST, + 2 => Facing::SOUTH, + 3 => Facing::NORTH + ]); + } + + /** @throws BlockStateDeserializeException */ + public function readLegacyHorizontalFacing() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNamesR13::DIRECTION), [ + 0 => Facing::SOUTH, + 1 => Facing::WEST, + 2 => Facing::NORTH, + 3 => Facing::EAST + ]); + } + + /** @throws BlockStateDeserializeException */ + public function readColor() : DyeColor{ + // * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + return match($color = $this->readString(BlockStateNamesR13::COLOR)){ + StringValues::COLOR_BLACK => DyeColor::BLACK(), + StringValues::COLOR_BLUE => DyeColor::BLUE(), + StringValues::COLOR_BROWN => DyeColor::BROWN(), + StringValues::COLOR_CYAN => DyeColor::CYAN(), + StringValues::COLOR_GRAY => DyeColor::GRAY(), + StringValues::COLOR_GREEN => DyeColor::GREEN(), + StringValues::COLOR_LIGHT_BLUE => DyeColor::LIGHT_BLUE(), + StringValues::COLOR_LIME => DyeColor::LIME(), + StringValues::COLOR_MAGENTA => DyeColor::MAGENTA(), + StringValues::COLOR_ORANGE => DyeColor::ORANGE(), + StringValues::COLOR_PINK => DyeColor::PINK(), + StringValues::COLOR_PURPLE => DyeColor::PURPLE(), + StringValues::COLOR_RED => DyeColor::RED(), + StringValues::COLOR_SILVER => DyeColor::LIGHT_GRAY(), + StringValues::COLOR_WHITE => DyeColor::WHITE(), + StringValues::COLOR_YELLOW => DyeColor::YELLOW(), + default => throw $this->badValueException(BlockStateNamesR13::COLOR, $color), + }; + } + + /** @throws BlockStateDeserializeException */ + public function readCoralFacing() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNamesR13::CORAL_DIRECTION), [ + 0 => Facing::WEST, + 1 => Facing::EAST, + 2 => Facing::NORTH, + 3 => Facing::SOUTH + ]); + } + + /** @throws BlockStateDeserializeException */ + public function readFacingWithoutDown() : int{ + $result = $this->readFacingDirection(); + if($result === Facing::DOWN){ //shouldn't be legal, but 1.13 allows it + $result = Facing::UP; + } + return $result; + } + + public function readFacingWithoutUp() : int{ + $result = $this->readFacingDirection(); + if($result === Facing::UP){ + $result = Facing::DOWN; //shouldn't be legal, but 1.13 allows it + } + return $result; + } + + /** + * @phpstan-return Axis::* + * @throws BlockStateDeserializeException + */ + public function readPillarAxis() : int{ + $rawValue = $this->readString(BlockStateNamesR13::PILLAR_AXIS); + $value = [ + StringValues::PILLAR_AXIS_X => Axis::X, + StringValues::PILLAR_AXIS_Y => Axis::Y, + StringValues::PILLAR_AXIS_Z => Axis::Z + ][$rawValue] ?? null; + if($value === null){ + throw $this->badValueException(BlockStateNamesR13::PILLAR_AXIS, $rawValue, "Invalid axis value"); + } + return $value; + } + + /** @throws BlockStateDeserializeException */ + public function readSlabPosition() : SlabType{ + return $this->readBool(BlockStateNamesR13::TOP_SLOT_BIT) ? SlabType::TOP() : SlabType::BOTTOM(); + } + + /** + * @phpstan-return Facing::UP|Facing::NORTH|Facing::SOUTH|Facing::WEST|Facing::EAST + * @throws BlockStateDeserializeException + */ + public function readTorchFacing() : int{ + return match($rawValue = $this->readString(BlockStateNamesR13::TORCH_FACING_DIRECTION)){ + StringValues::TORCH_FACING_DIRECTION_EAST => Facing::EAST, + StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, + StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, + StringValues::TORCH_FACING_DIRECTION_TOP => Facing::UP, + StringValues::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it + StringValues::TORCH_FACING_DIRECTION_WEST => Facing::WEST, + default => throw $this->badValueException(BlockStateNamesR13::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), + }; + } + + /** @throws BlockStateDeserializeException */ + public function readCoralType() : CoralType{ + return match($type = $this->readString(BlockStateNamesR13::CORAL_COLOR)){ + StringValues::CORAL_COLOR_BLUE => CoralType::TUBE(), + StringValues::CORAL_COLOR_PINK => CoralType::BRAIN(), + StringValues::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), + StringValues::CORAL_COLOR_RED => CoralType::FIRE(), + StringValues::CORAL_COLOR_YELLOW => CoralType::HORN(), + default => throw $this->badValueException(BlockStateNamesR13::CORAL_COLOR, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + public function readBellAttachmentType() : BellAttachmentType{ + return match($type = $this->readString(BlockStateNamesR13::ATTACHMENT)){ + StringValues::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), + StringValues::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), + StringValues::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), + StringValues::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), + default => throw $this->badValueException(BlockStateNamesR13::ATTACHMENT, $type), + }; + } +} diff --git a/src/data/bedrock/blockstate/BlockStateStringValuesR13.php b/src/data/bedrock/blockstate/BlockStateStringValuesR13.php new file mode 100644 index 000000000..d51c39291 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateStringValuesR13.php @@ -0,0 +1,269 @@ + Date: Wed, 29 Sep 2021 00:59:53 +0100 Subject: [PATCH 002/692] Lever blockstate decoding all implemented blocks are now supported; about 37 remain which are not implemented. --- .../blockstate/BlockStateDeserializerR13.php | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php index 68a66ac04..b73debd20 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php @@ -44,6 +44,7 @@ use pocketmine\block\SweetBerryBush; use pocketmine\block\Trapdoor; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; @@ -819,6 +820,21 @@ final class BlockStateDeserializerR13{ ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); }); + $this->mapVanilla("lever", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LEVER() + ->setActivated($in->readBool(BlockStateNamesR13::OPEN_BIT)) + ->setFacing(match($value = $in->readString(BlockStateNamesR13::LEVER_DIRECTION)){ + StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), + StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), + StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), + StringValues::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), + StringValues::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), + StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), + StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), + StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), + default => throw $in->badValueException(BlockStateNamesR13::LEVER_DIRECTION, $value), + }); + }); $this->mapVanilla("light_blue_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); $this->mapVanilla("light_weighted_pressure_plate", function(BlockStateReader $in) : Block{ return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT() @@ -1388,12 +1404,6 @@ final class BlockStateDeserializerR13{ * powered_bit (ByteTag) = 0, 1 */ //}); - //$this->mapVanilla("lever", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * lever_direction (StringTag) = down_east_west, down_north_south, east, north, south, up_east_west, up_north_south, west - * open_bit (ByteTag) = 0, 1 - */ - //}); //$this->mapVanilla("light_block", function(BlockStateReader $in) : Block{ /* TODO: parse properties * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 From d6dfcb11e8dc18d7f845da1088bdb2183ed37c4a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Sep 2021 17:32:06 +0100 Subject: [PATCH 003/692] BlockStateDeserializerR13: fixed some formatting issues --- src/data/bedrock/blockstate/BlockStateDeserializerR13.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php index b73debd20..65a487bd0 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php @@ -36,7 +36,6 @@ use pocketmine\block\Liquid; use pocketmine\block\RedMushroomBlock; use pocketmine\block\RedstoneComparator; use pocketmine\block\RedstoneRepeater; -use pocketmine\block\Sapling; use pocketmine\block\SimplePressurePlate; use pocketmine\block\Slab; use pocketmine\block\Stair; @@ -77,6 +76,7 @@ final class BlockStateDeserializerR13{ private function mapVanilla(string $minecraftId, \Closure $c) : void{ $this->mapId("minecraft:$minecraftId", $c); } + /** @throws BlockStateDeserializeException */ private function decodeButton(Button $block, BlockStateReader $in) : Button{ return $block From 440a48b9739dd224869176ae930962df7ef9e205 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 27 Jan 2022 16:58:32 +0000 Subject: [PATCH 004/692] added serializers for newly implemented blocks --- .../blockstate/BlockStateDeserializerR13.php | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php index 65a487bd0..450cd0cde 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php @@ -703,6 +703,7 @@ final class BlockStateDeserializerR13{ return VanillaBlocks::FIRE() ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); }); + $this->mapVanilla("fletching_table", fn() => VanillaBlocks::FLETCHING_TABLE()); $this->mapVanilla("flower_pot", function() : Block{ //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) return VanillaBlocks::FLOWER_POT(); @@ -820,6 +821,11 @@ final class BlockStateDeserializerR13{ ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); }); + $this->mapVanilla("lectern", function(BlockStateReader $in) : Block{ + return VanillaBlocks::LECTERN() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setProducingSignal($in->readBool(BlockStateNamesR13::POWERED_BIT)); + }); $this->mapVanilla("lever", function(BlockStateReader $in) : Block{ return VanillaBlocks::LEVER() ->setActivated($in->readBool(BlockStateNamesR13::OPEN_BIT)) @@ -1373,9 +1379,6 @@ final class BlockStateDeserializerR13{ //$this->mapVanilla("end_portal", function(BlockStateReader $in) : Block{ //TODO: un-implemented block //}); - //$this->mapVanilla("fletching_table", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); //$this->mapVanilla("grindstone", function(BlockStateReader $in) : Block{ /* TODO: parse properties * attachment (StringTag) = hanging, multiple, side, standing @@ -1398,12 +1401,6 @@ final class BlockStateDeserializerR13{ * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 */ //}); - //$this->mapVanilla("lectern", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * direction (IntTag) = 0, 1, 2, 3 - * powered_bit (ByteTag) = 0, 1 - */ - //}); //$this->mapVanilla("light_block", function(BlockStateReader $in) : Block{ /* TODO: parse properties * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 @@ -1491,4 +1488,4 @@ final class BlockStateDeserializerR13{ } return $this->deserializeFuncs[$id](new BlockStateReader($blockState)); } -} \ No newline at end of file +} From ab5a7b0d044614a8f366c2538cfa2725b98db2f9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 01:18:56 +0000 Subject: [PATCH 005/692] an absolute motherload of stuff I did today --- .../blockstate/BlockStateDeserializer.php | 2564 +++++++++++++ .../BlockStateDeserializerHelper.php | 257 ++ .../blockstate/BlockStateDeserializerR13.php | 1491 -------- ...kStateNamesR13.php => BlockStateNames.php} | 23 +- .../bedrock/blockstate/BlockStateReader.php | 34 +- .../BlockStateSerializeException.php | 28 + .../blockstate/BlockStateSerializer.php | 3167 +++++++++++++++++ ...luesR13.php => BlockStateStringValues.php} | 30 +- .../bedrock/blockstate/BlockStateWriter.php | 229 ++ .../bedrock/blockstate/BlockTypeNames.php | 739 ++++ 10 files changed, 7052 insertions(+), 1510 deletions(-) create mode 100644 src/data/bedrock/blockstate/BlockStateDeserializer.php create mode 100644 src/data/bedrock/blockstate/BlockStateDeserializerHelper.php delete mode 100644 src/data/bedrock/blockstate/BlockStateDeserializerR13.php rename src/data/bedrock/blockstate/{BlockStateNamesR13.php => BlockStateNames.php} (83%) create mode 100644 src/data/bedrock/blockstate/BlockStateSerializeException.php create mode 100644 src/data/bedrock/blockstate/BlockStateSerializer.php rename src/data/bedrock/blockstate/{BlockStateStringValuesR13.php => BlockStateStringValues.php} (89%) create mode 100644 src/data/bedrock/blockstate/BlockStateWriter.php create mode 100644 src/data/bedrock/blockstate/BlockTypeNames.php diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php new file mode 100644 index 000000000..878c8ebfb --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -0,0 +1,2564 @@ + + */ + private array $deserializeFuncs = []; + + /** @phpstan-param \Closure(BlockStateReader) : Block $c */ + private function map(string $id, \Closure $c) : void{ + if(array_key_exists($id, $this->deserializeFuncs)){ + throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); + } + $this->deserializeFuncs[$id] = $c; + } + public function __construct(){ + $this->map(Ids::ACACIA_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::ACACIA_BUTTON(), $in)); + $this->map(Ids::ACACIA_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::ACACIA_DOOR(), $in)); + $this->map(Ids::ACACIA_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::ACACIA_FENCE_GATE(), $in)); + $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::ACACIA_PRESSURE_PLATE(), $in)); + $this->map(Ids::ACACIA_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::ACACIA_STAIRS(), $in)); + $this->map(Ids::ACACIA_STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACACIA_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::ACACIA_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::ACACIA_TRAPDOOR(), $in)); + $this->map(Ids::ACACIA_WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACACIA_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::ACTIVATOR_RAIL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::ACTIVATOR_RAIL() + ->setPowered($in->readBool(BlockStateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + }); + $this->map(Ids::AIR, fn() => VanillaBlocks::AIR()); + $this->map(Ids::ANDESITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::ANDESITE_STAIRS(), $in)); + $this->map(Ids::ANVIL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::ANVIL() + ->setDamage(match($value = $in->readString(BlockStateNames::DAMAGE)){ + StringValues::DAMAGE_UNDAMAGED => 0, + StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, + StringValues::DAMAGE_VERY_DAMAGED => 2, + StringValues::DAMAGE_BROKEN => 0, + default => throw $in->badValueException(BlockStateNames::DAMAGE, $value), + }) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::BAMBOO, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BAMBOO() + ->setLeafSize(match($value = $in->readString(BlockStateNames::BAMBOO_LEAF_SIZE)){ + StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, + default => throw $in->badValueException(BlockStateNames::BAMBOO_LEAF_SIZE, $value), + }) + ->setReady($in->readBool(BlockStateNames::AGE_BIT)) + ->setThick(match($value = $in->readString(BlockStateNames::BAMBOO_STALK_THICKNESS)){ + StringValues::BAMBOO_STALK_THICKNESS_THIN => false, + StringValues::BAMBOO_STALK_THICKNESS_THICK => true, + default => throw $in->badValueException(BlockStateNames::BAMBOO_STALK_THICKNESS, $value), + }); + }); + $this->map(Ids::BAMBOO_SAPLING, function(BlockStateReader $in) : Block{ + //TODO: sapling_type intentionally ignored (its presence is a bug) + return VanillaBlocks::BAMBOO_SAPLING()->setReady($in->readBool(BlockStateNames::AGE_BIT)); + }); + $this->map(Ids::BARREL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BARREL() + ->setFacing($in->readFacingDirection()) + ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); + }); + $this->map(Ids::BARRIER, fn() => VanillaBlocks::BARRIER()); + $this->map(Ids::BEACON, fn() => VanillaBlocks::BEACON()); + $this->map(Ids::BED, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BED() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setHead($in->readBool(BlockStateNames::HEAD_PIECE_BIT)) + ->setOccupied($in->readBool(BlockStateNames::OCCUPIED_BIT)); + }); + $this->map(Ids::BEDROCK, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BEDROCK() + ->setBurnsForever($in->readBool(BlockStateNames::INFINIBURN_BIT)); + }); + $this->map(Ids::BEETROOT, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::BEETROOTS(), $in)); + $this->map(Ids::BELL, function(BlockStateReader $in) : Block{ + //TODO: ignored toggle_bit (appears to be internally used in MCPE only, useless for us) + return VanillaBlocks::BELL() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setAttachmentType($in->readBellAttachmentType()); + }); + $this->map(Ids::BIRCH_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::BIRCH_BUTTON(), $in)); + $this->map(Ids::BIRCH_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::BIRCH_DOOR(), $in)); + $this->map(Ids::BIRCH_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::BIRCH_FENCE_GATE(), $in)); + $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::BIRCH_PRESSURE_PLATE(), $in)); + $this->map(Ids::BIRCH_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BIRCH_STAIRS(), $in)); + $this->map(Ids::BIRCH_STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BIRCH_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::BIRCH_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::BIRCH_TRAPDOOR(), $in)); + $this->map(Ids::BIRCH_WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BIRCH_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLAST_FURNACE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BLAST_FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLUE_ICE, fn() => VanillaBlocks::BLUE_ICE()); + $this->map(Ids::BONE_BLOCK, function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored "deprecated" blockstate (useless) + return VanillaBlocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::BOOKSHELF, fn() => VanillaBlocks::BOOKSHELF()); + $this->map(Ids::BREWING_STAND, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BREWING_STAND() + ->setSlot(BrewingStandSlot::EAST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT)) + ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT)) + ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT)); + }); + $this->map(Ids::BRICK_BLOCK, fn() => VanillaBlocks::BRICKS()); + $this->map(Ids::BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BRICK_STAIRS(), $in)); + $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BROWN_MUSHROOM, fn() => VanillaBlocks::BROWN_MUSHROOM()); + $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(BlockStateReader $in) => Helper::decodeMushroomBlock(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), $in)); + $this->map(Ids::CACTUS, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CACTUS() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + }); + $this->map(Ids::CAKE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CAKE() + ->setBites($in->readBoundedInt(BlockStateNames::BITE_COUNTER, 0, 6)); + }); + $this->map(Ids::CARPET, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CARPET() + ->setColor($in->readColor()); + }); + $this->map(Ids::CARROTS, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::CARROTS(), $in)); + $this->map(Ids::CARVED_PUMPKIN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CARVED_PUMPKIN() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::CHEMICAL_HEAT, fn() => VanillaBlocks::CHEMICAL_HEAT()); + $this->map(Ids::CHEMISTRY_TABLE, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::CHEMISTRY_TABLE_TYPE)){ + StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), + StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), + StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), + StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), + default => throw $in->badValueException(BlockStateNames::CHEMISTRY_TABLE_TYPE, $type), + })->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::CHEST, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::CLAY, fn() => VanillaBlocks::CLAY()); + $this->map(Ids::COAL_BLOCK, fn() => VanillaBlocks::COAL()); + $this->map(Ids::COAL_ORE, fn() => VanillaBlocks::COAL_ORE()); + $this->map(Ids::COBBLESTONE, fn() => VanillaBlocks::COBBLESTONE()); + $this->map(Ids::COBBLESTONE_WALL, fn(BlockStateReader $in) => Helper::decodeWall(VanillaBlocks::COBBLESTONE_WALL(), $in)); + $this->map(Ids::COCOA, function(BlockStateReader $in) : Block{ + return VanillaBlocks::COCOA_POD() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 2)) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::COLORED_TORCH_BP, function(BlockStateReader $in) : Block{ + return $in->readBool(BlockStateNames::COLOR_BIT) ? + VanillaBlocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : + VanillaBlocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::COLORED_TORCH_RG, function(BlockStateReader $in) : Block{ + return $in->readBool(BlockStateNames::COLOR_BIT) ? + VanillaBlocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : + VanillaBlocks::RED_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::CONCRETE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CONCRETE() + ->setColor($in->readColor()); + }); + $this->map(Ids::CONCRETEPOWDER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CONCRETE_POWDER() + ->setColor($in->readColor()); + }); + $this->map(Ids::CORAL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CORAL() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); + }); + $this->map(Ids::CORAL_BLOCK, function(BlockStateReader $in) : Block{ + return VanillaBlocks::CORAL_BLOCK() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); + }); + $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(true)); + $this->map(Ids::CORAL_FAN_HANG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->map(Ids::CORAL_FAN_HANG2, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE()) + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->map(Ids::CORAL_FAN_HANG3, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_CORAL_FAN() + ->setCoralType(CoralType::HORN()) + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + }); + $this->map(Ids::CRAFTING_TABLE, fn() => VanillaBlocks::CRAFTING_TABLE()); + $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::DARK_OAK_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::DARK_OAK_BUTTON(), $in)); + $this->map(Ids::DARK_OAK_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::DARK_OAK_DOOR(), $in)); + $this->map(Ids::DARK_OAK_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::DARK_OAK_FENCE_GATE(), $in)); + $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), $in)); + $this->map(Ids::DARK_OAK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_OAK_STAIRS(), $in)); + $this->map(Ids::DARK_OAK_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::DARK_OAK_TRAPDOOR(), $in)); + $this->map(Ids::DARK_PRISMARINE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_PRISMARINE_STAIRS(), $in)); + $this->map(Ids::DARKOAK_STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DARK_OAK_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::DARKOAK_WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DARK_OAK_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::DAYLIGHT_DETECTOR, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DAYLIGHT_SENSOR() + ->setInverted(false) + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + }); + $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DAYLIGHT_SENSOR() + ->setInverted(true) + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + }); + $this->map(Ids::DEADBUSH, fn() => VanillaBlocks::DEAD_BUSH()); + $this->map(Ids::DETECTOR_RAIL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DETECTOR_RAIL() + ->setActivated($in->readBool(BlockStateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + }); + $this->map(Ids::DIAMOND_BLOCK, fn() => VanillaBlocks::DIAMOND()); + $this->map(Ids::DIAMOND_ORE, fn() => VanillaBlocks::DIAMOND_ORE()); + $this->map(Ids::DIORITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DIORITE_STAIRS(), $in)); + $this->map(Ids::DIRT, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DIRT() + ->setCoarse(match($value = $in->readString(BlockStateNames::DIRT_TYPE)){ + StringValues::DIRT_TYPE_NORMAL => false, + StringValues::DIRT_TYPE_COARSE => true, + default => throw $in->badValueException(BlockStateNames::DIRT_TYPE, $value), + }); + }); + $this->map(Ids::DOUBLE_PLANT, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::DOUBLE_PLANT_TYPE)){ + StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), + StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), + StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), + StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), + StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), + StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), + default => throw $in->badValueException(BlockStateNames::DOUBLE_PLANT_TYPE, $type), + })->setTop($in->readBool(BlockStateNames::UPPER_BLOCK_BIT)); + }); + $this->map(Ids::DOUBLE_STONE_SLAB, function(BlockStateReader $in) : Block{ + return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_SLAB2, function(BlockStateReader $in) : Block{ + return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_SLAB3, function(BlockStateReader $in) : Block{ + return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_SLAB4, function(BlockStateReader $in) : Block{ + return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_WOODEN_SLAB, function(BlockStateReader $in) : Block{ + return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DRAGON_EGG, fn() => VanillaBlocks::DRAGON_EGG()); + $this->map(Ids::DRIED_KELP_BLOCK, fn() => VanillaBlocks::DRIED_KELP()); + $this->map(Ids::ELEMENT_0, fn() => VanillaBlocks::ELEMENT_ZERO()); + $this->map(Ids::ELEMENT_1, fn() => VanillaBlocks::ELEMENT_HYDROGEN()); + $this->map(Ids::ELEMENT_10, fn() => VanillaBlocks::ELEMENT_NEON()); + $this->map(Ids::ELEMENT_100, fn() => VanillaBlocks::ELEMENT_FERMIUM()); + $this->map(Ids::ELEMENT_101, fn() => VanillaBlocks::ELEMENT_MENDELEVIUM()); + $this->map(Ids::ELEMENT_102, fn() => VanillaBlocks::ELEMENT_NOBELIUM()); + $this->map(Ids::ELEMENT_103, fn() => VanillaBlocks::ELEMENT_LAWRENCIUM()); + $this->map(Ids::ELEMENT_104, fn() => VanillaBlocks::ELEMENT_RUTHERFORDIUM()); + $this->map(Ids::ELEMENT_105, fn() => VanillaBlocks::ELEMENT_DUBNIUM()); + $this->map(Ids::ELEMENT_106, fn() => VanillaBlocks::ELEMENT_SEABORGIUM()); + $this->map(Ids::ELEMENT_107, fn() => VanillaBlocks::ELEMENT_BOHRIUM()); + $this->map(Ids::ELEMENT_108, fn() => VanillaBlocks::ELEMENT_HASSIUM()); + $this->map(Ids::ELEMENT_109, fn() => VanillaBlocks::ELEMENT_MEITNERIUM()); + $this->map(Ids::ELEMENT_11, fn() => VanillaBlocks::ELEMENT_SODIUM()); + $this->map(Ids::ELEMENT_110, fn() => VanillaBlocks::ELEMENT_DARMSTADTIUM()); + $this->map(Ids::ELEMENT_111, fn() => VanillaBlocks::ELEMENT_ROENTGENIUM()); + $this->map(Ids::ELEMENT_112, fn() => VanillaBlocks::ELEMENT_COPERNICIUM()); + $this->map(Ids::ELEMENT_113, fn() => VanillaBlocks::ELEMENT_NIHONIUM()); + $this->map(Ids::ELEMENT_114, fn() => VanillaBlocks::ELEMENT_FLEROVIUM()); + $this->map(Ids::ELEMENT_115, fn() => VanillaBlocks::ELEMENT_MOSCOVIUM()); + $this->map(Ids::ELEMENT_116, fn() => VanillaBlocks::ELEMENT_LIVERMORIUM()); + $this->map(Ids::ELEMENT_117, fn() => VanillaBlocks::ELEMENT_TENNESSINE()); + $this->map(Ids::ELEMENT_118, fn() => VanillaBlocks::ELEMENT_OGANESSON()); + $this->map(Ids::ELEMENT_12, fn() => VanillaBlocks::ELEMENT_MAGNESIUM()); + $this->map(Ids::ELEMENT_13, fn() => VanillaBlocks::ELEMENT_ALUMINUM()); + $this->map(Ids::ELEMENT_14, fn() => VanillaBlocks::ELEMENT_SILICON()); + $this->map(Ids::ELEMENT_15, fn() => VanillaBlocks::ELEMENT_PHOSPHORUS()); + $this->map(Ids::ELEMENT_16, fn() => VanillaBlocks::ELEMENT_SULFUR()); + $this->map(Ids::ELEMENT_17, fn() => VanillaBlocks::ELEMENT_CHLORINE()); + $this->map(Ids::ELEMENT_18, fn() => VanillaBlocks::ELEMENT_ARGON()); + $this->map(Ids::ELEMENT_19, fn() => VanillaBlocks::ELEMENT_POTASSIUM()); + $this->map(Ids::ELEMENT_2, fn() => VanillaBlocks::ELEMENT_HELIUM()); + $this->map(Ids::ELEMENT_20, fn() => VanillaBlocks::ELEMENT_CALCIUM()); + $this->map(Ids::ELEMENT_21, fn() => VanillaBlocks::ELEMENT_SCANDIUM()); + $this->map(Ids::ELEMENT_22, fn() => VanillaBlocks::ELEMENT_TITANIUM()); + $this->map(Ids::ELEMENT_23, fn() => VanillaBlocks::ELEMENT_VANADIUM()); + $this->map(Ids::ELEMENT_24, fn() => VanillaBlocks::ELEMENT_CHROMIUM()); + $this->map(Ids::ELEMENT_25, fn() => VanillaBlocks::ELEMENT_MANGANESE()); + $this->map(Ids::ELEMENT_26, fn() => VanillaBlocks::ELEMENT_IRON()); + $this->map(Ids::ELEMENT_27, fn() => VanillaBlocks::ELEMENT_COBALT()); + $this->map(Ids::ELEMENT_28, fn() => VanillaBlocks::ELEMENT_NICKEL()); + $this->map(Ids::ELEMENT_29, fn() => VanillaBlocks::ELEMENT_COPPER()); + $this->map(Ids::ELEMENT_3, fn() => VanillaBlocks::ELEMENT_LITHIUM()); + $this->map(Ids::ELEMENT_30, fn() => VanillaBlocks::ELEMENT_ZINC()); + $this->map(Ids::ELEMENT_31, fn() => VanillaBlocks::ELEMENT_GALLIUM()); + $this->map(Ids::ELEMENT_32, fn() => VanillaBlocks::ELEMENT_GERMANIUM()); + $this->map(Ids::ELEMENT_33, fn() => VanillaBlocks::ELEMENT_ARSENIC()); + $this->map(Ids::ELEMENT_34, fn() => VanillaBlocks::ELEMENT_SELENIUM()); + $this->map(Ids::ELEMENT_35, fn() => VanillaBlocks::ELEMENT_BROMINE()); + $this->map(Ids::ELEMENT_36, fn() => VanillaBlocks::ELEMENT_KRYPTON()); + $this->map(Ids::ELEMENT_37, fn() => VanillaBlocks::ELEMENT_RUBIDIUM()); + $this->map(Ids::ELEMENT_38, fn() => VanillaBlocks::ELEMENT_STRONTIUM()); + $this->map(Ids::ELEMENT_39, fn() => VanillaBlocks::ELEMENT_YTTRIUM()); + $this->map(Ids::ELEMENT_4, fn() => VanillaBlocks::ELEMENT_BERYLLIUM()); + $this->map(Ids::ELEMENT_40, fn() => VanillaBlocks::ELEMENT_ZIRCONIUM()); + $this->map(Ids::ELEMENT_41, fn() => VanillaBlocks::ELEMENT_NIOBIUM()); + $this->map(Ids::ELEMENT_42, fn() => VanillaBlocks::ELEMENT_MOLYBDENUM()); + $this->map(Ids::ELEMENT_43, fn() => VanillaBlocks::ELEMENT_TECHNETIUM()); + $this->map(Ids::ELEMENT_44, fn() => VanillaBlocks::ELEMENT_RUTHENIUM()); + $this->map(Ids::ELEMENT_45, fn() => VanillaBlocks::ELEMENT_RHODIUM()); + $this->map(Ids::ELEMENT_46, fn() => VanillaBlocks::ELEMENT_PALLADIUM()); + $this->map(Ids::ELEMENT_47, fn() => VanillaBlocks::ELEMENT_SILVER()); + $this->map(Ids::ELEMENT_48, fn() => VanillaBlocks::ELEMENT_CADMIUM()); + $this->map(Ids::ELEMENT_49, fn() => VanillaBlocks::ELEMENT_INDIUM()); + $this->map(Ids::ELEMENT_5, fn() => VanillaBlocks::ELEMENT_BORON()); + $this->map(Ids::ELEMENT_50, fn() => VanillaBlocks::ELEMENT_TIN()); + $this->map(Ids::ELEMENT_51, fn() => VanillaBlocks::ELEMENT_ANTIMONY()); + $this->map(Ids::ELEMENT_52, fn() => VanillaBlocks::ELEMENT_TELLURIUM()); + $this->map(Ids::ELEMENT_53, fn() => VanillaBlocks::ELEMENT_IODINE()); + $this->map(Ids::ELEMENT_54, fn() => VanillaBlocks::ELEMENT_XENON()); + $this->map(Ids::ELEMENT_55, fn() => VanillaBlocks::ELEMENT_CESIUM()); + $this->map(Ids::ELEMENT_56, fn() => VanillaBlocks::ELEMENT_BARIUM()); + $this->map(Ids::ELEMENT_57, fn() => VanillaBlocks::ELEMENT_LANTHANUM()); + $this->map(Ids::ELEMENT_58, fn() => VanillaBlocks::ELEMENT_CERIUM()); + $this->map(Ids::ELEMENT_59, fn() => VanillaBlocks::ELEMENT_PRASEODYMIUM()); + $this->map(Ids::ELEMENT_6, fn() => VanillaBlocks::ELEMENT_CARBON()); + $this->map(Ids::ELEMENT_60, fn() => VanillaBlocks::ELEMENT_NEODYMIUM()); + $this->map(Ids::ELEMENT_61, fn() => VanillaBlocks::ELEMENT_PROMETHIUM()); + $this->map(Ids::ELEMENT_62, fn() => VanillaBlocks::ELEMENT_SAMARIUM()); + $this->map(Ids::ELEMENT_63, fn() => VanillaBlocks::ELEMENT_EUROPIUM()); + $this->map(Ids::ELEMENT_64, fn() => VanillaBlocks::ELEMENT_GADOLINIUM()); + $this->map(Ids::ELEMENT_65, fn() => VanillaBlocks::ELEMENT_TERBIUM()); + $this->map(Ids::ELEMENT_66, fn() => VanillaBlocks::ELEMENT_DYSPROSIUM()); + $this->map(Ids::ELEMENT_67, fn() => VanillaBlocks::ELEMENT_HOLMIUM()); + $this->map(Ids::ELEMENT_68, fn() => VanillaBlocks::ELEMENT_ERBIUM()); + $this->map(Ids::ELEMENT_69, fn() => VanillaBlocks::ELEMENT_THULIUM()); + $this->map(Ids::ELEMENT_7, fn() => VanillaBlocks::ELEMENT_NITROGEN()); + $this->map(Ids::ELEMENT_70, fn() => VanillaBlocks::ELEMENT_YTTERBIUM()); + $this->map(Ids::ELEMENT_71, fn() => VanillaBlocks::ELEMENT_LUTETIUM()); + $this->map(Ids::ELEMENT_72, fn() => VanillaBlocks::ELEMENT_HAFNIUM()); + $this->map(Ids::ELEMENT_73, fn() => VanillaBlocks::ELEMENT_TANTALUM()); + $this->map(Ids::ELEMENT_74, fn() => VanillaBlocks::ELEMENT_TUNGSTEN()); + $this->map(Ids::ELEMENT_75, fn() => VanillaBlocks::ELEMENT_RHENIUM()); + $this->map(Ids::ELEMENT_76, fn() => VanillaBlocks::ELEMENT_OSMIUM()); + $this->map(Ids::ELEMENT_77, fn() => VanillaBlocks::ELEMENT_IRIDIUM()); + $this->map(Ids::ELEMENT_78, fn() => VanillaBlocks::ELEMENT_PLATINUM()); + $this->map(Ids::ELEMENT_79, fn() => VanillaBlocks::ELEMENT_GOLD()); + $this->map(Ids::ELEMENT_8, fn() => VanillaBlocks::ELEMENT_OXYGEN()); + $this->map(Ids::ELEMENT_80, fn() => VanillaBlocks::ELEMENT_MERCURY()); + $this->map(Ids::ELEMENT_81, fn() => VanillaBlocks::ELEMENT_THALLIUM()); + $this->map(Ids::ELEMENT_82, fn() => VanillaBlocks::ELEMENT_LEAD()); + $this->map(Ids::ELEMENT_83, fn() => VanillaBlocks::ELEMENT_BISMUTH()); + $this->map(Ids::ELEMENT_84, fn() => VanillaBlocks::ELEMENT_POLONIUM()); + $this->map(Ids::ELEMENT_85, fn() => VanillaBlocks::ELEMENT_ASTATINE()); + $this->map(Ids::ELEMENT_86, fn() => VanillaBlocks::ELEMENT_RADON()); + $this->map(Ids::ELEMENT_87, fn() => VanillaBlocks::ELEMENT_FRANCIUM()); + $this->map(Ids::ELEMENT_88, fn() => VanillaBlocks::ELEMENT_RADIUM()); + $this->map(Ids::ELEMENT_89, fn() => VanillaBlocks::ELEMENT_ACTINIUM()); + $this->map(Ids::ELEMENT_9, fn() => VanillaBlocks::ELEMENT_FLUORINE()); + $this->map(Ids::ELEMENT_90, fn() => VanillaBlocks::ELEMENT_THORIUM()); + $this->map(Ids::ELEMENT_91, fn() => VanillaBlocks::ELEMENT_PROTACTINIUM()); + $this->map(Ids::ELEMENT_92, fn() => VanillaBlocks::ELEMENT_URANIUM()); + $this->map(Ids::ELEMENT_93, fn() => VanillaBlocks::ELEMENT_NEPTUNIUM()); + $this->map(Ids::ELEMENT_94, fn() => VanillaBlocks::ELEMENT_PLUTONIUM()); + $this->map(Ids::ELEMENT_95, fn() => VanillaBlocks::ELEMENT_AMERICIUM()); + $this->map(Ids::ELEMENT_96, fn() => VanillaBlocks::ELEMENT_CURIUM()); + $this->map(Ids::ELEMENT_97, fn() => VanillaBlocks::ELEMENT_BERKELIUM()); + $this->map(Ids::ELEMENT_98, fn() => VanillaBlocks::ELEMENT_CALIFORNIUM()); + $this->map(Ids::ELEMENT_99, fn() => VanillaBlocks::ELEMENT_EINSTEINIUM()); + $this->map(Ids::EMERALD_BLOCK, fn() => VanillaBlocks::EMERALD()); + $this->map(Ids::EMERALD_ORE, fn() => VanillaBlocks::EMERALD_ORE()); + $this->map(Ids::ENCHANTING_TABLE, fn() => VanillaBlocks::ENCHANTING_TABLE()); + $this->map(Ids::END_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::END_STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::END_BRICKS, fn() => VanillaBlocks::END_STONE_BRICKS()); + $this->map(Ids::END_PORTAL_FRAME, function(BlockStateReader $in) : Block{ + return VanillaBlocks::END_PORTAL_FRAME() + ->setEye($in->readBool(BlockStateNames::END_PORTAL_EYE_BIT)) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::END_ROD, function(BlockStateReader $in) : Block{ + return VanillaBlocks::END_ROD() + ->setFacing($in->readFacingDirection()); + }); + $this->map(Ids::END_STONE, fn() => VanillaBlocks::END_STONE()); + $this->map(Ids::ENDER_CHEST, function(BlockStateReader $in) : Block{ + return VanillaBlocks::ENDER_CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::FARMLAND, function(BlockStateReader $in) : Block{ + return VanillaBlocks::FARMLAND() + ->setWetness($in->readBoundedInt(BlockStateNames::MOISTURIZED_AMOUNT, 0, 7)); + }); + $this->map(Ids::FENCE, function(BlockStateReader $in) : Block{ + return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), + default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), + }; + }); + $this->map(Ids::FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::OAK_FENCE_GATE(), $in)); + $this->map(Ids::FIRE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::FIRE() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + }); + $this->map(Ids::FLETCHING_TABLE, fn() => VanillaBlocks::FLETCHING_TABLE()); + $this->map(Ids::FLOWER_POT, function() : Block{ + //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) + return VanillaBlocks::FLOWER_POT(); + }); + $this->map(Ids::FLOWING_LAVA, fn(BlockStateReader $in) => Helper::decodeFlowingLiquid(VanillaBlocks::LAVA(), $in)); + $this->map(Ids::FLOWING_WATER, fn(BlockStateReader $in) => Helper::decodeFlowingLiquid(VanillaBlocks::WATER(), $in)); + $this->map(Ids::FRAME, function(BlockStateReader $in) : Block{ + //TODO: in R13 this can be any side, not just horizontal + return VanillaBlocks::ITEM_FRAME() + ->setFacing($in->readHorizontalFacing()) + ->setHasMap($in->readBool(BlockStateNames::ITEM_FRAME_MAP_BIT)); + }); + $this->map(Ids::FROSTED_ICE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::FROSTED_ICE() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 3)); + }); + $this->map(Ids::FURNACE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->map(Ids::GLASS, fn() => VanillaBlocks::GLASS()); + $this->map(Ids::GLASS_PANE, fn() => VanillaBlocks::GLASS_PANE()); + $this->map(Ids::GLOWINGOBSIDIAN, fn() => VanillaBlocks::GLOWING_OBSIDIAN()); + $this->map(Ids::GLOWSTONE, fn() => VanillaBlocks::GLOWSTONE()); + $this->map(Ids::GOLD_BLOCK, fn() => VanillaBlocks::GOLD()); + $this->map(Ids::GOLD_ORE, fn() => VanillaBlocks::GOLD_ORE()); + $this->map(Ids::GOLDEN_RAIL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::POWERED_RAIL() + ->setPowered($in->readBool(BlockStateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + }); + $this->map(Ids::GRANITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::GRANITE_STAIRS(), $in)); + $this->map(Ids::GRASS, fn() => VanillaBlocks::GRASS()); + $this->map(Ids::GRASS_PATH, fn() => VanillaBlocks::GRASS_PATH()); + $this->map(Ids::GRAVEL, fn() => VanillaBlocks::GRAVEL()); + $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::HARD_GLASS, fn() => VanillaBlocks::HARDENED_GLASS()); + $this->map(Ids::HARD_GLASS_PANE, fn() => VanillaBlocks::HARDENED_GLASS_PANE()); + $this->map(Ids::HARD_STAINED_GLASS, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_HARDENED_GLASS() + ->setColor($in->readColor()); + }); + $this->map(Ids::HARD_STAINED_GLASS_PANE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_HARDENED_GLASS_PANE() + ->setColor($in->readColor()); + }); + $this->map(Ids::HARDENED_CLAY, fn() => VanillaBlocks::HARDENED_CLAY()); + $this->map(Ids::HAY_BLOCK, function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored "deprecated" blockstate (useless) + return VanillaBlocks::HAY_BALE()->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + }); + $this->map(Ids::HOPPER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::HOPPER() + ->setFacing($in->readFacingWithoutUp()) + ->setPowered($in->readBool(BlockStateNames::TOGGLE_BIT)); + }); + $this->map(Ids::ICE, fn() => VanillaBlocks::ICE()); + $this->map(Ids::INFO_UPDATE, fn() => VanillaBlocks::INFO_UPDATE()); + $this->map(Ids::INFO_UPDATE2, fn() => VanillaBlocks::INFO_UPDATE2()); + $this->map(Ids::INVISIBLEBEDROCK, fn() => VanillaBlocks::INVISIBLE_BEDROCK()); + $this->map(Ids::IRON_BARS, fn() => VanillaBlocks::IRON_BARS()); + $this->map(Ids::IRON_BLOCK, fn() => VanillaBlocks::IRON()); + $this->map(Ids::IRON_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::IRON_DOOR(), $in)); + $this->map(Ids::IRON_ORE, fn() => VanillaBlocks::IRON_ORE()); + $this->map(Ids::IRON_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::IRON_TRAPDOOR(), $in)); + $this->map(Ids::JUKEBOX, fn() => VanillaBlocks::JUKEBOX()); + $this->map(Ids::JUNGLE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::JUNGLE_BUTTON(), $in)); + $this->map(Ids::JUNGLE_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::JUNGLE_DOOR(), $in)); + $this->map(Ids::JUNGLE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::JUNGLE_FENCE_GATE(), $in)); + $this->map(Ids::JUNGLE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), $in)); + $this->map(Ids::JUNGLE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::JUNGLE_STAIRS(), $in)); + $this->map(Ids::JUNGLE_STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::JUNGLE_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::JUNGLE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::JUNGLE_TRAPDOOR(), $in)); + $this->map(Ids::JUNGLE_WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::JUNGLE_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::LADDER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LADDER() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::LANTERN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LANTERN() + ->setHanging($in->readBool(BlockStateNames::HANGING)); + }); + $this->map(Ids::LAPIS_BLOCK, fn() => VanillaBlocks::LAPIS_LAZULI()); + $this->map(Ids::LAPIS_ORE, fn() => VanillaBlocks::LAPIS_LAZULI_ORE()); + $this->map(Ids::LAVA, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::LAVA(), $in)); + $this->map(Ids::LEAVES, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::OLD_LEAF_TYPE)){ + StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), + StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), + StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), + StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), + default => throw $in->badValueException(BlockStateNames::OLD_LEAF_TYPE, $type), + }) + ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(BlockStateNames::UPDATE_BIT)); + }); + $this->map(Ids::LEAVES2, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::NEW_LEAF_TYPE)){ + StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), + StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), + default => throw $in->badValueException(BlockStateNames::NEW_LEAF_TYPE, $type), + }) + ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(BlockStateNames::UPDATE_BIT)); + }); + $this->map(Ids::LECTERN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LECTERN() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setProducingSignal($in->readBool(BlockStateNames::POWERED_BIT)); + }); + $this->map(Ids::LEVER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LEVER() + ->setActivated($in->readBool(BlockStateNames::OPEN_BIT)) + ->setFacing(match($value = $in->readString(BlockStateNames::LEVER_DIRECTION)){ + StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), + StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), + StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), + StringValues::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), + StringValues::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), + StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), + StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), + StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), + default => throw $in->badValueException(BlockStateNames::LEVER_DIRECTION, $value), + }); + }); + $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + }); + $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIT_BLAST_FURNACE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BLAST_FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->map(Ids::LIT_FURNACE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->map(Ids::LIT_PUMPKIN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LIT_PUMPKIN() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::LIT_REDSTONE_LAMP, function() : Block{ + return VanillaBlocks::REDSTONE_LAMP() + ->setPowered(true); + }); + $this->map(Ids::LIT_REDSTONE_ORE, function() : Block{ + return VanillaBlocks::REDSTONE_ORE() + ->setLit(true); + }); + $this->map(Ids::LIT_SMOKER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SMOKER() + ->setFacing($in->readHorizontalFacing()) + ->setLit(true); + }); + $this->map(Ids::LOG, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::OLD_LOG_TYPE)){ + StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), + default => throw $in->badValueException(BlockStateNames::OLD_LOG_TYPE, $type), + }) + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::LOG2, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::NEW_LOG_TYPE)){ + StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), + default => throw $in->badValueException(BlockStateNames::NEW_LOG_TYPE, $type), + }) + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::LOOM, function(BlockStateReader $in) : Block{ + return VanillaBlocks::LOOM() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::MAGMA, fn() => VanillaBlocks::MAGMA()); + $this->map(Ids::MELON_BLOCK, fn() => VanillaBlocks::MELON()); + $this->map(Ids::MELON_STEM, fn(BlockStateReader $in) => Helper::decodeStem(VanillaBlocks::MELON_STEM(), $in)); + $this->map(Ids::MOB_SPAWNER, fn() => VanillaBlocks::MONSTER_SPAWNER()); + $this->map(Ids::MONSTER_EGG, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::MONSTER_EGG_STONE_TYPE)){ + StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), + StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), + default => throw $in->badValueException(BlockStateNames::MONSTER_EGG_STONE_TYPE, $type), + }; + }); + $this->map(Ids::MOSSY_COBBLESTONE, fn() => VanillaBlocks::MOSSY_COBBLESTONE()); + $this->map(Ids::MOSSY_COBBLESTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), $in)); + $this->map(Ids::MOSSY_STONE_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::MYCELIUM, fn() => VanillaBlocks::MYCELIUM()); + $this->map(Ids::NETHER_BRICK, fn() => VanillaBlocks::NETHER_BRICKS()); + $this->map(Ids::NETHER_BRICK_FENCE, fn() => VanillaBlocks::NETHER_BRICK_FENCE()); + $this->map(Ids::NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::NETHER_BRICK_STAIRS(), $in)); + $this->map(Ids::NETHER_WART, function(BlockStateReader $in) : Block{ + return VanillaBlocks::NETHER_WART() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 3)); + }); + $this->map(Ids::NETHER_WART_BLOCK, fn() => VanillaBlocks::NETHER_WART_BLOCK()); + $this->map(Ids::NETHERRACK, fn() => VanillaBlocks::NETHERRACK()); + $this->map(Ids::NETHERREACTOR, fn() => VanillaBlocks::NETHER_REACTOR_CORE()); + $this->map(Ids::NORMAL_STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::STONE_STAIRS(), $in)); + $this->map(Ids::NOTEBLOCK, fn() => VanillaBlocks::NOTE_BLOCK()); + $this->map(Ids::OAK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::OAK_STAIRS(), $in)); + $this->map(Ids::OBSIDIAN, fn() => VanillaBlocks::OBSIDIAN()); + $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PACKED_ICE, fn() => VanillaBlocks::PACKED_ICE()); + $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PLANKS, function(BlockStateReader $in) : Block{ + return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), + default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), + }; + }); + $this->map(Ids::PODZOL, fn() => VanillaBlocks::PODZOL()); + $this->map(Ids::POLISHED_ANDESITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), $in)); + $this->map(Ids::POLISHED_DIORITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_DIORITE_STAIRS(), $in)); + $this->map(Ids::POLISHED_GRANITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_GRANITE_STAIRS(), $in)); + $this->map(Ids::PORTAL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::NETHER_PORTAL() + ->setAxis(match($value = $in->readString(BlockStateNames::PORTAL_AXIS)){ + StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, + StringValues::PORTAL_AXIS_X => Axis::X, + StringValues::PORTAL_AXIS_Z => Axis::Z, + default => throw $in->badValueException(BlockStateNames::PORTAL_AXIS, $value), + }); + }); + $this->map(Ids::POTATOES, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::POTATOES(), $in)); + $this->map(Ids::POWERED_COMPARATOR, fn(BlockStateReader $in) => Helper::decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); + $this->map(Ids::POWERED_REPEATER, fn(BlockStateReader $in) => Helper::decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + ->setPowered(true)); + $this->map(Ids::PRISMARINE, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::PRISMARINE_BLOCK_TYPE)){ + StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), + StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), + StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), + default => throw $in->badValueException(BlockStateNames::PRISMARINE_BLOCK_TYPE, $type), + }; + }); + $this->map(Ids::PRISMARINE_BRICKS_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), $in)); + $this->map(Ids::PRISMARINE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PRISMARINE_STAIRS(), $in)); + $this->map(Ids::PUMPKIN, function() : Block{ + //TODO: intentionally ignored "direction" property (obsolete) + return VanillaBlocks::PUMPKIN(); + }); + $this->map(Ids::PUMPKIN_STEM, fn(BlockStateReader $in) => Helper::decodeStem(VanillaBlocks::PUMPKIN_STEM(), $in)); + $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PURPUR_BLOCK, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ + StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), + default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), + }; + }); + $this->map(Ids::PURPUR_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); + $this->map(Ids::QUARTZ_BLOCK, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ + StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) + default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), + }; + }); + $this->map(Ids::QUARTZ_ORE, fn() => VanillaBlocks::NETHER_QUARTZ_ORE()); + $this->map(Ids::QUARTZ_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::QUARTZ_STAIRS(), $in)); + $this->map(Ids::RAIL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::RAIL() + ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 9)); + }); + $this->map(Ids::RED_FLOWER, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::FLOWER_TYPE)){ + StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), + StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), + StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? + StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), + StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), + StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), + StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), + StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), + StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), + StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), + StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), + default => throw $in->badValueException(BlockStateNames::FLOWER_TYPE, $type), + }; + }); + $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::RED_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::RED_MUSHROOM, fn() => VanillaBlocks::RED_MUSHROOM()); + $this->map(Ids::RED_MUSHROOM_BLOCK, fn(BlockStateReader $in) => Helper::decodeMushroomBlock(VanillaBlocks::RED_MUSHROOM_BLOCK(), $in)); + $this->map(Ids::RED_NETHER_BRICK, fn() => VanillaBlocks::RED_NETHER_BRICKS()); + $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); + $this->map(Ids::RED_SANDSTONE, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), + default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), + }; + }); + $this->map(Ids::RED_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::REDSTONE_BLOCK, fn() => VanillaBlocks::REDSTONE()); + $this->map(Ids::REDSTONE_LAMP, function() : Block{ + return VanillaBlocks::REDSTONE_LAMP() + ->setPowered(false); + }); + $this->map(Ids::REDSTONE_ORE, function() : Block{ + return VanillaBlocks::REDSTONE_ORE() + ->setLit(false); + }); + $this->map(Ids::REDSTONE_TORCH, function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_TORCH() + ->setFacing($in->readTorchFacing()) + ->setLit(true); + }); + $this->map(Ids::REDSTONE_WIRE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_WIRE() + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + }); + $this->map(Ids::REEDS, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SUGARCANE() + ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + }); + $this->map(Ids::RESERVED6, fn() => VanillaBlocks::RESERVED6()); + $this->map(Ids::SAND, function(BlockStateReader $in) : Block{ + return match($value = $in->readString(BlockStateNames::SAND_TYPE)){ + StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), + StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), + default => throw $in->badValueException(BlockStateNames::SAND_TYPE, $value), + }; + }); + $this->map(Ids::SANDSTONE, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), + default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), + }; + }); + $this->map(Ids::SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SAPLING, function(BlockStateReader $in) : Block{ + return (match($type = $in->readString(BlockStateNames::SAPLING_TYPE)){ + StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), + StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), + StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), + StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), + StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), + StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), + default => throw $in->badValueException(BlockStateNames::SAPLING_TYPE, $type), + }) + ->setReady($in->readBool(BlockStateNames::AGE_BIT)); + }); + $this->map(Ids::SEALANTERN, fn() => VanillaBlocks::SEA_LANTERN()); + $this->map(Ids::SEA_PICKLE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SEA_PICKLE() + ->setCount($in->readBoundedInt(BlockStateNames::CLUSTER_COUNT, 0, 3) + 1) + ->setUnderwater(!$in->readBool(BlockStateNames::DEAD_BIT)); + }); + $this->map(Ids::SHULKER_BOX, function(BlockStateReader $in) : Block{ + return VanillaBlocks::DYED_SHULKER_BOX() + ->setColor($in->readColor()); + }); + $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::SKULL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::MOB_HEAD() + ->setFacing($in->readFacingWithoutDown()) + ->setNoDrops($in->readBool(BlockStateNames::NO_DROP_BIT)); + }); + $this->map(Ids::SLIME, fn() => VanillaBlocks::SLIME()); + $this->map(Ids::SMOKER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SMOKER() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->map(Ids::SMOOTH_QUARTZ_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), $in)); + $this->map(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SMOOTH_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SMOOTH_STONE, fn() => VanillaBlocks::SMOOTH_STONE()); + $this->map(Ids::SNOW, fn() => VanillaBlocks::SNOW()); + $this->map(Ids::SNOW_LAYER, function(BlockStateReader $in) : Block{ + //TODO: intentionally ignored covered_bit property (appears useless and we don't track it) + return VanillaBlocks::SNOW_LAYER()->setLayers($in->readBoundedInt(BlockStateNames::HEIGHT, 0, 7) + 1); + }); + $this->map(Ids::SOUL_SAND, fn() => VanillaBlocks::SOUL_SAND()); + $this->map(Ids::SPONGE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNames::SPONGE_TYPE)){ + StringValues::SPONGE_TYPE_DRY => false, + StringValues::SPONGE_TYPE_WET => true, + default => throw $in->badValueException(BlockStateNames::SPONGE_TYPE, $type), + }); + }); + $this->map(Ids::SPRUCE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::SPRUCE_BUTTON(), $in)); + $this->map(Ids::SPRUCE_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::SPRUCE_DOOR(), $in)); + $this->map(Ids::SPRUCE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::SPRUCE_FENCE_GATE(), $in)); + $this->map(Ids::SPRUCE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), $in)); + $this->map(Ids::SPRUCE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SPRUCE_STAIRS(), $in)); + $this->map(Ids::SPRUCE_STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPRUCE_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::SPRUCE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::SPRUCE_TRAPDOOR(), $in)); + $this->map(Ids::SPRUCE_WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::SPRUCE_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::STAINED_GLASS, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_GLASS() + ->setColor($in->readColor()); + }); + $this->map(Ids::STAINED_GLASS_PANE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_GLASS_PANE() + ->setColor($in->readColor()); + }); + $this->map(Ids::STAINED_HARDENED_CLAY, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STAINED_CLAY() + ->setColor($in->readColor()); + }); + $this->map(Ids::STANDING_BANNER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::BANNER() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::STANDING_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::OAK_SIGN() + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + }); + $this->map(Ids::STONE, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::STONE_TYPE)){ + StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), + StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), + StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), + StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), + StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), + StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), + StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), + default => throw $in->badValueException(BlockStateNames::STONE_TYPE, $type), + }; + }); + $this->map(Ids::STONE_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::STONE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::STONE_BUTTON(), $in)); + $this->map(Ids::STONE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::STONE_PRESSURE_PLATE(), $in)); + $this->map(Ids::STONE_SLAB, fn(BlockStateReader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB2, fn(BlockStateReader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB3, fn(BlockStateReader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB4, fn(BlockStateReader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); + $this->map(Ids::STONEBRICK, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::STONE_BRICK_TYPE)){ + StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla + StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), + default => throw $in->badValueException(BlockStateNames::STONE_BRICK_TYPE, $type), + }; + }); + $this->map(Ids::STONECUTTER, fn() => VanillaBlocks::LEGACY_STONECUTTER()); + $this->map(Ids::STRIPPED_ACACIA_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_ACACIA_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::STRIPPED_BIRCH_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_BIRCH_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::STRIPPED_DARK_OAK_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_DARK_OAK_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::STRIPPED_JUNGLE_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_JUNGLE_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::STRIPPED_OAK_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_OAK_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::STRIPPED_SPRUCE_LOG, function(BlockStateReader $in) : Block{ + return VanillaBlocks::STRIPPED_SPRUCE_LOG() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::SWEET_BERRY_BUSH, function(BlockStateReader $in) : Block{ + //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 + $growth = $in->readBoundedInt(BlockStateNames::GROWTH, 0, 7); + return VanillaBlocks::SWEET_BERRY_BUSH() + ->setAge(min($growth, SweetBerryBush::STAGE_MATURE)); + }); + $this->map(Ids::TALLGRASS, function(BlockStateReader $in) : Block{ + return match($type = $in->readString(BlockStateNames::TALL_GRASS_TYPE)){ + StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), + StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), + default => throw $in->badValueException(BlockStateNames::TALL_GRASS_TYPE, $type), + }; + }); + $this->map(Ids::TNT, function(BlockStateReader $in) : Block{ + return VanillaBlocks::TNT() + ->setUnstable($in->readBool(BlockStateNames::EXPLODE_BIT)) + ->setWorksUnderwater($in->readBool(BlockStateNames::ALLOW_UNDERWATER_BIT)); + }); + $this->map(Ids::TORCH, function(BlockStateReader $in) : Block{ + return VanillaBlocks::TORCH() + ->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::OAK_TRAPDOOR(), $in)); + $this->map(Ids::TRAPPED_CHEST, function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRAPPED_CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::TRIPWIRE, function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRIPWIRE() + ->setConnected($in->readBool(BlockStateNames::ATTACHED_BIT)) + ->setDisarmed($in->readBool(BlockStateNames::DISARMED_BIT)) + ->setSuspended($in->readBool(BlockStateNames::SUSPENDED_BIT)) + ->setTriggered($in->readBool(BlockStateNames::POWERED_BIT)); + }); + $this->map(Ids::TRIPWIRE_HOOK, function(BlockStateReader $in) : Block{ + return VanillaBlocks::TRIPWIRE_HOOK() + ->setConnected($in->readBool(BlockStateNames::ATTACHED_BIT)) + ->setFacing($in->readLegacyHorizontalFacing()) + ->setPowered($in->readBool(BlockStateNames::POWERED_BIT)); + }); + $this->map(Ids::UNDERWATER_TORCH, function(BlockStateReader $in) : Block{ + return VanillaBlocks::UNDERWATER_TORCH() + ->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::UNDYED_SHULKER_BOX, fn() => VanillaBlocks::SHULKER_BOX()); + $this->map(Ids::UNLIT_REDSTONE_TORCH, function(BlockStateReader $in) : Block{ + return VanillaBlocks::REDSTONE_TORCH() + ->setFacing($in->readTorchFacing()) + ->setLit(false); + }); + $this->map(Ids::UNPOWERED_COMPARATOR, fn(BlockStateReader $in) => Helper::decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); + $this->map(Ids::UNPOWERED_REPEATER, fn(BlockStateReader $in) => Helper::decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + ->setPowered(false)); + $this->map(Ids::VINE, function(BlockStateReader $in) : Block{ + $vineDirectionFlags = $in->readBoundedInt(BlockStateNames::VINE_DIRECTION_BITS, 0, 15); + return VanillaBlocks::VINES() + ->setFace(Facing::NORTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_NORTH) !== 0) + ->setFace(Facing::SOUTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_SOUTH) !== 0) + ->setFace(Facing::WEST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_WEST) !== 0) + ->setFace(Facing::EAST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_EAST) !== 0); + }); + $this->map(Ids::WALL_BANNER, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WALL_BANNER() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::WALL_SIGN, function(BlockStateReader $in) : Block{ + return VanillaBlocks::OAK_WALL_SIGN() + ->setFacing($in->readHorizontalFacing()); + }); + $this->map(Ids::WATER, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::WATER(), $in)); + $this->map(Ids::WATERLILY, fn() => VanillaBlocks::LILY_PAD()); + $this->map(Ids::WEB, fn() => VanillaBlocks::COBWEB()); + $this->map(Ids::WHEAT, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::WHEAT(), $in)); + $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::WOOD, function(BlockStateReader $in) : Block{ + //TODO: our impl doesn't support axis yet + $stripped = $in->readBool(BlockStateNames::STRIPPED_BIT); + return match($woodType = $in->readString(BlockStateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), + default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodType), + }; + }); + $this->map(Ids::WOODEN_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::OAK_BUTTON(), $in)); + $this->map(Ids::WOODEN_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::OAK_DOOR(), $in)); + $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::OAK_PRESSURE_PLATE(), $in)); + $this->map(Ids::WOODEN_SLAB, fn(BlockStateReader $in) => Helper::mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::WOOL, function(BlockStateReader $in) : Block{ + return VanillaBlocks::WOOL() + ->setColor($in->readColor()); + }); + $this->map(Ids::YELLOW_FLOWER, fn() => VanillaBlocks::DANDELION()); + $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), $in)); + //$this->map(Ids::ALLOW, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::AMETHYST_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::AMETHYST_CLUSTER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::ANCIENT_DEBRIS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::AZALEA, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::AZALEA_LEAVES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::AZALEA_LEAVES_FLOWERED, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BASALT, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::BEE_NEST, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::BEEHIVE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::BIG_DRIPLEAF, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * big_dripleaf_head (ByteTag) = 0, 1 + * big_dripleaf_tilt (StringTag) = full_tilt, none, partial_tilt, unstable + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::BLACK_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLACK_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLACKSTONE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::BLACKSTONE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLACKSTONE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLACKSTONE_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::BLACKSTONE_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLUE_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BLUE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BORDER_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BROWN_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BROWN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BUBBLE_COLUMN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * drag_down (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::BUDDING_AMETHYST, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CALCITE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CAMERA, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CAMPFIRE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * extinguished (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CARTOGRAPHY_TABLE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CAULDRON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * cauldron_liquid (StringTag) = lava, powder_snow, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->map(Ids::CAVE_VINES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::CAVE_VINES_BODY_WITH_BERRIES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::CAVE_VINES_HEAD_WITH_BERRIES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::CHAIN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::CHAIN_COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::CHISELED_DEEPSLATE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CHISELED_NETHER_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CHISELED_POLISHED_BLACKSTONE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CHORUS_FLOWER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * age (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::CHORUS_PLANT, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CLIENT_REQUEST_PLACEHOLDER_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::COBBLED_DEEPSLATE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::COBBLED_DEEPSLATE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::COBBLED_DEEPSLATE_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::COBBLED_DEEPSLATE_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::COMPOSTER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 + */ + //}); + //$this->map(Ids::CONDUIT, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::COPPER_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::COPPER_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRACKED_DEEPSLATE_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRACKED_DEEPSLATE_TILES, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRACKED_NETHER_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_BUTTON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::CRIMSON_DOOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CRIMSON_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CRIMSON_FENCE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_FENCE_GATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CRIMSON_FUNGUS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_HYPHAE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::CRIMSON_NYLIUM, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_PLANKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::CRIMSON_ROOTS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CRIMSON_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CRIMSON_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::CRIMSON_STANDING_SIGN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::CRIMSON_STEM, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::CRIMSON_TRAPDOOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CRIMSON_WALL_SIGN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::CRYING_OBSIDIAN, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::CYAN_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::CYAN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_BRICK_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_BRICK_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::DEEPSLATE_BRICK_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_COAL_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_COPPER_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_DIAMOND_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_EMERALD_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_GOLD_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_IRON_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_LAPIS_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_REDSTONE_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DEEPSLATE_TILE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_TILE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_TILE_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::DEEPSLATE_TILE_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DEEPSLATE_TILES, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DENY, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DIRT_WITH_ROOTS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DISPENSER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::DRIPSTONE_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::DROPPER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::END_GATEWAY, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::END_PORTAL, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::EXPOSED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::EXPOSED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::EXPOSED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::EXPOSED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::FLOWERING_AZALEA, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::GILDED_BLACKSTONE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::GLOW_FRAME, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * item_frame_map_bit (ByteTag) = 0, 1 + * item_frame_photo_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::GLOW_LICHEN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + */ + //}); + //$this->map(Ids::GRAY_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::GRAY_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::GREEN_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::GREEN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::GRINDSTONE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * attachment (StringTag) = hanging, multiple, side, standing + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::HANGING_ROOTS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::HONEY_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::HONEYCOMB_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::INFESTED_DEEPSLATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::JIGSAW, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * rotation (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::KELP, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * kelp_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::LARGE_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::LAVA_CAULDRON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * cauldron_liquid (StringTag) = lava, powder_snow, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->map(Ids::LIGHT_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::LIGHT_BLUE_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIGHT_GRAY_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIGHTNING_ROD, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::LIME_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIME_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::LIT_DEEPSLATE_REDSTONE_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::LODESTONE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MAGENTA_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MAGENTA_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MEDIUM_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::MOSS_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MOSS_CARPET, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MOVINGBLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MYSTERIOUS_FRAME, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MYSTERIOUS_FRAME_SLOT, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::NETHER_GOLD_ORE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::NETHER_SPROUTS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::NETHERITE_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::OBSERVER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::ORANGE_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::ORANGE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::OXIDIZED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::OXIDIZED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::OXIDIZED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::OXIDIZED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::PINK_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::PINK_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::PISTON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::PISTONARMCOLLISION, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::POINTED_DRIPSTONE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * dripstone_thickness (StringTag) = base, frustum, merge, middle, tip + * hanging (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BASALT, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_BUTTON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::POLISHED_BLACKSTONE_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_DEEPSLATE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_DEEPSLATE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POLISHED_DEEPSLATE_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::POLISHED_DEEPSLATE_WALL, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::POWDER_SNOW, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::PURPLE_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::PURPLE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::QUARTZ_BRICKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::RAW_COPPER_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::RAW_GOLD_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::RAW_IRON_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::RED_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::RED_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::REPEATING_COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::RESPAWN_ANCHOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * respawn_anchor_charge (IntTag) = 0, 1, 2, 3, 4 + */ + //}); + //$this->map(Ids::SCAFFOLDING, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + * stability_check (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SCULK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::SCULK_CATALYST, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * bloom (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SCULK_SENSOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SCULK_SHRIEKER, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * active (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SCULK_VEIN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + */ + //}); + //$this->map(Ids::SEAGRASS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * sea_grass_type (StringTag) = default, double_bot, double_top + */ + //}); + //$this->map(Ids::SHROOMLIGHT, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::SMALL_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::SMALL_DRIPLEAF_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SMITHING_TABLE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::SMOOTH_BASALT, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::SOUL_CAMPFIRE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * extinguished (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SOUL_FIRE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::SOUL_LANTERN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * hanging (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::SOUL_SOIL, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::SOUL_TORCH, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(Ids::SPORE_BLOSSOM, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::STICKYPISTONARMCOLLISION, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::STICKY_PISTON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::STONECUTTER_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::STRIPPED_CRIMSON_HYPHAE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::STRIPPED_CRIMSON_STEM, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::STRIPPED_WARPED_HYPHAE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::STRIPPED_WARPED_STEM, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::STRUCTURE_BLOCK, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * structure_block_type (StringTag) = corner, data, export, invalid, load, save + */ + //}); + //$this->map(Ids::STRUCTURE_VOID, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * structure_void_type (StringTag) = air, void + */ + //}); + //$this->map(Ids::TARGET, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::TINTED_GLASS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::TUFF, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::TURTLE_EGG, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * cracked_state (StringTag) = cracked, max_cracked, no_cracks + * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg + */ + //}); + //$this->map(Ids::TWISTING_VINES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * twisting_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::UNKNOWN, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_BUTTON, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::WARPED_DOOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WARPED_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WARPED_FENCE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_FENCE_GATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WARPED_FUNGUS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_HYPHAE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::WARPED_NYLIUM, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_PLANKS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::WARPED_ROOTS, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WARPED_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WARPED_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WARPED_STANDING_SIGN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::WARPED_STEM, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::WARPED_TRAPDOOR, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WARPED_WALL_SIGN, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::WARPED_WART_BLOCK, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_EXPOSED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_OXIDIZED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_WEATHERED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WEATHERED_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WEATHERED_CUT_COPPER, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::WEATHERED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WEATHERED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WEEPING_VINES, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * weeping_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(Ids::WHITE_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WHITE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::WITHER_ROSE, function(BlockStateReader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::YELLOW_CANDLE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::YELLOW_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + } + + /** @throws BlockStateDeserializeException */ + public function deserialize(string $id, CompoundTag $blockState) : Block{ + if(!array_key_exists($id, $this->deserializeFuncs)){ + throw new BlockStateDeserializeException("Unknown block ID \"$id\""); + } + return $this->deserializeFuncs[$id](new BlockStateReader($blockState)); + } +} diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php new file mode 100644 index 000000000..c73b4f7a5 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -0,0 +1,257 @@ +setFacing($in->readFacingDirection()) + ->setPressed($in->readBool(BlockStateNames::BUTTON_PRESSED_BIT)); + } + + /** + * @phpstan-template TCrops of Crops + * @phpstan-param TCrops $block + * @phpstan-return TCrops + * + * @throws BlockStateDeserializeException + */ + public static function decodeCrops(Crops $block, BlockStateReader $in) : Crops{ + return $block->setAge($in->readBoundedInt(BlockStateNames::GROWTH, 0, 7)); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeComparator(RedstoneComparator $block, BlockStateReader $in) : RedstoneComparator{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setPowered($in->readBool(BlockStateNames::OUTPUT_LIT_BIT)) + ->setSubtractMode($in->readBool(BlockStateNames::OUTPUT_SUBTRACT_BIT)); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeDoor(Door $block, BlockStateReader $in) : Door{ + //TODO: check if these need any special treatment to get the appropriate data to both halves of the door + return $block + ->setTop($in->readBool(BlockStateNames::UPPER_BLOCK_BIT)) + ->setFacing(Facing::rotateY($in->readLegacyHorizontalFacing(), false)) + ->setHingeRight($in->readBool(BlockStateNames::DOOR_HINGE_BIT)) + ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeFenceGate(FenceGate $block, BlockStateReader $in) : FenceGate{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setInWall($in->readBool(BlockStateNames::IN_WALL_BIT)) + ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeFloorCoralFan(BlockStateReader $in) : FloorCoralFan{ + return VanillaBlocks::CORAL_FAN() + ->setCoralType($in->readCoralType()) + ->setAxis(match($in->readBoundedInt(BlockStateNames::CORAL_FAN_DIRECTION, 0, 1)){ + 0 => Axis::X, + 1 => Axis::Z, + default => throw new AssumptionFailedError("readBoundedInt() should have prevented this"), + }); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{ + return $block->setFacing($in->readHorizontalFacing()); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeLiquid(Liquid $block, BlockStateReader $in, bool $still) : Liquid{ + $fluidHeightState = $in->readBoundedInt(BlockStateNames::LIQUID_DEPTH, 0, 15); + return $block + ->setDecay($fluidHeightState & 0x7) + ->setFalling(($fluidHeightState & 0x1) !== 0) + ->setStill($still); + } + + public static function decodeFlowingLiquid(Liquid $block, BlockStateReader $in) : Liquid{ + return self::decodeLiquid($block, $in, false); + } + + public static function decodeStillLiquid(Liquid $block, BlockStateReader $in) : Liquid{ + return self::decodeLiquid($block, $in, true); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeMushroomBlock(RedMushroomBlock $block, BlockStateReader $in) : Block{ + switch($type = $in->readBoundedInt(BlockStateNames::HUGE_MUSHROOM_BITS, 0, 15)){ + case BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM: return VanillaBlocks::ALL_SIDED_MUSHROOM_STEM(); + case BlockLegacyMetadata::MUSHROOM_BLOCK_STEM: return VanillaBlocks::MUSHROOM_STEM(); + default: + //invalid types get left as default + $type = MushroomBlockTypeIdMap::getInstance()->fromId($type); + return $type !== null ? $block->setMushroomBlockType($type) : $block; + } + } + + /** @throws BlockStateDeserializeException */ + public static function decodeRepeater(RedstoneRepeater $block, BlockStateReader $in) : RedstoneRepeater{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setDelay($in->readBoundedInt(BlockStateNames::REPEATER_DELAY, 0, 3) + 1); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeSimplePressurePlate(SimplePressurePlate $block, BlockStateReader $in) : SimplePressurePlate{ + //TODO: not sure what the deal is here ... seems like a mojang bug / artifact of bad implementation? + //best to keep this separate from weighted plates anyway... + return $block->setPressed($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15) !== 0); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeStairs(Stair $block, BlockStateReader $in) : Stair{ + return $block + ->setUpsideDown($in->readBool(BlockStateNames::UPSIDE_DOWN_BIT)) + ->setFacing($in->readWeirdoHorizontalFacing()); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeStem(Stem $block, BlockStateReader $in) : Stem{ + //TODO: our stems don't support facings yet (facing_direction) + return self::decodeCrops($block, $in); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeTrapdoor(Trapdoor $block, BlockStateReader $in) : Trapdoor{ + return $block + ->setFacing($in->readLegacyHorizontalFacing()) + ->setTop($in->readBool(BlockStateNames::UPSIDE_DOWN_BIT)) + ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeWall(Wall $block, BlockStateReader $in) : Wall{ + //TODO: our walls don't support the full range of needed states yet + return $block; + } + + /** @throws BlockStateDeserializeException */ + public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ + //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood + return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE)){ + StringValues::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), + StringValues::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), + default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + public static function mapStoneSlab2Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone + return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_2)){ + StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), + default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_2, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + public static function mapStoneSlab3Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone + return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_3)){ + StringValues::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), + default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_3, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + public static function mapStoneSlab4Type(BlockStateReader $in) : Slab{ + // * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone + return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_4)){ + StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), + default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_4, $type), + }; + } + + /** @throws BlockStateDeserializeException */ + public static function mapWoodenSlabType(BlockStateReader $in) : Slab{ + // * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + return match($type = $in->readString(BlockStateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), + default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $type), + }; + } +} diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php b/src/data/bedrock/blockstate/BlockStateDeserializerR13.php deleted file mode 100644 index 450cd0cde..000000000 --- a/src/data/bedrock/blockstate/BlockStateDeserializerR13.php +++ /dev/null @@ -1,1491 +0,0 @@ - - */ - private array $deserializeFuncs = []; - - /** @phpstan-param \Closure(BlockStateReader) : Block $c */ - private function mapId(string $id, \Closure $c) : void{ - if(array_key_exists($id, $this->deserializeFuncs)){ - throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); - } - $this->deserializeFuncs[$id] = $c; - } - - /** @phpstan-param \Closure(BlockStateReader) : Block $c */ - private function mapVanilla(string $minecraftId, \Closure $c) : void{ - $this->mapId("minecraft:$minecraftId", $c); - } - - /** @throws BlockStateDeserializeException */ - private function decodeButton(Button $block, BlockStateReader $in) : Button{ - return $block - ->setFacing($in->readFacingDirection()) - ->setPressed($in->readBool(BlockStateNamesR13::BUTTON_PRESSED_BIT)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeComparator(RedstoneComparator $block, BlockStateReader $in) : RedstoneComparator{ - return $block - ->setFacing($in->readLegacyHorizontalFacing()) - ->setPowered($in->readBool(BlockStateNamesR13::OUTPUT_LIT_BIT)) - ->setSubtractMode($in->readBool(BlockStateNamesR13::OUTPUT_SUBTRACT_BIT)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeCrops(Crops $block, BlockStateReader $in) : Crops{ - return $block->setAge($in->readBoundedInt(BlockStateNamesR13::GROWTH, 0, 7)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeDoor(Door $block, BlockStateReader $in) : Door{ - //TODO: check if these need any special treatment to get the appropriate data to both halves of the door - return $block - ->setTop($in->readBool(BlockStateNamesR13::UPPER_BLOCK_BIT)) - ->setFacing(Facing::rotateY($in->readLegacyHorizontalFacing(), false)) - ->setHingeRight($in->readBool(BlockStateNamesR13::DOOR_HINGE_BIT)) - ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeFenceGate(FenceGate $block, BlockStateReader $in) : FenceGate{ - return $block - ->setFacing($in->readLegacyHorizontalFacing()) - ->setInWall($in->readBool(BlockStateNamesR13::IN_WALL_BIT)) - ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeFloorCoralFan(BlockStateReader $in) : FloorCoralFan{ - return VanillaBlocks::CORAL_FAN() - ->setCoralType($in->readCoralType()) - ->setAxis(match($in->readBoundedInt(BlockStateNamesR13::CORAL_FAN_DIRECTION, 0, 1)){ - 0 => Axis::X, - 1 => Axis::Z, - default => throw new AssumptionFailedError("readBoundedInt() should have prevented this"), - }); - } - - /** @throws BlockStateDeserializeException */ - private function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{ - return $block->setFacing($in->readHorizontalFacing()); - } - - /** @throws BlockStateDeserializeException */ - private function decodeLiquid(Liquid $block, BlockStateReader $in, bool $still) : Liquid{ - $fluidHeightState = $in->readBoundedInt(BlockStateNamesR13::LIQUID_DEPTH, 0, 15); - return $block - ->setDecay($fluidHeightState & 0x7) - ->setFalling(($fluidHeightState & 0x1) !== 0) - ->setStill($still); - } - - private function decodeFlowingLiquid(Liquid $block, BlockStateReader $in) : Liquid{ - return $this->decodeLiquid($block, $in, false); - } - - private function decodeStillLiquid(Liquid $block, BlockStateReader $in) : Liquid{ - return $this->decodeLiquid($block, $in, true); - } - - /** @throws BlockStateDeserializeException */ - private function decodeMushroomBlock(RedMushroomBlock $block, BlockStateReader $in) : Block{ - switch($type = $in->readBoundedInt(BlockStateNamesR13::HUGE_MUSHROOM_BITS, 0, 15)){ - case BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM: return VanillaBlocks::ALL_SIDED_MUSHROOM_STEM(); - case BlockLegacyMetadata::MUSHROOM_BLOCK_STEM: return VanillaBlocks::MUSHROOM_STEM(); - default: - //invalid types get left as default - $type = MushroomBlockTypeIdMap::getInstance()->fromId($type); - return $type !== null ? $block->setMushroomBlockType($type) : $block; - } - } - - /** @throws BlockStateDeserializeException */ - private function decodeRepeater(RedstoneRepeater $block, BlockStateReader $in) : RedstoneRepeater{ - return $block - ->setFacing($in->readLegacyHorizontalFacing()) - ->setDelay($in->readBoundedInt(BlockStateNamesR13::REPEATER_DELAY, 0, 3) + 1); - } - - /** @throws BlockStateDeserializeException */ - private function decodeSimplePressurePlate(SimplePressurePlate $block, BlockStateReader $in) : SimplePressurePlate{ - //TODO: not sure what the deal is here ... seems like a mojang bug / artifact of bad implementation? - //best to keep this separate from weighted plates anyway... - return $block->setPressed($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15) !== 0); - } - - /** @throws BlockStateDeserializeException */ - private function decodeStairs(Stair $block, BlockStateReader $in) : Stair{ - return $block - ->setUpsideDown($in->readBool(BlockStateNamesR13::UPSIDE_DOWN_BIT)) - ->setFacing($in->readWeirdoHorizontalFacing()); - } - - /** @throws BlockStateDeserializeException */ - private function decodeTrapdoor(Trapdoor $block, BlockStateReader $in) : Trapdoor{ - return $block - ->setFacing($in->readLegacyHorizontalFacing()) - ->setTop($in->readBool(BlockStateNamesR13::UPSIDE_DOWN_BIT)) - ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); - } - - /** @throws BlockStateDeserializeException */ - private function decodeWall(Wall $block, BlockStateReader $in) : Wall{ - //TODO: our walls don't support the full range of needed states yet - return $block; - } - - /** @throws BlockStateDeserializeException */ - private function mapStoneSlab1Type(BlockStateReader $in) : Slab{ - //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood - return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE)){ - StringValues::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), - StringValues::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), - StringValues::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE, $type), - }; - } - - /** @throws BlockStateDeserializeException */ - private function mapStoneSlab2Type(BlockStateReader $in) : Slab{ - // * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone - return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_2)){ - StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), - StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_2, $type), - }; - } - - /** @throws BlockStateDeserializeException */ - private function mapStoneSlab3Type(BlockStateReader $in) : Slab{ - // * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone - return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_3)){ - StringValues::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_3, $type), - }; - } - - /** @throws BlockStateDeserializeException */ - private function mapStoneSlab4Type(BlockStateReader $in) : Slab{ - // * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone - return match($type = $in->readString(BlockStateNamesR13::STONE_SLAB_TYPE_4)){ - StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), - StringValues::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_SLAB_TYPE_4, $type), - }; - } - - /** @throws BlockStateDeserializeException */ - private function mapWoodenSlabType(BlockStateReader $in) : Slab{ - // * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - return match($type = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), - default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $type), - }; - } - - public function __construct(){ - $this->mapVanilla("acacia_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::ACACIA_BUTTON(), $in)); - $this->mapVanilla("acacia_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::ACACIA_DOOR(), $in)); - $this->mapVanilla("acacia_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::ACACIA_FENCE_GATE(), $in)); - $this->mapVanilla("acacia_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::ACACIA_PRESSURE_PLATE(), $in)); - $this->mapVanilla("acacia_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::ACACIA_STAIRS(), $in)); - $this->mapVanilla("acacia_standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACACIA_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("acacia_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::ACACIA_TRAPDOOR(), $in)); - $this->mapVanilla("acacia_wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACACIA_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("activator_rail", function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACTIVATOR_RAIL() - ->setPowered($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); - }); - $this->mapVanilla("air", fn() => VanillaBlocks::AIR()); - $this->mapVanilla("andesite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::ANDESITE_STAIRS(), $in)); - $this->mapVanilla("anvil", function(BlockStateReader $in) : Block{ - return VanillaBlocks::ANVIL() - ->setDamage(match($value = $in->readString(BlockStateNamesR13::DAMAGE)){ - StringValues::DAMAGE_UNDAMAGED => 0, - StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, - StringValues::DAMAGE_VERY_DAMAGED => 2, - StringValues::DAMAGE_BROKEN => 0, - default => throw $in->badValueException(BlockStateNamesR13::DAMAGE, $value), - }) - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("bamboo", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BAMBOO() - ->setLeafSize(match($value = $in->readString(BlockStateNamesR13::BAMBOO_LEAF_SIZE)){ - StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, - default => throw $in->badValueException(BlockStateNamesR13::BAMBOO_LEAF_SIZE, $value), - }) - ->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)) - ->setThick(match($value = $in->readString(BlockStateNamesR13::BAMBOO_STALK_THICKNESS)){ - StringValues::BAMBOO_STALK_THICKNESS_THIN => false, - StringValues::BAMBOO_STALK_THICKNESS_THICK => true, - default => throw $in->badValueException(BlockStateNamesR13::BAMBOO_STALK_THICKNESS, $value), - }); - }); - $this->mapVanilla("bamboo_sapling", function(BlockStateReader $in) : Block{ - //TODO: sapling_type intentionally ignored (its presence is a bug) - return VanillaBlocks::BAMBOO_SAPLING()->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)); - }); - $this->mapVanilla("barrel", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BARREL() - ->setFacing($in->readFacingDirection()) - ->setOpen($in->readBool(BlockStateNamesR13::OPEN_BIT)); - }); - $this->mapVanilla("barrier", fn() => VanillaBlocks::BARRIER()); - $this->mapVanilla("beacon", fn() => VanillaBlocks::BEACON()); - $this->mapVanilla("bed", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BED() - ->setFacing($in->readLegacyHorizontalFacing()) - ->setHead($in->readBool(BlockStateNamesR13::HEAD_PIECE_BIT)) - ->setOccupied($in->readBool(BlockStateNamesR13::OCCUPIED_BIT)); - }); - $this->mapVanilla("bedrock", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BEDROCK() - ->setBurnsForever($in->readBool(BlockStateNamesR13::INFINIBURN_BIT)); - }); - $this->mapVanilla("beetroot", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::BEETROOTS(), $in)); - $this->mapVanilla("bell", function(BlockStateReader $in) : Block{ - //TODO: ignored toggle_bit (appears to be internally used in MCPE only, useless for us) - return VanillaBlocks::BELL() - ->setFacing($in->readLegacyHorizontalFacing()) - ->setAttachmentType($in->readBellAttachmentType()); - }); - $this->mapVanilla("birch_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::BIRCH_BUTTON(), $in)); - $this->mapVanilla("birch_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::BIRCH_DOOR(), $in)); - $this->mapVanilla("birch_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::BIRCH_FENCE_GATE(), $in)); - $this->mapVanilla("birch_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::BIRCH_PRESSURE_PLATE(), $in)); - $this->mapVanilla("birch_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::BIRCH_STAIRS(), $in)); - $this->mapVanilla("birch_standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BIRCH_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("birch_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::BIRCH_TRAPDOOR(), $in)); - $this->mapVanilla("birch_wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BIRCH_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("black_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("blast_furnace", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BLAST_FURNACE() - ->setFacing($in->readHorizontalFacing()) - ->setLit(false); - }); - $this->mapVanilla("blue_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("blue_ice", fn() => VanillaBlocks::BLUE_ICE()); - $this->mapVanilla("bone_block", function(BlockStateReader $in) : Block{ - //TODO: intentionally ignored "deprecated" blockstate (useless) - return VanillaBlocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("bookshelf", fn() => VanillaBlocks::BOOKSHELF()); - $this->mapVanilla("brewing_stand", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BREWING_STAND() - ->setSlot(BrewingStandSlot::EAST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_A_BIT)) - ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_B_BIT)) - ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNamesR13::BREWING_STAND_SLOT_C_BIT)); - }); - $this->mapVanilla("brick_block", fn() => VanillaBlocks::BRICKS()); - $this->mapVanilla("brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::BRICK_STAIRS(), $in)); - $this->mapVanilla("brown_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("brown_mushroom", fn() => VanillaBlocks::BROWN_MUSHROOM()); - $this->mapVanilla("brown_mushroom_block", fn(BlockStateReader $in) => $this->decodeMushroomBlock(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), $in)); - $this->mapVanilla("cactus", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CACTUS() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); - }); - $this->mapVanilla("cake", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CAKE() - ->setBites($in->readBoundedInt(BlockStateNamesR13::BITE_COUNTER, 0, 6)); - }); - $this->mapVanilla("carpet", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CARPET() - ->setColor($in->readColor()); - }); - $this->mapVanilla("carrots", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::CARROTS(), $in)); - $this->mapVanilla("carved_pumpkin", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CARVED_PUMPKIN() - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("chemical_heat", fn() => VanillaBlocks::CHEMICAL_HEAT()); - $this->mapVanilla("chemistry_table", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::CHEMISTRY_TABLE_TYPE)){ - StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), - StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), - StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), - StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), - default => throw $in->badValueException(BlockStateNamesR13::CHEMISTRY_TABLE_TYPE, $type), - })->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("chest", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CHEST() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("clay", fn() => VanillaBlocks::CLAY()); - $this->mapVanilla("coal_block", fn() => VanillaBlocks::COAL()); - $this->mapVanilla("coal_ore", fn() => VanillaBlocks::COAL_ORE()); - $this->mapVanilla("cobblestone", fn() => VanillaBlocks::COBBLESTONE()); - $this->mapVanilla("cobblestone_wall", fn(BlockStateReader $in) => $this->decodeWall(VanillaBlocks::COBBLESTONE_WALL(), $in)); - $this->mapVanilla("cocoa", function(BlockStateReader $in) : Block{ - return VanillaBlocks::COCOA_POD() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 2)) - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("colored_torch_bp", function(BlockStateReader $in) : Block{ - return $in->readBool(BlockStateNamesR13::COLOR_BIT) ? - VanillaBlocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : - VanillaBlocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); - }); - $this->mapVanilla("colored_torch_rg", function(BlockStateReader $in) : Block{ - return $in->readBool(BlockStateNamesR13::COLOR_BIT) ? - VanillaBlocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : - VanillaBlocks::RED_TORCH()->setFacing($in->readTorchFacing()); - }); - $this->mapVanilla("concrete", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CONCRETE() - ->setColor($in->readColor()); - }); - $this->mapVanilla("concretePowder", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CONCRETE_POWDER() - ->setColor($in->readColor()); - }); - $this->mapVanilla("coral", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CORAL() - ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)); - }); - $this->mapVanilla("coral_block", function(BlockStateReader $in) : Block{ - return VanillaBlocks::CORAL_BLOCK() - ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)); - }); - $this->mapVanilla("coral_fan", fn(BlockStateReader $in) => $this->decodeFloorCoralFan($in)->setDead(false)); - $this->mapVanilla("coral_fan_dead", fn(BlockStateReader $in) => $this->decodeFloorCoralFan($in)->setDead(true)); - $this->mapVanilla("coral_fan_hang", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType($in->readBool(BlockStateNamesR13::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) - ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); - $this->mapVanilla("coral_fan_hang2", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType($in->readBool(BlockStateNamesR13::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE()) - ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); - $this->mapVanilla("coral_fan_hang3", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType(CoralType::HORN()) - ->setDead($in->readBool(BlockStateNamesR13::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); - $this->mapVanilla("crafting_table", fn() => VanillaBlocks::CRAFTING_TABLE()); - $this->mapVanilla("cyan_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("dark_oak_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::DARK_OAK_BUTTON(), $in)); - $this->mapVanilla("dark_oak_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::DARK_OAK_DOOR(), $in)); - $this->mapVanilla("dark_oak_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::DARK_OAK_FENCE_GATE(), $in)); - $this->mapVanilla("dark_oak_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), $in)); - $this->mapVanilla("dark_oak_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DARK_OAK_STAIRS(), $in)); - $this->mapVanilla("dark_oak_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::DARK_OAK_TRAPDOOR(), $in)); - $this->mapVanilla("dark_prismarine_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DARK_PRISMARINE_STAIRS(), $in)); - $this->mapVanilla("darkoak_standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DARK_OAK_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("darkoak_wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DARK_OAK_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("daylight_detector", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DAYLIGHT_SENSOR() - ->setInverted(false) - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); - }); - $this->mapVanilla("daylight_detector_inverted", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DAYLIGHT_SENSOR() - ->setInverted(true) - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); - }); - $this->mapVanilla("deadbush", fn() => VanillaBlocks::DEAD_BUSH()); - $this->mapVanilla("detector_rail", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DETECTOR_RAIL() - ->setActivated($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); - }); - $this->mapVanilla("diamond_block", fn() => VanillaBlocks::DIAMOND()); - $this->mapVanilla("diamond_ore", fn() => VanillaBlocks::DIAMOND_ORE()); - $this->mapVanilla("diorite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::DIORITE_STAIRS(), $in)); - $this->mapVanilla("dirt", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DIRT() - ->setCoarse(match($value = $in->readString(BlockStateNamesR13::DIRT_TYPE)){ - StringValues::DIRT_TYPE_NORMAL => false, - StringValues::DIRT_TYPE_COARSE => true, - default => throw $in->badValueException(BlockStateNamesR13::DIRT_TYPE, $value), - }); - }); - $this->mapVanilla("double_plant", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::DOUBLE_PLANT_TYPE)){ - StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), - StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), - StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), - StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), - StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), - StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), - default => throw $in->badValueException(BlockStateNamesR13::DOUBLE_PLANT_TYPE, $type), - })->setTop($in->readBool(BlockStateNamesR13::UPPER_BLOCK_BIT)); - }); - $this->mapVanilla("double_stone_slab", function(BlockStateReader $in) : Block{ - return $this->mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->mapVanilla("double_stone_slab2", function(BlockStateReader $in) : Block{ - return $this->mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->mapVanilla("double_stone_slab3", function(BlockStateReader $in) : Block{ - return $this->mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->mapVanilla("double_stone_slab4", function(BlockStateReader $in) : Block{ - return $this->mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->mapVanilla("double_wooden_slab", function(BlockStateReader $in) : Block{ - return $this->mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->mapVanilla("dragon_egg", fn() => VanillaBlocks::DRAGON_EGG()); - $this->mapVanilla("dried_kelp_block", fn() => VanillaBlocks::DRIED_KELP()); - $this->mapVanilla("element_0", fn() => VanillaBlocks::ELEMENT_ZERO()); - $this->mapVanilla("element_1", fn() => VanillaBlocks::ELEMENT_HYDROGEN()); - $this->mapVanilla("element_10", fn() => VanillaBlocks::ELEMENT_NEON()); - $this->mapVanilla("element_100", fn() => VanillaBlocks::ELEMENT_FERMIUM()); - $this->mapVanilla("element_101", fn() => VanillaBlocks::ELEMENT_MENDELEVIUM()); - $this->mapVanilla("element_102", fn() => VanillaBlocks::ELEMENT_NOBELIUM()); - $this->mapVanilla("element_103", fn() => VanillaBlocks::ELEMENT_LAWRENCIUM()); - $this->mapVanilla("element_104", fn() => VanillaBlocks::ELEMENT_RUTHERFORDIUM()); - $this->mapVanilla("element_105", fn() => VanillaBlocks::ELEMENT_DUBNIUM()); - $this->mapVanilla("element_106", fn() => VanillaBlocks::ELEMENT_SEABORGIUM()); - $this->mapVanilla("element_107", fn() => VanillaBlocks::ELEMENT_BOHRIUM()); - $this->mapVanilla("element_108", fn() => VanillaBlocks::ELEMENT_HASSIUM()); - $this->mapVanilla("element_109", fn() => VanillaBlocks::ELEMENT_MEITNERIUM()); - $this->mapVanilla("element_11", fn() => VanillaBlocks::ELEMENT_SODIUM()); - $this->mapVanilla("element_110", fn() => VanillaBlocks::ELEMENT_DARMSTADTIUM()); - $this->mapVanilla("element_111", fn() => VanillaBlocks::ELEMENT_ROENTGENIUM()); - $this->mapVanilla("element_112", fn() => VanillaBlocks::ELEMENT_COPERNICIUM()); - $this->mapVanilla("element_113", fn() => VanillaBlocks::ELEMENT_NIHONIUM()); - $this->mapVanilla("element_114", fn() => VanillaBlocks::ELEMENT_FLEROVIUM()); - $this->mapVanilla("element_115", fn() => VanillaBlocks::ELEMENT_MOSCOVIUM()); - $this->mapVanilla("element_116", fn() => VanillaBlocks::ELEMENT_LIVERMORIUM()); - $this->mapVanilla("element_117", fn() => VanillaBlocks::ELEMENT_TENNESSINE()); - $this->mapVanilla("element_118", fn() => VanillaBlocks::ELEMENT_OGANESSON()); - $this->mapVanilla("element_12", fn() => VanillaBlocks::ELEMENT_MAGNESIUM()); - $this->mapVanilla("element_13", fn() => VanillaBlocks::ELEMENT_ALUMINUM()); - $this->mapVanilla("element_14", fn() => VanillaBlocks::ELEMENT_SILICON()); - $this->mapVanilla("element_15", fn() => VanillaBlocks::ELEMENT_PHOSPHORUS()); - $this->mapVanilla("element_16", fn() => VanillaBlocks::ELEMENT_SULFUR()); - $this->mapVanilla("element_17", fn() => VanillaBlocks::ELEMENT_CHLORINE()); - $this->mapVanilla("element_18", fn() => VanillaBlocks::ELEMENT_ARGON()); - $this->mapVanilla("element_19", fn() => VanillaBlocks::ELEMENT_POTASSIUM()); - $this->mapVanilla("element_2", fn() => VanillaBlocks::ELEMENT_HELIUM()); - $this->mapVanilla("element_20", fn() => VanillaBlocks::ELEMENT_CALCIUM()); - $this->mapVanilla("element_21", fn() => VanillaBlocks::ELEMENT_SCANDIUM()); - $this->mapVanilla("element_22", fn() => VanillaBlocks::ELEMENT_TITANIUM()); - $this->mapVanilla("element_23", fn() => VanillaBlocks::ELEMENT_VANADIUM()); - $this->mapVanilla("element_24", fn() => VanillaBlocks::ELEMENT_CHROMIUM()); - $this->mapVanilla("element_25", fn() => VanillaBlocks::ELEMENT_MANGANESE()); - $this->mapVanilla("element_26", fn() => VanillaBlocks::ELEMENT_IRON()); - $this->mapVanilla("element_27", fn() => VanillaBlocks::ELEMENT_COBALT()); - $this->mapVanilla("element_28", fn() => VanillaBlocks::ELEMENT_NICKEL()); - $this->mapVanilla("element_29", fn() => VanillaBlocks::ELEMENT_COPPER()); - $this->mapVanilla("element_3", fn() => VanillaBlocks::ELEMENT_LITHIUM()); - $this->mapVanilla("element_30", fn() => VanillaBlocks::ELEMENT_ZINC()); - $this->mapVanilla("element_31", fn() => VanillaBlocks::ELEMENT_GALLIUM()); - $this->mapVanilla("element_32", fn() => VanillaBlocks::ELEMENT_GERMANIUM()); - $this->mapVanilla("element_33", fn() => VanillaBlocks::ELEMENT_ARSENIC()); - $this->mapVanilla("element_34", fn() => VanillaBlocks::ELEMENT_SELENIUM()); - $this->mapVanilla("element_35", fn() => VanillaBlocks::ELEMENT_BROMINE()); - $this->mapVanilla("element_36", fn() => VanillaBlocks::ELEMENT_KRYPTON()); - $this->mapVanilla("element_37", fn() => VanillaBlocks::ELEMENT_RUBIDIUM()); - $this->mapVanilla("element_38", fn() => VanillaBlocks::ELEMENT_STRONTIUM()); - $this->mapVanilla("element_39", fn() => VanillaBlocks::ELEMENT_YTTRIUM()); - $this->mapVanilla("element_4", fn() => VanillaBlocks::ELEMENT_BERYLLIUM()); - $this->mapVanilla("element_40", fn() => VanillaBlocks::ELEMENT_ZIRCONIUM()); - $this->mapVanilla("element_41", fn() => VanillaBlocks::ELEMENT_NIOBIUM()); - $this->mapVanilla("element_42", fn() => VanillaBlocks::ELEMENT_MOLYBDENUM()); - $this->mapVanilla("element_43", fn() => VanillaBlocks::ELEMENT_TECHNETIUM()); - $this->mapVanilla("element_44", fn() => VanillaBlocks::ELEMENT_RUTHENIUM()); - $this->mapVanilla("element_45", fn() => VanillaBlocks::ELEMENT_RHODIUM()); - $this->mapVanilla("element_46", fn() => VanillaBlocks::ELEMENT_PALLADIUM()); - $this->mapVanilla("element_47", fn() => VanillaBlocks::ELEMENT_SILVER()); - $this->mapVanilla("element_48", fn() => VanillaBlocks::ELEMENT_CADMIUM()); - $this->mapVanilla("element_49", fn() => VanillaBlocks::ELEMENT_INDIUM()); - $this->mapVanilla("element_5", fn() => VanillaBlocks::ELEMENT_BORON()); - $this->mapVanilla("element_50", fn() => VanillaBlocks::ELEMENT_TIN()); - $this->mapVanilla("element_51", fn() => VanillaBlocks::ELEMENT_ANTIMONY()); - $this->mapVanilla("element_52", fn() => VanillaBlocks::ELEMENT_TELLURIUM()); - $this->mapVanilla("element_53", fn() => VanillaBlocks::ELEMENT_IODINE()); - $this->mapVanilla("element_54", fn() => VanillaBlocks::ELEMENT_XENON()); - $this->mapVanilla("element_55", fn() => VanillaBlocks::ELEMENT_CESIUM()); - $this->mapVanilla("element_56", fn() => VanillaBlocks::ELEMENT_BARIUM()); - $this->mapVanilla("element_57", fn() => VanillaBlocks::ELEMENT_LANTHANUM()); - $this->mapVanilla("element_58", fn() => VanillaBlocks::ELEMENT_CERIUM()); - $this->mapVanilla("element_59", fn() => VanillaBlocks::ELEMENT_PRASEODYMIUM()); - $this->mapVanilla("element_6", fn() => VanillaBlocks::ELEMENT_CARBON()); - $this->mapVanilla("element_60", fn() => VanillaBlocks::ELEMENT_NEODYMIUM()); - $this->mapVanilla("element_61", fn() => VanillaBlocks::ELEMENT_PROMETHIUM()); - $this->mapVanilla("element_62", fn() => VanillaBlocks::ELEMENT_SAMARIUM()); - $this->mapVanilla("element_63", fn() => VanillaBlocks::ELEMENT_EUROPIUM()); - $this->mapVanilla("element_64", fn() => VanillaBlocks::ELEMENT_GADOLINIUM()); - $this->mapVanilla("element_65", fn() => VanillaBlocks::ELEMENT_TERBIUM()); - $this->mapVanilla("element_66", fn() => VanillaBlocks::ELEMENT_DYSPROSIUM()); - $this->mapVanilla("element_67", fn() => VanillaBlocks::ELEMENT_HOLMIUM()); - $this->mapVanilla("element_68", fn() => VanillaBlocks::ELEMENT_ERBIUM()); - $this->mapVanilla("element_69", fn() => VanillaBlocks::ELEMENT_THULIUM()); - $this->mapVanilla("element_7", fn() => VanillaBlocks::ELEMENT_NITROGEN()); - $this->mapVanilla("element_70", fn() => VanillaBlocks::ELEMENT_YTTERBIUM()); - $this->mapVanilla("element_71", fn() => VanillaBlocks::ELEMENT_LUTETIUM()); - $this->mapVanilla("element_72", fn() => VanillaBlocks::ELEMENT_HAFNIUM()); - $this->mapVanilla("element_73", fn() => VanillaBlocks::ELEMENT_TANTALUM()); - $this->mapVanilla("element_74", fn() => VanillaBlocks::ELEMENT_TUNGSTEN()); - $this->mapVanilla("element_75", fn() => VanillaBlocks::ELEMENT_RHENIUM()); - $this->mapVanilla("element_76", fn() => VanillaBlocks::ELEMENT_OSMIUM()); - $this->mapVanilla("element_77", fn() => VanillaBlocks::ELEMENT_IRIDIUM()); - $this->mapVanilla("element_78", fn() => VanillaBlocks::ELEMENT_PLATINUM()); - $this->mapVanilla("element_79", fn() => VanillaBlocks::ELEMENT_GOLD()); - $this->mapVanilla("element_8", fn() => VanillaBlocks::ELEMENT_OXYGEN()); - $this->mapVanilla("element_80", fn() => VanillaBlocks::ELEMENT_MERCURY()); - $this->mapVanilla("element_81", fn() => VanillaBlocks::ELEMENT_THALLIUM()); - $this->mapVanilla("element_82", fn() => VanillaBlocks::ELEMENT_LEAD()); - $this->mapVanilla("element_83", fn() => VanillaBlocks::ELEMENT_BISMUTH()); - $this->mapVanilla("element_84", fn() => VanillaBlocks::ELEMENT_POLONIUM()); - $this->mapVanilla("element_85", fn() => VanillaBlocks::ELEMENT_ASTATINE()); - $this->mapVanilla("element_86", fn() => VanillaBlocks::ELEMENT_RADON()); - $this->mapVanilla("element_87", fn() => VanillaBlocks::ELEMENT_FRANCIUM()); - $this->mapVanilla("element_88", fn() => VanillaBlocks::ELEMENT_RADIUM()); - $this->mapVanilla("element_89", fn() => VanillaBlocks::ELEMENT_ACTINIUM()); - $this->mapVanilla("element_9", fn() => VanillaBlocks::ELEMENT_FLUORINE()); - $this->mapVanilla("element_90", fn() => VanillaBlocks::ELEMENT_THORIUM()); - $this->mapVanilla("element_91", fn() => VanillaBlocks::ELEMENT_PROTACTINIUM()); - $this->mapVanilla("element_92", fn() => VanillaBlocks::ELEMENT_URANIUM()); - $this->mapVanilla("element_93", fn() => VanillaBlocks::ELEMENT_NEPTUNIUM()); - $this->mapVanilla("element_94", fn() => VanillaBlocks::ELEMENT_PLUTONIUM()); - $this->mapVanilla("element_95", fn() => VanillaBlocks::ELEMENT_AMERICIUM()); - $this->mapVanilla("element_96", fn() => VanillaBlocks::ELEMENT_CURIUM()); - $this->mapVanilla("element_97", fn() => VanillaBlocks::ELEMENT_BERKELIUM()); - $this->mapVanilla("element_98", fn() => VanillaBlocks::ELEMENT_CALIFORNIUM()); - $this->mapVanilla("element_99", fn() => VanillaBlocks::ELEMENT_EINSTEINIUM()); - $this->mapVanilla("emerald_block", fn() => VanillaBlocks::EMERALD()); - $this->mapVanilla("emerald_ore", fn() => VanillaBlocks::EMERALD_ORE()); - $this->mapVanilla("enchanting_table", fn() => VanillaBlocks::ENCHANTING_TABLE()); - $this->mapVanilla("end_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::END_STONE_BRICK_STAIRS(), $in)); - $this->mapVanilla("end_bricks", fn() => VanillaBlocks::END_STONE_BRICKS()); - $this->mapVanilla("end_portal_frame", function(BlockStateReader $in) : Block{ - return VanillaBlocks::END_PORTAL_FRAME() - ->setEye($in->readBool(BlockStateNamesR13::END_PORTAL_EYE_BIT)) - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("end_rod", function(BlockStateReader $in) : Block{ - return VanillaBlocks::END_ROD() - ->setFacing($in->readFacingDirection()); - }); - $this->mapVanilla("end_stone", fn() => VanillaBlocks::END_STONE()); - $this->mapVanilla("ender_chest", function(BlockStateReader $in) : Block{ - return VanillaBlocks::ENDER_CHEST() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("farmland", function(BlockStateReader $in) : Block{ - return VanillaBlocks::FARMLAND() - ->setWetness($in->readBoundedInt(BlockStateNamesR13::MOISTURIZED_AMOUNT, 0, 7)); - }); - $this->mapVanilla("fence", function(BlockStateReader $in) : Block{ - return match($woodName = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), - default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodName), - }; - }); - $this->mapVanilla("fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::OAK_FENCE_GATE(), $in)); - $this->mapVanilla("fire", function(BlockStateReader $in) : Block{ - return VanillaBlocks::FIRE() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); - }); - $this->mapVanilla("fletching_table", fn() => VanillaBlocks::FLETCHING_TABLE()); - $this->mapVanilla("flower_pot", function() : Block{ - //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) - return VanillaBlocks::FLOWER_POT(); - }); - $this->mapVanilla("flowing_lava", fn(BlockStateReader $in) => $this->decodeFlowingLiquid(VanillaBlocks::LAVA(), $in)); - $this->mapVanilla("flowing_water", fn(BlockStateReader $in) => $this->decodeFlowingLiquid(VanillaBlocks::WATER(), $in)); - $this->mapVanilla("frame", function(BlockStateReader $in) : Block{ - //TODO: in R13 this can be any side, not just horizontal - return VanillaBlocks::ITEM_FRAME() - ->setFacing($in->readHorizontalFacing()) - ->setHasMap($in->readBool(BlockStateNamesR13::ITEM_FRAME_MAP_BIT)); - }); - $this->mapVanilla("frosted_ice", function(BlockStateReader $in) : Block{ - return VanillaBlocks::FROSTED_ICE() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 3)); - }); - $this->mapVanilla("furnace", function(BlockStateReader $in) : Block{ - return VanillaBlocks::FURNACE() - ->setFacing($in->readHorizontalFacing()) - ->setLit(false); - }); - $this->mapVanilla("glass", fn() => VanillaBlocks::GLASS()); - $this->mapVanilla("glass_pane", fn() => VanillaBlocks::GLASS_PANE()); - $this->mapVanilla("glowingobsidian", fn() => VanillaBlocks::GLOWING_OBSIDIAN()); - $this->mapVanilla("glowstone", fn() => VanillaBlocks::GLOWSTONE()); - $this->mapVanilla("gold_block", fn() => VanillaBlocks::GOLD()); - $this->mapVanilla("gold_ore", fn() => VanillaBlocks::GOLD_ORE()); - $this->mapVanilla("golden_rail", function(BlockStateReader $in) : Block{ - return VanillaBlocks::POWERED_RAIL() - ->setPowered($in->readBool(BlockStateNamesR13::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 5)); - }); - $this->mapVanilla("granite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::GRANITE_STAIRS(), $in)); - $this->mapVanilla("grass", fn() => VanillaBlocks::GRASS()); - $this->mapVanilla("grass_path", fn() => VanillaBlocks::GRASS_PATH()); - $this->mapVanilla("gravel", fn() => VanillaBlocks::GRAVEL()); - $this->mapVanilla("gray_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("green_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("hard_glass", fn() => VanillaBlocks::HARDENED_GLASS()); - $this->mapVanilla("hard_glass_pane", fn() => VanillaBlocks::HARDENED_GLASS_PANE()); - $this->mapVanilla("hard_stained_glass", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_HARDENED_GLASS() - ->setColor($in->readColor()); - }); - $this->mapVanilla("hard_stained_glass_pane", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_HARDENED_GLASS_PANE() - ->setColor($in->readColor()); - }); - $this->mapVanilla("hardened_clay", fn() => VanillaBlocks::HARDENED_CLAY()); - $this->mapVanilla("hay_block", function(BlockStateReader $in) : Block{ - //TODO: intentionally ignored "deprecated" blockstate (useless) - return VanillaBlocks::HAY_BALE()->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("heavy_weighted_pressure_plate", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); - }); - $this->mapVanilla("hopper", function(BlockStateReader $in) : Block{ - return VanillaBlocks::HOPPER() - ->setFacing($in->readFacingWithoutUp()) - ->setPowered($in->readBool(BlockStateNamesR13::TOGGLE_BIT)); - }); - $this->mapVanilla("ice", fn() => VanillaBlocks::ICE()); - $this->mapVanilla("info_update", fn() => VanillaBlocks::INFO_UPDATE()); - $this->mapVanilla("info_update2", fn() => VanillaBlocks::INFO_UPDATE2()); - $this->mapVanilla("invisibleBedrock", fn() => VanillaBlocks::INVISIBLE_BEDROCK()); - $this->mapVanilla("iron_bars", fn() => VanillaBlocks::IRON_BARS()); - $this->mapVanilla("iron_block", fn() => VanillaBlocks::IRON()); - $this->mapVanilla("iron_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::IRON_DOOR(), $in)); - $this->mapVanilla("iron_ore", fn() => VanillaBlocks::IRON_ORE()); - $this->mapVanilla("iron_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::IRON_TRAPDOOR(), $in)); - $this->mapVanilla("jukebox", fn() => VanillaBlocks::JUKEBOX()); - $this->mapVanilla("jungle_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::JUNGLE_BUTTON(), $in)); - $this->mapVanilla("jungle_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::JUNGLE_DOOR(), $in)); - $this->mapVanilla("jungle_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::JUNGLE_FENCE_GATE(), $in)); - $this->mapVanilla("jungle_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), $in)); - $this->mapVanilla("jungle_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::JUNGLE_STAIRS(), $in)); - $this->mapVanilla("jungle_standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::JUNGLE_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("jungle_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::JUNGLE_TRAPDOOR(), $in)); - $this->mapVanilla("jungle_wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::JUNGLE_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("ladder", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LADDER() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("lantern", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LANTERN() - ->setHanging($in->readBool(BlockStateNamesR13::HANGING)); - }); - $this->mapVanilla("lapis_block", fn() => VanillaBlocks::LAPIS_LAZULI()); - $this->mapVanilla("lapis_ore", fn() => VanillaBlocks::LAPIS_LAZULI_ORE()); - $this->mapVanilla("lava", fn(BlockStateReader $in) => $this->decodeStillLiquid(VanillaBlocks::LAVA(), $in)); - $this->mapVanilla("leaves", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::OLD_LEAF_TYPE)){ - StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), - StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), - StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), - StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), - default => throw $in->badValueException(BlockStateNamesR13::OLD_LEAF_TYPE, $type), - }) - ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); - }); - $this->mapVanilla("leaves2", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::NEW_LEAF_TYPE)){ - StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), - StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), - default => throw $in->badValueException(BlockStateNamesR13::NEW_LEAF_TYPE, $type), - }) - ->setNoDecay($in->readBool(BlockStateNamesR13::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(BlockStateNamesR13::UPDATE_BIT)); - }); - $this->mapVanilla("lectern", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LECTERN() - ->setFacing($in->readLegacyHorizontalFacing()) - ->setProducingSignal($in->readBool(BlockStateNamesR13::POWERED_BIT)); - }); - $this->mapVanilla("lever", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LEVER() - ->setActivated($in->readBool(BlockStateNamesR13::OPEN_BIT)) - ->setFacing(match($value = $in->readString(BlockStateNamesR13::LEVER_DIRECTION)){ - StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), - StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), - StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), - StringValues::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), - StringValues::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), - StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), - StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), - StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), - default => throw $in->badValueException(BlockStateNamesR13::LEVER_DIRECTION, $value), - }); - }); - $this->mapVanilla("light_blue_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("light_weighted_pressure_plate", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); - }); - $this->mapVanilla("lime_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("lit_blast_furnace", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BLAST_FURNACE() - ->setFacing($in->readHorizontalFacing()) - ->setLit(true); - }); - $this->mapVanilla("lit_furnace", function(BlockStateReader $in) : Block{ - return VanillaBlocks::FURNACE() - ->setFacing($in->readHorizontalFacing()) - ->setLit(true); - }); - $this->mapVanilla("lit_pumpkin", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LIT_PUMPKIN() - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("lit_redstone_lamp", function() : Block{ - return VanillaBlocks::REDSTONE_LAMP() - ->setPowered(true); - }); - $this->mapVanilla("lit_redstone_ore", function() : Block{ - return VanillaBlocks::REDSTONE_ORE() - ->setLit(true); - }); - $this->mapVanilla("lit_smoker", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SMOKER() - ->setFacing($in->readHorizontalFacing()) - ->setLit(true); - }); - $this->mapVanilla("log", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), - default => throw $in->badValueException(BlockStateNamesR13::OLD_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("log2", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), - default => throw $in->badValueException(BlockStateNamesR13::NEW_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("loom", function(BlockStateReader $in) : Block{ - return VanillaBlocks::LOOM() - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->mapVanilla("magenta_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("magma", fn() => VanillaBlocks::MAGMA()); - $this->mapVanilla("melon_block", fn() => VanillaBlocks::MELON()); - $this->mapVanilla("melon_stem", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::MELON_STEM(), $in)); - $this->mapVanilla("mob_spawner", fn() => VanillaBlocks::MONSTER_SPAWNER()); - $this->mapVanilla("monster_egg", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::MONSTER_EGG_STONE_TYPE)){ - StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), - StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), - default => throw $in->badValueException(BlockStateNamesR13::MONSTER_EGG_STONE_TYPE, $type), - }; - }); - $this->mapVanilla("mossy_cobblestone", fn() => VanillaBlocks::MOSSY_COBBLESTONE()); - $this->mapVanilla("mossy_cobblestone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), $in)); - $this->mapVanilla("mossy_stone_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), $in)); - $this->mapVanilla("mycelium", fn() => VanillaBlocks::MYCELIUM()); - $this->mapVanilla("nether_brick", fn() => VanillaBlocks::NETHER_BRICKS()); - $this->mapVanilla("nether_brick_fence", fn() => VanillaBlocks::NETHER_BRICK_FENCE()); - $this->mapVanilla("nether_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::NETHER_BRICK_STAIRS(), $in)); - $this->mapVanilla("nether_wart", function(BlockStateReader $in) : Block{ - return VanillaBlocks::NETHER_WART() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 3)); - }); - $this->mapVanilla("nether_wart_block", fn() => VanillaBlocks::NETHER_WART_BLOCK()); - $this->mapVanilla("netherrack", fn() => VanillaBlocks::NETHERRACK()); - $this->mapVanilla("netherreactor", fn() => VanillaBlocks::NETHER_REACTOR_CORE()); - $this->mapVanilla("normal_stone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::STONE_STAIRS(), $in)); - $this->mapVanilla("noteblock", fn() => VanillaBlocks::NOTE_BLOCK()); - $this->mapVanilla("oak_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::OAK_STAIRS(), $in)); - $this->mapVanilla("obsidian", fn() => VanillaBlocks::OBSIDIAN()); - $this->mapVanilla("orange_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("packed_ice", fn() => VanillaBlocks::PACKED_ICE()); - $this->mapVanilla("pink_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("planks", function(BlockStateReader $in) : Block{ - return match($woodName = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), - default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodName), - }; - }); - $this->mapVanilla("podzol", fn() => VanillaBlocks::PODZOL()); - $this->mapVanilla("polished_andesite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), $in)); - $this->mapVanilla("polished_diorite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_DIORITE_STAIRS(), $in)); - $this->mapVanilla("polished_granite_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::POLISHED_GRANITE_STAIRS(), $in)); - $this->mapVanilla("portal", function(BlockStateReader $in) : Block{ - return VanillaBlocks::NETHER_PORTAL() - ->setAxis(match($value = $in->readString(BlockStateNamesR13::PORTAL_AXIS)){ - StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, - StringValues::PORTAL_AXIS_X => Axis::X, - StringValues::PORTAL_AXIS_Z => Axis::Z, - default => throw $in->badValueException(BlockStateNamesR13::PORTAL_AXIS, $value), - }); - }); - $this->mapVanilla("potatoes", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::POTATOES(), $in)); - $this->mapVanilla("powered_comparator", fn(BlockStateReader $in) => $this->decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); - $this->mapVanilla("powered_repeater", fn(BlockStateReader $in) => $this->decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) - ->setPowered(true)); - $this->mapVanilla("prismarine", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::PRISMARINE_BLOCK_TYPE)){ - StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), - StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), - StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), - default => throw $in->badValueException(BlockStateNamesR13::PRISMARINE_BLOCK_TYPE, $type), - }; - }); - $this->mapVanilla("prismarine_bricks_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), $in)); - $this->mapVanilla("prismarine_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PRISMARINE_STAIRS(), $in)); - $this->mapVanilla("pumpkin", function() : Block{ - //TODO: intentionally ignored "direction" property (obsolete) - return VanillaBlocks::PUMPKIN(); - }); - $this->mapVanilla("pumpkin_stem", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::PUMPKIN_STEM(), $in)); - $this->mapVanilla("purple_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("purpur_block", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), - default => throw $in->badValueException(BlockStateNamesR13::CHISEL_TYPE, $type), - }; - }); - $this->mapVanilla("purpur_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); - $this->mapVanilla("quartz_block", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) - default => throw $in->badValueException(BlockStateNamesR13::CHISEL_TYPE, $type), - }; - }); - $this->mapVanilla("quartz_ore", fn() => VanillaBlocks::NETHER_QUARTZ_ORE()); - $this->mapVanilla("quartz_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::QUARTZ_STAIRS(), $in)); - $this->mapVanilla("rail", function(BlockStateReader $in) : Block{ - return VanillaBlocks::RAIL() - ->setShape($in->readBoundedInt(BlockStateNamesR13::RAIL_DIRECTION, 0, 9)); - }); - $this->mapVanilla("red_flower", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::FLOWER_TYPE)){ - StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), - StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), - StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? - StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), - StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), - StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), - StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), - StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), - StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), - StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), - StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), - default => throw $in->badValueException(BlockStateNamesR13::FLOWER_TYPE, $type), - }; - }); - $this->mapVanilla("red_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::RED_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("red_mushroom", fn() => VanillaBlocks::RED_MUSHROOM()); - $this->mapVanilla("red_mushroom_block", fn(BlockStateReader $in) => $this->decodeMushroomBlock(VanillaBlocks::RED_MUSHROOM_BLOCK(), $in)); - $this->mapVanilla("red_nether_brick", fn() => VanillaBlocks::RED_NETHER_BRICKS()); - $this->mapVanilla("red_nether_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); - $this->mapVanilla("red_sandstone", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), - default => throw $in->badValueException(BlockStateNamesR13::SAND_STONE_TYPE, $type), - }; - }); - $this->mapVanilla("red_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::RED_SANDSTONE_STAIRS(), $in)); - $this->mapVanilla("redstone_block", fn() => VanillaBlocks::REDSTONE()); - $this->mapVanilla("redstone_lamp", function() : Block{ - return VanillaBlocks::REDSTONE_LAMP() - ->setPowered(false); - }); - $this->mapVanilla("redstone_ore", function() : Block{ - return VanillaBlocks::REDSTONE_ORE() - ->setLit(false); - }); - $this->mapVanilla("redstone_torch", function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_TORCH() - ->setFacing($in->readTorchFacing()) - ->setLit(true); - }); - $this->mapVanilla("redstone_wire", function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_WIRE() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNamesR13::REDSTONE_SIGNAL, 0, 15)); - }); - $this->mapVanilla("reeds", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SUGARCANE() - ->setAge($in->readBoundedInt(BlockStateNamesR13::AGE, 0, 15)); - }); - $this->mapVanilla("reserved6", fn() => VanillaBlocks::RESERVED6()); - $this->mapVanilla("sand", function(BlockStateReader $in) : Block{ - return match($value = $in->readString(BlockStateNamesR13::SAND_TYPE)){ - StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), - StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), - default => throw $in->badValueException(BlockStateNamesR13::SAND_TYPE, $value), - }; - }); - $this->mapVanilla("sandstone", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), - default => throw $in->badValueException(BlockStateNamesR13::SAND_STONE_TYPE, $type), - }; - }); - $this->mapVanilla("sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); - $this->mapVanilla("sapling", function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNamesR13::SAPLING_TYPE)){ - StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), - StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), - StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), - StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), - StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), - StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), - default => throw $in->badValueException(BlockStateNamesR13::SAPLING_TYPE, $type), - }) - ->setReady($in->readBool(BlockStateNamesR13::AGE_BIT)); - }); - $this->mapVanilla("seaLantern", fn() => VanillaBlocks::SEA_LANTERN()); - $this->mapVanilla("sea_pickle", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SEA_PICKLE() - ->setCount($in->readBoundedInt(BlockStateNamesR13::CLUSTER_COUNT, 0, 3) + 1) - ->setUnderwater(!$in->readBool(BlockStateNamesR13::DEAD_BIT)); - }); - $this->mapVanilla("shulker_box", function(BlockStateReader $in) : Block{ - return VanillaBlocks::DYED_SHULKER_BOX() - ->setColor($in->readColor()); - }); - $this->mapVanilla("silver_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("skull", function(BlockStateReader $in) : Block{ - return VanillaBlocks::MOB_HEAD() - ->setFacing($in->readFacingWithoutDown()) - ->setNoDrops($in->readBool(BlockStateNamesR13::NO_DROP_BIT)); - }); - $this->mapVanilla("slime", fn() => VanillaBlocks::SLIME()); - $this->mapVanilla("smoker", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SMOKER() - ->setFacing($in->readHorizontalFacing()) - ->setLit(false); - }); - $this->mapVanilla("smooth_quartz_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), $in)); - $this->mapVanilla("smooth_red_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); - $this->mapVanilla("smooth_sandstone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), $in)); - $this->mapVanilla("smooth_stone", fn() => VanillaBlocks::SMOOTH_STONE()); - $this->mapVanilla("snow", fn() => VanillaBlocks::SNOW()); - $this->mapVanilla("snow_layer", function(BlockStateReader $in) : Block{ - //TODO: intentionally ignored covered_bit property (appears useless and we don't track it) - return VanillaBlocks::SNOW_LAYER()->setLayers($in->readBoundedInt(BlockStateNamesR13::HEIGHT, 0, 7) + 1); - }); - $this->mapVanilla("soul_sand", fn() => VanillaBlocks::SOUL_SAND()); - $this->mapVanilla("sponge", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNamesR13::SPONGE_TYPE)){ - StringValues::SPONGE_TYPE_DRY => false, - StringValues::SPONGE_TYPE_WET => true, - default => throw $in->badValueException(BlockStateNamesR13::SPONGE_TYPE, $type), - }); - }); - $this->mapVanilla("spruce_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::SPRUCE_BUTTON(), $in)); - $this->mapVanilla("spruce_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::SPRUCE_DOOR(), $in)); - $this->mapVanilla("spruce_fence_gate", fn(BlockStateReader $in) => $this->decodeFenceGate(VanillaBlocks::SPRUCE_FENCE_GATE(), $in)); - $this->mapVanilla("spruce_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), $in)); - $this->mapVanilla("spruce_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::SPRUCE_STAIRS(), $in)); - $this->mapVanilla("spruce_standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPRUCE_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("spruce_trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::SPRUCE_TRAPDOOR(), $in)); - $this->mapVanilla("spruce_wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPRUCE_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("stained_glass", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_GLASS() - ->setColor($in->readColor()); - }); - $this->mapVanilla("stained_glass_pane", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_GLASS_PANE() - ->setColor($in->readColor()); - }); - $this->mapVanilla("stained_hardened_clay", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_CLAY() - ->setColor($in->readColor()); - }); - $this->mapVanilla("standing_banner", function(BlockStateReader $in) : Block{ - return VanillaBlocks::BANNER() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("standing_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::OAK_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNamesR13::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->mapVanilla("stone", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::STONE_TYPE)){ - StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), - StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), - StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), - StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), - StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), - StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), - StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_TYPE, $type), - }; - }); - $this->mapVanilla("stone_brick_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::STONE_BRICK_STAIRS(), $in)); - $this->mapVanilla("stone_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::STONE_BUTTON(), $in)); - $this->mapVanilla("stone_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::STONE_PRESSURE_PLATE(), $in)); - $this->mapVanilla("stone_slab", fn(BlockStateReader $in) => $this->mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); - $this->mapVanilla("stone_slab2", fn(BlockStateReader $in) => $this->mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); - $this->mapVanilla("stone_slab3", fn(BlockStateReader $in) => $this->mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); - $this->mapVanilla("stone_slab4", fn(BlockStateReader $in) => $this->mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); - $this->mapVanilla("stone_stairs", fn(BlockStateReader $in) => $this->decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); - $this->mapVanilla("stonebrick", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::STONE_BRICK_TYPE)){ - StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla - StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), - default => throw $in->badValueException(BlockStateNamesR13::STONE_BRICK_TYPE, $type), - }; - }); - $this->mapVanilla("stonecutter", fn() => VanillaBlocks::LEGACY_STONECUTTER()); - $this->mapVanilla("stripped_acacia_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_ACACIA_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("stripped_birch_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_BIRCH_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("stripped_dark_oak_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_DARK_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("stripped_jungle_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_JUNGLE_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("stripped_oak_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("stripped_spruce_log", function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_SPRUCE_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->mapVanilla("sweet_berry_bush", function(BlockStateReader $in) : Block{ - //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 - $growth = $in->readBoundedInt(BlockStateNamesR13::GROWTH, 0, 7); - return VanillaBlocks::SWEET_BERRY_BUSH() - ->setAge(min($growth, SweetBerryBush::STAGE_MATURE)); - }); - $this->mapVanilla("tallgrass", function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNamesR13::TALL_GRASS_TYPE)){ - StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), - StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), - default => throw $in->badValueException(BlockStateNamesR13::TALL_GRASS_TYPE, $type), - }; - }); - $this->mapVanilla("tnt", function(BlockStateReader $in) : Block{ - return VanillaBlocks::TNT() - ->setUnstable($in->readBool(BlockStateNamesR13::EXPLODE_BIT)) - ->setWorksUnderwater($in->readBool(BlockStateNamesR13::ALLOW_UNDERWATER_BIT)); - }); - $this->mapVanilla("torch", function(BlockStateReader $in) : Block{ - return VanillaBlocks::TORCH() - ->setFacing($in->readTorchFacing()); - }); - $this->mapVanilla("trapdoor", fn(BlockStateReader $in) => $this->decodeTrapdoor(VanillaBlocks::OAK_TRAPDOOR(), $in)); - $this->mapVanilla("trapped_chest", function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRAPPED_CHEST() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("tripWire", function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRIPWIRE() - ->setConnected($in->readBool(BlockStateNamesR13::ATTACHED_BIT)) - ->setDisarmed($in->readBool(BlockStateNamesR13::DISARMED_BIT)) - ->setSuspended($in->readBool(BlockStateNamesR13::SUSPENDED_BIT)) - ->setTriggered($in->readBool(BlockStateNamesR13::POWERED_BIT)); - }); - $this->mapVanilla("tripwire_hook", function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRIPWIRE_HOOK() - ->setConnected($in->readBool(BlockStateNamesR13::ATTACHED_BIT)) - ->setFacing($in->readLegacyHorizontalFacing()) - ->setPowered($in->readBool(BlockStateNamesR13::POWERED_BIT)); - }); - $this->mapVanilla("underwater_torch", function(BlockStateReader $in) : Block{ - return VanillaBlocks::UNDERWATER_TORCH() - ->setFacing($in->readTorchFacing()); - }); - $this->mapVanilla("undyed_shulker_box", fn() => VanillaBlocks::SHULKER_BOX()); - $this->mapVanilla("unlit_redstone_torch", function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_TORCH() - ->setFacing($in->readTorchFacing()) - ->setLit(false); - }); - $this->mapVanilla("unpowered_comparator", fn(BlockStateReader $in) => $this->decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); - $this->mapVanilla("unpowered_repeater", fn(BlockStateReader $in) => $this->decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) - ->setPowered(false)); - $this->mapVanilla("vine", function(BlockStateReader $in) : Block{ - $vineDirectionFlags = $in->readBoundedInt(BlockStateNamesR13::VINE_DIRECTION_BITS, 0, 15); - return VanillaBlocks::VINES() - ->setFace(Facing::NORTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_NORTH) !== 0) - ->setFace(Facing::SOUTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_SOUTH) !== 0) - ->setFace(Facing::WEST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_WEST) !== 0) - ->setFace(Facing::EAST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_EAST) !== 0); - }); - $this->mapVanilla("wall_banner", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_BANNER() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("wall_sign", function(BlockStateReader $in) : Block{ - return VanillaBlocks::OAK_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->mapVanilla("water", fn(BlockStateReader $in) => $this->decodeStillLiquid(VanillaBlocks::WATER(), $in)); - $this->mapVanilla("waterlily", fn() => VanillaBlocks::LILY_PAD()); - $this->mapVanilla("web", fn() => VanillaBlocks::COBWEB()); - $this->mapVanilla("wheat", fn(BlockStateReader $in) => $this->decodeCrops(VanillaBlocks::WHEAT(), $in)); - $this->mapVanilla("white_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), $in)); - $this->mapVanilla("wood", function(BlockStateReader $in) : Block{ - //TODO: our impl doesn't support axis yet - $stripped = $in->readBool(BlockStateNamesR13::STRIPPED_BIT); - return match($woodType = $in->readString(BlockStateNamesR13::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), - default => throw $in->badValueException(BlockStateNamesR13::WOOD_TYPE, $woodType), - }; - }); - $this->mapVanilla("wooden_button", fn(BlockStateReader $in) => $this->decodeButton(VanillaBlocks::OAK_BUTTON(), $in)); - $this->mapVanilla("wooden_door", fn(BlockStateReader $in) => $this->decodeDoor(VanillaBlocks::OAK_DOOR(), $in)); - $this->mapVanilla("wooden_pressure_plate", fn(BlockStateReader $in) => $this->decodeSimplePressurePlate(VanillaBlocks::OAK_PRESSURE_PLATE(), $in)); - $this->mapVanilla("wooden_slab", fn(BlockStateReader $in) => $this->mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); - $this->mapVanilla("wool", function(BlockStateReader $in) : Block{ - return VanillaBlocks::WOOL() - ->setColor($in->readColor()); - }); - $this->mapVanilla("yellow_flower", fn() => VanillaBlocks::DANDELION()); - $this->mapVanilla("yellow_glazed_terracotta", fn(BlockStateReader $in) => $this->decodeGlazedTerracotta(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), $in)); - //$this->mapVanilla("bubble_column", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * drag_down (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("camera", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("campfire", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * direction (IntTag) = 0, 1, 2, 3 - * extinguished (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("cartography_table", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("cauldron", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * cauldron_liquid (StringTag) = lava, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->mapVanilla("chain_command_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("chorus_flower", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * age (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("chorus_plant", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("command_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("composter", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 - */ - //}); - //$this->mapVanilla("conduit", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("dispenser", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("dropper", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("end_gateway", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("end_portal", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("grindstone", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * attachment (StringTag) = hanging, multiple, side, standing - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->mapVanilla("jigsaw", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("kelp", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->mapVanilla("lava_cauldron", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * cauldron_liquid (StringTag) = lava, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->mapVanilla("light_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->mapVanilla("movingBlock", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("observer", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("piston", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("pistonArmCollision", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("repeating_command_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("scaffolding", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - * stability_check (ByteTag) = 0, 1 - */ - //}); - //$this->mapVanilla("seagrass", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * sea_grass_type (StringTag) = default, double_bot, double_top - */ - //}); - //$this->mapVanilla("smithing_table", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - //$this->mapVanilla("stickyPistonArmCollision", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("sticky_piston", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("stonecutter_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->mapVanilla("structure_block", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * structure_block_type (StringTag) = corner, data, export, invalid, load, save - */ - //}); - //$this->mapVanilla("structure_void", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * structure_void_type (StringTag) = air, void - */ - //}); - //$this->mapVanilla("turtle_egg", function(BlockStateReader $in) : Block{ - /* TODO: parse properties - * cracked_state (StringTag) = cracked, max_cracked, no_cracks - * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg - */ - //}); - //$this->mapVanilla("wither_rose", function(BlockStateReader $in) : Block{ - //TODO: un-implemented block - //}); - } - - /** @throws BlockStateDeserializeException */ - public function deserialize(string $id, CompoundTag $blockState) : Block{ - if(!array_key_exists($id, $this->deserializeFuncs)){ - throw new BlockStateDeserializeException("Unknown block ID \"$id\""); - } - return $this->deserializeFuncs[$id](new BlockStateReader($blockState)); - } -} diff --git a/src/data/bedrock/blockstate/BlockStateNamesR13.php b/src/data/bedrock/blockstate/BlockStateNames.php similarity index 83% rename from src/data/bedrock/blockstate/BlockStateNamesR13.php rename to src/data/bedrock/blockstate/BlockStateNames.php index 1e27b1731..08279ded1 100644 --- a/src/data/bedrock/blockstate/BlockStateNamesR13.php +++ b/src/data/bedrock/blockstate/BlockStateNames.php @@ -23,8 +23,9 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; -final class BlockStateNamesR13{ +final class BlockStateNames{ + public const ACTIVE = "active"; public const AGE = "age"; public const AGE_BIT = "age_bit"; public const ALLOW_UNDERWATER_BIT = "allow_underwater_bit"; @@ -32,12 +33,16 @@ final class BlockStateNamesR13{ public const ATTACHMENT = "attachment"; public const BAMBOO_LEAF_SIZE = "bamboo_leaf_size"; public const BAMBOO_STALK_THICKNESS = "bamboo_stalk_thickness"; + public const BIG_DRIPLEAF_HEAD = "big_dripleaf_head"; + public const BIG_DRIPLEAF_TILT = "big_dripleaf_tilt"; public const BITE_COUNTER = "bite_counter"; public const BLOCK_LIGHT_LEVEL = "block_light_level"; + public const BLOOM = "bloom"; public const BREWING_STAND_SLOT_A_BIT = "brewing_stand_slot_a_bit"; public const BREWING_STAND_SLOT_B_BIT = "brewing_stand_slot_b_bit"; public const BREWING_STAND_SLOT_C_BIT = "brewing_stand_slot_c_bit"; public const BUTTON_PRESSED_BIT = "button_pressed_bit"; + public const CANDLES = "candles"; public const CAULDRON_LIQUID = "cauldron_liquid"; public const CHEMISTRY_TABLE_TYPE = "chemistry_table_type"; public const CHISEL_TYPE = "chisel_type"; @@ -61,6 +66,7 @@ final class BlockStateNamesR13{ public const DOOR_HINGE_BIT = "door_hinge_bit"; public const DOUBLE_PLANT_TYPE = "double_plant_type"; public const DRAG_DOWN = "drag_down"; + public const DRIPSTONE_THICKNESS = "dripstone_thickness"; public const END_PORTAL_EYE_BIT = "end_portal_eye_bit"; public const EXPLODE_BIT = "explode_bit"; public const EXTINGUISHED = "extinguished"; @@ -68,18 +74,24 @@ final class BlockStateNamesR13{ public const FILL_LEVEL = "fill_level"; public const FLOWER_TYPE = "flower_type"; public const GROUND_SIGN_DIRECTION = "ground_sign_direction"; + public const GROWING_PLANT_AGE = "growing_plant_age"; public const GROWTH = "growth"; public const HANGING = "hanging"; public const HEAD_PIECE_BIT = "head_piece_bit"; public const HEIGHT = "height"; + public const HONEY_LEVEL = "honey_level"; public const HUGE_MUSHROOM_BITS = "huge_mushroom_bits"; public const IN_WALL_BIT = "in_wall_bit"; public const INFINIBURN_BIT = "infiniburn_bit"; public const ITEM_FRAME_MAP_BIT = "item_frame_map_bit"; + public const ITEM_FRAME_PHOTO_BIT = "item_frame_photo_bit"; + public const KELP_AGE = "kelp_age"; public const LEVER_DIRECTION = "lever_direction"; public const LIQUID_DEPTH = "liquid_depth"; + public const LIT = "lit"; public const MOISTURIZED_AMOUNT = "moisturized_amount"; public const MONSTER_EGG_STONE_TYPE = "monster_egg_stone_type"; + public const MULTI_FACE_DIRECTION_BITS = "multi_face_direction_bits"; public const NEW_LEAF_TYPE = "new_leaf_type"; public const NEW_LOG_TYPE = "new_log_type"; public const NO_DROP_BIT = "no_drop_bit"; @@ -98,6 +110,8 @@ final class BlockStateNamesR13{ public const RAIL_DIRECTION = "rail_direction"; public const REDSTONE_SIGNAL = "redstone_signal"; public const REPEATER_DELAY = "repeater_delay"; + public const RESPAWN_ANCHOR_CHARGE = "respawn_anchor_charge"; + public const ROTATION = "rotation"; public const SAND_STONE_TYPE = "sand_stone_type"; public const SAND_TYPE = "sand_type"; public const SAPLING_TYPE = "sapling_type"; @@ -121,11 +135,18 @@ final class BlockStateNamesR13{ public const TORCH_FACING_DIRECTION = "torch_facing_direction"; public const TRIGGERED_BIT = "triggered_bit"; public const TURTLE_EGG_COUNT = "turtle_egg_count"; + public const TWISTING_VINES_AGE = "twisting_vines_age"; public const UPDATE_BIT = "update_bit"; public const UPPER_BLOCK_BIT = "upper_block_bit"; public const UPSIDE_DOWN_BIT = "upside_down_bit"; public const VINE_DIRECTION_BITS = "vine_direction_bits"; public const WALL_BLOCK_TYPE = "wall_block_type"; + public const WALL_CONNECTION_TYPE_EAST = "wall_connection_type_east"; + public const WALL_CONNECTION_TYPE_NORTH = "wall_connection_type_north"; + public const WALL_CONNECTION_TYPE_SOUTH = "wall_connection_type_south"; + public const WALL_CONNECTION_TYPE_WEST = "wall_connection_type_west"; + public const WALL_POST_BIT = "wall_post_bit"; + public const WEEPING_VINES_AGE = "weeping_vines_age"; public const WEIRDO_DIRECTION = "weirdo_direction"; public const WOOD_TYPE = "wood_type"; } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index ebbaf0f6c..21537e452 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -27,7 +27,7 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; -use pocketmine\data\bedrock\blockstate\BlockStateStringValuesR13 as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; @@ -115,7 +115,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readFacingDirection() : int{ - return $this->parseFacingValue($this->readInt(BlockStateNamesR13::FACING_DIRECTION), [ + return $this->parseFacingValue($this->readInt(BlockStateNames::FACING_DIRECTION), [ 0 => Facing::DOWN, 1 => Facing::UP, 2 => Facing::NORTH, @@ -127,7 +127,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readHorizontalFacing() : int{ - return $this->parseFacingValue($this->readInt(BlockStateNamesR13::FACING_DIRECTION), [ + return $this->parseFacingValue($this->readInt(BlockStateNames::FACING_DIRECTION), [ 0 => Facing::NORTH, //should be illegal, but 1.13 allows it 1 => Facing::NORTH, //also should be illegal 2 => Facing::NORTH, @@ -139,7 +139,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readWeirdoHorizontalFacing() : int{ - return $this->parseFacingValue($this->readInt(BlockStateNamesR13::WEIRDO_DIRECTION), [ + return $this->parseFacingValue($this->readInt(BlockStateNames::WEIRDO_DIRECTION), [ 0 => Facing::EAST, 1 => Facing::WEST, 2 => Facing::SOUTH, @@ -149,7 +149,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readLegacyHorizontalFacing() : int{ - return $this->parseFacingValue($this->readInt(BlockStateNamesR13::DIRECTION), [ + return $this->parseFacingValue($this->readInt(BlockStateNames::DIRECTION), [ 0 => Facing::SOUTH, 1 => Facing::WEST, 2 => Facing::NORTH, @@ -160,7 +160,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readColor() : DyeColor{ // * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - return match($color = $this->readString(BlockStateNamesR13::COLOR)){ + return match($color = $this->readString(BlockStateNames::COLOR)){ StringValues::COLOR_BLACK => DyeColor::BLACK(), StringValues::COLOR_BLUE => DyeColor::BLUE(), StringValues::COLOR_BROWN => DyeColor::BROWN(), @@ -177,13 +177,13 @@ final class BlockStateReader{ StringValues::COLOR_SILVER => DyeColor::LIGHT_GRAY(), StringValues::COLOR_WHITE => DyeColor::WHITE(), StringValues::COLOR_YELLOW => DyeColor::YELLOW(), - default => throw $this->badValueException(BlockStateNamesR13::COLOR, $color), + default => throw $this->badValueException(BlockStateNames::COLOR, $color), }; } /** @throws BlockStateDeserializeException */ public function readCoralFacing() : int{ - return $this->parseFacingValue($this->readInt(BlockStateNamesR13::CORAL_DIRECTION), [ + return $this->parseFacingValue($this->readInt(BlockStateNames::CORAL_DIRECTION), [ 0 => Facing::WEST, 1 => Facing::EAST, 2 => Facing::NORTH, @@ -213,21 +213,21 @@ final class BlockStateReader{ * @throws BlockStateDeserializeException */ public function readPillarAxis() : int{ - $rawValue = $this->readString(BlockStateNamesR13::PILLAR_AXIS); + $rawValue = $this->readString(BlockStateNames::PILLAR_AXIS); $value = [ StringValues::PILLAR_AXIS_X => Axis::X, StringValues::PILLAR_AXIS_Y => Axis::Y, StringValues::PILLAR_AXIS_Z => Axis::Z ][$rawValue] ?? null; if($value === null){ - throw $this->badValueException(BlockStateNamesR13::PILLAR_AXIS, $rawValue, "Invalid axis value"); + throw $this->badValueException(BlockStateNames::PILLAR_AXIS, $rawValue, "Invalid axis value"); } return $value; } /** @throws BlockStateDeserializeException */ public function readSlabPosition() : SlabType{ - return $this->readBool(BlockStateNamesR13::TOP_SLOT_BIT) ? SlabType::TOP() : SlabType::BOTTOM(); + return $this->readBool(BlockStateNames::TOP_SLOT_BIT) ? SlabType::TOP() : SlabType::BOTTOM(); } /** @@ -235,37 +235,37 @@ final class BlockStateReader{ * @throws BlockStateDeserializeException */ public function readTorchFacing() : int{ - return match($rawValue = $this->readString(BlockStateNamesR13::TORCH_FACING_DIRECTION)){ + return match($rawValue = $this->readString(BlockStateNames::TORCH_FACING_DIRECTION)){ StringValues::TORCH_FACING_DIRECTION_EAST => Facing::EAST, StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, StringValues::TORCH_FACING_DIRECTION_TOP => Facing::UP, StringValues::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it StringValues::TORCH_FACING_DIRECTION_WEST => Facing::WEST, - default => throw $this->badValueException(BlockStateNamesR13::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), + default => throw $this->badValueException(BlockStateNames::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), }; } /** @throws BlockStateDeserializeException */ public function readCoralType() : CoralType{ - return match($type = $this->readString(BlockStateNamesR13::CORAL_COLOR)){ + return match($type = $this->readString(BlockStateNames::CORAL_COLOR)){ StringValues::CORAL_COLOR_BLUE => CoralType::TUBE(), StringValues::CORAL_COLOR_PINK => CoralType::BRAIN(), StringValues::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), StringValues::CORAL_COLOR_RED => CoralType::FIRE(), StringValues::CORAL_COLOR_YELLOW => CoralType::HORN(), - default => throw $this->badValueException(BlockStateNamesR13::CORAL_COLOR, $type), + default => throw $this->badValueException(BlockStateNames::CORAL_COLOR, $type), }; } /** @throws BlockStateDeserializeException */ public function readBellAttachmentType() : BellAttachmentType{ - return match($type = $this->readString(BlockStateNamesR13::ATTACHMENT)){ + return match($type = $this->readString(BlockStateNames::ATTACHMENT)){ StringValues::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), StringValues::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), StringValues::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), StringValues::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), - default => throw $this->badValueException(BlockStateNamesR13::ATTACHMENT, $type), + default => throw $this->badValueException(BlockStateNames::ATTACHMENT, $type), }; } } diff --git a/src/data/bedrock/blockstate/BlockStateSerializeException.php b/src/data/bedrock/blockstate/BlockStateSerializeException.php new file mode 100644 index 000000000..96eb1d539 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateSerializeException.php @@ -0,0 +1,28 @@ +> + */ + private array $serializers = []; + + /** + * @phpstan-template TBlockType of Block + * @phpstan-param TBlockType $block + * @phpstan-param \Closure(TBlockType) : BlockStateWriter $serializer + */ + private function map(Block $block, \Closure $serializer) : void{ + $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; + } + + public function __construct(){ + $this->map(VanillaBlocks::AIR(), fn() => new BlockStateWriter(Ids::AIR)); + $this->map(VanillaBlocks::BARRIER(), fn() => new BlockStateWriter(Ids::BARRIER)); + $this->map(VanillaBlocks::BEACON(), fn() => new BlockStateWriter(Ids::BEACON)); + $this->map(VanillaBlocks::BLUE_ICE(), fn() => new BlockStateWriter(Ids::BLUE_ICE)); + $this->map(VanillaBlocks::BOOKSHELF(), fn() => new BlockStateWriter(Ids::BOOKSHELF)); + $this->map(VanillaBlocks::BRICKS(), fn() => new BlockStateWriter(Ids::BRICK_BLOCK)); + $this->map(VanillaBlocks::BROWN_MUSHROOM(), fn() => new BlockStateWriter(Ids::BROWN_MUSHROOM)); + $this->map(VanillaBlocks::CHEMICAL_HEAT(), fn() => new BlockStateWriter(Ids::CHEMICAL_HEAT)); + $this->map(VanillaBlocks::CLAY(), fn() => new BlockStateWriter(Ids::CLAY)); + $this->map(VanillaBlocks::COAL(), fn() => new BlockStateWriter(Ids::COAL_BLOCK)); + $this->map(VanillaBlocks::COAL_ORE(), fn() => new BlockStateWriter(Ids::COAL_ORE)); + $this->map(VanillaBlocks::COBBLESTONE(), fn() => new BlockStateWriter(Ids::COBBLESTONE)); + $this->map(VanillaBlocks::CRAFTING_TABLE(), fn() => new BlockStateWriter(Ids::CRAFTING_TABLE)); + $this->map(VanillaBlocks::DEAD_BUSH(), fn() => new BlockStateWriter(Ids::DEADBUSH)); + $this->map(VanillaBlocks::DIAMOND(), fn() => new BlockStateWriter(Ids::DIAMOND_BLOCK)); + $this->map(VanillaBlocks::DIAMOND_ORE(), fn() => new BlockStateWriter(Ids::DIAMOND_ORE)); + $this->map(VanillaBlocks::DRAGON_EGG(), fn() => new BlockStateWriter(Ids::DRAGON_EGG)); + $this->map(VanillaBlocks::DRIED_KELP(), fn() => new BlockStateWriter(Ids::DRIED_KELP_BLOCK)); + $this->map(VanillaBlocks::ELEMENT_ZERO(), fn() => new BlockStateWriter(Ids::ELEMENT_0)); + $this->map(VanillaBlocks::ELEMENT_HYDROGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_1)); + $this->map(VanillaBlocks::ELEMENT_NEON(), fn() => new BlockStateWriter(Ids::ELEMENT_10)); + $this->map(VanillaBlocks::ELEMENT_FERMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_100)); + $this->map(VanillaBlocks::ELEMENT_MENDELEVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_101)); + $this->map(VanillaBlocks::ELEMENT_NOBELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_102)); + $this->map(VanillaBlocks::ELEMENT_LAWRENCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_103)); + $this->map(VanillaBlocks::ELEMENT_RUTHERFORDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_104)); + $this->map(VanillaBlocks::ELEMENT_DUBNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_105)); + $this->map(VanillaBlocks::ELEMENT_SEABORGIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_106)); + $this->map(VanillaBlocks::ELEMENT_BOHRIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_107)); + $this->map(VanillaBlocks::ELEMENT_HASSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_108)); + $this->map(VanillaBlocks::ELEMENT_MEITNERIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_109)); + $this->map(VanillaBlocks::ELEMENT_SODIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_11)); + $this->map(VanillaBlocks::ELEMENT_DARMSTADTIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_110)); + $this->map(VanillaBlocks::ELEMENT_ROENTGENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_111)); + $this->map(VanillaBlocks::ELEMENT_COPERNICIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_112)); + $this->map(VanillaBlocks::ELEMENT_NIHONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_113)); + $this->map(VanillaBlocks::ELEMENT_FLEROVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_114)); + $this->map(VanillaBlocks::ELEMENT_MOSCOVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_115)); + $this->map(VanillaBlocks::ELEMENT_LIVERMORIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_116)); + $this->map(VanillaBlocks::ELEMENT_TENNESSINE(), fn() => new BlockStateWriter(Ids::ELEMENT_117)); + $this->map(VanillaBlocks::ELEMENT_OGANESSON(), fn() => new BlockStateWriter(Ids::ELEMENT_118)); + $this->map(VanillaBlocks::ELEMENT_MAGNESIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_12)); + $this->map(VanillaBlocks::ELEMENT_ALUMINUM(), fn() => new BlockStateWriter(Ids::ELEMENT_13)); + $this->map(VanillaBlocks::ELEMENT_SILICON(), fn() => new BlockStateWriter(Ids::ELEMENT_14)); + $this->map(VanillaBlocks::ELEMENT_PHOSPHORUS(), fn() => new BlockStateWriter(Ids::ELEMENT_15)); + $this->map(VanillaBlocks::ELEMENT_SULFUR(), fn() => new BlockStateWriter(Ids::ELEMENT_16)); + $this->map(VanillaBlocks::ELEMENT_CHLORINE(), fn() => new BlockStateWriter(Ids::ELEMENT_17)); + $this->map(VanillaBlocks::ELEMENT_ARGON(), fn() => new BlockStateWriter(Ids::ELEMENT_18)); + $this->map(VanillaBlocks::ELEMENT_POTASSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_19)); + $this->map(VanillaBlocks::ELEMENT_HELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_2)); + $this->map(VanillaBlocks::ELEMENT_CALCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_20)); + $this->map(VanillaBlocks::ELEMENT_SCANDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_21)); + $this->map(VanillaBlocks::ELEMENT_TITANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_22)); + $this->map(VanillaBlocks::ELEMENT_VANADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_23)); + $this->map(VanillaBlocks::ELEMENT_CHROMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_24)); + $this->map(VanillaBlocks::ELEMENT_MANGANESE(), fn() => new BlockStateWriter(Ids::ELEMENT_25)); + $this->map(VanillaBlocks::ELEMENT_IRON(), fn() => new BlockStateWriter(Ids::ELEMENT_26)); + $this->map(VanillaBlocks::ELEMENT_COBALT(), fn() => new BlockStateWriter(Ids::ELEMENT_27)); + $this->map(VanillaBlocks::ELEMENT_NICKEL(), fn() => new BlockStateWriter(Ids::ELEMENT_28)); + $this->map(VanillaBlocks::ELEMENT_COPPER(), fn() => new BlockStateWriter(Ids::ELEMENT_29)); + $this->map(VanillaBlocks::ELEMENT_LITHIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_3)); + $this->map(VanillaBlocks::ELEMENT_ZINC(), fn() => new BlockStateWriter(Ids::ELEMENT_30)); + $this->map(VanillaBlocks::ELEMENT_GALLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_31)); + $this->map(VanillaBlocks::ELEMENT_GERMANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_32)); + $this->map(VanillaBlocks::ELEMENT_ARSENIC(), fn() => new BlockStateWriter(Ids::ELEMENT_33)); + $this->map(VanillaBlocks::ELEMENT_SELENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_34)); + $this->map(VanillaBlocks::ELEMENT_BROMINE(), fn() => new BlockStateWriter(Ids::ELEMENT_35)); + $this->map(VanillaBlocks::ELEMENT_KRYPTON(), fn() => new BlockStateWriter(Ids::ELEMENT_36)); + $this->map(VanillaBlocks::ELEMENT_RUBIDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_37)); + $this->map(VanillaBlocks::ELEMENT_STRONTIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_38)); + $this->map(VanillaBlocks::ELEMENT_YTTRIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_39)); + $this->map(VanillaBlocks::ELEMENT_BERYLLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_4)); + $this->map(VanillaBlocks::ELEMENT_ZIRCONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_40)); + $this->map(VanillaBlocks::ELEMENT_NIOBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_41)); + $this->map(VanillaBlocks::ELEMENT_MOLYBDENUM(), fn() => new BlockStateWriter(Ids::ELEMENT_42)); + $this->map(VanillaBlocks::ELEMENT_TECHNETIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_43)); + $this->map(VanillaBlocks::ELEMENT_RUTHENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_44)); + $this->map(VanillaBlocks::ELEMENT_RHODIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_45)); + $this->map(VanillaBlocks::ELEMENT_PALLADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_46)); + $this->map(VanillaBlocks::ELEMENT_SILVER(), fn() => new BlockStateWriter(Ids::ELEMENT_47)); + $this->map(VanillaBlocks::ELEMENT_CADMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_48)); + $this->map(VanillaBlocks::ELEMENT_INDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_49)); + $this->map(VanillaBlocks::ELEMENT_BORON(), fn() => new BlockStateWriter(Ids::ELEMENT_5)); + $this->map(VanillaBlocks::ELEMENT_TIN(), fn() => new BlockStateWriter(Ids::ELEMENT_50)); + $this->map(VanillaBlocks::ELEMENT_ANTIMONY(), fn() => new BlockStateWriter(Ids::ELEMENT_51)); + $this->map(VanillaBlocks::ELEMENT_TELLURIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_52)); + $this->map(VanillaBlocks::ELEMENT_IODINE(), fn() => new BlockStateWriter(Ids::ELEMENT_53)); + $this->map(VanillaBlocks::ELEMENT_XENON(), fn() => new BlockStateWriter(Ids::ELEMENT_54)); + $this->map(VanillaBlocks::ELEMENT_CESIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_55)); + $this->map(VanillaBlocks::ELEMENT_BARIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_56)); + $this->map(VanillaBlocks::ELEMENT_LANTHANUM(), fn() => new BlockStateWriter(Ids::ELEMENT_57)); + $this->map(VanillaBlocks::ELEMENT_CERIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_58)); + $this->map(VanillaBlocks::ELEMENT_PRASEODYMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_59)); + $this->map(VanillaBlocks::ELEMENT_CARBON(), fn() => new BlockStateWriter(Ids::ELEMENT_6)); + $this->map(VanillaBlocks::ELEMENT_NEODYMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_60)); + $this->map(VanillaBlocks::ELEMENT_PROMETHIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_61)); + $this->map(VanillaBlocks::ELEMENT_SAMARIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_62)); + $this->map(VanillaBlocks::ELEMENT_EUROPIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_63)); + $this->map(VanillaBlocks::ELEMENT_GADOLINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_64)); + $this->map(VanillaBlocks::ELEMENT_TERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_65)); + $this->map(VanillaBlocks::ELEMENT_DYSPROSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_66)); + $this->map(VanillaBlocks::ELEMENT_HOLMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_67)); + $this->map(VanillaBlocks::ELEMENT_ERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_68)); + $this->map(VanillaBlocks::ELEMENT_THULIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_69)); + $this->map(VanillaBlocks::ELEMENT_NITROGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_7)); + $this->map(VanillaBlocks::ELEMENT_YTTERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_70)); + $this->map(VanillaBlocks::ELEMENT_LUTETIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_71)); + $this->map(VanillaBlocks::ELEMENT_HAFNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_72)); + $this->map(VanillaBlocks::ELEMENT_TANTALUM(), fn() => new BlockStateWriter(Ids::ELEMENT_73)); + $this->map(VanillaBlocks::ELEMENT_TUNGSTEN(), fn() => new BlockStateWriter(Ids::ELEMENT_74)); + $this->map(VanillaBlocks::ELEMENT_RHENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_75)); + $this->map(VanillaBlocks::ELEMENT_OSMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_76)); + $this->map(VanillaBlocks::ELEMENT_IRIDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_77)); + $this->map(VanillaBlocks::ELEMENT_PLATINUM(), fn() => new BlockStateWriter(Ids::ELEMENT_78)); + $this->map(VanillaBlocks::ELEMENT_GOLD(), fn() => new BlockStateWriter(Ids::ELEMENT_79)); + $this->map(VanillaBlocks::ELEMENT_OXYGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_8)); + $this->map(VanillaBlocks::ELEMENT_MERCURY(), fn() => new BlockStateWriter(Ids::ELEMENT_80)); + $this->map(VanillaBlocks::ELEMENT_THALLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_81)); + $this->map(VanillaBlocks::ELEMENT_LEAD(), fn() => new BlockStateWriter(Ids::ELEMENT_82)); + $this->map(VanillaBlocks::ELEMENT_BISMUTH(), fn() => new BlockStateWriter(Ids::ELEMENT_83)); + $this->map(VanillaBlocks::ELEMENT_POLONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_84)); + $this->map(VanillaBlocks::ELEMENT_ASTATINE(), fn() => new BlockStateWriter(Ids::ELEMENT_85)); + $this->map(VanillaBlocks::ELEMENT_RADON(), fn() => new BlockStateWriter(Ids::ELEMENT_86)); + $this->map(VanillaBlocks::ELEMENT_FRANCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_87)); + $this->map(VanillaBlocks::ELEMENT_RADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_88)); + $this->map(VanillaBlocks::ELEMENT_ACTINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_89)); + $this->map(VanillaBlocks::ELEMENT_FLUORINE(), fn() => new BlockStateWriter(Ids::ELEMENT_9)); + $this->map(VanillaBlocks::ELEMENT_THORIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_90)); + $this->map(VanillaBlocks::ELEMENT_PROTACTINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_91)); + $this->map(VanillaBlocks::ELEMENT_URANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_92)); + $this->map(VanillaBlocks::ELEMENT_NEPTUNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_93)); + $this->map(VanillaBlocks::ELEMENT_PLUTONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_94)); + $this->map(VanillaBlocks::ELEMENT_AMERICIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_95)); + $this->map(VanillaBlocks::ELEMENT_CURIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_96)); + $this->map(VanillaBlocks::ELEMENT_BERKELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_97)); + $this->map(VanillaBlocks::ELEMENT_CALIFORNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_98)); + $this->map(VanillaBlocks::ELEMENT_EINSTEINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_99)); + $this->map(VanillaBlocks::EMERALD(), fn() => new BlockStateWriter(Ids::EMERALD_BLOCK)); + $this->map(VanillaBlocks::EMERALD_ORE(), fn() => new BlockStateWriter(Ids::EMERALD_ORE)); + $this->map(VanillaBlocks::ENCHANTING_TABLE(), fn() => new BlockStateWriter(Ids::ENCHANTING_TABLE)); + $this->map(VanillaBlocks::END_STONE_BRICKS(), fn() => new BlockStateWriter(Ids::END_BRICKS)); + $this->map(VanillaBlocks::END_STONE(), fn() => new BlockStateWriter(Ids::END_STONE)); + $this->map(VanillaBlocks::FLETCHING_TABLE(), fn() => new BlockStateWriter(Ids::FLETCHING_TABLE)); + $this->map(VanillaBlocks::GLASS(), fn() => new BlockStateWriter(Ids::GLASS)); + $this->map(VanillaBlocks::GLASS_PANE(), fn() => new BlockStateWriter(Ids::GLASS_PANE)); + $this->map(VanillaBlocks::GLOWING_OBSIDIAN(), fn() => new BlockStateWriter(Ids::GLOWINGOBSIDIAN)); + $this->map(VanillaBlocks::GLOWSTONE(), fn() => new BlockStateWriter(Ids::GLOWSTONE)); + $this->map(VanillaBlocks::GOLD(), fn() => new BlockStateWriter(Ids::GOLD_BLOCK)); + $this->map(VanillaBlocks::GOLD_ORE(), fn() => new BlockStateWriter(Ids::GOLD_ORE)); + $this->map(VanillaBlocks::GRASS(), fn() => new BlockStateWriter(Ids::GRASS)); + $this->map(VanillaBlocks::GRASS_PATH(), fn() => new BlockStateWriter(Ids::GRASS_PATH)); + $this->map(VanillaBlocks::GRAVEL(), fn() => new BlockStateWriter(Ids::GRAVEL)); + $this->map(VanillaBlocks::HARDENED_GLASS(), fn() => new BlockStateWriter(Ids::HARD_GLASS)); + $this->map(VanillaBlocks::HARDENED_GLASS_PANE(), fn() => new BlockStateWriter(Ids::HARD_GLASS_PANE)); + $this->map(VanillaBlocks::HARDENED_CLAY(), fn() => new BlockStateWriter(Ids::HARDENED_CLAY)); + $this->map(VanillaBlocks::ICE(), fn() => new BlockStateWriter(Ids::ICE)); + $this->map(VanillaBlocks::INFO_UPDATE(), fn() => new BlockStateWriter(Ids::INFO_UPDATE)); + $this->map(VanillaBlocks::INFO_UPDATE2(), fn() => new BlockStateWriter(Ids::INFO_UPDATE2)); + $this->map(VanillaBlocks::INVISIBLE_BEDROCK(), fn() => new BlockStateWriter(Ids::INVISIBLEBEDROCK)); + $this->map(VanillaBlocks::IRON_BARS(), fn() => new BlockStateWriter(Ids::IRON_BARS)); + $this->map(VanillaBlocks::IRON(), fn() => new BlockStateWriter(Ids::IRON_BLOCK)); + $this->map(VanillaBlocks::IRON_ORE(), fn() => new BlockStateWriter(Ids::IRON_ORE)); + $this->map(VanillaBlocks::JUKEBOX(), fn() => new BlockStateWriter(Ids::JUKEBOX)); + $this->map(VanillaBlocks::LAPIS_LAZULI(), fn() => new BlockStateWriter(Ids::LAPIS_BLOCK)); + $this->map(VanillaBlocks::LAPIS_LAZULI_ORE(), fn() => new BlockStateWriter(Ids::LAPIS_ORE)); + $this->map(VanillaBlocks::REDSTONE_LAMP(), fn() => new BlockStateWriter(Ids::LIT_REDSTONE_LAMP)); + $this->map(VanillaBlocks::REDSTONE_ORE(), fn() => new BlockStateWriter(Ids::LIT_REDSTONE_ORE)); + $this->map(VanillaBlocks::MAGMA(), fn() => new BlockStateWriter(Ids::MAGMA)); + $this->map(VanillaBlocks::MELON(), fn() => new BlockStateWriter(Ids::MELON_BLOCK)); + $this->map(VanillaBlocks::MONSTER_SPAWNER(), fn() => new BlockStateWriter(Ids::MOB_SPAWNER)); + $this->map(VanillaBlocks::MOSSY_COBBLESTONE(), fn() => new BlockStateWriter(Ids::MOSSY_COBBLESTONE)); + $this->map(VanillaBlocks::MYCELIUM(), fn() => new BlockStateWriter(Ids::MYCELIUM)); + $this->map(VanillaBlocks::NETHER_BRICKS(), fn() => new BlockStateWriter(Ids::NETHER_BRICK)); + $this->map(VanillaBlocks::NETHER_BRICK_FENCE(), fn() => new BlockStateWriter(Ids::NETHER_BRICK_FENCE)); + $this->map(VanillaBlocks::NETHER_WART_BLOCK(), fn() => new BlockStateWriter(Ids::NETHER_WART_BLOCK)); + $this->map(VanillaBlocks::NETHERRACK(), fn() => new BlockStateWriter(Ids::NETHERRACK)); + $this->map(VanillaBlocks::NETHER_REACTOR_CORE(), fn() => new BlockStateWriter(Ids::NETHERREACTOR)); + $this->map(VanillaBlocks::NOTE_BLOCK(), fn() => new BlockStateWriter(Ids::NOTEBLOCK)); + $this->map(VanillaBlocks::OBSIDIAN(), fn() => new BlockStateWriter(Ids::OBSIDIAN)); + $this->map(VanillaBlocks::PACKED_ICE(), fn() => new BlockStateWriter(Ids::PACKED_ICE)); + $this->map(VanillaBlocks::PODZOL(), fn() => new BlockStateWriter(Ids::PODZOL)); + $this->map(VanillaBlocks::NETHER_QUARTZ_ORE(), fn() => new BlockStateWriter(Ids::QUARTZ_ORE)); + $this->map(VanillaBlocks::RED_MUSHROOM(), fn() => new BlockStateWriter(Ids::RED_MUSHROOM)); + $this->map(VanillaBlocks::RED_NETHER_BRICKS(), fn() => new BlockStateWriter(Ids::RED_NETHER_BRICK)); + $this->map(VanillaBlocks::REDSTONE(), fn() => new BlockStateWriter(Ids::REDSTONE_BLOCK)); + $this->map(VanillaBlocks::REDSTONE_LAMP(), fn() => new BlockStateWriter(Ids::REDSTONE_LAMP)); + $this->map(VanillaBlocks::REDSTONE_ORE(), fn() => new BlockStateWriter(Ids::REDSTONE_ORE)); + $this->map(VanillaBlocks::RESERVED6(), fn() => new BlockStateWriter(Ids::RESERVED6)); + $this->map(VanillaBlocks::SEA_LANTERN(), fn() => new BlockStateWriter(Ids::SEALANTERN)); + $this->map(VanillaBlocks::SLIME(), fn() => new BlockStateWriter(Ids::SLIME)); + $this->map(VanillaBlocks::SMOOTH_STONE(), fn() => new BlockStateWriter(Ids::SMOOTH_STONE)); + $this->map(VanillaBlocks::SNOW(), fn() => new BlockStateWriter(Ids::SNOW)); + $this->map(VanillaBlocks::SOUL_SAND(), fn() => new BlockStateWriter(Ids::SOUL_SAND)); + $this->map(VanillaBlocks::LEGACY_STONECUTTER(), fn() => new BlockStateWriter(Ids::STONECUTTER)); + $this->map(VanillaBlocks::SHULKER_BOX(), fn() => new BlockStateWriter(Ids::UNDYED_SHULKER_BOX)); + $this->map(VanillaBlocks::LILY_PAD(), fn() => new BlockStateWriter(Ids::WATERLILY)); + $this->map(VanillaBlocks::COBWEB(), fn() => new BlockStateWriter(Ids::WEB)); + $this->map(VanillaBlocks::DANDELION(), fn() => new BlockStateWriter(Ids::YELLOW_FLOWER)); + //$this->map(VanillaBlocks::ACACIA_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ACACIA_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACACIA_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::ACTIVATOR_RAIL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ACTIVATOR_RAIL()) + * TODO: implement (de)serializer + * rail_data_bit (ByteTag) = 0, 1 + * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::AMETHYST_CLUSTER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::ANDESITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ANDESITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::ANVIL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ANVIL()) + * TODO: implement (de)serializer + * damage (StringTag) = broken, slightly_damaged, undamaged, very_damaged + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::AZALEA_LEAVES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::AZALEA_LEAVES_FLOWERED(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BAMBOO(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BAMBOO()) + * TODO: implement (de)serializer + * age_bit (ByteTag) = 0, 1 + * bamboo_leaf_size (StringTag) = large_leaves, no_leaves, small_leaves + * bamboo_stalk_thickness (StringTag) = thick, thin + */ + //}); + //$this->map(VanillaBlocks::BAMBOO_SAPLING(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BAMBOO_SAPLING()) + * TODO: implement (de)serializer + * age_bit (ByteTag) = 0, 1 + * sapling_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::BARREL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BARREL()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BASALT(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::BED(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BED()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * head_piece_bit (ByteTag) = 0, 1 + * occupied_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BEDROCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BEDROCK()) + * TODO: implement (de)serializer + * infiniburn_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BEEHIVE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BEETROOT(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BEETROOTS()) + * TODO: implement (de)serializer + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::BEE_NEST(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BELL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BELL()) + * TODO: implement (de)serializer + * attachment (StringTag) = hanging, multiple, side, standing + * direction (IntTag) = 0, 1, 2, 3 + * toggle_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BIG_DRIPLEAF(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * big_dripleaf_head (ByteTag) = 0, 1 + * big_dripleaf_tilt (StringTag) = full_tilt, none, partial_tilt, unstable + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BIRCH_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BIRCH_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BLACKSTONE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLACKSTONE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLACKSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::BLACKSTONE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLACK_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLACK_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BLACK_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BLAST_FURNACE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BLAST_FURNACE()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BLUE_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLUE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BLUE_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BONE_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BONE_BLOCK()) + * TODO: implement (de)serializer + * deprecated (IntTag) = 0, 1, 2, 3 + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::BORDER_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BREWING_STAND(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BREWING_STAND()) + * TODO: implement (de)serializer + * brewing_stand_slot_a_bit (ByteTag) = 0, 1 + * brewing_stand_slot_b_bit (ByteTag) = 0, 1 + * brewing_stand_slot_c_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::BROWN_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BROWN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BROWN_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BROWN_MUSHROOM_BLOCK()) + * TODO: implement (de)serializer + * huge_mushroom_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::BUBBLE_COLUMN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * drag_down (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CACTUS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CACTUS()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::CAKE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CAKE()) + * TODO: implement (de)serializer + * bite_counter (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->map(VanillaBlocks::CAMPFIRE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * extinguished (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CARPET(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CARPET()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::CARROTS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CARROTS()) + * TODO: implement (de)serializer + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::CARVED_PUMPKIN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CARVED_PUMPKIN()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::CAULDRON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * cauldron_liquid (StringTag) = lava, powder_snow, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->map(VanillaBlocks::CAVE_VINES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::CAVE_VINES_BODY_WITH_BERRIES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::CAVE_VINES_HEAD_WITH_BERRIES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::CHAIN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::CHAIN_COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::CHEMISTRY_TABLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * chemistry_table_type (StringTag) = compound_creator, element_constructor, lab_table, material_reducer + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::CHEST(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CHEST()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::CHORUS_FLOWER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * age (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::COBBLESTONE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::COBBLESTONE_WALL()) + * TODO: implement (de)serializer + * wall_block_type (StringTag) = andesite, brick, cobblestone, diorite, end_brick, granite, mossy_cobblestone, mossy_stone_brick, nether_brick, prismarine, red_nether_brick, red_sandstone, sandstone, stone_brick + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::COCOA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::COCOA_POD()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2 + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::COLORED_TORCH_BP(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * color_bit (ByteTag) = 0, 1 + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::COLORED_TORCH_RG(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * color_bit (ByteTag) = 0, 1 + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::COMPOSTER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 + */ + //}); + //$this->map(VanillaBlocks::CONCRETE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CONCRETE()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::CONCRETEPOWDER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CONCRETE_POWDER()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::CORAL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CORAL()) + * TODO: implement (de)serializer + * coral_color (StringTag) = blue, pink, purple, red, yellow + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CORAL_BLOCK()) + * TODO: implement (de)serializer + * coral_color (StringTag) = blue, pink, purple, red, yellow + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_FAN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CORAL_FAN()) + * TODO: implement (de)serializer + * coral_color (StringTag) = blue, pink, purple, red, yellow + * coral_fan_direction (IntTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_FAN_DEAD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * coral_color (StringTag) = blue, pink, purple, red, yellow + * coral_fan_direction (IntTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_FAN_HANG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) + * TODO: implement (de)serializer + * coral_direction (IntTag) = 0, 1, 2, 3 + * coral_hang_type_bit (ByteTag) = 0, 1 + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_FAN_HANG2(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) + * TODO: implement (de)serializer + * coral_direction (IntTag) = 0, 1, 2, 3 + * coral_hang_type_bit (ByteTag) = 0, 1 + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CORAL_FAN_HANG3(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) + * TODO: implement (de)serializer + * coral_direction (IntTag) = 0, 1, 2, 3 + * coral_hang_type_bit (ByteTag) = 0, 1 + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_HYPHAE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_STEM(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CRIMSON_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::CYAN_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CYAN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::CYAN_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::DARKOAK_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::DARKOAK_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::DARK_OAK_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_OAK_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DARK_PRISMARINE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DARK_PRISMARINE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::DAYLIGHT_DETECTOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DAYLIGHT_SENSOR()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::DAYLIGHT_DETECTOR_INVERTED(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DAYLIGHT_SENSOR()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_BRICK_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_BRICK_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_BRICK_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_TILE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_TILE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_TILE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::DEEPSLATE_TILE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DETECTOR_RAIL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DETECTOR_RAIL()) + * TODO: implement (de)serializer + * rail_data_bit (ByteTag) = 0, 1 + * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::DIORITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DIORITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::DIRT(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DIRT()) + * TODO: implement (de)serializer + * dirt_type (StringTag) = coarse, normal + */ + //}); + //$this->map(VanillaBlocks::DISPENSER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_PLANT(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * double_plant_type (StringTag) = fern, grass, paeonia, rose, sunflower, syringa + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB2(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB3(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB4(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::DOUBLE_WOODEN_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::DROPPER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * triggered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ENDER_CHEST(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ENDER_CHEST()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::END_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::END_STONE_BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::END_PORTAL_FRAME(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::END_PORTAL_FRAME()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * end_portal_eye_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::END_ROD(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::END_ROD()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::EXPOSED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::EXPOSED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::EXPOSED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::FARMLAND(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FARMLAND()) + * TODO: implement (de)serializer + * moisturized_amount (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::FENCE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::FIRE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FIRE()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::FLOWER_POT(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FLOWER_POT()) + * TODO: implement (de)serializer + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::FLOWING_LAVA(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::FLOWING_WATER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::FRAME(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * item_frame_map_bit (ByteTag) = 0, 1 + * item_frame_photo_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::FROSTED_ICE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FROSTED_ICE()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::FURNACE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FURNACE()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::GLOW_FRAME(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * item_frame_map_bit (ByteTag) = 0, 1 + * item_frame_photo_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::GLOW_LICHEN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + */ + //}); + //$this->map(VanillaBlocks::GOLDEN_RAIL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::POWERED_RAIL()) + * TODO: implement (de)serializer + * rail_data_bit (ByteTag) = 0, 1 + * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::GRANITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::GRANITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::GRAY_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::GRAY_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::GRAY_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::GREEN_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::GREEN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::GREEN_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::GRINDSTONE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * attachment (StringTag) = hanging, multiple, side, standing + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::HARD_STAINED_GLASS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STAINED_HARDENED_GLASS()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::HARD_STAINED_GLASS_PANE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STAINED_HARDENED_GLASS_PANE()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::HAY_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::HAY_BALE()) + * TODO: implement (de)serializer + * deprecated (IntTag) = 0, 1, 2, 3 + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::HEAVY_WEIGHTED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::HOPPER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::HOPPER()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * toggle_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::INFESTED_DEEPSLATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::IRON_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::IRON_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::IRON_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::IRON_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::JIGSAW(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * rotation (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::JUNGLE_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::JUNGLE_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::KELP(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * kelp_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::LADDER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LADDER()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LANTERN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LANTERN()) + * TODO: implement (de)serializer + * hanging (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LARGE_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LAVA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LAVA()) + * TODO: implement (de)serializer + * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::LAVA_CAULDRON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * cauldron_liquid (StringTag) = lava, powder_snow, water + * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 + */ + //}); + //$this->map(VanillaBlocks::LEAVES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * old_leaf_type (StringTag) = birch, jungle, oak, spruce + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LEAVES2(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * new_leaf_type (StringTag) = acacia, dark_oak + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LECTERN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LECTERN()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LEVER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LEVER()) + * TODO: implement (de)serializer + * lever_direction (StringTag) = down_east_west, down_north_south, east, north, south, up_east_west, up_north_south, west + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIGHTNING_ROD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_BLUE_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_BLUE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_GRAY_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_GRAY_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIGHT_WEIGHTED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::LIME_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIME_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LIME_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LIT_BLAST_FURNACE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BLAST_FURNACE()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LIT_FURNACE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::FURNACE()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LIT_PUMPKIN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LIT_PUMPKIN()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::LIT_SMOKER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SMOKER()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::LOG(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * old_log_type (StringTag) = birch, jungle, oak, spruce + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::LOG2(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * new_log_type (StringTag) = acacia, dark_oak + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::LOOM(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LOOM()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::MAGENTA_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::MAGENTA_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::MEDIUM_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::MELON_STEM(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::MELON_STEM()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::MONSTER_EGG(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * monster_egg_stone_type (StringTag) = chiseled_stone_brick, cobblestone, cracked_stone_brick, mossy_stone_brick, stone, stone_brick + */ + //}); + //$this->map(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::MOSSY_COBBLESTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::MOSSY_STONE_BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::NETHER_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::NETHER_BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::NETHER_WART(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::NETHER_WART()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::NORMAL_STONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::OAK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::OBSERVER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ORANGE_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ORANGE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::ORANGE_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::OXIDIZED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::OXIDIZED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::OXIDIZED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::PINK_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::PINK_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PINK_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::PISTON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::PISTONARMCOLLISION(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::PLANKS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::POINTED_DRIPSTONE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * dripstone_thickness (StringTag) = base, frustum, merge, middle, tip + * hanging (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::POLISHED_ANDESITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BASALT(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_WALL(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_DIORITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::POLISHED_DIORITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::POLISHED_GRANITE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::POLISHED_GRANITE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::PORTAL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::NETHER_PORTAL()) + * TODO: implement (de)serializer + * portal_axis (StringTag) = unknown, x, z + */ + //}); + //$this->map(VanillaBlocks::POTATOES(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::POTATOES()) + * TODO: implement (de)serializer + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::POWERED_COMPARATOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::REDSTONE_COMPARATOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * output_lit_bit (ByteTag) = 0, 1 + * output_subtract_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::POWERED_REPEATER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * repeater_delay (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::PRISMARINE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PRISMARINE()) + * TODO: implement (de)serializer + * prismarine_block_type (StringTag) = bricks, dark, default + */ + //}); + //$this->map(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PRISMARINE_BRICKS_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::PRISMARINE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PRISMARINE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::PUMPKIN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PUMPKIN()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::PUMPKIN_STEM(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PUMPKIN_STEM()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::PURPLE_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::PURPLE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PURPLE_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::PURPUR_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * chisel_type (StringTag) = chiseled, default, lines, smooth + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::PURPUR_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::PURPUR_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::QUARTZ_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * chisel_type (StringTag) = chiseled, default, lines, smooth + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::QUARTZ_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::QUARTZ_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::RAIL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RAIL()) + * TODO: implement (de)serializer + * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 + */ + //}); + //$this->map(VanillaBlocks::REDSTONE_TORCH(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::REDSTONE_TORCH()) + * TODO: implement (de)serializer + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::REDSTONE_WIRE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::REDSTONE_WIRE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::RED_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::RED_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::RED_FLOWER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * flower_type (StringTag) = allium, cornflower, houstonia, lily_of_the_valley, orchid, oxeye, poppy, tulip_orange, tulip_pink, tulip_red, tulip_white + */ + //}); + //$this->map(VanillaBlocks::RED_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RED_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::RED_MUSHROOM_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RED_MUSHROOM_BLOCK()) + * TODO: implement (de)serializer + * huge_mushroom_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RED_NETHER_BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::RED_SANDSTONE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RED_SANDSTONE()) + * TODO: implement (de)serializer + * sand_stone_type (StringTag) = cut, default, heiroglyphs, smooth + */ + //}); + //$this->map(VanillaBlocks::RED_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::RED_SANDSTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::REEDS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SUGARCANE()) + * TODO: implement (de)serializer + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::REPEATING_COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * conditional_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::RESPAWN_ANCHOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * respawn_anchor_charge (IntTag) = 0, 1, 2, 3, 4 + */ + //}); + //$this->map(VanillaBlocks::SAND(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SAND()) + * TODO: implement (de)serializer + * sand_type (StringTag) = normal, red + */ + //}); + //$this->map(VanillaBlocks::SANDSTONE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SANDSTONE()) + * TODO: implement (de)serializer + * sand_stone_type (StringTag) = cut, default, heiroglyphs, smooth + */ + //}); + //$this->map(VanillaBlocks::SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SANDSTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::SAPLING(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * age_bit (ByteTag) = 0, 1 + * sapling_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::SCAFFOLDING(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + * stability_check (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SCULK_CATALYST(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * bloom (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SCULK_SENSOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SCULK_SHRIEKER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * active (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SCULK_VEIN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + */ + //}); + //$this->map(VanillaBlocks::SEAGRASS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * sea_grass_type (StringTag) = default, double_bot, double_top + */ + //}); + //$this->map(VanillaBlocks::SEA_PICKLE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SEA_PICKLE()) + * TODO: implement (de)serializer + * cluster_count (IntTag) = 0, 1, 2, 3 + * dead_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SHULKER_BOX(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::DYED_SHULKER_BOX()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::SILVER_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::SKULL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::MOB_HEAD()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + * no_drop_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SMALL_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::SMALL_DRIPLEAF_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SMOKER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SMOKER()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SMOOTH_QUARTZ_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SMOOTH_SANDSTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::SNOW_LAYER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SNOW_LAYER()) + * TODO: implement (de)serializer + * covered_bit (ByteTag) = 0, 1 + * height (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::SOUL_CAMPFIRE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * extinguished (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SOUL_FIRE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::SOUL_LANTERN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * hanging (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SOUL_TORCH(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::SPONGE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPONGE()) + * TODO: implement (de)serializer + * sponge_type (StringTag) = dry, wet + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_FENCE_GATE()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::SPRUCE_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SPRUCE_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::STAINED_GLASS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STAINED_GLASS()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::STAINED_GLASS_PANE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STAINED_GLASS_PANE()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::STAINED_HARDENED_CLAY(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STAINED_CLAY()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::STANDING_BANNER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::BANNER()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_SIGN()) + * TODO: implement (de)serializer + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::STICKYPISTONARMCOLLISION(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::STICKY_PISTON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::STONE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE()) + * TODO: implement (de)serializer + * stone_type (StringTag) = andesite, andesite_smooth, diorite, diorite_smooth, granite, granite_smooth, stone + */ + //}); + //$this->map(VanillaBlocks::STONEBRICK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_brick_type (StringTag) = chiseled, cracked, default, mossy, smooth + */ + //}); + //$this->map(VanillaBlocks::STONECUTTER_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::STONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE_BRICK_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::STONE_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::STONE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::STONE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STONE_SLAB()) + * TODO: implement (de)serializer + * stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::STONE_SLAB2(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::STONE_SLAB3(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::STONE_SLAB4(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::STONE_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::COBBLESTONE_STAIRS()) + * TODO: implement (de)serializer + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_ACACIA_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_ACACIA_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_BIRCH_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_BIRCH_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_CRIMSON_HYPHAE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_CRIMSON_STEM(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_DARK_OAK_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_DARK_OAK_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_JUNGLE_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_JUNGLE_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_OAK_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_OAK_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_SPRUCE_LOG(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::STRIPPED_SPRUCE_LOG()) + * TODO: implement (de)serializer + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_WARPED_HYPHAE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRIPPED_WARPED_STEM(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::STRUCTURE_BLOCK(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * structure_block_type (StringTag) = corner, data, export, invalid, load, save + */ + //}); + //$this->map(VanillaBlocks::STRUCTURE_VOID(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * structure_void_type (StringTag) = air, void + */ + //}); + //$this->map(VanillaBlocks::SWEET_BERRY_BUSH(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::SWEET_BERRY_BUSH()) + * TODO: implement (de)serializer + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::TALLGRASS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * tall_grass_type (StringTag) = default, fern, snow, tall + */ + //}); + //$this->map(VanillaBlocks::TNT(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::TNT()) + * TODO: implement (de)serializer + * allow_underwater_bit (ByteTag) = 0, 1 + * explode_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::TORCH(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::TORCH()) + * TODO: implement (de)serializer + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_TRAPDOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::TRAPPED_CHEST(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::TRAPPED_CHEST()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::TRIPWIRE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::TRIPWIRE()) + * TODO: implement (de)serializer + * attached_bit (ByteTag) = 0, 1 + * disarmed_bit (ByteTag) = 0, 1 + * powered_bit (ByteTag) = 0, 1 + * suspended_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::TRIPWIRE_HOOK(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::TRIPWIRE_HOOK()) + * TODO: implement (de)serializer + * attached_bit (ByteTag) = 0, 1 + * direction (IntTag) = 0, 1, 2, 3 + * powered_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::TURTLE_EGG(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * cracked_state (StringTag) = cracked, max_cracked, no_cracks + * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg + */ + //}); + //$this->map(VanillaBlocks::TWISTING_VINES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * twisting_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::UNDERWATER_TORCH(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::UNDERWATER_TORCH()) + * TODO: implement (de)serializer + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::UNLIT_REDSTONE_TORCH(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::REDSTONE_TORCH()) + * TODO: implement (de)serializer + * torch_facing_direction (StringTag) = east, north, south, top, unknown, west + */ + //}); + //$this->map(VanillaBlocks::UNPOWERED_COMPARATOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::REDSTONE_COMPARATOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * output_lit_bit (ByteTag) = 0, 1 + * output_subtract_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::UNPOWERED_REPEATER(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * repeater_delay (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::VINE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * vine_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::WALL_BANNER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WALL_BANNER()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_WALL_SIGN()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WARPED_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WARPED_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WARPED_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WARPED_FENCE_GATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WARPED_HYPHAE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::WARPED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::WARPED_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WARPED_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WARPED_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::WARPED_STEM(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(VanillaBlocks::WARPED_TRAPDOOR(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WARPED_WALL_SIGN(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WATER(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WATER()) + * TODO: implement (de)serializer + * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::WAXED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WAXED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_EXPOSED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_EXPOSED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_OXIDIZED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_OXIDIZED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_WEATHERED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WAXED_WEATHERED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WEATHERED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WEATHERED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(VanillaBlocks::WEATHERED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WEEPING_VINES(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * weeping_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 + */ + //}); + //$this->map(VanillaBlocks::WHEAT(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WHEAT()) + * TODO: implement (de)serializer + * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 + */ + //}); + //$this->map(VanillaBlocks::WHITE_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WHITE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WHITE_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WOOD(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + * stripped_bit (ByteTag) = 0, 1 + * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::WOODEN_BUTTON(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_BUTTON()) + * TODO: implement (de)serializer + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(VanillaBlocks::WOODEN_DOOR(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_DOOR()) + * TODO: implement (de)serializer + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::WOODEN_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::OAK_PRESSURE_PLATE()) + * TODO: implement (de)serializer + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(VanillaBlocks::WOODEN_SLAB(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce + */ + //}); + //$this->map(VanillaBlocks::WOOL(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::WOOL()) + * TODO: implement (de)serializer + * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow + */ + //}); + //$this->map(VanillaBlocks::YELLOW_CANDLE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * candles (IntTag) = 0, 1, 2, 3 + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::YELLOW_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ + /* + * TODO: Un-implemented block + * lit (ByteTag) = 0, 1 + */ + //}); + //$this->map(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ + /* + * This block is implemented (VanillaBlocks::YELLOW_GLAZED_TERRACOTTA()) + * TODO: implement (de)serializer + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + } +} diff --git a/src/data/bedrock/blockstate/BlockStateStringValuesR13.php b/src/data/bedrock/blockstate/BlockStateStringValues.php similarity index 89% rename from src/data/bedrock/blockstate/BlockStateStringValuesR13.php rename to src/data/bedrock/blockstate/BlockStateStringValues.php index d51c39291..689f22be4 100644 --- a/src/data/bedrock/blockstate/BlockStateStringValuesR13.php +++ b/src/data/bedrock/blockstate/BlockStateStringValues.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; -final class BlockStateStringValuesR13{ +final class BlockStateStringValues{ public const ATTACHMENT_HANGING = "hanging"; public const ATTACHMENT_MULTIPLE = "multiple"; @@ -37,7 +37,13 @@ final class BlockStateStringValuesR13{ public const BAMBOO_STALK_THICKNESS_THICK = "thick"; public const BAMBOO_STALK_THICKNESS_THIN = "thin"; + public const BIG_DRIPLEAF_TILT_FULL_TILT = "full_tilt"; + public const BIG_DRIPLEAF_TILT_NONE = "none"; + public const BIG_DRIPLEAF_TILT_PARTIAL_TILT = "partial_tilt"; + public const BIG_DRIPLEAF_TILT_UNSTABLE = "unstable"; + public const CAULDRON_LIQUID_LAVA = "lava"; + public const CAULDRON_LIQUID_POWDER_SNOW = "powder_snow"; public const CAULDRON_LIQUID_WATER = "water"; public const CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR = "compound_creator"; @@ -92,6 +98,12 @@ final class BlockStateStringValuesR13{ public const DOUBLE_PLANT_TYPE_SUNFLOWER = "sunflower"; public const DOUBLE_PLANT_TYPE_SYRINGA = "syringa"; + public const DRIPSTONE_THICKNESS_BASE = "base"; + public const DRIPSTONE_THICKNESS_FRUSTUM = "frustum"; + public const DRIPSTONE_THICKNESS_MERGE = "merge"; + public const DRIPSTONE_THICKNESS_MIDDLE = "middle"; + public const DRIPSTONE_THICKNESS_TIP = "tip"; + public const FLOWER_TYPE_ALLIUM = "allium"; public const FLOWER_TYPE_CORNFLOWER = "cornflower"; public const FLOWER_TYPE_HOUSTONIA = "houstonia"; @@ -259,6 +271,22 @@ final class BlockStateStringValuesR13{ public const WALL_BLOCK_TYPE_SANDSTONE = "sandstone"; public const WALL_BLOCK_TYPE_STONE_BRICK = "stone_brick"; + public const WALL_CONNECTION_TYPE_EAST_NONE = "none"; + public const WALL_CONNECTION_TYPE_EAST_SHORT = "short"; + public const WALL_CONNECTION_TYPE_EAST_TALL = "tall"; + + public const WALL_CONNECTION_TYPE_NORTH_NONE = "none"; + public const WALL_CONNECTION_TYPE_NORTH_SHORT = "short"; + public const WALL_CONNECTION_TYPE_NORTH_TALL = "tall"; + + public const WALL_CONNECTION_TYPE_SOUTH_NONE = "none"; + public const WALL_CONNECTION_TYPE_SOUTH_SHORT = "short"; + public const WALL_CONNECTION_TYPE_SOUTH_TALL = "tall"; + + public const WALL_CONNECTION_TYPE_WEST_NONE = "none"; + public const WALL_CONNECTION_TYPE_WEST_SHORT = "short"; + public const WALL_CONNECTION_TYPE_WEST_TALL = "tall"; + public const WOOD_TYPE_ACACIA = "acacia"; public const WOOD_TYPE_BIRCH = "birch"; public const WOOD_TYPE_DARK_OAK = "dark_oak"; diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php new file mode 100644 index 000000000..b3a477f53 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -0,0 +1,229 @@ +states = CompoundTag::create(); + } + + /** @return $this */ + public function writeBool(string $name, bool $value) : self{ + $this->states->setByte($name, $value ? 1 : 0); + return $this; + } + + /** @return $this */ + public function writeInt(string $name, int $value) : self{ + $this->states->setInt($name, $value); + return $this; + } + + /** @return $this */ + public function writeString(string $name, string $value) : self{ + $this->states->setString($name, $value); + return $this; + } + + /** @return $this */ + public function writeFacingDirection(int $value) : self{ + $this->writeInt(BlockStateNames::FACING_DIRECTION, match($value){ + Facing::DOWN => 0, + Facing::UP => 1, + Facing::NORTH => 2, + Facing::SOUTH => 3, + Facing::WEST => 4, + Facing::EAST => 5, + default => throw new BlockStateSerializeException("Invalid Facing $value") + }); + return $this; + } + + /** @return $this */ + public function writeHorizontalFacing(int $value) : self{ + if($value === Facing::UP || $value === Facing::DOWN){ + throw new BlockStateSerializeException("Y-axis facing is not allowed"); + } + + return $this->writeFacingDirection($value); + } + + /** @return $this */ + public function writeWeirdoHorizontalFacing(int $value) : self{ + $this->writeInt(BlockStateNames::WEIRDO_DIRECTION, match($value){ + Facing::EAST => 0, + Facing::WEST => 1, + Facing::SOUTH => 2, + Facing::NORTH => 3, + default => throw new BlockStateSerializeException("Invalid horizontal facing $value") + }); + return $this; + } + + /** @return $this */ + public function writeLegacyHorizontalFacing(int $value) : self{ + $this->writeInt(BlockStateNames::DIRECTION, match($value){ + Facing::SOUTH => 0, + Facing::WEST => 1, + Facing::NORTH => 2, + Facing::EAST => 3, + default => throw new BlockStateSerializeException("Invalid horizontal facing $value") + }); + return $this; + } + + /** @return $this */ + public function writeColor(DyeColor $color) : self{ + $this->writeString(BlockStateNames::COLOR, match($color->id()){ + DyeColor::BLACK()->id() => StringValues::COLOR_BLACK, + DyeColor::BLUE()->id() => StringValues::COLOR_BLUE, + DyeColor::BROWN()->id() => StringValues::COLOR_BROWN, + DyeColor::CYAN()->id() => StringValues::COLOR_CYAN, + DyeColor::GRAY()->id() => StringValues::COLOR_GRAY, + DyeColor::GREEN()->id() => StringValues::COLOR_GREEN, + DyeColor::LIGHT_BLUE()->id() => StringValues::COLOR_LIGHT_BLUE, + DyeColor::LIGHT_GRAY()->id() => StringValues::COLOR_SILVER, + DyeColor::LIME()->id() => StringValues::COLOR_LIME, + DyeColor::MAGENTA()->id() => StringValues::COLOR_MAGENTA, + DyeColor::ORANGE()->id() => StringValues::COLOR_ORANGE, + DyeColor::PINK()->id() => StringValues::COLOR_PINK, + DyeColor::PURPLE()->id() => StringValues::COLOR_PURPLE, + DyeColor::RED()->id() => StringValues::COLOR_RED, + DyeColor::WHITE()->id() => StringValues::COLOR_WHITE, + DyeColor::YELLOW()->id() => StringValues::COLOR_YELLOW, + default => throw new BlockStateSerializeException("Invalid Color " . $color->name()) + }); + return $this; + } + + /** @return $this */ + public function writeCoralFacing(int $value) : self{ + $this->writeInt(BlockStateNames::CORAL_DIRECTION, match($value){ + Facing::WEST => 0, + Facing::EAST => 1, + Facing::NORTH => 2, + Facing::SOUTH => 3, + default => throw new BlockStateSerializeException("Invalid horizontal facing $value") + }); + return $this; + } + + /** @return $this */ + public function writeFacingWithoutDown(int $value) : self{ + if($value === Facing::DOWN){ + throw new BlockStateSerializeException("Invalid facing DOWN"); + } + $this->writeFacingDirection($value); + return $this; + } + + /** @return $this */ + public function writeFacingWithoutUp(int $value) : self{ + if($value === Facing::UP){ + throw new BlockStateSerializeException("Invalid facing UP"); + } + $this->writeFacingDirection($value); + return $this; + } + + /** @return $this */ + public function writePillarAxis(int $axis) : self{ + $this->writeString(BlockStateNames::PILLAR_AXIS, match($axis){ + Axis::X => StringValues::PILLAR_AXIS_X, + Axis::Y => StringValues::PILLAR_AXIS_Y, + Axis::Z => StringValues::PILLAR_AXIS_Z, + default => throw new BlockStateSerializeException("Invalid axis $axis") + }); + return $this; + } + + /** @return $this */ + public function writeSlabPosition(SlabType $slabType) : self{ + $this->writeBool(BlockStateNames::TOP_SLOT_BIT, match($slabType->id()){ + SlabType::TOP()->id() => true, + SlabType::BOTTOM()->id() => false, + default => throw new BlockStateSerializeException("Invalid slab type " . $slabType->name()) + }); + return $this; + } + + /** @return $this */ + public function writeTorchFacing(int $facing) : self{ + $this->writeString(BlockStateNames::TORCH_FACING_DIRECTION, match($facing){ + Facing::UP => StringValues::TORCH_FACING_DIRECTION_TOP, + Facing::NORTH => StringValues::TORCH_FACING_DIRECTION_NORTH, + Facing::SOUTH => StringValues::TORCH_FACING_DIRECTION_SOUTH, + Facing::WEST => StringValues::TORCH_FACING_DIRECTION_WEST, + Facing::EAST => StringValues::TORCH_FACING_DIRECTION_EAST, + default => throw new BlockStateSerializeException("Invalid Torch facing $facing") + }); + return $this; + } + + /** @return $this */ + public function writeCoralType(CoralType $coralType) : self{ + $this->writeString(BlockStateNames::CORAL_COLOR, match($coralType->id()){ + CoralType::TUBE()->id() => StringValues::CORAL_COLOR_BLUE, + CoralType::BRAIN()->id() => StringValues::CORAL_COLOR_PINK, + CoralType::BUBBLE()->id() => StringValues::CORAL_COLOR_PURPLE, + CoralType::FIRE()->id() => StringValues::CORAL_COLOR_RED, + CoralType::HORN()->id() => StringValues::CORAL_COLOR_YELLOW, + default => throw new BlockStateSerializeException("Invalid Coral type " . $coralType->name()) + }); + return $this; + } + + /** @return $this */ + public function writeBellAttachmentType(BellAttachmentType $attachmentType) : self{ + $this->writeString(BlockStateNames::ATTACHMENT, match($attachmentType->id()){ + BellAttachmentType::FLOOR()->id() => StringValues::ATTACHMENT_STANDING, + BellAttachmentType::CEILING()->id() => StringValues::ATTACHMENT_HANGING, + BellAttachmentType::ONE_WALL()->id() => StringValues::ATTACHMENT_SIDE, + BellAttachmentType::TWO_WALLS()->id() => StringValues::ATTACHMENT_MULTIPLE, + default => throw new BlockStateSerializeException("Invalid Bell attachment type " . $attachmentType->name()) + }); + return $this; + } + + public function writeBlockStateNbt() : CompoundTag{ + //TODO: add `version` field + return CompoundTag::create() + ->setString("name", $this->id) + ->setTag("states", $this->states); + } +} diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/blockstate/BlockTypeNames.php new file mode 100644 index 000000000..54536c0da --- /dev/null +++ b/src/data/bedrock/blockstate/BlockTypeNames.php @@ -0,0 +1,739 @@ + Date: Mon, 31 Jan 2022 01:20:52 +0000 Subject: [PATCH 006/692] shut CS --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 1 + src/data/bedrock/blockstate/BlockStateSerializer.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 878c8ebfb..74c7eb4a4 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -39,6 +39,7 @@ use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\CompoundTag; use function array_key_exists; +use function min; final class BlockStateDeserializer{ diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 3ac3fad68..3bb3ab866 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -22,10 +22,11 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; + use pocketmine\block\Block; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; -use pocketmine\nbt\tag\CompoundTag; +use function get_class; final class BlockStateSerializer{ /** From d03f4d76a2b19536a5e287b2031999ca5b4a5b51 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 02:30:54 +0000 Subject: [PATCH 007/692] ws --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 74c7eb4a4..89a580e3a 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -56,6 +56,7 @@ final class BlockStateDeserializer{ } $this->deserializeFuncs[$id] = $c; } + public function __construct(){ $this->map(Ids::ACACIA_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::ACACIA_BUTTON(), $in)); $this->map(Ids::ACACIA_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::ACACIA_DOOR(), $in)); From 0626edbcddf16463b4a69566976bc2b47c64660a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 17:49:29 +0000 Subject: [PATCH 008/692] BlockStateValues now includes integer values too --- .../blockstate/BlockStateDeserializer.php | 250 ++--- .../BlockStateDeserializerHelper.php | 72 +- .../bedrock/blockstate/BlockStateReader.php | 70 +- .../blockstate/BlockStateStringValues.php | 297 ------ .../bedrock/blockstate/BlockStateValues.php | 863 ++++++++++++++++++ .../bedrock/blockstate/BlockStateWriter.php | 68 +- 6 files changed, 1093 insertions(+), 527 deletions(-) delete mode 100644 src/data/bedrock/blockstate/BlockStateStringValues.php create mode 100644 src/data/bedrock/blockstate/BlockStateValues.php diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 89a580e3a..64ce43116 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -33,7 +33,7 @@ use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\blockstate\BlockStateDeserializerHelper as Helper; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -82,10 +82,10 @@ final class BlockStateDeserializer{ $this->map(Ids::ANVIL, function(BlockStateReader $in) : Block{ return VanillaBlocks::ANVIL() ->setDamage(match($value = $in->readString(BlockStateNames::DAMAGE)){ - StringValues::DAMAGE_UNDAMAGED => 0, - StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, - StringValues::DAMAGE_VERY_DAMAGED => 2, - StringValues::DAMAGE_BROKEN => 0, + Values::DAMAGE_UNDAMAGED => 0, + Values::DAMAGE_SLIGHTLY_DAMAGED => 1, + Values::DAMAGE_VERY_DAMAGED => 2, + Values::DAMAGE_BROKEN => 0, default => throw $in->badValueException(BlockStateNames::DAMAGE, $value), }) ->setFacing($in->readLegacyHorizontalFacing()); @@ -93,15 +93,15 @@ final class BlockStateDeserializer{ $this->map(Ids::BAMBOO, function(BlockStateReader $in) : Block{ return VanillaBlocks::BAMBOO() ->setLeafSize(match($value = $in->readString(BlockStateNames::BAMBOO_LEAF_SIZE)){ - StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, + Values::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, + Values::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, + Values::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, default => throw $in->badValueException(BlockStateNames::BAMBOO_LEAF_SIZE, $value), }) ->setReady($in->readBool(BlockStateNames::AGE_BIT)) ->setThick(match($value = $in->readString(BlockStateNames::BAMBOO_STALK_THICKNESS)){ - StringValues::BAMBOO_STALK_THICKNESS_THIN => false, - StringValues::BAMBOO_STALK_THICKNESS_THICK => true, + Values::BAMBOO_STALK_THICKNESS_THIN => false, + Values::BAMBOO_STALK_THICKNESS_THICK => true, default => throw $in->badValueException(BlockStateNames::BAMBOO_STALK_THICKNESS, $value), }); }); @@ -191,10 +191,10 @@ final class BlockStateDeserializer{ $this->map(Ids::CHEMICAL_HEAT, fn() => VanillaBlocks::CHEMICAL_HEAT()); $this->map(Ids::CHEMISTRY_TABLE, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::CHEMISTRY_TABLE_TYPE)){ - StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), - StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), - StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), - StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), + Values::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), + Values::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), + Values::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), + Values::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), default => throw $in->badValueException(BlockStateNames::CHEMISTRY_TABLE_TYPE, $type), })->setFacing($in->readLegacyHorizontalFacing()); }); @@ -240,8 +240,8 @@ final class BlockStateDeserializer{ ->setCoralType($in->readCoralType()) ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(true)); + $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(true)); $this->map(Ids::CORAL_FAN_HANG, function(BlockStateReader $in) : Block{ return VanillaBlocks::WALL_CORAL_FAN() ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) @@ -299,19 +299,19 @@ final class BlockStateDeserializer{ $this->map(Ids::DIRT, function(BlockStateReader $in) : Block{ return VanillaBlocks::DIRT() ->setCoarse(match($value = $in->readString(BlockStateNames::DIRT_TYPE)){ - StringValues::DIRT_TYPE_NORMAL => false, - StringValues::DIRT_TYPE_COARSE => true, + Values::DIRT_TYPE_NORMAL => false, + Values::DIRT_TYPE_COARSE => true, default => throw $in->badValueException(BlockStateNames::DIRT_TYPE, $value), }); }); $this->map(Ids::DOUBLE_PLANT, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::DOUBLE_PLANT_TYPE)){ - StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), - StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), - StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), - StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), - StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), - StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), + Values::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), + Values::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), + Values::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), + Values::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), + Values::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), + Values::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), default => throw $in->badValueException(BlockStateNames::DOUBLE_PLANT_TYPE, $type), })->setTop($in->readBool(BlockStateNames::UPPER_BLOCK_BIT)); }); @@ -476,12 +476,12 @@ final class BlockStateDeserializer{ }); $this->map(Ids::FENCE, function(BlockStateReader $in) : Block{ return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), + Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), + Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), + Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), + Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), + Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), + Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), }; }); @@ -590,10 +590,10 @@ final class BlockStateDeserializer{ $this->map(Ids::LAVA, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::LAVA(), $in)); $this->map(Ids::LEAVES, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::OLD_LEAF_TYPE)){ - StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), - StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), - StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), - StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), + Values::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), + Values::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), + Values::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), + Values::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), default => throw $in->badValueException(BlockStateNames::OLD_LEAF_TYPE, $type), }) ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) @@ -601,8 +601,8 @@ final class BlockStateDeserializer{ }); $this->map(Ids::LEAVES2, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::NEW_LEAF_TYPE)){ - StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), - StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), + Values::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), + Values::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), default => throw $in->badValueException(BlockStateNames::NEW_LEAF_TYPE, $type), }) ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) @@ -617,14 +617,14 @@ final class BlockStateDeserializer{ return VanillaBlocks::LEVER() ->setActivated($in->readBool(BlockStateNames::OPEN_BIT)) ->setFacing(match($value = $in->readString(BlockStateNames::LEVER_DIRECTION)){ - StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), - StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), - StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), - StringValues::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), - StringValues::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), - StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), - StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), - StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), + Values::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), + Values::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), + Values::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), + Values::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), + Values::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), + Values::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), + Values::LEVER_DIRECTION_WEST => LeverFacing::WEST(), + Values::LEVER_DIRECTION_EAST => LeverFacing::EAST(), default => throw $in->badValueException(BlockStateNames::LEVER_DIRECTION, $value), }); }); @@ -663,18 +663,18 @@ final class BlockStateDeserializer{ }); $this->map(Ids::LOG, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), + Values::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), + Values::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), + Values::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), + Values::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), default => throw $in->badValueException(BlockStateNames::OLD_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); }); $this->map(Ids::LOG2, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), + Values::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), + Values::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), default => throw $in->badValueException(BlockStateNames::NEW_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); @@ -690,12 +690,12 @@ final class BlockStateDeserializer{ $this->map(Ids::MOB_SPAWNER, fn() => VanillaBlocks::MONSTER_SPAWNER()); $this->map(Ids::MONSTER_EGG, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::MONSTER_EGG_STONE_TYPE)){ - StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), - StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), + Values::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), + Values::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), + Values::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), + Values::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), + Values::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), + Values::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), default => throw $in->badValueException(BlockStateNames::MONSTER_EGG_STONE_TYPE, $type), }; }); @@ -722,12 +722,12 @@ final class BlockStateDeserializer{ $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::PLANKS, function(BlockStateReader $in) : Block{ return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), + Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), + Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), + Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), + Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), + Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), + Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), }; }); @@ -738,9 +738,9 @@ final class BlockStateDeserializer{ $this->map(Ids::PORTAL, function(BlockStateReader $in) : Block{ return VanillaBlocks::NETHER_PORTAL() ->setAxis(match($value = $in->readString(BlockStateNames::PORTAL_AXIS)){ - StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, - StringValues::PORTAL_AXIS_X => Axis::X, - StringValues::PORTAL_AXIS_Z => Axis::Z, + Values::PORTAL_AXIS_UNKNOWN => Axis::X, + Values::PORTAL_AXIS_X => Axis::X, + Values::PORTAL_AXIS_Z => Axis::Z, default => throw $in->badValueException(BlockStateNames::PORTAL_AXIS, $value), }); }); @@ -750,9 +750,9 @@ final class BlockStateDeserializer{ ->setPowered(true)); $this->map(Ids::PRISMARINE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::PRISMARINE_BLOCK_TYPE)){ - StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), - StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), - StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), + Values::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), + Values::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), + Values::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), default => throw $in->badValueException(BlockStateNames::PRISMARINE_BLOCK_TYPE, $type), }; }); @@ -766,20 +766,20 @@ final class BlockStateDeserializer{ $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::PURPUR_BLOCK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), + Values::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE + Values::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE + Values::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) + Values::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), }; }); $this->map(Ids::PURPUR_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); $this->map(Ids::QUARTZ_BLOCK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) + Values::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), + Values::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) + Values::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), + Values::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), }; }); @@ -791,17 +791,17 @@ final class BlockStateDeserializer{ }); $this->map(Ids::RED_FLOWER, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::FLOWER_TYPE)){ - StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), - StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), - StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? - StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), - StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), - StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), - StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), - StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), - StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), - StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), - StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), + Values::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), + Values::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), + Values::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? + Values::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), + Values::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), + Values::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), + Values::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), + Values::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), + Values::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), + Values::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), + Values::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), default => throw $in->badValueException(BlockStateNames::FLOWER_TYPE, $type), }; }); @@ -812,10 +812,10 @@ final class BlockStateDeserializer{ $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); $this->map(Ids::RED_SANDSTONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), + Values::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), + Values::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), + Values::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), + Values::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), }; }); @@ -845,29 +845,29 @@ final class BlockStateDeserializer{ $this->map(Ids::RESERVED6, fn() => VanillaBlocks::RESERVED6()); $this->map(Ids::SAND, function(BlockStateReader $in) : Block{ return match($value = $in->readString(BlockStateNames::SAND_TYPE)){ - StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), - StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), + Values::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), + Values::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), default => throw $in->badValueException(BlockStateNames::SAND_TYPE, $value), }; }); $this->map(Ids::SANDSTONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), + Values::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), + Values::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), + Values::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), + Values::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), }; }); $this->map(Ids::SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); $this->map(Ids::SAPLING, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::SAPLING_TYPE)){ - StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), - StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), - StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), - StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), - StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), - StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), + Values::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), + Values::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), + Values::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), + Values::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), + Values::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), + Values::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), default => throw $in->badValueException(BlockStateNames::SAPLING_TYPE, $type), }) ->setReady($in->readBool(BlockStateNames::AGE_BIT)); @@ -906,8 +906,8 @@ final class BlockStateDeserializer{ $this->map(Ids::SOUL_SAND, fn() => VanillaBlocks::SOUL_SAND()); $this->map(Ids::SPONGE, function(BlockStateReader $in) : Block{ return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNames::SPONGE_TYPE)){ - StringValues::SPONGE_TYPE_DRY => false, - StringValues::SPONGE_TYPE_WET => true, + Values::SPONGE_TYPE_DRY => false, + Values::SPONGE_TYPE_WET => true, default => throw $in->badValueException(BlockStateNames::SPONGE_TYPE, $type), }); }); @@ -947,13 +947,13 @@ final class BlockStateDeserializer{ }); $this->map(Ids::STONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::STONE_TYPE)){ - StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), - StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), - StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), - StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), - StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), - StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), - StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), + Values::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), + Values::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), + Values::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), + Values::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), + Values::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), + Values::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), + Values::STONE_TYPE_STONE => VanillaBlocks::STONE(), default => throw $in->badValueException(BlockStateNames::STONE_TYPE, $type), }; }); @@ -967,11 +967,11 @@ final class BlockStateDeserializer{ $this->map(Ids::STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); $this->map(Ids::STONEBRICK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::STONE_BRICK_TYPE)){ - StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla - StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), + Values::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla + Values::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), + Values::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), + Values::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), + Values::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), default => throw $in->badValueException(BlockStateNames::STONE_BRICK_TYPE, $type), }; }); @@ -1008,8 +1008,8 @@ final class BlockStateDeserializer{ }); $this->map(Ids::TALLGRASS, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::TALL_GRASS_TYPE)){ - StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), - StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), + Values::TALL_GRASS_TYPE_DEFAULT, Values::TALL_GRASS_TYPE_SNOW, Values::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), + Values::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), default => throw $in->badValueException(BlockStateNames::TALL_GRASS_TYPE, $type), }; }); @@ -1078,12 +1078,12 @@ final class BlockStateDeserializer{ //TODO: our impl doesn't support axis yet $stripped = $in->readBool(BlockStateNames::STRIPPED_BIT); return match($woodType = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), + Values::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), + Values::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), + Values::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), + Values::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), + Values::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), + Values::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodType), }; }); diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index c73b4f7a5..8f28ec786 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -42,7 +42,7 @@ use pocketmine\block\Stem; use pocketmine\block\Trapdoor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -184,14 +184,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE)){ - StringValues::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), - StringValues::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), - StringValues::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), + Values::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), + Values::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), + Values::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), + Values::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), + Values::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), + Values::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), + Values::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE, $type), }; } @@ -200,14 +200,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab2Type(BlockStateReader $in) : Slab{ // * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_2)){ - StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), - StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), + Values::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), + Values::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), + Values::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), + Values::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), + Values::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), + Values::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_2, $type), }; } @@ -216,14 +216,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab3Type(BlockStateReader $in) : Slab{ // * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_3)){ - StringValues::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), - StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), + Values::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), + Values::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), + Values::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), + Values::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), + Values::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), + Values::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), + Values::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_3, $type), }; } @@ -232,11 +232,11 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab4Type(BlockStateReader $in) : Slab{ // * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_4)){ - StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), - StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), - StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), - StringValues::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), + Values::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), + Values::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), + Values::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), + Values::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_4, $type), }; } @@ -245,12 +245,12 @@ final class BlockStateDeserializerHelper{ public static function mapWoodenSlabType(BlockStateReader $in) : Slab{ // * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce return match($type = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), + Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), + Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), + Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), + Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), + Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), + Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $type), }; } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 21537e452..d0767daa1 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -27,7 +27,7 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; @@ -161,22 +161,22 @@ final class BlockStateReader{ public function readColor() : DyeColor{ // * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow return match($color = $this->readString(BlockStateNames::COLOR)){ - StringValues::COLOR_BLACK => DyeColor::BLACK(), - StringValues::COLOR_BLUE => DyeColor::BLUE(), - StringValues::COLOR_BROWN => DyeColor::BROWN(), - StringValues::COLOR_CYAN => DyeColor::CYAN(), - StringValues::COLOR_GRAY => DyeColor::GRAY(), - StringValues::COLOR_GREEN => DyeColor::GREEN(), - StringValues::COLOR_LIGHT_BLUE => DyeColor::LIGHT_BLUE(), - StringValues::COLOR_LIME => DyeColor::LIME(), - StringValues::COLOR_MAGENTA => DyeColor::MAGENTA(), - StringValues::COLOR_ORANGE => DyeColor::ORANGE(), - StringValues::COLOR_PINK => DyeColor::PINK(), - StringValues::COLOR_PURPLE => DyeColor::PURPLE(), - StringValues::COLOR_RED => DyeColor::RED(), - StringValues::COLOR_SILVER => DyeColor::LIGHT_GRAY(), - StringValues::COLOR_WHITE => DyeColor::WHITE(), - StringValues::COLOR_YELLOW => DyeColor::YELLOW(), + Values::COLOR_BLACK => DyeColor::BLACK(), + Values::COLOR_BLUE => DyeColor::BLUE(), + Values::COLOR_BROWN => DyeColor::BROWN(), + Values::COLOR_CYAN => DyeColor::CYAN(), + Values::COLOR_GRAY => DyeColor::GRAY(), + Values::COLOR_GREEN => DyeColor::GREEN(), + Values::COLOR_LIGHT_BLUE => DyeColor::LIGHT_BLUE(), + Values::COLOR_LIME => DyeColor::LIME(), + Values::COLOR_MAGENTA => DyeColor::MAGENTA(), + Values::COLOR_ORANGE => DyeColor::ORANGE(), + Values::COLOR_PINK => DyeColor::PINK(), + Values::COLOR_PURPLE => DyeColor::PURPLE(), + Values::COLOR_RED => DyeColor::RED(), + Values::COLOR_SILVER => DyeColor::LIGHT_GRAY(), + Values::COLOR_WHITE => DyeColor::WHITE(), + Values::COLOR_YELLOW => DyeColor::YELLOW(), default => throw $this->badValueException(BlockStateNames::COLOR, $color), }; } @@ -215,9 +215,9 @@ final class BlockStateReader{ public function readPillarAxis() : int{ $rawValue = $this->readString(BlockStateNames::PILLAR_AXIS); $value = [ - StringValues::PILLAR_AXIS_X => Axis::X, - StringValues::PILLAR_AXIS_Y => Axis::Y, - StringValues::PILLAR_AXIS_Z => Axis::Z + Values::PILLAR_AXIS_X => Axis::X, + Values::PILLAR_AXIS_Y => Axis::Y, + Values::PILLAR_AXIS_Z => Axis::Z ][$rawValue] ?? null; if($value === null){ throw $this->badValueException(BlockStateNames::PILLAR_AXIS, $rawValue, "Invalid axis value"); @@ -236,12 +236,12 @@ final class BlockStateReader{ */ public function readTorchFacing() : int{ return match($rawValue = $this->readString(BlockStateNames::TORCH_FACING_DIRECTION)){ - StringValues::TORCH_FACING_DIRECTION_EAST => Facing::EAST, - StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, - StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, - StringValues::TORCH_FACING_DIRECTION_TOP => Facing::UP, - StringValues::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it - StringValues::TORCH_FACING_DIRECTION_WEST => Facing::WEST, + Values::TORCH_FACING_DIRECTION_EAST => Facing::EAST, + Values::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, + Values::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, + Values::TORCH_FACING_DIRECTION_TOP => Facing::UP, + Values::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it + Values::TORCH_FACING_DIRECTION_WEST => Facing::WEST, default => throw $this->badValueException(BlockStateNames::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), }; } @@ -249,11 +249,11 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readCoralType() : CoralType{ return match($type = $this->readString(BlockStateNames::CORAL_COLOR)){ - StringValues::CORAL_COLOR_BLUE => CoralType::TUBE(), - StringValues::CORAL_COLOR_PINK => CoralType::BRAIN(), - StringValues::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), - StringValues::CORAL_COLOR_RED => CoralType::FIRE(), - StringValues::CORAL_COLOR_YELLOW => CoralType::HORN(), + Values::CORAL_COLOR_BLUE => CoralType::TUBE(), + Values::CORAL_COLOR_PINK => CoralType::BRAIN(), + Values::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), + Values::CORAL_COLOR_RED => CoralType::FIRE(), + Values::CORAL_COLOR_YELLOW => CoralType::HORN(), default => throw $this->badValueException(BlockStateNames::CORAL_COLOR, $type), }; } @@ -261,10 +261,10 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readBellAttachmentType() : BellAttachmentType{ return match($type = $this->readString(BlockStateNames::ATTACHMENT)){ - StringValues::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), - StringValues::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), - StringValues::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), - StringValues::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), + Values::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), + Values::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), + Values::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), + Values::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), default => throw $this->badValueException(BlockStateNames::ATTACHMENT, $type), }; } diff --git a/src/data/bedrock/blockstate/BlockStateStringValues.php b/src/data/bedrock/blockstate/BlockStateStringValues.php deleted file mode 100644 index 689f22be4..000000000 --- a/src/data/bedrock/blockstate/BlockStateStringValues.php +++ /dev/null @@ -1,297 +0,0 @@ -writeString(BlockStateNames::COLOR, match($color->id()){ - DyeColor::BLACK()->id() => StringValues::COLOR_BLACK, - DyeColor::BLUE()->id() => StringValues::COLOR_BLUE, - DyeColor::BROWN()->id() => StringValues::COLOR_BROWN, - DyeColor::CYAN()->id() => StringValues::COLOR_CYAN, - DyeColor::GRAY()->id() => StringValues::COLOR_GRAY, - DyeColor::GREEN()->id() => StringValues::COLOR_GREEN, - DyeColor::LIGHT_BLUE()->id() => StringValues::COLOR_LIGHT_BLUE, - DyeColor::LIGHT_GRAY()->id() => StringValues::COLOR_SILVER, - DyeColor::LIME()->id() => StringValues::COLOR_LIME, - DyeColor::MAGENTA()->id() => StringValues::COLOR_MAGENTA, - DyeColor::ORANGE()->id() => StringValues::COLOR_ORANGE, - DyeColor::PINK()->id() => StringValues::COLOR_PINK, - DyeColor::PURPLE()->id() => StringValues::COLOR_PURPLE, - DyeColor::RED()->id() => StringValues::COLOR_RED, - DyeColor::WHITE()->id() => StringValues::COLOR_WHITE, - DyeColor::YELLOW()->id() => StringValues::COLOR_YELLOW, + DyeColor::BLACK()->id() => Values::COLOR_BLACK, + DyeColor::BLUE()->id() => Values::COLOR_BLUE, + DyeColor::BROWN()->id() => Values::COLOR_BROWN, + DyeColor::CYAN()->id() => Values::COLOR_CYAN, + DyeColor::GRAY()->id() => Values::COLOR_GRAY, + DyeColor::GREEN()->id() => Values::COLOR_GREEN, + DyeColor::LIGHT_BLUE()->id() => Values::COLOR_LIGHT_BLUE, + DyeColor::LIGHT_GRAY()->id() => Values::COLOR_SILVER, + DyeColor::LIME()->id() => Values::COLOR_LIME, + DyeColor::MAGENTA()->id() => Values::COLOR_MAGENTA, + DyeColor::ORANGE()->id() => Values::COLOR_ORANGE, + DyeColor::PINK()->id() => Values::COLOR_PINK, + DyeColor::PURPLE()->id() => Values::COLOR_PURPLE, + DyeColor::RED()->id() => Values::COLOR_RED, + DyeColor::WHITE()->id() => Values::COLOR_WHITE, + DyeColor::YELLOW()->id() => Values::COLOR_YELLOW, default => throw new BlockStateSerializeException("Invalid Color " . $color->name()) }); return $this; @@ -164,9 +164,9 @@ final class BlockStateWriter{ /** @return $this */ public function writePillarAxis(int $axis) : self{ $this->writeString(BlockStateNames::PILLAR_AXIS, match($axis){ - Axis::X => StringValues::PILLAR_AXIS_X, - Axis::Y => StringValues::PILLAR_AXIS_Y, - Axis::Z => StringValues::PILLAR_AXIS_Z, + Axis::X => Values::PILLAR_AXIS_X, + Axis::Y => Values::PILLAR_AXIS_Y, + Axis::Z => Values::PILLAR_AXIS_Z, default => throw new BlockStateSerializeException("Invalid axis $axis") }); return $this; @@ -185,11 +185,11 @@ final class BlockStateWriter{ /** @return $this */ public function writeTorchFacing(int $facing) : self{ $this->writeString(BlockStateNames::TORCH_FACING_DIRECTION, match($facing){ - Facing::UP => StringValues::TORCH_FACING_DIRECTION_TOP, - Facing::NORTH => StringValues::TORCH_FACING_DIRECTION_NORTH, - Facing::SOUTH => StringValues::TORCH_FACING_DIRECTION_SOUTH, - Facing::WEST => StringValues::TORCH_FACING_DIRECTION_WEST, - Facing::EAST => StringValues::TORCH_FACING_DIRECTION_EAST, + Facing::UP => Values::TORCH_FACING_DIRECTION_TOP, + Facing::NORTH => Values::TORCH_FACING_DIRECTION_NORTH, + Facing::SOUTH => Values::TORCH_FACING_DIRECTION_SOUTH, + Facing::WEST => Values::TORCH_FACING_DIRECTION_WEST, + Facing::EAST => Values::TORCH_FACING_DIRECTION_EAST, default => throw new BlockStateSerializeException("Invalid Torch facing $facing") }); return $this; @@ -198,11 +198,11 @@ final class BlockStateWriter{ /** @return $this */ public function writeCoralType(CoralType $coralType) : self{ $this->writeString(BlockStateNames::CORAL_COLOR, match($coralType->id()){ - CoralType::TUBE()->id() => StringValues::CORAL_COLOR_BLUE, - CoralType::BRAIN()->id() => StringValues::CORAL_COLOR_PINK, - CoralType::BUBBLE()->id() => StringValues::CORAL_COLOR_PURPLE, - CoralType::FIRE()->id() => StringValues::CORAL_COLOR_RED, - CoralType::HORN()->id() => StringValues::CORAL_COLOR_YELLOW, + CoralType::TUBE()->id() => Values::CORAL_COLOR_BLUE, + CoralType::BRAIN()->id() => Values::CORAL_COLOR_PINK, + CoralType::BUBBLE()->id() => Values::CORAL_COLOR_PURPLE, + CoralType::FIRE()->id() => Values::CORAL_COLOR_RED, + CoralType::HORN()->id() => Values::CORAL_COLOR_YELLOW, default => throw new BlockStateSerializeException("Invalid Coral type " . $coralType->name()) }); return $this; @@ -211,10 +211,10 @@ final class BlockStateWriter{ /** @return $this */ public function writeBellAttachmentType(BellAttachmentType $attachmentType) : self{ $this->writeString(BlockStateNames::ATTACHMENT, match($attachmentType->id()){ - BellAttachmentType::FLOOR()->id() => StringValues::ATTACHMENT_STANDING, - BellAttachmentType::CEILING()->id() => StringValues::ATTACHMENT_HANGING, - BellAttachmentType::ONE_WALL()->id() => StringValues::ATTACHMENT_SIDE, - BellAttachmentType::TWO_WALLS()->id() => StringValues::ATTACHMENT_MULTIPLE, + BellAttachmentType::FLOOR()->id() => Values::ATTACHMENT_STANDING, + BellAttachmentType::CEILING()->id() => Values::ATTACHMENT_HANGING, + BellAttachmentType::ONE_WALL()->id() => Values::ATTACHMENT_SIDE, + BellAttachmentType::TWO_WALLS()->id() => Values::ATTACHMENT_MULTIPLE, default => throw new BlockStateSerializeException("Invalid Bell attachment type " . $attachmentType->name()) }); return $this; From 03e3ecdbd36df0be98bb8fba53d2f8462b23599e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 17:51:49 +0000 Subject: [PATCH 009/692] Revert "BlockStateValues now includes integer values too" This reverts commit 0626edbcddf16463b4a69566976bc2b47c64660a. --- .../blockstate/BlockStateDeserializer.php | 250 ++--- .../BlockStateDeserializerHelper.php | 72 +- .../bedrock/blockstate/BlockStateReader.php | 70 +- .../blockstate/BlockStateStringValues.php | 297 ++++++ .../bedrock/blockstate/BlockStateValues.php | 863 ------------------ .../bedrock/blockstate/BlockStateWriter.php | 68 +- 6 files changed, 527 insertions(+), 1093 deletions(-) create mode 100644 src/data/bedrock/blockstate/BlockStateStringValues.php delete mode 100644 src/data/bedrock/blockstate/BlockStateValues.php diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 64ce43116..89a580e3a 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -33,7 +33,7 @@ use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\blockstate\BlockStateDeserializerHelper as Helper; -use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -82,10 +82,10 @@ final class BlockStateDeserializer{ $this->map(Ids::ANVIL, function(BlockStateReader $in) : Block{ return VanillaBlocks::ANVIL() ->setDamage(match($value = $in->readString(BlockStateNames::DAMAGE)){ - Values::DAMAGE_UNDAMAGED => 0, - Values::DAMAGE_SLIGHTLY_DAMAGED => 1, - Values::DAMAGE_VERY_DAMAGED => 2, - Values::DAMAGE_BROKEN => 0, + StringValues::DAMAGE_UNDAMAGED => 0, + StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, + StringValues::DAMAGE_VERY_DAMAGED => 2, + StringValues::DAMAGE_BROKEN => 0, default => throw $in->badValueException(BlockStateNames::DAMAGE, $value), }) ->setFacing($in->readLegacyHorizontalFacing()); @@ -93,15 +93,15 @@ final class BlockStateDeserializer{ $this->map(Ids::BAMBOO, function(BlockStateReader $in) : Block{ return VanillaBlocks::BAMBOO() ->setLeafSize(match($value = $in->readString(BlockStateNames::BAMBOO_LEAF_SIZE)){ - Values::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, - Values::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, - Values::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, default => throw $in->badValueException(BlockStateNames::BAMBOO_LEAF_SIZE, $value), }) ->setReady($in->readBool(BlockStateNames::AGE_BIT)) ->setThick(match($value = $in->readString(BlockStateNames::BAMBOO_STALK_THICKNESS)){ - Values::BAMBOO_STALK_THICKNESS_THIN => false, - Values::BAMBOO_STALK_THICKNESS_THICK => true, + StringValues::BAMBOO_STALK_THICKNESS_THIN => false, + StringValues::BAMBOO_STALK_THICKNESS_THICK => true, default => throw $in->badValueException(BlockStateNames::BAMBOO_STALK_THICKNESS, $value), }); }); @@ -191,10 +191,10 @@ final class BlockStateDeserializer{ $this->map(Ids::CHEMICAL_HEAT, fn() => VanillaBlocks::CHEMICAL_HEAT()); $this->map(Ids::CHEMISTRY_TABLE, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::CHEMISTRY_TABLE_TYPE)){ - Values::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), - Values::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), - Values::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), - Values::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), + StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), + StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), + StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), + StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), default => throw $in->badValueException(BlockStateNames::CHEMISTRY_TABLE_TYPE, $type), })->setFacing($in->readLegacyHorizontalFacing()); }); @@ -240,8 +240,8 @@ final class BlockStateDeserializer{ ->setCoralType($in->readCoralType()) ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(true)); + $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(true)); $this->map(Ids::CORAL_FAN_HANG, function(BlockStateReader $in) : Block{ return VanillaBlocks::WALL_CORAL_FAN() ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) @@ -299,19 +299,19 @@ final class BlockStateDeserializer{ $this->map(Ids::DIRT, function(BlockStateReader $in) : Block{ return VanillaBlocks::DIRT() ->setCoarse(match($value = $in->readString(BlockStateNames::DIRT_TYPE)){ - Values::DIRT_TYPE_NORMAL => false, - Values::DIRT_TYPE_COARSE => true, + StringValues::DIRT_TYPE_NORMAL => false, + StringValues::DIRT_TYPE_COARSE => true, default => throw $in->badValueException(BlockStateNames::DIRT_TYPE, $value), }); }); $this->map(Ids::DOUBLE_PLANT, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::DOUBLE_PLANT_TYPE)){ - Values::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), - Values::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), - Values::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), - Values::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), - Values::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), - Values::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), + StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), + StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), + StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), + StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), + StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), + StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), default => throw $in->badValueException(BlockStateNames::DOUBLE_PLANT_TYPE, $type), })->setTop($in->readBool(BlockStateNames::UPPER_BLOCK_BIT)); }); @@ -476,12 +476,12 @@ final class BlockStateDeserializer{ }); $this->map(Ids::FENCE, function(BlockStateReader $in) : Block{ return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), - Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), - Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), - Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), - Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), - Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), }; }); @@ -590,10 +590,10 @@ final class BlockStateDeserializer{ $this->map(Ids::LAVA, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::LAVA(), $in)); $this->map(Ids::LEAVES, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::OLD_LEAF_TYPE)){ - Values::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), - Values::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), - Values::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), - Values::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), + StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), + StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), + StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), + StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), default => throw $in->badValueException(BlockStateNames::OLD_LEAF_TYPE, $type), }) ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) @@ -601,8 +601,8 @@ final class BlockStateDeserializer{ }); $this->map(Ids::LEAVES2, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::NEW_LEAF_TYPE)){ - Values::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), - Values::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), + StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), + StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), default => throw $in->badValueException(BlockStateNames::NEW_LEAF_TYPE, $type), }) ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) @@ -617,14 +617,14 @@ final class BlockStateDeserializer{ return VanillaBlocks::LEVER() ->setActivated($in->readBool(BlockStateNames::OPEN_BIT)) ->setFacing(match($value = $in->readString(BlockStateNames::LEVER_DIRECTION)){ - Values::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), - Values::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), - Values::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), - Values::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), - Values::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), - Values::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), - Values::LEVER_DIRECTION_WEST => LeverFacing::WEST(), - Values::LEVER_DIRECTION_EAST => LeverFacing::EAST(), + StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), + StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), + StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), + StringValues::LEVER_DIRECTION_UP_EAST_WEST => LeverFacing::UP_AXIS_X(), + StringValues::LEVER_DIRECTION_NORTH => LeverFacing::NORTH(), + StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), + StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), + StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), default => throw $in->badValueException(BlockStateNames::LEVER_DIRECTION, $value), }); }); @@ -663,18 +663,18 @@ final class BlockStateDeserializer{ }); $this->map(Ids::LOG, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::OLD_LOG_TYPE)){ - Values::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), - Values::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), - Values::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), - Values::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), + StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), default => throw $in->badValueException(BlockStateNames::OLD_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); }); $this->map(Ids::LOG2, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::NEW_LOG_TYPE)){ - Values::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), - Values::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), + StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), default => throw $in->badValueException(BlockStateNames::NEW_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); @@ -690,12 +690,12 @@ final class BlockStateDeserializer{ $this->map(Ids::MOB_SPAWNER, fn() => VanillaBlocks::MONSTER_SPAWNER()); $this->map(Ids::MONSTER_EGG, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::MONSTER_EGG_STONE_TYPE)){ - Values::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), - Values::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), - Values::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), - Values::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), - Values::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), - Values::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), + StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), default => throw $in->badValueException(BlockStateNames::MONSTER_EGG_STONE_TYPE, $type), }; }); @@ -722,12 +722,12 @@ final class BlockStateDeserializer{ $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::PLANKS, function(BlockStateReader $in) : Block{ return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), - Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), - Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), - Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), - Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), - Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), }; }); @@ -738,9 +738,9 @@ final class BlockStateDeserializer{ $this->map(Ids::PORTAL, function(BlockStateReader $in) : Block{ return VanillaBlocks::NETHER_PORTAL() ->setAxis(match($value = $in->readString(BlockStateNames::PORTAL_AXIS)){ - Values::PORTAL_AXIS_UNKNOWN => Axis::X, - Values::PORTAL_AXIS_X => Axis::X, - Values::PORTAL_AXIS_Z => Axis::Z, + StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, + StringValues::PORTAL_AXIS_X => Axis::X, + StringValues::PORTAL_AXIS_Z => Axis::Z, default => throw $in->badValueException(BlockStateNames::PORTAL_AXIS, $value), }); }); @@ -750,9 +750,9 @@ final class BlockStateDeserializer{ ->setPowered(true)); $this->map(Ids::PRISMARINE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::PRISMARINE_BLOCK_TYPE)){ - Values::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), - Values::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), - Values::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), + StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), + StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), + StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), default => throw $in->badValueException(BlockStateNames::PRISMARINE_BLOCK_TYPE, $type), }; }); @@ -766,20 +766,20 @@ final class BlockStateDeserializer{ $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::PURPUR_BLOCK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ - Values::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE - Values::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE - Values::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) - Values::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), }; }); $this->map(Ids::PURPUR_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); $this->map(Ids::QUARTZ_BLOCK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ - Values::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), - Values::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) - Values::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), - Values::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), }; }); @@ -791,17 +791,17 @@ final class BlockStateDeserializer{ }); $this->map(Ids::RED_FLOWER, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::FLOWER_TYPE)){ - Values::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), - Values::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), - Values::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? - Values::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), - Values::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), - Values::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), - Values::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), - Values::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), - Values::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), - Values::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), - Values::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), + StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), + StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), + StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? + StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), + StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), + StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), + StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), + StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), + StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), + StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), + StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), default => throw $in->badValueException(BlockStateNames::FLOWER_TYPE, $type), }; }); @@ -812,10 +812,10 @@ final class BlockStateDeserializer{ $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); $this->map(Ids::RED_SANDSTONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - Values::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), - Values::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), - Values::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), - Values::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), }; }); @@ -845,29 +845,29 @@ final class BlockStateDeserializer{ $this->map(Ids::RESERVED6, fn() => VanillaBlocks::RESERVED6()); $this->map(Ids::SAND, function(BlockStateReader $in) : Block{ return match($value = $in->readString(BlockStateNames::SAND_TYPE)){ - Values::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), - Values::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), + StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), + StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), default => throw $in->badValueException(BlockStateNames::SAND_TYPE, $value), }; }); $this->map(Ids::SANDSTONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - Values::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), - Values::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), - Values::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), - Values::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), + StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), }; }); $this->map(Ids::SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); $this->map(Ids::SAPLING, function(BlockStateReader $in) : Block{ return (match($type = $in->readString(BlockStateNames::SAPLING_TYPE)){ - Values::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), - Values::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), - Values::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), - Values::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), - Values::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), - Values::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), + StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), + StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), + StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), + StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), + StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), + StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), default => throw $in->badValueException(BlockStateNames::SAPLING_TYPE, $type), }) ->setReady($in->readBool(BlockStateNames::AGE_BIT)); @@ -906,8 +906,8 @@ final class BlockStateDeserializer{ $this->map(Ids::SOUL_SAND, fn() => VanillaBlocks::SOUL_SAND()); $this->map(Ids::SPONGE, function(BlockStateReader $in) : Block{ return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNames::SPONGE_TYPE)){ - Values::SPONGE_TYPE_DRY => false, - Values::SPONGE_TYPE_WET => true, + StringValues::SPONGE_TYPE_DRY => false, + StringValues::SPONGE_TYPE_WET => true, default => throw $in->badValueException(BlockStateNames::SPONGE_TYPE, $type), }); }); @@ -947,13 +947,13 @@ final class BlockStateDeserializer{ }); $this->map(Ids::STONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::STONE_TYPE)){ - Values::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), - Values::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), - Values::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), - Values::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), - Values::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), - Values::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), - Values::STONE_TYPE_STONE => VanillaBlocks::STONE(), + StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), + StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), + StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), + StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), + StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), + StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), + StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), default => throw $in->badValueException(BlockStateNames::STONE_TYPE, $type), }; }); @@ -967,11 +967,11 @@ final class BlockStateDeserializer{ $this->map(Ids::STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); $this->map(Ids::STONEBRICK, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::STONE_BRICK_TYPE)){ - Values::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla - Values::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), - Values::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), - Values::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), - Values::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla + StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), default => throw $in->badValueException(BlockStateNames::STONE_BRICK_TYPE, $type), }; }); @@ -1008,8 +1008,8 @@ final class BlockStateDeserializer{ }); $this->map(Ids::TALLGRASS, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::TALL_GRASS_TYPE)){ - Values::TALL_GRASS_TYPE_DEFAULT, Values::TALL_GRASS_TYPE_SNOW, Values::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), - Values::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), + StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), + StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), default => throw $in->badValueException(BlockStateNames::TALL_GRASS_TYPE, $type), }; }); @@ -1078,12 +1078,12 @@ final class BlockStateDeserializer{ //TODO: our impl doesn't support axis yet $stripped = $in->readBool(BlockStateNames::STRIPPED_BIT); return match($woodType = $in->readString(BlockStateNames::WOOD_TYPE)){ - Values::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), - Values::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), - Values::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), - Values::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), - Values::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), - Values::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), + StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodType), }; }); diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index 8f28ec786..c73b4f7a5 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -42,7 +42,7 @@ use pocketmine\block\Stem; use pocketmine\block\Trapdoor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; -use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -184,14 +184,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE)){ - Values::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), - Values::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), - Values::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), - Values::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), - Values::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), - Values::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), - Values::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), - Values::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), + StringValues::STONE_SLAB_TYPE_BRICK => VanillaBlocks::BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_QUARTZ => VanillaBlocks::QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_SMOOTH_STONE => VanillaBlocks::SMOOTH_STONE_SLAB(), + StringValues::STONE_SLAB_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_WOOD => VanillaBlocks::FAKE_WOODEN_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE, $type), }; } @@ -200,14 +200,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab2Type(BlockStateReader $in) : Slab{ // * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_2)){ - Values::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), - Values::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), - Values::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), - Values::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), - Values::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), - Values::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), - Values::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), - Values::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK => VanillaBlocks::PRISMARINE_BRICKS_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK => VanillaBlocks::DARK_PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH => VanillaBlocks::PRISMARINE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_PURPUR => VanillaBlocks::PURPUR_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE => VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_2, $type), }; } @@ -216,14 +216,14 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab3Type(BlockStateReader $in) : Slab{ // * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_3)){ - Values::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), - Values::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), - Values::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), - Values::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), - Values::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), - Values::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), - Values::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), - Values::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_ANDESITE => VanillaBlocks::ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_DIORITE => VanillaBlocks::DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK => VanillaBlocks::END_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_3_GRANITE => VanillaBlocks::GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE => VanillaBlocks::POLISHED_ANDESITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE => VanillaBlocks::POLISHED_DIORITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE => VanillaBlocks::POLISHED_GRANITE_SLAB(), + StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE => VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_3, $type), }; } @@ -232,11 +232,11 @@ final class BlockStateDeserializerHelper{ public static function mapStoneSlab4Type(BlockStateReader $in) : Slab{ // * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone return match($type = $in->readString(BlockStateNames::STONE_SLAB_TYPE_4)){ - Values::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), - Values::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), - Values::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), - Values::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), - Values::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE => VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE => VanillaBlocks::CUT_SANDSTONE_SLAB(), + StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), + StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ => VanillaBlocks::SMOOTH_QUARTZ_SLAB(), + StringValues::STONE_SLAB_TYPE_4_STONE => VanillaBlocks::STONE_SLAB(), default => throw $in->badValueException(BlockStateNames::STONE_SLAB_TYPE_4, $type), }; } @@ -245,12 +245,12 @@ final class BlockStateDeserializerHelper{ public static function mapWoodenSlabType(BlockStateReader $in) : Slab{ // * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce return match($type = $in->readString(BlockStateNames::WOOD_TYPE)){ - Values::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), - Values::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), - Values::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), - Values::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), - Values::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), - Values::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), + StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_SLAB(), + StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_SLAB(), + StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SLAB(), + StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SLAB(), + StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_SLAB(), + StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SLAB(), default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $type), }; } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index d0767daa1..21537e452 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -27,7 +27,7 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; -use pocketmine\data\bedrock\blockstate\BlockStateValues as Values; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; @@ -161,22 +161,22 @@ final class BlockStateReader{ public function readColor() : DyeColor{ // * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow return match($color = $this->readString(BlockStateNames::COLOR)){ - Values::COLOR_BLACK => DyeColor::BLACK(), - Values::COLOR_BLUE => DyeColor::BLUE(), - Values::COLOR_BROWN => DyeColor::BROWN(), - Values::COLOR_CYAN => DyeColor::CYAN(), - Values::COLOR_GRAY => DyeColor::GRAY(), - Values::COLOR_GREEN => DyeColor::GREEN(), - Values::COLOR_LIGHT_BLUE => DyeColor::LIGHT_BLUE(), - Values::COLOR_LIME => DyeColor::LIME(), - Values::COLOR_MAGENTA => DyeColor::MAGENTA(), - Values::COLOR_ORANGE => DyeColor::ORANGE(), - Values::COLOR_PINK => DyeColor::PINK(), - Values::COLOR_PURPLE => DyeColor::PURPLE(), - Values::COLOR_RED => DyeColor::RED(), - Values::COLOR_SILVER => DyeColor::LIGHT_GRAY(), - Values::COLOR_WHITE => DyeColor::WHITE(), - Values::COLOR_YELLOW => DyeColor::YELLOW(), + StringValues::COLOR_BLACK => DyeColor::BLACK(), + StringValues::COLOR_BLUE => DyeColor::BLUE(), + StringValues::COLOR_BROWN => DyeColor::BROWN(), + StringValues::COLOR_CYAN => DyeColor::CYAN(), + StringValues::COLOR_GRAY => DyeColor::GRAY(), + StringValues::COLOR_GREEN => DyeColor::GREEN(), + StringValues::COLOR_LIGHT_BLUE => DyeColor::LIGHT_BLUE(), + StringValues::COLOR_LIME => DyeColor::LIME(), + StringValues::COLOR_MAGENTA => DyeColor::MAGENTA(), + StringValues::COLOR_ORANGE => DyeColor::ORANGE(), + StringValues::COLOR_PINK => DyeColor::PINK(), + StringValues::COLOR_PURPLE => DyeColor::PURPLE(), + StringValues::COLOR_RED => DyeColor::RED(), + StringValues::COLOR_SILVER => DyeColor::LIGHT_GRAY(), + StringValues::COLOR_WHITE => DyeColor::WHITE(), + StringValues::COLOR_YELLOW => DyeColor::YELLOW(), default => throw $this->badValueException(BlockStateNames::COLOR, $color), }; } @@ -215,9 +215,9 @@ final class BlockStateReader{ public function readPillarAxis() : int{ $rawValue = $this->readString(BlockStateNames::PILLAR_AXIS); $value = [ - Values::PILLAR_AXIS_X => Axis::X, - Values::PILLAR_AXIS_Y => Axis::Y, - Values::PILLAR_AXIS_Z => Axis::Z + StringValues::PILLAR_AXIS_X => Axis::X, + StringValues::PILLAR_AXIS_Y => Axis::Y, + StringValues::PILLAR_AXIS_Z => Axis::Z ][$rawValue] ?? null; if($value === null){ throw $this->badValueException(BlockStateNames::PILLAR_AXIS, $rawValue, "Invalid axis value"); @@ -236,12 +236,12 @@ final class BlockStateReader{ */ public function readTorchFacing() : int{ return match($rawValue = $this->readString(BlockStateNames::TORCH_FACING_DIRECTION)){ - Values::TORCH_FACING_DIRECTION_EAST => Facing::EAST, - Values::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, - Values::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, - Values::TORCH_FACING_DIRECTION_TOP => Facing::UP, - Values::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it - Values::TORCH_FACING_DIRECTION_WEST => Facing::WEST, + StringValues::TORCH_FACING_DIRECTION_EAST => Facing::EAST, + StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, + StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, + StringValues::TORCH_FACING_DIRECTION_TOP => Facing::UP, + StringValues::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it + StringValues::TORCH_FACING_DIRECTION_WEST => Facing::WEST, default => throw $this->badValueException(BlockStateNames::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), }; } @@ -249,11 +249,11 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readCoralType() : CoralType{ return match($type = $this->readString(BlockStateNames::CORAL_COLOR)){ - Values::CORAL_COLOR_BLUE => CoralType::TUBE(), - Values::CORAL_COLOR_PINK => CoralType::BRAIN(), - Values::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), - Values::CORAL_COLOR_RED => CoralType::FIRE(), - Values::CORAL_COLOR_YELLOW => CoralType::HORN(), + StringValues::CORAL_COLOR_BLUE => CoralType::TUBE(), + StringValues::CORAL_COLOR_PINK => CoralType::BRAIN(), + StringValues::CORAL_COLOR_PURPLE => CoralType::BUBBLE(), + StringValues::CORAL_COLOR_RED => CoralType::FIRE(), + StringValues::CORAL_COLOR_YELLOW => CoralType::HORN(), default => throw $this->badValueException(BlockStateNames::CORAL_COLOR, $type), }; } @@ -261,10 +261,10 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readBellAttachmentType() : BellAttachmentType{ return match($type = $this->readString(BlockStateNames::ATTACHMENT)){ - Values::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), - Values::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), - Values::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), - Values::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), + StringValues::ATTACHMENT_HANGING => BellAttachmentType::CEILING(), + StringValues::ATTACHMENT_STANDING => BellAttachmentType::FLOOR(), + StringValues::ATTACHMENT_SIDE => BellAttachmentType::ONE_WALL(), + StringValues::ATTACHMENT_MULTIPLE => BellAttachmentType::TWO_WALLS(), default => throw $this->badValueException(BlockStateNames::ATTACHMENT, $type), }; } diff --git a/src/data/bedrock/blockstate/BlockStateStringValues.php b/src/data/bedrock/blockstate/BlockStateStringValues.php new file mode 100644 index 000000000..689f22be4 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateStringValues.php @@ -0,0 +1,297 @@ +writeString(BlockStateNames::COLOR, match($color->id()){ - DyeColor::BLACK()->id() => Values::COLOR_BLACK, - DyeColor::BLUE()->id() => Values::COLOR_BLUE, - DyeColor::BROWN()->id() => Values::COLOR_BROWN, - DyeColor::CYAN()->id() => Values::COLOR_CYAN, - DyeColor::GRAY()->id() => Values::COLOR_GRAY, - DyeColor::GREEN()->id() => Values::COLOR_GREEN, - DyeColor::LIGHT_BLUE()->id() => Values::COLOR_LIGHT_BLUE, - DyeColor::LIGHT_GRAY()->id() => Values::COLOR_SILVER, - DyeColor::LIME()->id() => Values::COLOR_LIME, - DyeColor::MAGENTA()->id() => Values::COLOR_MAGENTA, - DyeColor::ORANGE()->id() => Values::COLOR_ORANGE, - DyeColor::PINK()->id() => Values::COLOR_PINK, - DyeColor::PURPLE()->id() => Values::COLOR_PURPLE, - DyeColor::RED()->id() => Values::COLOR_RED, - DyeColor::WHITE()->id() => Values::COLOR_WHITE, - DyeColor::YELLOW()->id() => Values::COLOR_YELLOW, + DyeColor::BLACK()->id() => StringValues::COLOR_BLACK, + DyeColor::BLUE()->id() => StringValues::COLOR_BLUE, + DyeColor::BROWN()->id() => StringValues::COLOR_BROWN, + DyeColor::CYAN()->id() => StringValues::COLOR_CYAN, + DyeColor::GRAY()->id() => StringValues::COLOR_GRAY, + DyeColor::GREEN()->id() => StringValues::COLOR_GREEN, + DyeColor::LIGHT_BLUE()->id() => StringValues::COLOR_LIGHT_BLUE, + DyeColor::LIGHT_GRAY()->id() => StringValues::COLOR_SILVER, + DyeColor::LIME()->id() => StringValues::COLOR_LIME, + DyeColor::MAGENTA()->id() => StringValues::COLOR_MAGENTA, + DyeColor::ORANGE()->id() => StringValues::COLOR_ORANGE, + DyeColor::PINK()->id() => StringValues::COLOR_PINK, + DyeColor::PURPLE()->id() => StringValues::COLOR_PURPLE, + DyeColor::RED()->id() => StringValues::COLOR_RED, + DyeColor::WHITE()->id() => StringValues::COLOR_WHITE, + DyeColor::YELLOW()->id() => StringValues::COLOR_YELLOW, default => throw new BlockStateSerializeException("Invalid Color " . $color->name()) }); return $this; @@ -164,9 +164,9 @@ final class BlockStateWriter{ /** @return $this */ public function writePillarAxis(int $axis) : self{ $this->writeString(BlockStateNames::PILLAR_AXIS, match($axis){ - Axis::X => Values::PILLAR_AXIS_X, - Axis::Y => Values::PILLAR_AXIS_Y, - Axis::Z => Values::PILLAR_AXIS_Z, + Axis::X => StringValues::PILLAR_AXIS_X, + Axis::Y => StringValues::PILLAR_AXIS_Y, + Axis::Z => StringValues::PILLAR_AXIS_Z, default => throw new BlockStateSerializeException("Invalid axis $axis") }); return $this; @@ -185,11 +185,11 @@ final class BlockStateWriter{ /** @return $this */ public function writeTorchFacing(int $facing) : self{ $this->writeString(BlockStateNames::TORCH_FACING_DIRECTION, match($facing){ - Facing::UP => Values::TORCH_FACING_DIRECTION_TOP, - Facing::NORTH => Values::TORCH_FACING_DIRECTION_NORTH, - Facing::SOUTH => Values::TORCH_FACING_DIRECTION_SOUTH, - Facing::WEST => Values::TORCH_FACING_DIRECTION_WEST, - Facing::EAST => Values::TORCH_FACING_DIRECTION_EAST, + Facing::UP => StringValues::TORCH_FACING_DIRECTION_TOP, + Facing::NORTH => StringValues::TORCH_FACING_DIRECTION_NORTH, + Facing::SOUTH => StringValues::TORCH_FACING_DIRECTION_SOUTH, + Facing::WEST => StringValues::TORCH_FACING_DIRECTION_WEST, + Facing::EAST => StringValues::TORCH_FACING_DIRECTION_EAST, default => throw new BlockStateSerializeException("Invalid Torch facing $facing") }); return $this; @@ -198,11 +198,11 @@ final class BlockStateWriter{ /** @return $this */ public function writeCoralType(CoralType $coralType) : self{ $this->writeString(BlockStateNames::CORAL_COLOR, match($coralType->id()){ - CoralType::TUBE()->id() => Values::CORAL_COLOR_BLUE, - CoralType::BRAIN()->id() => Values::CORAL_COLOR_PINK, - CoralType::BUBBLE()->id() => Values::CORAL_COLOR_PURPLE, - CoralType::FIRE()->id() => Values::CORAL_COLOR_RED, - CoralType::HORN()->id() => Values::CORAL_COLOR_YELLOW, + CoralType::TUBE()->id() => StringValues::CORAL_COLOR_BLUE, + CoralType::BRAIN()->id() => StringValues::CORAL_COLOR_PINK, + CoralType::BUBBLE()->id() => StringValues::CORAL_COLOR_PURPLE, + CoralType::FIRE()->id() => StringValues::CORAL_COLOR_RED, + CoralType::HORN()->id() => StringValues::CORAL_COLOR_YELLOW, default => throw new BlockStateSerializeException("Invalid Coral type " . $coralType->name()) }); return $this; @@ -211,10 +211,10 @@ final class BlockStateWriter{ /** @return $this */ public function writeBellAttachmentType(BellAttachmentType $attachmentType) : self{ $this->writeString(BlockStateNames::ATTACHMENT, match($attachmentType->id()){ - BellAttachmentType::FLOOR()->id() => Values::ATTACHMENT_STANDING, - BellAttachmentType::CEILING()->id() => Values::ATTACHMENT_HANGING, - BellAttachmentType::ONE_WALL()->id() => Values::ATTACHMENT_SIDE, - BellAttachmentType::TWO_WALLS()->id() => Values::ATTACHMENT_MULTIPLE, + BellAttachmentType::FLOOR()->id() => StringValues::ATTACHMENT_STANDING, + BellAttachmentType::CEILING()->id() => StringValues::ATTACHMENT_HANGING, + BellAttachmentType::ONE_WALL()->id() => StringValues::ATTACHMENT_SIDE, + BellAttachmentType::TWO_WALLS()->id() => StringValues::ATTACHMENT_MULTIPLE, default => throw new BlockStateSerializeException("Invalid Bell attachment type " . $attachmentType->name()) }); return $this; From c4228edf3cd6e05918365ffc8ab39c6279d85a3d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 18:15:02 +0000 Subject: [PATCH 010/692] BlockStateDeserializerHelper: fixed mistake in decodeLiquid() --- src/data/bedrock/blockstate/BlockStateDeserializerHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index c73b4f7a5..2ecc1a791 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -115,7 +115,7 @@ final class BlockStateDeserializerHelper{ $fluidHeightState = $in->readBoundedInt(BlockStateNames::LIQUID_DEPTH, 0, 15); return $block ->setDecay($fluidHeightState & 0x7) - ->setFalling(($fluidHeightState & 0x1) !== 0) + ->setFalling(($fluidHeightState & 0x8) !== 0) ->setStill($still); } From 69db9f8a30aa677f9b4c49c8f8ad592ee0a18f4e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 20:31:54 +0000 Subject: [PATCH 011/692] Reduce duplication of code --- .../blockstate/BlockStateDeserializer.php | 102 +++++------------- .../BlockStateDeserializerHelper.php | 33 +++++- 2 files changed, 55 insertions(+), 80 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 89a580e3a..943718aab 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -63,15 +63,9 @@ final class BlockStateDeserializer{ $this->map(Ids::ACACIA_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::ACACIA_FENCE_GATE(), $in)); $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::ACACIA_PRESSURE_PLATE(), $in)); $this->map(Ids::ACACIA_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::ACACIA_STAIRS(), $in)); - $this->map(Ids::ACACIA_STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACACIA_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); + $this->map(Ids::ACACIA_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::ACACIA_SIGN(), $in)); $this->map(Ids::ACACIA_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::ACACIA_TRAPDOOR(), $in)); - $this->map(Ids::ACACIA_WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACACIA_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); + $this->map(Ids::ACACIA_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::ACACIA_WALL_SIGN(), $in)); $this->map(Ids::ACTIVATOR_RAIL, function(BlockStateReader $in) : Block{ return VanillaBlocks::ACTIVATOR_RAIL() ->setPowered($in->readBool(BlockStateNames::RAIL_DATA_BIT)) @@ -138,15 +132,9 @@ final class BlockStateDeserializer{ $this->map(Ids::BIRCH_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::BIRCH_FENCE_GATE(), $in)); $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::BIRCH_PRESSURE_PLATE(), $in)); $this->map(Ids::BIRCH_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BIRCH_STAIRS(), $in)); - $this->map(Ids::BIRCH_STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BIRCH_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); + $this->map(Ids::BIRCH_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::BIRCH_SIGN(), $in)); $this->map(Ids::BIRCH_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::BIRCH_TRAPDOOR(), $in)); - $this->map(Ids::BIRCH_WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BIRCH_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); + $this->map(Ids::BIRCH_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::BIRCH_WALL_SIGN(), $in)); $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::BLAST_FURNACE, function(BlockStateReader $in) : Block{ return VanillaBlocks::BLAST_FURNACE() @@ -240,26 +228,14 @@ final class BlockStateDeserializer{ ->setCoralType($in->readCoralType()) ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan($in)->setDead(true)); - $this->map(Ids::CORAL_FAN_HANG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE()) - ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); - $this->map(Ids::CORAL_FAN_HANG2, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE()) - ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); - $this->map(Ids::CORAL_FAN_HANG3, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_CORAL_FAN() - ->setCoralType(CoralType::HORN()) - ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) - ->setFacing($in->readCoralFacing()); - }); + $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(true)); + $this->map(Ids::CORAL_FAN_HANG, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); + $this->map(Ids::CORAL_FAN_HANG2, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); + $this->map(Ids::CORAL_FAN_HANG3, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) + ->setCoralType(CoralType::HORN())); $this->map(Ids::CRAFTING_TABLE, fn() => VanillaBlocks::CRAFTING_TABLE()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::DARK_OAK_BUTTON(), $in)); @@ -269,24 +245,12 @@ final class BlockStateDeserializer{ $this->map(Ids::DARK_OAK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_OAK_STAIRS(), $in)); $this->map(Ids::DARK_OAK_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::DARK_OAK_TRAPDOOR(), $in)); $this->map(Ids::DARK_PRISMARINE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_PRISMARINE_STAIRS(), $in)); - $this->map(Ids::DARKOAK_STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DARK_OAK_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); - $this->map(Ids::DARKOAK_WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DARK_OAK_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); - $this->map(Ids::DAYLIGHT_DETECTOR, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DAYLIGHT_SENSOR() - ->setInverted(false) - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); - }); - $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DAYLIGHT_SENSOR() - ->setInverted(true) - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); - }); + $this->map(Ids::DARKOAK_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::DARK_OAK_SIGN(), $in)); + $this->map(Ids::DARKOAK_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::DARK_OAK_WALL_SIGN(), $in)); + $this->map(Ids::DAYLIGHT_DETECTOR, fn(BlockStateReader $in) => Helper::decodeDaylightSensor(VanillaBlocks::DAYLIGHT_SENSOR(), $in) + ->setInverted(false)); + $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(BlockStateReader $in) => Helper::decodeDaylightSensor(VanillaBlocks::DAYLIGHT_SENSOR(), $in) + ->setInverted(true)); $this->map(Ids::DEADBUSH, fn() => VanillaBlocks::DEAD_BUSH()); $this->map(Ids::DETECTOR_RAIL, function(BlockStateReader $in) : Block{ return VanillaBlocks::DETECTOR_RAIL() @@ -568,15 +532,9 @@ final class BlockStateDeserializer{ $this->map(Ids::JUNGLE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::JUNGLE_FENCE_GATE(), $in)); $this->map(Ids::JUNGLE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), $in)); $this->map(Ids::JUNGLE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::JUNGLE_STAIRS(), $in)); - $this->map(Ids::JUNGLE_STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::JUNGLE_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); + $this->map(Ids::JUNGLE_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::JUNGLE_SIGN(), $in)); $this->map(Ids::JUNGLE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::JUNGLE_TRAPDOOR(), $in)); - $this->map(Ids::JUNGLE_WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::JUNGLE_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); + $this->map(Ids::JUNGLE_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::JUNGLE_WALL_SIGN(), $in)); $this->map(Ids::LADDER, function(BlockStateReader $in) : Block{ return VanillaBlocks::LADDER() ->setFacing($in->readHorizontalFacing()); @@ -916,15 +874,9 @@ final class BlockStateDeserializer{ $this->map(Ids::SPRUCE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::SPRUCE_FENCE_GATE(), $in)); $this->map(Ids::SPRUCE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), $in)); $this->map(Ids::SPRUCE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SPRUCE_STAIRS(), $in)); - $this->map(Ids::SPRUCE_STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPRUCE_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); + $this->map(Ids::SPRUCE_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::SPRUCE_SIGN(), $in)); $this->map(Ids::SPRUCE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::SPRUCE_TRAPDOOR(), $in)); - $this->map(Ids::SPRUCE_WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPRUCE_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); + $this->map(Ids::SPRUCE_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::SPRUCE_WALL_SIGN(), $in)); $this->map(Ids::STAINED_GLASS, function(BlockStateReader $in) : Block{ return VanillaBlocks::STAINED_GLASS() ->setColor($in->readColor()); @@ -941,10 +893,7 @@ final class BlockStateDeserializer{ return VanillaBlocks::BANNER() ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); }); - $this->map(Ids::STANDING_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::OAK_SIGN() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); - }); + $this->map(Ids::STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::OAK_SIGN(), $in)); $this->map(Ids::STONE, function(BlockStateReader $in) : Block{ return match($type = $in->readString(BlockStateNames::STONE_TYPE)){ StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), @@ -1065,10 +1014,7 @@ final class BlockStateDeserializer{ return VanillaBlocks::WALL_BANNER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::WALL_SIGN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::OAK_WALL_SIGN() - ->setFacing($in->readHorizontalFacing()); - }); + $this->map(Ids::WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::OAK_WALL_SIGN(), $in)); $this->map(Ids::WATER, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::WATER(), $in)); $this->map(Ids::WATERLILY, fn() => VanillaBlocks::LILY_PAD()); $this->map(Ids::WEB, fn() => VanillaBlocks::COBWEB()); diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index 2ecc1a791..418286a27 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -27,9 +27,11 @@ use pocketmine\block\Block; use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\Button; use pocketmine\block\Crops; +use pocketmine\block\DaylightSensor; use pocketmine\block\Door; use pocketmine\block\FenceGate; use pocketmine\block\FloorCoralFan; +use pocketmine\block\FloorSign; use pocketmine\block\GlazedTerracotta; use pocketmine\block\Liquid; use pocketmine\block\RedMushroomBlock; @@ -42,6 +44,8 @@ use pocketmine\block\Stem; use pocketmine\block\Trapdoor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; +use pocketmine\block\WallCoralFan; +use pocketmine\block\WallSign; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; @@ -76,6 +80,12 @@ final class BlockStateDeserializerHelper{ ->setSubtractMode($in->readBool(BlockStateNames::OUTPUT_SUBTRACT_BIT)); } + /** @throws BlockStateDeserializeException */ + public static function decodeDaylightSensor(DaylightSensor $block, BlockStateReader $in) : DaylightSensor{ + return $block + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + } + /** @throws BlockStateDeserializeException */ public static function decodeDoor(Door $block, BlockStateReader $in) : Door{ //TODO: check if these need any special treatment to get the appropriate data to both halves of the door @@ -95,8 +105,8 @@ final class BlockStateDeserializerHelper{ } /** @throws BlockStateDeserializeException */ - public static function decodeFloorCoralFan(BlockStateReader $in) : FloorCoralFan{ - return VanillaBlocks::CORAL_FAN() + public static function decodeFloorCoralFan(FloorCoralFan $block, BlockStateReader $in) : FloorCoralFan{ + return $block ->setCoralType($in->readCoralType()) ->setAxis(match($in->readBoundedInt(BlockStateNames::CORAL_FAN_DIRECTION, 0, 1)){ 0 => Axis::X, @@ -105,6 +115,12 @@ final class BlockStateDeserializerHelper{ }); } + /** @throws BlockStateDeserializeException */ + public static function decodeFloorSign(FloorSign $block, BlockStateReader $in) : FloorSign{ + return $block + ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + } + /** @throws BlockStateDeserializeException */ public static function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{ return $block->setFacing($in->readHorizontalFacing()); @@ -180,6 +196,19 @@ final class BlockStateDeserializerHelper{ return $block; } + /** @throws BlockStateDeserializeException */ + public static function decodeWallCoralFan(WallCoralFan $block, BlockStateReader $in) : WallCoralFan{ + return $block + ->setDead($in->readBool(BlockStateNames::DEAD_BIT)) + ->setFacing($in->readCoralFacing()); + } + + /** @throws BlockStateDeserializeException */ + public static function decodeWallSign(WallSign $block, BlockStateReader $in) : WallSign{ + return $block + ->setFacing($in->readHorizontalFacing()); + } + /** @throws BlockStateDeserializeException */ public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood From cdafb1b0c45f6164856dcb0a264217b3956b085f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 20:45:11 +0000 Subject: [PATCH 012/692] standardize codegen for coral fans --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 943718aab..9d65d3dbe 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -228,8 +228,10 @@ final class BlockStateDeserializer{ ->setCoralType($in->readCoralType()) ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in)->setDead(true)); + $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in) + ->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in) + ->setDead(true)); $this->map(Ids::CORAL_FAN_HANG, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); $this->map(Ids::CORAL_FAN_HANG2, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) From a91e7f72021c5ce680ea5c0ac46a7c2e022b94dd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 31 Jan 2022 20:45:33 +0000 Subject: [PATCH 013/692] deduplicate weighted pressure plate deserializer code --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 10 ++-------- .../blockstate/BlockStateDeserializerHelper.php | 6 ++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 9d65d3dbe..cc02416e7 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -510,10 +510,7 @@ final class BlockStateDeserializer{ //TODO: intentionally ignored "deprecated" blockstate (useless) return VanillaBlocks::HAY_BALE()->setAxis($in->readPillarAxis()); }); - $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); - }); + $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeWeightedPressurePlate(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); $this->map(Ids::HOPPER, function(BlockStateReader $in) : Block{ return VanillaBlocks::HOPPER() ->setFacing($in->readFacingWithoutUp()) @@ -589,10 +586,7 @@ final class BlockStateDeserializer{ }); }); $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); - }); + $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeWeightedPressurePlate(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::LIT_BLAST_FURNACE, function(BlockStateReader $in) : Block{ return VanillaBlocks::BLAST_FURNACE() diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index 418286a27..b88064592 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -46,6 +46,7 @@ use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; +use pocketmine\block\WeightedPressurePlate; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; @@ -209,6 +210,11 @@ final class BlockStateDeserializerHelper{ ->setFacing($in->readHorizontalFacing()); } + public static function decodeWeightedPressurePlate(WeightedPressurePlate $block, BlockStateReader $in) : WeightedPressurePlate{ + return $block + ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + } + /** @throws BlockStateDeserializeException */ public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood From 25fdf7e442270058f381d17d894867b7ed36fabf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 04:00:49 +0000 Subject: [PATCH 014/692] NetherReactor: Remove dead code the state is not exposed anywhere, and we already remap invalid states to default now anyway. --- src/block/NetherReactor.php | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/block/NetherReactor.php b/src/block/NetherReactor.php index 96e5f0640..69e21690b 100644 --- a/src/block/NetherReactor.php +++ b/src/block/NetherReactor.php @@ -29,20 +29,6 @@ use pocketmine\item\VanillaItems; class NetherReactor extends Opaque{ - protected int $state = BlockLegacyMetadata::NETHER_REACTOR_INACTIVE; - - protected function writeStateToMeta() : int{ - return $this->state; - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->state = BlockDataSerializer::readBoundedInt("state", $stateMeta, 0, 2); - } - - public function getStateBitmask() : int{ - return 0b11; - } - public function getDropsForCompatibleTool(Item $item) : array{ return [ VanillaItems::IRON_INGOT()->setCount(6), From dbe99e5821d19e3f136be8a03d3c5413f78ee7c3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 04:01:16 +0000 Subject: [PATCH 015/692] Vine: added hasFace() --- src/block/Vine.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/block/Vine.php b/src/block/Vine.php index 16f684846..c73489dd4 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -64,6 +64,10 @@ class Vine extends Flowable{ /** @return int[] */ public function getFaces() : array{ return $this->faces; } + public function hasFace(int $face) : bool{ + return isset($this->faces[$face]); + } + /** * @param int[] $faces * @phpstan-param list $faces From 7d70865db0a495a50420f489b6f249d69884fafa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 04:01:56 +0000 Subject: [PATCH 016/692] Fixed deserializer not handling walls properly --- .../blockstate/BlockStateDeserializer.php | 2 +- .../BlockStateDeserializerHelper.php | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index cc02416e7..cc7e30193 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -194,7 +194,7 @@ final class BlockStateDeserializer{ $this->map(Ids::COAL_BLOCK, fn() => VanillaBlocks::COAL()); $this->map(Ids::COAL_ORE, fn() => VanillaBlocks::COAL_ORE()); $this->map(Ids::COBBLESTONE, fn() => VanillaBlocks::COBBLESTONE()); - $this->map(Ids::COBBLESTONE_WALL, fn(BlockStateReader $in) => Helper::decodeWall(VanillaBlocks::COBBLESTONE_WALL(), $in)); + $this->map(Ids::COBBLESTONE_WALL, fn(BlockStateReader $in) => Helper::mapLegacyWallType($in)); $this->map(Ids::COCOA, function(BlockStateReader $in) : Block{ return VanillaBlocks::COCOA_POD() ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 2)) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index b88064592..d026e0773 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -215,6 +215,27 @@ final class BlockStateDeserializerHelper{ ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); } + /** @throws BlockStateDeserializeException */ + public static function mapLegacyWallType(BlockStateReader $in) : Wall{ + return self::decodeWall(match($type = $in->readString(BlockStateNames::WALL_BLOCK_TYPE)){ + StringValues::WALL_BLOCK_TYPE_ANDESITE => VanillaBlocks::ANDESITE_WALL(), + StringValues::WALL_BLOCK_TYPE_BRICK => VanillaBlocks::BRICK_WALL(), + StringValues::WALL_BLOCK_TYPE_COBBLESTONE => VanillaBlocks::COBBLESTONE_WALL(), + StringValues::WALL_BLOCK_TYPE_DIORITE => VanillaBlocks::DIORITE_WALL(), + StringValues::WALL_BLOCK_TYPE_END_BRICK => VanillaBlocks::END_STONE_BRICK_WALL(), + StringValues::WALL_BLOCK_TYPE_GRANITE => VanillaBlocks::GRANITE_WALL(), + StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE => VanillaBlocks::MOSSY_COBBLESTONE_WALL(), + StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::MOSSY_STONE_BRICK_WALL(), + StringValues::WALL_BLOCK_TYPE_NETHER_BRICK => VanillaBlocks::NETHER_BRICK_WALL(), + StringValues::WALL_BLOCK_TYPE_PRISMARINE => VanillaBlocks::PRISMARINE_WALL(), + StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK => VanillaBlocks::RED_NETHER_BRICK_WALL(), + StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE => VanillaBlocks::RED_SANDSTONE_WALL(), + StringValues::WALL_BLOCK_TYPE_SANDSTONE => VanillaBlocks::SANDSTONE_WALL(), + StringValues::WALL_BLOCK_TYPE_STONE_BRICK => VanillaBlocks::STONE_BRICK_WALL(), + default => throw $in->badValueException(BlockStateNames::WALL_BLOCK_TYPE, $type), + }, $in); + } + /** @throws BlockStateDeserializeException */ public static function mapStoneSlab1Type(BlockStateReader $in) : Slab{ //* stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood From 40e46dbca207c2fc0c59adc650793de8d7e3adf6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 04:08:28 +0000 Subject: [PATCH 017/692] Fixed tests --- src/block/NetherReactor.php | 1 - tests/phpunit/block/block_factory_consistency_check.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/block/NetherReactor.php b/src/block/NetherReactor.php index 69e21690b..355fc0ff7 100644 --- a/src/block/NetherReactor.php +++ b/src/block/NetherReactor.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\item\VanillaItems; diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 25cc92200..483e210af 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"0":"Air","16":"Stone","17":"Granite","18":"Polished Granite","19":"Diorite","20":"Polished Diorite","21":"Andesite","22":"Polished Andesite","32":"Grass","48":"Dirt","49":"Dirt","64":"Cobblestone","80":"Oak Planks","81":"Spruce Planks","82":"Birch Planks","83":"Jungle Planks","84":"Acacia Planks","85":"Dark Oak Planks","96":"Oak Sapling","97":"Spruce Sapling","98":"Birch Sapling","99":"Jungle Sapling","100":"Acacia Sapling","101":"Dark Oak Sapling","104":"Oak Sapling","105":"Spruce Sapling","106":"Birch Sapling","107":"Jungle Sapling","108":"Acacia Sapling","109":"Dark Oak Sapling","112":"Bedrock","113":"Bedrock","128":"Water","129":"Water","130":"Water","131":"Water","132":"Water","133":"Water","134":"Water","135":"Water","136":"Water","137":"Water","138":"Water","139":"Water","140":"Water","141":"Water","142":"Water","143":"Water","144":"Water","145":"Water","146":"Water","147":"Water","148":"Water","149":"Water","150":"Water","151":"Water","152":"Water","153":"Water","154":"Water","155":"Water","156":"Water","157":"Water","158":"Water","159":"Water","160":"Lava","161":"Lava","162":"Lava","163":"Lava","164":"Lava","165":"Lava","166":"Lava","167":"Lava","168":"Lava","169":"Lava","170":"Lava","171":"Lava","172":"Lava","173":"Lava","174":"Lava","175":"Lava","176":"Lava","177":"Lava","178":"Lava","179":"Lava","180":"Lava","181":"Lava","182":"Lava","183":"Lava","184":"Lava","185":"Lava","186":"Lava","187":"Lava","188":"Lava","189":"Lava","190":"Lava","191":"Lava","192":"Sand","193":"Red Sand","208":"Gravel","224":"Gold Ore","240":"Iron Ore","256":"Coal Ore","272":"Oak Log","273":"Spruce Log","274":"Birch Log","275":"Jungle Log","276":"Oak Log","277":"Spruce Log","278":"Birch Log","279":"Jungle Log","280":"Oak Log","281":"Spruce Log","282":"Birch Log","283":"Jungle Log","288":"Oak Leaves","289":"Spruce Leaves","290":"Birch Leaves","291":"Jungle Leaves","292":"Oak Leaves","293":"Spruce Leaves","294":"Birch Leaves","295":"Jungle Leaves","296":"Oak Leaves","297":"Spruce Leaves","298":"Birch Leaves","299":"Jungle Leaves","300":"Oak Leaves","301":"Spruce Leaves","302":"Birch Leaves","303":"Jungle Leaves","304":"Sponge","305":"Sponge","320":"Glass","336":"Lapis Lazuli Ore","352":"Lapis Lazuli Block","384":"Sandstone","385":"Chiseled Sandstone","386":"Cut Sandstone","387":"Smooth Sandstone","400":"Note Block","416":"Bed Block","417":"Bed Block","418":"Bed Block","419":"Bed Block","420":"Bed Block","421":"Bed Block","422":"Bed Block","423":"Bed Block","424":"Bed Block","425":"Bed Block","426":"Bed Block","427":"Bed Block","428":"Bed Block","429":"Bed Block","430":"Bed Block","431":"Bed Block","432":"Powered Rail","433":"Powered Rail","434":"Powered Rail","435":"Powered Rail","436":"Powered Rail","437":"Powered Rail","440":"Powered Rail","441":"Powered Rail","442":"Powered Rail","443":"Powered Rail","444":"Powered Rail","445":"Powered Rail","448":"Detector Rail","449":"Detector Rail","450":"Detector Rail","451":"Detector Rail","452":"Detector Rail","453":"Detector Rail","456":"Detector Rail","457":"Detector Rail","458":"Detector Rail","459":"Detector Rail","460":"Detector Rail","461":"Detector Rail","480":"Cobweb","497":"Tall Grass","498":"Fern","512":"Dead Bush","560":"Wool","561":"Wool","562":"Wool","563":"Wool","564":"Wool","565":"Wool","566":"Wool","567":"Wool","568":"Wool","569":"Wool","570":"Wool","571":"Wool","572":"Wool","573":"Wool","574":"Wool","575":"Wool","576":"???","592":"Dandelion","608":"Poppy","609":"Blue Orchid","610":"Allium","611":"Azure Bluet","612":"Red Tulip","613":"Orange Tulip","614":"White Tulip","615":"Pink Tulip","616":"Oxeye Daisy","617":"Cornflower","618":"Lily of the Valley","624":"Brown Mushroom","640":"Red Mushroom","656":"Gold Block","672":"Iron Block","688":"Smooth Stone Slab","689":"Sandstone Slab","690":"Fake Wooden Slab","691":"Cobblestone Slab","692":"Brick Slab","693":"Stone Brick Slab","694":"Quartz Slab","695":"Nether Brick Slab","704":"Smooth Stone Slab","705":"Sandstone Slab","706":"Fake Wooden Slab","707":"Cobblestone Slab","708":"Brick Slab","709":"Stone Brick Slab","710":"Quartz Slab","711":"Nether Brick Slab","712":"Smooth Stone Slab","713":"Sandstone Slab","714":"Fake Wooden Slab","715":"Cobblestone Slab","716":"Brick Slab","717":"Stone Brick Slab","718":"Quartz Slab","719":"Nether Brick Slab","720":"Bricks","736":"TNT","737":"TNT","738":"TNT","739":"TNT","752":"Bookshelf","768":"Mossy Cobblestone","784":"Obsidian","801":"Torch","802":"Torch","803":"Torch","804":"Torch","805":"Torch","816":"Fire Block","817":"Fire Block","818":"Fire Block","819":"Fire Block","820":"Fire Block","821":"Fire Block","822":"Fire Block","823":"Fire Block","824":"Fire Block","825":"Fire Block","826":"Fire Block","827":"Fire Block","828":"Fire Block","829":"Fire Block","830":"Fire Block","831":"Fire Block","832":"Monster Spawner","848":"Oak Stairs","849":"Oak Stairs","850":"Oak Stairs","851":"Oak Stairs","852":"Oak Stairs","853":"Oak Stairs","854":"Oak Stairs","855":"Oak Stairs","866":"Chest","867":"Chest","868":"Chest","869":"Chest","880":"Redstone","881":"Redstone","882":"Redstone","883":"Redstone","884":"Redstone","885":"Redstone","886":"Redstone","887":"Redstone","888":"Redstone","889":"Redstone","890":"Redstone","891":"Redstone","892":"Redstone","893":"Redstone","894":"Redstone","895":"Redstone","896":"Diamond Ore","912":"Diamond Block","928":"Crafting Table","944":"Wheat Block","945":"Wheat Block","946":"Wheat Block","947":"Wheat Block","948":"Wheat Block","949":"Wheat Block","950":"Wheat Block","951":"Wheat Block","960":"Farmland","961":"Farmland","962":"Farmland","963":"Farmland","964":"Farmland","965":"Farmland","966":"Farmland","967":"Farmland","978":"Furnace","979":"Furnace","980":"Furnace","981":"Furnace","994":"Furnace","995":"Furnace","996":"Furnace","997":"Furnace","1008":"Oak Sign","1009":"Oak Sign","1010":"Oak Sign","1011":"Oak Sign","1012":"Oak Sign","1013":"Oak Sign","1014":"Oak Sign","1015":"Oak Sign","1016":"Oak Sign","1017":"Oak Sign","1018":"Oak Sign","1019":"Oak Sign","1020":"Oak Sign","1021":"Oak Sign","1022":"Oak Sign","1023":"Oak Sign","1024":"Oak Door","1025":"Oak Door","1026":"Oak Door","1027":"Oak Door","1028":"Oak Door","1029":"Oak Door","1030":"Oak Door","1031":"Oak Door","1032":"Oak Door","1033":"Oak Door","1034":"Oak Door","1035":"Oak Door","1042":"Ladder","1043":"Ladder","1044":"Ladder","1045":"Ladder","1056":"Rail","1057":"Rail","1058":"Rail","1059":"Rail","1060":"Rail","1061":"Rail","1062":"Rail","1063":"Rail","1064":"Rail","1065":"Rail","1072":"Cobblestone Stairs","1073":"Cobblestone Stairs","1074":"Cobblestone Stairs","1075":"Cobblestone Stairs","1076":"Cobblestone Stairs","1077":"Cobblestone Stairs","1078":"Cobblestone Stairs","1079":"Cobblestone Stairs","1090":"Oak Wall Sign","1091":"Oak Wall Sign","1092":"Oak Wall Sign","1093":"Oak Wall Sign","1104":"Lever","1105":"Lever","1106":"Lever","1107":"Lever","1108":"Lever","1109":"Lever","1110":"Lever","1111":"Lever","1112":"Lever","1113":"Lever","1114":"Lever","1115":"Lever","1116":"Lever","1117":"Lever","1118":"Lever","1119":"Lever","1120":"Stone Pressure Plate","1121":"Stone Pressure Plate","1136":"Iron Door","1137":"Iron Door","1138":"Iron Door","1139":"Iron Door","1140":"Iron Door","1141":"Iron Door","1142":"Iron Door","1143":"Iron Door","1144":"Iron Door","1145":"Iron Door","1146":"Iron Door","1147":"Iron Door","1152":"Oak Pressure Plate","1153":"Oak Pressure Plate","1168":"Redstone Ore","1184":"Redstone Ore","1201":"Redstone Torch","1202":"Redstone Torch","1203":"Redstone Torch","1204":"Redstone Torch","1205":"Redstone Torch","1217":"Redstone Torch","1218":"Redstone Torch","1219":"Redstone Torch","1220":"Redstone Torch","1221":"Redstone Torch","1232":"Stone Button","1233":"Stone Button","1234":"Stone Button","1235":"Stone Button","1236":"Stone Button","1237":"Stone Button","1240":"Stone Button","1241":"Stone Button","1242":"Stone Button","1243":"Stone Button","1244":"Stone Button","1245":"Stone Button","1248":"Snow Layer","1249":"Snow Layer","1250":"Snow Layer","1251":"Snow Layer","1252":"Snow Layer","1253":"Snow Layer","1254":"Snow Layer","1255":"Snow Layer","1264":"Ice","1280":"Snow Block","1296":"Cactus","1297":"Cactus","1298":"Cactus","1299":"Cactus","1300":"Cactus","1301":"Cactus","1302":"Cactus","1303":"Cactus","1304":"Cactus","1305":"Cactus","1306":"Cactus","1307":"Cactus","1308":"Cactus","1309":"Cactus","1310":"Cactus","1311":"Cactus","1312":"Clay Block","1328":"Sugarcane","1329":"Sugarcane","1330":"Sugarcane","1331":"Sugarcane","1332":"Sugarcane","1333":"Sugarcane","1334":"Sugarcane","1335":"Sugarcane","1336":"Sugarcane","1337":"Sugarcane","1338":"Sugarcane","1339":"Sugarcane","1340":"Sugarcane","1341":"Sugarcane","1342":"Sugarcane","1343":"Sugarcane","1344":"Jukebox","1360":"Oak Fence","1361":"Spruce Fence","1362":"Birch Fence","1363":"Jungle Fence","1364":"Acacia Fence","1365":"Dark Oak Fence","1376":"Pumpkin","1392":"Netherrack","1408":"Soul Sand","1424":"Glowstone","1441":"Nether Portal","1442":"Nether Portal","1456":"Jack o'Lantern","1457":"Jack o'Lantern","1458":"Jack o'Lantern","1459":"Jack o'Lantern","1472":"Cake","1473":"Cake","1474":"Cake","1475":"Cake","1476":"Cake","1477":"Cake","1478":"Cake","1488":"Redstone Repeater","1489":"Redstone Repeater","1490":"Redstone Repeater","1491":"Redstone Repeater","1492":"Redstone Repeater","1493":"Redstone Repeater","1494":"Redstone Repeater","1495":"Redstone Repeater","1496":"Redstone Repeater","1497":"Redstone Repeater","1498":"Redstone Repeater","1499":"Redstone Repeater","1500":"Redstone Repeater","1501":"Redstone Repeater","1502":"Redstone Repeater","1503":"Redstone Repeater","1504":"Redstone Repeater","1505":"Redstone Repeater","1506":"Redstone Repeater","1507":"Redstone Repeater","1508":"Redstone Repeater","1509":"Redstone Repeater","1510":"Redstone Repeater","1511":"Redstone Repeater","1512":"Redstone Repeater","1513":"Redstone Repeater","1514":"Redstone Repeater","1515":"Redstone Repeater","1516":"Redstone Repeater","1517":"Redstone Repeater","1518":"Redstone Repeater","1519":"Redstone Repeater","1520":"Invisible Bedrock","1536":"Oak Trapdoor","1537":"Oak Trapdoor","1538":"Oak Trapdoor","1539":"Oak Trapdoor","1540":"Oak Trapdoor","1541":"Oak Trapdoor","1542":"Oak Trapdoor","1543":"Oak Trapdoor","1544":"Oak Trapdoor","1545":"Oak Trapdoor","1546":"Oak Trapdoor","1547":"Oak Trapdoor","1548":"Oak Trapdoor","1549":"Oak Trapdoor","1550":"Oak Trapdoor","1551":"Oak Trapdoor","1552":"Infested Stone","1553":"Infested Cobblestone","1554":"Infested Stone Brick","1555":"Infested Mossy Stone Brick","1556":"Infested Cracked Stone Brick","1557":"Infested Chiseled Stone Brick","1568":"Stone Bricks","1569":"Mossy Stone Bricks","1570":"Cracked Stone Bricks","1571":"Chiseled Stone Bricks","1584":"Brown Mushroom Block","1585":"Brown Mushroom Block","1586":"Brown Mushroom Block","1587":"Brown Mushroom Block","1588":"Brown Mushroom Block","1589":"Brown Mushroom Block","1590":"Brown Mushroom Block","1591":"Brown Mushroom Block","1592":"Brown Mushroom Block","1593":"Brown Mushroom Block","1594":"Mushroom Stem","1598":"Brown Mushroom Block","1599":"All Sided Mushroom Stem","1600":"Red Mushroom Block","1601":"Red Mushroom Block","1602":"Red Mushroom Block","1603":"Red Mushroom Block","1604":"Red Mushroom Block","1605":"Red Mushroom Block","1606":"Red Mushroom Block","1607":"Red Mushroom Block","1608":"Red Mushroom Block","1609":"Red Mushroom Block","1614":"Red Mushroom Block","1616":"Iron Bars","1632":"Glass Pane","1648":"Melon Block","1664":"Pumpkin Stem","1665":"Pumpkin Stem","1666":"Pumpkin Stem","1667":"Pumpkin Stem","1668":"Pumpkin Stem","1669":"Pumpkin Stem","1670":"Pumpkin Stem","1671":"Pumpkin Stem","1680":"Melon Stem","1681":"Melon Stem","1682":"Melon Stem","1683":"Melon Stem","1684":"Melon Stem","1685":"Melon Stem","1686":"Melon Stem","1687":"Melon Stem","1696":"Vines","1697":"Vines","1698":"Vines","1699":"Vines","1700":"Vines","1701":"Vines","1702":"Vines","1703":"Vines","1704":"Vines","1705":"Vines","1706":"Vines","1707":"Vines","1708":"Vines","1709":"Vines","1710":"Vines","1711":"Vines","1712":"Oak Fence Gate","1713":"Oak Fence Gate","1714":"Oak Fence Gate","1715":"Oak Fence Gate","1716":"Oak Fence Gate","1717":"Oak Fence Gate","1718":"Oak Fence Gate","1719":"Oak Fence Gate","1720":"Oak Fence Gate","1721":"Oak Fence Gate","1722":"Oak Fence Gate","1723":"Oak Fence Gate","1724":"Oak Fence Gate","1725":"Oak Fence Gate","1726":"Oak Fence Gate","1727":"Oak Fence Gate","1728":"Brick Stairs","1729":"Brick Stairs","1730":"Brick Stairs","1731":"Brick Stairs","1732":"Brick Stairs","1733":"Brick Stairs","1734":"Brick Stairs","1735":"Brick Stairs","1744":"Stone Brick Stairs","1745":"Stone Brick Stairs","1746":"Stone Brick Stairs","1747":"Stone Brick Stairs","1748":"Stone Brick Stairs","1749":"Stone Brick Stairs","1750":"Stone Brick Stairs","1751":"Stone Brick Stairs","1760":"Mycelium","1776":"Lily Pad","1792":"Nether Bricks","1808":"Nether Brick Fence","1824":"Nether Brick Stairs","1825":"Nether Brick Stairs","1826":"Nether Brick Stairs","1827":"Nether Brick Stairs","1828":"Nether Brick Stairs","1829":"Nether Brick Stairs","1830":"Nether Brick Stairs","1831":"Nether Brick Stairs","1840":"Nether Wart","1841":"Nether Wart","1842":"Nether Wart","1843":"Nether Wart","1856":"Enchanting Table","1872":"Brewing Stand","1873":"Brewing Stand","1874":"Brewing Stand","1875":"Brewing Stand","1876":"Brewing Stand","1877":"Brewing Stand","1878":"Brewing Stand","1879":"Brewing Stand","1920":"End Portal Frame","1921":"End Portal Frame","1922":"End Portal Frame","1923":"End Portal Frame","1924":"End Portal Frame","1925":"End Portal Frame","1926":"End Portal Frame","1927":"End Portal Frame","1936":"End Stone","1952":"Dragon Egg","1968":"Redstone Lamp","1984":"Redstone Lamp","2016":"Activator Rail","2017":"Activator Rail","2018":"Activator Rail","2019":"Activator Rail","2020":"Activator Rail","2021":"Activator Rail","2024":"Activator Rail","2025":"Activator Rail","2026":"Activator Rail","2027":"Activator Rail","2028":"Activator Rail","2029":"Activator Rail","2032":"Cocoa Block","2033":"Cocoa Block","2034":"Cocoa Block","2035":"Cocoa Block","2036":"Cocoa Block","2037":"Cocoa Block","2038":"Cocoa Block","2039":"Cocoa Block","2040":"Cocoa Block","2041":"Cocoa Block","2042":"Cocoa Block","2043":"Cocoa Block","2048":"Sandstone Stairs","2049":"Sandstone Stairs","2050":"Sandstone Stairs","2051":"Sandstone Stairs","2052":"Sandstone Stairs","2053":"Sandstone Stairs","2054":"Sandstone Stairs","2055":"Sandstone Stairs","2064":"Emerald Ore","2082":"Ender Chest","2083":"Ender Chest","2084":"Ender Chest","2085":"Ender Chest","2096":"Tripwire Hook","2097":"Tripwire Hook","2098":"Tripwire Hook","2099":"Tripwire Hook","2100":"Tripwire Hook","2101":"Tripwire Hook","2102":"Tripwire Hook","2103":"Tripwire Hook","2104":"Tripwire Hook","2105":"Tripwire Hook","2106":"Tripwire Hook","2107":"Tripwire Hook","2108":"Tripwire Hook","2109":"Tripwire Hook","2110":"Tripwire Hook","2111":"Tripwire Hook","2112":"Tripwire","2113":"Tripwire","2114":"Tripwire","2115":"Tripwire","2116":"Tripwire","2117":"Tripwire","2118":"Tripwire","2119":"Tripwire","2120":"Tripwire","2121":"Tripwire","2122":"Tripwire","2123":"Tripwire","2124":"Tripwire","2125":"Tripwire","2126":"Tripwire","2127":"Tripwire","2128":"Emerald Block","2144":"Spruce Stairs","2145":"Spruce Stairs","2146":"Spruce Stairs","2147":"Spruce Stairs","2148":"Spruce Stairs","2149":"Spruce Stairs","2150":"Spruce Stairs","2151":"Spruce Stairs","2160":"Birch Stairs","2161":"Birch Stairs","2162":"Birch Stairs","2163":"Birch Stairs","2164":"Birch Stairs","2165":"Birch Stairs","2166":"Birch Stairs","2167":"Birch Stairs","2176":"Jungle Stairs","2177":"Jungle Stairs","2178":"Jungle Stairs","2179":"Jungle Stairs","2180":"Jungle Stairs","2181":"Jungle Stairs","2182":"Jungle Stairs","2183":"Jungle Stairs","2208":"Beacon","2224":"Cobblestone Wall","2225":"Mossy Cobblestone Wall","2226":"Granite Wall","2227":"Diorite Wall","2228":"Andesite Wall","2229":"Sandstone Wall","2230":"Brick Wall","2231":"Stone Brick Wall","2232":"Mossy Stone Brick Wall","2233":"Nether Brick Wall","2234":"End Stone Brick Wall","2235":"Prismarine Wall","2236":"Red Sandstone Wall","2237":"Red Nether Brick Wall","2240":"Flower Pot","2256":"Carrot Block","2257":"Carrot Block","2258":"Carrot Block","2259":"Carrot Block","2260":"Carrot Block","2261":"Carrot Block","2262":"Carrot Block","2263":"Carrot Block","2272":"Potato Block","2273":"Potato Block","2274":"Potato Block","2275":"Potato Block","2276":"Potato Block","2277":"Potato Block","2278":"Potato Block","2279":"Potato Block","2288":"Oak Button","2289":"Oak Button","2290":"Oak Button","2291":"Oak Button","2292":"Oak Button","2293":"Oak Button","2296":"Oak Button","2297":"Oak Button","2298":"Oak Button","2299":"Oak Button","2300":"Oak Button","2301":"Oak Button","2305":"Mob Head","2306":"Mob Head","2307":"Mob Head","2308":"Mob Head","2309":"Mob Head","2320":"Anvil","2321":"Anvil","2322":"Anvil","2323":"Anvil","2324":"Anvil","2325":"Anvil","2326":"Anvil","2327":"Anvil","2328":"Anvil","2329":"Anvil","2330":"Anvil","2331":"Anvil","2338":"Trapped Chest","2339":"Trapped Chest","2340":"Trapped Chest","2341":"Trapped Chest","2352":"Weighted Pressure Plate Light","2353":"Weighted Pressure Plate Light","2354":"Weighted Pressure Plate Light","2355":"Weighted Pressure Plate Light","2356":"Weighted Pressure Plate Light","2357":"Weighted Pressure Plate Light","2358":"Weighted Pressure Plate Light","2359":"Weighted Pressure Plate Light","2360":"Weighted Pressure Plate Light","2361":"Weighted Pressure Plate Light","2362":"Weighted Pressure Plate Light","2363":"Weighted Pressure Plate Light","2364":"Weighted Pressure Plate Light","2365":"Weighted Pressure Plate Light","2366":"Weighted Pressure Plate Light","2367":"Weighted Pressure Plate Light","2368":"Weighted Pressure Plate Heavy","2369":"Weighted Pressure Plate Heavy","2370":"Weighted Pressure Plate Heavy","2371":"Weighted Pressure Plate Heavy","2372":"Weighted Pressure Plate Heavy","2373":"Weighted Pressure Plate Heavy","2374":"Weighted Pressure Plate Heavy","2375":"Weighted Pressure Plate Heavy","2376":"Weighted Pressure Plate Heavy","2377":"Weighted Pressure Plate Heavy","2378":"Weighted Pressure Plate Heavy","2379":"Weighted Pressure Plate Heavy","2380":"Weighted Pressure Plate Heavy","2381":"Weighted Pressure Plate Heavy","2382":"Weighted Pressure Plate Heavy","2383":"Weighted Pressure Plate Heavy","2384":"Redstone Comparator","2385":"Redstone Comparator","2386":"Redstone Comparator","2387":"Redstone Comparator","2388":"Redstone Comparator","2389":"Redstone Comparator","2390":"Redstone Comparator","2391":"Redstone Comparator","2408":"Redstone Comparator","2409":"Redstone Comparator","2410":"Redstone Comparator","2411":"Redstone Comparator","2412":"Redstone Comparator","2413":"Redstone Comparator","2414":"Redstone Comparator","2415":"Redstone Comparator","2416":"Daylight Sensor","2417":"Daylight Sensor","2418":"Daylight Sensor","2419":"Daylight Sensor","2420":"Daylight Sensor","2421":"Daylight Sensor","2422":"Daylight Sensor","2423":"Daylight Sensor","2424":"Daylight Sensor","2425":"Daylight Sensor","2426":"Daylight Sensor","2427":"Daylight Sensor","2428":"Daylight Sensor","2429":"Daylight Sensor","2430":"Daylight Sensor","2431":"Daylight Sensor","2432":"Redstone Block","2448":"Nether Quartz Ore","2464":"Hopper","2466":"Hopper","2467":"Hopper","2468":"Hopper","2469":"Hopper","2472":"Hopper","2474":"Hopper","2475":"Hopper","2476":"Hopper","2477":"Hopper","2480":"Quartz Block","2481":"Chiseled Quartz Block","2482":"Quartz Pillar","2483":"Smooth Quartz Block","2485":"Chiseled Quartz Block","2486":"Quartz Pillar","2489":"Chiseled Quartz Block","2490":"Quartz Pillar","2496":"Quartz Stairs","2497":"Quartz Stairs","2498":"Quartz Stairs","2499":"Quartz Stairs","2500":"Quartz Stairs","2501":"Quartz Stairs","2502":"Quartz Stairs","2503":"Quartz Stairs","2512":"Oak Slab","2513":"Spruce Slab","2514":"Birch Slab","2515":"Jungle Slab","2516":"Acacia Slab","2517":"Dark Oak Slab","2528":"Oak Slab","2529":"Spruce Slab","2530":"Birch Slab","2531":"Jungle Slab","2532":"Acacia Slab","2533":"Dark Oak Slab","2536":"Oak Slab","2537":"Spruce Slab","2538":"Birch Slab","2539":"Jungle Slab","2540":"Acacia Slab","2541":"Dark Oak Slab","2544":"Stained Clay","2545":"Stained Clay","2546":"Stained Clay","2547":"Stained Clay","2548":"Stained Clay","2549":"Stained Clay","2550":"Stained Clay","2551":"Stained Clay","2552":"Stained Clay","2553":"Stained Clay","2554":"Stained Clay","2555":"Stained Clay","2556":"Stained Clay","2557":"Stained Clay","2558":"Stained Clay","2559":"Stained Clay","2560":"Stained Glass Pane","2561":"Stained Glass Pane","2562":"Stained Glass Pane","2563":"Stained Glass Pane","2564":"Stained Glass Pane","2565":"Stained Glass Pane","2566":"Stained Glass Pane","2567":"Stained Glass Pane","2568":"Stained Glass Pane","2569":"Stained Glass Pane","2570":"Stained Glass Pane","2571":"Stained Glass Pane","2572":"Stained Glass Pane","2573":"Stained Glass Pane","2574":"Stained Glass Pane","2575":"Stained Glass Pane","2576":"Acacia Leaves","2577":"Dark Oak Leaves","2580":"Acacia Leaves","2581":"Dark Oak Leaves","2584":"Acacia Leaves","2585":"Dark Oak Leaves","2588":"Acacia Leaves","2589":"Dark Oak Leaves","2592":"Acacia Log","2593":"Dark Oak Log","2596":"Acacia Log","2597":"Dark Oak Log","2600":"Acacia Log","2601":"Dark Oak Log","2608":"Acacia Stairs","2609":"Acacia Stairs","2610":"Acacia Stairs","2611":"Acacia Stairs","2612":"Acacia Stairs","2613":"Acacia Stairs","2614":"Acacia Stairs","2615":"Acacia Stairs","2624":"Dark Oak Stairs","2625":"Dark Oak Stairs","2626":"Dark Oak Stairs","2627":"Dark Oak Stairs","2628":"Dark Oak Stairs","2629":"Dark Oak Stairs","2630":"Dark Oak Stairs","2631":"Dark Oak Stairs","2640":"Slime Block","2672":"Iron Trapdoor","2673":"Iron Trapdoor","2674":"Iron Trapdoor","2675":"Iron Trapdoor","2676":"Iron Trapdoor","2677":"Iron Trapdoor","2678":"Iron Trapdoor","2679":"Iron Trapdoor","2680":"Iron Trapdoor","2681":"Iron Trapdoor","2682":"Iron Trapdoor","2683":"Iron Trapdoor","2684":"Iron Trapdoor","2685":"Iron Trapdoor","2686":"Iron Trapdoor","2687":"Iron Trapdoor","2688":"Prismarine","2689":"Dark Prismarine","2690":"Prismarine Bricks","2704":"Sea Lantern","2720":"Hay Bale","2724":"Hay Bale","2728":"Hay Bale","2736":"Carpet","2737":"Carpet","2738":"Carpet","2739":"Carpet","2740":"Carpet","2741":"Carpet","2742":"Carpet","2743":"Carpet","2744":"Carpet","2745":"Carpet","2746":"Carpet","2747":"Carpet","2748":"Carpet","2749":"Carpet","2750":"Carpet","2751":"Carpet","2752":"Hardened Clay","2768":"Coal Block","2784":"Packed Ice","2800":"Sunflower","2801":"Lilac","2802":"Double Tallgrass","2803":"Large Fern","2804":"Rose Bush","2805":"Peony","2808":"Sunflower","2809":"Lilac","2810":"Double Tallgrass","2811":"Large Fern","2812":"Rose Bush","2813":"Peony","2816":"Banner","2817":"Banner","2818":"Banner","2819":"Banner","2820":"Banner","2821":"Banner","2822":"Banner","2823":"Banner","2824":"Banner","2825":"Banner","2826":"Banner","2827":"Banner","2828":"Banner","2829":"Banner","2830":"Banner","2831":"Banner","2834":"Wall Banner","2835":"Wall Banner","2836":"Wall Banner","2837":"Wall Banner","2848":"Daylight Sensor","2849":"Daylight Sensor","2850":"Daylight Sensor","2851":"Daylight Sensor","2852":"Daylight Sensor","2853":"Daylight Sensor","2854":"Daylight Sensor","2855":"Daylight Sensor","2856":"Daylight Sensor","2857":"Daylight Sensor","2858":"Daylight Sensor","2859":"Daylight Sensor","2860":"Daylight Sensor","2861":"Daylight Sensor","2862":"Daylight Sensor","2863":"Daylight Sensor","2864":"Red Sandstone","2865":"Chiseled Red Sandstone","2866":"Cut Red Sandstone","2867":"Smooth Red Sandstone","2880":"Red Sandstone Stairs","2881":"Red Sandstone Stairs","2882":"Red Sandstone Stairs","2883":"Red Sandstone Stairs","2884":"Red Sandstone Stairs","2885":"Red Sandstone Stairs","2886":"Red Sandstone Stairs","2887":"Red Sandstone Stairs","2896":"Red Sandstone Slab","2897":"Purpur Slab","2898":"Prismarine Slab","2899":"Dark Prismarine Slab","2900":"Prismarine Bricks Slab","2901":"Mossy Cobblestone Slab","2902":"Smooth Sandstone Slab","2903":"Red Nether Brick Slab","2912":"Red Sandstone Slab","2913":"Purpur Slab","2914":"Prismarine Slab","2915":"Dark Prismarine Slab","2916":"Prismarine Bricks Slab","2917":"Mossy Cobblestone Slab","2918":"Smooth Sandstone Slab","2919":"Red Nether Brick Slab","2920":"Red Sandstone Slab","2921":"Purpur Slab","2922":"Prismarine Slab","2923":"Dark Prismarine Slab","2924":"Prismarine Bricks Slab","2925":"Mossy Cobblestone Slab","2926":"Smooth Sandstone Slab","2927":"Red Nether Brick Slab","2928":"Spruce Fence Gate","2929":"Spruce Fence Gate","2930":"Spruce Fence Gate","2931":"Spruce Fence Gate","2932":"Spruce Fence Gate","2933":"Spruce Fence Gate","2934":"Spruce Fence Gate","2935":"Spruce Fence Gate","2936":"Spruce Fence Gate","2937":"Spruce Fence Gate","2938":"Spruce Fence Gate","2939":"Spruce Fence Gate","2940":"Spruce Fence Gate","2941":"Spruce Fence Gate","2942":"Spruce Fence Gate","2943":"Spruce Fence Gate","2944":"Birch Fence Gate","2945":"Birch Fence Gate","2946":"Birch Fence Gate","2947":"Birch Fence Gate","2948":"Birch Fence Gate","2949":"Birch Fence Gate","2950":"Birch Fence Gate","2951":"Birch Fence Gate","2952":"Birch Fence Gate","2953":"Birch Fence Gate","2954":"Birch Fence Gate","2955":"Birch Fence Gate","2956":"Birch Fence Gate","2957":"Birch Fence Gate","2958":"Birch Fence Gate","2959":"Birch Fence Gate","2960":"Jungle Fence Gate","2961":"Jungle Fence Gate","2962":"Jungle Fence Gate","2963":"Jungle Fence Gate","2964":"Jungle Fence Gate","2965":"Jungle Fence Gate","2966":"Jungle Fence Gate","2967":"Jungle Fence Gate","2968":"Jungle Fence Gate","2969":"Jungle Fence Gate","2970":"Jungle Fence Gate","2971":"Jungle Fence Gate","2972":"Jungle Fence Gate","2973":"Jungle Fence Gate","2974":"Jungle Fence Gate","2975":"Jungle Fence Gate","2976":"Dark Oak Fence Gate","2977":"Dark Oak Fence Gate","2978":"Dark Oak Fence Gate","2979":"Dark Oak Fence Gate","2980":"Dark Oak Fence Gate","2981":"Dark Oak Fence Gate","2982":"Dark Oak Fence Gate","2983":"Dark Oak Fence Gate","2984":"Dark Oak Fence Gate","2985":"Dark Oak Fence Gate","2986":"Dark Oak Fence Gate","2987":"Dark Oak Fence Gate","2988":"Dark Oak Fence Gate","2989":"Dark Oak Fence Gate","2990":"Dark Oak Fence Gate","2991":"Dark Oak Fence Gate","2992":"Acacia Fence Gate","2993":"Acacia Fence Gate","2994":"Acacia Fence Gate","2995":"Acacia Fence Gate","2996":"Acacia Fence Gate","2997":"Acacia Fence Gate","2998":"Acacia Fence Gate","2999":"Acacia Fence Gate","3000":"Acacia Fence Gate","3001":"Acacia Fence Gate","3002":"Acacia Fence Gate","3003":"Acacia Fence Gate","3004":"Acacia Fence Gate","3005":"Acacia Fence Gate","3006":"Acacia Fence Gate","3007":"Acacia Fence Gate","3040":"Hardened Glass Pane","3056":"Stained Hardened Glass Pane","3057":"Stained Hardened Glass Pane","3058":"Stained Hardened Glass Pane","3059":"Stained Hardened Glass Pane","3060":"Stained Hardened Glass Pane","3061":"Stained Hardened Glass Pane","3062":"Stained Hardened Glass Pane","3063":"Stained Hardened Glass Pane","3064":"Stained Hardened Glass Pane","3065":"Stained Hardened Glass Pane","3066":"Stained Hardened Glass Pane","3067":"Stained Hardened Glass Pane","3068":"Stained Hardened Glass Pane","3069":"Stained Hardened Glass Pane","3070":"Stained Hardened Glass Pane","3071":"Stained Hardened Glass Pane","3072":"Heat Block","3088":"Spruce Door","3089":"Spruce Door","3090":"Spruce Door","3091":"Spruce Door","3092":"Spruce Door","3093":"Spruce Door","3094":"Spruce Door","3095":"Spruce Door","3096":"Spruce Door","3097":"Spruce Door","3098":"Spruce Door","3099":"Spruce Door","3104":"Birch Door","3105":"Birch Door","3106":"Birch Door","3107":"Birch Door","3108":"Birch Door","3109":"Birch Door","3110":"Birch Door","3111":"Birch Door","3112":"Birch Door","3113":"Birch Door","3114":"Birch Door","3115":"Birch Door","3120":"Jungle Door","3121":"Jungle Door","3122":"Jungle Door","3123":"Jungle Door","3124":"Jungle Door","3125":"Jungle Door","3126":"Jungle Door","3127":"Jungle Door","3128":"Jungle Door","3129":"Jungle Door","3130":"Jungle Door","3131":"Jungle Door","3136":"Acacia Door","3137":"Acacia Door","3138":"Acacia Door","3139":"Acacia Door","3140":"Acacia Door","3141":"Acacia Door","3142":"Acacia Door","3143":"Acacia Door","3144":"Acacia Door","3145":"Acacia Door","3146":"Acacia Door","3147":"Acacia Door","3152":"Dark Oak Door","3153":"Dark Oak Door","3154":"Dark Oak Door","3155":"Dark Oak Door","3156":"Dark Oak Door","3157":"Dark Oak Door","3158":"Dark Oak Door","3159":"Dark Oak Door","3160":"Dark Oak Door","3161":"Dark Oak Door","3162":"Dark Oak Door","3163":"Dark Oak Door","3168":"Grass Path","3184":"Item Frame","3185":"Item Frame","3186":"Item Frame","3187":"Item Frame","3188":"Item Frame","3189":"Item Frame","3190":"Item Frame","3191":"Item Frame","3216":"Purpur Block","3218":"Purpur Pillar","3222":"Purpur Pillar","3226":"Purpur Pillar","3233":"Red Torch","3234":"Red Torch","3235":"Red Torch","3236":"Red Torch","3237":"Red Torch","3241":"Green Torch","3242":"Green Torch","3243":"Green Torch","3244":"Green Torch","3245":"Green Torch","3248":"Purpur Stairs","3249":"Purpur Stairs","3250":"Purpur Stairs","3251":"Purpur Stairs","3252":"Purpur Stairs","3253":"Purpur Stairs","3254":"Purpur Stairs","3255":"Purpur Stairs","3265":"Blue Torch","3266":"Blue Torch","3267":"Blue Torch","3268":"Blue Torch","3269":"Blue Torch","3273":"Purple Torch","3274":"Purple Torch","3275":"Purple Torch","3276":"Purple Torch","3277":"Purple Torch","3280":"Shulker Box","3296":"End Stone Bricks","3312":"Frosted Ice","3313":"Frosted Ice","3314":"Frosted Ice","3315":"Frosted Ice","3328":"End Rod","3329":"End Rod","3330":"End Rod","3331":"End Rod","3332":"End Rod","3333":"End Rod","3408":"Magma Block","3424":"Nether Wart Block","3440":"Red Nether Bricks","3456":"Bone Block","3460":"Bone Block","3464":"Bone Block","3488":"Dyed Shulker Box","3489":"Dyed Shulker Box","3490":"Dyed Shulker Box","3491":"Dyed Shulker Box","3492":"Dyed Shulker Box","3493":"Dyed Shulker Box","3494":"Dyed Shulker Box","3495":"Dyed Shulker Box","3496":"Dyed Shulker Box","3497":"Dyed Shulker Box","3498":"Dyed Shulker Box","3499":"Dyed Shulker Box","3500":"Dyed Shulker Box","3501":"Dyed Shulker Box","3502":"Dyed Shulker Box","3503":"Dyed Shulker Box","3506":"Purple Glazed Terracotta","3507":"Purple Glazed Terracotta","3508":"Purple Glazed Terracotta","3509":"Purple Glazed Terracotta","3522":"White Glazed Terracotta","3523":"White Glazed Terracotta","3524":"White Glazed Terracotta","3525":"White Glazed Terracotta","3538":"Orange Glazed Terracotta","3539":"Orange Glazed Terracotta","3540":"Orange Glazed Terracotta","3541":"Orange Glazed Terracotta","3554":"Magenta Glazed Terracotta","3555":"Magenta Glazed Terracotta","3556":"Magenta Glazed Terracotta","3557":"Magenta Glazed Terracotta","3570":"Light Blue Glazed Terracotta","3571":"Light Blue Glazed Terracotta","3572":"Light Blue Glazed Terracotta","3573":"Light Blue Glazed Terracotta","3586":"Yellow Glazed Terracotta","3587":"Yellow Glazed Terracotta","3588":"Yellow Glazed Terracotta","3589":"Yellow Glazed Terracotta","3602":"Lime Glazed Terracotta","3603":"Lime Glazed Terracotta","3604":"Lime Glazed Terracotta","3605":"Lime Glazed Terracotta","3618":"Pink Glazed Terracotta","3619":"Pink Glazed Terracotta","3620":"Pink Glazed Terracotta","3621":"Pink Glazed Terracotta","3634":"Gray Glazed Terracotta","3635":"Gray Glazed Terracotta","3636":"Gray Glazed Terracotta","3637":"Gray Glazed Terracotta","3650":"Light Gray Glazed Terracotta","3651":"Light Gray Glazed Terracotta","3652":"Light Gray Glazed Terracotta","3653":"Light Gray Glazed Terracotta","3666":"Cyan Glazed Terracotta","3667":"Cyan Glazed Terracotta","3668":"Cyan Glazed Terracotta","3669":"Cyan Glazed Terracotta","3698":"Blue Glazed Terracotta","3699":"Blue Glazed Terracotta","3700":"Blue Glazed Terracotta","3701":"Blue Glazed Terracotta","3714":"Brown Glazed Terracotta","3715":"Brown Glazed Terracotta","3716":"Brown Glazed Terracotta","3717":"Brown Glazed Terracotta","3730":"Green Glazed Terracotta","3731":"Green Glazed Terracotta","3732":"Green Glazed Terracotta","3733":"Green Glazed Terracotta","3746":"Red Glazed Terracotta","3747":"Red Glazed Terracotta","3748":"Red Glazed Terracotta","3749":"Red Glazed Terracotta","3762":"Black Glazed Terracotta","3763":"Black Glazed Terracotta","3764":"Black Glazed Terracotta","3765":"Black Glazed Terracotta","3776":"Concrete","3777":"Concrete","3778":"Concrete","3779":"Concrete","3780":"Concrete","3781":"Concrete","3782":"Concrete","3783":"Concrete","3784":"Concrete","3785":"Concrete","3786":"Concrete","3787":"Concrete","3788":"Concrete","3789":"Concrete","3790":"Concrete","3791":"Concrete","3792":"Concrete Powder","3793":"Concrete Powder","3794":"Concrete Powder","3795":"Concrete Powder","3796":"Concrete Powder","3797":"Concrete Powder","3798":"Concrete Powder","3799":"Concrete Powder","3800":"Concrete Powder","3801":"Concrete Powder","3802":"Concrete Powder","3803":"Concrete Powder","3804":"Concrete Powder","3805":"Concrete Powder","3806":"Concrete Powder","3807":"Concrete Powder","3808":"Compound Creator","3809":"Compound Creator","3810":"Compound Creator","3811":"Compound Creator","3812":"Material Reducer","3813":"Material Reducer","3814":"Material Reducer","3815":"Material Reducer","3816":"Element Constructor","3817":"Element Constructor","3818":"Element Constructor","3819":"Element Constructor","3820":"Lab Table","3821":"Lab Table","3822":"Lab Table","3823":"Lab Table","3825":"Underwater Torch","3826":"Underwater Torch","3827":"Underwater Torch","3828":"Underwater Torch","3829":"Underwater Torch","3856":"Stained Glass","3857":"Stained Glass","3858":"Stained Glass","3859":"Stained Glass","3860":"Stained Glass","3861":"Stained Glass","3862":"Stained Glass","3863":"Stained Glass","3864":"Stained Glass","3865":"Stained Glass","3866":"Stained Glass","3867":"Stained Glass","3868":"Stained Glass","3869":"Stained Glass","3870":"Stained Glass","3871":"Stained Glass","3888":"Podzol","3904":"Beetroot Block","3905":"Beetroot Block","3906":"Beetroot Block","3907":"Beetroot Block","3908":"Beetroot Block","3909":"Beetroot Block","3910":"Beetroot Block","3911":"Beetroot Block","3920":"Stonecutter","3936":"Glowing Obsidian","3952":"Nether Reactor Core","3953":"Nether Reactor Core","3954":"Nether Reactor Core","3968":"update!","3984":"ate!upd","4048":"Hardened Glass","4064":"Stained Hardened Glass","4065":"Stained Hardened Glass","4066":"Stained Hardened Glass","4067":"Stained Hardened Glass","4068":"Stained Hardened Glass","4069":"Stained Hardened Glass","4070":"Stained Hardened Glass","4071":"Stained Hardened Glass","4072":"Stained Hardened Glass","4073":"Stained Hardened Glass","4074":"Stained Hardened Glass","4075":"Stained Hardened Glass","4076":"Stained Hardened Glass","4077":"Stained Hardened Glass","4078":"Stained Hardened Glass","4079":"Stained Hardened Glass","4080":"reserved6","4112":"Prismarine Stairs","4113":"Prismarine Stairs","4114":"Prismarine Stairs","4115":"Prismarine Stairs","4116":"Prismarine Stairs","4117":"Prismarine Stairs","4118":"Prismarine Stairs","4119":"Prismarine Stairs","4128":"Dark Prismarine Stairs","4129":"Dark Prismarine Stairs","4130":"Dark Prismarine Stairs","4131":"Dark Prismarine Stairs","4132":"Dark Prismarine Stairs","4133":"Dark Prismarine Stairs","4134":"Dark Prismarine Stairs","4135":"Dark Prismarine Stairs","4144":"Prismarine Bricks Stairs","4145":"Prismarine Bricks Stairs","4146":"Prismarine Bricks Stairs","4147":"Prismarine Bricks Stairs","4148":"Prismarine Bricks Stairs","4149":"Prismarine Bricks Stairs","4150":"Prismarine Bricks Stairs","4151":"Prismarine Bricks Stairs","4160":"Stripped Spruce Log","4161":"Stripped Spruce Log","4162":"Stripped Spruce Log","4176":"Stripped Birch Log","4177":"Stripped Birch Log","4178":"Stripped Birch Log","4192":"Stripped Jungle Log","4193":"Stripped Jungle Log","4194":"Stripped Jungle Log","4208":"Stripped Acacia Log","4209":"Stripped Acacia Log","4210":"Stripped Acacia Log","4224":"Stripped Dark Oak Log","4225":"Stripped Dark Oak Log","4226":"Stripped Dark Oak Log","4240":"Stripped Oak Log","4241":"Stripped Oak Log","4242":"Stripped Oak Log","4256":"Blue Ice","4272":"Hydrogen","4288":"Helium","4304":"Lithium","4320":"Beryllium","4336":"Boron","4352":"Carbon","4368":"Nitrogen","4384":"Oxygen","4400":"Fluorine","4416":"Neon","4432":"Sodium","4448":"Magnesium","4464":"Aluminum","4480":"Silicon","4496":"Phosphorus","4512":"Sulfur","4528":"Chlorine","4544":"Argon","4560":"Potassium","4576":"Calcium","4592":"Scandium","4608":"Titanium","4624":"Vanadium","4640":"Chromium","4656":"Manganese","4672":"Iron","4688":"Cobalt","4704":"Nickel","4720":"Copper","4736":"Zinc","4752":"Gallium","4768":"Germanium","4784":"Arsenic","4800":"Selenium","4816":"Bromine","4832":"Krypton","4848":"Rubidium","4864":"Strontium","4880":"Yttrium","4896":"Zirconium","4912":"Niobium","4928":"Molybdenum","4944":"Technetium","4960":"Ruthenium","4976":"Rhodium","4992":"Palladium","5008":"Silver","5024":"Cadmium","5040":"Indium","5056":"Tin","5072":"Antimony","5088":"Tellurium","5104":"Iodine","5120":"Xenon","5136":"Cesium","5152":"Barium","5168":"Lanthanum","5184":"Cerium","5200":"Praseodymium","5216":"Neodymium","5232":"Promethium","5248":"Samarium","5264":"Europium","5280":"Gadolinium","5296":"Terbium","5312":"Dysprosium","5328":"Holmium","5344":"Erbium","5360":"Thulium","5376":"Ytterbium","5392":"Lutetium","5408":"Hafnium","5424":"Tantalum","5440":"Tungsten","5456":"Rhenium","5472":"Osmium","5488":"Iridium","5504":"Platinum","5520":"Gold","5536":"Mercury","5552":"Thallium","5568":"Lead","5584":"Bismuth","5600":"Polonium","5616":"Astatine","5632":"Radon","5648":"Francium","5664":"Radium","5680":"Actinium","5696":"Thorium","5712":"Protactinium","5728":"Uranium","5744":"Neptunium","5760":"Plutonium","5776":"Americium","5792":"Curium","5808":"Berkelium","5824":"Californium","5840":"Einsteinium","5856":"Fermium","5872":"Mendelevium","5888":"Nobelium","5904":"Lawrencium","5920":"Rutherfordium","5936":"Dubnium","5952":"Seaborgium","5968":"Bohrium","5984":"Hassium","6000":"Meitnerium","6016":"Darmstadtium","6032":"Roentgenium","6048":"Copernicium","6064":"Nihonium","6080":"Flerovium","6096":"Moscovium","6112":"Livermorium","6128":"Tennessine","6144":"Oganesson","6176":"Coral","6177":"Coral","6178":"Coral","6179":"Coral","6180":"Coral","6192":"Coral Block","6193":"Coral Block","6194":"Coral Block","6195":"Coral Block","6196":"Coral Block","6200":"Coral Block","6201":"Coral Block","6202":"Coral Block","6203":"Coral Block","6204":"Coral Block","6208":"Coral Fan","6209":"Coral Fan","6210":"Coral Fan","6211":"Coral Fan","6212":"Coral Fan","6216":"Coral Fan","6217":"Coral Fan","6218":"Coral Fan","6219":"Coral Fan","6220":"Coral Fan","6224":"Coral Fan","6225":"Coral Fan","6226":"Coral Fan","6227":"Coral Fan","6228":"Coral Fan","6232":"Coral Fan","6233":"Coral Fan","6234":"Coral Fan","6235":"Coral Fan","6236":"Coral Fan","6240":"Wall Coral Fan","6241":"Wall Coral Fan","6242":"Wall Coral Fan","6243":"Wall Coral Fan","6244":"Wall Coral Fan","6245":"Wall Coral Fan","6246":"Wall Coral Fan","6247":"Wall Coral Fan","6248":"Wall Coral Fan","6249":"Wall Coral Fan","6250":"Wall Coral Fan","6251":"Wall Coral Fan","6252":"Wall Coral Fan","6253":"Wall Coral Fan","6254":"Wall Coral Fan","6255":"Wall Coral Fan","6256":"Wall Coral Fan","6257":"Wall Coral Fan","6258":"Wall Coral Fan","6259":"Wall Coral Fan","6260":"Wall Coral Fan","6261":"Wall Coral Fan","6262":"Wall Coral Fan","6263":"Wall Coral Fan","6264":"Wall Coral Fan","6265":"Wall Coral Fan","6266":"Wall Coral Fan","6267":"Wall Coral Fan","6268":"Wall Coral Fan","6269":"Wall Coral Fan","6270":"Wall Coral Fan","6271":"Wall Coral Fan","6272":"Wall Coral Fan","6274":"Wall Coral Fan","6276":"Wall Coral Fan","6278":"Wall Coral Fan","6280":"Wall Coral Fan","6282":"Wall Coral Fan","6284":"Wall Coral Fan","6286":"Wall Coral Fan","6304":"Dried Kelp Block","6320":"Acacia Button","6321":"Acacia Button","6322":"Acacia Button","6323":"Acacia Button","6324":"Acacia Button","6325":"Acacia Button","6328":"Acacia Button","6329":"Acacia Button","6330":"Acacia Button","6331":"Acacia Button","6332":"Acacia Button","6333":"Acacia Button","6336":"Birch Button","6337":"Birch Button","6338":"Birch Button","6339":"Birch Button","6340":"Birch Button","6341":"Birch Button","6344":"Birch Button","6345":"Birch Button","6346":"Birch Button","6347":"Birch Button","6348":"Birch Button","6349":"Birch Button","6352":"Dark Oak Button","6353":"Dark Oak Button","6354":"Dark Oak Button","6355":"Dark Oak Button","6356":"Dark Oak Button","6357":"Dark Oak Button","6360":"Dark Oak Button","6361":"Dark Oak Button","6362":"Dark Oak Button","6363":"Dark Oak Button","6364":"Dark Oak Button","6365":"Dark Oak Button","6368":"Jungle Button","6369":"Jungle Button","6370":"Jungle Button","6371":"Jungle Button","6372":"Jungle Button","6373":"Jungle Button","6376":"Jungle Button","6377":"Jungle Button","6378":"Jungle Button","6379":"Jungle Button","6380":"Jungle Button","6381":"Jungle Button","6384":"Spruce Button","6385":"Spruce Button","6386":"Spruce Button","6387":"Spruce Button","6388":"Spruce Button","6389":"Spruce Button","6392":"Spruce Button","6393":"Spruce Button","6394":"Spruce Button","6395":"Spruce Button","6396":"Spruce Button","6397":"Spruce Button","6400":"Acacia Trapdoor","6401":"Acacia Trapdoor","6402":"Acacia Trapdoor","6403":"Acacia Trapdoor","6404":"Acacia Trapdoor","6405":"Acacia Trapdoor","6406":"Acacia Trapdoor","6407":"Acacia Trapdoor","6408":"Acacia Trapdoor","6409":"Acacia Trapdoor","6410":"Acacia Trapdoor","6411":"Acacia Trapdoor","6412":"Acacia Trapdoor","6413":"Acacia Trapdoor","6414":"Acacia Trapdoor","6415":"Acacia Trapdoor","6416":"Birch Trapdoor","6417":"Birch Trapdoor","6418":"Birch Trapdoor","6419":"Birch Trapdoor","6420":"Birch Trapdoor","6421":"Birch Trapdoor","6422":"Birch Trapdoor","6423":"Birch Trapdoor","6424":"Birch Trapdoor","6425":"Birch Trapdoor","6426":"Birch Trapdoor","6427":"Birch Trapdoor","6428":"Birch Trapdoor","6429":"Birch Trapdoor","6430":"Birch Trapdoor","6431":"Birch Trapdoor","6432":"Dark Oak Trapdoor","6433":"Dark Oak Trapdoor","6434":"Dark Oak Trapdoor","6435":"Dark Oak Trapdoor","6436":"Dark Oak Trapdoor","6437":"Dark Oak Trapdoor","6438":"Dark Oak Trapdoor","6439":"Dark Oak Trapdoor","6440":"Dark Oak Trapdoor","6441":"Dark Oak Trapdoor","6442":"Dark Oak Trapdoor","6443":"Dark Oak Trapdoor","6444":"Dark Oak Trapdoor","6445":"Dark Oak Trapdoor","6446":"Dark Oak Trapdoor","6447":"Dark Oak Trapdoor","6448":"Jungle Trapdoor","6449":"Jungle Trapdoor","6450":"Jungle Trapdoor","6451":"Jungle Trapdoor","6452":"Jungle Trapdoor","6453":"Jungle Trapdoor","6454":"Jungle Trapdoor","6455":"Jungle Trapdoor","6456":"Jungle Trapdoor","6457":"Jungle Trapdoor","6458":"Jungle Trapdoor","6459":"Jungle Trapdoor","6460":"Jungle Trapdoor","6461":"Jungle Trapdoor","6462":"Jungle Trapdoor","6463":"Jungle Trapdoor","6464":"Spruce Trapdoor","6465":"Spruce Trapdoor","6466":"Spruce Trapdoor","6467":"Spruce Trapdoor","6468":"Spruce Trapdoor","6469":"Spruce Trapdoor","6470":"Spruce Trapdoor","6471":"Spruce Trapdoor","6472":"Spruce Trapdoor","6473":"Spruce Trapdoor","6474":"Spruce Trapdoor","6475":"Spruce Trapdoor","6476":"Spruce Trapdoor","6477":"Spruce Trapdoor","6478":"Spruce Trapdoor","6479":"Spruce Trapdoor","6480":"Acacia Pressure Plate","6481":"Acacia Pressure Plate","6496":"Birch Pressure Plate","6497":"Birch Pressure Plate","6512":"Dark Oak Pressure Plate","6513":"Dark Oak Pressure Plate","6528":"Jungle Pressure Plate","6529":"Jungle Pressure Plate","6544":"Spruce Pressure Plate","6545":"Spruce Pressure Plate","6560":"Carved Pumpkin","6561":"Carved Pumpkin","6562":"Carved Pumpkin","6563":"Carved Pumpkin","6576":"Sea Pickle","6577":"Sea Pickle","6578":"Sea Pickle","6579":"Sea Pickle","6580":"Sea Pickle","6581":"Sea Pickle","6582":"Sea Pickle","6583":"Sea Pickle","6656":"Barrier","6672":"End Stone Brick Slab","6673":"Smooth Red Sandstone Slab","6674":"Polished Andesite Slab","6675":"Andesite Slab","6676":"Diorite Slab","6677":"Polished Diorite Slab","6678":"Granite Slab","6679":"Polished Granite Slab","6680":"End Stone Brick Slab","6681":"Smooth Red Sandstone Slab","6682":"Polished Andesite Slab","6683":"Andesite Slab","6684":"Diorite Slab","6685":"Polished Diorite Slab","6686":"Granite Slab","6687":"Polished Granite Slab","6688":"Bamboo","6689":"Bamboo","6690":"Bamboo","6691":"Bamboo","6692":"Bamboo","6693":"Bamboo","6696":"Bamboo","6697":"Bamboo","6698":"Bamboo","6699":"Bamboo","6700":"Bamboo","6701":"Bamboo","6704":"Bamboo Sapling","6712":"Bamboo Sapling","6736":"Mossy Stone Brick Slab","6737":"Smooth Quartz Slab","6738":"Stone Slab","6739":"Cut Sandstone Slab","6740":"Cut Red Sandstone Slab","6744":"Mossy Stone Brick Slab","6745":"Smooth Quartz Slab","6746":"Stone Slab","6747":"Cut Sandstone Slab","6748":"Cut Red Sandstone Slab","6752":"End Stone Brick Slab","6753":"Smooth Red Sandstone Slab","6754":"Polished Andesite Slab","6755":"Andesite Slab","6756":"Diorite Slab","6757":"Polished Diorite Slab","6758":"Granite Slab","6759":"Polished Granite Slab","6768":"Mossy Stone Brick Slab","6769":"Smooth Quartz Slab","6770":"Stone Slab","6771":"Cut Sandstone Slab","6772":"Cut Red Sandstone Slab","6784":"Granite Stairs","6785":"Granite Stairs","6786":"Granite Stairs","6787":"Granite Stairs","6788":"Granite Stairs","6789":"Granite Stairs","6790":"Granite Stairs","6791":"Granite Stairs","6800":"Diorite Stairs","6801":"Diorite Stairs","6802":"Diorite Stairs","6803":"Diorite Stairs","6804":"Diorite Stairs","6805":"Diorite Stairs","6806":"Diorite Stairs","6807":"Diorite Stairs","6816":"Andesite Stairs","6817":"Andesite Stairs","6818":"Andesite Stairs","6819":"Andesite Stairs","6820":"Andesite Stairs","6821":"Andesite Stairs","6822":"Andesite Stairs","6823":"Andesite Stairs","6832":"Polished Granite Stairs","6833":"Polished Granite Stairs","6834":"Polished Granite Stairs","6835":"Polished Granite Stairs","6836":"Polished Granite Stairs","6837":"Polished Granite Stairs","6838":"Polished Granite Stairs","6839":"Polished Granite Stairs","6848":"Polished Diorite Stairs","6849":"Polished Diorite Stairs","6850":"Polished Diorite Stairs","6851":"Polished Diorite Stairs","6852":"Polished Diorite Stairs","6853":"Polished Diorite Stairs","6854":"Polished Diorite Stairs","6855":"Polished Diorite Stairs","6864":"Polished Andesite Stairs","6865":"Polished Andesite Stairs","6866":"Polished Andesite Stairs","6867":"Polished Andesite Stairs","6868":"Polished Andesite Stairs","6869":"Polished Andesite Stairs","6870":"Polished Andesite Stairs","6871":"Polished Andesite Stairs","6880":"Mossy Stone Brick Stairs","6881":"Mossy Stone Brick Stairs","6882":"Mossy Stone Brick Stairs","6883":"Mossy Stone Brick Stairs","6884":"Mossy Stone Brick Stairs","6885":"Mossy Stone Brick Stairs","6886":"Mossy Stone Brick Stairs","6887":"Mossy Stone Brick Stairs","6896":"Smooth Red Sandstone Stairs","6897":"Smooth Red Sandstone Stairs","6898":"Smooth Red Sandstone Stairs","6899":"Smooth Red Sandstone Stairs","6900":"Smooth Red Sandstone Stairs","6901":"Smooth Red Sandstone Stairs","6902":"Smooth Red Sandstone Stairs","6903":"Smooth Red Sandstone Stairs","6912":"Smooth Sandstone Stairs","6913":"Smooth Sandstone Stairs","6914":"Smooth Sandstone Stairs","6915":"Smooth Sandstone Stairs","6916":"Smooth Sandstone Stairs","6917":"Smooth Sandstone Stairs","6918":"Smooth Sandstone Stairs","6919":"Smooth Sandstone Stairs","6928":"End Stone Brick Stairs","6929":"End Stone Brick Stairs","6930":"End Stone Brick Stairs","6931":"End Stone Brick Stairs","6932":"End Stone Brick Stairs","6933":"End Stone Brick Stairs","6934":"End Stone Brick Stairs","6935":"End Stone Brick Stairs","6944":"Mossy Cobblestone Stairs","6945":"Mossy Cobblestone Stairs","6946":"Mossy Cobblestone Stairs","6947":"Mossy Cobblestone Stairs","6948":"Mossy Cobblestone Stairs","6949":"Mossy Cobblestone Stairs","6950":"Mossy Cobblestone Stairs","6951":"Mossy Cobblestone Stairs","6960":"Stone Stairs","6961":"Stone Stairs","6962":"Stone Stairs","6963":"Stone Stairs","6964":"Stone Stairs","6965":"Stone Stairs","6966":"Stone Stairs","6967":"Stone Stairs","6976":"Spruce Sign","6977":"Spruce Sign","6978":"Spruce Sign","6979":"Spruce Sign","6980":"Spruce Sign","6981":"Spruce Sign","6982":"Spruce Sign","6983":"Spruce Sign","6984":"Spruce Sign","6985":"Spruce Sign","6986":"Spruce Sign","6987":"Spruce Sign","6988":"Spruce Sign","6989":"Spruce Sign","6990":"Spruce Sign","6991":"Spruce Sign","6994":"Spruce Wall Sign","6995":"Spruce Wall Sign","6996":"Spruce Wall Sign","6997":"Spruce Wall Sign","7008":"Smooth Stone","7024":"Red Nether Brick Stairs","7025":"Red Nether Brick Stairs","7026":"Red Nether Brick Stairs","7027":"Red Nether Brick Stairs","7028":"Red Nether Brick Stairs","7029":"Red Nether Brick Stairs","7030":"Red Nether Brick Stairs","7031":"Red Nether Brick Stairs","7040":"Smooth Quartz Stairs","7041":"Smooth Quartz Stairs","7042":"Smooth Quartz Stairs","7043":"Smooth Quartz Stairs","7044":"Smooth Quartz Stairs","7045":"Smooth Quartz Stairs","7046":"Smooth Quartz Stairs","7047":"Smooth Quartz Stairs","7056":"Birch Sign","7057":"Birch Sign","7058":"Birch Sign","7059":"Birch Sign","7060":"Birch Sign","7061":"Birch Sign","7062":"Birch Sign","7063":"Birch Sign","7064":"Birch Sign","7065":"Birch Sign","7066":"Birch Sign","7067":"Birch Sign","7068":"Birch Sign","7069":"Birch Sign","7070":"Birch Sign","7071":"Birch Sign","7074":"Birch Wall Sign","7075":"Birch Wall Sign","7076":"Birch Wall Sign","7077":"Birch Wall Sign","7088":"Jungle Sign","7089":"Jungle Sign","7090":"Jungle Sign","7091":"Jungle Sign","7092":"Jungle Sign","7093":"Jungle Sign","7094":"Jungle Sign","7095":"Jungle Sign","7096":"Jungle Sign","7097":"Jungle Sign","7098":"Jungle Sign","7099":"Jungle Sign","7100":"Jungle Sign","7101":"Jungle Sign","7102":"Jungle Sign","7103":"Jungle Sign","7106":"Jungle Wall Sign","7107":"Jungle Wall Sign","7108":"Jungle Wall Sign","7109":"Jungle Wall Sign","7120":"Acacia Sign","7121":"Acacia Sign","7122":"Acacia Sign","7123":"Acacia Sign","7124":"Acacia Sign","7125":"Acacia Sign","7126":"Acacia Sign","7127":"Acacia Sign","7128":"Acacia Sign","7129":"Acacia Sign","7130":"Acacia Sign","7131":"Acacia Sign","7132":"Acacia Sign","7133":"Acacia Sign","7134":"Acacia Sign","7135":"Acacia Sign","7138":"Acacia Wall Sign","7139":"Acacia Wall Sign","7140":"Acacia Wall Sign","7141":"Acacia Wall Sign","7152":"Dark Oak Sign","7153":"Dark Oak Sign","7154":"Dark Oak Sign","7155":"Dark Oak Sign","7156":"Dark Oak Sign","7157":"Dark Oak Sign","7158":"Dark Oak Sign","7159":"Dark Oak Sign","7160":"Dark Oak Sign","7161":"Dark Oak Sign","7162":"Dark Oak Sign","7163":"Dark Oak Sign","7164":"Dark Oak Sign","7165":"Dark Oak Sign","7166":"Dark Oak Sign","7167":"Dark Oak Sign","7170":"Dark Oak Wall Sign","7171":"Dark Oak Wall Sign","7172":"Dark Oak Wall Sign","7173":"Dark Oak Wall Sign","7184":"Lectern","7185":"Lectern","7186":"Lectern","7187":"Lectern","7188":"Lectern","7189":"Lectern","7190":"Lectern","7191":"Lectern","7218":"Blast Furnace","7219":"Blast Furnace","7220":"Blast Furnace","7221":"Blast Furnace","7250":"Smoker","7251":"Smoker","7252":"Smoker","7253":"Smoker","7266":"Smoker","7267":"Smoker","7268":"Smoker","7269":"Smoker","7296":"Fletching Table","7328":"Barrel","7329":"Barrel","7330":"Barrel","7331":"Barrel","7332":"Barrel","7333":"Barrel","7336":"Barrel","7337":"Barrel","7338":"Barrel","7339":"Barrel","7340":"Barrel","7341":"Barrel","7344":"Loom","7345":"Loom","7346":"Loom","7347":"Loom","7376":"Bell","7377":"Bell","7378":"Bell","7379":"Bell","7380":"Bell","7381":"Bell","7382":"Bell","7383":"Bell","7384":"Bell","7385":"Bell","7386":"Bell","7387":"Bell","7388":"Bell","7389":"Bell","7390":"Bell","7391":"Bell","7392":"Sweet Berry Bush","7393":"Sweet Berry Bush","7394":"Sweet Berry Bush","7395":"Sweet Berry Bush","7408":"Lantern","7409":"Lantern","7472":"Oak Wood","7473":"Spruce Wood","7474":"Birch Wood","7475":"Jungle Wood","7476":"Acacia Wood","7477":"Dark Oak Wood","7480":"Stripped Oak Wood","7481":"Stripped Spruce Wood","7482":"Stripped Birch Wood","7483":"Stripped Jungle Wood","7484":"Stripped Acacia Wood","7485":"Stripped Dark Oak Wood","7506":"Blast Furnace","7507":"Blast Furnace","7508":"Blast Furnace","7509":"Blast Furnace"},"remaps":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"23":16,"24":16,"25":16,"26":16,"27":16,"28":16,"29":16,"30":16,"31":16,"33":32,"34":32,"35":32,"36":32,"37":32,"38":32,"39":32,"40":32,"41":32,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"50":48,"51":48,"52":48,"53":48,"54":48,"55":48,"56":48,"57":48,"58":48,"59":48,"60":48,"61":48,"62":48,"63":48,"65":64,"66":64,"67":64,"68":64,"69":64,"70":64,"71":64,"72":64,"73":64,"74":64,"75":64,"76":64,"77":64,"78":64,"79":64,"86":80,"87":80,"88":80,"89":80,"90":80,"91":80,"92":80,"93":80,"94":80,"95":80,"102":96,"103":96,"110":96,"111":96,"114":112,"115":112,"116":112,"117":112,"118":112,"119":112,"120":112,"121":112,"122":112,"123":112,"124":112,"125":112,"126":112,"127":112,"194":192,"195":192,"196":192,"197":192,"198":192,"199":192,"200":192,"201":192,"202":192,"203":192,"204":192,"205":192,"206":192,"207":192,"209":208,"210":208,"211":208,"212":208,"213":208,"214":208,"215":208,"216":208,"217":208,"218":208,"219":208,"220":208,"221":208,"222":208,"223":208,"225":224,"226":224,"227":224,"228":224,"229":224,"230":224,"231":224,"232":224,"233":224,"234":224,"235":224,"236":224,"237":224,"238":224,"239":224,"241":240,"242":240,"243":240,"244":240,"245":240,"246":240,"247":240,"248":240,"249":240,"250":240,"251":240,"252":240,"253":240,"254":240,"255":240,"257":256,"258":256,"259":256,"260":256,"261":256,"262":256,"263":256,"264":256,"265":256,"266":256,"267":256,"268":256,"269":256,"270":256,"271":256,"284":7472,"285":7473,"286":7474,"287":7475,"306":304,"307":304,"308":304,"309":304,"310":304,"311":304,"312":304,"313":304,"314":304,"315":304,"316":304,"317":304,"318":304,"319":304,"321":320,"322":320,"323":320,"324":320,"325":320,"326":320,"327":320,"328":320,"329":320,"330":320,"331":320,"332":320,"333":320,"334":320,"335":320,"337":336,"338":336,"339":336,"340":336,"341":336,"342":336,"343":336,"344":336,"345":336,"346":336,"347":336,"348":336,"349":336,"350":336,"351":336,"353":352,"354":352,"355":352,"356":352,"357":352,"358":352,"359":352,"360":352,"361":352,"362":352,"363":352,"364":352,"365":352,"366":352,"367":352,"388":384,"389":384,"390":384,"391":384,"392":384,"393":384,"394":384,"395":384,"396":384,"397":384,"398":384,"399":384,"401":400,"402":400,"403":400,"404":400,"405":400,"406":400,"407":400,"408":400,"409":400,"410":400,"411":400,"412":400,"413":400,"414":400,"415":400,"438":432,"439":432,"446":432,"447":432,"454":448,"455":448,"462":448,"463":448,"481":480,"482":480,"483":480,"484":480,"485":480,"486":480,"487":480,"488":480,"489":480,"490":480,"491":480,"492":480,"493":480,"494":480,"495":480,"496":498,"499":498,"500":498,"501":498,"502":498,"503":498,"504":498,"505":498,"506":498,"507":498,"508":498,"509":498,"510":498,"511":498,"513":512,"514":512,"515":512,"516":512,"517":512,"518":512,"519":512,"520":512,"521":512,"522":512,"523":512,"524":512,"525":512,"526":512,"527":512,"577":576,"578":576,"579":576,"580":576,"581":576,"582":576,"583":576,"584":576,"585":576,"586":576,"587":576,"588":576,"589":576,"590":576,"591":576,"593":592,"594":592,"595":592,"596":592,"597":592,"598":592,"599":592,"600":592,"601":592,"602":592,"603":592,"604":592,"605":592,"606":592,"607":592,"619":608,"620":608,"621":608,"622":608,"623":608,"625":624,"626":624,"627":624,"628":624,"629":624,"630":624,"631":624,"632":624,"633":624,"634":624,"635":624,"636":624,"637":624,"638":624,"639":624,"641":640,"642":640,"643":640,"644":640,"645":640,"646":640,"647":640,"648":640,"649":640,"650":640,"651":640,"652":640,"653":640,"654":640,"655":640,"657":656,"658":656,"659":656,"660":656,"661":656,"662":656,"663":656,"664":656,"665":656,"666":656,"667":656,"668":656,"669":656,"670":656,"671":656,"673":672,"674":672,"675":672,"676":672,"677":672,"678":672,"679":672,"680":672,"681":672,"682":672,"683":672,"684":672,"685":672,"686":672,"687":672,"696":688,"697":689,"698":690,"699":691,"700":692,"701":693,"702":694,"703":695,"721":720,"722":720,"723":720,"724":720,"725":720,"726":720,"727":720,"728":720,"729":720,"730":720,"731":720,"732":720,"733":720,"734":720,"735":720,"740":736,"741":736,"742":736,"743":736,"744":736,"745":736,"746":736,"747":736,"748":736,"749":736,"750":736,"751":736,"753":752,"754":752,"755":752,"756":752,"757":752,"758":752,"759":752,"760":752,"761":752,"762":752,"763":752,"764":752,"765":752,"766":752,"767":752,"769":768,"770":768,"771":768,"772":768,"773":768,"774":768,"775":768,"776":768,"777":768,"778":768,"779":768,"780":768,"781":768,"782":768,"783":768,"785":784,"786":784,"787":784,"788":784,"789":784,"790":784,"791":784,"792":784,"793":784,"794":784,"795":784,"796":784,"797":784,"798":784,"799":784,"800":805,"806":805,"807":805,"808":805,"809":805,"810":805,"811":805,"812":805,"813":805,"814":805,"815":805,"833":832,"834":832,"835":832,"836":832,"837":832,"838":832,"839":832,"840":832,"841":832,"842":832,"843":832,"844":832,"845":832,"846":832,"847":832,"856":851,"857":851,"858":851,"859":851,"860":851,"861":851,"862":851,"863":851,"864":866,"865":866,"870":866,"871":866,"872":866,"873":866,"874":866,"875":866,"876":866,"877":866,"878":866,"879":866,"897":896,"898":896,"899":896,"900":896,"901":896,"902":896,"903":896,"904":896,"905":896,"906":896,"907":896,"908":896,"909":896,"910":896,"911":896,"913":912,"914":912,"915":912,"916":912,"917":912,"918":912,"919":912,"920":912,"921":912,"922":912,"923":912,"924":912,"925":912,"926":912,"927":912,"929":928,"930":928,"931":928,"932":928,"933":928,"934":928,"935":928,"936":928,"937":928,"938":928,"939":928,"940":928,"941":928,"942":928,"943":928,"952":944,"953":944,"954":944,"955":944,"956":944,"957":944,"958":944,"959":944,"968":960,"969":960,"970":960,"971":960,"972":960,"973":960,"974":960,"975":960,"976":978,"977":978,"982":978,"983":978,"984":978,"985":978,"986":978,"987":978,"988":978,"989":978,"990":978,"991":978,"992":978,"993":978,"998":978,"999":978,"1000":978,"1001":978,"1002":978,"1003":978,"1004":978,"1005":978,"1006":978,"1007":978,"1036":1027,"1037":1027,"1038":1027,"1039":1027,"1040":1042,"1041":1042,"1046":1042,"1047":1042,"1048":1042,"1049":1042,"1050":1042,"1051":1042,"1052":1042,"1053":1042,"1054":1042,"1055":1042,"1066":1056,"1067":1056,"1068":1056,"1069":1056,"1070":1056,"1071":1056,"1080":1075,"1081":1075,"1082":1075,"1083":1075,"1084":1075,"1085":1075,"1086":1075,"1087":1075,"1088":1090,"1089":1090,"1094":1090,"1095":1090,"1096":1090,"1097":1090,"1098":1090,"1099":1090,"1100":1090,"1101":1090,"1102":1090,"1103":1090,"1122":1120,"1123":1120,"1124":1120,"1125":1120,"1126":1120,"1127":1120,"1128":1120,"1129":1120,"1130":1120,"1131":1120,"1132":1120,"1133":1120,"1134":1120,"1135":1120,"1148":1139,"1149":1139,"1150":1139,"1151":1139,"1154":1152,"1155":1152,"1156":1152,"1157":1152,"1158":1152,"1159":1152,"1160":1152,"1161":1152,"1162":1152,"1163":1152,"1164":1152,"1165":1152,"1166":1152,"1167":1152,"1169":1168,"1170":1168,"1171":1168,"1172":1168,"1173":1168,"1174":1168,"1175":1168,"1176":1168,"1177":1168,"1178":1168,"1179":1168,"1180":1168,"1181":1168,"1182":1168,"1183":1168,"1185":1168,"1186":1168,"1187":1168,"1188":1168,"1189":1168,"1190":1168,"1191":1168,"1192":1168,"1193":1168,"1194":1168,"1195":1168,"1196":1168,"1197":1168,"1198":1168,"1199":1168,"1200":1221,"1206":1221,"1207":1221,"1208":1221,"1209":1221,"1210":1221,"1211":1221,"1212":1221,"1213":1221,"1214":1221,"1215":1221,"1216":1221,"1222":1221,"1223":1221,"1224":1221,"1225":1221,"1226":1221,"1227":1221,"1228":1221,"1229":1221,"1230":1221,"1231":1221,"1238":1232,"1239":1232,"1246":1232,"1247":1232,"1256":1248,"1257":1248,"1258":1248,"1259":1248,"1260":1248,"1261":1248,"1262":1248,"1263":1248,"1265":1264,"1266":1264,"1267":1264,"1268":1264,"1269":1264,"1270":1264,"1271":1264,"1272":1264,"1273":1264,"1274":1264,"1275":1264,"1276":1264,"1277":1264,"1278":1264,"1279":1264,"1281":1280,"1282":1280,"1283":1280,"1284":1280,"1285":1280,"1286":1280,"1287":1280,"1288":1280,"1289":1280,"1290":1280,"1291":1280,"1292":1280,"1293":1280,"1294":1280,"1295":1280,"1313":1312,"1314":1312,"1315":1312,"1316":1312,"1317":1312,"1318":1312,"1319":1312,"1320":1312,"1321":1312,"1322":1312,"1323":1312,"1324":1312,"1325":1312,"1326":1312,"1327":1312,"1345":1344,"1346":1344,"1347":1344,"1348":1344,"1349":1344,"1350":1344,"1351":1344,"1352":1344,"1353":1344,"1354":1344,"1355":1344,"1356":1344,"1357":1344,"1358":1344,"1359":1344,"1366":1360,"1367":1360,"1368":1360,"1369":1360,"1370":1360,"1371":1360,"1372":1360,"1373":1360,"1374":1360,"1375":1360,"1377":1376,"1378":1376,"1379":1376,"1380":1376,"1381":1376,"1382":1376,"1383":1376,"1384":1376,"1385":1376,"1386":1376,"1387":1376,"1388":1376,"1389":1376,"1390":1376,"1391":1376,"1393":1392,"1394":1392,"1395":1392,"1396":1392,"1397":1392,"1398":1392,"1399":1392,"1400":1392,"1401":1392,"1402":1392,"1403":1392,"1404":1392,"1405":1392,"1406":1392,"1407":1392,"1409":1408,"1410":1408,"1411":1408,"1412":1408,"1413":1408,"1414":1408,"1415":1408,"1416":1408,"1417":1408,"1418":1408,"1419":1408,"1420":1408,"1421":1408,"1422":1408,"1423":1408,"1425":1424,"1426":1424,"1427":1424,"1428":1424,"1429":1424,"1430":1424,"1431":1424,"1432":1424,"1433":1424,"1434":1424,"1435":1424,"1436":1424,"1437":1424,"1438":1424,"1439":1424,"1440":1441,"1443":1441,"1444":1441,"1445":1441,"1446":1441,"1447":1441,"1448":1441,"1449":1441,"1450":1441,"1451":1441,"1452":1441,"1453":1441,"1454":1441,"1455":1441,"1460":1458,"1461":1458,"1462":1458,"1463":1458,"1464":1458,"1465":1458,"1466":1458,"1467":1458,"1468":1458,"1469":1458,"1470":1458,"1471":1458,"1479":1472,"1480":1472,"1481":1472,"1482":1472,"1483":1472,"1484":1472,"1485":1472,"1486":1472,"1487":1472,"1521":1520,"1522":1520,"1523":1520,"1524":1520,"1525":1520,"1526":1520,"1527":1520,"1528":1520,"1529":1520,"1530":1520,"1531":1520,"1532":1520,"1533":1520,"1534":1520,"1535":1520,"1558":1552,"1559":1552,"1560":1552,"1561":1552,"1562":1552,"1563":1552,"1564":1552,"1565":1552,"1566":1552,"1567":1552,"1572":1568,"1573":1568,"1574":1568,"1575":1568,"1576":1568,"1577":1568,"1578":1568,"1579":1568,"1580":1568,"1581":1568,"1582":1568,"1583":1568,"1595":1598,"1596":1598,"1597":1598,"1610":1594,"1611":1614,"1612":1614,"1613":1614,"1615":1599,"1617":1616,"1618":1616,"1619":1616,"1620":1616,"1621":1616,"1622":1616,"1623":1616,"1624":1616,"1625":1616,"1626":1616,"1627":1616,"1628":1616,"1629":1616,"1630":1616,"1631":1616,"1633":1632,"1634":1632,"1635":1632,"1636":1632,"1637":1632,"1638":1632,"1639":1632,"1640":1632,"1641":1632,"1642":1632,"1643":1632,"1644":1632,"1645":1632,"1646":1632,"1647":1632,"1649":1648,"1650":1648,"1651":1648,"1652":1648,"1653":1648,"1654":1648,"1655":1648,"1656":1648,"1657":1648,"1658":1648,"1659":1648,"1660":1648,"1661":1648,"1662":1648,"1663":1648,"1672":1664,"1673":1664,"1674":1664,"1675":1664,"1676":1664,"1677":1664,"1678":1664,"1679":1664,"1688":1680,"1689":1680,"1690":1680,"1691":1680,"1692":1680,"1693":1680,"1694":1680,"1695":1680,"1736":1731,"1737":1731,"1738":1731,"1739":1731,"1740":1731,"1741":1731,"1742":1731,"1743":1731,"1752":1747,"1753":1747,"1754":1747,"1755":1747,"1756":1747,"1757":1747,"1758":1747,"1759":1747,"1761":1760,"1762":1760,"1763":1760,"1764":1760,"1765":1760,"1766":1760,"1767":1760,"1768":1760,"1769":1760,"1770":1760,"1771":1760,"1772":1760,"1773":1760,"1774":1760,"1775":1760,"1777":1776,"1778":1776,"1779":1776,"1780":1776,"1781":1776,"1782":1776,"1783":1776,"1784":1776,"1785":1776,"1786":1776,"1787":1776,"1788":1776,"1789":1776,"1790":1776,"1791":1776,"1793":1792,"1794":1792,"1795":1792,"1796":1792,"1797":1792,"1798":1792,"1799":1792,"1800":1792,"1801":1792,"1802":1792,"1803":1792,"1804":1792,"1805":1792,"1806":1792,"1807":1792,"1809":1808,"1810":1808,"1811":1808,"1812":1808,"1813":1808,"1814":1808,"1815":1808,"1816":1808,"1817":1808,"1818":1808,"1819":1808,"1820":1808,"1821":1808,"1822":1808,"1823":1808,"1832":1827,"1833":1827,"1834":1827,"1835":1827,"1836":1827,"1837":1827,"1838":1827,"1839":1827,"1844":1840,"1845":1840,"1846":1840,"1847":1840,"1848":1840,"1849":1840,"1850":1840,"1851":1840,"1852":1840,"1853":1840,"1854":1840,"1855":1840,"1857":1856,"1858":1856,"1859":1856,"1860":1856,"1861":1856,"1862":1856,"1863":1856,"1864":1856,"1865":1856,"1866":1856,"1867":1856,"1868":1856,"1869":1856,"1870":1856,"1871":1856,"1880":1872,"1881":1872,"1882":1872,"1883":1872,"1884":1872,"1885":1872,"1886":1872,"1887":1872,"1928":1922,"1929":1922,"1930":1922,"1931":1922,"1932":1922,"1933":1922,"1934":1922,"1935":1922,"1937":1936,"1938":1936,"1939":1936,"1940":1936,"1941":1936,"1942":1936,"1943":1936,"1944":1936,"1945":1936,"1946":1936,"1947":1936,"1948":1936,"1949":1936,"1950":1936,"1951":1936,"1953":1952,"1954":1952,"1955":1952,"1956":1952,"1957":1952,"1958":1952,"1959":1952,"1960":1952,"1961":1952,"1962":1952,"1963":1952,"1964":1952,"1965":1952,"1966":1952,"1967":1952,"1969":1968,"1970":1968,"1971":1968,"1972":1968,"1973":1968,"1974":1968,"1975":1968,"1976":1968,"1977":1968,"1978":1968,"1979":1968,"1980":1968,"1981":1968,"1982":1968,"1983":1968,"1985":1968,"1986":1968,"1987":1968,"1988":1968,"1989":1968,"1990":1968,"1991":1968,"1992":1968,"1993":1968,"1994":1968,"1995":1968,"1996":1968,"1997":1968,"1998":1968,"1999":1968,"2022":2016,"2023":2016,"2030":2016,"2031":2016,"2044":2032,"2045":2032,"2046":2032,"2047":2032,"2056":2051,"2057":2051,"2058":2051,"2059":2051,"2060":2051,"2061":2051,"2062":2051,"2063":2051,"2065":2064,"2066":2064,"2067":2064,"2068":2064,"2069":2064,"2070":2064,"2071":2064,"2072":2064,"2073":2064,"2074":2064,"2075":2064,"2076":2064,"2077":2064,"2078":2064,"2079":2064,"2080":2082,"2081":2082,"2086":2082,"2087":2082,"2088":2082,"2089":2082,"2090":2082,"2091":2082,"2092":2082,"2093":2082,"2094":2082,"2095":2082,"2129":2128,"2130":2128,"2131":2128,"2132":2128,"2133":2128,"2134":2128,"2135":2128,"2136":2128,"2137":2128,"2138":2128,"2139":2128,"2140":2128,"2141":2128,"2142":2128,"2143":2128,"2152":2147,"2153":2147,"2154":2147,"2155":2147,"2156":2147,"2157":2147,"2158":2147,"2159":2147,"2168":2163,"2169":2163,"2170":2163,"2171":2163,"2172":2163,"2173":2163,"2174":2163,"2175":2163,"2184":2179,"2185":2179,"2186":2179,"2187":2179,"2188":2179,"2189":2179,"2190":2179,"2191":2179,"2209":2208,"2210":2208,"2211":2208,"2212":2208,"2213":2208,"2214":2208,"2215":2208,"2216":2208,"2217":2208,"2218":2208,"2219":2208,"2220":2208,"2221":2208,"2222":2208,"2223":2208,"2238":2224,"2239":2224,"2241":2240,"2242":2240,"2243":2240,"2244":2240,"2245":2240,"2246":2240,"2247":2240,"2248":2240,"2249":2240,"2250":2240,"2251":2240,"2252":2240,"2253":2240,"2254":2240,"2255":2240,"2264":2256,"2265":2256,"2266":2256,"2267":2256,"2268":2256,"2269":2256,"2270":2256,"2271":2256,"2280":2272,"2281":2272,"2282":2272,"2283":2272,"2284":2272,"2285":2272,"2286":2272,"2287":2272,"2294":2288,"2295":2288,"2302":2288,"2303":2288,"2304":2306,"2310":2306,"2311":2306,"2312":2306,"2313":2306,"2314":2306,"2315":2306,"2316":2306,"2317":2306,"2318":2306,"2319":2306,"2332":2322,"2333":2322,"2334":2322,"2335":2322,"2336":2338,"2337":2338,"2342":2338,"2343":2338,"2344":2338,"2345":2338,"2346":2338,"2347":2338,"2348":2338,"2349":2338,"2350":2338,"2351":2338,"2392":2386,"2393":2386,"2394":2386,"2395":2386,"2396":2386,"2397":2386,"2398":2386,"2399":2386,"2400":2386,"2401":2386,"2402":2386,"2403":2386,"2404":2386,"2405":2386,"2406":2386,"2407":2386,"2433":2432,"2434":2432,"2435":2432,"2436":2432,"2437":2432,"2438":2432,"2439":2432,"2440":2432,"2441":2432,"2442":2432,"2443":2432,"2444":2432,"2445":2432,"2446":2432,"2447":2432,"2449":2448,"2450":2448,"2451":2448,"2452":2448,"2453":2448,"2454":2448,"2455":2448,"2456":2448,"2457":2448,"2458":2448,"2459":2448,"2460":2448,"2461":2448,"2462":2448,"2463":2448,"2465":2464,"2470":2464,"2471":2464,"2473":2464,"2478":2464,"2479":2464,"2484":2480,"2487":2480,"2488":2480,"2491":2480,"2492":2480,"2493":2481,"2494":2482,"2495":2480,"2504":2499,"2505":2499,"2506":2499,"2507":2499,"2508":2499,"2509":2499,"2510":2499,"2511":2499,"2520":2512,"2521":2513,"2522":2514,"2523":2515,"2524":2516,"2525":2517,"2578":288,"2579":288,"2582":288,"2583":288,"2586":288,"2587":288,"2590":288,"2591":288,"2604":7476,"2605":7477,"2616":2611,"2617":2611,"2618":2611,"2619":2611,"2620":2611,"2621":2611,"2622":2611,"2623":2611,"2632":2627,"2633":2627,"2634":2627,"2635":2627,"2636":2627,"2637":2627,"2638":2627,"2639":2627,"2641":2640,"2642":2640,"2643":2640,"2644":2640,"2645":2640,"2646":2640,"2647":2640,"2648":2640,"2649":2640,"2650":2640,"2651":2640,"2652":2640,"2653":2640,"2654":2640,"2655":2640,"2691":2688,"2692":2688,"2693":2688,"2694":2688,"2695":2688,"2696":2688,"2697":2688,"2698":2688,"2699":2688,"2700":2688,"2701":2688,"2702":2688,"2703":2688,"2705":2704,"2706":2704,"2707":2704,"2708":2704,"2709":2704,"2710":2704,"2711":2704,"2712":2704,"2713":2704,"2714":2704,"2715":2704,"2716":2704,"2717":2704,"2718":2704,"2719":2704,"2721":2720,"2722":2720,"2723":2720,"2725":2720,"2726":2720,"2727":2720,"2729":2720,"2730":2720,"2731":2720,"2732":2720,"2733":2720,"2734":2720,"2735":2720,"2753":2752,"2754":2752,"2755":2752,"2756":2752,"2757":2752,"2758":2752,"2759":2752,"2760":2752,"2761":2752,"2762":2752,"2763":2752,"2764":2752,"2765":2752,"2766":2752,"2767":2752,"2769":2768,"2770":2768,"2771":2768,"2772":2768,"2773":2768,"2774":2768,"2775":2768,"2776":2768,"2777":2768,"2778":2768,"2779":2768,"2780":2768,"2781":2768,"2782":2768,"2783":2768,"2785":2784,"2786":2784,"2787":2784,"2788":2784,"2789":2784,"2790":2784,"2791":2784,"2792":2784,"2793":2784,"2794":2784,"2795":2784,"2796":2784,"2797":2784,"2798":2784,"2799":2784,"2806":2800,"2807":2800,"2814":2800,"2815":2800,"2832":2834,"2833":2834,"2838":2834,"2839":2834,"2840":2834,"2841":2834,"2842":2834,"2843":2834,"2844":2834,"2845":2834,"2846":2834,"2847":2834,"2868":2864,"2869":2864,"2870":2864,"2871":2864,"2872":2864,"2873":2864,"2874":2864,"2875":2864,"2876":2864,"2877":2864,"2878":2864,"2879":2864,"2888":2883,"2889":2883,"2890":2883,"2891":2883,"2892":2883,"2893":2883,"2894":2883,"2895":2883,"2904":2896,"2905":2897,"2906":2898,"2907":2899,"2908":2900,"2909":2901,"2910":2902,"2911":2903,"3041":3040,"3042":3040,"3043":3040,"3044":3040,"3045":3040,"3046":3040,"3047":3040,"3048":3040,"3049":3040,"3050":3040,"3051":3040,"3052":3040,"3053":3040,"3054":3040,"3055":3040,"3073":3072,"3074":3072,"3075":3072,"3076":3072,"3077":3072,"3078":3072,"3079":3072,"3080":3072,"3081":3072,"3082":3072,"3083":3072,"3084":3072,"3085":3072,"3086":3072,"3087":3072,"3100":3091,"3101":3091,"3102":3091,"3103":3091,"3116":3107,"3117":3107,"3118":3107,"3119":3107,"3132":3123,"3133":3123,"3134":3123,"3135":3123,"3148":3139,"3149":3139,"3150":3139,"3151":3139,"3164":3155,"3165":3155,"3166":3155,"3167":3155,"3169":3168,"3170":3168,"3171":3168,"3172":3168,"3173":3168,"3174":3168,"3175":3168,"3176":3168,"3177":3168,"3178":3168,"3179":3168,"3180":3168,"3181":3168,"3182":3168,"3183":3168,"3192":3187,"3193":3187,"3194":3187,"3195":3187,"3196":3187,"3197":3187,"3198":3187,"3199":3187,"3217":3216,"3219":3216,"3220":3216,"3221":3216,"3223":3216,"3224":3216,"3225":3216,"3227":3216,"3228":3216,"3229":3216,"3230":3218,"3231":3216,"3232":3237,"3238":3237,"3239":3237,"3240":3245,"3246":3245,"3247":3245,"3256":3251,"3257":3251,"3258":3251,"3259":3251,"3260":3251,"3261":3251,"3262":3251,"3263":3251,"3264":3269,"3270":3269,"3271":3269,"3272":3277,"3278":3277,"3279":3277,"3281":3280,"3282":3280,"3283":3280,"3284":3280,"3285":3280,"3286":3280,"3287":3280,"3288":3280,"3289":3280,"3290":3280,"3291":3280,"3292":3280,"3293":3280,"3294":3280,"3295":3280,"3297":3296,"3298":3296,"3299":3296,"3300":3296,"3301":3296,"3302":3296,"3303":3296,"3304":3296,"3305":3296,"3306":3296,"3307":3296,"3308":3296,"3309":3296,"3310":3296,"3311":3296,"3316":3312,"3317":3312,"3318":3312,"3319":3312,"3320":3312,"3321":3312,"3322":3312,"3323":3312,"3324":3312,"3325":3312,"3326":3312,"3327":3312,"3334":3328,"3335":3328,"3336":3328,"3337":3328,"3338":3328,"3339":3328,"3340":3328,"3341":3328,"3342":3328,"3343":3328,"3409":3408,"3410":3408,"3411":3408,"3412":3408,"3413":3408,"3414":3408,"3415":3408,"3416":3408,"3417":3408,"3418":3408,"3419":3408,"3420":3408,"3421":3408,"3422":3408,"3423":3408,"3425":3424,"3426":3424,"3427":3424,"3428":3424,"3429":3424,"3430":3424,"3431":3424,"3432":3424,"3433":3424,"3434":3424,"3435":3424,"3436":3424,"3437":3424,"3438":3424,"3439":3424,"3441":3440,"3442":3440,"3443":3440,"3444":3440,"3445":3440,"3446":3440,"3447":3440,"3448":3440,"3449":3440,"3450":3440,"3451":3440,"3452":3440,"3453":3440,"3454":3440,"3455":3440,"3457":3456,"3458":3456,"3459":3456,"3461":3456,"3462":3456,"3463":3456,"3465":3456,"3466":3456,"3467":3456,"3468":3456,"3469":3456,"3470":3456,"3471":3456,"3504":3506,"3505":3506,"3510":3506,"3511":3506,"3512":3506,"3513":3506,"3514":3506,"3515":3506,"3516":3506,"3517":3506,"3518":3506,"3519":3506,"3520":3522,"3521":3522,"3526":3522,"3527":3522,"3528":3522,"3529":3522,"3530":3522,"3531":3522,"3532":3522,"3533":3522,"3534":3522,"3535":3522,"3536":3538,"3537":3538,"3542":3538,"3543":3538,"3544":3538,"3545":3538,"3546":3538,"3547":3538,"3548":3538,"3549":3538,"3550":3538,"3551":3538,"3552":3554,"3553":3554,"3558":3554,"3559":3554,"3560":3554,"3561":3554,"3562":3554,"3563":3554,"3564":3554,"3565":3554,"3566":3554,"3567":3554,"3568":3570,"3569":3570,"3574":3570,"3575":3570,"3576":3570,"3577":3570,"3578":3570,"3579":3570,"3580":3570,"3581":3570,"3582":3570,"3583":3570,"3584":3586,"3585":3586,"3590":3586,"3591":3586,"3592":3586,"3593":3586,"3594":3586,"3595":3586,"3596":3586,"3597":3586,"3598":3586,"3599":3586,"3600":3602,"3601":3602,"3606":3602,"3607":3602,"3608":3602,"3609":3602,"3610":3602,"3611":3602,"3612":3602,"3613":3602,"3614":3602,"3615":3602,"3616":3618,"3617":3618,"3622":3618,"3623":3618,"3624":3618,"3625":3618,"3626":3618,"3627":3618,"3628":3618,"3629":3618,"3630":3618,"3631":3618,"3632":3634,"3633":3634,"3638":3634,"3639":3634,"3640":3634,"3641":3634,"3642":3634,"3643":3634,"3644":3634,"3645":3634,"3646":3634,"3647":3634,"3648":3650,"3649":3650,"3654":3650,"3655":3650,"3656":3650,"3657":3650,"3658":3650,"3659":3650,"3660":3650,"3661":3650,"3662":3650,"3663":3650,"3664":3666,"3665":3666,"3670":3666,"3671":3666,"3672":3666,"3673":3666,"3674":3666,"3675":3666,"3676":3666,"3677":3666,"3678":3666,"3679":3666,"3696":3698,"3697":3698,"3702":3698,"3703":3698,"3704":3698,"3705":3698,"3706":3698,"3707":3698,"3708":3698,"3709":3698,"3710":3698,"3711":3698,"3712":3714,"3713":3714,"3718":3714,"3719":3714,"3720":3714,"3721":3714,"3722":3714,"3723":3714,"3724":3714,"3725":3714,"3726":3714,"3727":3714,"3728":3730,"3729":3730,"3734":3730,"3735":3730,"3736":3730,"3737":3730,"3738":3730,"3739":3730,"3740":3730,"3741":3730,"3742":3730,"3743":3730,"3744":3746,"3745":3746,"3750":3746,"3751":3746,"3752":3746,"3753":3746,"3754":3746,"3755":3746,"3756":3746,"3757":3746,"3758":3746,"3759":3746,"3760":3762,"3761":3762,"3766":3762,"3767":3762,"3768":3762,"3769":3762,"3770":3762,"3771":3762,"3772":3762,"3773":3762,"3774":3762,"3775":3762,"3824":3829,"3830":3829,"3831":3829,"3832":3829,"3833":3829,"3834":3829,"3835":3829,"3836":3829,"3837":3829,"3838":3829,"3839":3829,"3889":3888,"3890":3888,"3891":3888,"3892":3888,"3893":3888,"3894":3888,"3895":3888,"3896":3888,"3897":3888,"3898":3888,"3899":3888,"3900":3888,"3901":3888,"3902":3888,"3903":3888,"3912":3904,"3913":3904,"3914":3904,"3915":3904,"3916":3904,"3917":3904,"3918":3904,"3919":3904,"3921":3920,"3922":3920,"3923":3920,"3924":3920,"3925":3920,"3926":3920,"3927":3920,"3928":3920,"3929":3920,"3930":3920,"3931":3920,"3932":3920,"3933":3920,"3934":3920,"3935":3920,"3937":3936,"3938":3936,"3939":3936,"3940":3936,"3941":3936,"3942":3936,"3943":3936,"3944":3936,"3945":3936,"3946":3936,"3947":3936,"3948":3936,"3949":3936,"3950":3936,"3951":3936,"3955":3952,"3956":3952,"3957":3952,"3958":3952,"3959":3952,"3960":3952,"3961":3952,"3962":3952,"3963":3952,"3964":3952,"3965":3952,"3966":3952,"3967":3952,"3969":3968,"3970":3968,"3971":3968,"3972":3968,"3973":3968,"3974":3968,"3975":3968,"3976":3968,"3977":3968,"3978":3968,"3979":3968,"3980":3968,"3981":3968,"3982":3968,"3983":3968,"3985":3984,"3986":3984,"3987":3984,"3988":3984,"3989":3984,"3990":3984,"3991":3984,"3992":3984,"3993":3984,"3994":3984,"3995":3984,"3996":3984,"3997":3984,"3998":3984,"3999":3984,"4049":4048,"4050":4048,"4051":4048,"4052":4048,"4053":4048,"4054":4048,"4055":4048,"4056":4048,"4057":4048,"4058":4048,"4059":4048,"4060":4048,"4061":4048,"4062":4048,"4063":4048,"4081":4080,"4082":4080,"4083":4080,"4084":4080,"4085":4080,"4086":4080,"4087":4080,"4088":4080,"4089":4080,"4090":4080,"4091":4080,"4092":4080,"4093":4080,"4094":4080,"4095":4080,"4120":4115,"4121":4115,"4122":4115,"4123":4115,"4124":4115,"4125":4115,"4126":4115,"4127":4115,"4136":4131,"4137":4131,"4138":4131,"4139":4131,"4140":4131,"4141":4131,"4142":4131,"4143":4131,"4152":4147,"4153":4147,"4154":4147,"4155":4147,"4156":4147,"4157":4147,"4158":4147,"4159":4147,"4163":4160,"4164":4160,"4165":4160,"4166":4160,"4167":4160,"4168":4160,"4169":4160,"4170":4160,"4171":4160,"4172":4160,"4173":4160,"4174":4160,"4175":4160,"4179":4176,"4180":4176,"4181":4176,"4182":4176,"4183":4176,"4184":4176,"4185":4176,"4186":4176,"4187":4176,"4188":4176,"4189":4176,"4190":4176,"4191":4176,"4195":4192,"4196":4192,"4197":4192,"4198":4192,"4199":4192,"4200":4192,"4201":4192,"4202":4192,"4203":4192,"4204":4192,"4205":4192,"4206":4192,"4207":4192,"4211":4208,"4212":4208,"4213":4208,"4214":4208,"4215":4208,"4216":4208,"4217":4208,"4218":4208,"4219":4208,"4220":4208,"4221":4208,"4222":4208,"4223":4208,"4227":4224,"4228":4224,"4229":4224,"4230":4224,"4231":4224,"4232":4224,"4233":4224,"4234":4224,"4235":4224,"4236":4224,"4237":4224,"4238":4224,"4239":4224,"4243":4240,"4244":4240,"4245":4240,"4246":4240,"4247":4240,"4248":4240,"4249":4240,"4250":4240,"4251":4240,"4252":4240,"4253":4240,"4254":4240,"4255":4240,"4257":4256,"4258":4256,"4259":4256,"4260":4256,"4261":4256,"4262":4256,"4263":4256,"4264":4256,"4265":4256,"4266":4256,"4267":4256,"4268":4256,"4269":4256,"4270":4256,"4271":4256,"4273":4272,"4274":4272,"4275":4272,"4276":4272,"4277":4272,"4278":4272,"4279":4272,"4280":4272,"4281":4272,"4282":4272,"4283":4272,"4284":4272,"4285":4272,"4286":4272,"4287":4272,"4289":4288,"4290":4288,"4291":4288,"4292":4288,"4293":4288,"4294":4288,"4295":4288,"4296":4288,"4297":4288,"4298":4288,"4299":4288,"4300":4288,"4301":4288,"4302":4288,"4303":4288,"4305":4304,"4306":4304,"4307":4304,"4308":4304,"4309":4304,"4310":4304,"4311":4304,"4312":4304,"4313":4304,"4314":4304,"4315":4304,"4316":4304,"4317":4304,"4318":4304,"4319":4304,"4321":4320,"4322":4320,"4323":4320,"4324":4320,"4325":4320,"4326":4320,"4327":4320,"4328":4320,"4329":4320,"4330":4320,"4331":4320,"4332":4320,"4333":4320,"4334":4320,"4335":4320,"4337":4336,"4338":4336,"4339":4336,"4340":4336,"4341":4336,"4342":4336,"4343":4336,"4344":4336,"4345":4336,"4346":4336,"4347":4336,"4348":4336,"4349":4336,"4350":4336,"4351":4336,"4353":4352,"4354":4352,"4355":4352,"4356":4352,"4357":4352,"4358":4352,"4359":4352,"4360":4352,"4361":4352,"4362":4352,"4363":4352,"4364":4352,"4365":4352,"4366":4352,"4367":4352,"4369":4368,"4370":4368,"4371":4368,"4372":4368,"4373":4368,"4374":4368,"4375":4368,"4376":4368,"4377":4368,"4378":4368,"4379":4368,"4380":4368,"4381":4368,"4382":4368,"4383":4368,"4385":4384,"4386":4384,"4387":4384,"4388":4384,"4389":4384,"4390":4384,"4391":4384,"4392":4384,"4393":4384,"4394":4384,"4395":4384,"4396":4384,"4397":4384,"4398":4384,"4399":4384,"4401":4400,"4402":4400,"4403":4400,"4404":4400,"4405":4400,"4406":4400,"4407":4400,"4408":4400,"4409":4400,"4410":4400,"4411":4400,"4412":4400,"4413":4400,"4414":4400,"4415":4400,"4417":4416,"4418":4416,"4419":4416,"4420":4416,"4421":4416,"4422":4416,"4423":4416,"4424":4416,"4425":4416,"4426":4416,"4427":4416,"4428":4416,"4429":4416,"4430":4416,"4431":4416,"4433":4432,"4434":4432,"4435":4432,"4436":4432,"4437":4432,"4438":4432,"4439":4432,"4440":4432,"4441":4432,"4442":4432,"4443":4432,"4444":4432,"4445":4432,"4446":4432,"4447":4432,"4449":4448,"4450":4448,"4451":4448,"4452":4448,"4453":4448,"4454":4448,"4455":4448,"4456":4448,"4457":4448,"4458":4448,"4459":4448,"4460":4448,"4461":4448,"4462":4448,"4463":4448,"4465":4464,"4466":4464,"4467":4464,"4468":4464,"4469":4464,"4470":4464,"4471":4464,"4472":4464,"4473":4464,"4474":4464,"4475":4464,"4476":4464,"4477":4464,"4478":4464,"4479":4464,"4481":4480,"4482":4480,"4483":4480,"4484":4480,"4485":4480,"4486":4480,"4487":4480,"4488":4480,"4489":4480,"4490":4480,"4491":4480,"4492":4480,"4493":4480,"4494":4480,"4495":4480,"4497":4496,"4498":4496,"4499":4496,"4500":4496,"4501":4496,"4502":4496,"4503":4496,"4504":4496,"4505":4496,"4506":4496,"4507":4496,"4508":4496,"4509":4496,"4510":4496,"4511":4496,"4513":4512,"4514":4512,"4515":4512,"4516":4512,"4517":4512,"4518":4512,"4519":4512,"4520":4512,"4521":4512,"4522":4512,"4523":4512,"4524":4512,"4525":4512,"4526":4512,"4527":4512,"4529":4528,"4530":4528,"4531":4528,"4532":4528,"4533":4528,"4534":4528,"4535":4528,"4536":4528,"4537":4528,"4538":4528,"4539":4528,"4540":4528,"4541":4528,"4542":4528,"4543":4528,"4545":4544,"4546":4544,"4547":4544,"4548":4544,"4549":4544,"4550":4544,"4551":4544,"4552":4544,"4553":4544,"4554":4544,"4555":4544,"4556":4544,"4557":4544,"4558":4544,"4559":4544,"4561":4560,"4562":4560,"4563":4560,"4564":4560,"4565":4560,"4566":4560,"4567":4560,"4568":4560,"4569":4560,"4570":4560,"4571":4560,"4572":4560,"4573":4560,"4574":4560,"4575":4560,"4577":4576,"4578":4576,"4579":4576,"4580":4576,"4581":4576,"4582":4576,"4583":4576,"4584":4576,"4585":4576,"4586":4576,"4587":4576,"4588":4576,"4589":4576,"4590":4576,"4591":4576,"4593":4592,"4594":4592,"4595":4592,"4596":4592,"4597":4592,"4598":4592,"4599":4592,"4600":4592,"4601":4592,"4602":4592,"4603":4592,"4604":4592,"4605":4592,"4606":4592,"4607":4592,"4609":4608,"4610":4608,"4611":4608,"4612":4608,"4613":4608,"4614":4608,"4615":4608,"4616":4608,"4617":4608,"4618":4608,"4619":4608,"4620":4608,"4621":4608,"4622":4608,"4623":4608,"4625":4624,"4626":4624,"4627":4624,"4628":4624,"4629":4624,"4630":4624,"4631":4624,"4632":4624,"4633":4624,"4634":4624,"4635":4624,"4636":4624,"4637":4624,"4638":4624,"4639":4624,"4641":4640,"4642":4640,"4643":4640,"4644":4640,"4645":4640,"4646":4640,"4647":4640,"4648":4640,"4649":4640,"4650":4640,"4651":4640,"4652":4640,"4653":4640,"4654":4640,"4655":4640,"4657":4656,"4658":4656,"4659":4656,"4660":4656,"4661":4656,"4662":4656,"4663":4656,"4664":4656,"4665":4656,"4666":4656,"4667":4656,"4668":4656,"4669":4656,"4670":4656,"4671":4656,"4673":4672,"4674":4672,"4675":4672,"4676":4672,"4677":4672,"4678":4672,"4679":4672,"4680":4672,"4681":4672,"4682":4672,"4683":4672,"4684":4672,"4685":4672,"4686":4672,"4687":4672,"4689":4688,"4690":4688,"4691":4688,"4692":4688,"4693":4688,"4694":4688,"4695":4688,"4696":4688,"4697":4688,"4698":4688,"4699":4688,"4700":4688,"4701":4688,"4702":4688,"4703":4688,"4705":4704,"4706":4704,"4707":4704,"4708":4704,"4709":4704,"4710":4704,"4711":4704,"4712":4704,"4713":4704,"4714":4704,"4715":4704,"4716":4704,"4717":4704,"4718":4704,"4719":4704,"4721":4720,"4722":4720,"4723":4720,"4724":4720,"4725":4720,"4726":4720,"4727":4720,"4728":4720,"4729":4720,"4730":4720,"4731":4720,"4732":4720,"4733":4720,"4734":4720,"4735":4720,"4737":4736,"4738":4736,"4739":4736,"4740":4736,"4741":4736,"4742":4736,"4743":4736,"4744":4736,"4745":4736,"4746":4736,"4747":4736,"4748":4736,"4749":4736,"4750":4736,"4751":4736,"4753":4752,"4754":4752,"4755":4752,"4756":4752,"4757":4752,"4758":4752,"4759":4752,"4760":4752,"4761":4752,"4762":4752,"4763":4752,"4764":4752,"4765":4752,"4766":4752,"4767":4752,"4769":4768,"4770":4768,"4771":4768,"4772":4768,"4773":4768,"4774":4768,"4775":4768,"4776":4768,"4777":4768,"4778":4768,"4779":4768,"4780":4768,"4781":4768,"4782":4768,"4783":4768,"4785":4784,"4786":4784,"4787":4784,"4788":4784,"4789":4784,"4790":4784,"4791":4784,"4792":4784,"4793":4784,"4794":4784,"4795":4784,"4796":4784,"4797":4784,"4798":4784,"4799":4784,"4801":4800,"4802":4800,"4803":4800,"4804":4800,"4805":4800,"4806":4800,"4807":4800,"4808":4800,"4809":4800,"4810":4800,"4811":4800,"4812":4800,"4813":4800,"4814":4800,"4815":4800,"4817":4816,"4818":4816,"4819":4816,"4820":4816,"4821":4816,"4822":4816,"4823":4816,"4824":4816,"4825":4816,"4826":4816,"4827":4816,"4828":4816,"4829":4816,"4830":4816,"4831":4816,"4833":4832,"4834":4832,"4835":4832,"4836":4832,"4837":4832,"4838":4832,"4839":4832,"4840":4832,"4841":4832,"4842":4832,"4843":4832,"4844":4832,"4845":4832,"4846":4832,"4847":4832,"4849":4848,"4850":4848,"4851":4848,"4852":4848,"4853":4848,"4854":4848,"4855":4848,"4856":4848,"4857":4848,"4858":4848,"4859":4848,"4860":4848,"4861":4848,"4862":4848,"4863":4848,"4865":4864,"4866":4864,"4867":4864,"4868":4864,"4869":4864,"4870":4864,"4871":4864,"4872":4864,"4873":4864,"4874":4864,"4875":4864,"4876":4864,"4877":4864,"4878":4864,"4879":4864,"4881":4880,"4882":4880,"4883":4880,"4884":4880,"4885":4880,"4886":4880,"4887":4880,"4888":4880,"4889":4880,"4890":4880,"4891":4880,"4892":4880,"4893":4880,"4894":4880,"4895":4880,"4897":4896,"4898":4896,"4899":4896,"4900":4896,"4901":4896,"4902":4896,"4903":4896,"4904":4896,"4905":4896,"4906":4896,"4907":4896,"4908":4896,"4909":4896,"4910":4896,"4911":4896,"4913":4912,"4914":4912,"4915":4912,"4916":4912,"4917":4912,"4918":4912,"4919":4912,"4920":4912,"4921":4912,"4922":4912,"4923":4912,"4924":4912,"4925":4912,"4926":4912,"4927":4912,"4929":4928,"4930":4928,"4931":4928,"4932":4928,"4933":4928,"4934":4928,"4935":4928,"4936":4928,"4937":4928,"4938":4928,"4939":4928,"4940":4928,"4941":4928,"4942":4928,"4943":4928,"4945":4944,"4946":4944,"4947":4944,"4948":4944,"4949":4944,"4950":4944,"4951":4944,"4952":4944,"4953":4944,"4954":4944,"4955":4944,"4956":4944,"4957":4944,"4958":4944,"4959":4944,"4961":4960,"4962":4960,"4963":4960,"4964":4960,"4965":4960,"4966":4960,"4967":4960,"4968":4960,"4969":4960,"4970":4960,"4971":4960,"4972":4960,"4973":4960,"4974":4960,"4975":4960,"4977":4976,"4978":4976,"4979":4976,"4980":4976,"4981":4976,"4982":4976,"4983":4976,"4984":4976,"4985":4976,"4986":4976,"4987":4976,"4988":4976,"4989":4976,"4990":4976,"4991":4976,"4993":4992,"4994":4992,"4995":4992,"4996":4992,"4997":4992,"4998":4992,"4999":4992,"5000":4992,"5001":4992,"5002":4992,"5003":4992,"5004":4992,"5005":4992,"5006":4992,"5007":4992,"5009":5008,"5010":5008,"5011":5008,"5012":5008,"5013":5008,"5014":5008,"5015":5008,"5016":5008,"5017":5008,"5018":5008,"5019":5008,"5020":5008,"5021":5008,"5022":5008,"5023":5008,"5025":5024,"5026":5024,"5027":5024,"5028":5024,"5029":5024,"5030":5024,"5031":5024,"5032":5024,"5033":5024,"5034":5024,"5035":5024,"5036":5024,"5037":5024,"5038":5024,"5039":5024,"5041":5040,"5042":5040,"5043":5040,"5044":5040,"5045":5040,"5046":5040,"5047":5040,"5048":5040,"5049":5040,"5050":5040,"5051":5040,"5052":5040,"5053":5040,"5054":5040,"5055":5040,"5057":5056,"5058":5056,"5059":5056,"5060":5056,"5061":5056,"5062":5056,"5063":5056,"5064":5056,"5065":5056,"5066":5056,"5067":5056,"5068":5056,"5069":5056,"5070":5056,"5071":5056,"5073":5072,"5074":5072,"5075":5072,"5076":5072,"5077":5072,"5078":5072,"5079":5072,"5080":5072,"5081":5072,"5082":5072,"5083":5072,"5084":5072,"5085":5072,"5086":5072,"5087":5072,"5089":5088,"5090":5088,"5091":5088,"5092":5088,"5093":5088,"5094":5088,"5095":5088,"5096":5088,"5097":5088,"5098":5088,"5099":5088,"5100":5088,"5101":5088,"5102":5088,"5103":5088,"5105":5104,"5106":5104,"5107":5104,"5108":5104,"5109":5104,"5110":5104,"5111":5104,"5112":5104,"5113":5104,"5114":5104,"5115":5104,"5116":5104,"5117":5104,"5118":5104,"5119":5104,"5121":5120,"5122":5120,"5123":5120,"5124":5120,"5125":5120,"5126":5120,"5127":5120,"5128":5120,"5129":5120,"5130":5120,"5131":5120,"5132":5120,"5133":5120,"5134":5120,"5135":5120,"5137":5136,"5138":5136,"5139":5136,"5140":5136,"5141":5136,"5142":5136,"5143":5136,"5144":5136,"5145":5136,"5146":5136,"5147":5136,"5148":5136,"5149":5136,"5150":5136,"5151":5136,"5153":5152,"5154":5152,"5155":5152,"5156":5152,"5157":5152,"5158":5152,"5159":5152,"5160":5152,"5161":5152,"5162":5152,"5163":5152,"5164":5152,"5165":5152,"5166":5152,"5167":5152,"5169":5168,"5170":5168,"5171":5168,"5172":5168,"5173":5168,"5174":5168,"5175":5168,"5176":5168,"5177":5168,"5178":5168,"5179":5168,"5180":5168,"5181":5168,"5182":5168,"5183":5168,"5185":5184,"5186":5184,"5187":5184,"5188":5184,"5189":5184,"5190":5184,"5191":5184,"5192":5184,"5193":5184,"5194":5184,"5195":5184,"5196":5184,"5197":5184,"5198":5184,"5199":5184,"5201":5200,"5202":5200,"5203":5200,"5204":5200,"5205":5200,"5206":5200,"5207":5200,"5208":5200,"5209":5200,"5210":5200,"5211":5200,"5212":5200,"5213":5200,"5214":5200,"5215":5200,"5217":5216,"5218":5216,"5219":5216,"5220":5216,"5221":5216,"5222":5216,"5223":5216,"5224":5216,"5225":5216,"5226":5216,"5227":5216,"5228":5216,"5229":5216,"5230":5216,"5231":5216,"5233":5232,"5234":5232,"5235":5232,"5236":5232,"5237":5232,"5238":5232,"5239":5232,"5240":5232,"5241":5232,"5242":5232,"5243":5232,"5244":5232,"5245":5232,"5246":5232,"5247":5232,"5249":5248,"5250":5248,"5251":5248,"5252":5248,"5253":5248,"5254":5248,"5255":5248,"5256":5248,"5257":5248,"5258":5248,"5259":5248,"5260":5248,"5261":5248,"5262":5248,"5263":5248,"5265":5264,"5266":5264,"5267":5264,"5268":5264,"5269":5264,"5270":5264,"5271":5264,"5272":5264,"5273":5264,"5274":5264,"5275":5264,"5276":5264,"5277":5264,"5278":5264,"5279":5264,"5281":5280,"5282":5280,"5283":5280,"5284":5280,"5285":5280,"5286":5280,"5287":5280,"5288":5280,"5289":5280,"5290":5280,"5291":5280,"5292":5280,"5293":5280,"5294":5280,"5295":5280,"5297":5296,"5298":5296,"5299":5296,"5300":5296,"5301":5296,"5302":5296,"5303":5296,"5304":5296,"5305":5296,"5306":5296,"5307":5296,"5308":5296,"5309":5296,"5310":5296,"5311":5296,"5313":5312,"5314":5312,"5315":5312,"5316":5312,"5317":5312,"5318":5312,"5319":5312,"5320":5312,"5321":5312,"5322":5312,"5323":5312,"5324":5312,"5325":5312,"5326":5312,"5327":5312,"5329":5328,"5330":5328,"5331":5328,"5332":5328,"5333":5328,"5334":5328,"5335":5328,"5336":5328,"5337":5328,"5338":5328,"5339":5328,"5340":5328,"5341":5328,"5342":5328,"5343":5328,"5345":5344,"5346":5344,"5347":5344,"5348":5344,"5349":5344,"5350":5344,"5351":5344,"5352":5344,"5353":5344,"5354":5344,"5355":5344,"5356":5344,"5357":5344,"5358":5344,"5359":5344,"5361":5360,"5362":5360,"5363":5360,"5364":5360,"5365":5360,"5366":5360,"5367":5360,"5368":5360,"5369":5360,"5370":5360,"5371":5360,"5372":5360,"5373":5360,"5374":5360,"5375":5360,"5377":5376,"5378":5376,"5379":5376,"5380":5376,"5381":5376,"5382":5376,"5383":5376,"5384":5376,"5385":5376,"5386":5376,"5387":5376,"5388":5376,"5389":5376,"5390":5376,"5391":5376,"5393":5392,"5394":5392,"5395":5392,"5396":5392,"5397":5392,"5398":5392,"5399":5392,"5400":5392,"5401":5392,"5402":5392,"5403":5392,"5404":5392,"5405":5392,"5406":5392,"5407":5392,"5409":5408,"5410":5408,"5411":5408,"5412":5408,"5413":5408,"5414":5408,"5415":5408,"5416":5408,"5417":5408,"5418":5408,"5419":5408,"5420":5408,"5421":5408,"5422":5408,"5423":5408,"5425":5424,"5426":5424,"5427":5424,"5428":5424,"5429":5424,"5430":5424,"5431":5424,"5432":5424,"5433":5424,"5434":5424,"5435":5424,"5436":5424,"5437":5424,"5438":5424,"5439":5424,"5441":5440,"5442":5440,"5443":5440,"5444":5440,"5445":5440,"5446":5440,"5447":5440,"5448":5440,"5449":5440,"5450":5440,"5451":5440,"5452":5440,"5453":5440,"5454":5440,"5455":5440,"5457":5456,"5458":5456,"5459":5456,"5460":5456,"5461":5456,"5462":5456,"5463":5456,"5464":5456,"5465":5456,"5466":5456,"5467":5456,"5468":5456,"5469":5456,"5470":5456,"5471":5456,"5473":5472,"5474":5472,"5475":5472,"5476":5472,"5477":5472,"5478":5472,"5479":5472,"5480":5472,"5481":5472,"5482":5472,"5483":5472,"5484":5472,"5485":5472,"5486":5472,"5487":5472,"5489":5488,"5490":5488,"5491":5488,"5492":5488,"5493":5488,"5494":5488,"5495":5488,"5496":5488,"5497":5488,"5498":5488,"5499":5488,"5500":5488,"5501":5488,"5502":5488,"5503":5488,"5505":5504,"5506":5504,"5507":5504,"5508":5504,"5509":5504,"5510":5504,"5511":5504,"5512":5504,"5513":5504,"5514":5504,"5515":5504,"5516":5504,"5517":5504,"5518":5504,"5519":5504,"5521":5520,"5522":5520,"5523":5520,"5524":5520,"5525":5520,"5526":5520,"5527":5520,"5528":5520,"5529":5520,"5530":5520,"5531":5520,"5532":5520,"5533":5520,"5534":5520,"5535":5520,"5537":5536,"5538":5536,"5539":5536,"5540":5536,"5541":5536,"5542":5536,"5543":5536,"5544":5536,"5545":5536,"5546":5536,"5547":5536,"5548":5536,"5549":5536,"5550":5536,"5551":5536,"5553":5552,"5554":5552,"5555":5552,"5556":5552,"5557":5552,"5558":5552,"5559":5552,"5560":5552,"5561":5552,"5562":5552,"5563":5552,"5564":5552,"5565":5552,"5566":5552,"5567":5552,"5569":5568,"5570":5568,"5571":5568,"5572":5568,"5573":5568,"5574":5568,"5575":5568,"5576":5568,"5577":5568,"5578":5568,"5579":5568,"5580":5568,"5581":5568,"5582":5568,"5583":5568,"5585":5584,"5586":5584,"5587":5584,"5588":5584,"5589":5584,"5590":5584,"5591":5584,"5592":5584,"5593":5584,"5594":5584,"5595":5584,"5596":5584,"5597":5584,"5598":5584,"5599":5584,"5601":5600,"5602":5600,"5603":5600,"5604":5600,"5605":5600,"5606":5600,"5607":5600,"5608":5600,"5609":5600,"5610":5600,"5611":5600,"5612":5600,"5613":5600,"5614":5600,"5615":5600,"5617":5616,"5618":5616,"5619":5616,"5620":5616,"5621":5616,"5622":5616,"5623":5616,"5624":5616,"5625":5616,"5626":5616,"5627":5616,"5628":5616,"5629":5616,"5630":5616,"5631":5616,"5633":5632,"5634":5632,"5635":5632,"5636":5632,"5637":5632,"5638":5632,"5639":5632,"5640":5632,"5641":5632,"5642":5632,"5643":5632,"5644":5632,"5645":5632,"5646":5632,"5647":5632,"5649":5648,"5650":5648,"5651":5648,"5652":5648,"5653":5648,"5654":5648,"5655":5648,"5656":5648,"5657":5648,"5658":5648,"5659":5648,"5660":5648,"5661":5648,"5662":5648,"5663":5648,"5665":5664,"5666":5664,"5667":5664,"5668":5664,"5669":5664,"5670":5664,"5671":5664,"5672":5664,"5673":5664,"5674":5664,"5675":5664,"5676":5664,"5677":5664,"5678":5664,"5679":5664,"5681":5680,"5682":5680,"5683":5680,"5684":5680,"5685":5680,"5686":5680,"5687":5680,"5688":5680,"5689":5680,"5690":5680,"5691":5680,"5692":5680,"5693":5680,"5694":5680,"5695":5680,"5697":5696,"5698":5696,"5699":5696,"5700":5696,"5701":5696,"5702":5696,"5703":5696,"5704":5696,"5705":5696,"5706":5696,"5707":5696,"5708":5696,"5709":5696,"5710":5696,"5711":5696,"5713":5712,"5714":5712,"5715":5712,"5716":5712,"5717":5712,"5718":5712,"5719":5712,"5720":5712,"5721":5712,"5722":5712,"5723":5712,"5724":5712,"5725":5712,"5726":5712,"5727":5712,"5729":5728,"5730":5728,"5731":5728,"5732":5728,"5733":5728,"5734":5728,"5735":5728,"5736":5728,"5737":5728,"5738":5728,"5739":5728,"5740":5728,"5741":5728,"5742":5728,"5743":5728,"5745":5744,"5746":5744,"5747":5744,"5748":5744,"5749":5744,"5750":5744,"5751":5744,"5752":5744,"5753":5744,"5754":5744,"5755":5744,"5756":5744,"5757":5744,"5758":5744,"5759":5744,"5761":5760,"5762":5760,"5763":5760,"5764":5760,"5765":5760,"5766":5760,"5767":5760,"5768":5760,"5769":5760,"5770":5760,"5771":5760,"5772":5760,"5773":5760,"5774":5760,"5775":5760,"5777":5776,"5778":5776,"5779":5776,"5780":5776,"5781":5776,"5782":5776,"5783":5776,"5784":5776,"5785":5776,"5786":5776,"5787":5776,"5788":5776,"5789":5776,"5790":5776,"5791":5776,"5793":5792,"5794":5792,"5795":5792,"5796":5792,"5797":5792,"5798":5792,"5799":5792,"5800":5792,"5801":5792,"5802":5792,"5803":5792,"5804":5792,"5805":5792,"5806":5792,"5807":5792,"5809":5808,"5810":5808,"5811":5808,"5812":5808,"5813":5808,"5814":5808,"5815":5808,"5816":5808,"5817":5808,"5818":5808,"5819":5808,"5820":5808,"5821":5808,"5822":5808,"5823":5808,"5825":5824,"5826":5824,"5827":5824,"5828":5824,"5829":5824,"5830":5824,"5831":5824,"5832":5824,"5833":5824,"5834":5824,"5835":5824,"5836":5824,"5837":5824,"5838":5824,"5839":5824,"5841":5840,"5842":5840,"5843":5840,"5844":5840,"5845":5840,"5846":5840,"5847":5840,"5848":5840,"5849":5840,"5850":5840,"5851":5840,"5852":5840,"5853":5840,"5854":5840,"5855":5840,"5857":5856,"5858":5856,"5859":5856,"5860":5856,"5861":5856,"5862":5856,"5863":5856,"5864":5856,"5865":5856,"5866":5856,"5867":5856,"5868":5856,"5869":5856,"5870":5856,"5871":5856,"5873":5872,"5874":5872,"5875":5872,"5876":5872,"5877":5872,"5878":5872,"5879":5872,"5880":5872,"5881":5872,"5882":5872,"5883":5872,"5884":5872,"5885":5872,"5886":5872,"5887":5872,"5889":5888,"5890":5888,"5891":5888,"5892":5888,"5893":5888,"5894":5888,"5895":5888,"5896":5888,"5897":5888,"5898":5888,"5899":5888,"5900":5888,"5901":5888,"5902":5888,"5903":5888,"5905":5904,"5906":5904,"5907":5904,"5908":5904,"5909":5904,"5910":5904,"5911":5904,"5912":5904,"5913":5904,"5914":5904,"5915":5904,"5916":5904,"5917":5904,"5918":5904,"5919":5904,"5921":5920,"5922":5920,"5923":5920,"5924":5920,"5925":5920,"5926":5920,"5927":5920,"5928":5920,"5929":5920,"5930":5920,"5931":5920,"5932":5920,"5933":5920,"5934":5920,"5935":5920,"5937":5936,"5938":5936,"5939":5936,"5940":5936,"5941":5936,"5942":5936,"5943":5936,"5944":5936,"5945":5936,"5946":5936,"5947":5936,"5948":5936,"5949":5936,"5950":5936,"5951":5936,"5953":5952,"5954":5952,"5955":5952,"5956":5952,"5957":5952,"5958":5952,"5959":5952,"5960":5952,"5961":5952,"5962":5952,"5963":5952,"5964":5952,"5965":5952,"5966":5952,"5967":5952,"5969":5968,"5970":5968,"5971":5968,"5972":5968,"5973":5968,"5974":5968,"5975":5968,"5976":5968,"5977":5968,"5978":5968,"5979":5968,"5980":5968,"5981":5968,"5982":5968,"5983":5968,"5985":5984,"5986":5984,"5987":5984,"5988":5984,"5989":5984,"5990":5984,"5991":5984,"5992":5984,"5993":5984,"5994":5984,"5995":5984,"5996":5984,"5997":5984,"5998":5984,"5999":5984,"6001":6000,"6002":6000,"6003":6000,"6004":6000,"6005":6000,"6006":6000,"6007":6000,"6008":6000,"6009":6000,"6010":6000,"6011":6000,"6012":6000,"6013":6000,"6014":6000,"6015":6000,"6017":6016,"6018":6016,"6019":6016,"6020":6016,"6021":6016,"6022":6016,"6023":6016,"6024":6016,"6025":6016,"6026":6016,"6027":6016,"6028":6016,"6029":6016,"6030":6016,"6031":6016,"6033":6032,"6034":6032,"6035":6032,"6036":6032,"6037":6032,"6038":6032,"6039":6032,"6040":6032,"6041":6032,"6042":6032,"6043":6032,"6044":6032,"6045":6032,"6046":6032,"6047":6032,"6049":6048,"6050":6048,"6051":6048,"6052":6048,"6053":6048,"6054":6048,"6055":6048,"6056":6048,"6057":6048,"6058":6048,"6059":6048,"6060":6048,"6061":6048,"6062":6048,"6063":6048,"6065":6064,"6066":6064,"6067":6064,"6068":6064,"6069":6064,"6070":6064,"6071":6064,"6072":6064,"6073":6064,"6074":6064,"6075":6064,"6076":6064,"6077":6064,"6078":6064,"6079":6064,"6081":6080,"6082":6080,"6083":6080,"6084":6080,"6085":6080,"6086":6080,"6087":6080,"6088":6080,"6089":6080,"6090":6080,"6091":6080,"6092":6080,"6093":6080,"6094":6080,"6095":6080,"6097":6096,"6098":6096,"6099":6096,"6100":6096,"6101":6096,"6102":6096,"6103":6096,"6104":6096,"6105":6096,"6106":6096,"6107":6096,"6108":6096,"6109":6096,"6110":6096,"6111":6096,"6113":6112,"6114":6112,"6115":6112,"6116":6112,"6117":6112,"6118":6112,"6119":6112,"6120":6112,"6121":6112,"6122":6112,"6123":6112,"6124":6112,"6125":6112,"6126":6112,"6127":6112,"6129":6128,"6130":6128,"6131":6128,"6132":6128,"6133":6128,"6134":6128,"6135":6128,"6136":6128,"6137":6128,"6138":6128,"6139":6128,"6140":6128,"6141":6128,"6142":6128,"6143":6128,"6145":6144,"6146":6144,"6147":6144,"6148":6144,"6149":6144,"6150":6144,"6151":6144,"6152":6144,"6153":6144,"6154":6144,"6155":6144,"6156":6144,"6157":6144,"6158":6144,"6159":6144,"6181":6176,"6182":6176,"6183":6176,"6184":6176,"6185":6176,"6186":6176,"6187":6176,"6188":6176,"6189":6176,"6190":6176,"6191":6176,"6197":6192,"6198":6192,"6199":6192,"6205":6192,"6206":6192,"6207":6192,"6213":6208,"6214":6208,"6215":6208,"6221":6208,"6222":6208,"6223":6208,"6229":6208,"6230":6208,"6231":6208,"6237":6208,"6238":6208,"6239":6208,"6273":6248,"6275":6248,"6277":6248,"6279":6248,"6281":6248,"6283":6248,"6285":6248,"6287":6248,"6305":6304,"6306":6304,"6307":6304,"6308":6304,"6309":6304,"6310":6304,"6311":6304,"6312":6304,"6313":6304,"6314":6304,"6315":6304,"6316":6304,"6317":6304,"6318":6304,"6319":6304,"6326":6320,"6327":6320,"6334":6320,"6335":6320,"6342":6336,"6343":6336,"6350":6336,"6351":6336,"6358":6352,"6359":6352,"6366":6352,"6367":6352,"6374":6368,"6375":6368,"6382":6368,"6383":6368,"6390":6384,"6391":6384,"6398":6384,"6399":6384,"6482":6480,"6483":6480,"6484":6480,"6485":6480,"6486":6480,"6487":6480,"6488":6480,"6489":6480,"6490":6480,"6491":6480,"6492":6480,"6493":6480,"6494":6480,"6495":6480,"6498":6496,"6499":6496,"6500":6496,"6501":6496,"6502":6496,"6503":6496,"6504":6496,"6505":6496,"6506":6496,"6507":6496,"6508":6496,"6509":6496,"6510":6496,"6511":6496,"6514":6512,"6515":6512,"6516":6512,"6517":6512,"6518":6512,"6519":6512,"6520":6512,"6521":6512,"6522":6512,"6523":6512,"6524":6512,"6525":6512,"6526":6512,"6527":6512,"6530":6528,"6531":6528,"6532":6528,"6533":6528,"6534":6528,"6535":6528,"6536":6528,"6537":6528,"6538":6528,"6539":6528,"6540":6528,"6541":6528,"6542":6528,"6543":6528,"6546":6544,"6547":6544,"6548":6544,"6549":6544,"6550":6544,"6551":6544,"6552":6544,"6553":6544,"6554":6544,"6555":6544,"6556":6544,"6557":6544,"6558":6544,"6559":6544,"6564":6562,"6565":6562,"6566":6562,"6567":6562,"6568":6562,"6569":6562,"6570":6562,"6571":6562,"6572":6562,"6573":6562,"6574":6562,"6575":6562,"6584":6580,"6585":6580,"6586":6580,"6587":6580,"6588":6580,"6589":6580,"6590":6580,"6591":6580,"6657":6656,"6658":6656,"6659":6656,"6660":6656,"6661":6656,"6662":6656,"6663":6656,"6664":6656,"6665":6656,"6666":6656,"6667":6656,"6668":6656,"6669":6656,"6670":6656,"6671":6656,"6694":6688,"6695":6688,"6702":6688,"6703":6688,"6705":6704,"6706":6704,"6707":6704,"6708":6704,"6709":6704,"6710":6704,"6711":6704,"6713":6704,"6714":6704,"6715":6704,"6716":6704,"6717":6704,"6718":6704,"6719":6704,"6760":6752,"6761":6753,"6762":6754,"6763":6755,"6764":6756,"6765":6757,"6766":6758,"6767":6759,"6776":6768,"6777":6769,"6778":6770,"6779":6771,"6780":6772,"6792":6787,"6793":6787,"6794":6787,"6795":6787,"6796":6787,"6797":6787,"6798":6787,"6799":6787,"6808":6803,"6809":6803,"6810":6803,"6811":6803,"6812":6803,"6813":6803,"6814":6803,"6815":6803,"6824":6819,"6825":6819,"6826":6819,"6827":6819,"6828":6819,"6829":6819,"6830":6819,"6831":6819,"6840":6835,"6841":6835,"6842":6835,"6843":6835,"6844":6835,"6845":6835,"6846":6835,"6847":6835,"6856":6851,"6857":6851,"6858":6851,"6859":6851,"6860":6851,"6861":6851,"6862":6851,"6863":6851,"6872":6867,"6873":6867,"6874":6867,"6875":6867,"6876":6867,"6877":6867,"6878":6867,"6879":6867,"6888":6883,"6889":6883,"6890":6883,"6891":6883,"6892":6883,"6893":6883,"6894":6883,"6895":6883,"6904":6899,"6905":6899,"6906":6899,"6907":6899,"6908":6899,"6909":6899,"6910":6899,"6911":6899,"6920":6915,"6921":6915,"6922":6915,"6923":6915,"6924":6915,"6925":6915,"6926":6915,"6927":6915,"6936":6931,"6937":6931,"6938":6931,"6939":6931,"6940":6931,"6941":6931,"6942":6931,"6943":6931,"6952":6947,"6953":6947,"6954":6947,"6955":6947,"6956":6947,"6957":6947,"6958":6947,"6959":6947,"6968":6963,"6969":6963,"6970":6963,"6971":6963,"6972":6963,"6973":6963,"6974":6963,"6975":6963,"6992":6994,"6993":6994,"6998":6994,"6999":6994,"7000":6994,"7001":6994,"7002":6994,"7003":6994,"7004":6994,"7005":6994,"7006":6994,"7007":6994,"7009":7008,"7010":7008,"7011":7008,"7012":7008,"7013":7008,"7014":7008,"7015":7008,"7016":7008,"7017":7008,"7018":7008,"7019":7008,"7020":7008,"7021":7008,"7022":7008,"7023":7008,"7032":7027,"7033":7027,"7034":7027,"7035":7027,"7036":7027,"7037":7027,"7038":7027,"7039":7027,"7048":7043,"7049":7043,"7050":7043,"7051":7043,"7052":7043,"7053":7043,"7054":7043,"7055":7043,"7072":7074,"7073":7074,"7078":7074,"7079":7074,"7080":7074,"7081":7074,"7082":7074,"7083":7074,"7084":7074,"7085":7074,"7086":7074,"7087":7074,"7104":7106,"7105":7106,"7110":7106,"7111":7106,"7112":7106,"7113":7106,"7114":7106,"7115":7106,"7116":7106,"7117":7106,"7118":7106,"7119":7106,"7136":7138,"7137":7138,"7142":7138,"7143":7138,"7144":7138,"7145":7138,"7146":7138,"7147":7138,"7148":7138,"7149":7138,"7150":7138,"7151":7138,"7168":7170,"7169":7170,"7174":7170,"7175":7170,"7176":7170,"7177":7170,"7178":7170,"7179":7170,"7180":7170,"7181":7170,"7182":7170,"7183":7170,"7192":7186,"7193":7186,"7194":7186,"7195":7186,"7196":7186,"7197":7186,"7198":7186,"7199":7186,"7216":7218,"7217":7218,"7222":7218,"7223":7218,"7224":7218,"7225":7218,"7226":7218,"7227":7218,"7228":7218,"7229":7218,"7230":7218,"7231":7218,"7248":7250,"7249":7250,"7254":7250,"7255":7250,"7256":7250,"7257":7250,"7258":7250,"7259":7250,"7260":7250,"7261":7250,"7262":7250,"7263":7250,"7264":7250,"7265":7250,"7270":7250,"7271":7250,"7272":7250,"7273":7250,"7274":7250,"7275":7250,"7276":7250,"7277":7250,"7278":7250,"7279":7250,"7297":7296,"7298":7296,"7299":7296,"7300":7296,"7301":7296,"7302":7296,"7303":7296,"7304":7296,"7305":7296,"7306":7296,"7307":7296,"7308":7296,"7309":7296,"7310":7296,"7311":7296,"7334":7328,"7335":7328,"7342":7328,"7343":7328,"7348":7346,"7349":7346,"7350":7346,"7351":7346,"7352":7346,"7353":7346,"7354":7346,"7355":7346,"7356":7346,"7357":7346,"7358":7346,"7359":7346,"7396":7392,"7397":7392,"7398":7392,"7399":7392,"7400":7392,"7401":7392,"7402":7392,"7403":7392,"7404":7392,"7405":7392,"7406":7392,"7407":7392,"7410":7408,"7411":7408,"7412":7408,"7413":7408,"7414":7408,"7415":7408,"7416":7408,"7417":7408,"7418":7408,"7419":7408,"7420":7408,"7421":7408,"7422":7408,"7423":7408,"7478":7472,"7479":7472,"7486":7472,"7487":7472,"7504":7218,"7505":7218,"7510":7218,"7511":7218,"7512":7218,"7513":7218,"7514":7218,"7515":7218,"7516":7218,"7517":7218,"7518":7218,"7519":7218}} \ No newline at end of file +{"knownStates":{"0":"Air","16":"Stone","17":"Granite","18":"Polished Granite","19":"Diorite","20":"Polished Diorite","21":"Andesite","22":"Polished Andesite","32":"Grass","48":"Dirt","49":"Dirt","64":"Cobblestone","80":"Oak Planks","81":"Spruce Planks","82":"Birch Planks","83":"Jungle Planks","84":"Acacia Planks","85":"Dark Oak Planks","96":"Oak Sapling","97":"Spruce Sapling","98":"Birch Sapling","99":"Jungle Sapling","100":"Acacia Sapling","101":"Dark Oak Sapling","104":"Oak Sapling","105":"Spruce Sapling","106":"Birch Sapling","107":"Jungle Sapling","108":"Acacia Sapling","109":"Dark Oak Sapling","112":"Bedrock","113":"Bedrock","128":"Water","129":"Water","130":"Water","131":"Water","132":"Water","133":"Water","134":"Water","135":"Water","136":"Water","137":"Water","138":"Water","139":"Water","140":"Water","141":"Water","142":"Water","143":"Water","144":"Water","145":"Water","146":"Water","147":"Water","148":"Water","149":"Water","150":"Water","151":"Water","152":"Water","153":"Water","154":"Water","155":"Water","156":"Water","157":"Water","158":"Water","159":"Water","160":"Lava","161":"Lava","162":"Lava","163":"Lava","164":"Lava","165":"Lava","166":"Lava","167":"Lava","168":"Lava","169":"Lava","170":"Lava","171":"Lava","172":"Lava","173":"Lava","174":"Lava","175":"Lava","176":"Lava","177":"Lava","178":"Lava","179":"Lava","180":"Lava","181":"Lava","182":"Lava","183":"Lava","184":"Lava","185":"Lava","186":"Lava","187":"Lava","188":"Lava","189":"Lava","190":"Lava","191":"Lava","192":"Sand","193":"Red Sand","208":"Gravel","224":"Gold Ore","240":"Iron Ore","256":"Coal Ore","272":"Oak Log","273":"Spruce Log","274":"Birch Log","275":"Jungle Log","276":"Oak Log","277":"Spruce Log","278":"Birch Log","279":"Jungle Log","280":"Oak Log","281":"Spruce Log","282":"Birch Log","283":"Jungle Log","288":"Oak Leaves","289":"Spruce Leaves","290":"Birch Leaves","291":"Jungle Leaves","292":"Oak Leaves","293":"Spruce Leaves","294":"Birch Leaves","295":"Jungle Leaves","296":"Oak Leaves","297":"Spruce Leaves","298":"Birch Leaves","299":"Jungle Leaves","300":"Oak Leaves","301":"Spruce Leaves","302":"Birch Leaves","303":"Jungle Leaves","304":"Sponge","305":"Sponge","320":"Glass","336":"Lapis Lazuli Ore","352":"Lapis Lazuli Block","384":"Sandstone","385":"Chiseled Sandstone","386":"Cut Sandstone","387":"Smooth Sandstone","400":"Note Block","416":"Bed Block","417":"Bed Block","418":"Bed Block","419":"Bed Block","420":"Bed Block","421":"Bed Block","422":"Bed Block","423":"Bed Block","424":"Bed Block","425":"Bed Block","426":"Bed Block","427":"Bed Block","428":"Bed Block","429":"Bed Block","430":"Bed Block","431":"Bed Block","432":"Powered Rail","433":"Powered Rail","434":"Powered Rail","435":"Powered Rail","436":"Powered Rail","437":"Powered Rail","440":"Powered Rail","441":"Powered Rail","442":"Powered Rail","443":"Powered Rail","444":"Powered Rail","445":"Powered Rail","448":"Detector Rail","449":"Detector Rail","450":"Detector Rail","451":"Detector Rail","452":"Detector Rail","453":"Detector Rail","456":"Detector Rail","457":"Detector Rail","458":"Detector Rail","459":"Detector Rail","460":"Detector Rail","461":"Detector Rail","480":"Cobweb","497":"Tall Grass","498":"Fern","512":"Dead Bush","560":"Wool","561":"Wool","562":"Wool","563":"Wool","564":"Wool","565":"Wool","566":"Wool","567":"Wool","568":"Wool","569":"Wool","570":"Wool","571":"Wool","572":"Wool","573":"Wool","574":"Wool","575":"Wool","576":"???","592":"Dandelion","608":"Poppy","609":"Blue Orchid","610":"Allium","611":"Azure Bluet","612":"Red Tulip","613":"Orange Tulip","614":"White Tulip","615":"Pink Tulip","616":"Oxeye Daisy","617":"Cornflower","618":"Lily of the Valley","624":"Brown Mushroom","640":"Red Mushroom","656":"Gold Block","672":"Iron Block","688":"Smooth Stone Slab","689":"Sandstone Slab","690":"Fake Wooden Slab","691":"Cobblestone Slab","692":"Brick Slab","693":"Stone Brick Slab","694":"Quartz Slab","695":"Nether Brick Slab","704":"Smooth Stone Slab","705":"Sandstone Slab","706":"Fake Wooden Slab","707":"Cobblestone Slab","708":"Brick Slab","709":"Stone Brick Slab","710":"Quartz Slab","711":"Nether Brick Slab","712":"Smooth Stone Slab","713":"Sandstone Slab","714":"Fake Wooden Slab","715":"Cobblestone Slab","716":"Brick Slab","717":"Stone Brick Slab","718":"Quartz Slab","719":"Nether Brick Slab","720":"Bricks","736":"TNT","737":"TNT","738":"TNT","739":"TNT","752":"Bookshelf","768":"Mossy Cobblestone","784":"Obsidian","801":"Torch","802":"Torch","803":"Torch","804":"Torch","805":"Torch","816":"Fire Block","817":"Fire Block","818":"Fire Block","819":"Fire Block","820":"Fire Block","821":"Fire Block","822":"Fire Block","823":"Fire Block","824":"Fire Block","825":"Fire Block","826":"Fire Block","827":"Fire Block","828":"Fire Block","829":"Fire Block","830":"Fire Block","831":"Fire Block","832":"Monster Spawner","848":"Oak Stairs","849":"Oak Stairs","850":"Oak Stairs","851":"Oak Stairs","852":"Oak Stairs","853":"Oak Stairs","854":"Oak Stairs","855":"Oak Stairs","866":"Chest","867":"Chest","868":"Chest","869":"Chest","880":"Redstone","881":"Redstone","882":"Redstone","883":"Redstone","884":"Redstone","885":"Redstone","886":"Redstone","887":"Redstone","888":"Redstone","889":"Redstone","890":"Redstone","891":"Redstone","892":"Redstone","893":"Redstone","894":"Redstone","895":"Redstone","896":"Diamond Ore","912":"Diamond Block","928":"Crafting Table","944":"Wheat Block","945":"Wheat Block","946":"Wheat Block","947":"Wheat Block","948":"Wheat Block","949":"Wheat Block","950":"Wheat Block","951":"Wheat Block","960":"Farmland","961":"Farmland","962":"Farmland","963":"Farmland","964":"Farmland","965":"Farmland","966":"Farmland","967":"Farmland","978":"Furnace","979":"Furnace","980":"Furnace","981":"Furnace","994":"Furnace","995":"Furnace","996":"Furnace","997":"Furnace","1008":"Oak Sign","1009":"Oak Sign","1010":"Oak Sign","1011":"Oak Sign","1012":"Oak Sign","1013":"Oak Sign","1014":"Oak Sign","1015":"Oak Sign","1016":"Oak Sign","1017":"Oak Sign","1018":"Oak Sign","1019":"Oak Sign","1020":"Oak Sign","1021":"Oak Sign","1022":"Oak Sign","1023":"Oak Sign","1024":"Oak Door","1025":"Oak Door","1026":"Oak Door","1027":"Oak Door","1028":"Oak Door","1029":"Oak Door","1030":"Oak Door","1031":"Oak Door","1032":"Oak Door","1033":"Oak Door","1034":"Oak Door","1035":"Oak Door","1042":"Ladder","1043":"Ladder","1044":"Ladder","1045":"Ladder","1056":"Rail","1057":"Rail","1058":"Rail","1059":"Rail","1060":"Rail","1061":"Rail","1062":"Rail","1063":"Rail","1064":"Rail","1065":"Rail","1072":"Cobblestone Stairs","1073":"Cobblestone Stairs","1074":"Cobblestone Stairs","1075":"Cobblestone Stairs","1076":"Cobblestone Stairs","1077":"Cobblestone Stairs","1078":"Cobblestone Stairs","1079":"Cobblestone Stairs","1090":"Oak Wall Sign","1091":"Oak Wall Sign","1092":"Oak Wall Sign","1093":"Oak Wall Sign","1104":"Lever","1105":"Lever","1106":"Lever","1107":"Lever","1108":"Lever","1109":"Lever","1110":"Lever","1111":"Lever","1112":"Lever","1113":"Lever","1114":"Lever","1115":"Lever","1116":"Lever","1117":"Lever","1118":"Lever","1119":"Lever","1120":"Stone Pressure Plate","1121":"Stone Pressure Plate","1136":"Iron Door","1137":"Iron Door","1138":"Iron Door","1139":"Iron Door","1140":"Iron Door","1141":"Iron Door","1142":"Iron Door","1143":"Iron Door","1144":"Iron Door","1145":"Iron Door","1146":"Iron Door","1147":"Iron Door","1152":"Oak Pressure Plate","1153":"Oak Pressure Plate","1168":"Redstone Ore","1184":"Redstone Ore","1201":"Redstone Torch","1202":"Redstone Torch","1203":"Redstone Torch","1204":"Redstone Torch","1205":"Redstone Torch","1217":"Redstone Torch","1218":"Redstone Torch","1219":"Redstone Torch","1220":"Redstone Torch","1221":"Redstone Torch","1232":"Stone Button","1233":"Stone Button","1234":"Stone Button","1235":"Stone Button","1236":"Stone Button","1237":"Stone Button","1240":"Stone Button","1241":"Stone Button","1242":"Stone Button","1243":"Stone Button","1244":"Stone Button","1245":"Stone Button","1248":"Snow Layer","1249":"Snow Layer","1250":"Snow Layer","1251":"Snow Layer","1252":"Snow Layer","1253":"Snow Layer","1254":"Snow Layer","1255":"Snow Layer","1264":"Ice","1280":"Snow Block","1296":"Cactus","1297":"Cactus","1298":"Cactus","1299":"Cactus","1300":"Cactus","1301":"Cactus","1302":"Cactus","1303":"Cactus","1304":"Cactus","1305":"Cactus","1306":"Cactus","1307":"Cactus","1308":"Cactus","1309":"Cactus","1310":"Cactus","1311":"Cactus","1312":"Clay Block","1328":"Sugarcane","1329":"Sugarcane","1330":"Sugarcane","1331":"Sugarcane","1332":"Sugarcane","1333":"Sugarcane","1334":"Sugarcane","1335":"Sugarcane","1336":"Sugarcane","1337":"Sugarcane","1338":"Sugarcane","1339":"Sugarcane","1340":"Sugarcane","1341":"Sugarcane","1342":"Sugarcane","1343":"Sugarcane","1344":"Jukebox","1360":"Oak Fence","1361":"Spruce Fence","1362":"Birch Fence","1363":"Jungle Fence","1364":"Acacia Fence","1365":"Dark Oak Fence","1376":"Pumpkin","1392":"Netherrack","1408":"Soul Sand","1424":"Glowstone","1441":"Nether Portal","1442":"Nether Portal","1456":"Jack o'Lantern","1457":"Jack o'Lantern","1458":"Jack o'Lantern","1459":"Jack o'Lantern","1472":"Cake","1473":"Cake","1474":"Cake","1475":"Cake","1476":"Cake","1477":"Cake","1478":"Cake","1488":"Redstone Repeater","1489":"Redstone Repeater","1490":"Redstone Repeater","1491":"Redstone Repeater","1492":"Redstone Repeater","1493":"Redstone Repeater","1494":"Redstone Repeater","1495":"Redstone Repeater","1496":"Redstone Repeater","1497":"Redstone Repeater","1498":"Redstone Repeater","1499":"Redstone Repeater","1500":"Redstone Repeater","1501":"Redstone Repeater","1502":"Redstone Repeater","1503":"Redstone Repeater","1504":"Redstone Repeater","1505":"Redstone Repeater","1506":"Redstone Repeater","1507":"Redstone Repeater","1508":"Redstone Repeater","1509":"Redstone Repeater","1510":"Redstone Repeater","1511":"Redstone Repeater","1512":"Redstone Repeater","1513":"Redstone Repeater","1514":"Redstone Repeater","1515":"Redstone Repeater","1516":"Redstone Repeater","1517":"Redstone Repeater","1518":"Redstone Repeater","1519":"Redstone Repeater","1520":"Invisible Bedrock","1536":"Oak Trapdoor","1537":"Oak Trapdoor","1538":"Oak Trapdoor","1539":"Oak Trapdoor","1540":"Oak Trapdoor","1541":"Oak Trapdoor","1542":"Oak Trapdoor","1543":"Oak Trapdoor","1544":"Oak Trapdoor","1545":"Oak Trapdoor","1546":"Oak Trapdoor","1547":"Oak Trapdoor","1548":"Oak Trapdoor","1549":"Oak Trapdoor","1550":"Oak Trapdoor","1551":"Oak Trapdoor","1552":"Infested Stone","1553":"Infested Cobblestone","1554":"Infested Stone Brick","1555":"Infested Mossy Stone Brick","1556":"Infested Cracked Stone Brick","1557":"Infested Chiseled Stone Brick","1568":"Stone Bricks","1569":"Mossy Stone Bricks","1570":"Cracked Stone Bricks","1571":"Chiseled Stone Bricks","1584":"Brown Mushroom Block","1585":"Brown Mushroom Block","1586":"Brown Mushroom Block","1587":"Brown Mushroom Block","1588":"Brown Mushroom Block","1589":"Brown Mushroom Block","1590":"Brown Mushroom Block","1591":"Brown Mushroom Block","1592":"Brown Mushroom Block","1593":"Brown Mushroom Block","1594":"Mushroom Stem","1598":"Brown Mushroom Block","1599":"All Sided Mushroom Stem","1600":"Red Mushroom Block","1601":"Red Mushroom Block","1602":"Red Mushroom Block","1603":"Red Mushroom Block","1604":"Red Mushroom Block","1605":"Red Mushroom Block","1606":"Red Mushroom Block","1607":"Red Mushroom Block","1608":"Red Mushroom Block","1609":"Red Mushroom Block","1614":"Red Mushroom Block","1616":"Iron Bars","1632":"Glass Pane","1648":"Melon Block","1664":"Pumpkin Stem","1665":"Pumpkin Stem","1666":"Pumpkin Stem","1667":"Pumpkin Stem","1668":"Pumpkin Stem","1669":"Pumpkin Stem","1670":"Pumpkin Stem","1671":"Pumpkin Stem","1680":"Melon Stem","1681":"Melon Stem","1682":"Melon Stem","1683":"Melon Stem","1684":"Melon Stem","1685":"Melon Stem","1686":"Melon Stem","1687":"Melon Stem","1696":"Vines","1697":"Vines","1698":"Vines","1699":"Vines","1700":"Vines","1701":"Vines","1702":"Vines","1703":"Vines","1704":"Vines","1705":"Vines","1706":"Vines","1707":"Vines","1708":"Vines","1709":"Vines","1710":"Vines","1711":"Vines","1712":"Oak Fence Gate","1713":"Oak Fence Gate","1714":"Oak Fence Gate","1715":"Oak Fence Gate","1716":"Oak Fence Gate","1717":"Oak Fence Gate","1718":"Oak Fence Gate","1719":"Oak Fence Gate","1720":"Oak Fence Gate","1721":"Oak Fence Gate","1722":"Oak Fence Gate","1723":"Oak Fence Gate","1724":"Oak Fence Gate","1725":"Oak Fence Gate","1726":"Oak Fence Gate","1727":"Oak Fence Gate","1728":"Brick Stairs","1729":"Brick Stairs","1730":"Brick Stairs","1731":"Brick Stairs","1732":"Brick Stairs","1733":"Brick Stairs","1734":"Brick Stairs","1735":"Brick Stairs","1744":"Stone Brick Stairs","1745":"Stone Brick Stairs","1746":"Stone Brick Stairs","1747":"Stone Brick Stairs","1748":"Stone Brick Stairs","1749":"Stone Brick Stairs","1750":"Stone Brick Stairs","1751":"Stone Brick Stairs","1760":"Mycelium","1776":"Lily Pad","1792":"Nether Bricks","1808":"Nether Brick Fence","1824":"Nether Brick Stairs","1825":"Nether Brick Stairs","1826":"Nether Brick Stairs","1827":"Nether Brick Stairs","1828":"Nether Brick Stairs","1829":"Nether Brick Stairs","1830":"Nether Brick Stairs","1831":"Nether Brick Stairs","1840":"Nether Wart","1841":"Nether Wart","1842":"Nether Wart","1843":"Nether Wart","1856":"Enchanting Table","1872":"Brewing Stand","1873":"Brewing Stand","1874":"Brewing Stand","1875":"Brewing Stand","1876":"Brewing Stand","1877":"Brewing Stand","1878":"Brewing Stand","1879":"Brewing Stand","1920":"End Portal Frame","1921":"End Portal Frame","1922":"End Portal Frame","1923":"End Portal Frame","1924":"End Portal Frame","1925":"End Portal Frame","1926":"End Portal Frame","1927":"End Portal Frame","1936":"End Stone","1952":"Dragon Egg","1968":"Redstone Lamp","1984":"Redstone Lamp","2016":"Activator Rail","2017":"Activator Rail","2018":"Activator Rail","2019":"Activator Rail","2020":"Activator Rail","2021":"Activator Rail","2024":"Activator Rail","2025":"Activator Rail","2026":"Activator Rail","2027":"Activator Rail","2028":"Activator Rail","2029":"Activator Rail","2032":"Cocoa Block","2033":"Cocoa Block","2034":"Cocoa Block","2035":"Cocoa Block","2036":"Cocoa Block","2037":"Cocoa Block","2038":"Cocoa Block","2039":"Cocoa Block","2040":"Cocoa Block","2041":"Cocoa Block","2042":"Cocoa Block","2043":"Cocoa Block","2048":"Sandstone Stairs","2049":"Sandstone Stairs","2050":"Sandstone Stairs","2051":"Sandstone Stairs","2052":"Sandstone Stairs","2053":"Sandstone Stairs","2054":"Sandstone Stairs","2055":"Sandstone Stairs","2064":"Emerald Ore","2082":"Ender Chest","2083":"Ender Chest","2084":"Ender Chest","2085":"Ender Chest","2096":"Tripwire Hook","2097":"Tripwire Hook","2098":"Tripwire Hook","2099":"Tripwire Hook","2100":"Tripwire Hook","2101":"Tripwire Hook","2102":"Tripwire Hook","2103":"Tripwire Hook","2104":"Tripwire Hook","2105":"Tripwire Hook","2106":"Tripwire Hook","2107":"Tripwire Hook","2108":"Tripwire Hook","2109":"Tripwire Hook","2110":"Tripwire Hook","2111":"Tripwire Hook","2112":"Tripwire","2113":"Tripwire","2114":"Tripwire","2115":"Tripwire","2116":"Tripwire","2117":"Tripwire","2118":"Tripwire","2119":"Tripwire","2120":"Tripwire","2121":"Tripwire","2122":"Tripwire","2123":"Tripwire","2124":"Tripwire","2125":"Tripwire","2126":"Tripwire","2127":"Tripwire","2128":"Emerald Block","2144":"Spruce Stairs","2145":"Spruce Stairs","2146":"Spruce Stairs","2147":"Spruce Stairs","2148":"Spruce Stairs","2149":"Spruce Stairs","2150":"Spruce Stairs","2151":"Spruce Stairs","2160":"Birch Stairs","2161":"Birch Stairs","2162":"Birch Stairs","2163":"Birch Stairs","2164":"Birch Stairs","2165":"Birch Stairs","2166":"Birch Stairs","2167":"Birch Stairs","2176":"Jungle Stairs","2177":"Jungle Stairs","2178":"Jungle Stairs","2179":"Jungle Stairs","2180":"Jungle Stairs","2181":"Jungle Stairs","2182":"Jungle Stairs","2183":"Jungle Stairs","2208":"Beacon","2224":"Cobblestone Wall","2225":"Mossy Cobblestone Wall","2226":"Granite Wall","2227":"Diorite Wall","2228":"Andesite Wall","2229":"Sandstone Wall","2230":"Brick Wall","2231":"Stone Brick Wall","2232":"Mossy Stone Brick Wall","2233":"Nether Brick Wall","2234":"End Stone Brick Wall","2235":"Prismarine Wall","2236":"Red Sandstone Wall","2237":"Red Nether Brick Wall","2240":"Flower Pot","2256":"Carrot Block","2257":"Carrot Block","2258":"Carrot Block","2259":"Carrot Block","2260":"Carrot Block","2261":"Carrot Block","2262":"Carrot Block","2263":"Carrot Block","2272":"Potato Block","2273":"Potato Block","2274":"Potato Block","2275":"Potato Block","2276":"Potato Block","2277":"Potato Block","2278":"Potato Block","2279":"Potato Block","2288":"Oak Button","2289":"Oak Button","2290":"Oak Button","2291":"Oak Button","2292":"Oak Button","2293":"Oak Button","2296":"Oak Button","2297":"Oak Button","2298":"Oak Button","2299":"Oak Button","2300":"Oak Button","2301":"Oak Button","2305":"Mob Head","2306":"Mob Head","2307":"Mob Head","2308":"Mob Head","2309":"Mob Head","2320":"Anvil","2321":"Anvil","2322":"Anvil","2323":"Anvil","2324":"Anvil","2325":"Anvil","2326":"Anvil","2327":"Anvil","2328":"Anvil","2329":"Anvil","2330":"Anvil","2331":"Anvil","2338":"Trapped Chest","2339":"Trapped Chest","2340":"Trapped Chest","2341":"Trapped Chest","2352":"Weighted Pressure Plate Light","2353":"Weighted Pressure Plate Light","2354":"Weighted Pressure Plate Light","2355":"Weighted Pressure Plate Light","2356":"Weighted Pressure Plate Light","2357":"Weighted Pressure Plate Light","2358":"Weighted Pressure Plate Light","2359":"Weighted Pressure Plate Light","2360":"Weighted Pressure Plate Light","2361":"Weighted Pressure Plate Light","2362":"Weighted Pressure Plate Light","2363":"Weighted Pressure Plate Light","2364":"Weighted Pressure Plate Light","2365":"Weighted Pressure Plate Light","2366":"Weighted Pressure Plate Light","2367":"Weighted Pressure Plate Light","2368":"Weighted Pressure Plate Heavy","2369":"Weighted Pressure Plate Heavy","2370":"Weighted Pressure Plate Heavy","2371":"Weighted Pressure Plate Heavy","2372":"Weighted Pressure Plate Heavy","2373":"Weighted Pressure Plate Heavy","2374":"Weighted Pressure Plate Heavy","2375":"Weighted Pressure Plate Heavy","2376":"Weighted Pressure Plate Heavy","2377":"Weighted Pressure Plate Heavy","2378":"Weighted Pressure Plate Heavy","2379":"Weighted Pressure Plate Heavy","2380":"Weighted Pressure Plate Heavy","2381":"Weighted Pressure Plate Heavy","2382":"Weighted Pressure Plate Heavy","2383":"Weighted Pressure Plate Heavy","2384":"Redstone Comparator","2385":"Redstone Comparator","2386":"Redstone Comparator","2387":"Redstone Comparator","2388":"Redstone Comparator","2389":"Redstone Comparator","2390":"Redstone Comparator","2391":"Redstone Comparator","2408":"Redstone Comparator","2409":"Redstone Comparator","2410":"Redstone Comparator","2411":"Redstone Comparator","2412":"Redstone Comparator","2413":"Redstone Comparator","2414":"Redstone Comparator","2415":"Redstone Comparator","2416":"Daylight Sensor","2417":"Daylight Sensor","2418":"Daylight Sensor","2419":"Daylight Sensor","2420":"Daylight Sensor","2421":"Daylight Sensor","2422":"Daylight Sensor","2423":"Daylight Sensor","2424":"Daylight Sensor","2425":"Daylight Sensor","2426":"Daylight Sensor","2427":"Daylight Sensor","2428":"Daylight Sensor","2429":"Daylight Sensor","2430":"Daylight Sensor","2431":"Daylight Sensor","2432":"Redstone Block","2448":"Nether Quartz Ore","2464":"Hopper","2466":"Hopper","2467":"Hopper","2468":"Hopper","2469":"Hopper","2472":"Hopper","2474":"Hopper","2475":"Hopper","2476":"Hopper","2477":"Hopper","2480":"Quartz Block","2481":"Chiseled Quartz Block","2482":"Quartz Pillar","2483":"Smooth Quartz Block","2485":"Chiseled Quartz Block","2486":"Quartz Pillar","2489":"Chiseled Quartz Block","2490":"Quartz Pillar","2496":"Quartz Stairs","2497":"Quartz Stairs","2498":"Quartz Stairs","2499":"Quartz Stairs","2500":"Quartz Stairs","2501":"Quartz Stairs","2502":"Quartz Stairs","2503":"Quartz Stairs","2512":"Oak Slab","2513":"Spruce Slab","2514":"Birch Slab","2515":"Jungle Slab","2516":"Acacia Slab","2517":"Dark Oak Slab","2528":"Oak Slab","2529":"Spruce Slab","2530":"Birch Slab","2531":"Jungle Slab","2532":"Acacia Slab","2533":"Dark Oak Slab","2536":"Oak Slab","2537":"Spruce Slab","2538":"Birch Slab","2539":"Jungle Slab","2540":"Acacia Slab","2541":"Dark Oak Slab","2544":"Stained Clay","2545":"Stained Clay","2546":"Stained Clay","2547":"Stained Clay","2548":"Stained Clay","2549":"Stained Clay","2550":"Stained Clay","2551":"Stained Clay","2552":"Stained Clay","2553":"Stained Clay","2554":"Stained Clay","2555":"Stained Clay","2556":"Stained Clay","2557":"Stained Clay","2558":"Stained Clay","2559":"Stained Clay","2560":"Stained Glass Pane","2561":"Stained Glass Pane","2562":"Stained Glass Pane","2563":"Stained Glass Pane","2564":"Stained Glass Pane","2565":"Stained Glass Pane","2566":"Stained Glass Pane","2567":"Stained Glass Pane","2568":"Stained Glass Pane","2569":"Stained Glass Pane","2570":"Stained Glass Pane","2571":"Stained Glass Pane","2572":"Stained Glass Pane","2573":"Stained Glass Pane","2574":"Stained Glass Pane","2575":"Stained Glass Pane","2576":"Acacia Leaves","2577":"Dark Oak Leaves","2580":"Acacia Leaves","2581":"Dark Oak Leaves","2584":"Acacia Leaves","2585":"Dark Oak Leaves","2588":"Acacia Leaves","2589":"Dark Oak Leaves","2592":"Acacia Log","2593":"Dark Oak Log","2596":"Acacia Log","2597":"Dark Oak Log","2600":"Acacia Log","2601":"Dark Oak Log","2608":"Acacia Stairs","2609":"Acacia Stairs","2610":"Acacia Stairs","2611":"Acacia Stairs","2612":"Acacia Stairs","2613":"Acacia Stairs","2614":"Acacia Stairs","2615":"Acacia Stairs","2624":"Dark Oak Stairs","2625":"Dark Oak Stairs","2626":"Dark Oak Stairs","2627":"Dark Oak Stairs","2628":"Dark Oak Stairs","2629":"Dark Oak Stairs","2630":"Dark Oak Stairs","2631":"Dark Oak Stairs","2640":"Slime Block","2672":"Iron Trapdoor","2673":"Iron Trapdoor","2674":"Iron Trapdoor","2675":"Iron Trapdoor","2676":"Iron Trapdoor","2677":"Iron Trapdoor","2678":"Iron Trapdoor","2679":"Iron Trapdoor","2680":"Iron Trapdoor","2681":"Iron Trapdoor","2682":"Iron Trapdoor","2683":"Iron Trapdoor","2684":"Iron Trapdoor","2685":"Iron Trapdoor","2686":"Iron Trapdoor","2687":"Iron Trapdoor","2688":"Prismarine","2689":"Dark Prismarine","2690":"Prismarine Bricks","2704":"Sea Lantern","2720":"Hay Bale","2724":"Hay Bale","2728":"Hay Bale","2736":"Carpet","2737":"Carpet","2738":"Carpet","2739":"Carpet","2740":"Carpet","2741":"Carpet","2742":"Carpet","2743":"Carpet","2744":"Carpet","2745":"Carpet","2746":"Carpet","2747":"Carpet","2748":"Carpet","2749":"Carpet","2750":"Carpet","2751":"Carpet","2752":"Hardened Clay","2768":"Coal Block","2784":"Packed Ice","2800":"Sunflower","2801":"Lilac","2802":"Double Tallgrass","2803":"Large Fern","2804":"Rose Bush","2805":"Peony","2808":"Sunflower","2809":"Lilac","2810":"Double Tallgrass","2811":"Large Fern","2812":"Rose Bush","2813":"Peony","2816":"Banner","2817":"Banner","2818":"Banner","2819":"Banner","2820":"Banner","2821":"Banner","2822":"Banner","2823":"Banner","2824":"Banner","2825":"Banner","2826":"Banner","2827":"Banner","2828":"Banner","2829":"Banner","2830":"Banner","2831":"Banner","2834":"Wall Banner","2835":"Wall Banner","2836":"Wall Banner","2837":"Wall Banner","2848":"Daylight Sensor","2849":"Daylight Sensor","2850":"Daylight Sensor","2851":"Daylight Sensor","2852":"Daylight Sensor","2853":"Daylight Sensor","2854":"Daylight Sensor","2855":"Daylight Sensor","2856":"Daylight Sensor","2857":"Daylight Sensor","2858":"Daylight Sensor","2859":"Daylight Sensor","2860":"Daylight Sensor","2861":"Daylight Sensor","2862":"Daylight Sensor","2863":"Daylight Sensor","2864":"Red Sandstone","2865":"Chiseled Red Sandstone","2866":"Cut Red Sandstone","2867":"Smooth Red Sandstone","2880":"Red Sandstone Stairs","2881":"Red Sandstone Stairs","2882":"Red Sandstone Stairs","2883":"Red Sandstone Stairs","2884":"Red Sandstone Stairs","2885":"Red Sandstone Stairs","2886":"Red Sandstone Stairs","2887":"Red Sandstone Stairs","2896":"Red Sandstone Slab","2897":"Purpur Slab","2898":"Prismarine Slab","2899":"Dark Prismarine Slab","2900":"Prismarine Bricks Slab","2901":"Mossy Cobblestone Slab","2902":"Smooth Sandstone Slab","2903":"Red Nether Brick Slab","2912":"Red Sandstone Slab","2913":"Purpur Slab","2914":"Prismarine Slab","2915":"Dark Prismarine Slab","2916":"Prismarine Bricks Slab","2917":"Mossy Cobblestone Slab","2918":"Smooth Sandstone Slab","2919":"Red Nether Brick Slab","2920":"Red Sandstone Slab","2921":"Purpur Slab","2922":"Prismarine Slab","2923":"Dark Prismarine Slab","2924":"Prismarine Bricks Slab","2925":"Mossy Cobblestone Slab","2926":"Smooth Sandstone Slab","2927":"Red Nether Brick Slab","2928":"Spruce Fence Gate","2929":"Spruce Fence Gate","2930":"Spruce Fence Gate","2931":"Spruce Fence Gate","2932":"Spruce Fence Gate","2933":"Spruce Fence Gate","2934":"Spruce Fence Gate","2935":"Spruce Fence Gate","2936":"Spruce Fence Gate","2937":"Spruce Fence Gate","2938":"Spruce Fence Gate","2939":"Spruce Fence Gate","2940":"Spruce Fence Gate","2941":"Spruce Fence Gate","2942":"Spruce Fence Gate","2943":"Spruce Fence Gate","2944":"Birch Fence Gate","2945":"Birch Fence Gate","2946":"Birch Fence Gate","2947":"Birch Fence Gate","2948":"Birch Fence Gate","2949":"Birch Fence Gate","2950":"Birch Fence Gate","2951":"Birch Fence Gate","2952":"Birch Fence Gate","2953":"Birch Fence Gate","2954":"Birch Fence Gate","2955":"Birch Fence Gate","2956":"Birch Fence Gate","2957":"Birch Fence Gate","2958":"Birch Fence Gate","2959":"Birch Fence Gate","2960":"Jungle Fence Gate","2961":"Jungle Fence Gate","2962":"Jungle Fence Gate","2963":"Jungle Fence Gate","2964":"Jungle Fence Gate","2965":"Jungle Fence Gate","2966":"Jungle Fence Gate","2967":"Jungle Fence Gate","2968":"Jungle Fence Gate","2969":"Jungle Fence Gate","2970":"Jungle Fence Gate","2971":"Jungle Fence Gate","2972":"Jungle Fence Gate","2973":"Jungle Fence Gate","2974":"Jungle Fence Gate","2975":"Jungle Fence Gate","2976":"Dark Oak Fence Gate","2977":"Dark Oak Fence Gate","2978":"Dark Oak Fence Gate","2979":"Dark Oak Fence Gate","2980":"Dark Oak Fence Gate","2981":"Dark Oak Fence Gate","2982":"Dark Oak Fence Gate","2983":"Dark Oak Fence Gate","2984":"Dark Oak Fence Gate","2985":"Dark Oak Fence Gate","2986":"Dark Oak Fence Gate","2987":"Dark Oak Fence Gate","2988":"Dark Oak Fence Gate","2989":"Dark Oak Fence Gate","2990":"Dark Oak Fence Gate","2991":"Dark Oak Fence Gate","2992":"Acacia Fence Gate","2993":"Acacia Fence Gate","2994":"Acacia Fence Gate","2995":"Acacia Fence Gate","2996":"Acacia Fence Gate","2997":"Acacia Fence Gate","2998":"Acacia Fence Gate","2999":"Acacia Fence Gate","3000":"Acacia Fence Gate","3001":"Acacia Fence Gate","3002":"Acacia Fence Gate","3003":"Acacia Fence Gate","3004":"Acacia Fence Gate","3005":"Acacia Fence Gate","3006":"Acacia Fence Gate","3007":"Acacia Fence Gate","3040":"Hardened Glass Pane","3056":"Stained Hardened Glass Pane","3057":"Stained Hardened Glass Pane","3058":"Stained Hardened Glass Pane","3059":"Stained Hardened Glass Pane","3060":"Stained Hardened Glass Pane","3061":"Stained Hardened Glass Pane","3062":"Stained Hardened Glass Pane","3063":"Stained Hardened Glass Pane","3064":"Stained Hardened Glass Pane","3065":"Stained Hardened Glass Pane","3066":"Stained Hardened Glass Pane","3067":"Stained Hardened Glass Pane","3068":"Stained Hardened Glass Pane","3069":"Stained Hardened Glass Pane","3070":"Stained Hardened Glass Pane","3071":"Stained Hardened Glass Pane","3072":"Heat Block","3088":"Spruce Door","3089":"Spruce Door","3090":"Spruce Door","3091":"Spruce Door","3092":"Spruce Door","3093":"Spruce Door","3094":"Spruce Door","3095":"Spruce Door","3096":"Spruce Door","3097":"Spruce Door","3098":"Spruce Door","3099":"Spruce Door","3104":"Birch Door","3105":"Birch Door","3106":"Birch Door","3107":"Birch Door","3108":"Birch Door","3109":"Birch Door","3110":"Birch Door","3111":"Birch Door","3112":"Birch Door","3113":"Birch Door","3114":"Birch Door","3115":"Birch Door","3120":"Jungle Door","3121":"Jungle Door","3122":"Jungle Door","3123":"Jungle Door","3124":"Jungle Door","3125":"Jungle Door","3126":"Jungle Door","3127":"Jungle Door","3128":"Jungle Door","3129":"Jungle Door","3130":"Jungle Door","3131":"Jungle Door","3136":"Acacia Door","3137":"Acacia Door","3138":"Acacia Door","3139":"Acacia Door","3140":"Acacia Door","3141":"Acacia Door","3142":"Acacia Door","3143":"Acacia Door","3144":"Acacia Door","3145":"Acacia Door","3146":"Acacia Door","3147":"Acacia Door","3152":"Dark Oak Door","3153":"Dark Oak Door","3154":"Dark Oak Door","3155":"Dark Oak Door","3156":"Dark Oak Door","3157":"Dark Oak Door","3158":"Dark Oak Door","3159":"Dark Oak Door","3160":"Dark Oak Door","3161":"Dark Oak Door","3162":"Dark Oak Door","3163":"Dark Oak Door","3168":"Grass Path","3184":"Item Frame","3185":"Item Frame","3186":"Item Frame","3187":"Item Frame","3188":"Item Frame","3189":"Item Frame","3190":"Item Frame","3191":"Item Frame","3216":"Purpur Block","3218":"Purpur Pillar","3222":"Purpur Pillar","3226":"Purpur Pillar","3233":"Red Torch","3234":"Red Torch","3235":"Red Torch","3236":"Red Torch","3237":"Red Torch","3241":"Green Torch","3242":"Green Torch","3243":"Green Torch","3244":"Green Torch","3245":"Green Torch","3248":"Purpur Stairs","3249":"Purpur Stairs","3250":"Purpur Stairs","3251":"Purpur Stairs","3252":"Purpur Stairs","3253":"Purpur Stairs","3254":"Purpur Stairs","3255":"Purpur Stairs","3265":"Blue Torch","3266":"Blue Torch","3267":"Blue Torch","3268":"Blue Torch","3269":"Blue Torch","3273":"Purple Torch","3274":"Purple Torch","3275":"Purple Torch","3276":"Purple Torch","3277":"Purple Torch","3280":"Shulker Box","3296":"End Stone Bricks","3312":"Frosted Ice","3313":"Frosted Ice","3314":"Frosted Ice","3315":"Frosted Ice","3328":"End Rod","3329":"End Rod","3330":"End Rod","3331":"End Rod","3332":"End Rod","3333":"End Rod","3408":"Magma Block","3424":"Nether Wart Block","3440":"Red Nether Bricks","3456":"Bone Block","3460":"Bone Block","3464":"Bone Block","3488":"Dyed Shulker Box","3489":"Dyed Shulker Box","3490":"Dyed Shulker Box","3491":"Dyed Shulker Box","3492":"Dyed Shulker Box","3493":"Dyed Shulker Box","3494":"Dyed Shulker Box","3495":"Dyed Shulker Box","3496":"Dyed Shulker Box","3497":"Dyed Shulker Box","3498":"Dyed Shulker Box","3499":"Dyed Shulker Box","3500":"Dyed Shulker Box","3501":"Dyed Shulker Box","3502":"Dyed Shulker Box","3503":"Dyed Shulker Box","3506":"Purple Glazed Terracotta","3507":"Purple Glazed Terracotta","3508":"Purple Glazed Terracotta","3509":"Purple Glazed Terracotta","3522":"White Glazed Terracotta","3523":"White Glazed Terracotta","3524":"White Glazed Terracotta","3525":"White Glazed Terracotta","3538":"Orange Glazed Terracotta","3539":"Orange Glazed Terracotta","3540":"Orange Glazed Terracotta","3541":"Orange Glazed Terracotta","3554":"Magenta Glazed Terracotta","3555":"Magenta Glazed Terracotta","3556":"Magenta Glazed Terracotta","3557":"Magenta Glazed Terracotta","3570":"Light Blue Glazed Terracotta","3571":"Light Blue Glazed Terracotta","3572":"Light Blue Glazed Terracotta","3573":"Light Blue Glazed Terracotta","3586":"Yellow Glazed Terracotta","3587":"Yellow Glazed Terracotta","3588":"Yellow Glazed Terracotta","3589":"Yellow Glazed Terracotta","3602":"Lime Glazed Terracotta","3603":"Lime Glazed Terracotta","3604":"Lime Glazed Terracotta","3605":"Lime Glazed Terracotta","3618":"Pink Glazed Terracotta","3619":"Pink Glazed Terracotta","3620":"Pink Glazed Terracotta","3621":"Pink Glazed Terracotta","3634":"Gray Glazed Terracotta","3635":"Gray Glazed Terracotta","3636":"Gray Glazed Terracotta","3637":"Gray Glazed Terracotta","3650":"Light Gray Glazed Terracotta","3651":"Light Gray Glazed Terracotta","3652":"Light Gray Glazed Terracotta","3653":"Light Gray Glazed Terracotta","3666":"Cyan Glazed Terracotta","3667":"Cyan Glazed Terracotta","3668":"Cyan Glazed Terracotta","3669":"Cyan Glazed Terracotta","3698":"Blue Glazed Terracotta","3699":"Blue Glazed Terracotta","3700":"Blue Glazed Terracotta","3701":"Blue Glazed Terracotta","3714":"Brown Glazed Terracotta","3715":"Brown Glazed Terracotta","3716":"Brown Glazed Terracotta","3717":"Brown Glazed Terracotta","3730":"Green Glazed Terracotta","3731":"Green Glazed Terracotta","3732":"Green Glazed Terracotta","3733":"Green Glazed Terracotta","3746":"Red Glazed Terracotta","3747":"Red Glazed Terracotta","3748":"Red Glazed Terracotta","3749":"Red Glazed Terracotta","3762":"Black Glazed Terracotta","3763":"Black Glazed Terracotta","3764":"Black Glazed Terracotta","3765":"Black Glazed Terracotta","3776":"Concrete","3777":"Concrete","3778":"Concrete","3779":"Concrete","3780":"Concrete","3781":"Concrete","3782":"Concrete","3783":"Concrete","3784":"Concrete","3785":"Concrete","3786":"Concrete","3787":"Concrete","3788":"Concrete","3789":"Concrete","3790":"Concrete","3791":"Concrete","3792":"Concrete Powder","3793":"Concrete Powder","3794":"Concrete Powder","3795":"Concrete Powder","3796":"Concrete Powder","3797":"Concrete Powder","3798":"Concrete Powder","3799":"Concrete Powder","3800":"Concrete Powder","3801":"Concrete Powder","3802":"Concrete Powder","3803":"Concrete Powder","3804":"Concrete Powder","3805":"Concrete Powder","3806":"Concrete Powder","3807":"Concrete Powder","3808":"Compound Creator","3809":"Compound Creator","3810":"Compound Creator","3811":"Compound Creator","3812":"Material Reducer","3813":"Material Reducer","3814":"Material Reducer","3815":"Material Reducer","3816":"Element Constructor","3817":"Element Constructor","3818":"Element Constructor","3819":"Element Constructor","3820":"Lab Table","3821":"Lab Table","3822":"Lab Table","3823":"Lab Table","3825":"Underwater Torch","3826":"Underwater Torch","3827":"Underwater Torch","3828":"Underwater Torch","3829":"Underwater Torch","3856":"Stained Glass","3857":"Stained Glass","3858":"Stained Glass","3859":"Stained Glass","3860":"Stained Glass","3861":"Stained Glass","3862":"Stained Glass","3863":"Stained Glass","3864":"Stained Glass","3865":"Stained Glass","3866":"Stained Glass","3867":"Stained Glass","3868":"Stained Glass","3869":"Stained Glass","3870":"Stained Glass","3871":"Stained Glass","3888":"Podzol","3904":"Beetroot Block","3905":"Beetroot Block","3906":"Beetroot Block","3907":"Beetroot Block","3908":"Beetroot Block","3909":"Beetroot Block","3910":"Beetroot Block","3911":"Beetroot Block","3920":"Stonecutter","3936":"Glowing Obsidian","3952":"Nether Reactor Core","3968":"update!","3984":"ate!upd","4048":"Hardened Glass","4064":"Stained Hardened Glass","4065":"Stained Hardened Glass","4066":"Stained Hardened Glass","4067":"Stained Hardened Glass","4068":"Stained Hardened Glass","4069":"Stained Hardened Glass","4070":"Stained Hardened Glass","4071":"Stained Hardened Glass","4072":"Stained Hardened Glass","4073":"Stained Hardened Glass","4074":"Stained Hardened Glass","4075":"Stained Hardened Glass","4076":"Stained Hardened Glass","4077":"Stained Hardened Glass","4078":"Stained Hardened Glass","4079":"Stained Hardened Glass","4080":"reserved6","4112":"Prismarine Stairs","4113":"Prismarine Stairs","4114":"Prismarine Stairs","4115":"Prismarine Stairs","4116":"Prismarine Stairs","4117":"Prismarine Stairs","4118":"Prismarine Stairs","4119":"Prismarine Stairs","4128":"Dark Prismarine Stairs","4129":"Dark Prismarine Stairs","4130":"Dark Prismarine Stairs","4131":"Dark Prismarine Stairs","4132":"Dark Prismarine Stairs","4133":"Dark Prismarine Stairs","4134":"Dark Prismarine Stairs","4135":"Dark Prismarine Stairs","4144":"Prismarine Bricks Stairs","4145":"Prismarine Bricks Stairs","4146":"Prismarine Bricks Stairs","4147":"Prismarine Bricks Stairs","4148":"Prismarine Bricks Stairs","4149":"Prismarine Bricks Stairs","4150":"Prismarine Bricks Stairs","4151":"Prismarine Bricks Stairs","4160":"Stripped Spruce Log","4161":"Stripped Spruce Log","4162":"Stripped Spruce Log","4176":"Stripped Birch Log","4177":"Stripped Birch Log","4178":"Stripped Birch Log","4192":"Stripped Jungle Log","4193":"Stripped Jungle Log","4194":"Stripped Jungle Log","4208":"Stripped Acacia Log","4209":"Stripped Acacia Log","4210":"Stripped Acacia Log","4224":"Stripped Dark Oak Log","4225":"Stripped Dark Oak Log","4226":"Stripped Dark Oak Log","4240":"Stripped Oak Log","4241":"Stripped Oak Log","4242":"Stripped Oak Log","4256":"Blue Ice","4272":"Hydrogen","4288":"Helium","4304":"Lithium","4320":"Beryllium","4336":"Boron","4352":"Carbon","4368":"Nitrogen","4384":"Oxygen","4400":"Fluorine","4416":"Neon","4432":"Sodium","4448":"Magnesium","4464":"Aluminum","4480":"Silicon","4496":"Phosphorus","4512":"Sulfur","4528":"Chlorine","4544":"Argon","4560":"Potassium","4576":"Calcium","4592":"Scandium","4608":"Titanium","4624":"Vanadium","4640":"Chromium","4656":"Manganese","4672":"Iron","4688":"Cobalt","4704":"Nickel","4720":"Copper","4736":"Zinc","4752":"Gallium","4768":"Germanium","4784":"Arsenic","4800":"Selenium","4816":"Bromine","4832":"Krypton","4848":"Rubidium","4864":"Strontium","4880":"Yttrium","4896":"Zirconium","4912":"Niobium","4928":"Molybdenum","4944":"Technetium","4960":"Ruthenium","4976":"Rhodium","4992":"Palladium","5008":"Silver","5024":"Cadmium","5040":"Indium","5056":"Tin","5072":"Antimony","5088":"Tellurium","5104":"Iodine","5120":"Xenon","5136":"Cesium","5152":"Barium","5168":"Lanthanum","5184":"Cerium","5200":"Praseodymium","5216":"Neodymium","5232":"Promethium","5248":"Samarium","5264":"Europium","5280":"Gadolinium","5296":"Terbium","5312":"Dysprosium","5328":"Holmium","5344":"Erbium","5360":"Thulium","5376":"Ytterbium","5392":"Lutetium","5408":"Hafnium","5424":"Tantalum","5440":"Tungsten","5456":"Rhenium","5472":"Osmium","5488":"Iridium","5504":"Platinum","5520":"Gold","5536":"Mercury","5552":"Thallium","5568":"Lead","5584":"Bismuth","5600":"Polonium","5616":"Astatine","5632":"Radon","5648":"Francium","5664":"Radium","5680":"Actinium","5696":"Thorium","5712":"Protactinium","5728":"Uranium","5744":"Neptunium","5760":"Plutonium","5776":"Americium","5792":"Curium","5808":"Berkelium","5824":"Californium","5840":"Einsteinium","5856":"Fermium","5872":"Mendelevium","5888":"Nobelium","5904":"Lawrencium","5920":"Rutherfordium","5936":"Dubnium","5952":"Seaborgium","5968":"Bohrium","5984":"Hassium","6000":"Meitnerium","6016":"Darmstadtium","6032":"Roentgenium","6048":"Copernicium","6064":"Nihonium","6080":"Flerovium","6096":"Moscovium","6112":"Livermorium","6128":"Tennessine","6144":"Oganesson","6176":"Coral","6177":"Coral","6178":"Coral","6179":"Coral","6180":"Coral","6192":"Coral Block","6193":"Coral Block","6194":"Coral Block","6195":"Coral Block","6196":"Coral Block","6200":"Coral Block","6201":"Coral Block","6202":"Coral Block","6203":"Coral Block","6204":"Coral Block","6208":"Coral Fan","6209":"Coral Fan","6210":"Coral Fan","6211":"Coral Fan","6212":"Coral Fan","6216":"Coral Fan","6217":"Coral Fan","6218":"Coral Fan","6219":"Coral Fan","6220":"Coral Fan","6224":"Coral Fan","6225":"Coral Fan","6226":"Coral Fan","6227":"Coral Fan","6228":"Coral Fan","6232":"Coral Fan","6233":"Coral Fan","6234":"Coral Fan","6235":"Coral Fan","6236":"Coral Fan","6240":"Wall Coral Fan","6241":"Wall Coral Fan","6242":"Wall Coral Fan","6243":"Wall Coral Fan","6244":"Wall Coral Fan","6245":"Wall Coral Fan","6246":"Wall Coral Fan","6247":"Wall Coral Fan","6248":"Wall Coral Fan","6249":"Wall Coral Fan","6250":"Wall Coral Fan","6251":"Wall Coral Fan","6252":"Wall Coral Fan","6253":"Wall Coral Fan","6254":"Wall Coral Fan","6255":"Wall Coral Fan","6256":"Wall Coral Fan","6257":"Wall Coral Fan","6258":"Wall Coral Fan","6259":"Wall Coral Fan","6260":"Wall Coral Fan","6261":"Wall Coral Fan","6262":"Wall Coral Fan","6263":"Wall Coral Fan","6264":"Wall Coral Fan","6265":"Wall Coral Fan","6266":"Wall Coral Fan","6267":"Wall Coral Fan","6268":"Wall Coral Fan","6269":"Wall Coral Fan","6270":"Wall Coral Fan","6271":"Wall Coral Fan","6272":"Wall Coral Fan","6274":"Wall Coral Fan","6276":"Wall Coral Fan","6278":"Wall Coral Fan","6280":"Wall Coral Fan","6282":"Wall Coral Fan","6284":"Wall Coral Fan","6286":"Wall Coral Fan","6304":"Dried Kelp Block","6320":"Acacia Button","6321":"Acacia Button","6322":"Acacia Button","6323":"Acacia Button","6324":"Acacia Button","6325":"Acacia Button","6328":"Acacia Button","6329":"Acacia Button","6330":"Acacia Button","6331":"Acacia Button","6332":"Acacia Button","6333":"Acacia Button","6336":"Birch Button","6337":"Birch Button","6338":"Birch Button","6339":"Birch Button","6340":"Birch Button","6341":"Birch Button","6344":"Birch Button","6345":"Birch Button","6346":"Birch Button","6347":"Birch Button","6348":"Birch Button","6349":"Birch Button","6352":"Dark Oak Button","6353":"Dark Oak Button","6354":"Dark Oak Button","6355":"Dark Oak Button","6356":"Dark Oak Button","6357":"Dark Oak Button","6360":"Dark Oak Button","6361":"Dark Oak Button","6362":"Dark Oak Button","6363":"Dark Oak Button","6364":"Dark Oak Button","6365":"Dark Oak Button","6368":"Jungle Button","6369":"Jungle Button","6370":"Jungle Button","6371":"Jungle Button","6372":"Jungle Button","6373":"Jungle Button","6376":"Jungle Button","6377":"Jungle Button","6378":"Jungle Button","6379":"Jungle Button","6380":"Jungle Button","6381":"Jungle Button","6384":"Spruce Button","6385":"Spruce Button","6386":"Spruce Button","6387":"Spruce Button","6388":"Spruce Button","6389":"Spruce Button","6392":"Spruce Button","6393":"Spruce Button","6394":"Spruce Button","6395":"Spruce Button","6396":"Spruce Button","6397":"Spruce Button","6400":"Acacia Trapdoor","6401":"Acacia Trapdoor","6402":"Acacia Trapdoor","6403":"Acacia Trapdoor","6404":"Acacia Trapdoor","6405":"Acacia Trapdoor","6406":"Acacia Trapdoor","6407":"Acacia Trapdoor","6408":"Acacia Trapdoor","6409":"Acacia Trapdoor","6410":"Acacia Trapdoor","6411":"Acacia Trapdoor","6412":"Acacia Trapdoor","6413":"Acacia Trapdoor","6414":"Acacia Trapdoor","6415":"Acacia Trapdoor","6416":"Birch Trapdoor","6417":"Birch Trapdoor","6418":"Birch Trapdoor","6419":"Birch Trapdoor","6420":"Birch Trapdoor","6421":"Birch Trapdoor","6422":"Birch Trapdoor","6423":"Birch Trapdoor","6424":"Birch Trapdoor","6425":"Birch Trapdoor","6426":"Birch Trapdoor","6427":"Birch Trapdoor","6428":"Birch Trapdoor","6429":"Birch Trapdoor","6430":"Birch Trapdoor","6431":"Birch Trapdoor","6432":"Dark Oak Trapdoor","6433":"Dark Oak Trapdoor","6434":"Dark Oak Trapdoor","6435":"Dark Oak Trapdoor","6436":"Dark Oak Trapdoor","6437":"Dark Oak Trapdoor","6438":"Dark Oak Trapdoor","6439":"Dark Oak Trapdoor","6440":"Dark Oak Trapdoor","6441":"Dark Oak Trapdoor","6442":"Dark Oak Trapdoor","6443":"Dark Oak Trapdoor","6444":"Dark Oak Trapdoor","6445":"Dark Oak Trapdoor","6446":"Dark Oak Trapdoor","6447":"Dark Oak Trapdoor","6448":"Jungle Trapdoor","6449":"Jungle Trapdoor","6450":"Jungle Trapdoor","6451":"Jungle Trapdoor","6452":"Jungle Trapdoor","6453":"Jungle Trapdoor","6454":"Jungle Trapdoor","6455":"Jungle Trapdoor","6456":"Jungle Trapdoor","6457":"Jungle Trapdoor","6458":"Jungle Trapdoor","6459":"Jungle Trapdoor","6460":"Jungle Trapdoor","6461":"Jungle Trapdoor","6462":"Jungle Trapdoor","6463":"Jungle Trapdoor","6464":"Spruce Trapdoor","6465":"Spruce Trapdoor","6466":"Spruce Trapdoor","6467":"Spruce Trapdoor","6468":"Spruce Trapdoor","6469":"Spruce Trapdoor","6470":"Spruce Trapdoor","6471":"Spruce Trapdoor","6472":"Spruce Trapdoor","6473":"Spruce Trapdoor","6474":"Spruce Trapdoor","6475":"Spruce Trapdoor","6476":"Spruce Trapdoor","6477":"Spruce Trapdoor","6478":"Spruce Trapdoor","6479":"Spruce Trapdoor","6480":"Acacia Pressure Plate","6481":"Acacia Pressure Plate","6496":"Birch Pressure Plate","6497":"Birch Pressure Plate","6512":"Dark Oak Pressure Plate","6513":"Dark Oak Pressure Plate","6528":"Jungle Pressure Plate","6529":"Jungle Pressure Plate","6544":"Spruce Pressure Plate","6545":"Spruce Pressure Plate","6560":"Carved Pumpkin","6561":"Carved Pumpkin","6562":"Carved Pumpkin","6563":"Carved Pumpkin","6576":"Sea Pickle","6577":"Sea Pickle","6578":"Sea Pickle","6579":"Sea Pickle","6580":"Sea Pickle","6581":"Sea Pickle","6582":"Sea Pickle","6583":"Sea Pickle","6656":"Barrier","6672":"End Stone Brick Slab","6673":"Smooth Red Sandstone Slab","6674":"Polished Andesite Slab","6675":"Andesite Slab","6676":"Diorite Slab","6677":"Polished Diorite Slab","6678":"Granite Slab","6679":"Polished Granite Slab","6680":"End Stone Brick Slab","6681":"Smooth Red Sandstone Slab","6682":"Polished Andesite Slab","6683":"Andesite Slab","6684":"Diorite Slab","6685":"Polished Diorite Slab","6686":"Granite Slab","6687":"Polished Granite Slab","6688":"Bamboo","6689":"Bamboo","6690":"Bamboo","6691":"Bamboo","6692":"Bamboo","6693":"Bamboo","6696":"Bamboo","6697":"Bamboo","6698":"Bamboo","6699":"Bamboo","6700":"Bamboo","6701":"Bamboo","6704":"Bamboo Sapling","6712":"Bamboo Sapling","6736":"Mossy Stone Brick Slab","6737":"Smooth Quartz Slab","6738":"Stone Slab","6739":"Cut Sandstone Slab","6740":"Cut Red Sandstone Slab","6744":"Mossy Stone Brick Slab","6745":"Smooth Quartz Slab","6746":"Stone Slab","6747":"Cut Sandstone Slab","6748":"Cut Red Sandstone Slab","6752":"End Stone Brick Slab","6753":"Smooth Red Sandstone Slab","6754":"Polished Andesite Slab","6755":"Andesite Slab","6756":"Diorite Slab","6757":"Polished Diorite Slab","6758":"Granite Slab","6759":"Polished Granite Slab","6768":"Mossy Stone Brick Slab","6769":"Smooth Quartz Slab","6770":"Stone Slab","6771":"Cut Sandstone Slab","6772":"Cut Red Sandstone Slab","6784":"Granite Stairs","6785":"Granite Stairs","6786":"Granite Stairs","6787":"Granite Stairs","6788":"Granite Stairs","6789":"Granite Stairs","6790":"Granite Stairs","6791":"Granite Stairs","6800":"Diorite Stairs","6801":"Diorite Stairs","6802":"Diorite Stairs","6803":"Diorite Stairs","6804":"Diorite Stairs","6805":"Diorite Stairs","6806":"Diorite Stairs","6807":"Diorite Stairs","6816":"Andesite Stairs","6817":"Andesite Stairs","6818":"Andesite Stairs","6819":"Andesite Stairs","6820":"Andesite Stairs","6821":"Andesite Stairs","6822":"Andesite Stairs","6823":"Andesite Stairs","6832":"Polished Granite Stairs","6833":"Polished Granite Stairs","6834":"Polished Granite Stairs","6835":"Polished Granite Stairs","6836":"Polished Granite Stairs","6837":"Polished Granite Stairs","6838":"Polished Granite Stairs","6839":"Polished Granite Stairs","6848":"Polished Diorite Stairs","6849":"Polished Diorite Stairs","6850":"Polished Diorite Stairs","6851":"Polished Diorite Stairs","6852":"Polished Diorite Stairs","6853":"Polished Diorite Stairs","6854":"Polished Diorite Stairs","6855":"Polished Diorite Stairs","6864":"Polished Andesite Stairs","6865":"Polished Andesite Stairs","6866":"Polished Andesite Stairs","6867":"Polished Andesite Stairs","6868":"Polished Andesite Stairs","6869":"Polished Andesite Stairs","6870":"Polished Andesite Stairs","6871":"Polished Andesite Stairs","6880":"Mossy Stone Brick Stairs","6881":"Mossy Stone Brick Stairs","6882":"Mossy Stone Brick Stairs","6883":"Mossy Stone Brick Stairs","6884":"Mossy Stone Brick Stairs","6885":"Mossy Stone Brick Stairs","6886":"Mossy Stone Brick Stairs","6887":"Mossy Stone Brick Stairs","6896":"Smooth Red Sandstone Stairs","6897":"Smooth Red Sandstone Stairs","6898":"Smooth Red Sandstone Stairs","6899":"Smooth Red Sandstone Stairs","6900":"Smooth Red Sandstone Stairs","6901":"Smooth Red Sandstone Stairs","6902":"Smooth Red Sandstone Stairs","6903":"Smooth Red Sandstone Stairs","6912":"Smooth Sandstone Stairs","6913":"Smooth Sandstone Stairs","6914":"Smooth Sandstone Stairs","6915":"Smooth Sandstone Stairs","6916":"Smooth Sandstone Stairs","6917":"Smooth Sandstone Stairs","6918":"Smooth Sandstone Stairs","6919":"Smooth Sandstone Stairs","6928":"End Stone Brick Stairs","6929":"End Stone Brick Stairs","6930":"End Stone Brick Stairs","6931":"End Stone Brick Stairs","6932":"End Stone Brick Stairs","6933":"End Stone Brick Stairs","6934":"End Stone Brick Stairs","6935":"End Stone Brick Stairs","6944":"Mossy Cobblestone Stairs","6945":"Mossy Cobblestone Stairs","6946":"Mossy Cobblestone Stairs","6947":"Mossy Cobblestone Stairs","6948":"Mossy Cobblestone Stairs","6949":"Mossy Cobblestone Stairs","6950":"Mossy Cobblestone Stairs","6951":"Mossy Cobblestone Stairs","6960":"Stone Stairs","6961":"Stone Stairs","6962":"Stone Stairs","6963":"Stone Stairs","6964":"Stone Stairs","6965":"Stone Stairs","6966":"Stone Stairs","6967":"Stone Stairs","6976":"Spruce Sign","6977":"Spruce Sign","6978":"Spruce Sign","6979":"Spruce Sign","6980":"Spruce Sign","6981":"Spruce Sign","6982":"Spruce Sign","6983":"Spruce Sign","6984":"Spruce Sign","6985":"Spruce Sign","6986":"Spruce Sign","6987":"Spruce Sign","6988":"Spruce Sign","6989":"Spruce Sign","6990":"Spruce Sign","6991":"Spruce Sign","6994":"Spruce Wall Sign","6995":"Spruce Wall Sign","6996":"Spruce Wall Sign","6997":"Spruce Wall Sign","7008":"Smooth Stone","7024":"Red Nether Brick Stairs","7025":"Red Nether Brick Stairs","7026":"Red Nether Brick Stairs","7027":"Red Nether Brick Stairs","7028":"Red Nether Brick Stairs","7029":"Red Nether Brick Stairs","7030":"Red Nether Brick Stairs","7031":"Red Nether Brick Stairs","7040":"Smooth Quartz Stairs","7041":"Smooth Quartz Stairs","7042":"Smooth Quartz Stairs","7043":"Smooth Quartz Stairs","7044":"Smooth Quartz Stairs","7045":"Smooth Quartz Stairs","7046":"Smooth Quartz Stairs","7047":"Smooth Quartz Stairs","7056":"Birch Sign","7057":"Birch Sign","7058":"Birch Sign","7059":"Birch Sign","7060":"Birch Sign","7061":"Birch Sign","7062":"Birch Sign","7063":"Birch Sign","7064":"Birch Sign","7065":"Birch Sign","7066":"Birch Sign","7067":"Birch Sign","7068":"Birch Sign","7069":"Birch Sign","7070":"Birch Sign","7071":"Birch Sign","7074":"Birch Wall Sign","7075":"Birch Wall Sign","7076":"Birch Wall Sign","7077":"Birch Wall Sign","7088":"Jungle Sign","7089":"Jungle Sign","7090":"Jungle Sign","7091":"Jungle Sign","7092":"Jungle Sign","7093":"Jungle Sign","7094":"Jungle Sign","7095":"Jungle Sign","7096":"Jungle Sign","7097":"Jungle Sign","7098":"Jungle Sign","7099":"Jungle Sign","7100":"Jungle Sign","7101":"Jungle Sign","7102":"Jungle Sign","7103":"Jungle Sign","7106":"Jungle Wall Sign","7107":"Jungle Wall Sign","7108":"Jungle Wall Sign","7109":"Jungle Wall Sign","7120":"Acacia Sign","7121":"Acacia Sign","7122":"Acacia Sign","7123":"Acacia Sign","7124":"Acacia Sign","7125":"Acacia Sign","7126":"Acacia Sign","7127":"Acacia Sign","7128":"Acacia Sign","7129":"Acacia Sign","7130":"Acacia Sign","7131":"Acacia Sign","7132":"Acacia Sign","7133":"Acacia Sign","7134":"Acacia Sign","7135":"Acacia Sign","7138":"Acacia Wall Sign","7139":"Acacia Wall Sign","7140":"Acacia Wall Sign","7141":"Acacia Wall Sign","7152":"Dark Oak Sign","7153":"Dark Oak Sign","7154":"Dark Oak Sign","7155":"Dark Oak Sign","7156":"Dark Oak Sign","7157":"Dark Oak Sign","7158":"Dark Oak Sign","7159":"Dark Oak Sign","7160":"Dark Oak Sign","7161":"Dark Oak Sign","7162":"Dark Oak Sign","7163":"Dark Oak Sign","7164":"Dark Oak Sign","7165":"Dark Oak Sign","7166":"Dark Oak Sign","7167":"Dark Oak Sign","7170":"Dark Oak Wall Sign","7171":"Dark Oak Wall Sign","7172":"Dark Oak Wall Sign","7173":"Dark Oak Wall Sign","7184":"Lectern","7185":"Lectern","7186":"Lectern","7187":"Lectern","7188":"Lectern","7189":"Lectern","7190":"Lectern","7191":"Lectern","7218":"Blast Furnace","7219":"Blast Furnace","7220":"Blast Furnace","7221":"Blast Furnace","7250":"Smoker","7251":"Smoker","7252":"Smoker","7253":"Smoker","7266":"Smoker","7267":"Smoker","7268":"Smoker","7269":"Smoker","7296":"Fletching Table","7328":"Barrel","7329":"Barrel","7330":"Barrel","7331":"Barrel","7332":"Barrel","7333":"Barrel","7336":"Barrel","7337":"Barrel","7338":"Barrel","7339":"Barrel","7340":"Barrel","7341":"Barrel","7344":"Loom","7345":"Loom","7346":"Loom","7347":"Loom","7376":"Bell","7377":"Bell","7378":"Bell","7379":"Bell","7380":"Bell","7381":"Bell","7382":"Bell","7383":"Bell","7384":"Bell","7385":"Bell","7386":"Bell","7387":"Bell","7388":"Bell","7389":"Bell","7390":"Bell","7391":"Bell","7392":"Sweet Berry Bush","7393":"Sweet Berry Bush","7394":"Sweet Berry Bush","7395":"Sweet Berry Bush","7408":"Lantern","7409":"Lantern","7472":"Oak Wood","7473":"Spruce Wood","7474":"Birch Wood","7475":"Jungle Wood","7476":"Acacia Wood","7477":"Dark Oak Wood","7480":"Stripped Oak Wood","7481":"Stripped Spruce Wood","7482":"Stripped Birch Wood","7483":"Stripped Jungle Wood","7484":"Stripped Acacia Wood","7485":"Stripped Dark Oak Wood","7506":"Blast Furnace","7507":"Blast Furnace","7508":"Blast Furnace","7509":"Blast Furnace"},"remaps":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"23":16,"24":16,"25":16,"26":16,"27":16,"28":16,"29":16,"30":16,"31":16,"33":32,"34":32,"35":32,"36":32,"37":32,"38":32,"39":32,"40":32,"41":32,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"50":48,"51":48,"52":48,"53":48,"54":48,"55":48,"56":48,"57":48,"58":48,"59":48,"60":48,"61":48,"62":48,"63":48,"65":64,"66":64,"67":64,"68":64,"69":64,"70":64,"71":64,"72":64,"73":64,"74":64,"75":64,"76":64,"77":64,"78":64,"79":64,"86":80,"87":80,"88":80,"89":80,"90":80,"91":80,"92":80,"93":80,"94":80,"95":80,"102":96,"103":96,"110":96,"111":96,"114":112,"115":112,"116":112,"117":112,"118":112,"119":112,"120":112,"121":112,"122":112,"123":112,"124":112,"125":112,"126":112,"127":112,"194":192,"195":192,"196":192,"197":192,"198":192,"199":192,"200":192,"201":192,"202":192,"203":192,"204":192,"205":192,"206":192,"207":192,"209":208,"210":208,"211":208,"212":208,"213":208,"214":208,"215":208,"216":208,"217":208,"218":208,"219":208,"220":208,"221":208,"222":208,"223":208,"225":224,"226":224,"227":224,"228":224,"229":224,"230":224,"231":224,"232":224,"233":224,"234":224,"235":224,"236":224,"237":224,"238":224,"239":224,"241":240,"242":240,"243":240,"244":240,"245":240,"246":240,"247":240,"248":240,"249":240,"250":240,"251":240,"252":240,"253":240,"254":240,"255":240,"257":256,"258":256,"259":256,"260":256,"261":256,"262":256,"263":256,"264":256,"265":256,"266":256,"267":256,"268":256,"269":256,"270":256,"271":256,"284":7472,"285":7473,"286":7474,"287":7475,"306":304,"307":304,"308":304,"309":304,"310":304,"311":304,"312":304,"313":304,"314":304,"315":304,"316":304,"317":304,"318":304,"319":304,"321":320,"322":320,"323":320,"324":320,"325":320,"326":320,"327":320,"328":320,"329":320,"330":320,"331":320,"332":320,"333":320,"334":320,"335":320,"337":336,"338":336,"339":336,"340":336,"341":336,"342":336,"343":336,"344":336,"345":336,"346":336,"347":336,"348":336,"349":336,"350":336,"351":336,"353":352,"354":352,"355":352,"356":352,"357":352,"358":352,"359":352,"360":352,"361":352,"362":352,"363":352,"364":352,"365":352,"366":352,"367":352,"388":384,"389":384,"390":384,"391":384,"392":384,"393":384,"394":384,"395":384,"396":384,"397":384,"398":384,"399":384,"401":400,"402":400,"403":400,"404":400,"405":400,"406":400,"407":400,"408":400,"409":400,"410":400,"411":400,"412":400,"413":400,"414":400,"415":400,"438":432,"439":432,"446":432,"447":432,"454":448,"455":448,"462":448,"463":448,"481":480,"482":480,"483":480,"484":480,"485":480,"486":480,"487":480,"488":480,"489":480,"490":480,"491":480,"492":480,"493":480,"494":480,"495":480,"496":498,"499":498,"500":498,"501":498,"502":498,"503":498,"504":498,"505":498,"506":498,"507":498,"508":498,"509":498,"510":498,"511":498,"513":512,"514":512,"515":512,"516":512,"517":512,"518":512,"519":512,"520":512,"521":512,"522":512,"523":512,"524":512,"525":512,"526":512,"527":512,"577":576,"578":576,"579":576,"580":576,"581":576,"582":576,"583":576,"584":576,"585":576,"586":576,"587":576,"588":576,"589":576,"590":576,"591":576,"593":592,"594":592,"595":592,"596":592,"597":592,"598":592,"599":592,"600":592,"601":592,"602":592,"603":592,"604":592,"605":592,"606":592,"607":592,"619":608,"620":608,"621":608,"622":608,"623":608,"625":624,"626":624,"627":624,"628":624,"629":624,"630":624,"631":624,"632":624,"633":624,"634":624,"635":624,"636":624,"637":624,"638":624,"639":624,"641":640,"642":640,"643":640,"644":640,"645":640,"646":640,"647":640,"648":640,"649":640,"650":640,"651":640,"652":640,"653":640,"654":640,"655":640,"657":656,"658":656,"659":656,"660":656,"661":656,"662":656,"663":656,"664":656,"665":656,"666":656,"667":656,"668":656,"669":656,"670":656,"671":656,"673":672,"674":672,"675":672,"676":672,"677":672,"678":672,"679":672,"680":672,"681":672,"682":672,"683":672,"684":672,"685":672,"686":672,"687":672,"696":688,"697":689,"698":690,"699":691,"700":692,"701":693,"702":694,"703":695,"721":720,"722":720,"723":720,"724":720,"725":720,"726":720,"727":720,"728":720,"729":720,"730":720,"731":720,"732":720,"733":720,"734":720,"735":720,"740":736,"741":736,"742":736,"743":736,"744":736,"745":736,"746":736,"747":736,"748":736,"749":736,"750":736,"751":736,"753":752,"754":752,"755":752,"756":752,"757":752,"758":752,"759":752,"760":752,"761":752,"762":752,"763":752,"764":752,"765":752,"766":752,"767":752,"769":768,"770":768,"771":768,"772":768,"773":768,"774":768,"775":768,"776":768,"777":768,"778":768,"779":768,"780":768,"781":768,"782":768,"783":768,"785":784,"786":784,"787":784,"788":784,"789":784,"790":784,"791":784,"792":784,"793":784,"794":784,"795":784,"796":784,"797":784,"798":784,"799":784,"800":805,"806":805,"807":805,"808":805,"809":805,"810":805,"811":805,"812":805,"813":805,"814":805,"815":805,"833":832,"834":832,"835":832,"836":832,"837":832,"838":832,"839":832,"840":832,"841":832,"842":832,"843":832,"844":832,"845":832,"846":832,"847":832,"856":851,"857":851,"858":851,"859":851,"860":851,"861":851,"862":851,"863":851,"864":866,"865":866,"870":866,"871":866,"872":866,"873":866,"874":866,"875":866,"876":866,"877":866,"878":866,"879":866,"897":896,"898":896,"899":896,"900":896,"901":896,"902":896,"903":896,"904":896,"905":896,"906":896,"907":896,"908":896,"909":896,"910":896,"911":896,"913":912,"914":912,"915":912,"916":912,"917":912,"918":912,"919":912,"920":912,"921":912,"922":912,"923":912,"924":912,"925":912,"926":912,"927":912,"929":928,"930":928,"931":928,"932":928,"933":928,"934":928,"935":928,"936":928,"937":928,"938":928,"939":928,"940":928,"941":928,"942":928,"943":928,"952":944,"953":944,"954":944,"955":944,"956":944,"957":944,"958":944,"959":944,"968":960,"969":960,"970":960,"971":960,"972":960,"973":960,"974":960,"975":960,"976":978,"977":978,"982":978,"983":978,"984":978,"985":978,"986":978,"987":978,"988":978,"989":978,"990":978,"991":978,"992":978,"993":978,"998":978,"999":978,"1000":978,"1001":978,"1002":978,"1003":978,"1004":978,"1005":978,"1006":978,"1007":978,"1036":1027,"1037":1027,"1038":1027,"1039":1027,"1040":1042,"1041":1042,"1046":1042,"1047":1042,"1048":1042,"1049":1042,"1050":1042,"1051":1042,"1052":1042,"1053":1042,"1054":1042,"1055":1042,"1066":1056,"1067":1056,"1068":1056,"1069":1056,"1070":1056,"1071":1056,"1080":1075,"1081":1075,"1082":1075,"1083":1075,"1084":1075,"1085":1075,"1086":1075,"1087":1075,"1088":1090,"1089":1090,"1094":1090,"1095":1090,"1096":1090,"1097":1090,"1098":1090,"1099":1090,"1100":1090,"1101":1090,"1102":1090,"1103":1090,"1122":1120,"1123":1120,"1124":1120,"1125":1120,"1126":1120,"1127":1120,"1128":1120,"1129":1120,"1130":1120,"1131":1120,"1132":1120,"1133":1120,"1134":1120,"1135":1120,"1148":1139,"1149":1139,"1150":1139,"1151":1139,"1154":1152,"1155":1152,"1156":1152,"1157":1152,"1158":1152,"1159":1152,"1160":1152,"1161":1152,"1162":1152,"1163":1152,"1164":1152,"1165":1152,"1166":1152,"1167":1152,"1169":1168,"1170":1168,"1171":1168,"1172":1168,"1173":1168,"1174":1168,"1175":1168,"1176":1168,"1177":1168,"1178":1168,"1179":1168,"1180":1168,"1181":1168,"1182":1168,"1183":1168,"1185":1168,"1186":1168,"1187":1168,"1188":1168,"1189":1168,"1190":1168,"1191":1168,"1192":1168,"1193":1168,"1194":1168,"1195":1168,"1196":1168,"1197":1168,"1198":1168,"1199":1168,"1200":1221,"1206":1221,"1207":1221,"1208":1221,"1209":1221,"1210":1221,"1211":1221,"1212":1221,"1213":1221,"1214":1221,"1215":1221,"1216":1221,"1222":1221,"1223":1221,"1224":1221,"1225":1221,"1226":1221,"1227":1221,"1228":1221,"1229":1221,"1230":1221,"1231":1221,"1238":1232,"1239":1232,"1246":1232,"1247":1232,"1256":1248,"1257":1248,"1258":1248,"1259":1248,"1260":1248,"1261":1248,"1262":1248,"1263":1248,"1265":1264,"1266":1264,"1267":1264,"1268":1264,"1269":1264,"1270":1264,"1271":1264,"1272":1264,"1273":1264,"1274":1264,"1275":1264,"1276":1264,"1277":1264,"1278":1264,"1279":1264,"1281":1280,"1282":1280,"1283":1280,"1284":1280,"1285":1280,"1286":1280,"1287":1280,"1288":1280,"1289":1280,"1290":1280,"1291":1280,"1292":1280,"1293":1280,"1294":1280,"1295":1280,"1313":1312,"1314":1312,"1315":1312,"1316":1312,"1317":1312,"1318":1312,"1319":1312,"1320":1312,"1321":1312,"1322":1312,"1323":1312,"1324":1312,"1325":1312,"1326":1312,"1327":1312,"1345":1344,"1346":1344,"1347":1344,"1348":1344,"1349":1344,"1350":1344,"1351":1344,"1352":1344,"1353":1344,"1354":1344,"1355":1344,"1356":1344,"1357":1344,"1358":1344,"1359":1344,"1366":1360,"1367":1360,"1368":1360,"1369":1360,"1370":1360,"1371":1360,"1372":1360,"1373":1360,"1374":1360,"1375":1360,"1377":1376,"1378":1376,"1379":1376,"1380":1376,"1381":1376,"1382":1376,"1383":1376,"1384":1376,"1385":1376,"1386":1376,"1387":1376,"1388":1376,"1389":1376,"1390":1376,"1391":1376,"1393":1392,"1394":1392,"1395":1392,"1396":1392,"1397":1392,"1398":1392,"1399":1392,"1400":1392,"1401":1392,"1402":1392,"1403":1392,"1404":1392,"1405":1392,"1406":1392,"1407":1392,"1409":1408,"1410":1408,"1411":1408,"1412":1408,"1413":1408,"1414":1408,"1415":1408,"1416":1408,"1417":1408,"1418":1408,"1419":1408,"1420":1408,"1421":1408,"1422":1408,"1423":1408,"1425":1424,"1426":1424,"1427":1424,"1428":1424,"1429":1424,"1430":1424,"1431":1424,"1432":1424,"1433":1424,"1434":1424,"1435":1424,"1436":1424,"1437":1424,"1438":1424,"1439":1424,"1440":1441,"1443":1441,"1444":1441,"1445":1441,"1446":1441,"1447":1441,"1448":1441,"1449":1441,"1450":1441,"1451":1441,"1452":1441,"1453":1441,"1454":1441,"1455":1441,"1460":1458,"1461":1458,"1462":1458,"1463":1458,"1464":1458,"1465":1458,"1466":1458,"1467":1458,"1468":1458,"1469":1458,"1470":1458,"1471":1458,"1479":1472,"1480":1472,"1481":1472,"1482":1472,"1483":1472,"1484":1472,"1485":1472,"1486":1472,"1487":1472,"1521":1520,"1522":1520,"1523":1520,"1524":1520,"1525":1520,"1526":1520,"1527":1520,"1528":1520,"1529":1520,"1530":1520,"1531":1520,"1532":1520,"1533":1520,"1534":1520,"1535":1520,"1558":1552,"1559":1552,"1560":1552,"1561":1552,"1562":1552,"1563":1552,"1564":1552,"1565":1552,"1566":1552,"1567":1552,"1572":1568,"1573":1568,"1574":1568,"1575":1568,"1576":1568,"1577":1568,"1578":1568,"1579":1568,"1580":1568,"1581":1568,"1582":1568,"1583":1568,"1595":1598,"1596":1598,"1597":1598,"1610":1594,"1611":1614,"1612":1614,"1613":1614,"1615":1599,"1617":1616,"1618":1616,"1619":1616,"1620":1616,"1621":1616,"1622":1616,"1623":1616,"1624":1616,"1625":1616,"1626":1616,"1627":1616,"1628":1616,"1629":1616,"1630":1616,"1631":1616,"1633":1632,"1634":1632,"1635":1632,"1636":1632,"1637":1632,"1638":1632,"1639":1632,"1640":1632,"1641":1632,"1642":1632,"1643":1632,"1644":1632,"1645":1632,"1646":1632,"1647":1632,"1649":1648,"1650":1648,"1651":1648,"1652":1648,"1653":1648,"1654":1648,"1655":1648,"1656":1648,"1657":1648,"1658":1648,"1659":1648,"1660":1648,"1661":1648,"1662":1648,"1663":1648,"1672":1664,"1673":1664,"1674":1664,"1675":1664,"1676":1664,"1677":1664,"1678":1664,"1679":1664,"1688":1680,"1689":1680,"1690":1680,"1691":1680,"1692":1680,"1693":1680,"1694":1680,"1695":1680,"1736":1731,"1737":1731,"1738":1731,"1739":1731,"1740":1731,"1741":1731,"1742":1731,"1743":1731,"1752":1747,"1753":1747,"1754":1747,"1755":1747,"1756":1747,"1757":1747,"1758":1747,"1759":1747,"1761":1760,"1762":1760,"1763":1760,"1764":1760,"1765":1760,"1766":1760,"1767":1760,"1768":1760,"1769":1760,"1770":1760,"1771":1760,"1772":1760,"1773":1760,"1774":1760,"1775":1760,"1777":1776,"1778":1776,"1779":1776,"1780":1776,"1781":1776,"1782":1776,"1783":1776,"1784":1776,"1785":1776,"1786":1776,"1787":1776,"1788":1776,"1789":1776,"1790":1776,"1791":1776,"1793":1792,"1794":1792,"1795":1792,"1796":1792,"1797":1792,"1798":1792,"1799":1792,"1800":1792,"1801":1792,"1802":1792,"1803":1792,"1804":1792,"1805":1792,"1806":1792,"1807":1792,"1809":1808,"1810":1808,"1811":1808,"1812":1808,"1813":1808,"1814":1808,"1815":1808,"1816":1808,"1817":1808,"1818":1808,"1819":1808,"1820":1808,"1821":1808,"1822":1808,"1823":1808,"1832":1827,"1833":1827,"1834":1827,"1835":1827,"1836":1827,"1837":1827,"1838":1827,"1839":1827,"1844":1840,"1845":1840,"1846":1840,"1847":1840,"1848":1840,"1849":1840,"1850":1840,"1851":1840,"1852":1840,"1853":1840,"1854":1840,"1855":1840,"1857":1856,"1858":1856,"1859":1856,"1860":1856,"1861":1856,"1862":1856,"1863":1856,"1864":1856,"1865":1856,"1866":1856,"1867":1856,"1868":1856,"1869":1856,"1870":1856,"1871":1856,"1880":1872,"1881":1872,"1882":1872,"1883":1872,"1884":1872,"1885":1872,"1886":1872,"1887":1872,"1928":1922,"1929":1922,"1930":1922,"1931":1922,"1932":1922,"1933":1922,"1934":1922,"1935":1922,"1937":1936,"1938":1936,"1939":1936,"1940":1936,"1941":1936,"1942":1936,"1943":1936,"1944":1936,"1945":1936,"1946":1936,"1947":1936,"1948":1936,"1949":1936,"1950":1936,"1951":1936,"1953":1952,"1954":1952,"1955":1952,"1956":1952,"1957":1952,"1958":1952,"1959":1952,"1960":1952,"1961":1952,"1962":1952,"1963":1952,"1964":1952,"1965":1952,"1966":1952,"1967":1952,"1969":1968,"1970":1968,"1971":1968,"1972":1968,"1973":1968,"1974":1968,"1975":1968,"1976":1968,"1977":1968,"1978":1968,"1979":1968,"1980":1968,"1981":1968,"1982":1968,"1983":1968,"1985":1968,"1986":1968,"1987":1968,"1988":1968,"1989":1968,"1990":1968,"1991":1968,"1992":1968,"1993":1968,"1994":1968,"1995":1968,"1996":1968,"1997":1968,"1998":1968,"1999":1968,"2022":2016,"2023":2016,"2030":2016,"2031":2016,"2044":2032,"2045":2032,"2046":2032,"2047":2032,"2056":2051,"2057":2051,"2058":2051,"2059":2051,"2060":2051,"2061":2051,"2062":2051,"2063":2051,"2065":2064,"2066":2064,"2067":2064,"2068":2064,"2069":2064,"2070":2064,"2071":2064,"2072":2064,"2073":2064,"2074":2064,"2075":2064,"2076":2064,"2077":2064,"2078":2064,"2079":2064,"2080":2082,"2081":2082,"2086":2082,"2087":2082,"2088":2082,"2089":2082,"2090":2082,"2091":2082,"2092":2082,"2093":2082,"2094":2082,"2095":2082,"2129":2128,"2130":2128,"2131":2128,"2132":2128,"2133":2128,"2134":2128,"2135":2128,"2136":2128,"2137":2128,"2138":2128,"2139":2128,"2140":2128,"2141":2128,"2142":2128,"2143":2128,"2152":2147,"2153":2147,"2154":2147,"2155":2147,"2156":2147,"2157":2147,"2158":2147,"2159":2147,"2168":2163,"2169":2163,"2170":2163,"2171":2163,"2172":2163,"2173":2163,"2174":2163,"2175":2163,"2184":2179,"2185":2179,"2186":2179,"2187":2179,"2188":2179,"2189":2179,"2190":2179,"2191":2179,"2209":2208,"2210":2208,"2211":2208,"2212":2208,"2213":2208,"2214":2208,"2215":2208,"2216":2208,"2217":2208,"2218":2208,"2219":2208,"2220":2208,"2221":2208,"2222":2208,"2223":2208,"2238":2224,"2239":2224,"2241":2240,"2242":2240,"2243":2240,"2244":2240,"2245":2240,"2246":2240,"2247":2240,"2248":2240,"2249":2240,"2250":2240,"2251":2240,"2252":2240,"2253":2240,"2254":2240,"2255":2240,"2264":2256,"2265":2256,"2266":2256,"2267":2256,"2268":2256,"2269":2256,"2270":2256,"2271":2256,"2280":2272,"2281":2272,"2282":2272,"2283":2272,"2284":2272,"2285":2272,"2286":2272,"2287":2272,"2294":2288,"2295":2288,"2302":2288,"2303":2288,"2304":2306,"2310":2306,"2311":2306,"2312":2306,"2313":2306,"2314":2306,"2315":2306,"2316":2306,"2317":2306,"2318":2306,"2319":2306,"2332":2322,"2333":2322,"2334":2322,"2335":2322,"2336":2338,"2337":2338,"2342":2338,"2343":2338,"2344":2338,"2345":2338,"2346":2338,"2347":2338,"2348":2338,"2349":2338,"2350":2338,"2351":2338,"2392":2386,"2393":2386,"2394":2386,"2395":2386,"2396":2386,"2397":2386,"2398":2386,"2399":2386,"2400":2386,"2401":2386,"2402":2386,"2403":2386,"2404":2386,"2405":2386,"2406":2386,"2407":2386,"2433":2432,"2434":2432,"2435":2432,"2436":2432,"2437":2432,"2438":2432,"2439":2432,"2440":2432,"2441":2432,"2442":2432,"2443":2432,"2444":2432,"2445":2432,"2446":2432,"2447":2432,"2449":2448,"2450":2448,"2451":2448,"2452":2448,"2453":2448,"2454":2448,"2455":2448,"2456":2448,"2457":2448,"2458":2448,"2459":2448,"2460":2448,"2461":2448,"2462":2448,"2463":2448,"2465":2464,"2470":2464,"2471":2464,"2473":2464,"2478":2464,"2479":2464,"2484":2480,"2487":2480,"2488":2480,"2491":2480,"2492":2480,"2493":2481,"2494":2482,"2495":2480,"2504":2499,"2505":2499,"2506":2499,"2507":2499,"2508":2499,"2509":2499,"2510":2499,"2511":2499,"2520":2512,"2521":2513,"2522":2514,"2523":2515,"2524":2516,"2525":2517,"2578":288,"2579":288,"2582":288,"2583":288,"2586":288,"2587":288,"2590":288,"2591":288,"2604":7476,"2605":7477,"2616":2611,"2617":2611,"2618":2611,"2619":2611,"2620":2611,"2621":2611,"2622":2611,"2623":2611,"2632":2627,"2633":2627,"2634":2627,"2635":2627,"2636":2627,"2637":2627,"2638":2627,"2639":2627,"2641":2640,"2642":2640,"2643":2640,"2644":2640,"2645":2640,"2646":2640,"2647":2640,"2648":2640,"2649":2640,"2650":2640,"2651":2640,"2652":2640,"2653":2640,"2654":2640,"2655":2640,"2691":2688,"2692":2688,"2693":2688,"2694":2688,"2695":2688,"2696":2688,"2697":2688,"2698":2688,"2699":2688,"2700":2688,"2701":2688,"2702":2688,"2703":2688,"2705":2704,"2706":2704,"2707":2704,"2708":2704,"2709":2704,"2710":2704,"2711":2704,"2712":2704,"2713":2704,"2714":2704,"2715":2704,"2716":2704,"2717":2704,"2718":2704,"2719":2704,"2721":2720,"2722":2720,"2723":2720,"2725":2720,"2726":2720,"2727":2720,"2729":2720,"2730":2720,"2731":2720,"2732":2720,"2733":2720,"2734":2720,"2735":2720,"2753":2752,"2754":2752,"2755":2752,"2756":2752,"2757":2752,"2758":2752,"2759":2752,"2760":2752,"2761":2752,"2762":2752,"2763":2752,"2764":2752,"2765":2752,"2766":2752,"2767":2752,"2769":2768,"2770":2768,"2771":2768,"2772":2768,"2773":2768,"2774":2768,"2775":2768,"2776":2768,"2777":2768,"2778":2768,"2779":2768,"2780":2768,"2781":2768,"2782":2768,"2783":2768,"2785":2784,"2786":2784,"2787":2784,"2788":2784,"2789":2784,"2790":2784,"2791":2784,"2792":2784,"2793":2784,"2794":2784,"2795":2784,"2796":2784,"2797":2784,"2798":2784,"2799":2784,"2806":2800,"2807":2800,"2814":2800,"2815":2800,"2832":2834,"2833":2834,"2838":2834,"2839":2834,"2840":2834,"2841":2834,"2842":2834,"2843":2834,"2844":2834,"2845":2834,"2846":2834,"2847":2834,"2868":2864,"2869":2864,"2870":2864,"2871":2864,"2872":2864,"2873":2864,"2874":2864,"2875":2864,"2876":2864,"2877":2864,"2878":2864,"2879":2864,"2888":2883,"2889":2883,"2890":2883,"2891":2883,"2892":2883,"2893":2883,"2894":2883,"2895":2883,"2904":2896,"2905":2897,"2906":2898,"2907":2899,"2908":2900,"2909":2901,"2910":2902,"2911":2903,"3041":3040,"3042":3040,"3043":3040,"3044":3040,"3045":3040,"3046":3040,"3047":3040,"3048":3040,"3049":3040,"3050":3040,"3051":3040,"3052":3040,"3053":3040,"3054":3040,"3055":3040,"3073":3072,"3074":3072,"3075":3072,"3076":3072,"3077":3072,"3078":3072,"3079":3072,"3080":3072,"3081":3072,"3082":3072,"3083":3072,"3084":3072,"3085":3072,"3086":3072,"3087":3072,"3100":3091,"3101":3091,"3102":3091,"3103":3091,"3116":3107,"3117":3107,"3118":3107,"3119":3107,"3132":3123,"3133":3123,"3134":3123,"3135":3123,"3148":3139,"3149":3139,"3150":3139,"3151":3139,"3164":3155,"3165":3155,"3166":3155,"3167":3155,"3169":3168,"3170":3168,"3171":3168,"3172":3168,"3173":3168,"3174":3168,"3175":3168,"3176":3168,"3177":3168,"3178":3168,"3179":3168,"3180":3168,"3181":3168,"3182":3168,"3183":3168,"3192":3187,"3193":3187,"3194":3187,"3195":3187,"3196":3187,"3197":3187,"3198":3187,"3199":3187,"3217":3216,"3219":3216,"3220":3216,"3221":3216,"3223":3216,"3224":3216,"3225":3216,"3227":3216,"3228":3216,"3229":3216,"3230":3218,"3231":3216,"3232":3237,"3238":3237,"3239":3237,"3240":3245,"3246":3245,"3247":3245,"3256":3251,"3257":3251,"3258":3251,"3259":3251,"3260":3251,"3261":3251,"3262":3251,"3263":3251,"3264":3269,"3270":3269,"3271":3269,"3272":3277,"3278":3277,"3279":3277,"3281":3280,"3282":3280,"3283":3280,"3284":3280,"3285":3280,"3286":3280,"3287":3280,"3288":3280,"3289":3280,"3290":3280,"3291":3280,"3292":3280,"3293":3280,"3294":3280,"3295":3280,"3297":3296,"3298":3296,"3299":3296,"3300":3296,"3301":3296,"3302":3296,"3303":3296,"3304":3296,"3305":3296,"3306":3296,"3307":3296,"3308":3296,"3309":3296,"3310":3296,"3311":3296,"3316":3312,"3317":3312,"3318":3312,"3319":3312,"3320":3312,"3321":3312,"3322":3312,"3323":3312,"3324":3312,"3325":3312,"3326":3312,"3327":3312,"3334":3328,"3335":3328,"3336":3328,"3337":3328,"3338":3328,"3339":3328,"3340":3328,"3341":3328,"3342":3328,"3343":3328,"3409":3408,"3410":3408,"3411":3408,"3412":3408,"3413":3408,"3414":3408,"3415":3408,"3416":3408,"3417":3408,"3418":3408,"3419":3408,"3420":3408,"3421":3408,"3422":3408,"3423":3408,"3425":3424,"3426":3424,"3427":3424,"3428":3424,"3429":3424,"3430":3424,"3431":3424,"3432":3424,"3433":3424,"3434":3424,"3435":3424,"3436":3424,"3437":3424,"3438":3424,"3439":3424,"3441":3440,"3442":3440,"3443":3440,"3444":3440,"3445":3440,"3446":3440,"3447":3440,"3448":3440,"3449":3440,"3450":3440,"3451":3440,"3452":3440,"3453":3440,"3454":3440,"3455":3440,"3457":3456,"3458":3456,"3459":3456,"3461":3456,"3462":3456,"3463":3456,"3465":3456,"3466":3456,"3467":3456,"3468":3456,"3469":3456,"3470":3456,"3471":3456,"3504":3506,"3505":3506,"3510":3506,"3511":3506,"3512":3506,"3513":3506,"3514":3506,"3515":3506,"3516":3506,"3517":3506,"3518":3506,"3519":3506,"3520":3522,"3521":3522,"3526":3522,"3527":3522,"3528":3522,"3529":3522,"3530":3522,"3531":3522,"3532":3522,"3533":3522,"3534":3522,"3535":3522,"3536":3538,"3537":3538,"3542":3538,"3543":3538,"3544":3538,"3545":3538,"3546":3538,"3547":3538,"3548":3538,"3549":3538,"3550":3538,"3551":3538,"3552":3554,"3553":3554,"3558":3554,"3559":3554,"3560":3554,"3561":3554,"3562":3554,"3563":3554,"3564":3554,"3565":3554,"3566":3554,"3567":3554,"3568":3570,"3569":3570,"3574":3570,"3575":3570,"3576":3570,"3577":3570,"3578":3570,"3579":3570,"3580":3570,"3581":3570,"3582":3570,"3583":3570,"3584":3586,"3585":3586,"3590":3586,"3591":3586,"3592":3586,"3593":3586,"3594":3586,"3595":3586,"3596":3586,"3597":3586,"3598":3586,"3599":3586,"3600":3602,"3601":3602,"3606":3602,"3607":3602,"3608":3602,"3609":3602,"3610":3602,"3611":3602,"3612":3602,"3613":3602,"3614":3602,"3615":3602,"3616":3618,"3617":3618,"3622":3618,"3623":3618,"3624":3618,"3625":3618,"3626":3618,"3627":3618,"3628":3618,"3629":3618,"3630":3618,"3631":3618,"3632":3634,"3633":3634,"3638":3634,"3639":3634,"3640":3634,"3641":3634,"3642":3634,"3643":3634,"3644":3634,"3645":3634,"3646":3634,"3647":3634,"3648":3650,"3649":3650,"3654":3650,"3655":3650,"3656":3650,"3657":3650,"3658":3650,"3659":3650,"3660":3650,"3661":3650,"3662":3650,"3663":3650,"3664":3666,"3665":3666,"3670":3666,"3671":3666,"3672":3666,"3673":3666,"3674":3666,"3675":3666,"3676":3666,"3677":3666,"3678":3666,"3679":3666,"3696":3698,"3697":3698,"3702":3698,"3703":3698,"3704":3698,"3705":3698,"3706":3698,"3707":3698,"3708":3698,"3709":3698,"3710":3698,"3711":3698,"3712":3714,"3713":3714,"3718":3714,"3719":3714,"3720":3714,"3721":3714,"3722":3714,"3723":3714,"3724":3714,"3725":3714,"3726":3714,"3727":3714,"3728":3730,"3729":3730,"3734":3730,"3735":3730,"3736":3730,"3737":3730,"3738":3730,"3739":3730,"3740":3730,"3741":3730,"3742":3730,"3743":3730,"3744":3746,"3745":3746,"3750":3746,"3751":3746,"3752":3746,"3753":3746,"3754":3746,"3755":3746,"3756":3746,"3757":3746,"3758":3746,"3759":3746,"3760":3762,"3761":3762,"3766":3762,"3767":3762,"3768":3762,"3769":3762,"3770":3762,"3771":3762,"3772":3762,"3773":3762,"3774":3762,"3775":3762,"3824":3829,"3830":3829,"3831":3829,"3832":3829,"3833":3829,"3834":3829,"3835":3829,"3836":3829,"3837":3829,"3838":3829,"3839":3829,"3889":3888,"3890":3888,"3891":3888,"3892":3888,"3893":3888,"3894":3888,"3895":3888,"3896":3888,"3897":3888,"3898":3888,"3899":3888,"3900":3888,"3901":3888,"3902":3888,"3903":3888,"3912":3904,"3913":3904,"3914":3904,"3915":3904,"3916":3904,"3917":3904,"3918":3904,"3919":3904,"3921":3920,"3922":3920,"3923":3920,"3924":3920,"3925":3920,"3926":3920,"3927":3920,"3928":3920,"3929":3920,"3930":3920,"3931":3920,"3932":3920,"3933":3920,"3934":3920,"3935":3920,"3937":3936,"3938":3936,"3939":3936,"3940":3936,"3941":3936,"3942":3936,"3943":3936,"3944":3936,"3945":3936,"3946":3936,"3947":3936,"3948":3936,"3949":3936,"3950":3936,"3951":3936,"3953":3952,"3954":3952,"3955":3952,"3956":3952,"3957":3952,"3958":3952,"3959":3952,"3960":3952,"3961":3952,"3962":3952,"3963":3952,"3964":3952,"3965":3952,"3966":3952,"3967":3952,"3969":3968,"3970":3968,"3971":3968,"3972":3968,"3973":3968,"3974":3968,"3975":3968,"3976":3968,"3977":3968,"3978":3968,"3979":3968,"3980":3968,"3981":3968,"3982":3968,"3983":3968,"3985":3984,"3986":3984,"3987":3984,"3988":3984,"3989":3984,"3990":3984,"3991":3984,"3992":3984,"3993":3984,"3994":3984,"3995":3984,"3996":3984,"3997":3984,"3998":3984,"3999":3984,"4049":4048,"4050":4048,"4051":4048,"4052":4048,"4053":4048,"4054":4048,"4055":4048,"4056":4048,"4057":4048,"4058":4048,"4059":4048,"4060":4048,"4061":4048,"4062":4048,"4063":4048,"4081":4080,"4082":4080,"4083":4080,"4084":4080,"4085":4080,"4086":4080,"4087":4080,"4088":4080,"4089":4080,"4090":4080,"4091":4080,"4092":4080,"4093":4080,"4094":4080,"4095":4080,"4120":4115,"4121":4115,"4122":4115,"4123":4115,"4124":4115,"4125":4115,"4126":4115,"4127":4115,"4136":4131,"4137":4131,"4138":4131,"4139":4131,"4140":4131,"4141":4131,"4142":4131,"4143":4131,"4152":4147,"4153":4147,"4154":4147,"4155":4147,"4156":4147,"4157":4147,"4158":4147,"4159":4147,"4163":4160,"4164":4160,"4165":4160,"4166":4160,"4167":4160,"4168":4160,"4169":4160,"4170":4160,"4171":4160,"4172":4160,"4173":4160,"4174":4160,"4175":4160,"4179":4176,"4180":4176,"4181":4176,"4182":4176,"4183":4176,"4184":4176,"4185":4176,"4186":4176,"4187":4176,"4188":4176,"4189":4176,"4190":4176,"4191":4176,"4195":4192,"4196":4192,"4197":4192,"4198":4192,"4199":4192,"4200":4192,"4201":4192,"4202":4192,"4203":4192,"4204":4192,"4205":4192,"4206":4192,"4207":4192,"4211":4208,"4212":4208,"4213":4208,"4214":4208,"4215":4208,"4216":4208,"4217":4208,"4218":4208,"4219":4208,"4220":4208,"4221":4208,"4222":4208,"4223":4208,"4227":4224,"4228":4224,"4229":4224,"4230":4224,"4231":4224,"4232":4224,"4233":4224,"4234":4224,"4235":4224,"4236":4224,"4237":4224,"4238":4224,"4239":4224,"4243":4240,"4244":4240,"4245":4240,"4246":4240,"4247":4240,"4248":4240,"4249":4240,"4250":4240,"4251":4240,"4252":4240,"4253":4240,"4254":4240,"4255":4240,"4257":4256,"4258":4256,"4259":4256,"4260":4256,"4261":4256,"4262":4256,"4263":4256,"4264":4256,"4265":4256,"4266":4256,"4267":4256,"4268":4256,"4269":4256,"4270":4256,"4271":4256,"4273":4272,"4274":4272,"4275":4272,"4276":4272,"4277":4272,"4278":4272,"4279":4272,"4280":4272,"4281":4272,"4282":4272,"4283":4272,"4284":4272,"4285":4272,"4286":4272,"4287":4272,"4289":4288,"4290":4288,"4291":4288,"4292":4288,"4293":4288,"4294":4288,"4295":4288,"4296":4288,"4297":4288,"4298":4288,"4299":4288,"4300":4288,"4301":4288,"4302":4288,"4303":4288,"4305":4304,"4306":4304,"4307":4304,"4308":4304,"4309":4304,"4310":4304,"4311":4304,"4312":4304,"4313":4304,"4314":4304,"4315":4304,"4316":4304,"4317":4304,"4318":4304,"4319":4304,"4321":4320,"4322":4320,"4323":4320,"4324":4320,"4325":4320,"4326":4320,"4327":4320,"4328":4320,"4329":4320,"4330":4320,"4331":4320,"4332":4320,"4333":4320,"4334":4320,"4335":4320,"4337":4336,"4338":4336,"4339":4336,"4340":4336,"4341":4336,"4342":4336,"4343":4336,"4344":4336,"4345":4336,"4346":4336,"4347":4336,"4348":4336,"4349":4336,"4350":4336,"4351":4336,"4353":4352,"4354":4352,"4355":4352,"4356":4352,"4357":4352,"4358":4352,"4359":4352,"4360":4352,"4361":4352,"4362":4352,"4363":4352,"4364":4352,"4365":4352,"4366":4352,"4367":4352,"4369":4368,"4370":4368,"4371":4368,"4372":4368,"4373":4368,"4374":4368,"4375":4368,"4376":4368,"4377":4368,"4378":4368,"4379":4368,"4380":4368,"4381":4368,"4382":4368,"4383":4368,"4385":4384,"4386":4384,"4387":4384,"4388":4384,"4389":4384,"4390":4384,"4391":4384,"4392":4384,"4393":4384,"4394":4384,"4395":4384,"4396":4384,"4397":4384,"4398":4384,"4399":4384,"4401":4400,"4402":4400,"4403":4400,"4404":4400,"4405":4400,"4406":4400,"4407":4400,"4408":4400,"4409":4400,"4410":4400,"4411":4400,"4412":4400,"4413":4400,"4414":4400,"4415":4400,"4417":4416,"4418":4416,"4419":4416,"4420":4416,"4421":4416,"4422":4416,"4423":4416,"4424":4416,"4425":4416,"4426":4416,"4427":4416,"4428":4416,"4429":4416,"4430":4416,"4431":4416,"4433":4432,"4434":4432,"4435":4432,"4436":4432,"4437":4432,"4438":4432,"4439":4432,"4440":4432,"4441":4432,"4442":4432,"4443":4432,"4444":4432,"4445":4432,"4446":4432,"4447":4432,"4449":4448,"4450":4448,"4451":4448,"4452":4448,"4453":4448,"4454":4448,"4455":4448,"4456":4448,"4457":4448,"4458":4448,"4459":4448,"4460":4448,"4461":4448,"4462":4448,"4463":4448,"4465":4464,"4466":4464,"4467":4464,"4468":4464,"4469":4464,"4470":4464,"4471":4464,"4472":4464,"4473":4464,"4474":4464,"4475":4464,"4476":4464,"4477":4464,"4478":4464,"4479":4464,"4481":4480,"4482":4480,"4483":4480,"4484":4480,"4485":4480,"4486":4480,"4487":4480,"4488":4480,"4489":4480,"4490":4480,"4491":4480,"4492":4480,"4493":4480,"4494":4480,"4495":4480,"4497":4496,"4498":4496,"4499":4496,"4500":4496,"4501":4496,"4502":4496,"4503":4496,"4504":4496,"4505":4496,"4506":4496,"4507":4496,"4508":4496,"4509":4496,"4510":4496,"4511":4496,"4513":4512,"4514":4512,"4515":4512,"4516":4512,"4517":4512,"4518":4512,"4519":4512,"4520":4512,"4521":4512,"4522":4512,"4523":4512,"4524":4512,"4525":4512,"4526":4512,"4527":4512,"4529":4528,"4530":4528,"4531":4528,"4532":4528,"4533":4528,"4534":4528,"4535":4528,"4536":4528,"4537":4528,"4538":4528,"4539":4528,"4540":4528,"4541":4528,"4542":4528,"4543":4528,"4545":4544,"4546":4544,"4547":4544,"4548":4544,"4549":4544,"4550":4544,"4551":4544,"4552":4544,"4553":4544,"4554":4544,"4555":4544,"4556":4544,"4557":4544,"4558":4544,"4559":4544,"4561":4560,"4562":4560,"4563":4560,"4564":4560,"4565":4560,"4566":4560,"4567":4560,"4568":4560,"4569":4560,"4570":4560,"4571":4560,"4572":4560,"4573":4560,"4574":4560,"4575":4560,"4577":4576,"4578":4576,"4579":4576,"4580":4576,"4581":4576,"4582":4576,"4583":4576,"4584":4576,"4585":4576,"4586":4576,"4587":4576,"4588":4576,"4589":4576,"4590":4576,"4591":4576,"4593":4592,"4594":4592,"4595":4592,"4596":4592,"4597":4592,"4598":4592,"4599":4592,"4600":4592,"4601":4592,"4602":4592,"4603":4592,"4604":4592,"4605":4592,"4606":4592,"4607":4592,"4609":4608,"4610":4608,"4611":4608,"4612":4608,"4613":4608,"4614":4608,"4615":4608,"4616":4608,"4617":4608,"4618":4608,"4619":4608,"4620":4608,"4621":4608,"4622":4608,"4623":4608,"4625":4624,"4626":4624,"4627":4624,"4628":4624,"4629":4624,"4630":4624,"4631":4624,"4632":4624,"4633":4624,"4634":4624,"4635":4624,"4636":4624,"4637":4624,"4638":4624,"4639":4624,"4641":4640,"4642":4640,"4643":4640,"4644":4640,"4645":4640,"4646":4640,"4647":4640,"4648":4640,"4649":4640,"4650":4640,"4651":4640,"4652":4640,"4653":4640,"4654":4640,"4655":4640,"4657":4656,"4658":4656,"4659":4656,"4660":4656,"4661":4656,"4662":4656,"4663":4656,"4664":4656,"4665":4656,"4666":4656,"4667":4656,"4668":4656,"4669":4656,"4670":4656,"4671":4656,"4673":4672,"4674":4672,"4675":4672,"4676":4672,"4677":4672,"4678":4672,"4679":4672,"4680":4672,"4681":4672,"4682":4672,"4683":4672,"4684":4672,"4685":4672,"4686":4672,"4687":4672,"4689":4688,"4690":4688,"4691":4688,"4692":4688,"4693":4688,"4694":4688,"4695":4688,"4696":4688,"4697":4688,"4698":4688,"4699":4688,"4700":4688,"4701":4688,"4702":4688,"4703":4688,"4705":4704,"4706":4704,"4707":4704,"4708":4704,"4709":4704,"4710":4704,"4711":4704,"4712":4704,"4713":4704,"4714":4704,"4715":4704,"4716":4704,"4717":4704,"4718":4704,"4719":4704,"4721":4720,"4722":4720,"4723":4720,"4724":4720,"4725":4720,"4726":4720,"4727":4720,"4728":4720,"4729":4720,"4730":4720,"4731":4720,"4732":4720,"4733":4720,"4734":4720,"4735":4720,"4737":4736,"4738":4736,"4739":4736,"4740":4736,"4741":4736,"4742":4736,"4743":4736,"4744":4736,"4745":4736,"4746":4736,"4747":4736,"4748":4736,"4749":4736,"4750":4736,"4751":4736,"4753":4752,"4754":4752,"4755":4752,"4756":4752,"4757":4752,"4758":4752,"4759":4752,"4760":4752,"4761":4752,"4762":4752,"4763":4752,"4764":4752,"4765":4752,"4766":4752,"4767":4752,"4769":4768,"4770":4768,"4771":4768,"4772":4768,"4773":4768,"4774":4768,"4775":4768,"4776":4768,"4777":4768,"4778":4768,"4779":4768,"4780":4768,"4781":4768,"4782":4768,"4783":4768,"4785":4784,"4786":4784,"4787":4784,"4788":4784,"4789":4784,"4790":4784,"4791":4784,"4792":4784,"4793":4784,"4794":4784,"4795":4784,"4796":4784,"4797":4784,"4798":4784,"4799":4784,"4801":4800,"4802":4800,"4803":4800,"4804":4800,"4805":4800,"4806":4800,"4807":4800,"4808":4800,"4809":4800,"4810":4800,"4811":4800,"4812":4800,"4813":4800,"4814":4800,"4815":4800,"4817":4816,"4818":4816,"4819":4816,"4820":4816,"4821":4816,"4822":4816,"4823":4816,"4824":4816,"4825":4816,"4826":4816,"4827":4816,"4828":4816,"4829":4816,"4830":4816,"4831":4816,"4833":4832,"4834":4832,"4835":4832,"4836":4832,"4837":4832,"4838":4832,"4839":4832,"4840":4832,"4841":4832,"4842":4832,"4843":4832,"4844":4832,"4845":4832,"4846":4832,"4847":4832,"4849":4848,"4850":4848,"4851":4848,"4852":4848,"4853":4848,"4854":4848,"4855":4848,"4856":4848,"4857":4848,"4858":4848,"4859":4848,"4860":4848,"4861":4848,"4862":4848,"4863":4848,"4865":4864,"4866":4864,"4867":4864,"4868":4864,"4869":4864,"4870":4864,"4871":4864,"4872":4864,"4873":4864,"4874":4864,"4875":4864,"4876":4864,"4877":4864,"4878":4864,"4879":4864,"4881":4880,"4882":4880,"4883":4880,"4884":4880,"4885":4880,"4886":4880,"4887":4880,"4888":4880,"4889":4880,"4890":4880,"4891":4880,"4892":4880,"4893":4880,"4894":4880,"4895":4880,"4897":4896,"4898":4896,"4899":4896,"4900":4896,"4901":4896,"4902":4896,"4903":4896,"4904":4896,"4905":4896,"4906":4896,"4907":4896,"4908":4896,"4909":4896,"4910":4896,"4911":4896,"4913":4912,"4914":4912,"4915":4912,"4916":4912,"4917":4912,"4918":4912,"4919":4912,"4920":4912,"4921":4912,"4922":4912,"4923":4912,"4924":4912,"4925":4912,"4926":4912,"4927":4912,"4929":4928,"4930":4928,"4931":4928,"4932":4928,"4933":4928,"4934":4928,"4935":4928,"4936":4928,"4937":4928,"4938":4928,"4939":4928,"4940":4928,"4941":4928,"4942":4928,"4943":4928,"4945":4944,"4946":4944,"4947":4944,"4948":4944,"4949":4944,"4950":4944,"4951":4944,"4952":4944,"4953":4944,"4954":4944,"4955":4944,"4956":4944,"4957":4944,"4958":4944,"4959":4944,"4961":4960,"4962":4960,"4963":4960,"4964":4960,"4965":4960,"4966":4960,"4967":4960,"4968":4960,"4969":4960,"4970":4960,"4971":4960,"4972":4960,"4973":4960,"4974":4960,"4975":4960,"4977":4976,"4978":4976,"4979":4976,"4980":4976,"4981":4976,"4982":4976,"4983":4976,"4984":4976,"4985":4976,"4986":4976,"4987":4976,"4988":4976,"4989":4976,"4990":4976,"4991":4976,"4993":4992,"4994":4992,"4995":4992,"4996":4992,"4997":4992,"4998":4992,"4999":4992,"5000":4992,"5001":4992,"5002":4992,"5003":4992,"5004":4992,"5005":4992,"5006":4992,"5007":4992,"5009":5008,"5010":5008,"5011":5008,"5012":5008,"5013":5008,"5014":5008,"5015":5008,"5016":5008,"5017":5008,"5018":5008,"5019":5008,"5020":5008,"5021":5008,"5022":5008,"5023":5008,"5025":5024,"5026":5024,"5027":5024,"5028":5024,"5029":5024,"5030":5024,"5031":5024,"5032":5024,"5033":5024,"5034":5024,"5035":5024,"5036":5024,"5037":5024,"5038":5024,"5039":5024,"5041":5040,"5042":5040,"5043":5040,"5044":5040,"5045":5040,"5046":5040,"5047":5040,"5048":5040,"5049":5040,"5050":5040,"5051":5040,"5052":5040,"5053":5040,"5054":5040,"5055":5040,"5057":5056,"5058":5056,"5059":5056,"5060":5056,"5061":5056,"5062":5056,"5063":5056,"5064":5056,"5065":5056,"5066":5056,"5067":5056,"5068":5056,"5069":5056,"5070":5056,"5071":5056,"5073":5072,"5074":5072,"5075":5072,"5076":5072,"5077":5072,"5078":5072,"5079":5072,"5080":5072,"5081":5072,"5082":5072,"5083":5072,"5084":5072,"5085":5072,"5086":5072,"5087":5072,"5089":5088,"5090":5088,"5091":5088,"5092":5088,"5093":5088,"5094":5088,"5095":5088,"5096":5088,"5097":5088,"5098":5088,"5099":5088,"5100":5088,"5101":5088,"5102":5088,"5103":5088,"5105":5104,"5106":5104,"5107":5104,"5108":5104,"5109":5104,"5110":5104,"5111":5104,"5112":5104,"5113":5104,"5114":5104,"5115":5104,"5116":5104,"5117":5104,"5118":5104,"5119":5104,"5121":5120,"5122":5120,"5123":5120,"5124":5120,"5125":5120,"5126":5120,"5127":5120,"5128":5120,"5129":5120,"5130":5120,"5131":5120,"5132":5120,"5133":5120,"5134":5120,"5135":5120,"5137":5136,"5138":5136,"5139":5136,"5140":5136,"5141":5136,"5142":5136,"5143":5136,"5144":5136,"5145":5136,"5146":5136,"5147":5136,"5148":5136,"5149":5136,"5150":5136,"5151":5136,"5153":5152,"5154":5152,"5155":5152,"5156":5152,"5157":5152,"5158":5152,"5159":5152,"5160":5152,"5161":5152,"5162":5152,"5163":5152,"5164":5152,"5165":5152,"5166":5152,"5167":5152,"5169":5168,"5170":5168,"5171":5168,"5172":5168,"5173":5168,"5174":5168,"5175":5168,"5176":5168,"5177":5168,"5178":5168,"5179":5168,"5180":5168,"5181":5168,"5182":5168,"5183":5168,"5185":5184,"5186":5184,"5187":5184,"5188":5184,"5189":5184,"5190":5184,"5191":5184,"5192":5184,"5193":5184,"5194":5184,"5195":5184,"5196":5184,"5197":5184,"5198":5184,"5199":5184,"5201":5200,"5202":5200,"5203":5200,"5204":5200,"5205":5200,"5206":5200,"5207":5200,"5208":5200,"5209":5200,"5210":5200,"5211":5200,"5212":5200,"5213":5200,"5214":5200,"5215":5200,"5217":5216,"5218":5216,"5219":5216,"5220":5216,"5221":5216,"5222":5216,"5223":5216,"5224":5216,"5225":5216,"5226":5216,"5227":5216,"5228":5216,"5229":5216,"5230":5216,"5231":5216,"5233":5232,"5234":5232,"5235":5232,"5236":5232,"5237":5232,"5238":5232,"5239":5232,"5240":5232,"5241":5232,"5242":5232,"5243":5232,"5244":5232,"5245":5232,"5246":5232,"5247":5232,"5249":5248,"5250":5248,"5251":5248,"5252":5248,"5253":5248,"5254":5248,"5255":5248,"5256":5248,"5257":5248,"5258":5248,"5259":5248,"5260":5248,"5261":5248,"5262":5248,"5263":5248,"5265":5264,"5266":5264,"5267":5264,"5268":5264,"5269":5264,"5270":5264,"5271":5264,"5272":5264,"5273":5264,"5274":5264,"5275":5264,"5276":5264,"5277":5264,"5278":5264,"5279":5264,"5281":5280,"5282":5280,"5283":5280,"5284":5280,"5285":5280,"5286":5280,"5287":5280,"5288":5280,"5289":5280,"5290":5280,"5291":5280,"5292":5280,"5293":5280,"5294":5280,"5295":5280,"5297":5296,"5298":5296,"5299":5296,"5300":5296,"5301":5296,"5302":5296,"5303":5296,"5304":5296,"5305":5296,"5306":5296,"5307":5296,"5308":5296,"5309":5296,"5310":5296,"5311":5296,"5313":5312,"5314":5312,"5315":5312,"5316":5312,"5317":5312,"5318":5312,"5319":5312,"5320":5312,"5321":5312,"5322":5312,"5323":5312,"5324":5312,"5325":5312,"5326":5312,"5327":5312,"5329":5328,"5330":5328,"5331":5328,"5332":5328,"5333":5328,"5334":5328,"5335":5328,"5336":5328,"5337":5328,"5338":5328,"5339":5328,"5340":5328,"5341":5328,"5342":5328,"5343":5328,"5345":5344,"5346":5344,"5347":5344,"5348":5344,"5349":5344,"5350":5344,"5351":5344,"5352":5344,"5353":5344,"5354":5344,"5355":5344,"5356":5344,"5357":5344,"5358":5344,"5359":5344,"5361":5360,"5362":5360,"5363":5360,"5364":5360,"5365":5360,"5366":5360,"5367":5360,"5368":5360,"5369":5360,"5370":5360,"5371":5360,"5372":5360,"5373":5360,"5374":5360,"5375":5360,"5377":5376,"5378":5376,"5379":5376,"5380":5376,"5381":5376,"5382":5376,"5383":5376,"5384":5376,"5385":5376,"5386":5376,"5387":5376,"5388":5376,"5389":5376,"5390":5376,"5391":5376,"5393":5392,"5394":5392,"5395":5392,"5396":5392,"5397":5392,"5398":5392,"5399":5392,"5400":5392,"5401":5392,"5402":5392,"5403":5392,"5404":5392,"5405":5392,"5406":5392,"5407":5392,"5409":5408,"5410":5408,"5411":5408,"5412":5408,"5413":5408,"5414":5408,"5415":5408,"5416":5408,"5417":5408,"5418":5408,"5419":5408,"5420":5408,"5421":5408,"5422":5408,"5423":5408,"5425":5424,"5426":5424,"5427":5424,"5428":5424,"5429":5424,"5430":5424,"5431":5424,"5432":5424,"5433":5424,"5434":5424,"5435":5424,"5436":5424,"5437":5424,"5438":5424,"5439":5424,"5441":5440,"5442":5440,"5443":5440,"5444":5440,"5445":5440,"5446":5440,"5447":5440,"5448":5440,"5449":5440,"5450":5440,"5451":5440,"5452":5440,"5453":5440,"5454":5440,"5455":5440,"5457":5456,"5458":5456,"5459":5456,"5460":5456,"5461":5456,"5462":5456,"5463":5456,"5464":5456,"5465":5456,"5466":5456,"5467":5456,"5468":5456,"5469":5456,"5470":5456,"5471":5456,"5473":5472,"5474":5472,"5475":5472,"5476":5472,"5477":5472,"5478":5472,"5479":5472,"5480":5472,"5481":5472,"5482":5472,"5483":5472,"5484":5472,"5485":5472,"5486":5472,"5487":5472,"5489":5488,"5490":5488,"5491":5488,"5492":5488,"5493":5488,"5494":5488,"5495":5488,"5496":5488,"5497":5488,"5498":5488,"5499":5488,"5500":5488,"5501":5488,"5502":5488,"5503":5488,"5505":5504,"5506":5504,"5507":5504,"5508":5504,"5509":5504,"5510":5504,"5511":5504,"5512":5504,"5513":5504,"5514":5504,"5515":5504,"5516":5504,"5517":5504,"5518":5504,"5519":5504,"5521":5520,"5522":5520,"5523":5520,"5524":5520,"5525":5520,"5526":5520,"5527":5520,"5528":5520,"5529":5520,"5530":5520,"5531":5520,"5532":5520,"5533":5520,"5534":5520,"5535":5520,"5537":5536,"5538":5536,"5539":5536,"5540":5536,"5541":5536,"5542":5536,"5543":5536,"5544":5536,"5545":5536,"5546":5536,"5547":5536,"5548":5536,"5549":5536,"5550":5536,"5551":5536,"5553":5552,"5554":5552,"5555":5552,"5556":5552,"5557":5552,"5558":5552,"5559":5552,"5560":5552,"5561":5552,"5562":5552,"5563":5552,"5564":5552,"5565":5552,"5566":5552,"5567":5552,"5569":5568,"5570":5568,"5571":5568,"5572":5568,"5573":5568,"5574":5568,"5575":5568,"5576":5568,"5577":5568,"5578":5568,"5579":5568,"5580":5568,"5581":5568,"5582":5568,"5583":5568,"5585":5584,"5586":5584,"5587":5584,"5588":5584,"5589":5584,"5590":5584,"5591":5584,"5592":5584,"5593":5584,"5594":5584,"5595":5584,"5596":5584,"5597":5584,"5598":5584,"5599":5584,"5601":5600,"5602":5600,"5603":5600,"5604":5600,"5605":5600,"5606":5600,"5607":5600,"5608":5600,"5609":5600,"5610":5600,"5611":5600,"5612":5600,"5613":5600,"5614":5600,"5615":5600,"5617":5616,"5618":5616,"5619":5616,"5620":5616,"5621":5616,"5622":5616,"5623":5616,"5624":5616,"5625":5616,"5626":5616,"5627":5616,"5628":5616,"5629":5616,"5630":5616,"5631":5616,"5633":5632,"5634":5632,"5635":5632,"5636":5632,"5637":5632,"5638":5632,"5639":5632,"5640":5632,"5641":5632,"5642":5632,"5643":5632,"5644":5632,"5645":5632,"5646":5632,"5647":5632,"5649":5648,"5650":5648,"5651":5648,"5652":5648,"5653":5648,"5654":5648,"5655":5648,"5656":5648,"5657":5648,"5658":5648,"5659":5648,"5660":5648,"5661":5648,"5662":5648,"5663":5648,"5665":5664,"5666":5664,"5667":5664,"5668":5664,"5669":5664,"5670":5664,"5671":5664,"5672":5664,"5673":5664,"5674":5664,"5675":5664,"5676":5664,"5677":5664,"5678":5664,"5679":5664,"5681":5680,"5682":5680,"5683":5680,"5684":5680,"5685":5680,"5686":5680,"5687":5680,"5688":5680,"5689":5680,"5690":5680,"5691":5680,"5692":5680,"5693":5680,"5694":5680,"5695":5680,"5697":5696,"5698":5696,"5699":5696,"5700":5696,"5701":5696,"5702":5696,"5703":5696,"5704":5696,"5705":5696,"5706":5696,"5707":5696,"5708":5696,"5709":5696,"5710":5696,"5711":5696,"5713":5712,"5714":5712,"5715":5712,"5716":5712,"5717":5712,"5718":5712,"5719":5712,"5720":5712,"5721":5712,"5722":5712,"5723":5712,"5724":5712,"5725":5712,"5726":5712,"5727":5712,"5729":5728,"5730":5728,"5731":5728,"5732":5728,"5733":5728,"5734":5728,"5735":5728,"5736":5728,"5737":5728,"5738":5728,"5739":5728,"5740":5728,"5741":5728,"5742":5728,"5743":5728,"5745":5744,"5746":5744,"5747":5744,"5748":5744,"5749":5744,"5750":5744,"5751":5744,"5752":5744,"5753":5744,"5754":5744,"5755":5744,"5756":5744,"5757":5744,"5758":5744,"5759":5744,"5761":5760,"5762":5760,"5763":5760,"5764":5760,"5765":5760,"5766":5760,"5767":5760,"5768":5760,"5769":5760,"5770":5760,"5771":5760,"5772":5760,"5773":5760,"5774":5760,"5775":5760,"5777":5776,"5778":5776,"5779":5776,"5780":5776,"5781":5776,"5782":5776,"5783":5776,"5784":5776,"5785":5776,"5786":5776,"5787":5776,"5788":5776,"5789":5776,"5790":5776,"5791":5776,"5793":5792,"5794":5792,"5795":5792,"5796":5792,"5797":5792,"5798":5792,"5799":5792,"5800":5792,"5801":5792,"5802":5792,"5803":5792,"5804":5792,"5805":5792,"5806":5792,"5807":5792,"5809":5808,"5810":5808,"5811":5808,"5812":5808,"5813":5808,"5814":5808,"5815":5808,"5816":5808,"5817":5808,"5818":5808,"5819":5808,"5820":5808,"5821":5808,"5822":5808,"5823":5808,"5825":5824,"5826":5824,"5827":5824,"5828":5824,"5829":5824,"5830":5824,"5831":5824,"5832":5824,"5833":5824,"5834":5824,"5835":5824,"5836":5824,"5837":5824,"5838":5824,"5839":5824,"5841":5840,"5842":5840,"5843":5840,"5844":5840,"5845":5840,"5846":5840,"5847":5840,"5848":5840,"5849":5840,"5850":5840,"5851":5840,"5852":5840,"5853":5840,"5854":5840,"5855":5840,"5857":5856,"5858":5856,"5859":5856,"5860":5856,"5861":5856,"5862":5856,"5863":5856,"5864":5856,"5865":5856,"5866":5856,"5867":5856,"5868":5856,"5869":5856,"5870":5856,"5871":5856,"5873":5872,"5874":5872,"5875":5872,"5876":5872,"5877":5872,"5878":5872,"5879":5872,"5880":5872,"5881":5872,"5882":5872,"5883":5872,"5884":5872,"5885":5872,"5886":5872,"5887":5872,"5889":5888,"5890":5888,"5891":5888,"5892":5888,"5893":5888,"5894":5888,"5895":5888,"5896":5888,"5897":5888,"5898":5888,"5899":5888,"5900":5888,"5901":5888,"5902":5888,"5903":5888,"5905":5904,"5906":5904,"5907":5904,"5908":5904,"5909":5904,"5910":5904,"5911":5904,"5912":5904,"5913":5904,"5914":5904,"5915":5904,"5916":5904,"5917":5904,"5918":5904,"5919":5904,"5921":5920,"5922":5920,"5923":5920,"5924":5920,"5925":5920,"5926":5920,"5927":5920,"5928":5920,"5929":5920,"5930":5920,"5931":5920,"5932":5920,"5933":5920,"5934":5920,"5935":5920,"5937":5936,"5938":5936,"5939":5936,"5940":5936,"5941":5936,"5942":5936,"5943":5936,"5944":5936,"5945":5936,"5946":5936,"5947":5936,"5948":5936,"5949":5936,"5950":5936,"5951":5936,"5953":5952,"5954":5952,"5955":5952,"5956":5952,"5957":5952,"5958":5952,"5959":5952,"5960":5952,"5961":5952,"5962":5952,"5963":5952,"5964":5952,"5965":5952,"5966":5952,"5967":5952,"5969":5968,"5970":5968,"5971":5968,"5972":5968,"5973":5968,"5974":5968,"5975":5968,"5976":5968,"5977":5968,"5978":5968,"5979":5968,"5980":5968,"5981":5968,"5982":5968,"5983":5968,"5985":5984,"5986":5984,"5987":5984,"5988":5984,"5989":5984,"5990":5984,"5991":5984,"5992":5984,"5993":5984,"5994":5984,"5995":5984,"5996":5984,"5997":5984,"5998":5984,"5999":5984,"6001":6000,"6002":6000,"6003":6000,"6004":6000,"6005":6000,"6006":6000,"6007":6000,"6008":6000,"6009":6000,"6010":6000,"6011":6000,"6012":6000,"6013":6000,"6014":6000,"6015":6000,"6017":6016,"6018":6016,"6019":6016,"6020":6016,"6021":6016,"6022":6016,"6023":6016,"6024":6016,"6025":6016,"6026":6016,"6027":6016,"6028":6016,"6029":6016,"6030":6016,"6031":6016,"6033":6032,"6034":6032,"6035":6032,"6036":6032,"6037":6032,"6038":6032,"6039":6032,"6040":6032,"6041":6032,"6042":6032,"6043":6032,"6044":6032,"6045":6032,"6046":6032,"6047":6032,"6049":6048,"6050":6048,"6051":6048,"6052":6048,"6053":6048,"6054":6048,"6055":6048,"6056":6048,"6057":6048,"6058":6048,"6059":6048,"6060":6048,"6061":6048,"6062":6048,"6063":6048,"6065":6064,"6066":6064,"6067":6064,"6068":6064,"6069":6064,"6070":6064,"6071":6064,"6072":6064,"6073":6064,"6074":6064,"6075":6064,"6076":6064,"6077":6064,"6078":6064,"6079":6064,"6081":6080,"6082":6080,"6083":6080,"6084":6080,"6085":6080,"6086":6080,"6087":6080,"6088":6080,"6089":6080,"6090":6080,"6091":6080,"6092":6080,"6093":6080,"6094":6080,"6095":6080,"6097":6096,"6098":6096,"6099":6096,"6100":6096,"6101":6096,"6102":6096,"6103":6096,"6104":6096,"6105":6096,"6106":6096,"6107":6096,"6108":6096,"6109":6096,"6110":6096,"6111":6096,"6113":6112,"6114":6112,"6115":6112,"6116":6112,"6117":6112,"6118":6112,"6119":6112,"6120":6112,"6121":6112,"6122":6112,"6123":6112,"6124":6112,"6125":6112,"6126":6112,"6127":6112,"6129":6128,"6130":6128,"6131":6128,"6132":6128,"6133":6128,"6134":6128,"6135":6128,"6136":6128,"6137":6128,"6138":6128,"6139":6128,"6140":6128,"6141":6128,"6142":6128,"6143":6128,"6145":6144,"6146":6144,"6147":6144,"6148":6144,"6149":6144,"6150":6144,"6151":6144,"6152":6144,"6153":6144,"6154":6144,"6155":6144,"6156":6144,"6157":6144,"6158":6144,"6159":6144,"6181":6176,"6182":6176,"6183":6176,"6184":6176,"6185":6176,"6186":6176,"6187":6176,"6188":6176,"6189":6176,"6190":6176,"6191":6176,"6197":6192,"6198":6192,"6199":6192,"6205":6192,"6206":6192,"6207":6192,"6213":6208,"6214":6208,"6215":6208,"6221":6208,"6222":6208,"6223":6208,"6229":6208,"6230":6208,"6231":6208,"6237":6208,"6238":6208,"6239":6208,"6273":6248,"6275":6248,"6277":6248,"6279":6248,"6281":6248,"6283":6248,"6285":6248,"6287":6248,"6305":6304,"6306":6304,"6307":6304,"6308":6304,"6309":6304,"6310":6304,"6311":6304,"6312":6304,"6313":6304,"6314":6304,"6315":6304,"6316":6304,"6317":6304,"6318":6304,"6319":6304,"6326":6320,"6327":6320,"6334":6320,"6335":6320,"6342":6336,"6343":6336,"6350":6336,"6351":6336,"6358":6352,"6359":6352,"6366":6352,"6367":6352,"6374":6368,"6375":6368,"6382":6368,"6383":6368,"6390":6384,"6391":6384,"6398":6384,"6399":6384,"6482":6480,"6483":6480,"6484":6480,"6485":6480,"6486":6480,"6487":6480,"6488":6480,"6489":6480,"6490":6480,"6491":6480,"6492":6480,"6493":6480,"6494":6480,"6495":6480,"6498":6496,"6499":6496,"6500":6496,"6501":6496,"6502":6496,"6503":6496,"6504":6496,"6505":6496,"6506":6496,"6507":6496,"6508":6496,"6509":6496,"6510":6496,"6511":6496,"6514":6512,"6515":6512,"6516":6512,"6517":6512,"6518":6512,"6519":6512,"6520":6512,"6521":6512,"6522":6512,"6523":6512,"6524":6512,"6525":6512,"6526":6512,"6527":6512,"6530":6528,"6531":6528,"6532":6528,"6533":6528,"6534":6528,"6535":6528,"6536":6528,"6537":6528,"6538":6528,"6539":6528,"6540":6528,"6541":6528,"6542":6528,"6543":6528,"6546":6544,"6547":6544,"6548":6544,"6549":6544,"6550":6544,"6551":6544,"6552":6544,"6553":6544,"6554":6544,"6555":6544,"6556":6544,"6557":6544,"6558":6544,"6559":6544,"6564":6562,"6565":6562,"6566":6562,"6567":6562,"6568":6562,"6569":6562,"6570":6562,"6571":6562,"6572":6562,"6573":6562,"6574":6562,"6575":6562,"6584":6580,"6585":6580,"6586":6580,"6587":6580,"6588":6580,"6589":6580,"6590":6580,"6591":6580,"6657":6656,"6658":6656,"6659":6656,"6660":6656,"6661":6656,"6662":6656,"6663":6656,"6664":6656,"6665":6656,"6666":6656,"6667":6656,"6668":6656,"6669":6656,"6670":6656,"6671":6656,"6694":6688,"6695":6688,"6702":6688,"6703":6688,"6705":6704,"6706":6704,"6707":6704,"6708":6704,"6709":6704,"6710":6704,"6711":6704,"6713":6704,"6714":6704,"6715":6704,"6716":6704,"6717":6704,"6718":6704,"6719":6704,"6760":6752,"6761":6753,"6762":6754,"6763":6755,"6764":6756,"6765":6757,"6766":6758,"6767":6759,"6776":6768,"6777":6769,"6778":6770,"6779":6771,"6780":6772,"6792":6787,"6793":6787,"6794":6787,"6795":6787,"6796":6787,"6797":6787,"6798":6787,"6799":6787,"6808":6803,"6809":6803,"6810":6803,"6811":6803,"6812":6803,"6813":6803,"6814":6803,"6815":6803,"6824":6819,"6825":6819,"6826":6819,"6827":6819,"6828":6819,"6829":6819,"6830":6819,"6831":6819,"6840":6835,"6841":6835,"6842":6835,"6843":6835,"6844":6835,"6845":6835,"6846":6835,"6847":6835,"6856":6851,"6857":6851,"6858":6851,"6859":6851,"6860":6851,"6861":6851,"6862":6851,"6863":6851,"6872":6867,"6873":6867,"6874":6867,"6875":6867,"6876":6867,"6877":6867,"6878":6867,"6879":6867,"6888":6883,"6889":6883,"6890":6883,"6891":6883,"6892":6883,"6893":6883,"6894":6883,"6895":6883,"6904":6899,"6905":6899,"6906":6899,"6907":6899,"6908":6899,"6909":6899,"6910":6899,"6911":6899,"6920":6915,"6921":6915,"6922":6915,"6923":6915,"6924":6915,"6925":6915,"6926":6915,"6927":6915,"6936":6931,"6937":6931,"6938":6931,"6939":6931,"6940":6931,"6941":6931,"6942":6931,"6943":6931,"6952":6947,"6953":6947,"6954":6947,"6955":6947,"6956":6947,"6957":6947,"6958":6947,"6959":6947,"6968":6963,"6969":6963,"6970":6963,"6971":6963,"6972":6963,"6973":6963,"6974":6963,"6975":6963,"6992":6994,"6993":6994,"6998":6994,"6999":6994,"7000":6994,"7001":6994,"7002":6994,"7003":6994,"7004":6994,"7005":6994,"7006":6994,"7007":6994,"7009":7008,"7010":7008,"7011":7008,"7012":7008,"7013":7008,"7014":7008,"7015":7008,"7016":7008,"7017":7008,"7018":7008,"7019":7008,"7020":7008,"7021":7008,"7022":7008,"7023":7008,"7032":7027,"7033":7027,"7034":7027,"7035":7027,"7036":7027,"7037":7027,"7038":7027,"7039":7027,"7048":7043,"7049":7043,"7050":7043,"7051":7043,"7052":7043,"7053":7043,"7054":7043,"7055":7043,"7072":7074,"7073":7074,"7078":7074,"7079":7074,"7080":7074,"7081":7074,"7082":7074,"7083":7074,"7084":7074,"7085":7074,"7086":7074,"7087":7074,"7104":7106,"7105":7106,"7110":7106,"7111":7106,"7112":7106,"7113":7106,"7114":7106,"7115":7106,"7116":7106,"7117":7106,"7118":7106,"7119":7106,"7136":7138,"7137":7138,"7142":7138,"7143":7138,"7144":7138,"7145":7138,"7146":7138,"7147":7138,"7148":7138,"7149":7138,"7150":7138,"7151":7138,"7168":7170,"7169":7170,"7174":7170,"7175":7170,"7176":7170,"7177":7170,"7178":7170,"7179":7170,"7180":7170,"7181":7170,"7182":7170,"7183":7170,"7192":7186,"7193":7186,"7194":7186,"7195":7186,"7196":7186,"7197":7186,"7198":7186,"7199":7186,"7216":7218,"7217":7218,"7222":7218,"7223":7218,"7224":7218,"7225":7218,"7226":7218,"7227":7218,"7228":7218,"7229":7218,"7230":7218,"7231":7218,"7248":7250,"7249":7250,"7254":7250,"7255":7250,"7256":7250,"7257":7250,"7258":7250,"7259":7250,"7260":7250,"7261":7250,"7262":7250,"7263":7250,"7264":7250,"7265":7250,"7270":7250,"7271":7250,"7272":7250,"7273":7250,"7274":7250,"7275":7250,"7276":7250,"7277":7250,"7278":7250,"7279":7250,"7297":7296,"7298":7296,"7299":7296,"7300":7296,"7301":7296,"7302":7296,"7303":7296,"7304":7296,"7305":7296,"7306":7296,"7307":7296,"7308":7296,"7309":7296,"7310":7296,"7311":7296,"7334":7328,"7335":7328,"7342":7328,"7343":7328,"7348":7346,"7349":7346,"7350":7346,"7351":7346,"7352":7346,"7353":7346,"7354":7346,"7355":7346,"7356":7346,"7357":7346,"7358":7346,"7359":7346,"7396":7392,"7397":7392,"7398":7392,"7399":7392,"7400":7392,"7401":7392,"7402":7392,"7403":7392,"7404":7392,"7405":7392,"7406":7392,"7407":7392,"7410":7408,"7411":7408,"7412":7408,"7413":7408,"7414":7408,"7415":7408,"7416":7408,"7417":7408,"7418":7408,"7419":7408,"7420":7408,"7421":7408,"7422":7408,"7423":7408,"7478":7472,"7479":7472,"7486":7472,"7487":7472,"7504":7218,"7505":7218,"7510":7218,"7511":7218,"7512":7218,"7513":7218,"7514":7218,"7515":7218,"7516":7218,"7517":7218,"7518":7218,"7519":7218}} \ No newline at end of file From f323e3c43ff26d1a13450a1cad4c11be48ff6bcc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 05:21:16 +0000 Subject: [PATCH 018/692] BlockStateSerializer can now serialize all currently implemented PM blocks --- .../blockstate/BlockStateDeserializer.php | 16 +- .../bedrock/blockstate/BlockStateReader.php | 1 + .../blockstate/BlockStateSerializer.php | 4163 +++++------------ .../blockstate/BlockStateSerializerHelper.php | 269 ++ .../bedrock/blockstate/BlockStateWriter.php | 19 + 5 files changed, 1346 insertions(+), 3122 deletions(-) create mode 100644 src/data/bedrock/blockstate/BlockStateSerializerHelper.php diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index cc7e30193..47d95eabf 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -37,6 +37,7 @@ use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; +use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use function array_key_exists; use function min; @@ -2499,10 +2500,21 @@ final class BlockStateDeserializer{ } /** @throws BlockStateDeserializeException */ - public function deserialize(string $id, CompoundTag $blockState) : Block{ + public function deserialize(CompoundTag $blockState) : Block{ + try{ + $id = $blockState->getString("name"); + $states = $blockState->getCompoundTag("states"); + }catch(NbtException $e){ + throw new BlockStateDeserializeException("Error reading blockstate NBT: " . $e->getMessage(), 0, $e); + } + + if($states === null){ + throw new BlockStateDeserializeException("\"states\" tag must always be present, even if it has no data"); + } + if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); } - return $this->deserializeFuncs[$id](new BlockStateReader($blockState)); + return $this->deserializeFuncs[$id](new BlockStateReader($states)); } } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 21537e452..f8ecf046a 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; +use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 3bb3ab866..3ddfc58f1 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -23,9 +23,129 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; +use pocketmine\block\ActivatorRail; +use pocketmine\block\Anvil; +use pocketmine\block\Bamboo; +use pocketmine\block\BambooSapling; +use pocketmine\block\Barrel; +use pocketmine\block\Bed; +use pocketmine\block\Beetroot; +use pocketmine\block\Bell; use pocketmine\block\Block; +use pocketmine\block\BlockLegacyMetadata; +use pocketmine\block\BoneBlock; +use pocketmine\block\BrewingStand; +use pocketmine\block\BrownMushroomBlock; +use pocketmine\block\Cactus; +use pocketmine\block\Cake; +use pocketmine\block\Carpet; +use pocketmine\block\Carrot; +use pocketmine\block\CarvedPumpkin; +use pocketmine\block\ChemistryTable; +use pocketmine\block\Chest; +use pocketmine\block\CocoaBlock; +use pocketmine\block\Concrete; +use pocketmine\block\ConcretePowder; +use pocketmine\block\Coral; +use pocketmine\block\CoralBlock; +use pocketmine\block\DaylightSensor; +use pocketmine\block\DetectorRail; +use pocketmine\block\Dirt; +use pocketmine\block\Door; +use pocketmine\block\DoublePlant; +use pocketmine\block\DoubleTallGrass; +use pocketmine\block\DyedShulkerBox; +use pocketmine\block\EnderChest; +use pocketmine\block\EndPortalFrame; +use pocketmine\block\EndRod; +use pocketmine\block\Farmland; +use pocketmine\block\FenceGate; +use pocketmine\block\Fire; +use pocketmine\block\FloorBanner; +use pocketmine\block\FloorCoralFan; +use pocketmine\block\FloorSign; +use pocketmine\block\FrostedIce; +use pocketmine\block\Furnace; +use pocketmine\block\GlazedTerracotta; +use pocketmine\block\HayBale; +use pocketmine\block\Hopper; +use pocketmine\block\ItemFrame; +use pocketmine\block\Ladder; +use pocketmine\block\Lantern; +use pocketmine\block\Lava; +use pocketmine\block\Leaves; +use pocketmine\block\Lectern; +use pocketmine\block\Lever; +use pocketmine\block\LitPumpkin; +use pocketmine\block\Log; +use pocketmine\block\Loom; +use pocketmine\block\MelonStem; +use pocketmine\block\NetherPortal; +use pocketmine\block\NetherWartPlant; +use pocketmine\block\Potato; +use pocketmine\block\PoweredRail; +use pocketmine\block\PumpkinStem; +use pocketmine\block\Rail; +use pocketmine\block\RedMushroomBlock; +use pocketmine\block\RedstoneComparator; +use pocketmine\block\RedstoneLamp; +use pocketmine\block\RedstoneOre; +use pocketmine\block\RedstoneRepeater; +use pocketmine\block\RedstoneTorch; +use pocketmine\block\RedstoneWire; +use pocketmine\block\Sapling; +use pocketmine\block\SeaPickle; +use pocketmine\block\SimplePillar; +use pocketmine\block\Skull; +use pocketmine\block\Slab; +use pocketmine\block\SnowLayer; +use pocketmine\block\Sponge; +use pocketmine\block\StainedGlass; +use pocketmine\block\StainedGlassPane; +use pocketmine\block\StainedHardenedClay; +use pocketmine\block\StainedHardenedGlass; +use pocketmine\block\StainedHardenedGlassPane; +use pocketmine\block\Stair; +use pocketmine\block\StoneButton; +use pocketmine\block\StonePressurePlate; +use pocketmine\block\Sugarcane; +use pocketmine\block\SweetBerryBush; +use pocketmine\block\TNT; +use pocketmine\block\Torch; +use pocketmine\block\Trapdoor; +use pocketmine\block\TrappedChest; +use pocketmine\block\Tripwire; +use pocketmine\block\TripwireHook; +use pocketmine\block\UnderwaterTorch; +use pocketmine\block\utils\BrewingStandSlot; +use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\LeverFacing; use pocketmine\block\VanillaBlocks; +use pocketmine\block\Vine; +use pocketmine\block\Wall; +use pocketmine\block\WallBanner; +use pocketmine\block\WallCoralFan; +use pocketmine\block\WallSign; +use pocketmine\block\Water; +use pocketmine\block\WeightedPressurePlateHeavy; +use pocketmine\block\WeightedPressurePlateLight; +use pocketmine\block\Wheat; +use pocketmine\block\Wood; +use pocketmine\block\WoodenButton; +use pocketmine\block\WoodenDoor; +use pocketmine\block\WoodenPressurePlate; +use pocketmine\block\WoodenStairs; +use pocketmine\block\WoodenTrapdoor; +use pocketmine\block\Wool; +use pocketmine\data\bedrock\blockstate\BlockStateSerializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateWriter as Writer; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; +use pocketmine\math\Axis; +use pocketmine\math\Facing; +use pocketmine\nbt\tag\CompoundTag; +use pocketmine\utils\AssumptionFailedError; +use function class_parents; use function get_class; final class BlockStateSerializer{ @@ -34,3135 +154,938 @@ final class BlockStateSerializer{ * describe the bottom type of a type hierarchy only containing Block. * * @var \Closure[][] - * @phpstan-var array> + * @phpstan-var array> */ private array $serializers = []; /** * @phpstan-template TBlockType of Block - * @phpstan-param TBlockType $block - * @phpstan-param \Closure(TBlockType) : BlockStateWriter $serializer + * @phpstan-param TBlockType $block + * @phpstan-param \Closure(TBlockType) : Writer $serializer */ - private function map(Block $block, \Closure $serializer) : void{ + public function map(Block $block, \Closure $serializer) : void{ + if(isset($this->serializers[$block->getTypeId()])){ + //TODO: REMOVE ME + throw new AssumptionFailedError("Registering the same block twice!"); + } $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; } + /** + * @phpstan-template TBlockType of Block + * @phpstan-param TBlockType $blockState + */ + public function serialize(Block $blockState) : CompoundTag{ + $typeId = $blockState->getTypeId(); + + $locatedSerializer = $this->serializers[$typeId][get_class($blockState)] ?? null; + if($locatedSerializer === null){ + $parents = class_parents($blockState); + if($parents === false){ + throw new AssumptionFailedError("A block class should always have at least one parent"); + } + foreach($parents as $parent){ + if(isset($this->serializers[$typeId][$parent])){ + $locatedSerializer = $this->serializers[$typeId][$parent]; + break; + } + } + } + + if($locatedSerializer === null){ + throw new BlockStateSerializeException("No serializer registered for " . get_class($blockState) . " with type ID $typeId"); + } + + /** + * @var \Closure $serializer + * @phpstan-var \Closure(TBlockType) : Writer $serializer + */ + $serializer = $locatedSerializer; + + /** @var Writer $writer */ + $writer = $serializer($blockState); + return $writer->writeBlockStateNbt(); + } + public function __construct(){ - $this->map(VanillaBlocks::AIR(), fn() => new BlockStateWriter(Ids::AIR)); - $this->map(VanillaBlocks::BARRIER(), fn() => new BlockStateWriter(Ids::BARRIER)); - $this->map(VanillaBlocks::BEACON(), fn() => new BlockStateWriter(Ids::BEACON)); - $this->map(VanillaBlocks::BLUE_ICE(), fn() => new BlockStateWriter(Ids::BLUE_ICE)); - $this->map(VanillaBlocks::BOOKSHELF(), fn() => new BlockStateWriter(Ids::BOOKSHELF)); - $this->map(VanillaBlocks::BRICKS(), fn() => new BlockStateWriter(Ids::BRICK_BLOCK)); - $this->map(VanillaBlocks::BROWN_MUSHROOM(), fn() => new BlockStateWriter(Ids::BROWN_MUSHROOM)); - $this->map(VanillaBlocks::CHEMICAL_HEAT(), fn() => new BlockStateWriter(Ids::CHEMICAL_HEAT)); - $this->map(VanillaBlocks::CLAY(), fn() => new BlockStateWriter(Ids::CLAY)); - $this->map(VanillaBlocks::COAL(), fn() => new BlockStateWriter(Ids::COAL_BLOCK)); - $this->map(VanillaBlocks::COAL_ORE(), fn() => new BlockStateWriter(Ids::COAL_ORE)); - $this->map(VanillaBlocks::COBBLESTONE(), fn() => new BlockStateWriter(Ids::COBBLESTONE)); - $this->map(VanillaBlocks::CRAFTING_TABLE(), fn() => new BlockStateWriter(Ids::CRAFTING_TABLE)); - $this->map(VanillaBlocks::DEAD_BUSH(), fn() => new BlockStateWriter(Ids::DEADBUSH)); - $this->map(VanillaBlocks::DIAMOND(), fn() => new BlockStateWriter(Ids::DIAMOND_BLOCK)); - $this->map(VanillaBlocks::DIAMOND_ORE(), fn() => new BlockStateWriter(Ids::DIAMOND_ORE)); - $this->map(VanillaBlocks::DRAGON_EGG(), fn() => new BlockStateWriter(Ids::DRAGON_EGG)); - $this->map(VanillaBlocks::DRIED_KELP(), fn() => new BlockStateWriter(Ids::DRIED_KELP_BLOCK)); - $this->map(VanillaBlocks::ELEMENT_ZERO(), fn() => new BlockStateWriter(Ids::ELEMENT_0)); - $this->map(VanillaBlocks::ELEMENT_HYDROGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_1)); - $this->map(VanillaBlocks::ELEMENT_NEON(), fn() => new BlockStateWriter(Ids::ELEMENT_10)); - $this->map(VanillaBlocks::ELEMENT_FERMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_100)); - $this->map(VanillaBlocks::ELEMENT_MENDELEVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_101)); - $this->map(VanillaBlocks::ELEMENT_NOBELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_102)); - $this->map(VanillaBlocks::ELEMENT_LAWRENCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_103)); - $this->map(VanillaBlocks::ELEMENT_RUTHERFORDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_104)); - $this->map(VanillaBlocks::ELEMENT_DUBNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_105)); - $this->map(VanillaBlocks::ELEMENT_SEABORGIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_106)); - $this->map(VanillaBlocks::ELEMENT_BOHRIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_107)); - $this->map(VanillaBlocks::ELEMENT_HASSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_108)); - $this->map(VanillaBlocks::ELEMENT_MEITNERIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_109)); - $this->map(VanillaBlocks::ELEMENT_SODIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_11)); - $this->map(VanillaBlocks::ELEMENT_DARMSTADTIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_110)); - $this->map(VanillaBlocks::ELEMENT_ROENTGENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_111)); - $this->map(VanillaBlocks::ELEMENT_COPERNICIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_112)); - $this->map(VanillaBlocks::ELEMENT_NIHONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_113)); - $this->map(VanillaBlocks::ELEMENT_FLEROVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_114)); - $this->map(VanillaBlocks::ELEMENT_MOSCOVIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_115)); - $this->map(VanillaBlocks::ELEMENT_LIVERMORIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_116)); - $this->map(VanillaBlocks::ELEMENT_TENNESSINE(), fn() => new BlockStateWriter(Ids::ELEMENT_117)); - $this->map(VanillaBlocks::ELEMENT_OGANESSON(), fn() => new BlockStateWriter(Ids::ELEMENT_118)); - $this->map(VanillaBlocks::ELEMENT_MAGNESIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_12)); - $this->map(VanillaBlocks::ELEMENT_ALUMINUM(), fn() => new BlockStateWriter(Ids::ELEMENT_13)); - $this->map(VanillaBlocks::ELEMENT_SILICON(), fn() => new BlockStateWriter(Ids::ELEMENT_14)); - $this->map(VanillaBlocks::ELEMENT_PHOSPHORUS(), fn() => new BlockStateWriter(Ids::ELEMENT_15)); - $this->map(VanillaBlocks::ELEMENT_SULFUR(), fn() => new BlockStateWriter(Ids::ELEMENT_16)); - $this->map(VanillaBlocks::ELEMENT_CHLORINE(), fn() => new BlockStateWriter(Ids::ELEMENT_17)); - $this->map(VanillaBlocks::ELEMENT_ARGON(), fn() => new BlockStateWriter(Ids::ELEMENT_18)); - $this->map(VanillaBlocks::ELEMENT_POTASSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_19)); - $this->map(VanillaBlocks::ELEMENT_HELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_2)); - $this->map(VanillaBlocks::ELEMENT_CALCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_20)); - $this->map(VanillaBlocks::ELEMENT_SCANDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_21)); - $this->map(VanillaBlocks::ELEMENT_TITANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_22)); - $this->map(VanillaBlocks::ELEMENT_VANADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_23)); - $this->map(VanillaBlocks::ELEMENT_CHROMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_24)); - $this->map(VanillaBlocks::ELEMENT_MANGANESE(), fn() => new BlockStateWriter(Ids::ELEMENT_25)); - $this->map(VanillaBlocks::ELEMENT_IRON(), fn() => new BlockStateWriter(Ids::ELEMENT_26)); - $this->map(VanillaBlocks::ELEMENT_COBALT(), fn() => new BlockStateWriter(Ids::ELEMENT_27)); - $this->map(VanillaBlocks::ELEMENT_NICKEL(), fn() => new BlockStateWriter(Ids::ELEMENT_28)); - $this->map(VanillaBlocks::ELEMENT_COPPER(), fn() => new BlockStateWriter(Ids::ELEMENT_29)); - $this->map(VanillaBlocks::ELEMENT_LITHIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_3)); - $this->map(VanillaBlocks::ELEMENT_ZINC(), fn() => new BlockStateWriter(Ids::ELEMENT_30)); - $this->map(VanillaBlocks::ELEMENT_GALLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_31)); - $this->map(VanillaBlocks::ELEMENT_GERMANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_32)); - $this->map(VanillaBlocks::ELEMENT_ARSENIC(), fn() => new BlockStateWriter(Ids::ELEMENT_33)); - $this->map(VanillaBlocks::ELEMENT_SELENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_34)); - $this->map(VanillaBlocks::ELEMENT_BROMINE(), fn() => new BlockStateWriter(Ids::ELEMENT_35)); - $this->map(VanillaBlocks::ELEMENT_KRYPTON(), fn() => new BlockStateWriter(Ids::ELEMENT_36)); - $this->map(VanillaBlocks::ELEMENT_RUBIDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_37)); - $this->map(VanillaBlocks::ELEMENT_STRONTIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_38)); - $this->map(VanillaBlocks::ELEMENT_YTTRIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_39)); - $this->map(VanillaBlocks::ELEMENT_BERYLLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_4)); - $this->map(VanillaBlocks::ELEMENT_ZIRCONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_40)); - $this->map(VanillaBlocks::ELEMENT_NIOBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_41)); - $this->map(VanillaBlocks::ELEMENT_MOLYBDENUM(), fn() => new BlockStateWriter(Ids::ELEMENT_42)); - $this->map(VanillaBlocks::ELEMENT_TECHNETIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_43)); - $this->map(VanillaBlocks::ELEMENT_RUTHENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_44)); - $this->map(VanillaBlocks::ELEMENT_RHODIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_45)); - $this->map(VanillaBlocks::ELEMENT_PALLADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_46)); - $this->map(VanillaBlocks::ELEMENT_SILVER(), fn() => new BlockStateWriter(Ids::ELEMENT_47)); - $this->map(VanillaBlocks::ELEMENT_CADMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_48)); - $this->map(VanillaBlocks::ELEMENT_INDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_49)); - $this->map(VanillaBlocks::ELEMENT_BORON(), fn() => new BlockStateWriter(Ids::ELEMENT_5)); - $this->map(VanillaBlocks::ELEMENT_TIN(), fn() => new BlockStateWriter(Ids::ELEMENT_50)); - $this->map(VanillaBlocks::ELEMENT_ANTIMONY(), fn() => new BlockStateWriter(Ids::ELEMENT_51)); - $this->map(VanillaBlocks::ELEMENT_TELLURIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_52)); - $this->map(VanillaBlocks::ELEMENT_IODINE(), fn() => new BlockStateWriter(Ids::ELEMENT_53)); - $this->map(VanillaBlocks::ELEMENT_XENON(), fn() => new BlockStateWriter(Ids::ELEMENT_54)); - $this->map(VanillaBlocks::ELEMENT_CESIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_55)); - $this->map(VanillaBlocks::ELEMENT_BARIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_56)); - $this->map(VanillaBlocks::ELEMENT_LANTHANUM(), fn() => new BlockStateWriter(Ids::ELEMENT_57)); - $this->map(VanillaBlocks::ELEMENT_CERIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_58)); - $this->map(VanillaBlocks::ELEMENT_PRASEODYMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_59)); - $this->map(VanillaBlocks::ELEMENT_CARBON(), fn() => new BlockStateWriter(Ids::ELEMENT_6)); - $this->map(VanillaBlocks::ELEMENT_NEODYMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_60)); - $this->map(VanillaBlocks::ELEMENT_PROMETHIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_61)); - $this->map(VanillaBlocks::ELEMENT_SAMARIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_62)); - $this->map(VanillaBlocks::ELEMENT_EUROPIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_63)); - $this->map(VanillaBlocks::ELEMENT_GADOLINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_64)); - $this->map(VanillaBlocks::ELEMENT_TERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_65)); - $this->map(VanillaBlocks::ELEMENT_DYSPROSIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_66)); - $this->map(VanillaBlocks::ELEMENT_HOLMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_67)); - $this->map(VanillaBlocks::ELEMENT_ERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_68)); - $this->map(VanillaBlocks::ELEMENT_THULIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_69)); - $this->map(VanillaBlocks::ELEMENT_NITROGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_7)); - $this->map(VanillaBlocks::ELEMENT_YTTERBIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_70)); - $this->map(VanillaBlocks::ELEMENT_LUTETIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_71)); - $this->map(VanillaBlocks::ELEMENT_HAFNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_72)); - $this->map(VanillaBlocks::ELEMENT_TANTALUM(), fn() => new BlockStateWriter(Ids::ELEMENT_73)); - $this->map(VanillaBlocks::ELEMENT_TUNGSTEN(), fn() => new BlockStateWriter(Ids::ELEMENT_74)); - $this->map(VanillaBlocks::ELEMENT_RHENIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_75)); - $this->map(VanillaBlocks::ELEMENT_OSMIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_76)); - $this->map(VanillaBlocks::ELEMENT_IRIDIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_77)); - $this->map(VanillaBlocks::ELEMENT_PLATINUM(), fn() => new BlockStateWriter(Ids::ELEMENT_78)); - $this->map(VanillaBlocks::ELEMENT_GOLD(), fn() => new BlockStateWriter(Ids::ELEMENT_79)); - $this->map(VanillaBlocks::ELEMENT_OXYGEN(), fn() => new BlockStateWriter(Ids::ELEMENT_8)); - $this->map(VanillaBlocks::ELEMENT_MERCURY(), fn() => new BlockStateWriter(Ids::ELEMENT_80)); - $this->map(VanillaBlocks::ELEMENT_THALLIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_81)); - $this->map(VanillaBlocks::ELEMENT_LEAD(), fn() => new BlockStateWriter(Ids::ELEMENT_82)); - $this->map(VanillaBlocks::ELEMENT_BISMUTH(), fn() => new BlockStateWriter(Ids::ELEMENT_83)); - $this->map(VanillaBlocks::ELEMENT_POLONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_84)); - $this->map(VanillaBlocks::ELEMENT_ASTATINE(), fn() => new BlockStateWriter(Ids::ELEMENT_85)); - $this->map(VanillaBlocks::ELEMENT_RADON(), fn() => new BlockStateWriter(Ids::ELEMENT_86)); - $this->map(VanillaBlocks::ELEMENT_FRANCIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_87)); - $this->map(VanillaBlocks::ELEMENT_RADIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_88)); - $this->map(VanillaBlocks::ELEMENT_ACTINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_89)); - $this->map(VanillaBlocks::ELEMENT_FLUORINE(), fn() => new BlockStateWriter(Ids::ELEMENT_9)); - $this->map(VanillaBlocks::ELEMENT_THORIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_90)); - $this->map(VanillaBlocks::ELEMENT_PROTACTINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_91)); - $this->map(VanillaBlocks::ELEMENT_URANIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_92)); - $this->map(VanillaBlocks::ELEMENT_NEPTUNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_93)); - $this->map(VanillaBlocks::ELEMENT_PLUTONIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_94)); - $this->map(VanillaBlocks::ELEMENT_AMERICIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_95)); - $this->map(VanillaBlocks::ELEMENT_CURIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_96)); - $this->map(VanillaBlocks::ELEMENT_BERKELIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_97)); - $this->map(VanillaBlocks::ELEMENT_CALIFORNIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_98)); - $this->map(VanillaBlocks::ELEMENT_EINSTEINIUM(), fn() => new BlockStateWriter(Ids::ELEMENT_99)); - $this->map(VanillaBlocks::EMERALD(), fn() => new BlockStateWriter(Ids::EMERALD_BLOCK)); - $this->map(VanillaBlocks::EMERALD_ORE(), fn() => new BlockStateWriter(Ids::EMERALD_ORE)); - $this->map(VanillaBlocks::ENCHANTING_TABLE(), fn() => new BlockStateWriter(Ids::ENCHANTING_TABLE)); - $this->map(VanillaBlocks::END_STONE_BRICKS(), fn() => new BlockStateWriter(Ids::END_BRICKS)); - $this->map(VanillaBlocks::END_STONE(), fn() => new BlockStateWriter(Ids::END_STONE)); - $this->map(VanillaBlocks::FLETCHING_TABLE(), fn() => new BlockStateWriter(Ids::FLETCHING_TABLE)); - $this->map(VanillaBlocks::GLASS(), fn() => new BlockStateWriter(Ids::GLASS)); - $this->map(VanillaBlocks::GLASS_PANE(), fn() => new BlockStateWriter(Ids::GLASS_PANE)); - $this->map(VanillaBlocks::GLOWING_OBSIDIAN(), fn() => new BlockStateWriter(Ids::GLOWINGOBSIDIAN)); - $this->map(VanillaBlocks::GLOWSTONE(), fn() => new BlockStateWriter(Ids::GLOWSTONE)); - $this->map(VanillaBlocks::GOLD(), fn() => new BlockStateWriter(Ids::GOLD_BLOCK)); - $this->map(VanillaBlocks::GOLD_ORE(), fn() => new BlockStateWriter(Ids::GOLD_ORE)); - $this->map(VanillaBlocks::GRASS(), fn() => new BlockStateWriter(Ids::GRASS)); - $this->map(VanillaBlocks::GRASS_PATH(), fn() => new BlockStateWriter(Ids::GRASS_PATH)); - $this->map(VanillaBlocks::GRAVEL(), fn() => new BlockStateWriter(Ids::GRAVEL)); - $this->map(VanillaBlocks::HARDENED_GLASS(), fn() => new BlockStateWriter(Ids::HARD_GLASS)); - $this->map(VanillaBlocks::HARDENED_GLASS_PANE(), fn() => new BlockStateWriter(Ids::HARD_GLASS_PANE)); - $this->map(VanillaBlocks::HARDENED_CLAY(), fn() => new BlockStateWriter(Ids::HARDENED_CLAY)); - $this->map(VanillaBlocks::ICE(), fn() => new BlockStateWriter(Ids::ICE)); - $this->map(VanillaBlocks::INFO_UPDATE(), fn() => new BlockStateWriter(Ids::INFO_UPDATE)); - $this->map(VanillaBlocks::INFO_UPDATE2(), fn() => new BlockStateWriter(Ids::INFO_UPDATE2)); - $this->map(VanillaBlocks::INVISIBLE_BEDROCK(), fn() => new BlockStateWriter(Ids::INVISIBLEBEDROCK)); - $this->map(VanillaBlocks::IRON_BARS(), fn() => new BlockStateWriter(Ids::IRON_BARS)); - $this->map(VanillaBlocks::IRON(), fn() => new BlockStateWriter(Ids::IRON_BLOCK)); - $this->map(VanillaBlocks::IRON_ORE(), fn() => new BlockStateWriter(Ids::IRON_ORE)); - $this->map(VanillaBlocks::JUKEBOX(), fn() => new BlockStateWriter(Ids::JUKEBOX)); - $this->map(VanillaBlocks::LAPIS_LAZULI(), fn() => new BlockStateWriter(Ids::LAPIS_BLOCK)); - $this->map(VanillaBlocks::LAPIS_LAZULI_ORE(), fn() => new BlockStateWriter(Ids::LAPIS_ORE)); - $this->map(VanillaBlocks::REDSTONE_LAMP(), fn() => new BlockStateWriter(Ids::LIT_REDSTONE_LAMP)); - $this->map(VanillaBlocks::REDSTONE_ORE(), fn() => new BlockStateWriter(Ids::LIT_REDSTONE_ORE)); - $this->map(VanillaBlocks::MAGMA(), fn() => new BlockStateWriter(Ids::MAGMA)); - $this->map(VanillaBlocks::MELON(), fn() => new BlockStateWriter(Ids::MELON_BLOCK)); - $this->map(VanillaBlocks::MONSTER_SPAWNER(), fn() => new BlockStateWriter(Ids::MOB_SPAWNER)); - $this->map(VanillaBlocks::MOSSY_COBBLESTONE(), fn() => new BlockStateWriter(Ids::MOSSY_COBBLESTONE)); - $this->map(VanillaBlocks::MYCELIUM(), fn() => new BlockStateWriter(Ids::MYCELIUM)); - $this->map(VanillaBlocks::NETHER_BRICKS(), fn() => new BlockStateWriter(Ids::NETHER_BRICK)); - $this->map(VanillaBlocks::NETHER_BRICK_FENCE(), fn() => new BlockStateWriter(Ids::NETHER_BRICK_FENCE)); - $this->map(VanillaBlocks::NETHER_WART_BLOCK(), fn() => new BlockStateWriter(Ids::NETHER_WART_BLOCK)); - $this->map(VanillaBlocks::NETHERRACK(), fn() => new BlockStateWriter(Ids::NETHERRACK)); - $this->map(VanillaBlocks::NETHER_REACTOR_CORE(), fn() => new BlockStateWriter(Ids::NETHERREACTOR)); - $this->map(VanillaBlocks::NOTE_BLOCK(), fn() => new BlockStateWriter(Ids::NOTEBLOCK)); - $this->map(VanillaBlocks::OBSIDIAN(), fn() => new BlockStateWriter(Ids::OBSIDIAN)); - $this->map(VanillaBlocks::PACKED_ICE(), fn() => new BlockStateWriter(Ids::PACKED_ICE)); - $this->map(VanillaBlocks::PODZOL(), fn() => new BlockStateWriter(Ids::PODZOL)); - $this->map(VanillaBlocks::NETHER_QUARTZ_ORE(), fn() => new BlockStateWriter(Ids::QUARTZ_ORE)); - $this->map(VanillaBlocks::RED_MUSHROOM(), fn() => new BlockStateWriter(Ids::RED_MUSHROOM)); - $this->map(VanillaBlocks::RED_NETHER_BRICKS(), fn() => new BlockStateWriter(Ids::RED_NETHER_BRICK)); - $this->map(VanillaBlocks::REDSTONE(), fn() => new BlockStateWriter(Ids::REDSTONE_BLOCK)); - $this->map(VanillaBlocks::REDSTONE_LAMP(), fn() => new BlockStateWriter(Ids::REDSTONE_LAMP)); - $this->map(VanillaBlocks::REDSTONE_ORE(), fn() => new BlockStateWriter(Ids::REDSTONE_ORE)); - $this->map(VanillaBlocks::RESERVED6(), fn() => new BlockStateWriter(Ids::RESERVED6)); - $this->map(VanillaBlocks::SEA_LANTERN(), fn() => new BlockStateWriter(Ids::SEALANTERN)); - $this->map(VanillaBlocks::SLIME(), fn() => new BlockStateWriter(Ids::SLIME)); - $this->map(VanillaBlocks::SMOOTH_STONE(), fn() => new BlockStateWriter(Ids::SMOOTH_STONE)); - $this->map(VanillaBlocks::SNOW(), fn() => new BlockStateWriter(Ids::SNOW)); - $this->map(VanillaBlocks::SOUL_SAND(), fn() => new BlockStateWriter(Ids::SOUL_SAND)); - $this->map(VanillaBlocks::LEGACY_STONECUTTER(), fn() => new BlockStateWriter(Ids::STONECUTTER)); - $this->map(VanillaBlocks::SHULKER_BOX(), fn() => new BlockStateWriter(Ids::UNDYED_SHULKER_BOX)); - $this->map(VanillaBlocks::LILY_PAD(), fn() => new BlockStateWriter(Ids::WATERLILY)); - $this->map(VanillaBlocks::COBWEB(), fn() => new BlockStateWriter(Ids::WEB)); - $this->map(VanillaBlocks::DANDELION(), fn() => new BlockStateWriter(Ids::YELLOW_FLOWER)); - //$this->map(VanillaBlocks::ACACIA_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ACACIA_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACACIA_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::ACTIVATOR_RAIL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ACTIVATOR_RAIL()) - * TODO: implement (de)serializer - * rail_data_bit (ByteTag) = 0, 1 - * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::AMETHYST_CLUSTER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::ANDESITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ANDESITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::ANVIL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ANVIL()) - * TODO: implement (de)serializer - * damage (StringTag) = broken, slightly_damaged, undamaged, very_damaged - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::AZALEA_LEAVES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::AZALEA_LEAVES_FLOWERED(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BAMBOO(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BAMBOO()) - * TODO: implement (de)serializer - * age_bit (ByteTag) = 0, 1 - * bamboo_leaf_size (StringTag) = large_leaves, no_leaves, small_leaves - * bamboo_stalk_thickness (StringTag) = thick, thin - */ - //}); - //$this->map(VanillaBlocks::BAMBOO_SAPLING(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BAMBOO_SAPLING()) - * TODO: implement (de)serializer - * age_bit (ByteTag) = 0, 1 - * sapling_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::BARREL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BARREL()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BASALT(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::BED(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BED()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * head_piece_bit (ByteTag) = 0, 1 - * occupied_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BEDROCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BEDROCK()) - * TODO: implement (de)serializer - * infiniburn_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BEEHIVE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BEETROOT(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BEETROOTS()) - * TODO: implement (de)serializer - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::BEE_NEST(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BELL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BELL()) - * TODO: implement (de)serializer - * attachment (StringTag) = hanging, multiple, side, standing - * direction (IntTag) = 0, 1, 2, 3 - * toggle_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BIG_DRIPLEAF(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * big_dripleaf_head (ByteTag) = 0, 1 - * big_dripleaf_tilt (StringTag) = full_tilt, none, partial_tilt, unstable - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BIRCH_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BIRCH_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BLACKSTONE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLACKSTONE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLACKSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::BLACKSTONE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLACK_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLACK_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BLACK_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BLAST_FURNACE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BLAST_FURNACE()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BLUE_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLUE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BLUE_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BONE_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BONE_BLOCK()) - * TODO: implement (de)serializer - * deprecated (IntTag) = 0, 1, 2, 3 - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::BORDER_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BREWING_STAND(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BREWING_STAND()) - * TODO: implement (de)serializer - * brewing_stand_slot_a_bit (ByteTag) = 0, 1 - * brewing_stand_slot_b_bit (ByteTag) = 0, 1 - * brewing_stand_slot_c_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::BROWN_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BROWN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BROWN_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BROWN_MUSHROOM_BLOCK()) - * TODO: implement (de)serializer - * huge_mushroom_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::BUBBLE_COLUMN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * drag_down (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CACTUS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CACTUS()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::CAKE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CAKE()) - * TODO: implement (de)serializer - * bite_counter (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->map(VanillaBlocks::CAMPFIRE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * extinguished (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CARPET(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CARPET()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::CARROTS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CARROTS()) - * TODO: implement (de)serializer - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::CARVED_PUMPKIN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CARVED_PUMPKIN()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::CAULDRON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * cauldron_liquid (StringTag) = lava, powder_snow, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->map(VanillaBlocks::CAVE_VINES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::CAVE_VINES_BODY_WITH_BERRIES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::CAVE_VINES_HEAD_WITH_BERRIES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::CHAIN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::CHAIN_COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::CHEMISTRY_TABLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * chemistry_table_type (StringTag) = compound_creator, element_constructor, lab_table, material_reducer - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::CHEST(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CHEST()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::CHORUS_FLOWER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * age (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::COBBLED_DEEPSLATE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::COBBLESTONE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::COBBLESTONE_WALL()) - * TODO: implement (de)serializer - * wall_block_type (StringTag) = andesite, brick, cobblestone, diorite, end_brick, granite, mossy_cobblestone, mossy_stone_brick, nether_brick, prismarine, red_nether_brick, red_sandstone, sandstone, stone_brick - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::COCOA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::COCOA_POD()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2 - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::COLORED_TORCH_BP(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * color_bit (ByteTag) = 0, 1 - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::COLORED_TORCH_RG(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * color_bit (ByteTag) = 0, 1 - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::COMPOSTER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 - */ - //}); - //$this->map(VanillaBlocks::CONCRETE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CONCRETE()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::CONCRETEPOWDER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CONCRETE_POWDER()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::CORAL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CORAL()) - * TODO: implement (de)serializer - * coral_color (StringTag) = blue, pink, purple, red, yellow - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CORAL_BLOCK()) - * TODO: implement (de)serializer - * coral_color (StringTag) = blue, pink, purple, red, yellow - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_FAN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CORAL_FAN()) - * TODO: implement (de)serializer - * coral_color (StringTag) = blue, pink, purple, red, yellow - * coral_fan_direction (IntTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_FAN_DEAD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * coral_color (StringTag) = blue, pink, purple, red, yellow - * coral_fan_direction (IntTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_FAN_HANG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) - * TODO: implement (de)serializer - * coral_direction (IntTag) = 0, 1, 2, 3 - * coral_hang_type_bit (ByteTag) = 0, 1 - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_FAN_HANG2(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) - * TODO: implement (de)serializer - * coral_direction (IntTag) = 0, 1, 2, 3 - * coral_hang_type_bit (ByteTag) = 0, 1 - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CORAL_FAN_HANG3(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WALL_CORAL_FAN()) - * TODO: implement (de)serializer - * coral_direction (IntTag) = 0, 1, 2, 3 - * coral_hang_type_bit (ByteTag) = 0, 1 - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_HYPHAE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_STEM(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CRIMSON_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::CYAN_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CYAN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::CYAN_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::DARKOAK_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::DARKOAK_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::DARK_OAK_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_OAK_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DARK_PRISMARINE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DARK_PRISMARINE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::DAYLIGHT_DETECTOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DAYLIGHT_SENSOR()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::DAYLIGHT_DETECTOR_INVERTED(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DAYLIGHT_SENSOR()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_BRICK_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_BRICK_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_BRICK_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_TILE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_TILE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_TILE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::DEEPSLATE_TILE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DETECTOR_RAIL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DETECTOR_RAIL()) - * TODO: implement (de)serializer - * rail_data_bit (ByteTag) = 0, 1 - * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::DIORITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DIORITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::DIRT(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DIRT()) - * TODO: implement (de)serializer - * dirt_type (StringTag) = coarse, normal - */ - //}); - //$this->map(VanillaBlocks::DISPENSER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_PLANT(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * double_plant_type (StringTag) = fern, grass, paeonia, rose, sunflower, syringa - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB2(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB3(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_STONE_SLAB4(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::DOUBLE_WOODEN_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::DROPPER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ENDER_CHEST(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ENDER_CHEST()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::END_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::END_STONE_BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::END_PORTAL_FRAME(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::END_PORTAL_FRAME()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * end_portal_eye_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::END_ROD(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::END_ROD()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::EXPOSED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::EXPOSED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::EXPOSED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::FARMLAND(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FARMLAND()) - * TODO: implement (de)serializer - * moisturized_amount (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::FENCE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::FIRE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FIRE()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::FLOWER_POT(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FLOWER_POT()) - * TODO: implement (de)serializer - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::FLOWING_LAVA(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::FLOWING_WATER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::FRAME(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * item_frame_map_bit (ByteTag) = 0, 1 - * item_frame_photo_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::FROSTED_ICE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FROSTED_ICE()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::FURNACE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FURNACE()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::GLOW_FRAME(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * item_frame_map_bit (ByteTag) = 0, 1 - * item_frame_photo_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::GLOW_LICHEN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - */ - //}); - //$this->map(VanillaBlocks::GOLDEN_RAIL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::POWERED_RAIL()) - * TODO: implement (de)serializer - * rail_data_bit (ByteTag) = 0, 1 - * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::GRANITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::GRANITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::GRAY_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::GRAY_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::GRAY_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::GREEN_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::GREEN_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::GREEN_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::GRINDSTONE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * attachment (StringTag) = hanging, multiple, side, standing - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::HARD_STAINED_GLASS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STAINED_HARDENED_GLASS()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::HARD_STAINED_GLASS_PANE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STAINED_HARDENED_GLASS_PANE()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::HAY_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::HAY_BALE()) - * TODO: implement (de)serializer - * deprecated (IntTag) = 0, 1, 2, 3 - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::HEAVY_WEIGHTED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::HOPPER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::HOPPER()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * toggle_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::INFESTED_DEEPSLATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::IRON_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::IRON_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::IRON_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::IRON_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::JIGSAW(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * rotation (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::JUNGLE_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::JUNGLE_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::KELP(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * kelp_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::LADDER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LADDER()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LANTERN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LANTERN()) - * TODO: implement (de)serializer - * hanging (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LARGE_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LAVA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LAVA()) - * TODO: implement (de)serializer - * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::LAVA_CAULDRON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * cauldron_liquid (StringTag) = lava, powder_snow, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->map(VanillaBlocks::LEAVES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * old_leaf_type (StringTag) = birch, jungle, oak, spruce - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LEAVES2(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * new_leaf_type (StringTag) = acacia, dark_oak - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LECTERN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LECTERN()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LEVER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LEVER()) - * TODO: implement (de)serializer - * lever_direction (StringTag) = down_east_west, down_north_south, east, north, south, up_east_west, up_north_south, west - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIGHTNING_ROD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_BLUE_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_BLUE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_GRAY_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_GRAY_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIGHT_WEIGHTED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::LIME_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIME_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LIME_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LIT_BLAST_FURNACE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BLAST_FURNACE()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LIT_FURNACE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::FURNACE()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LIT_PUMPKIN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LIT_PUMPKIN()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::LIT_SMOKER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SMOKER()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::LOG(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * old_log_type (StringTag) = birch, jungle, oak, spruce - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::LOG2(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * new_log_type (StringTag) = acacia, dark_oak - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::LOOM(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LOOM()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::MAGENTA_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::MAGENTA_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::MEDIUM_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::MELON_STEM(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::MELON_STEM()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::MONSTER_EGG(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * monster_egg_stone_type (StringTag) = chiseled_stone_brick, cobblestone, cracked_stone_brick, mossy_stone_brick, stone, stone_brick - */ - //}); - //$this->map(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::MOSSY_COBBLESTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::MOSSY_STONE_BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::NETHER_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::NETHER_BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::NETHER_WART(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::NETHER_WART()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::NORMAL_STONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::OAK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::OBSERVER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ORANGE_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ORANGE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::ORANGE_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::OXIDIZED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::OXIDIZED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::OXIDIZED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::PINK_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::PINK_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PINK_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::PISTON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::PISTONARMCOLLISION(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::PLANKS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::POINTED_DRIPSTONE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * dripstone_thickness (StringTag) = base, frustum, merge, middle, tip - * hanging (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::POLISHED_ANDESITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BASALT(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BRICK_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_BLACKSTONE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_DEEPSLATE_WALL(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_DIORITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::POLISHED_DIORITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::POLISHED_GRANITE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::POLISHED_GRANITE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::PORTAL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::NETHER_PORTAL()) - * TODO: implement (de)serializer - * portal_axis (StringTag) = unknown, x, z - */ - //}); - //$this->map(VanillaBlocks::POTATOES(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::POTATOES()) - * TODO: implement (de)serializer - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::POWERED_COMPARATOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::REDSTONE_COMPARATOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * output_lit_bit (ByteTag) = 0, 1 - * output_subtract_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::POWERED_REPEATER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * repeater_delay (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::PRISMARINE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PRISMARINE()) - * TODO: implement (de)serializer - * prismarine_block_type (StringTag) = bricks, dark, default - */ - //}); - //$this->map(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PRISMARINE_BRICKS_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::PRISMARINE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PRISMARINE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::PUMPKIN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PUMPKIN()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::PUMPKIN_STEM(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PUMPKIN_STEM()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::PURPLE_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::PURPLE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PURPLE_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::PURPUR_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * chisel_type (StringTag) = chiseled, default, lines, smooth - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::PURPUR_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::PURPUR_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::QUARTZ_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * chisel_type (StringTag) = chiseled, default, lines, smooth - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::QUARTZ_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::QUARTZ_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::RAIL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RAIL()) - * TODO: implement (de)serializer - * rail_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - */ - //}); - //$this->map(VanillaBlocks::REDSTONE_TORCH(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::REDSTONE_TORCH()) - * TODO: implement (de)serializer - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::REDSTONE_WIRE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::REDSTONE_WIRE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::RED_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::RED_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::RED_FLOWER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * flower_type (StringTag) = allium, cornflower, houstonia, lily_of_the_valley, orchid, oxeye, poppy, tulip_orange, tulip_pink, tulip_red, tulip_white - */ - //}); - //$this->map(VanillaBlocks::RED_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RED_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::RED_MUSHROOM_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RED_MUSHROOM_BLOCK()) - * TODO: implement (de)serializer - * huge_mushroom_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RED_NETHER_BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::RED_SANDSTONE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RED_SANDSTONE()) - * TODO: implement (de)serializer - * sand_stone_type (StringTag) = cut, default, heiroglyphs, smooth - */ - //}); - //$this->map(VanillaBlocks::RED_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::RED_SANDSTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::REEDS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SUGARCANE()) - * TODO: implement (de)serializer - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::REPEATING_COMMAND_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::RESPAWN_ANCHOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * respawn_anchor_charge (IntTag) = 0, 1, 2, 3, 4 - */ - //}); - //$this->map(VanillaBlocks::SAND(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SAND()) - * TODO: implement (de)serializer - * sand_type (StringTag) = normal, red - */ - //}); - //$this->map(VanillaBlocks::SANDSTONE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SANDSTONE()) - * TODO: implement (de)serializer - * sand_stone_type (StringTag) = cut, default, heiroglyphs, smooth - */ - //}); - //$this->map(VanillaBlocks::SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SANDSTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::SAPLING(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * age_bit (ByteTag) = 0, 1 - * sapling_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::SCAFFOLDING(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - * stability_check (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SCULK_CATALYST(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * bloom (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SCULK_SENSOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SCULK_SHRIEKER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * active (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SCULK_VEIN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - */ - //}); - //$this->map(VanillaBlocks::SEAGRASS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * sea_grass_type (StringTag) = default, double_bot, double_top - */ - //}); - //$this->map(VanillaBlocks::SEA_PICKLE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SEA_PICKLE()) - * TODO: implement (de)serializer - * cluster_count (IntTag) = 0, 1, 2, 3 - * dead_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SHULKER_BOX(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::DYED_SHULKER_BOX()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::SILVER_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::SKULL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::MOB_HEAD()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * no_drop_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SMALL_AMETHYST_BUD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::SMALL_DRIPLEAF_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SMOKER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SMOKER()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SMOOTH_QUARTZ_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SMOOTH_SANDSTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::SNOW_LAYER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SNOW_LAYER()) - * TODO: implement (de)serializer - * covered_bit (ByteTag) = 0, 1 - * height (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::SOUL_CAMPFIRE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * extinguished (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SOUL_FIRE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::SOUL_LANTERN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * hanging (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SOUL_TORCH(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::SPONGE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPONGE()) - * TODO: implement (de)serializer - * sponge_type (StringTag) = dry, wet - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_FENCE_GATE()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::SPRUCE_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SPRUCE_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::STAINED_GLASS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STAINED_GLASS()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::STAINED_GLASS_PANE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STAINED_GLASS_PANE()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::STAINED_HARDENED_CLAY(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STAINED_CLAY()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::STANDING_BANNER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::BANNER()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_SIGN()) - * TODO: implement (de)serializer - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::STICKYPISTONARMCOLLISION(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::STICKY_PISTON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::STONE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE()) - * TODO: implement (de)serializer - * stone_type (StringTag) = andesite, andesite_smooth, diorite, diorite_smooth, granite, granite_smooth, stone - */ - //}); - //$this->map(VanillaBlocks::STONEBRICK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_brick_type (StringTag) = chiseled, cracked, default, mossy, smooth - */ - //}); - //$this->map(VanillaBlocks::STONECUTTER_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::STONE_BRICK_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE_BRICK_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::STONE_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::STONE_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::STONE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STONE_SLAB()) - * TODO: implement (de)serializer - * stone_slab_type (StringTag) = brick, cobblestone, nether_brick, quartz, sandstone, smooth_stone, stone_brick, wood - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::STONE_SLAB2(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_2 (StringTag) = mossy_cobblestone, prismarine_brick, prismarine_dark, prismarine_rough, purpur, red_nether_brick, red_sandstone, smooth_sandstone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::STONE_SLAB3(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_3 (StringTag) = andesite, diorite, end_stone_brick, granite, polished_andesite, polished_diorite, polished_granite, smooth_red_sandstone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::STONE_SLAB4(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * stone_slab_type_4 (StringTag) = cut_red_sandstone, cut_sandstone, mossy_stone_brick, smooth_quartz, stone - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::STONE_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::COBBLESTONE_STAIRS()) - * TODO: implement (de)serializer - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_ACACIA_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_ACACIA_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_BIRCH_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_BIRCH_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_CRIMSON_HYPHAE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_CRIMSON_STEM(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_DARK_OAK_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_DARK_OAK_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_JUNGLE_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_JUNGLE_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_OAK_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_OAK_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_SPRUCE_LOG(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::STRIPPED_SPRUCE_LOG()) - * TODO: implement (de)serializer - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_WARPED_HYPHAE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRIPPED_WARPED_STEM(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::STRUCTURE_BLOCK(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * structure_block_type (StringTag) = corner, data, export, invalid, load, save - */ - //}); - //$this->map(VanillaBlocks::STRUCTURE_VOID(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * structure_void_type (StringTag) = air, void - */ - //}); - //$this->map(VanillaBlocks::SWEET_BERRY_BUSH(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::SWEET_BERRY_BUSH()) - * TODO: implement (de)serializer - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::TALLGRASS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * tall_grass_type (StringTag) = default, fern, snow, tall - */ - //}); - //$this->map(VanillaBlocks::TNT(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::TNT()) - * TODO: implement (de)serializer - * allow_underwater_bit (ByteTag) = 0, 1 - * explode_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::TORCH(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::TORCH()) - * TODO: implement (de)serializer - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_TRAPDOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::TRAPPED_CHEST(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::TRAPPED_CHEST()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::TRIPWIRE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::TRIPWIRE()) - * TODO: implement (de)serializer - * attached_bit (ByteTag) = 0, 1 - * disarmed_bit (ByteTag) = 0, 1 - * powered_bit (ByteTag) = 0, 1 - * suspended_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::TRIPWIRE_HOOK(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::TRIPWIRE_HOOK()) - * TODO: implement (de)serializer - * attached_bit (ByteTag) = 0, 1 - * direction (IntTag) = 0, 1, 2, 3 - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::TURTLE_EGG(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * cracked_state (StringTag) = cracked, max_cracked, no_cracks - * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg - */ - //}); - //$this->map(VanillaBlocks::TWISTING_VINES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * twisting_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::UNDERWATER_TORCH(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::UNDERWATER_TORCH()) - * TODO: implement (de)serializer - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::UNLIT_REDSTONE_TORCH(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::REDSTONE_TORCH()) - * TODO: implement (de)serializer - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(VanillaBlocks::UNPOWERED_COMPARATOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::REDSTONE_COMPARATOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * output_lit_bit (ByteTag) = 0, 1 - * output_subtract_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::UNPOWERED_REPEATER(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * repeater_delay (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::VINE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * vine_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::WALL_BANNER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WALL_BANNER()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_WALL_SIGN()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WARPED_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WARPED_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WARPED_DOUBLE_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WARPED_FENCE_GATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WARPED_HYPHAE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::WARPED_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::WARPED_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WARPED_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WARPED_STANDING_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::WARPED_STEM(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(VanillaBlocks::WARPED_TRAPDOOR(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WARPED_WALL_SIGN(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WATER(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WATER()) - * TODO: implement (de)serializer - * liquid_depth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::WAXED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WAXED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_EXPOSED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_EXPOSED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_OXIDIZED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_OXIDIZED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_WEATHERED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WAXED_WEATHERED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WEATHERED_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WEATHERED_CUT_COPPER_STAIRS(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(VanillaBlocks::WEATHERED_DOUBLE_CUT_COPPER_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WEEPING_VINES(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * weeping_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(VanillaBlocks::WHEAT(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WHEAT()) - * TODO: implement (de)serializer - * growth (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - */ - //}); - //$this->map(VanillaBlocks::WHITE_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WHITE_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WHITE_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WOOD(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - * stripped_bit (ByteTag) = 0, 1 - * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::WOODEN_BUTTON(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_BUTTON()) - * TODO: implement (de)serializer - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(VanillaBlocks::WOODEN_DOOR(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_DOOR()) - * TODO: implement (de)serializer - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::WOODEN_PRESSURE_PLATE(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::OAK_PRESSURE_PLATE()) - * TODO: implement (de)serializer - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(VanillaBlocks::WOODEN_SLAB(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - * wood_type (StringTag) = acacia, birch, dark_oak, jungle, oak, spruce - */ - //}); - //$this->map(VanillaBlocks::WOOL(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::WOOL()) - * TODO: implement (de)serializer - * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow - */ - //}); - //$this->map(VanillaBlocks::YELLOW_CANDLE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::YELLOW_CANDLE_CAKE(), function(Block $block) : BlockStateWriter{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), function(Block $block) : BlockStateWriter{ - /* - * This block is implemented (VanillaBlocks::YELLOW_GLAZED_TERRACOTTA()) - * TODO: implement (de)serializer - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); + $this->map(VanillaBlocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); + $this->map(VanillaBlocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); + $this->map(VanillaBlocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); + $this->map(VanillaBlocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); + $this->map(VanillaBlocks::ACACIA_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::ACACIA_STANDING_SIGN))); + $this->map(VanillaBlocks::ACACIA_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_ACACIA)); + $this->map(VanillaBlocks::ACACIA_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::ACACIA_STAIRS))); + $this->map(VanillaBlocks::ACACIA_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::ACACIA_TRAPDOOR))); + $this->map(VanillaBlocks::ACACIA_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::ACACIA_WALL_SIGN))); + $this->map(VanillaBlocks::ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::ACTIVATOR_RAIL(), function(ActivatorRail $block) : Writer{ + return Writer::create(Ids::ACTIVATOR_RAIL) + ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isPowered()) + ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(VanillaBlocks::AIR(), fn() => new Writer(Ids::AIR)); + $this->map(VanillaBlocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); + $this->map(VanillaBlocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) + ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); + $this->map(VanillaBlocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); + $this->map(VanillaBlocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); + $this->map(VanillaBlocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); + $this->map(VanillaBlocks::ANDESITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_ANDESITE)); + $this->map(VanillaBlocks::ANVIL(), function(Anvil $block) : Writer{ + return Writer::create(Ids::ANVIL) + ->writeLegacyHorizontalFacing($block->getFacing()) + ->writeString(BlockStateNames::DAMAGE, match($damage = $block->getDamage()){ + 0 => StringValues::DAMAGE_UNDAMAGED, + 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, + 2 => StringValues::DAMAGE_VERY_DAMAGED, + default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), + }); + }); + $this->map(VanillaBlocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); + $this->map(VanillaBlocks::BAMBOO(), function(Bamboo $block) : Writer{ + return Writer::create(Ids::BAMBOO) + ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) + ->writeString(BlockStateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ + Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, + Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, + Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, + default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), + }) + ->writeString(BlockStateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); + }); + $this->map(VanillaBlocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ + return Writer::create(Ids::BAMBOO_SAPLING) + ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) + + //TODO: bug in MCPE + ->writeString(BlockStateNames::SAPLING_TYPE, StringValues::SAPLING_TYPE_OAK); + }); + $this->map(VanillaBlocks::BANNER(), function(FloorBanner $block) : Writer{ + return Writer::create(Ids::STANDING_BANNER) + ->writeInt(BlockStateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); + }); + $this->map(VanillaBlocks::BARREL(), function(Barrel $block) : Writer{ + return Writer::create(Ids::BARREL) + ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()) + ->writeFacingDirection($block->getFacing()); + }); + $this->map(VanillaBlocks::BARRIER(), fn() => new Writer(Ids::BARRIER)); + $this->map(VanillaBlocks::BEACON(), fn() => new Writer(Ids::BEACON)); + $this->map(VanillaBlocks::BED(), function(Bed $block) : Writer{ + return Writer::create(Ids::BED) + ->writeBool(BlockStateNames::HEAD_PIECE_BIT, $block->isHeadPart()) + ->writeBool(BlockStateNames::OCCUPIED_BIT, $block->isOccupied()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::BEDROCK(), function(Block $block) : Writer{ + return Writer::create(Ids::BEDROCK) + ->writeBool(BlockStateNames::INFINIBURN_BIT, $block->burnsForever()); + }); + $this->map(VanillaBlocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT))); + $this->map(VanillaBlocks::BELL(), function(Bell $block) : Writer{ + return Writer::create(Ids::BELL) + ->writeBellAttachmentType($block->getAttachmentType()) + ->writeBool(BlockStateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy + ->writeLegacyHorizontalFacing($block->getFacing()); + + }); + $this->map(VanillaBlocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); + $this->map(VanillaBlocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); + $this->map(VanillaBlocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); + $this->map(VanillaBlocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); + $this->map(VanillaBlocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); + $this->map(VanillaBlocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); + $this->map(VanillaBlocks::BIRCH_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::BIRCH_STAIRS))); + $this->map(VanillaBlocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); + $this->map(VanillaBlocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); + $this->map(VanillaBlocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLACK_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); + $this->map(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLUE_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE)); + $this->map(VanillaBlocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); + $this->map(VanillaBlocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); + $this->map(VanillaBlocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ + return Writer::create(Ids::BONE_BLOCK) + ->writeInt(BlockStateNames::DEPRECATED, 0) + ->writePillarAxis($block->getAxis()); + }); + $this->map(VanillaBlocks::BOOKSHELF(), fn() => new Writer(Ids::BOOKSHELF)); + $this->map(VanillaBlocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ + return Writer::create(Ids::BREWING_STAND) + ->writeBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) + ->writeBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())) + ->writeBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())); + }); + $this->map(VanillaBlocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); + $this->map(VanillaBlocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); + $this->map(VanillaBlocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS))); + $this->map(VanillaBlocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); + $this->map(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BROWN_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); + $this->map(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); + $this->map(VanillaBlocks::CACTUS(), function(Cactus $block) : Writer{ + return Writer::create(Ids::CACTUS) + ->writeInt(BlockStateNames::AGE, $block->getAge()); + }); + $this->map(VanillaBlocks::CAKE(), function(Cake $block) : Writer{ + return Writer::create(Ids::CAKE) + ->writeInt(BlockStateNames::BITE_COUNTER, $block->getBites()); + }); + $this->map(VanillaBlocks::CARPET(), function(Carpet $block) : Writer{ + return Writer::create(Ids::CARPET) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); + $this->map(VanillaBlocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ + return Writer::create(Ids::CARVED_PUMPKIN) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::CHEMICAL_HEAT(), fn() => new Writer(Ids::CHEMICAL_HEAT)); + $this->map(VanillaBlocks::CHEST(), function(Chest $block) : Writer{ + return Writer::create(Ids::CHEST) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); + $this->map(VanillaBlocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(VanillaBlocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(VanillaBlocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); + $this->map(VanillaBlocks::CLAY(), fn() => new Writer(Ids::CLAY)); + $this->map(VanillaBlocks::COAL(), fn() => new Writer(Ids::COAL_BLOCK)); + $this->map(VanillaBlocks::COAL_ORE(), fn() => new Writer(Ids::COAL_ORE)); + $this->map(VanillaBlocks::COBBLESTONE(), fn() => new Writer(Ids::COBBLESTONE)); + $this->map(VanillaBlocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); + $this->map(VanillaBlocks::COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_STAIRS))); + $this->map(VanillaBlocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); + $this->map(VanillaBlocks::COBWEB(), fn() => new Writer(Ids::WEB)); + $this->map(VanillaBlocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ + return Writer::create(Ids::COCOA) + ->writeInt(BlockStateNames::AGE, $block->getAge()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(VanillaBlocks::CONCRETE(), function(Concrete $block) : Writer{ + return Writer::create(Ids::CONCRETE) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ + return Writer::create(Ids::CONCRETEPOWDER) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::CORAL(), function(Coral $block) : Writer{ + return Writer::create(Ids::CORAL) + ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeCoralType($block->getCoralType()); + }); + $this->map(VanillaBlocks::CORAL_BLOCK(), function(CoralBlock $block) : Writer{ + return Writer::create(Ids::CORAL_BLOCK) + ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeCoralType($block->getCoralType()); + }); + $this->map(VanillaBlocks::CORAL_FAN(), function(FloorCoralFan $block) : Writer{ + return Writer::create($block->isDead() ? Ids::CORAL_FAN_DEAD : Ids::CORAL_FAN) + ->writeCoralType($block->getCoralType()) + ->writeInt(BlockStateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ + Axis::X => 0, + Axis::Z => 1, + default => throw new BlockStateSerializeException("Invalid axis {$axis}"), + }); + }); + $this->map(VanillaBlocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); + $this->map(VanillaBlocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); + $this->map(VanillaBlocks::CRAFTING_TABLE(), fn() => new Writer(Ids::CRAFTING_TABLE)); + $this->map(VanillaBlocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); + $this->map(VanillaBlocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(VanillaBlocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); + $this->map(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::CYAN_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER)); + $this->map(VanillaBlocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); + $this->map(VanillaBlocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); + $this->map(VanillaBlocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); + $this->map(VanillaBlocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); + $this->map(VanillaBlocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); + $this->map(VanillaBlocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(VanillaBlocks::DARK_OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_OAK_STAIRS))); + $this->map(VanillaBlocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); + $this->map(VanillaBlocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); + $this->map(VanillaBlocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); + $this->map(VanillaBlocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); + $this->map(VanillaBlocks::DARK_PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_PRISMARINE_STAIRS))); + $this->map(VanillaBlocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ + return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) + ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + }); + $this->map(VanillaBlocks::DEAD_BUSH(), fn() => new Writer(Ids::DEADBUSH)); + $this->map(VanillaBlocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ + return Writer::create(Ids::DETECTOR_RAIL) + ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isActivated()) + ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(VanillaBlocks::DIAMOND(), fn() => new Writer(Ids::DIAMOND_BLOCK)); + $this->map(VanillaBlocks::DIAMOND_ORE(), fn() => new Writer(Ids::DIAMOND_ORE)); + $this->map(VanillaBlocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); + $this->map(VanillaBlocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); + $this->map(VanillaBlocks::DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DIORITE_STAIRS))); + $this->map(VanillaBlocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); + $this->map(VanillaBlocks::DIRT(), function(Dirt $block) : Writer{ + return Writer::create(Ids::DIRT) + ->writeString(BlockStateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); + }); + $this->map(VanillaBlocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::DRAGON_EGG(), fn() => new Writer(Ids::DRAGON_EGG)); + $this->map(VanillaBlocks::DRIED_KELP(), fn() => new Writer(Ids::DRIED_KELP_BLOCK)); + $this->map(VanillaBlocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ + return Writer::create(Ids::SHULKER_BOX) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::ELEMENT_ACTINIUM(), fn() => new Writer(Ids::ELEMENT_89)); + $this->map(VanillaBlocks::ELEMENT_ALUMINUM(), fn() => new Writer(Ids::ELEMENT_13)); + $this->map(VanillaBlocks::ELEMENT_AMERICIUM(), fn() => new Writer(Ids::ELEMENT_95)); + $this->map(VanillaBlocks::ELEMENT_ANTIMONY(), fn() => new Writer(Ids::ELEMENT_51)); + $this->map(VanillaBlocks::ELEMENT_ARGON(), fn() => new Writer(Ids::ELEMENT_18)); + $this->map(VanillaBlocks::ELEMENT_ARSENIC(), fn() => new Writer(Ids::ELEMENT_33)); + $this->map(VanillaBlocks::ELEMENT_ASTATINE(), fn() => new Writer(Ids::ELEMENT_85)); + $this->map(VanillaBlocks::ELEMENT_BARIUM(), fn() => new Writer(Ids::ELEMENT_56)); + $this->map(VanillaBlocks::ELEMENT_BERKELIUM(), fn() => new Writer(Ids::ELEMENT_97)); + $this->map(VanillaBlocks::ELEMENT_BERYLLIUM(), fn() => new Writer(Ids::ELEMENT_4)); + $this->map(VanillaBlocks::ELEMENT_BISMUTH(), fn() => new Writer(Ids::ELEMENT_83)); + $this->map(VanillaBlocks::ELEMENT_BOHRIUM(), fn() => new Writer(Ids::ELEMENT_107)); + $this->map(VanillaBlocks::ELEMENT_BORON(), fn() => new Writer(Ids::ELEMENT_5)); + $this->map(VanillaBlocks::ELEMENT_BROMINE(), fn() => new Writer(Ids::ELEMENT_35)); + $this->map(VanillaBlocks::ELEMENT_CADMIUM(), fn() => new Writer(Ids::ELEMENT_48)); + $this->map(VanillaBlocks::ELEMENT_CALCIUM(), fn() => new Writer(Ids::ELEMENT_20)); + $this->map(VanillaBlocks::ELEMENT_CALIFORNIUM(), fn() => new Writer(Ids::ELEMENT_98)); + $this->map(VanillaBlocks::ELEMENT_CARBON(), fn() => new Writer(Ids::ELEMENT_6)); + $this->map(VanillaBlocks::ELEMENT_CERIUM(), fn() => new Writer(Ids::ELEMENT_58)); + $this->map(VanillaBlocks::ELEMENT_CESIUM(), fn() => new Writer(Ids::ELEMENT_55)); + $this->map(VanillaBlocks::ELEMENT_CHLORINE(), fn() => new Writer(Ids::ELEMENT_17)); + $this->map(VanillaBlocks::ELEMENT_CHROMIUM(), fn() => new Writer(Ids::ELEMENT_24)); + $this->map(VanillaBlocks::ELEMENT_COBALT(), fn() => new Writer(Ids::ELEMENT_27)); + $this->map(VanillaBlocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(VanillaBlocks::ELEMENT_COPERNICIUM(), fn() => new Writer(Ids::ELEMENT_112)); + $this->map(VanillaBlocks::ELEMENT_COPPER(), fn() => new Writer(Ids::ELEMENT_29)); + $this->map(VanillaBlocks::ELEMENT_CURIUM(), fn() => new Writer(Ids::ELEMENT_96)); + $this->map(VanillaBlocks::ELEMENT_DARMSTADTIUM(), fn() => new Writer(Ids::ELEMENT_110)); + $this->map(VanillaBlocks::ELEMENT_DUBNIUM(), fn() => new Writer(Ids::ELEMENT_105)); + $this->map(VanillaBlocks::ELEMENT_DYSPROSIUM(), fn() => new Writer(Ids::ELEMENT_66)); + $this->map(VanillaBlocks::ELEMENT_EINSTEINIUM(), fn() => new Writer(Ids::ELEMENT_99)); + $this->map(VanillaBlocks::ELEMENT_ERBIUM(), fn() => new Writer(Ids::ELEMENT_68)); + $this->map(VanillaBlocks::ELEMENT_EUROPIUM(), fn() => new Writer(Ids::ELEMENT_63)); + $this->map(VanillaBlocks::ELEMENT_FERMIUM(), fn() => new Writer(Ids::ELEMENT_100)); + $this->map(VanillaBlocks::ELEMENT_FLEROVIUM(), fn() => new Writer(Ids::ELEMENT_114)); + $this->map(VanillaBlocks::ELEMENT_FLUORINE(), fn() => new Writer(Ids::ELEMENT_9)); + $this->map(VanillaBlocks::ELEMENT_FRANCIUM(), fn() => new Writer(Ids::ELEMENT_87)); + $this->map(VanillaBlocks::ELEMENT_GADOLINIUM(), fn() => new Writer(Ids::ELEMENT_64)); + $this->map(VanillaBlocks::ELEMENT_GALLIUM(), fn() => new Writer(Ids::ELEMENT_31)); + $this->map(VanillaBlocks::ELEMENT_GERMANIUM(), fn() => new Writer(Ids::ELEMENT_32)); + $this->map(VanillaBlocks::ELEMENT_GOLD(), fn() => new Writer(Ids::ELEMENT_79)); + $this->map(VanillaBlocks::ELEMENT_HAFNIUM(), fn() => new Writer(Ids::ELEMENT_72)); + $this->map(VanillaBlocks::ELEMENT_HASSIUM(), fn() => new Writer(Ids::ELEMENT_108)); + $this->map(VanillaBlocks::ELEMENT_HELIUM(), fn() => new Writer(Ids::ELEMENT_2)); + $this->map(VanillaBlocks::ELEMENT_HOLMIUM(), fn() => new Writer(Ids::ELEMENT_67)); + $this->map(VanillaBlocks::ELEMENT_HYDROGEN(), fn() => new Writer(Ids::ELEMENT_1)); + $this->map(VanillaBlocks::ELEMENT_INDIUM(), fn() => new Writer(Ids::ELEMENT_49)); + $this->map(VanillaBlocks::ELEMENT_IODINE(), fn() => new Writer(Ids::ELEMENT_53)); + $this->map(VanillaBlocks::ELEMENT_IRIDIUM(), fn() => new Writer(Ids::ELEMENT_77)); + $this->map(VanillaBlocks::ELEMENT_IRON(), fn() => new Writer(Ids::ELEMENT_26)); + $this->map(VanillaBlocks::ELEMENT_KRYPTON(), fn() => new Writer(Ids::ELEMENT_36)); + $this->map(VanillaBlocks::ELEMENT_LANTHANUM(), fn() => new Writer(Ids::ELEMENT_57)); + $this->map(VanillaBlocks::ELEMENT_LAWRENCIUM(), fn() => new Writer(Ids::ELEMENT_103)); + $this->map(VanillaBlocks::ELEMENT_LEAD(), fn() => new Writer(Ids::ELEMENT_82)); + $this->map(VanillaBlocks::ELEMENT_LITHIUM(), fn() => new Writer(Ids::ELEMENT_3)); + $this->map(VanillaBlocks::ELEMENT_LIVERMORIUM(), fn() => new Writer(Ids::ELEMENT_116)); + $this->map(VanillaBlocks::ELEMENT_LUTETIUM(), fn() => new Writer(Ids::ELEMENT_71)); + $this->map(VanillaBlocks::ELEMENT_MAGNESIUM(), fn() => new Writer(Ids::ELEMENT_12)); + $this->map(VanillaBlocks::ELEMENT_MANGANESE(), fn() => new Writer(Ids::ELEMENT_25)); + $this->map(VanillaBlocks::ELEMENT_MEITNERIUM(), fn() => new Writer(Ids::ELEMENT_109)); + $this->map(VanillaBlocks::ELEMENT_MENDELEVIUM(), fn() => new Writer(Ids::ELEMENT_101)); + $this->map(VanillaBlocks::ELEMENT_MERCURY(), fn() => new Writer(Ids::ELEMENT_80)); + $this->map(VanillaBlocks::ELEMENT_MOLYBDENUM(), fn() => new Writer(Ids::ELEMENT_42)); + $this->map(VanillaBlocks::ELEMENT_MOSCOVIUM(), fn() => new Writer(Ids::ELEMENT_115)); + $this->map(VanillaBlocks::ELEMENT_NEODYMIUM(), fn() => new Writer(Ids::ELEMENT_60)); + $this->map(VanillaBlocks::ELEMENT_NEON(), fn() => new Writer(Ids::ELEMENT_10)); + $this->map(VanillaBlocks::ELEMENT_NEPTUNIUM(), fn() => new Writer(Ids::ELEMENT_93)); + $this->map(VanillaBlocks::ELEMENT_NICKEL(), fn() => new Writer(Ids::ELEMENT_28)); + $this->map(VanillaBlocks::ELEMENT_NIHONIUM(), fn() => new Writer(Ids::ELEMENT_113)); + $this->map(VanillaBlocks::ELEMENT_NIOBIUM(), fn() => new Writer(Ids::ELEMENT_41)); + $this->map(VanillaBlocks::ELEMENT_NITROGEN(), fn() => new Writer(Ids::ELEMENT_7)); + $this->map(VanillaBlocks::ELEMENT_NOBELIUM(), fn() => new Writer(Ids::ELEMENT_102)); + $this->map(VanillaBlocks::ELEMENT_OGANESSON(), fn() => new Writer(Ids::ELEMENT_118)); + $this->map(VanillaBlocks::ELEMENT_OSMIUM(), fn() => new Writer(Ids::ELEMENT_76)); + $this->map(VanillaBlocks::ELEMENT_OXYGEN(), fn() => new Writer(Ids::ELEMENT_8)); + $this->map(VanillaBlocks::ELEMENT_PALLADIUM(), fn() => new Writer(Ids::ELEMENT_46)); + $this->map(VanillaBlocks::ELEMENT_PHOSPHORUS(), fn() => new Writer(Ids::ELEMENT_15)); + $this->map(VanillaBlocks::ELEMENT_PLATINUM(), fn() => new Writer(Ids::ELEMENT_78)); + $this->map(VanillaBlocks::ELEMENT_PLUTONIUM(), fn() => new Writer(Ids::ELEMENT_94)); + $this->map(VanillaBlocks::ELEMENT_POLONIUM(), fn() => new Writer(Ids::ELEMENT_84)); + $this->map(VanillaBlocks::ELEMENT_POTASSIUM(), fn() => new Writer(Ids::ELEMENT_19)); + $this->map(VanillaBlocks::ELEMENT_PRASEODYMIUM(), fn() => new Writer(Ids::ELEMENT_59)); + $this->map(VanillaBlocks::ELEMENT_PROMETHIUM(), fn() => new Writer(Ids::ELEMENT_61)); + $this->map(VanillaBlocks::ELEMENT_PROTACTINIUM(), fn() => new Writer(Ids::ELEMENT_91)); + $this->map(VanillaBlocks::ELEMENT_RADIUM(), fn() => new Writer(Ids::ELEMENT_88)); + $this->map(VanillaBlocks::ELEMENT_RADON(), fn() => new Writer(Ids::ELEMENT_86)); + $this->map(VanillaBlocks::ELEMENT_RHENIUM(), fn() => new Writer(Ids::ELEMENT_75)); + $this->map(VanillaBlocks::ELEMENT_RHODIUM(), fn() => new Writer(Ids::ELEMENT_45)); + $this->map(VanillaBlocks::ELEMENT_ROENTGENIUM(), fn() => new Writer(Ids::ELEMENT_111)); + $this->map(VanillaBlocks::ELEMENT_RUBIDIUM(), fn() => new Writer(Ids::ELEMENT_37)); + $this->map(VanillaBlocks::ELEMENT_RUTHENIUM(), fn() => new Writer(Ids::ELEMENT_44)); + $this->map(VanillaBlocks::ELEMENT_RUTHERFORDIUM(), fn() => new Writer(Ids::ELEMENT_104)); + $this->map(VanillaBlocks::ELEMENT_SAMARIUM(), fn() => new Writer(Ids::ELEMENT_62)); + $this->map(VanillaBlocks::ELEMENT_SCANDIUM(), fn() => new Writer(Ids::ELEMENT_21)); + $this->map(VanillaBlocks::ELEMENT_SEABORGIUM(), fn() => new Writer(Ids::ELEMENT_106)); + $this->map(VanillaBlocks::ELEMENT_SELENIUM(), fn() => new Writer(Ids::ELEMENT_34)); + $this->map(VanillaBlocks::ELEMENT_SILICON(), fn() => new Writer(Ids::ELEMENT_14)); + $this->map(VanillaBlocks::ELEMENT_SILVER(), fn() => new Writer(Ids::ELEMENT_47)); + $this->map(VanillaBlocks::ELEMENT_SODIUM(), fn() => new Writer(Ids::ELEMENT_11)); + $this->map(VanillaBlocks::ELEMENT_STRONTIUM(), fn() => new Writer(Ids::ELEMENT_38)); + $this->map(VanillaBlocks::ELEMENT_SULFUR(), fn() => new Writer(Ids::ELEMENT_16)); + $this->map(VanillaBlocks::ELEMENT_TANTALUM(), fn() => new Writer(Ids::ELEMENT_73)); + $this->map(VanillaBlocks::ELEMENT_TECHNETIUM(), fn() => new Writer(Ids::ELEMENT_43)); + $this->map(VanillaBlocks::ELEMENT_TELLURIUM(), fn() => new Writer(Ids::ELEMENT_52)); + $this->map(VanillaBlocks::ELEMENT_TENNESSINE(), fn() => new Writer(Ids::ELEMENT_117)); + $this->map(VanillaBlocks::ELEMENT_TERBIUM(), fn() => new Writer(Ids::ELEMENT_65)); + $this->map(VanillaBlocks::ELEMENT_THALLIUM(), fn() => new Writer(Ids::ELEMENT_81)); + $this->map(VanillaBlocks::ELEMENT_THORIUM(), fn() => new Writer(Ids::ELEMENT_90)); + $this->map(VanillaBlocks::ELEMENT_THULIUM(), fn() => new Writer(Ids::ELEMENT_69)); + $this->map(VanillaBlocks::ELEMENT_TIN(), fn() => new Writer(Ids::ELEMENT_50)); + $this->map(VanillaBlocks::ELEMENT_TITANIUM(), fn() => new Writer(Ids::ELEMENT_22)); + $this->map(VanillaBlocks::ELEMENT_TUNGSTEN(), fn() => new Writer(Ids::ELEMENT_74)); + $this->map(VanillaBlocks::ELEMENT_URANIUM(), fn() => new Writer(Ids::ELEMENT_92)); + $this->map(VanillaBlocks::ELEMENT_VANADIUM(), fn() => new Writer(Ids::ELEMENT_23)); + $this->map(VanillaBlocks::ELEMENT_XENON(), fn() => new Writer(Ids::ELEMENT_54)); + $this->map(VanillaBlocks::ELEMENT_YTTERBIUM(), fn() => new Writer(Ids::ELEMENT_70)); + $this->map(VanillaBlocks::ELEMENT_YTTRIUM(), fn() => new Writer(Ids::ELEMENT_39)); + $this->map(VanillaBlocks::ELEMENT_ZERO(), fn() => new Writer(Ids::ELEMENT_0)); + $this->map(VanillaBlocks::ELEMENT_ZINC(), fn() => new Writer(Ids::ELEMENT_30)); + $this->map(VanillaBlocks::ELEMENT_ZIRCONIUM(), fn() => new Writer(Ids::ELEMENT_40)); + $this->map(VanillaBlocks::EMERALD(), fn() => new Writer(Ids::EMERALD_BLOCK)); + $this->map(VanillaBlocks::EMERALD_ORE(), fn() => new Writer(Ids::EMERALD_ORE)); + $this->map(VanillaBlocks::ENCHANTING_TABLE(), fn() => new Writer(Ids::ENCHANTING_TABLE)); + $this->map(VanillaBlocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ + return Writer::create(Ids::ENDER_CHEST) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::END_PORTAL_FRAME(), function(EndPortalFrame $block) : Writer{ + return Writer::create(Ids::END_PORTAL_FRAME) + ->writeBool(BlockStateNames::END_PORTAL_EYE_BIT, $block->hasEye()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::END_ROD(), function(EndRod $block) : Writer{ + //TODO: not sure if this needs down/up to be flipped like legacy metadata? + return Writer::create(Ids::END_ROD) + ->writeFacingDirection($block->getFacing()); + }); + $this->map(VanillaBlocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); + $this->map(VanillaBlocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); + $this->map(VanillaBlocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); + $this->map(VanillaBlocks::END_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::END_BRICK_STAIRS))); + $this->map(VanillaBlocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); + $this->map(VanillaBlocks::FAKE_WOODEN_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_WOOD)); + $this->map(VanillaBlocks::FARMLAND(), function(Farmland $block) : Writer{ + return Writer::create(Ids::FARMLAND) + ->writeInt(BlockStateNames::MOISTURIZED_AMOUNT, $block->getWetness()); + }); + $this->map(VanillaBlocks::FERN(), fn() => Writer::create(Ids::TALLGRASS) + ->writeString(BlockStateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_FERN)); + $this->map(VanillaBlocks::FIRE(), function(Fire $block) : Writer{ + return Writer::create(Ids::FIRE) + ->writeInt(BlockStateNames::AGE, $block->getAge()); + }); + $this->map(VanillaBlocks::FLETCHING_TABLE(), fn() => new Writer(Ids::FLETCHING_TABLE)); + $this->map(VanillaBlocks::FLOWER_POT(), function() : Writer{ + return Writer::create(Ids::FLOWER_POT) + ->writeBool(BlockStateNames::UPDATE_BIT, true); //to keep MCPE happy + }); + $this->map(VanillaBlocks::FROSTED_ICE(), function(FrostedIce $block) : Writer{ + return Writer::create(Ids::FROSTED_ICE) + ->writeInt(BlockStateNames::AGE, $block->getAge()); + }); + $this->map(VanillaBlocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); + $this->map(VanillaBlocks::GLASS(), fn() => new Writer(Ids::GLASS)); + $this->map(VanillaBlocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE)); + $this->map(VanillaBlocks::GLOWING_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN)); + $this->map(VanillaBlocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE)); + $this->map(VanillaBlocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK)); + $this->map(VanillaBlocks::GOLD_ORE(), fn() => new Writer(Ids::GOLD_ORE)); + $this->map(VanillaBlocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); + $this->map(VanillaBlocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); + $this->map(VanillaBlocks::GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::GRANITE_STAIRS))); + $this->map(VanillaBlocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); + $this->map(VanillaBlocks::GRASS(), fn() => new Writer(Ids::GRASS)); + $this->map(VanillaBlocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); + $this->map(VanillaBlocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL)); + $this->map(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GRAY_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GREEN_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); + $this->map(VanillaBlocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY)); + $this->map(VanillaBlocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS)); + $this->map(VanillaBlocks::HARDENED_GLASS_PANE(), fn() => new Writer(Ids::HARD_GLASS_PANE)); + $this->map(VanillaBlocks::HAY_BALE(), function(HayBale $block) : Writer{ + return Writer::create(Ids::HAY_BLOCK) + ->writeInt(BlockStateNames::DEPRECATED, 0) + ->writePillarAxis($block->getAxis()); + }); + $this->map(VanillaBlocks::HOPPER(), function(Hopper $block) : Writer{ + return Writer::create(Ids::HOPPER) + ->writeBool(BlockStateNames::TOGGLE_BIT, $block->isPowered()) + ->writeFacingWithoutUp($block->getFacing()); + }); + $this->map(VanillaBlocks::ICE(), fn() => new Writer(Ids::ICE)); + $this->map(VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK)); + $this->map(VanillaBlocks::INFESTED_COBBLESTONE(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE)); + $this->map(VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK)); + $this->map(VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK)); + $this->map(VanillaBlocks::INFESTED_STONE(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE)); + $this->map(VanillaBlocks::INFESTED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); + $this->map(VanillaBlocks::INFO_UPDATE(), fn() => new Writer(Ids::INFO_UPDATE)); + $this->map(VanillaBlocks::INFO_UPDATE2(), fn() => new Writer(Ids::INFO_UPDATE2)); + $this->map(VanillaBlocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLEBEDROCK)); + $this->map(VanillaBlocks::IRON(), fn() => new Writer(Ids::IRON_BLOCK)); + $this->map(VanillaBlocks::IRON_BARS(), fn() => new Writer(Ids::IRON_BARS)); + $this->map(VanillaBlocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); + $this->map(VanillaBlocks::IRON_ORE(), fn() => new Writer(Ids::IRON_ORE)); + $this->map(VanillaBlocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); + $this->map(VanillaBlocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ + return Writer::create(Ids::FRAME) + ->writeBool(BlockStateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) + ->writeBool(BlockStateNames::ITEM_FRAME_PHOTO_BIT, false) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); + $this->map(VanillaBlocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); + $this->map(VanillaBlocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); + $this->map(VanillaBlocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); + $this->map(VanillaBlocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); + $this->map(VanillaBlocks::JUNGLE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::JUNGLE_STANDING_SIGN))); + $this->map(VanillaBlocks::JUNGLE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(VanillaBlocks::JUNGLE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::JUNGLE_STAIRS))); + $this->map(VanillaBlocks::JUNGLE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::JUNGLE_TRAPDOOR))); + $this->map(VanillaBlocks::JUNGLE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::JUNGLE_WALL_SIGN))); + $this->map(VanillaBlocks::JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::LAB_TABLE(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(VanillaBlocks::LADDER(), function(Ladder $block) : Writer{ + return Writer::create(Ids::LADDER) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::LANTERN(), function(Lantern $block) : Writer{ + return Writer::create(Ids::LANTERN) + ->writeBool(BlockStateNames::HANGING, $block->isHanging()); + }); + $this->map(VanillaBlocks::LAPIS_LAZULI(), fn() => new Writer(Ids::LAPIS_BLOCK)); + $this->map(VanillaBlocks::LAPIS_LAZULI_ORE(), fn() => new Writer(Ids::LAPIS_ORE)); + $this->map(VanillaBlocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_FERN, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA)); + $this->map(VanillaBlocks::LECTERN(), function(Lectern $block) : Writer{ + return Writer::create(Ids::LECTERN) + ->writeBool(BlockStateNames::POWERED_BIT, $block->isProducingSignal()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::LEGACY_STONECUTTER(), fn() => new Writer(Ids::STONECUTTER)); + $this->map(VanillaBlocks::LEVER(), function(Lever $block) : Writer{ + return Writer::create(Ids::LEVER) + ->writeBool(BlockStateNames::OPEN_BIT, $block->isActivated()) + ->writeString(BlockStateNames::LEVER_DIRECTION, match($block->getFacing()->id()){ + LeverFacing::DOWN_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH, + LeverFacing::DOWN_AXIS_X()->id() => StringValues::LEVER_DIRECTION_DOWN_EAST_WEST, + LeverFacing::UP_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH, + LeverFacing::UP_AXIS_X()->id() => StringValues::LEVER_DIRECTION_UP_EAST_WEST, + LeverFacing::NORTH()->id() => StringValues::LEVER_DIRECTION_NORTH, + LeverFacing::SOUTH()->id() => StringValues::LEVER_DIRECTION_SOUTH, + LeverFacing::WEST()->id() => StringValues::LEVER_DIRECTION_WEST, + LeverFacing::EAST()->id() => StringValues::LEVER_DIRECTION_EAST, + default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), + }); + }); + $this->map(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); + $this->map(VanillaBlocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY)); + $this->map(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIME_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ + return Writer::create(Ids::LIT_PUMPKIN) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::LOOM(), function(Loom $block) : Writer{ + return Writer::create(Ids::LOOM) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::MAGENTA_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::MAGMA(), fn() => new Writer(Ids::MAGMA)); + $this->map(VanillaBlocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(VanillaBlocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK)); + $this->map(VanillaBlocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); + $this->map(VanillaBlocks::MOB_HEAD(), function(Skull $block) : Writer{ + return Writer::create(Ids::SKULL) + ->writeBool(BlockStateNames::NO_DROP_BIT, $block->isNoDrops()) + ->writeFacingWithoutDown($block->getFacing()); + }); + $this->map(VanillaBlocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); + $this->map(VanillaBlocks::MOSSY_COBBLESTONE(), fn() => new Writer(Ids::MOSSY_COBBLESTONE)); + $this->map(VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); + $this->map(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_COBBLESTONE_STAIRS))); + $this->map(VanillaBlocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); + $this->map(VanillaBlocks::MOSSY_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_MOSSY)); + $this->map(VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); + $this->map(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_STONE_BRICK_STAIRS))); + $this->map(VanillaBlocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); + $this->map(VanillaBlocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) + ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); + $this->map(VanillaBlocks::MYCELIUM(), fn() => new Writer(Ids::MYCELIUM)); + $this->map(VanillaBlocks::NETHERRACK(), fn() => new Writer(Ids::NETHERRACK)); + $this->map(VanillaBlocks::NETHER_BRICKS(), fn() => new Writer(Ids::NETHER_BRICK)); + $this->map(VanillaBlocks::NETHER_BRICK_FENCE(), fn() => new Writer(Ids::NETHER_BRICK_FENCE)); + $this->map(VanillaBlocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); + $this->map(VanillaBlocks::NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NETHER_BRICK_STAIRS))); + $this->map(VanillaBlocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); + $this->map(VanillaBlocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ + return Writer::create(Ids::PORTAL) + ->writeString(BlockStateNames::PORTAL_AXIS, match($block->getAxis()){ + Axis::X => StringValues::PORTAL_AXIS_X, + Axis::Z => StringValues::PORTAL_AXIS_Z, + default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), + }); + }); + $this->map(VanillaBlocks::NETHER_QUARTZ_ORE(), fn() => new Writer(Ids::QUARTZ_ORE)); + $this->map(VanillaBlocks::NETHER_REACTOR_CORE(), fn() => new Writer(Ids::NETHERREACTOR)); + $this->map(VanillaBlocks::NETHER_WART(), function(NetherWartPlant $block) : Writer{ + return Writer::create(Ids::NETHER_WART) + ->writeInt(BlockStateNames::AGE, $block->getAge()); + }); + $this->map(VanillaBlocks::NETHER_WART_BLOCK(), fn() => new Writer(Ids::NETHER_WART_BLOCK)); + $this->map(VanillaBlocks::NOTE_BLOCK(), fn() => new Writer(Ids::NOTEBLOCK)); + $this->map(VanillaBlocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); + $this->map(VanillaBlocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); + $this->map(VanillaBlocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); + $this->map(VanillaBlocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); + $this->map(VanillaBlocks::OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::STANDING_SIGN))); + $this->map(VanillaBlocks::OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_OAK)); + $this->map(VanillaBlocks::OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::OAK_STAIRS))); + $this->map(VanillaBlocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); + $this->map(VanillaBlocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); + $this->map(VanillaBlocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN)); + $this->map(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::ORANGE_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); + $this->map(VanillaBlocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); + $this->map(VanillaBlocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE)); + $this->map(VanillaBlocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PINK_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); + $this->map(VanillaBlocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); + $this->map(VanillaBlocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); + $this->map(VanillaBlocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); + $this->map(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_ANDESITE_STAIRS))); + $this->map(VanillaBlocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); + $this->map(VanillaBlocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); + $this->map(VanillaBlocks::POLISHED_DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_DIORITE_STAIRS))); + $this->map(VanillaBlocks::POLISHED_GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE_SMOOTH)); + $this->map(VanillaBlocks::POLISHED_GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE)); + $this->map(VanillaBlocks::POLISHED_GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_GRANITE_STAIRS))); + $this->map(VanillaBlocks::POPPY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_POPPY)); + $this->map(VanillaBlocks::POTATOES(), fn(Potato $block) => Helper::encodeCrops($block, new Writer(Ids::POTATOES))); + $this->map(VanillaBlocks::POWERED_RAIL(), function(PoweredRail $block) : Writer{ + return Writer::create(Ids::GOLDEN_RAIL) + ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isPowered()) + ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(VanillaBlocks::PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT)); + $this->map(VanillaBlocks::PRISMARINE_BRICKS(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_BRICKS)); + $this->map(VanillaBlocks::PRISMARINE_BRICKS_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK)); + $this->map(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_BRICKS_STAIRS))); + $this->map(VanillaBlocks::PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH)); + $this->map(VanillaBlocks::PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_STAIRS))); + $this->map(VanillaBlocks::PRISMARINE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_PRISMARINE)); + $this->map(VanillaBlocks::PUMPKIN(), function() : Writer{ + return Writer::create(Ids::PUMPKIN) + ->writeLegacyHorizontalFacing(Facing::SOUTH); //no longer used + }); + $this->map(VanillaBlocks::PUMPKIN_STEM(), fn(PumpkinStem $block) => Helper::encodeStem($block, new Writer(Ids::PUMPKIN_STEM))); + $this->map(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PURPLE_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::PURPLE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_BP))); + $this->map(VanillaBlocks::PURPUR(), function() : Writer{ + return Writer::create(Ids::PURPUR_BLOCK) + ->writeString(BlockStateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_DEFAULT) + ->writePillarAxis(Axis::Y); //useless, but MCPE wants it + }); + $this->map(VanillaBlocks::PURPUR_PILLAR(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::PURPUR_BLOCK) + ->writeString(BlockStateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_LINES) + ->writePillarAxis($block->getAxis()); + }); + $this->map(VanillaBlocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); + $this->map(VanillaBlocks::PURPUR_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PURPUR_STAIRS))); + $this->map(VanillaBlocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); + $this->map(VanillaBlocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); + $this->map(VanillaBlocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); + $this->map(VanillaBlocks::QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::QUARTZ_STAIRS))); + $this->map(VanillaBlocks::RAIL(), function(Rail $block) : Writer{ + return Writer::create(Ids::RAIL) + ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(VanillaBlocks::REDSTONE(), fn() => new Writer(Ids::REDSTONE_BLOCK)); + $this->map(VanillaBlocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : BlockStateWriter{ + return BlockStateWriter::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) + ->writeBool(BlockStateNames::OUTPUT_LIT_BIT, $block->isPowered()) + ->writeBool(BlockStateNames::OUTPUT_SUBTRACT_BIT, $block->isSubtractMode()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::REDSTONE_LAMP(), fn(RedstoneLamp $block) => new Writer($block->isPowered() ? Ids::LIT_REDSTONE_LAMP : Ids::REDSTONE_LAMP)); + $this->map(VanillaBlocks::REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_REDSTONE_ORE : Ids::REDSTONE_ORE)); + $this->map(VanillaBlocks::REDSTONE_REPEATER(), function(RedstoneRepeater $block) : BlockStateWriter{ + return Writer::create($block->isPowered() ? Ids::POWERED_REPEATER : Ids::UNPOWERED_REPEATER) + ->writeLegacyHorizontalFacing($block->getFacing()) + ->writeInt(BlockStateNames::REPEATER_DELAY, $block->getDelay() - 1); + }); + $this->map(VanillaBlocks::REDSTONE_TORCH(), function(RedstoneTorch $block) : Writer{ + return Writer::create($block->isLit() ? Ids::REDSTONE_TORCH : Ids::UNLIT_REDSTONE_TORCH) + ->writeTorchFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::REDSTONE_WIRE(), function(RedstoneWire $block) : Writer{ + return Writer::create(Ids::REDSTONE_WIRE) + ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + }); + $this->map(VanillaBlocks::RED_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::RED_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM)); + $this->map(VanillaBlocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); + $this->map(VanillaBlocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); + $this->map(VanillaBlocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); + $this->map(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_NETHER_BRICK_STAIRS))); + $this->map(VanillaBlocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); + $this->map(VanillaBlocks::RED_SAND(), fn() => Writer::create(Ids::SAND) + ->writeString(BlockStateNames::SAND_TYPE, StringValues::SAND_TYPE_RED)); + $this->map(VanillaBlocks::RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); + $this->map(VanillaBlocks::RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE)); + $this->map(VanillaBlocks::RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_SANDSTONE_STAIRS))); + $this->map(VanillaBlocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); + $this->map(VanillaBlocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); + $this->map(VanillaBlocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); + $this->map(VanillaBlocks::RESERVED6(), fn() => new Writer(Ids::RESERVED6)); + $this->map(VanillaBlocks::ROSE_BUSH(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_ROSE, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::SAND(), fn() => Writer::create(Ids::SAND) + ->writeString(BlockStateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); + $this->map(VanillaBlocks::SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); + $this->map(VanillaBlocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); + $this->map(VanillaBlocks::SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SANDSTONE_STAIRS))); + $this->map(VanillaBlocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); + $this->map(VanillaBlocks::SEA_LANTERN(), fn() => new Writer(Ids::SEALANTERN)); + $this->map(VanillaBlocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ + return Writer::create(Ids::SEA_PICKLE) + ->writeBool(BlockStateNames::DEAD_BIT, !$block->isUnderwater()) + ->writeInt(BlockStateNames::CLUSTER_COUNT, $block->getCount() - 1); + }); + $this->map(VanillaBlocks::SHULKER_BOX(), fn() => new Writer(Ids::UNDYED_SHULKER_BOX)); + $this->map(VanillaBlocks::SLIME(), fn() => new Writer(Ids::SLIME)); + $this->map(VanillaBlocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); + $this->map(VanillaBlocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); + $this->map(VanillaBlocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); + $this->map(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_QUARTZ_STAIRS))); + $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); + $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE)); + $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_RED_SANDSTONE_STAIRS))); + $this->map(VanillaBlocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); + $this->map(VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); + $this->map(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_SANDSTONE_STAIRS))); + $this->map(VanillaBlocks::SMOOTH_STONE(), fn() => new Writer(Ids::SMOOTH_STONE)); + $this->map(VanillaBlocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); + $this->map(VanillaBlocks::SNOW(), fn() => new Writer(Ids::SNOW)); + $this->map(VanillaBlocks::SNOW_LAYER(), function(SnowLayer $block) : Writer{ + return Writer::create(Ids::SNOW_LAYER) + ->writeBool(BlockStateNames::COVERED_BIT, false) + ->writeInt(BlockStateNames::HEIGHT, $block->getLayers() - 1); + }); + $this->map(VanillaBlocks::SOUL_SAND(), fn() => new Writer(Ids::SOUL_SAND)); + $this->map(VanillaBlocks::SPONGE(), function(Sponge $block) : Writer{ + return Writer::create(Ids::SPONGE) + ->writeString(BlockStateNames::SPONGE_TYPE, $block->isWet() ? StringValues::SPONGE_TYPE_WET : StringValues::SPONGE_TYPE_DRY); + }); + $this->map(VanillaBlocks::SPRUCE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::SPRUCE_BUTTON))); + $this->map(VanillaBlocks::SPRUCE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::SPRUCE_DOOR))); + $this->map(VanillaBlocks::SPRUCE_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); + $this->map(VanillaBlocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); + $this->map(VanillaBlocks::SPRUCE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::SPRUCE_STANDING_SIGN))); + $this->map(VanillaBlocks::SPRUCE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(VanillaBlocks::SPRUCE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::SPRUCE_STAIRS))); + $this->map(VanillaBlocks::SPRUCE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::SPRUCE_TRAPDOOR))); + $this->map(VanillaBlocks::SPRUCE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::SPRUCE_WALL_SIGN))); + $this->map(VanillaBlocks::SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STAINED_CLAY(), function(StainedHardenedClay $block) : Writer{ + return Writer::create(Ids::STAINED_HARDENED_CLAY) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::STAINED_GLASS(), function(StainedGlass $block) : Writer{ + return Writer::create(Ids::STAINED_GLASS) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::STAINED_GLASS_PANE(), function(StainedGlassPane $block) : Writer{ + return Writer::create(Ids::STAINED_GLASS_PANE) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::STAINED_HARDENED_GLASS(), function(StainedHardenedGlass $block) : Writer{ + return Writer::create(Ids::HARD_STAINED_GLASS) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::STAINED_HARDENED_GLASS_PANE(), function(StainedHardenedGlassPane $block) : Writer{ + return Writer::create(Ids::HARD_STAINED_GLASS_PANE) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::STONE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_STONE)); + $this->map(VanillaBlocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); + $this->map(VanillaBlocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); + $this->map(VanillaBlocks::STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_BRICK_STAIRS))); + $this->map(VanillaBlocks::STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_STONE_BRICK)); + $this->map(VanillaBlocks::STONE_BUTTON(), fn(StoneButton $block) => Helper::encodeButton($block, new Writer(Ids::STONE_BUTTON))); + $this->map(VanillaBlocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); + $this->map(VanillaBlocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); + $this->map(VanillaBlocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); + $this->map(VanillaBlocks::STRIPPED_ACACIA_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_ACACIA_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STRIPPED_BIRCH_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_BIRCH_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STRIPPED_DARK_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_DARK_OAK_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STRIPPED_JUNGLE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_JUNGLE_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STRIPPED_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_OAK_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::STRIPPED_SPRUCE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_SPRUCE_LOG) + ->writePillarAxis($block->getAxis())); + $this->map(VanillaBlocks::STRIPPED_SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(VanillaBlocks::SUGARCANE(), function(Sugarcane $block) : Writer{ + return Writer::create(Ids::REEDS) + ->writeInt(BlockStateNames::AGE, $block->getAge()); + }); + $this->map(VanillaBlocks::SUNFLOWER(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(VanillaBlocks::SWEET_BERRY_BUSH(), function(SweetBerryBush $block) : Writer{ + return Writer::create(Ids::SWEET_BERRY_BUSH) + ->writeInt(BlockStateNames::GROWTH, $block->getAge()); + }); + $this->map(VanillaBlocks::TALL_GRASS(), fn() => Writer::create(Ids::TALLGRASS) + ->writeString(BlockStateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_TALL)); + $this->map(VanillaBlocks::TNT(), function(TNT $block) : Writer{ + return Writer::create(Ids::TNT) + ->writeBool(BlockStateNames::ALLOW_UNDERWATER_BIT, $block->worksUnderwater()) + ->writeBool(BlockStateNames::EXPLODE_BIT, $block->isUnstable()); + }); + $this->map(VanillaBlocks::TORCH(), function(Torch $block) : Writer{ + return Writer::create(Ids::TORCH) + ->writeTorchFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::TRAPPED_CHEST(), function(TrappedChest $block) : Writer{ + return Writer::create(Ids::TRAPPED_CHEST) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::TRIPWIRE(), function(Tripwire $block) : Writer{ + return Writer::create(Ids::TRIPWIRE) + ->writeBool(BlockStateNames::ATTACHED_BIT, $block->isConnected()) + ->writeBool(BlockStateNames::DISARMED_BIT, $block->isDisarmed()) + ->writeBool(BlockStateNames::POWERED_BIT, $block->isTriggered()) + ->writeBool(BlockStateNames::SUSPENDED_BIT, $block->isSuspended()); + }); + $this->map(VanillaBlocks::TRIPWIRE_HOOK(), function(TripwireHook $block) : Writer{ + return Writer::create(Ids::TRIPWIRE_HOOK) + ->writeBool(BlockStateNames::ATTACHED_BIT, $block->isConnected()) + ->writeBool(BlockStateNames::POWERED_BIT, $block->isPowered()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ + return Writer::create(Ids::UNDERWATER_TORCH) + ->writeTorchFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::VINES(), function(Vine $block) : Writer{ + return Writer::create(Ids::VINE) + ->writeInt(BlockStateNames::VINE_DIRECTION_BITS, ($block->hasFace(Facing::NORTH) ? BlockLegacyMetadata::VINE_FLAG_NORTH : 0) | ($block->hasFace(Facing::SOUTH) ? BlockLegacyMetadata::VINE_FLAG_SOUTH : 0) | ($block->hasFace(Facing::WEST) ? BlockLegacyMetadata::VINE_FLAG_WEST : 0) | ($block->hasFace(Facing::EAST) ? BlockLegacyMetadata::VINE_FLAG_EAST : 0)); + }); + $this->map(VanillaBlocks::WALL_BANNER(), function(WallBanner $block) : Writer{ + return Writer::create(Ids::WALL_BANNER) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::WALL_CORAL_FAN(), function(WallCoralFan $block) : Writer{ + $coralType = $block->getCoralType(); + return Writer::create(match($coralType->id()){ + CoralType::TUBE()->id(), CoralType::BRAIN()->id() => Ids::CORAL_FAN_HANG, + CoralType::BUBBLE()->id(), CoralType::FIRE()->id() => Ids::CORAL_FAN_HANG2, + CoralType::HORN()->id() => Ids::CORAL_FAN_HANG3, + default => throw new BlockStateSerializeException("Invalid Coral type " . $coralType->name()), + }) + ->writeBool(BlockStateNames::CORAL_HANG_TYPE_BIT, $coralType->equals(CoralType::BRAIN()) || $coralType->equals(CoralType::FIRE())) + ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeCoralFacing($block->getFacing()); + }); + $this->map(VanillaBlocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); + $this->map(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ + return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) + ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + }); + $this->map(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), function(WeightedPressurePlateLight $block) : Writer{ + return Writer::create(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE) + ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + }); + $this->map(VanillaBlocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); + $this->map(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::WHITE_GLAZED_TERRACOTTA))); + $this->map(VanillaBlocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); + $this->map(VanillaBlocks::WOOL(), function(Wool $block) : Writer{ + return Writer::create(Ids::WOOL) + ->writeColor($block->getColor()); + }); + $this->map(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::YELLOW_GLAZED_TERRACOTTA))); } } diff --git a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php new file mode 100644 index 000000000..0dbb28af0 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php @@ -0,0 +1,269 @@ +writeBool(BlockStateNames::STRIPPED_BIT, $block->isStripped()) + ->writePillarAxis(Axis::Y) //TODO: our implementation doesn't support this yet + ->writeTreeType($block->getTreeType()); + } + + public static function encodeButton(Button $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeFacingDirection($block->getFacing()) + ->writeBool(BlockStateNames::BUTTON_PRESSED_BIT, $block->isPressed()); + } + + public static function encodeChemistryTable(ChemistryTable $block, string $chemistryTableType, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeString(BlockStateNames::CHEMISTRY_TABLE_TYPE, $chemistryTableType) + ->writeLegacyHorizontalFacing($block->getFacing()); + } + + public static function encodeCrops(Crops $block, BlockStateWriter $out) : BlockStateWriter{ + return $out->writeInt(BlockStateNames::GROWTH, $block->getAge()); + } + + public static function encodeColoredTorch(Torch $block, bool $highBit, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(BlockStateNames::COLOR_BIT, $highBit) + ->writeTorchFacing($block->getFacing()); + } + + public static function encodeDoor(Door $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(BlockStateNames::UPPER_BLOCK_BIT, $block->isTop()) + ->writeLegacyHorizontalFacing(Facing::rotateY($block->getFacing(), true)) + ->writeBool(BlockStateNames::DOOR_HINGE_BIT, $block->isHingeRight()) + ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()); + } + + public static function encodeDoublePlant(DoublePlant $block, string $doublePlantType, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(BlockStateNames::UPPER_BLOCK_BIT, $block->isTop()) + ->writeString(BlockStateNames::DOUBLE_PLANT_TYPE, $doublePlantType); + } + + public static function encodeFenceGate(FenceGate $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeLegacyHorizontalFacing($block->getFacing()) + ->writeBool(BlockStateNames::IN_WALL_BIT, $block->isInWall()) + ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()); + } + + public static function encodeFloorSign(FloorSign $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeInt(BlockStateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); + } + + public static function encodeFurnace(Furnace $block, string $unlitId, string $litId) : BlockStateWriter{ + return BlockStateWriter::create($block->isLit() ? $litId : $unlitId) + ->writeHorizontalFacing($block->getFacing()); + } + public static function encodeGlazedTerracotta(GlazedTerracotta $block, BlockStateWriter $out) : BlockStateWriter{ + return $out->writeHorizontalFacing($block->getFacing()); + } + + private static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(BlockStateNames::PERSISTENT_BIT, $block->isNoDecay()) + ->writeBool(BlockStateNames::UPDATE_BIT, $block->isCheckDecay()); + } + + public static function encodeLeaves1(Leaves $block, string $type) : BlockStateWriter{ + return self::encodeLeaves($block, BlockStateWriter::create(Ids::LEAVES) + ->writeString(BlockStateNames::OLD_LEAF_TYPE, $type)); + } + + public static function encodeLeaves2(Leaves $block, string $type) : BlockStateWriter{ + return self::encodeLeaves($block, BlockStateWriter::create(Ids::LEAVES2) + ->writeString(BlockStateNames::NEW_LEAF_TYPE, $type)); + } + + public static function encodeLiquid(Liquid $block, string $stillId, string $flowingId) : BlockStateWriter{ + return BlockStateWriter::create($block->isStill() ? $stillId : $flowingId) + ->writeInt(BlockStateNames::LIQUID_DEPTH, $block->getDecay() | ($block->isFalling() ? 0x8 : 0)); + } + + private static function encodeLog(Log $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writePillarAxis($block->getAxis()); + } + + public static function encodeLog1(Log $block, string $type) : BlockStateWriter{ + return self::encodeLog($block, BlockStateWriter::create(Ids::LOG) + ->writeString(BlockStateNames::OLD_LOG_TYPE, $type)); + } + + public static function encodeLog2(Log $block, string $type) : BlockStateWriter{ + return self::encodeLog($block, BlockStateWriter::create(Ids::LOG2) + ->writeString(BlockStateNames::NEW_LOG_TYPE, $type)); + } + + public static function encodeMushroomBlock(RedMushroomBlock $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, MushroomBlockTypeIdMap::getInstance()->toId($block->getMushroomBlockType())); + } + + public static function encodeQuartz(string $type, int $axis) : BlockStateWriter{ + return BlockStateWriter::create(Ids::QUARTZ_BLOCK) + ->writeString(BlockStateNames::CHISEL_TYPE, $type) + ->writePillarAxis($axis); //this isn't needed for all types, but we have to write it anyway + } + + public static function encodeRedFlower(string $type) : BlockStateWriter{ + return BlockStateWriter::create(Ids::RED_FLOWER)->writeString(BlockStateNames::FLOWER_TYPE, $type); + } + + public static function encodeSandstone(string $id, string $type) : BlockStateWriter{ + return BlockStateWriter::create($id)->writeString(BlockStateNames::SAND_STONE_TYPE, $type); + } + + public static function encodeSapling(Sapling $block, string $type) : BlockStateWriter{ + return BlockStateWriter::create(Ids::SAPLING) + ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) + ->writeString(BlockStateNames::SAPLING_TYPE, $type); + } + + public static function encodeSimplePressurePlate(SimplePressurePlate $block, BlockStateWriter $out) : BlockStateWriter{ + //TODO: not sure what the deal is here ... seems like a mojang bug / artifact of bad implementation? + //best to keep this separate from weighted plates anyway... + return $out + ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->isPressed() ? 15 : 0); + } + + private static function encodeSlab(Slab $block, string $singleId, string $doubleId) : BlockStateWriter{ + $slabType = $block->getSlabType(); + return BlockStateWriter::create($slabType->equals(SlabType::DOUBLE()) ? $doubleId : $singleId) + + //this is (intentionally) also written for double slabs (as zero) to maintain bug parity with MCPE + ->writeBool(BlockStateNames::TOP_SLOT_BIT, $slabType->equals(SlabType::TOP())); + } + + public static function encodeStairs(Stair $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(BlockStateNames::UPSIDE_DOWN_BIT, $block->isUpsideDown()) + ->writeWeirdoHorizontalFacing($block->getFacing()); + } + + public static function encodeStem(Stem $block, BlockStateWriter $out) : BlockStateWriter{ + return self::encodeCrops($block, $out) + ->writeHorizontalFacing(Facing::NORTH); //TODO: PM impl doesn't support this yet + } + + public static function encodeStone(string $type) : BlockStateWriter{ + return BlockStateWriter::create(Ids::STONE) + ->writeString(BlockStateNames::STONE_TYPE, $type); + } + + public static function encodeStoneBricks(string $type) : BlockStateWriter{ + return BlockStateWriter::create(Ids::STONEBRICK) + ->writeString(BlockStateNames::STONE_BRICK_TYPE, $type); + } + + private static function encodeStoneSlab(Slab $block, string $singleId, string $doubleId, string $typeKey, string $typeValue) : BlockStateWriter{ + return self::encodeSlab($block, $singleId, $doubleId) + ->writeString($typeKey, $typeValue); + } + + public static function encodeStoneSlab1(Slab $block, string $typeValue) : BlockStateWriter{ + return self::encodeStoneSlab($block, Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, BlockStateNames::STONE_SLAB_TYPE, $typeValue); + } + + public static function encodeStoneSlab2(Slab $block, string $typeValue) : BlockStateWriter{ + return self::encodeStoneSlab($block, Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, BlockStateNames::STONE_SLAB_TYPE_2, $typeValue); + } + + public static function encodeStoneSlab3(Slab $block, string $typeValue) : BlockStateWriter{ + return self::encodeStoneSlab($block, Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, BlockStateNames::STONE_SLAB_TYPE_3, $typeValue); + } + + public static function encodeStoneSlab4(Slab $block, string $typeValue) : BlockStateWriter{ + return self::encodeStoneSlab($block, Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, BlockStateNames::STONE_SLAB_TYPE_4, $typeValue); + } + + public static function encodeTrapdoor(Trapdoor $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeLegacyHorizontalFacing($block->getFacing()) + ->writeBool(BlockStateNames::UPSIDE_DOWN_BIT, $block->isTop()) + ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()); + } + + public static function encodeWall(Wall $block, BlockStateWriter $out) : BlockStateWriter{ + //TODO: our walls don't support the full range of needed states yet + return $out + ->writeBool(BlockStateNames::WALL_POST_BIT, false) + ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_EAST, BlockStateStringValues::WALL_CONNECTION_TYPE_EAST_NONE) + ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_NORTH, BlockStateStringValues::WALL_CONNECTION_TYPE_NORTH_NONE) + ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH, BlockStateStringValues::WALL_CONNECTION_TYPE_SOUTH_NONE) + ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_WEST, BlockStateStringValues::WALL_CONNECTION_TYPE_WEST_NONE); + } + + public static function encodeLegacyWall(Wall $block, string $type) : BlockStateWriter{ + return self::encodeWall($block, BlockStateWriter::create(Ids::COBBLESTONE_WALL)) + ->writeString(BlockStateNames::WALL_BLOCK_TYPE, $type); + } + + public static function encodeWallSign(WallSign $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeHorizontalFacing($block->getFacing()); + } + + public static function encodeWoodenSlab(Slab $block, string $typeValue) : BlockStateWriter{ + return self::encodeSlab($block, Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB) + ->writeString(BlockStateNames::WOOD_TYPE, $typeValue); + } +} diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index b3a477f53..2657b90d1 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -27,6 +27,7 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; +use pocketmine\block\utils\TreeType; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -42,6 +43,10 @@ final class BlockStateWriter{ $this->states = CompoundTag::create(); } + public static function create(string $id) : self{ + return new self($id); + } + /** @return $this */ public function writeBool(string $name, bool $value) : self{ $this->states->setByte($name, $value ? 1 : 0); @@ -195,6 +200,20 @@ final class BlockStateWriter{ return $this; } + /** @return $this */ + public function writeTreeType(TreeType $treeType) : self{ + $this->writeString(BlockStateNames::WOOD_TYPE, match($treeType->id()){ + TreeType::OAK()->id() => StringValues::WOOD_TYPE_OAK, + TreeType::SPRUCE()->id() => StringValues::WOOD_TYPE_SPRUCE, + TreeType::BIRCH()->id() => StringValues::WOOD_TYPE_BIRCH, + TreeType::JUNGLE()->id() => StringValues::WOOD_TYPE_JUNGLE, + TreeType::ACACIA()->id() => StringValues::WOOD_TYPE_ACACIA, + TreeType::DARK_OAK()->id() => StringValues::WOOD_TYPE_DARK_OAK, + default => throw new BlockStateSerializeException("Invalid Tree type " . $treeType->name()) + }); + return $this; + } + /** @return $this */ public function writeCoralType(CoralType $coralType) : self{ $this->writeString(BlockStateNames::CORAL_COLOR, match($coralType->id()){ From fe7d942500e56ef08139a85610d09d422850ba50 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 05:26:14 +0000 Subject: [PATCH 019/692] fix CS --- src/data/bedrock/blockstate/BlockStateReader.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index f8ecf046a..21537e452 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate; -use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; From 1a800cf4df99647cf4063d422af278828f29e44e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 05:28:52 +0000 Subject: [PATCH 020/692] fixed match indentations --- .../blockstate/BlockStateSerializer.php | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 3ddfc58f1..679c0435c 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -242,22 +242,22 @@ final class BlockStateSerializer{ return Writer::create(Ids::ANVIL) ->writeLegacyHorizontalFacing($block->getFacing()) ->writeString(BlockStateNames::DAMAGE, match($damage = $block->getDamage()){ - 0 => StringValues::DAMAGE_UNDAMAGED, - 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, - 2 => StringValues::DAMAGE_VERY_DAMAGED, - default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), - }); + 0 => StringValues::DAMAGE_UNDAMAGED, + 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, + 2 => StringValues::DAMAGE_VERY_DAMAGED, + default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), + }); }); $this->map(VanillaBlocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); $this->map(VanillaBlocks::BAMBOO(), function(Bamboo $block) : Writer{ return Writer::create(Ids::BAMBOO) ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) ->writeString(BlockStateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ - Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, - Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, - Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, - default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), - }) + Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, + Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, + Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, + default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), + }) ->writeString(BlockStateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); }); $this->map(VanillaBlocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ @@ -400,10 +400,10 @@ final class BlockStateSerializer{ return Writer::create($block->isDead() ? Ids::CORAL_FAN_DEAD : Ids::CORAL_FAN) ->writeCoralType($block->getCoralType()) ->writeInt(BlockStateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ - Axis::X => 0, - Axis::Z => 1, - default => throw new BlockStateSerializeException("Invalid axis {$axis}"), - }); + Axis::X => 0, + Axis::Z => 1, + default => throw new BlockStateSerializeException("Invalid axis {$axis}"), + }); }); $this->map(VanillaBlocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); $this->map(VanillaBlocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); @@ -722,16 +722,16 @@ final class BlockStateSerializer{ return Writer::create(Ids::LEVER) ->writeBool(BlockStateNames::OPEN_BIT, $block->isActivated()) ->writeString(BlockStateNames::LEVER_DIRECTION, match($block->getFacing()->id()){ - LeverFacing::DOWN_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH, - LeverFacing::DOWN_AXIS_X()->id() => StringValues::LEVER_DIRECTION_DOWN_EAST_WEST, - LeverFacing::UP_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH, - LeverFacing::UP_AXIS_X()->id() => StringValues::LEVER_DIRECTION_UP_EAST_WEST, - LeverFacing::NORTH()->id() => StringValues::LEVER_DIRECTION_NORTH, - LeverFacing::SOUTH()->id() => StringValues::LEVER_DIRECTION_SOUTH, - LeverFacing::WEST()->id() => StringValues::LEVER_DIRECTION_WEST, - LeverFacing::EAST()->id() => StringValues::LEVER_DIRECTION_EAST, - default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), - }); + LeverFacing::DOWN_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH, + LeverFacing::DOWN_AXIS_X()->id() => StringValues::LEVER_DIRECTION_DOWN_EAST_WEST, + LeverFacing::UP_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH, + LeverFacing::UP_AXIS_X()->id() => StringValues::LEVER_DIRECTION_UP_EAST_WEST, + LeverFacing::NORTH()->id() => StringValues::LEVER_DIRECTION_NORTH, + LeverFacing::SOUTH()->id() => StringValues::LEVER_DIRECTION_SOUTH, + LeverFacing::WEST()->id() => StringValues::LEVER_DIRECTION_WEST, + LeverFacing::EAST()->id() => StringValues::LEVER_DIRECTION_EAST, + default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), + }); }); $this->map(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA))); $this->map(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA))); @@ -778,10 +778,10 @@ final class BlockStateSerializer{ $this->map(VanillaBlocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ return Writer::create(Ids::PORTAL) ->writeString(BlockStateNames::PORTAL_AXIS, match($block->getAxis()){ - Axis::X => StringValues::PORTAL_AXIS_X, - Axis::Z => StringValues::PORTAL_AXIS_Z, - default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), - }); + Axis::X => StringValues::PORTAL_AXIS_X, + Axis::Z => StringValues::PORTAL_AXIS_Z, + default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), + }); }); $this->map(VanillaBlocks::NETHER_QUARTZ_ORE(), fn() => new Writer(Ids::QUARTZ_ORE)); $this->map(VanillaBlocks::NETHER_REACTOR_CORE(), fn() => new Writer(Ids::NETHERREACTOR)); From ccfe485c067a0dbcdf1d61d65ba77713d3565c3c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 13:56:05 +0000 Subject: [PATCH 021/692] Fixed end rod up/down state --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 2 +- src/data/bedrock/blockstate/BlockStateReader.php | 6 ++++++ src/data/bedrock/blockstate/BlockStateSerializer.php | 3 +-- src/data/bedrock/blockstate/BlockStateWriter.php | 6 ++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 47d95eabf..7a6d44463 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -430,7 +430,7 @@ final class BlockStateDeserializer{ }); $this->map(Ids::END_ROD, function(BlockStateReader $in) : Block{ return VanillaBlocks::END_ROD() - ->setFacing($in->readFacingDirection()); + ->setFacing($in->readEndRodFacingDirection()); }); $this->map(Ids::END_STONE, fn() => VanillaBlocks::END_STONE()); $this->map(Ids::ENDER_CHEST, function(BlockStateReader $in) : Block{ diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 21537e452..4f4fdbcfa 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -125,6 +125,12 @@ final class BlockStateReader{ ]); } + /** @throws BlockStateDeserializeException */ + public function readEndRodFacingDirection() : int{ + $result = $this->readFacingDirection(); + return Facing::axis($result) === Axis::Y ? Facing::opposite($result) : $result; + } + /** @throws BlockStateDeserializeException */ public function readHorizontalFacing() : int{ return $this->parseFacingValue($this->readInt(BlockStateNames::FACING_DIRECTION), [ diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 679c0435c..6385bc794 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -595,9 +595,8 @@ final class BlockStateSerializer{ ->writeLegacyHorizontalFacing($block->getFacing()); }); $this->map(VanillaBlocks::END_ROD(), function(EndRod $block) : Writer{ - //TODO: not sure if this needs down/up to be flipped like legacy metadata? return Writer::create(Ids::END_ROD) - ->writeFacingDirection($block->getFacing()); + ->writeEndRodFacingDirection($block->getFacing()); }); $this->map(VanillaBlocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); $this->map(VanillaBlocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index 2657b90d1..249b31674 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -79,6 +79,12 @@ final class BlockStateWriter{ return $this; } + /** @return $this */ + public function writeEndRodFacingDirection(int $value) : self{ + //end rods are stupid in bedrock and have up/down the wrong way round + return $this->writeFacingDirection(Facing::axis($value) === Axis::Y ? Facing::opposite($value) : $value); + } + /** @return $this */ public function writeHorizontalFacing(int $value) : self{ if($value === Facing::UP || $value === Facing::DOWN){ From 4d935aa8b6d893edd416e85b05ba5a205d1657b9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 17:12:12 +0000 Subject: [PATCH 022/692] Torch facings are the wrong way round :( --- src/data/bedrock/blockstate/BlockStateReader.php | 9 +++++---- src/data/bedrock/blockstate/BlockStateWriter.php | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 4f4fdbcfa..dad5dc62d 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -241,13 +241,14 @@ final class BlockStateReader{ * @throws BlockStateDeserializeException */ public function readTorchFacing() : int{ + //TODO: horizontal directions are flipped (MCPE bug: https://bugs.mojang.com/browse/MCPE-152036) return match($rawValue = $this->readString(BlockStateNames::TORCH_FACING_DIRECTION)){ - StringValues::TORCH_FACING_DIRECTION_EAST => Facing::EAST, - StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::NORTH, - StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::SOUTH, + StringValues::TORCH_FACING_DIRECTION_EAST => Facing::WEST, + StringValues::TORCH_FACING_DIRECTION_NORTH => Facing::SOUTH, + StringValues::TORCH_FACING_DIRECTION_SOUTH => Facing::NORTH, StringValues::TORCH_FACING_DIRECTION_TOP => Facing::UP, StringValues::TORCH_FACING_DIRECTION_UNKNOWN => Facing::UP, //should be illegal, but 1.13 allows it - StringValues::TORCH_FACING_DIRECTION_WEST => Facing::WEST, + StringValues::TORCH_FACING_DIRECTION_WEST => Facing::EAST, default => throw $this->badValueException(BlockStateNames::TORCH_FACING_DIRECTION, $rawValue, "Invalid torch facing"), }; } diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index 249b31674..34fce1001 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -195,12 +195,13 @@ final class BlockStateWriter{ /** @return $this */ public function writeTorchFacing(int $facing) : self{ + //TODO: horizontal directions are flipped (MCPE bug: https://bugs.mojang.com/browse/MCPE-152036) $this->writeString(BlockStateNames::TORCH_FACING_DIRECTION, match($facing){ Facing::UP => StringValues::TORCH_FACING_DIRECTION_TOP, - Facing::NORTH => StringValues::TORCH_FACING_DIRECTION_NORTH, - Facing::SOUTH => StringValues::TORCH_FACING_DIRECTION_SOUTH, - Facing::WEST => StringValues::TORCH_FACING_DIRECTION_WEST, - Facing::EAST => StringValues::TORCH_FACING_DIRECTION_EAST, + Facing::SOUTH => StringValues::TORCH_FACING_DIRECTION_NORTH, + Facing::NORTH => StringValues::TORCH_FACING_DIRECTION_SOUTH, + Facing::EAST => StringValues::TORCH_FACING_DIRECTION_WEST, + Facing::WEST => StringValues::TORCH_FACING_DIRECTION_EAST, default => throw new BlockStateSerializeException("Invalid Torch facing $facing") }); return $this; From cab9b6c8620a6ea7497c3e545a7691e58f906b8f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 17:29:30 +0000 Subject: [PATCH 023/692] Add a wrapper type for blockstate NBT --- .../bedrock/blockstate/BlockStateData.php | 88 +++++++++++++++++++ .../blockstate/BlockStateDeserializer.php | 15 +--- .../bedrock/blockstate/BlockStateReader.php | 17 ++-- .../blockstate/BlockStateSerializer.php | 5 +- .../bedrock/blockstate/BlockStateWriter.php | 7 +- 5 files changed, 101 insertions(+), 31 deletions(-) create mode 100644 src/data/bedrock/blockstate/BlockStateData.php diff --git a/src/data/bedrock/blockstate/BlockStateData.php b/src/data/bedrock/blockstate/BlockStateData.php new file mode 100644 index 000000000..c6485c748 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateData.php @@ -0,0 +1,88 @@ +name; } + + public function getStates() : CompoundTag{ return $this->states; } + + public function getVersion() : int{ return $this->version; } + + /** + * @throws BlockStateDeserializeException + */ + public static function fromNbt(CompoundTag $nbt) : self{ + try{ + $name = $nbt->getString(self::TAG_NAME); + $states = $nbt->getCompoundTag(self::TAG_STATES) ?? throw new BlockStateDeserializeException("Missing tag \"" . self::TAG_STATES . "\""); + $version = $nbt->getInt(self::TAG_VERSION, 0); + }catch(NbtException $e){ + throw new BlockStateDeserializeException($e->getMessage(), 0, $e); + } + + $allKeys = $nbt->getValue(); + unset($allKeys[self::TAG_NAME], $allKeys[self::TAG_STATES], $allKeys[self::TAG_VERSION]); + if(count($allKeys) !== 0){ + throw new BlockStateDeserializeException("Unexpected extra keys: " . implode(", ", array_keys($allKeys))); + } + + return new self($name, $states, $version); + } + + public function toNbt() : CompoundTag{ + return CompoundTag::create() + ->setString(self::TAG_NAME, $this->name) + ->setInt(self::TAG_VERSION, $this->version) + ->setTag(self::TAG_STATES, $this->states); + } +} diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 7a6d44463..1d3caef3f 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -37,7 +37,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; -use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use function array_key_exists; use function min; @@ -2501,20 +2500,12 @@ final class BlockStateDeserializer{ /** @throws BlockStateDeserializeException */ public function deserialize(CompoundTag $blockState) : Block{ - try{ - $id = $blockState->getString("name"); - $states = $blockState->getCompoundTag("states"); - }catch(NbtException $e){ - throw new BlockStateDeserializeException("Error reading blockstate NBT: " . $e->getMessage(), 0, $e); - } - - if($states === null){ - throw new BlockStateDeserializeException("\"states\" tag must always be present, even if it has no data"); - } + $blockStateData = BlockStateData::fromNbt($blockState); + $id = $blockStateData->getName(); if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); } - return $this->deserializeFuncs[$id](new BlockStateReader($states)); + return $this->deserializeFuncs[$id](new BlockStateReader($blockStateData)); } } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index dad5dc62d..043b16ef1 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -31,7 +31,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; @@ -39,13 +38,9 @@ use function get_class; final class BlockStateReader{ - private CompoundTag $nbt; - - public function __construct(CompoundTag $nbt){ - $this->nbt = $nbt; - } - - public function getNbt() : CompoundTag{ return $this->nbt; } + public function __construct( + private BlockStateData $data + ){} public function missingOrWrongTypeException(string $name, ?Tag $tag) : BlockStateDeserializeException{ return new BlockStateDeserializeException("Property \"$name\" " . ($tag !== null ? "has unexpected type " . get_class($tag) : "is missing")); @@ -60,7 +55,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readBool(string $name) : bool{ - $tag = $this->nbt->getTag($name); + $tag = $this->data->getStates()->getTag($name); if($tag instanceof ByteTag){ switch($tag->getValue()){ case 0: return false; @@ -73,7 +68,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readInt(string $name) : int{ - $tag = $this->nbt->getTag($name); + $tag = $this->data->getStates()->getTag($name); if($tag instanceof IntTag){ return $tag->getValue(); } @@ -92,7 +87,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readString(string $name) : string{ //TODO: only allow a specific set of values (strings are primarily used for enums) - $tag = $this->nbt->getTag($name); + $tag = $this->data->getStates()->getTag($name); if($tag instanceof StringTag){ return $tag->getValue(); } diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 6385bc794..8c705ca2f 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -143,7 +143,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateWriter as Writer; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use function class_parents; use function get_class; @@ -175,7 +174,7 @@ final class BlockStateSerializer{ * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $blockState */ - public function serialize(Block $blockState) : CompoundTag{ + public function serialize(Block $blockState) : BlockStateData{ $typeId = $blockState->getTypeId(); $locatedSerializer = $this->serializers[$typeId][get_class($blockState)] ?? null; @@ -204,7 +203,7 @@ final class BlockStateSerializer{ /** @var Writer $writer */ $writer = $serializer($blockState); - return $writer->writeBlockStateNbt(); + return $writer->getBlockStateData(); } public function __construct(){ diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index 34fce1001..907db99c2 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -246,10 +246,7 @@ final class BlockStateWriter{ return $this; } - public function writeBlockStateNbt() : CompoundTag{ - //TODO: add `version` field - return CompoundTag::create() - ->setString("name", $this->id) - ->setTag("states", $this->states); + public function getBlockStateData() : BlockStateData{ + return new BlockStateData($this->id, $this->states, BlockStateData::CURRENT_VERSION); } } From 979f6f3d574da2b05022168f83b36f67be1f5c62 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 17:34:32 +0000 Subject: [PATCH 024/692] Rewrite RuntimeBlockMapping to use BlockStateSerializer --- .../mcpe/convert/BlockStateDictionary.php | 74 ++++++++++ .../mcpe/convert/BlockStateLookupCache.php | 87 +++++++++++ .../convert/R12ToCurrentBlockMapEntry.php | 58 -------- .../mcpe/convert/RuntimeBlockMapping.php | 139 ++++++------------ .../mcpe/serializer/ChunkSerializer.php | 13 +- 5 files changed, 221 insertions(+), 150 deletions(-) create mode 100644 src/network/mcpe/convert/BlockStateDictionary.php create mode 100644 src/network/mcpe/convert/BlockStateLookupCache.php delete mode 100644 src/network/mcpe/convert/R12ToCurrentBlockMapEntry.php diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php new file mode 100644 index 000000000..421d2cfff --- /dev/null +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -0,0 +1,74 @@ + $states + */ + public function __construct( + private array $states + ){ + $this->lookupCache = new BlockStateLookupCache($this->states); + } + + public function getDataFromStateId(int $networkRuntimeId) : ?BlockStateData{ + return $this->states[$networkRuntimeId] ?? null; + } + + /** + * Searches for the appropriate state ID which matches the given blockstate NBT. + * Returns null if there were no matches. + */ + public function lookupStateIdFromData(BlockStateData $data) : ?int{ + return $this->lookupCache->lookupStateId($data); + } + + /** + * Returns an array mapping runtime ID => blockstate data. + * @return BlockStateData[] + * @phpstan-return array + */ + public function getStates() : array{ return $this->states; } + + public static function loadFromString(string $contents) : self{ + return new self(array_map( + fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), + (new NetworkNbtSerializer())->readMultiple($contents) + )); + } +} diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php new file mode 100644 index 000000000..60ac12fc9 --- /dev/null +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -0,0 +1,87 @@ +> + */ + private array $nameToNetworkIdsLookup = []; + + /** + * @var int[] + * @phpstan-var array + */ + private array $nameToSingleNetworkIdLookup = []; + + /** + * @param BlockStateData[] $blockStates + * @phpstan-param list $blockStates + */ + public function __construct(array $blockStates){ + foreach($blockStates as $stateId => $stateNbt){ + $this->nameToNetworkIdsLookup[$stateNbt->getName()][$stateId] = $stateNbt; + } + + //setup fast path for stateless blocks + foreach(Utils::stringifyKeys($this->nameToNetworkIdsLookup) as $name => $stateIds){ + if(count($stateIds) === 1){ + $this->nameToSingleNetworkIdLookup[$name] = array_key_first($stateIds); + } + } + } + + /** + * Searches for the appropriate state ID which matches the given blockstate NBT. + * Returns null if there were no matches. + */ + public function lookupStateId(BlockStateData $data) : ?int{ + $name = $data->getName(); + + if(isset($this->nameToSingleNetworkIdLookup[$name])){ + return $this->nameToSingleNetworkIdLookup[$name]; + } + + if(isset($this->nameToNetworkIdsLookup[$name])){ + $states = $data->getStates(); + foreach($this->nameToNetworkIdsLookup[$name] as $stateId => $stateNbt){ + if($stateNbt->getStates()->equals($states)){ + return $stateId; + } + } + } + + return null; + } +} diff --git a/src/network/mcpe/convert/R12ToCurrentBlockMapEntry.php b/src/network/mcpe/convert/R12ToCurrentBlockMapEntry.php deleted file mode 100644 index 1244d2745..000000000 --- a/src/network/mcpe/convert/R12ToCurrentBlockMapEntry.php +++ /dev/null @@ -1,58 +0,0 @@ -id = $id; - $this->meta = $meta; - $this->blockState = $blockState; - } - - public function getId() : string{ - return $this->id; - } - - public function getMeta() : int{ - return $this->meta; - } - - public function getBlockState() : CompoundTag{ - return $this->blockState; - } - - public function __toString(){ - return "id=$this->id, meta=$this->meta, nbt=$this->blockState"; - } -} diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 75835be0f..7ea062876 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -23,13 +23,14 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; -use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; +use pocketmine\block\BlockFactory; +use pocketmine\block\UnknownBlock; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\blockstate\BlockStateSerializer; +use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; -use pocketmine\network\mcpe\protocol\serializer\PacketSerializer; -use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; @@ -41,98 +42,54 @@ use function file_get_contents; final class RuntimeBlockMapping{ use SingletonTrait; - /** @var int[] */ - private $legacyToRuntimeMap = []; - /** @var int[] */ - private $runtimeToLegacyMap = []; - /** @var CompoundTag[] */ - private $bedrockKnownStates; + private BlockStateDictionary $blockStateDictionary; + private BlockStateSerializer $blockStateSerializer; + /** + * @var int[] + * @phpstan-var array + */ + private array $networkIdCache = []; + + /** + * Used when a blockstate can't be correctly serialized (e.g. because it's unknown) + */ + private BlockStateData $fallbackStateData; private function __construct(){ - $stream = PacketSerializer::decoder( - Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")), "Missing required resource file"), - 0, - new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()) - ); - $list = []; - while(!$stream->feof()){ - $list[] = $stream->getNbtCompoundRoot(); - } - $this->bedrockKnownStates = $list; + $contents = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")), "Missing required resource file"); + $this->blockStateDictionary = BlockStateDictionary::loadFromString($contents); + $this->blockStateSerializer = new BlockStateSerializer(); - $this->setupLegacyMappings(); - } - - private function setupLegacyMappings() : void{ - $legacyIdMap = LegacyBlockIdToStringIdMap::getInstance(); - /** @var R12ToCurrentBlockMapEntry[] $legacyStateMap */ - $legacyStateMap = []; - $legacyStateMapReader = PacketSerializer::decoder( - Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "r12_to_current_block_map.bin")), "Missing required resource file"), - 0, - new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()) - ); - $nbtReader = new NetworkNbtSerializer(); - while(!$legacyStateMapReader->feof()){ - $id = $legacyStateMapReader->getString(); - $meta = $legacyStateMapReader->getLShort(); - - $offset = $legacyStateMapReader->getOffset(); - $state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag(); - $legacyStateMapReader->setOffset($offset); - $legacyStateMap[] = new R12ToCurrentBlockMapEntry($id, $meta, $state); - } - - /** - * @var int[][] $idToStatesMap string id -> int[] list of candidate state indices - */ - $idToStatesMap = []; - foreach($this->bedrockKnownStates as $k => $state){ - $idToStatesMap[$state->getString("name")][] = $k; - } - foreach($legacyStateMap as $pair){ - $id = $legacyIdMap->stringToLegacy($pair->getId()); - if($id === null){ - throw new \RuntimeException("No legacy ID matches " . $pair->getId()); - } - $data = $pair->getMeta(); - if($data > 15){ - //we can't handle metadata with more than 4 bits - continue; - } - $mappedState = $pair->getBlockState(); - $mappedName = $mappedState->getString("name"); - if(!isset($idToStatesMap[$mappedName])){ - throw new \RuntimeException("Mapped new state does not appear in network table"); - } - foreach($idToStatesMap[$mappedName] as $k){ - $networkState = $this->bedrockKnownStates[$k]; - if($mappedState->equals($networkState)){ - $this->registerMapping($k, $id, $data); - continue 2; - } - } - throw new \RuntimeException("Mapped new state does not appear in network table"); - } + $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); } public function toRuntimeId(int $internalStateId) : int{ - return $this->legacyToRuntimeMap[$internalStateId] ?? $this->legacyToRuntimeMap[BlockLegacyIds::INFO_UPDATE << Block::INTERNAL_METADATA_BITS]; + if(isset($this->networkIdCache[$internalStateId])){ + return $this->networkIdCache[$internalStateId]; + } + + //TODO: singleton usage not ideal + $block = BlockFactory::getInstance()->fromFullBlock($internalStateId); + if($block instanceof UnknownBlock){ + $blockStateData = $this->fallbackStateData; + }else{ + try{ + $blockStateData = $this->blockStateSerializer->serialize($block); + }catch(BlockStateSerializeException $e){ + throw new AssumptionFailedError("Invalid serializer for block $block", 0, $e); + } + } + + $networkId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); + + if($networkId === null){ + throw new AssumptionFailedError("Unmapped blockstate returned by blockstate serializer: " . $blockStateData->toNbt()); + } + + return $this->networkIdCache[$internalStateId] = $networkId; } - public function fromRuntimeId(int $runtimeId) : int{ - return $this->runtimeToLegacyMap[$runtimeId]; - } + public function getBlockStateDictionary() : BlockStateDictionary{ return $this->blockStateDictionary; } - private function registerMapping(int $staticRuntimeId, int $legacyId, int $legacyMeta) : void{ - $this->legacyToRuntimeMap[($legacyId << Block::INTERNAL_METADATA_BITS) | $legacyMeta] = $staticRuntimeId; - $this->runtimeToLegacyMap[$staticRuntimeId] = ($legacyId << Block::INTERNAL_METADATA_BITS) | $legacyMeta; - } - - /** - * @return CompoundTag[] - */ - public function getBedrockKnownStates() : array{ - return $this->bedrockKnownStates; - } + public function getFallbackStateData() : BlockStateData{ return $this->fallbackStateData; } } diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index 0fe5d891a..16d67a75e 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -25,7 +25,10 @@ namespace pocketmine\network\mcpe\serializer; use pocketmine\block\tile\Spawnable; use pocketmine\data\bedrock\BiomeIds; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\data\bedrock\LegacyBiomeIdToStringIdMap; +use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; @@ -97,6 +100,8 @@ final class ChunkSerializer{ $stream->putByte(count($layers)); + $blockStateDictionary = $blockMapper->getBlockStateDictionary(); + foreach($layers as $blocks){ $bitsPerBlock = $blocks->getBitsPerBlock(); $words = $blocks->getWordArray(); @@ -113,7 +118,13 @@ final class ChunkSerializer{ if($persistentBlockStates){ $nbtSerializer = new NetworkNbtSerializer(); foreach($palette as $p){ - $stream->put($nbtSerializer->write(new TreeRoot($blockMapper->getBedrockKnownStates()[$blockMapper->toRuntimeId($p)]))); + //TODO: introduce a binary cache for this + $state = $blockStateDictionary->getDataFromStateId($blockMapper->toRuntimeId($p)); + if($state === null){ + $state = $blockMapper->getFallbackStateData(); + } + + $stream->put($nbtSerializer->write(new TreeRoot($state->toNbt()))); } }else{ foreach($palette as $p){ From f4f4ea1483d933a329e17bac32b95710cb28d8af Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 17:44:12 +0000 Subject: [PATCH 025/692] fix CS --- src/network/mcpe/convert/RuntimeBlockMapping.php | 4 +--- src/network/mcpe/serializer/ChunkSerializer.php | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 7ea062876..41a2cd5b7 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -50,9 +50,7 @@ final class RuntimeBlockMapping{ */ private array $networkIdCache = []; - /** - * Used when a blockstate can't be correctly serialized (e.g. because it's unknown) - */ + /** Used when a blockstate can't be correctly serialized (e.g. because it's unknown) */ private BlockStateData $fallbackStateData; private function __construct(){ diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index 16d67a75e..f83e2fa20 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -25,10 +25,7 @@ namespace pocketmine\network\mcpe\serializer; use pocketmine\block\tile\Spawnable; use pocketmine\data\bedrock\BiomeIds; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\data\bedrock\LegacyBiomeIdToStringIdMap; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; From e808b7aac4e82143409ab4237f2f1d7bf7fcb24b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 19:39:39 +0000 Subject: [PATCH 026/692] Fixed asymmetric API --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 1d3caef3f..38f8f5070 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -2499,9 +2499,7 @@ final class BlockStateDeserializer{ } /** @throws BlockStateDeserializeException */ - public function deserialize(CompoundTag $blockState) : Block{ - $blockStateData = BlockStateData::fromNbt($blockState); - + public function deserialize(BlockStateData $blockStateData) : Block{ $id = $blockStateData->getName(); if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); From 101b71ed02a800526701bde257ff250abdfb933c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 19:40:00 +0000 Subject: [PATCH 027/692] Fixed trapdoor rotation --- .../blockstate/BlockStateDeserializerHelper.php | 2 +- src/data/bedrock/blockstate/BlockStateReader.php | 13 +++++++++++++ .../blockstate/BlockStateSerializerHelper.php | 2 +- src/data/bedrock/blockstate/BlockStateWriter.php | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php index d026e0773..225df7c2b 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php @@ -186,7 +186,7 @@ final class BlockStateDeserializerHelper{ /** @throws BlockStateDeserializeException */ public static function decodeTrapdoor(Trapdoor $block, BlockStateReader $in) : Trapdoor{ return $block - ->setFacing($in->readLegacyHorizontalFacing()) + ->setFacing($in->read5MinusHorizontalFacing()) ->setTop($in->readBool(BlockStateNames::UPSIDE_DOWN_BIT)) ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); } diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 043b16ef1..6d2eeb929 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -158,6 +158,19 @@ final class BlockStateReader{ ]); } + /** + * This is for trapdoors, because Mojang botched the conversion in 1.13 + * @throws BlockStateDeserializeException + */ + public function read5MinusHorizontalFacing() : int{ + return $this->parseFacingValue($this->readInt(BlockStateNames::DIRECTION), [ + 0 => Facing::EAST, + 1 => Facing::WEST, + 2 => Facing::SOUTH, + 3 => Facing::NORTH + ]); + } + /** @throws BlockStateDeserializeException */ public function readColor() : DyeColor{ // * color (StringTag) = black, blue, brown, cyan, gray, green, light_blue, lime, magenta, orange, pink, purple, red, silver, white, yellow diff --git a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php index 0dbb28af0..e4a1ffaf3 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php @@ -237,7 +237,7 @@ final class BlockStateSerializerHelper{ public static function encodeTrapdoor(Trapdoor $block, BlockStateWriter $out) : BlockStateWriter{ return $out - ->writeLegacyHorizontalFacing($block->getFacing()) + ->write5MinusHorizontalFacing($block->getFacing()) ->writeBool(BlockStateNames::UPSIDE_DOWN_BIT, $block->isTop()) ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()); } diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index 907db99c2..ef726c0a5 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -118,6 +118,20 @@ final class BlockStateWriter{ return $this; } + /** + * This is for trapdoors, because Mojang botched the conversion in 1.13 + * @return $this + */ + public function write5MinusHorizontalFacing(int $value) : self{ + return $this->writeInt(BlockStateNames::DIRECTION, match($value){ + Facing::EAST => 0, + Facing::WEST => 1, + Facing::SOUTH => 2, + Facing::NORTH => 3, + default => throw new BlockStateSerializeException("Invalid horizontal facing $value") + }); + } + /** @return $this */ public function writeColor(DyeColor $color) : self{ $this->writeString(BlockStateNames::COLOR, match($color->id()){ From 6644fd472c649cd0f9c0c4c4cb32eb2b9005b372 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 20:00:50 +0000 Subject: [PATCH 028/692] fixed more stupid bullshit --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 8 ++++---- src/data/bedrock/blockstate/BlockStateReader.php | 2 +- src/data/bedrock/blockstate/BlockStateSerializer.php | 6 +++--- .../bedrock/blockstate/BlockStateSerializerHelper.php | 2 +- src/data/bedrock/blockstate/BlockStateWriter.php | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 38f8f5070..e1ce89d79 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -151,8 +151,8 @@ final class BlockStateDeserializer{ $this->map(Ids::BREWING_STAND, function(BlockStateReader $in) : Block{ return VanillaBlocks::BREWING_STAND() ->setSlot(BrewingStandSlot::EAST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT)) - ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT)) - ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT)); + ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT)) + ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT)); }); $this->map(Ids::BRICK_BLOCK, fn() => VanillaBlocks::BRICKS()); $this->map(Ids::BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BRICK_STAIRS(), $in)); @@ -184,7 +184,7 @@ final class BlockStateDeserializer{ StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), default => throw $in->badValueException(BlockStateNames::CHEMISTRY_TABLE_TYPE, $type), - })->setFacing($in->readLegacyHorizontalFacing()); + })->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); }); $this->map(Ids::CHEST, function(BlockStateReader $in) : Block{ return VanillaBlocks::CHEST() @@ -198,7 +198,7 @@ final class BlockStateDeserializer{ $this->map(Ids::COCOA, function(BlockStateReader $in) : Block{ return VanillaBlocks::COCOA_POD() ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 2)) - ->setFacing($in->readLegacyHorizontalFacing()); + ->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); }); $this->map(Ids::COLORED_TORCH_BP, function(BlockStateReader $in) : Block{ return $in->readBool(BlockStateNames::COLOR_BIT) ? diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/BlockStateReader.php index 6d2eeb929..992a34b82 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/BlockStateReader.php @@ -123,7 +123,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readEndRodFacingDirection() : int{ $result = $this->readFacingDirection(); - return Facing::axis($result) === Axis::Y ? Facing::opposite($result) : $result; + return Facing::axis($result) !== Axis::Y ? Facing::opposite($result) : $result; } /** @throws BlockStateDeserializeException */ diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index 8c705ca2f..f4a680460 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -327,8 +327,8 @@ final class BlockStateSerializer{ $this->map(VanillaBlocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ return Writer::create(Ids::BREWING_STAND) ->writeBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) - ->writeBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())) - ->writeBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())); + ->writeBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) + ->writeBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); }); $this->map(VanillaBlocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); $this->map(VanillaBlocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); @@ -374,7 +374,7 @@ final class BlockStateSerializer{ $this->map(VanillaBlocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ return Writer::create(Ids::COCOA) ->writeInt(BlockStateNames::AGE, $block->getAge()) - ->writeLegacyHorizontalFacing($block->getFacing()); + ->writeLegacyHorizontalFacing(Facing::opposite($block->getFacing())); }); $this->map(VanillaBlocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); $this->map(VanillaBlocks::CONCRETE(), function(Concrete $block) : Writer{ diff --git a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php index e4a1ffaf3..81d6bedbb 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/BlockStateSerializerHelper.php @@ -70,7 +70,7 @@ final class BlockStateSerializerHelper{ public static function encodeChemistryTable(ChemistryTable $block, string $chemistryTableType, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeString(BlockStateNames::CHEMISTRY_TABLE_TYPE, $chemistryTableType) - ->writeLegacyHorizontalFacing($block->getFacing()); + ->writeLegacyHorizontalFacing(Facing::opposite($block->getFacing())); } public static function encodeCrops(Crops $block, BlockStateWriter $out) : BlockStateWriter{ diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/BlockStateWriter.php index ef726c0a5..a3db88c33 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/BlockStateWriter.php @@ -81,8 +81,8 @@ final class BlockStateWriter{ /** @return $this */ public function writeEndRodFacingDirection(int $value) : self{ - //end rods are stupid in bedrock and have up/down the wrong way round - return $this->writeFacingDirection(Facing::axis($value) === Axis::Y ? Facing::opposite($value) : $value); + //end rods are stupid in bedrock and have everything except up/down the wrong way round + return $this->writeFacingDirection(Facing::axis($value) !== Axis::Y ? Facing::opposite($value) : $value); } /** @return $this */ From f85f2cae98f1d37b48ce46ef6f7b5a9c5433eb5a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 1 Feb 2022 20:02:12 +0000 Subject: [PATCH 029/692] fix CS --- src/data/bedrock/blockstate/BlockStateDeserializer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index e1ce89d79..068fcbc23 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -37,7 +37,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; -use pocketmine\nbt\tag\CompoundTag; use function array_key_exists; use function min; From 0cc997f531c34dc684f73527e3e48930d42cc947 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 00:16:48 +0000 Subject: [PATCH 030/692] Checking in BlockStateUpgrader and a bunch of unit tests --- .../bedrock/blockstate/BlockStateData.php | 7 + .../upgrade/BlockStateUpgradeSchema.php | 70 +++++ .../upgrade/BlockStateUpgradeSchemaUtils.php | 221 ++++++++++++++++ .../BlockStateUpgradeSchemaValueRemap.php | 34 +++ .../blockstate/upgrade/BlockStateUpgrader.php | 163 ++++++++++++ .../LegacyIdMetaToBlockStateDataMap.php | 64 +++++ .../upgrade/BlockStateUpgraderTest.php | 240 ++++++++++++++++++ .../mcpe/convert/RuntimeBlockMappingTest.php | 39 +++ 8 files changed, 838 insertions(+) create mode 100644 src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php create mode 100644 src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php create mode 100644 src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php create mode 100644 src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php create mode 100644 src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php create mode 100644 tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php create mode 100644 tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php diff --git a/src/data/bedrock/blockstate/BlockStateData.php b/src/data/bedrock/blockstate/BlockStateData.php index c6485c748..5d81152ca 100644 --- a/src/data/bedrock/blockstate/BlockStateData.php +++ b/src/data/bedrock/blockstate/BlockStateData.php @@ -85,4 +85,11 @@ final class BlockStateData{ ->setInt(self::TAG_VERSION, $this->version) ->setTag(self::TAG_STATES, $this->states); } + + public function equals(self $that) : bool{ + return + $this->name === $that->name && + $this->states->equals($that->states) && + $this->version === $that->version; + } } diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php new file mode 100644 index 000000000..b47c9f1fe --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -0,0 +1,70 @@ + + */ + public array $renamedIds = []; + + /** + * @var Tag[][] + * @phpstan-var array> + */ + public array $addedProperties = []; + + /** + * @var string[][] + * @phpstan-var array> + */ + public array $removedProperties = []; + + /** + * @var string[][] + * @phpstan-var array> + */ + public array $renamedProperties = []; + + /** + * @var ValueRemap[][][] + * @phpstan-var array>> + */ + public array $remappedPropertyValues = []; + + public function __construct( + public int $maxVersionMajor, + public int $maxVersionMinor, + public int $maxVersionPatch, + public int $maxVersionRevision + ){} + + public function getVersionId() : int{ + return ($this->maxVersionMajor << 24) | ($this->maxVersionMinor << 16) | ($this->maxVersionPatch << 8) | $this->maxVersionRevision; + } +} diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php new file mode 100644 index 000000000..2430069cf --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -0,0 +1,221 @@ +renamedIds as $rename){ + $lines[] = "- $rename"; + } + $lines[] = "Added properties:"; + foreach(Utils::stringifyKeys($schema->addedProperties) as $blockName => $tags){ + foreach(Utils::stringifyKeys($tags) as $k => $v){ + $lines[] = "- $blockName has $k added: $v"; + } + } + + $lines[] = "Removed properties:"; + foreach(Utils::stringifyKeys($schema->removedProperties) as $blockName => $tagNames){ + foreach($tagNames as $tagName){ + $lines[] = "- $blockName has $tagName removed"; + } + } + $lines[] = "Renamed properties:"; + foreach(Utils::stringifyKeys($schema->renamedProperties) as $blockName => $tagNames){ + foreach(Utils::stringifyKeys($tagNames) as $oldTagName => $newTagName){ + $lines[] = "- $blockName has $oldTagName renamed to $newTagName"; + } + } + $lines[] = "Remapped property values:"; + foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $remaps){ + foreach(Utils::stringifyKeys($remaps) as $tagName => $oldNewList){ + foreach($oldNewList as $oldNew){ + $lines[] = "- $blockName has $tagName value changed from $oldNew->old to $oldNew->new"; + } + } + } + return implode("\n", $lines); + } + + private static function tagToJsonModel(Tag $tag) : BlockStateUpgradeSchemaModelTag{ + $type = match(get_class($tag)){ + IntTag::class => "int", + StringTag::class => "string", + ByteTag::class => "byte", + default => throw new \UnexpectedValueException() + }; + + return new BlockStateUpgradeSchemaModelTag($type, $tag->getValue()); + } + + private static function jsonModelToTag(BlockStateUpgradeSchemaModelTag $model) : Tag{ + if($model->type === "int"){ + if(!is_int($model->value)){ + throw new \UnexpectedValueException("Value for type int must be an int"); + } + return new IntTag($model->value); + }elseif($model->type === "byte"){ + if(!is_int($model->value)){ + throw new \UnexpectedValueException("Value for type byte must be an int"); + } + return new ByteTag($model->value); + }elseif($model->type === "string"){ + if(!is_string($model->value)){ + throw new \UnexpectedValueException("Value for type string must be a string"); + } + return new StringTag($model->value); + }else{ + throw new \UnexpectedValueException("Unknown blockstate value type $model->type"); + } + } + + public static function fromJsonModel(BlockStateUpgradeSchemaModel $model) : BlockStateUpgradeSchema{ + $result = new BlockStateUpgradeSchema( + $model->maxVersionMajor, + $model->maxVersionMinor, + $model->maxVersionPatch, + $model->maxVersionRevision + ); + $result->renamedIds = $model->renamedIds ?? []; + $result->renamedProperties = $model->renamedProperties ?? []; + $result->removedProperties = $model->removedProperties ?? []; + + foreach(Utils::stringifyKeys($model->addedProperties ?? []) as $blockName => $properties){ + foreach(Utils::stringifyKeys($properties) as $propertyName => $propertyValue){ + $result->addedProperties[$blockName][$propertyName] = self::jsonModelToTag($propertyValue); + } + } + + foreach(Utils::stringifyKeys($model->remappedPropertyValues ?? []) as $blockName => $properties){ + foreach(Utils::stringifyKeys($properties) as $property => $mappedValuesKey){ + foreach($mappedValuesKey as $oldNew){ + $result->remappedPropertyValues[$blockName][$property][] = new BlockStateUpgradeSchemaValueRemap( + self::jsonModelToTag($oldNew->old), + self::jsonModelToTag($oldNew->new) + ); + } + } + } + + return $result; + } + + public static function toJsonModel(BlockStateUpgradeSchema $schema) : BlockStateUpgradeSchemaModel{ + $result = new BlockStateUpgradeSchemaModel(); + $result->maxVersionMajor = $schema->maxVersionMajor; + $result->maxVersionMinor = $schema->maxVersionMinor; + $result->maxVersionPatch = $schema->maxVersionPatch; + $result->maxVersionRevision = $schema->maxVersionRevision; + $result->renamedIds = $schema->renamedIds; + $result->renamedProperties = $schema->renamedProperties; + $result->removedProperties = $schema->removedProperties; + + foreach(Utils::stringifyKeys($schema->addedProperties) as $blockName => $properties){ + foreach(Utils::stringifyKeys($properties) as $propertyName => $propertyValue){ + $result->addedProperties[$blockName][$propertyName] = self::tagToJsonModel($propertyValue); + } + } + + foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $properties){ + foreach(Utils::stringifyKeys($properties) as $property => $propertyValues){ + foreach($propertyValues as $oldNew){ + $result->remappedPropertyValues[$blockName][$property][] = (array) new BlockStateUpgradeSchemaModelValueRemap( + self::tagToJsonModel($oldNew->old), + self::tagToJsonModel($oldNew->new) + ); + } + } + } + + return $result; + } + + /** + * Returns a list of schemas ordered by priority. Oldest schemas appear first. + * + * @return BlockStateUpgradeSchema[] + */ + public static function loadSchemas(string $path) : array{ + $iterator = new \RegexIterator( + new \FilesystemIterator( + $path, + \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS + ), + '/\/mapping_schema_(\d{4}).*\.json$/', + \RegexIterator::GET_MATCH + ); + + $result = []; + + $jsonMapper = new \JsonMapper(); + /** @var string[] $matches */ + foreach($iterator as $matches){ + $filename = $matches[0]; + $priority = (int) $matches[1]; + + var_dump($filename); + + $fullPath = Path::join($path, $filename); + + //TODO: should we bother handling exceptions in here? + $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); + + $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); + if(!is_object($json)){ + throw new \RuntimeException("Unexpected root type of schema file $fullPath"); + } + $model = $jsonMapper->map($json, new BlockStateUpgradeSchemaModel()); + + $result[$priority] = self::fromJsonModel($model); + } + + ksort($result, SORT_NUMERIC); + return $result; + } +} diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php new file mode 100644 index 000000000..38f3b1f3f --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php @@ -0,0 +1,34 @@ +upgradeSchemas[$schema->getVersionId()][$priority])){ + throw new \InvalidArgumentException("Another schema already has this priority"); + } + $this->upgradeSchemas[$schema->getVersionId()][$priority] = $schema; + ksort($this->upgradeSchemas, SORT_NUMERIC | SORT_ASC); + ksort($this->upgradeSchemas[$schema->getVersionId()], SORT_NUMERIC | SORT_ASC); + } + + public function upgrade(BlockStateData $blockStateData) : BlockStateData{ + $oldName = $blockStateData->getName(); + + $version = $blockStateData->getVersion(); + foreach($this->upgradeSchemas as $resultVersion => $schemas){ + if($version > $resultVersion){ + //even if this is actually the same version, we have to apply it anyway because mojang are dumb and + //didn't always bump the blockstate version when changing it :( + continue; + } + foreach($schemas as $schema){ + $newName = $schema->renamedIds[$oldName] ?? null; + + $stateChanges = 0; + $states = $blockStateData->getStates(); + + $states = $this->applyPropertyAdded($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyRemoved($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyRenamedOrValueChanged($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyValueChanged($schema, $oldName, $states, $stateChanges); + + if($newName !== null || $stateChanges > 0){ + $blockStateData = new BlockStateData($newName ?? $oldName, $states, $resultVersion); + //don't break out; we may need to further upgrade the state + } + } + } + + return $blockStateData; + } + + private function cloneIfNeeded(CompoundTag $states, int &$stateChanges) : CompoundTag{ + if($stateChanges === 0){ + $states = clone $states; + } + $stateChanges++; + + return $states; + } + + private function applyPropertyAdded(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + $newStates = $states; + if(isset($schema->addedProperties[$oldName])){ + foreach(Utils::stringifyKeys($schema->addedProperties[$oldName]) as $propertyName => $value){ + $oldValue = $states->getTag($propertyName); + if($oldValue === null){ + $newStates = $this->cloneIfNeeded($newStates, $stateChanges); + $newStates->setTag($propertyName, $value); + } + } + } + + return $newStates; + } + + private function applyPropertyRemoved(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + $newStates = $states; + if(isset($schema->removedProperties[$oldName])){ + foreach($schema->removedProperties[$oldName] as $propertyName){ + if($states->getTag($propertyName) !== null){ + $newStates = $this->cloneIfNeeded($newStates, $stateChanges); + $newStates->removeTag($propertyName); + } + } + } + + return $newStates; + } + + private function locateNewPropertyValue(BlockStateUpgradeSchema $schema, string $oldName, string $oldPropertyName, Tag $oldValue) : Tag{ + if(isset($schema->remappedPropertyValues[$oldName][$oldPropertyName])){ + foreach($schema->remappedPropertyValues[$oldName][$oldPropertyName] as $mappedPair){ + if($mappedPair->old->equals($oldValue)){ + return $mappedPair->new; + } + } + } + + return $oldValue; + } + + private function applyPropertyRenamedOrValueChanged(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + if(isset($schema->renamedProperties[$oldName])){ + foreach(Utils::stringifyKeys($schema->renamedProperties[$oldName]) as $oldPropertyName => $newPropertyName){ + $oldValue = $states->getTag($oldPropertyName); + if($oldValue !== null){ + $states = $this->cloneIfNeeded($states, $stateChanges); + $states->removeTag($oldPropertyName); + + //If a value remap is needed, we need to do it here, since we won't be able to locate the property + //after it's been renamed - value remaps are always indexed by old property name for the sake of + //being able to do changes in any order. + $states->setTag($newPropertyName, $this->locateNewPropertyValue($schema, $oldName, $oldPropertyName, $oldValue)); + } + } + } + + return $states; + } + + private function applyPropertyValueChanged(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + if(isset($schema->remappedPropertyValues[$oldName])){ + foreach(Utils::stringifyKeys($schema->remappedPropertyValues[$oldName]) as $oldPropertyName => $remappedValues){ + $oldValue = $states->getTag($oldPropertyName); + if($oldValue !== null){ + $newValue = $this->locateNewPropertyValue($schema, $oldName, $oldPropertyName, $oldValue); + if($newValue !== $oldValue){ + $states = $this->cloneIfNeeded($states, $stateChanges); + $states->setTag($oldPropertyName, $newValue); + } + } + } + } + + return $states; + } +} diff --git a/src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php b/src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php new file mode 100644 index 000000000..3ecf18a17 --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php @@ -0,0 +1,64 @@ +> $mappingTable + */ + public function __construct( + private array $mappingTable + ){} + + public function getDataFromLegacyIdMeta(string $id, int $meta) : ?BlockStateData{ + return $this->mappingTable[$id][$meta] ?? null; + } + + public static function loadFromString(string $data) : self{ + $mappingTable = []; + + $legacyStateMapReader = new BinaryStream($data); + $nbtReader = new NetworkNbtSerializer(); + while(!$legacyStateMapReader->feof()){ + $id = $legacyStateMapReader->get($legacyStateMapReader->getUnsignedVarInt()); + $meta = $legacyStateMapReader->getLShort(); + + $offset = $legacyStateMapReader->getOffset(); + $state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag(); + $legacyStateMapReader->setOffset($offset); + $mappingTable[$id][$meta] = BlockStateData::fromNbt($state); + } + + return new self($mappingTable); + } +} diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php new file mode 100644 index 000000000..caf917ec4 --- /dev/null +++ b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php @@ -0,0 +1,240 @@ +upgrader = new BlockStateUpgrader(); + } + + private function getNewSchema() : BlockStateUpgradeSchema{ + return $this->getNewSchemaVersion(PHP_INT_MAX); + } + + private function getNewSchemaVersion(int $versionId) : BlockStateUpgradeSchema{ + $schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff); + $this->upgrader->addSchema($schema, 0); + return $schema; + } + + /** + * @phpstan-param \Closure() : BlockStateData $getStateData + */ + private function upgrade(BlockStateData $stateData, \Closure $getStateData) : BlockStateData{ + $result = $this->upgrader->upgrade($stateData); + self::assertTrue($stateData->equals($getStateData()), "Upgrading states must not alter the original input"); + + return $result; + } + + public function testRenameId() : void{ + $this->getNewSchema()->renamedIds[self::TEST_BLOCK] = self::TEST_BLOCK_2; + + $getStateData = fn() => $this->getEmptyPreimage(); + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertSame($upgradedStateData->getName(), self::TEST_BLOCK_2); + } + + private function prepareAddPropertySchema(BlockStateUpgradeSchema $schema) : void{ + $schema->addedProperties[self::TEST_BLOCK][self::TEST_PROPERTY] = new IntTag(self::TEST_PROPERTY_VALUE_1); + } + + private function getEmptyPreimage() : BlockStateData{ + return new BlockStateData(self::TEST_BLOCK, CompoundTag::create(), self::TEST_VERSION); + } + + private function getPreimageOneProperty(string $propertyName, int $value) : BlockStateData{ + return new BlockStateData( + self::TEST_BLOCK, + CompoundTag::create()->setInt($propertyName, $value), + self::TEST_VERSION + ); + } + + public function testAddNewProperty() : void{ + $this->prepareAddPropertySchema($this->getNewSchema()); + + $getStateData = fn() => $this->getEmptyPreimage(); + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertSame(self::TEST_PROPERTY_VALUE_1, $upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)?->getValue()); + } + + public function testAddPropertyAlreadyExists() : void{ + $this->prepareAddPropertySchema($this->getNewSchema()); + + $getStateData = fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_1 + 1); + $stateData = $getStateData(); + $upgradedStateData = $this->upgrade($stateData, $getStateData); + + self::assertSame($stateData, $upgradedStateData, "Adding a property that already exists with a different value should not alter the state"); + } + + private function prepareRemovePropertySchema(BlockStateUpgradeSchema $schema) : void{ + $schema->removedProperties[self::TEST_BLOCK][] = self::TEST_PROPERTY; + } + + /** + * @phpstan-return \Generator + */ + public function removePropertyProvider() : \Generator{ + yield [fn() => $this->getEmptyPreimage()]; + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_1)]; + } + + /** + * @dataProvider removePropertyProvider + * @phpstan-param \Closure() : BlockStateData $getStateData + */ + public function testRemoveProperty(\Closure $getStateData) : void{ + $this->prepareRemovePropertySchema($this->getNewSchema()); + + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertNull($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)); + } + + private function prepareRenamePropertySchema(BlockStateUpgradeSchema $schema) : void{ + $schema->renamedProperties[self::TEST_BLOCK][self::TEST_PROPERTY] = self::TEST_PROPERTY_2; + } + + /** + * @phpstan-return \Generator + */ + public function renamePropertyProvider() : \Generator{ + yield [fn() => $this->getEmptyPreimage(), null]; + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_1), self::TEST_PROPERTY_VALUE_1]; + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY_2, self::TEST_PROPERTY_VALUE_1), self::TEST_PROPERTY_VALUE_1]; + } + + /** + * @dataProvider renamePropertyProvider + * @phpstan-param \Closure() : BlockStateData $getStateData + */ + public function testRenameProperty(\Closure $getStateData, ?int $valueAfter) : void{ + $this->prepareRenamePropertySchema($this->getNewSchema()); + + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertSame($valueAfter, $upgradedStateData->getStates()->getTag(self::TEST_PROPERTY_2)?->getValue()); + } + + private function prepareRemapPropertyValueSchema(BlockStateUpgradeSchema $schema) : void{ + $schema->remappedPropertyValues[self::TEST_BLOCK][self::TEST_PROPERTY][] = new BlockStateUpgradeSchemaValueRemap( + new IntTag(self::TEST_PROPERTY_VALUE_1), + new IntTag(self::TEST_PROPERTY_VALUE_2) + ); + } + + /** + * @phpstan-return \Generator + */ + public function remapPropertyValueProvider() : \Generator{ + //no property to remap + yield [fn() => $this->getEmptyPreimage(), null]; + + //value that will be remapped + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_1), self::TEST_PROPERTY_VALUE_2]; + + //value that is already at the target value + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_2), self::TEST_PROPERTY_VALUE_2]; + + //value that is not remapped and is different from target value (to detect unconditional overwrite bugs) + yield [fn() => $this->getPreimageOneProperty(self::TEST_PROPERTY, self::TEST_PROPERTY_VALUE_3), self::TEST_PROPERTY_VALUE_3]; + } + + /** + * @dataProvider remapPropertyValueProvider + * @phpstan-param \Closure() : BlockStateData $getStateData + */ + public function testRemapPropertyValue(\Closure $getStateData, ?int $valueAfter) : void{ + $this->prepareRemapPropertyValueSchema($this->getNewSchema()); + + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertSame($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)?->getValue(), $valueAfter); + } + + /** + * @dataProvider remapPropertyValueProvider + * @phpstan-param \Closure() : BlockStateData $getStateData + */ + public function testRemapAndRenameProperty(\Closure $getStateData, ?int $valueAfter) : void{ + $schema = $this->getNewSchema(); + $this->prepareRenamePropertySchema($schema); + $this->prepareRemapPropertyValueSchema($schema); + + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + + self::assertSame($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY_2)?->getValue(), $valueAfter); + } + + /** + * @phpstan-return \Generator + */ + public function upgraderVersionCompatibilityProvider() : \Generator{ + yield [0x1_00_00_00, 0x1_00_00_00, true]; //Same version: must be altered - this may be a backwards-compatible change that Mojang didn't bother to bump for + yield [0x1_00_01_00, 0x1_00_00_00, true]; //Schema newer than block: must be altered + yield [0x1_00_00_00, 0x1_00_01_00, false]; //Block newer than schema: block must NOT be altered + } + + /** + * @dataProvider upgraderVersionCompatibilityProvider + */ + public function testUpgraderVersionCompatibility(int $schemaVersion, int $stateVersion, bool $shouldChange) : void{ + $schema = $this->getNewSchemaVersion($schemaVersion); + $schema->renamedIds[self::TEST_BLOCK] = self::TEST_BLOCK_2; + + $getStateData = fn() => new BlockStateData( + self::TEST_BLOCK, + CompoundTag::create(), + $stateVersion + ); + + $upgradedStateData = $this->upgrade($getStateData(), $getStateData); + $originalStateData = $getStateData(); + + self::assertNotSame($shouldChange, $upgradedStateData->equals($originalStateData)); + } +} diff --git a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php new file mode 100644 index 000000000..cc6b43dd6 --- /dev/null +++ b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php @@ -0,0 +1,39 @@ +getAllKnownStates() as $state){ + RuntimeBlockMapping::getInstance()->toRuntimeId($state->getFullId()); + } + } +} From 324d203f4ecbedf399d6628aa47ad8c4cece0221 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 00:21:26 +0000 Subject: [PATCH 031/692] Fuck you git --- .../model/BlockStateUpgradeSchemaModel.php | 83 +++++++++++++++++++ .../model/BlockStateUpgradeSchemaModelTag.php | 40 +++++++++ ...BlockStateUpgradeSchemaModelValueRemap.php | 36 ++++++++ 3 files changed, 159 insertions(+) create mode 100644 src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php create mode 100644 src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php create mode 100644 src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php new file mode 100644 index 000000000..324cd13f4 --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -0,0 +1,83 @@ + + */ + public array $renamedIds; + + /** + * @var BlockStateUpgradeSchemaModelTag[][] + * @phpstan-var array> + */ + public array $addedProperties; + + /** + * @var string[][] + * @phpstan-var array> + */ + public array $removedProperties; + + /** + * @var string[][] + * @phpstan-var array> + */ + public array $renamedProperties; + + /** + * @var BlockStateUpgradeSchemaModelValueRemap[][][] + * @phpstan-var array>> + */ + public array $remappedPropertyValues; + + public function jsonSerialize() : array{ + $result = (array) $this; + + foreach($result as $k => $v){ + if(is_array($v) && count($v) === 0){ + unset($result[$k]); + } + } + + return $result; + } +} diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php new file mode 100644 index 000000000..f34c48928 --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php @@ -0,0 +1,40 @@ +type = $type; + $this->value = $value; + } +} diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php new file mode 100644 index 000000000..84d07dd46 --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php @@ -0,0 +1,36 @@ +old = $old; + $this->new = $new; + } +} From f33633efcbd239433c18cfccffe0ee582d7a76b8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 00:23:01 +0000 Subject: [PATCH 032/692] Remove rogue var_dump --- .../blockstate/upgrade/BlockStateUpgradeSchemaUtils.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 2430069cf..ce8b7534e 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -41,7 +41,6 @@ use function is_object; use function is_string; use function json_decode; use function ksort; -use function var_dump; use const JSON_THROW_ON_ERROR; use const SORT_NUMERIC; @@ -199,8 +198,6 @@ final class BlockStateUpgradeSchemaUtils{ $filename = $matches[0]; $priority = (int) $matches[1]; - var_dump($filename); - $fullPath = Path::join($path, $filename); //TODO: should we bother handling exceptions in here? From 4d88f8f7f402a79b74648c1ba4f2eaa8c57fb9bf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 00:24:57 +0000 Subject: [PATCH 033/692] shut --- .../blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php index 324cd13f4..4827082c9 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -69,6 +69,9 @@ final class BlockStateUpgradeSchemaModel implements \JsonSerializable{ */ public array $remappedPropertyValues; + /** + * @return mixed[] + */ public function jsonSerialize() : array{ $result = (array) $this; From 9fbb2ef46aa649d84671d396fde50dc5aee3f89b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 00:27:09 +0000 Subject: [PATCH 034/692] remove SORT_ASC --- src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index fcd20dc1c..537700aa9 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -28,7 +28,6 @@ use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; use function ksort; -use const SORT_ASC; use const SORT_NUMERIC; final class BlockStateUpgrader{ @@ -40,8 +39,8 @@ final class BlockStateUpgrader{ throw new \InvalidArgumentException("Another schema already has this priority"); } $this->upgradeSchemas[$schema->getVersionId()][$priority] = $schema; - ksort($this->upgradeSchemas, SORT_NUMERIC | SORT_ASC); - ksort($this->upgradeSchemas[$schema->getVersionId()], SORT_NUMERIC | SORT_ASC); + ksort($this->upgradeSchemas, SORT_NUMERIC); + ksort($this->upgradeSchemas[$schema->getVersionId()], SORT_NUMERIC); } public function upgrade(BlockStateData $blockStateData) : BlockStateData{ From 1155f9157433715572626d0007b7cf57f4f4c2d3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 16:41:45 +0000 Subject: [PATCH 035/692] BlockStateSerializer: separate serializer registration from constructor --- src/data/bedrock/blockstate/BlockStateSerializer.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index f4a680460..e6ebf258f 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -157,6 +157,10 @@ final class BlockStateSerializer{ */ private array $serializers = []; + public function __construct(){ + $this->registerSerializers(); + } + /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $block @@ -206,7 +210,7 @@ final class BlockStateSerializer{ return $writer->getBlockStateData(); } - public function __construct(){ + private function registerSerializers() : void{ $this->map(VanillaBlocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); $this->map(VanillaBlocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); $this->map(VanillaBlocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) From 337aab4f0d950036bd29c8affac4d9a2251eafd4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 16:47:54 +0000 Subject: [PATCH 036/692] Use more class aliases to reduce code width --- .../blockstate/BlockStateDeserializer.php | 1996 +++++++++-------- .../blockstate/BlockStateSerializer.php | 1279 +++++------ 2 files changed, 1639 insertions(+), 1636 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 068fcbc23..69972564f 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -31,8 +31,10 @@ use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; -use pocketmine\block\VanillaBlocks; +use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\blockstate\BlockStateDeserializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; +use pocketmine\data\bedrock\blockstate\BlockStateReader as Reader; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; @@ -44,11 +46,11 @@ final class BlockStateDeserializer{ /** * @var \Closure[] - * @phpstan-var array + * @phpstan-var array */ private array $deserializeFuncs = []; - /** @phpstan-param \Closure(BlockStateReader) : Block $c */ + /** @phpstan-param \Closure(Reader) : Block $c */ private function map(string $id, \Closure $c) : void{ if(array_key_exists($id, $this->deserializeFuncs)){ throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); @@ -57,522 +59,522 @@ final class BlockStateDeserializer{ } public function __construct(){ - $this->map(Ids::ACACIA_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::ACACIA_BUTTON(), $in)); - $this->map(Ids::ACACIA_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::ACACIA_DOOR(), $in)); - $this->map(Ids::ACACIA_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::ACACIA_FENCE_GATE(), $in)); - $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::ACACIA_PRESSURE_PLATE(), $in)); - $this->map(Ids::ACACIA_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::ACACIA_STAIRS(), $in)); - $this->map(Ids::ACACIA_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::ACACIA_SIGN(), $in)); - $this->map(Ids::ACACIA_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::ACACIA_TRAPDOOR(), $in)); - $this->map(Ids::ACACIA_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::ACACIA_WALL_SIGN(), $in)); - $this->map(Ids::ACTIVATOR_RAIL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::ACTIVATOR_RAIL() - ->setPowered($in->readBool(BlockStateNames::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); + $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); + $this->map(Ids::ACACIA_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::ACACIA_FENCE_GATE(), $in)); + $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::ACACIA_PRESSURE_PLATE(), $in)); + $this->map(Ids::ACACIA_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::ACACIA_STAIRS(), $in)); + $this->map(Ids::ACACIA_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::ACACIA_SIGN(), $in)); + $this->map(Ids::ACACIA_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::ACACIA_TRAPDOOR(), $in)); + $this->map(Ids::ACACIA_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::ACACIA_WALL_SIGN(), $in)); + $this->map(Ids::ACTIVATOR_RAIL, function(Reader $in) : Block{ + return Blocks::ACTIVATOR_RAIL() + ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); - $this->map(Ids::AIR, fn() => VanillaBlocks::AIR()); - $this->map(Ids::ANDESITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::ANDESITE_STAIRS(), $in)); - $this->map(Ids::ANVIL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::ANVIL() - ->setDamage(match($value = $in->readString(BlockStateNames::DAMAGE)){ + $this->map(Ids::AIR, fn() => Blocks::AIR()); + $this->map(Ids::ANDESITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::ANDESITE_STAIRS(), $in)); + $this->map(Ids::ANVIL, function(Reader $in) : Block{ + return Blocks::ANVIL() + ->setDamage(match($value = $in->readString(StateNames::DAMAGE)){ StringValues::DAMAGE_UNDAMAGED => 0, StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, StringValues::DAMAGE_VERY_DAMAGED => 2, StringValues::DAMAGE_BROKEN => 0, - default => throw $in->badValueException(BlockStateNames::DAMAGE, $value), + default => throw $in->badValueException(StateNames::DAMAGE, $value), }) ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::BAMBOO, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BAMBOO() - ->setLeafSize(match($value = $in->readString(BlockStateNames::BAMBOO_LEAF_SIZE)){ + $this->map(Ids::BAMBOO, function(Reader $in) : Block{ + return Blocks::BAMBOO() + ->setLeafSize(match($value = $in->readString(StateNames::BAMBOO_LEAF_SIZE)){ StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, - default => throw $in->badValueException(BlockStateNames::BAMBOO_LEAF_SIZE, $value), + default => throw $in->badValueException(StateNames::BAMBOO_LEAF_SIZE, $value), }) - ->setReady($in->readBool(BlockStateNames::AGE_BIT)) - ->setThick(match($value = $in->readString(BlockStateNames::BAMBOO_STALK_THICKNESS)){ + ->setReady($in->readBool(StateNames::AGE_BIT)) + ->setThick(match($value = $in->readString(StateNames::BAMBOO_STALK_THICKNESS)){ StringValues::BAMBOO_STALK_THICKNESS_THIN => false, StringValues::BAMBOO_STALK_THICKNESS_THICK => true, - default => throw $in->badValueException(BlockStateNames::BAMBOO_STALK_THICKNESS, $value), + default => throw $in->badValueException(StateNames::BAMBOO_STALK_THICKNESS, $value), }); }); - $this->map(Ids::BAMBOO_SAPLING, function(BlockStateReader $in) : Block{ + $this->map(Ids::BAMBOO_SAPLING, function(Reader $in) : Block{ //TODO: sapling_type intentionally ignored (its presence is a bug) - return VanillaBlocks::BAMBOO_SAPLING()->setReady($in->readBool(BlockStateNames::AGE_BIT)); + return Blocks::BAMBOO_SAPLING()->setReady($in->readBool(StateNames::AGE_BIT)); }); - $this->map(Ids::BARREL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BARREL() + $this->map(Ids::BARREL, function(Reader $in) : Block{ + return Blocks::BARREL() ->setFacing($in->readFacingDirection()) - ->setOpen($in->readBool(BlockStateNames::OPEN_BIT)); + ->setOpen($in->readBool(StateNames::OPEN_BIT)); }); - $this->map(Ids::BARRIER, fn() => VanillaBlocks::BARRIER()); - $this->map(Ids::BEACON, fn() => VanillaBlocks::BEACON()); - $this->map(Ids::BED, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BED() + $this->map(Ids::BARRIER, fn() => Blocks::BARRIER()); + $this->map(Ids::BEACON, fn() => Blocks::BEACON()); + $this->map(Ids::BED, function(Reader $in) : Block{ + return Blocks::BED() ->setFacing($in->readLegacyHorizontalFacing()) - ->setHead($in->readBool(BlockStateNames::HEAD_PIECE_BIT)) - ->setOccupied($in->readBool(BlockStateNames::OCCUPIED_BIT)); + ->setHead($in->readBool(StateNames::HEAD_PIECE_BIT)) + ->setOccupied($in->readBool(StateNames::OCCUPIED_BIT)); }); - $this->map(Ids::BEDROCK, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BEDROCK() - ->setBurnsForever($in->readBool(BlockStateNames::INFINIBURN_BIT)); + $this->map(Ids::BEDROCK, function(Reader $in) : Block{ + return Blocks::BEDROCK() + ->setBurnsForever($in->readBool(StateNames::INFINIBURN_BIT)); }); - $this->map(Ids::BEETROOT, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::BEETROOTS(), $in)); - $this->map(Ids::BELL, function(BlockStateReader $in) : Block{ + $this->map(Ids::BEETROOT, fn(Reader $in) => Helper::decodeCrops(Blocks::BEETROOTS(), $in)); + $this->map(Ids::BELL, function(Reader $in) : Block{ //TODO: ignored toggle_bit (appears to be internally used in MCPE only, useless for us) - return VanillaBlocks::BELL() + return Blocks::BELL() ->setFacing($in->readLegacyHorizontalFacing()) ->setAttachmentType($in->readBellAttachmentType()); }); - $this->map(Ids::BIRCH_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::BIRCH_BUTTON(), $in)); - $this->map(Ids::BIRCH_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::BIRCH_DOOR(), $in)); - $this->map(Ids::BIRCH_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::BIRCH_FENCE_GATE(), $in)); - $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::BIRCH_PRESSURE_PLATE(), $in)); - $this->map(Ids::BIRCH_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BIRCH_STAIRS(), $in)); - $this->map(Ids::BIRCH_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::BIRCH_SIGN(), $in)); - $this->map(Ids::BIRCH_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::BIRCH_TRAPDOOR(), $in)); - $this->map(Ids::BIRCH_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::BIRCH_WALL_SIGN(), $in)); - $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::BLAST_FURNACE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BLAST_FURNACE() + $this->map(Ids::BIRCH_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::BIRCH_BUTTON(), $in)); + $this->map(Ids::BIRCH_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::BIRCH_DOOR(), $in)); + $this->map(Ids::BIRCH_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::BIRCH_FENCE_GATE(), $in)); + $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::BIRCH_PRESSURE_PLATE(), $in)); + $this->map(Ids::BIRCH_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BIRCH_STAIRS(), $in)); + $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); + $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); + $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); + $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLACK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ + return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::BLUE_ICE, fn() => VanillaBlocks::BLUE_ICE()); - $this->map(Ids::BONE_BLOCK, function(BlockStateReader $in) : Block{ + $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); + $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ //TODO: intentionally ignored "deprecated" blockstate (useless) - return VanillaBlocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); + return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); }); - $this->map(Ids::BOOKSHELF, fn() => VanillaBlocks::BOOKSHELF()); - $this->map(Ids::BREWING_STAND, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BREWING_STAND() - ->setSlot(BrewingStandSlot::EAST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT)) - ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT)) - ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT)); + $this->map(Ids::BOOKSHELF, fn() => Blocks::BOOKSHELF()); + $this->map(Ids::BREWING_STAND, function(Reader $in) : Block{ + return Blocks::BREWING_STAND() + ->setSlot(BrewingStandSlot::EAST(), $in->readBool(StateNames::BREWING_STAND_SLOT_A_BIT)) + ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_B_BIT)) + ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT)); }); - $this->map(Ids::BRICK_BLOCK, fn() => VanillaBlocks::BRICKS()); - $this->map(Ids::BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::BRICK_STAIRS(), $in)); - $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::BROWN_MUSHROOM, fn() => VanillaBlocks::BROWN_MUSHROOM()); - $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(BlockStateReader $in) => Helper::decodeMushroomBlock(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), $in)); - $this->map(Ids::CACTUS, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CACTUS() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + $this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); + $this->map(Ids::BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BRICK_STAIRS(), $in)); + $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BROWN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); + $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); + $this->map(Ids::CACTUS, function(Reader $in) : Block{ + return Blocks::CACTUS() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); - $this->map(Ids::CAKE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CAKE() - ->setBites($in->readBoundedInt(BlockStateNames::BITE_COUNTER, 0, 6)); + $this->map(Ids::CAKE, function(Reader $in) : Block{ + return Blocks::CAKE() + ->setBites($in->readBoundedInt(StateNames::BITE_COUNTER, 0, 6)); }); - $this->map(Ids::CARPET, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CARPET() + $this->map(Ids::CARPET, function(Reader $in) : Block{ + return Blocks::CARPET() ->setColor($in->readColor()); }); - $this->map(Ids::CARROTS, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::CARROTS(), $in)); - $this->map(Ids::CARVED_PUMPKIN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CARVED_PUMPKIN() + $this->map(Ids::CARROTS, fn(Reader $in) => Helper::decodeCrops(Blocks::CARROTS(), $in)); + $this->map(Ids::CARVED_PUMPKIN, function(Reader $in) : Block{ + return Blocks::CARVED_PUMPKIN() ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::CHEMICAL_HEAT, fn() => VanillaBlocks::CHEMICAL_HEAT()); - $this->map(Ids::CHEMISTRY_TABLE, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::CHEMISTRY_TABLE_TYPE)){ - StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => VanillaBlocks::COMPOUND_CREATOR(), - StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => VanillaBlocks::ELEMENT_CONSTRUCTOR(), - StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => VanillaBlocks::LAB_TABLE(), - StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => VanillaBlocks::MATERIAL_REDUCER(), - default => throw $in->badValueException(BlockStateNames::CHEMISTRY_TABLE_TYPE, $type), + $this->map(Ids::CHEMICAL_HEAT, fn() => Blocks::CHEMICAL_HEAT()); + $this->map(Ids::CHEMISTRY_TABLE, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::CHEMISTRY_TABLE_TYPE)){ + StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => Blocks::COMPOUND_CREATOR(), + StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => Blocks::ELEMENT_CONSTRUCTOR(), + StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => Blocks::LAB_TABLE(), + StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => Blocks::MATERIAL_REDUCER(), + default => throw $in->badValueException(StateNames::CHEMISTRY_TABLE_TYPE, $type), })->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); }); - $this->map(Ids::CHEST, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CHEST() + $this->map(Ids::CHEST, function(Reader $in) : Block{ + return Blocks::CHEST() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::CLAY, fn() => VanillaBlocks::CLAY()); - $this->map(Ids::COAL_BLOCK, fn() => VanillaBlocks::COAL()); - $this->map(Ids::COAL_ORE, fn() => VanillaBlocks::COAL_ORE()); - $this->map(Ids::COBBLESTONE, fn() => VanillaBlocks::COBBLESTONE()); - $this->map(Ids::COBBLESTONE_WALL, fn(BlockStateReader $in) => Helper::mapLegacyWallType($in)); - $this->map(Ids::COCOA, function(BlockStateReader $in) : Block{ - return VanillaBlocks::COCOA_POD() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 2)) + $this->map(Ids::CLAY, fn() => Blocks::CLAY()); + $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); + $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); + $this->map(Ids::COBBLESTONE, fn() => Blocks::COBBLESTONE()); + $this->map(Ids::COBBLESTONE_WALL, fn(Reader $in) => Helper::mapLegacyWallType($in)); + $this->map(Ids::COCOA, function(Reader $in) : Block{ + return Blocks::COCOA_POD() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 2)) ->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); }); - $this->map(Ids::COLORED_TORCH_BP, function(BlockStateReader $in) : Block{ - return $in->readBool(BlockStateNames::COLOR_BIT) ? - VanillaBlocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : - VanillaBlocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); + $this->map(Ids::COLORED_TORCH_BP, function(Reader $in) : Block{ + return $in->readBool(StateNames::COLOR_BIT) ? + Blocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : + Blocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); }); - $this->map(Ids::COLORED_TORCH_RG, function(BlockStateReader $in) : Block{ - return $in->readBool(BlockStateNames::COLOR_BIT) ? - VanillaBlocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : - VanillaBlocks::RED_TORCH()->setFacing($in->readTorchFacing()); + $this->map(Ids::COLORED_TORCH_RG, function(Reader $in) : Block{ + return $in->readBool(StateNames::COLOR_BIT) ? + Blocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : + Blocks::RED_TORCH()->setFacing($in->readTorchFacing()); }); - $this->map(Ids::CONCRETE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CONCRETE() + $this->map(Ids::CONCRETE, function(Reader $in) : Block{ + return Blocks::CONCRETE() ->setColor($in->readColor()); }); - $this->map(Ids::CONCRETEPOWDER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CONCRETE_POWDER() + $this->map(Ids::CONCRETEPOWDER, function(Reader $in) : Block{ + return Blocks::CONCRETE_POWDER() ->setColor($in->readColor()); }); - $this->map(Ids::CORAL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CORAL() + $this->map(Ids::CORAL, function(Reader $in) : Block{ + return Blocks::CORAL() ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); + ->setDead($in->readBool(StateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_BLOCK, function(BlockStateReader $in) : Block{ - return VanillaBlocks::CORAL_BLOCK() + $this->map(Ids::CORAL_BLOCK, function(Reader $in) : Block{ + return Blocks::CORAL_BLOCK() ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(BlockStateNames::DEAD_BIT)); + ->setDead($in->readBool(StateNames::DEAD_BIT)); }); - $this->map(Ids::CORAL_FAN, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in) + $this->map(Ids::CORAL_FAN, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) ->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(BlockStateReader $in) => Helper::decodeFloorCoralFan(VanillaBlocks::CORAL_FAN(), $in) + $this->map(Ids::CORAL_FAN_DEAD, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) ->setDead(true)); - $this->map(Ids::CORAL_FAN_HANG, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) - ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); - $this->map(Ids::CORAL_FAN_HANG2, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) - ->setCoralType($in->readBool(BlockStateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); - $this->map(Ids::CORAL_FAN_HANG3, fn(BlockStateReader $in) => Helper::decodeWallCoralFan(VanillaBlocks::WALL_CORAL_FAN(), $in) + $this->map(Ids::CORAL_FAN_HANG, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); + $this->map(Ids::CORAL_FAN_HANG2, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); + $this->map(Ids::CORAL_FAN_HANG3, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType(CoralType::HORN())); - $this->map(Ids::CRAFTING_TABLE, fn() => VanillaBlocks::CRAFTING_TABLE()); - $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::DARK_OAK_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::DARK_OAK_BUTTON(), $in)); - $this->map(Ids::DARK_OAK_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::DARK_OAK_DOOR(), $in)); - $this->map(Ids::DARK_OAK_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::DARK_OAK_FENCE_GATE(), $in)); - $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), $in)); - $this->map(Ids::DARK_OAK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_OAK_STAIRS(), $in)); - $this->map(Ids::DARK_OAK_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::DARK_OAK_TRAPDOOR(), $in)); - $this->map(Ids::DARK_PRISMARINE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DARK_PRISMARINE_STAIRS(), $in)); - $this->map(Ids::DARKOAK_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::DARK_OAK_SIGN(), $in)); - $this->map(Ids::DARKOAK_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::DARK_OAK_WALL_SIGN(), $in)); - $this->map(Ids::DAYLIGHT_DETECTOR, fn(BlockStateReader $in) => Helper::decodeDaylightSensor(VanillaBlocks::DAYLIGHT_SENSOR(), $in) + $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); + $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::CYAN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); + $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); + $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); + $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::DARK_OAK_PRESSURE_PLATE(), $in)); + $this->map(Ids::DARK_OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DARK_OAK_STAIRS(), $in)); + $this->map(Ids::DARK_OAK_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::DARK_OAK_TRAPDOOR(), $in)); + $this->map(Ids::DARK_PRISMARINE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DARK_PRISMARINE_STAIRS(), $in)); + $this->map(Ids::DARKOAK_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::DARK_OAK_SIGN(), $in)); + $this->map(Ids::DARKOAK_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::DARK_OAK_WALL_SIGN(), $in)); + $this->map(Ids::DAYLIGHT_DETECTOR, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) ->setInverted(false)); - $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(BlockStateReader $in) => Helper::decodeDaylightSensor(VanillaBlocks::DAYLIGHT_SENSOR(), $in) + $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) ->setInverted(true)); - $this->map(Ids::DEADBUSH, fn() => VanillaBlocks::DEAD_BUSH()); - $this->map(Ids::DETECTOR_RAIL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DETECTOR_RAIL() - ->setActivated($in->readBool(BlockStateNames::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + $this->map(Ids::DEADBUSH, fn() => Blocks::DEAD_BUSH()); + $this->map(Ids::DETECTOR_RAIL, function(Reader $in) : Block{ + return Blocks::DETECTOR_RAIL() + ->setActivated($in->readBool(StateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); - $this->map(Ids::DIAMOND_BLOCK, fn() => VanillaBlocks::DIAMOND()); - $this->map(Ids::DIAMOND_ORE, fn() => VanillaBlocks::DIAMOND_ORE()); - $this->map(Ids::DIORITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::DIORITE_STAIRS(), $in)); - $this->map(Ids::DIRT, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DIRT() - ->setCoarse(match($value = $in->readString(BlockStateNames::DIRT_TYPE)){ + $this->map(Ids::DIAMOND_BLOCK, fn() => Blocks::DIAMOND()); + $this->map(Ids::DIAMOND_ORE, fn() => Blocks::DIAMOND_ORE()); + $this->map(Ids::DIORITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DIORITE_STAIRS(), $in)); + $this->map(Ids::DIRT, function(Reader $in) : Block{ + return Blocks::DIRT() + ->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){ StringValues::DIRT_TYPE_NORMAL => false, StringValues::DIRT_TYPE_COARSE => true, - default => throw $in->badValueException(BlockStateNames::DIRT_TYPE, $value), + default => throw $in->badValueException(StateNames::DIRT_TYPE, $value), }); }); - $this->map(Ids::DOUBLE_PLANT, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::DOUBLE_PLANT_TYPE)){ - StringValues::DOUBLE_PLANT_TYPE_FERN => VanillaBlocks::LARGE_FERN(), - StringValues::DOUBLE_PLANT_TYPE_GRASS => VanillaBlocks::DOUBLE_TALLGRASS(), - StringValues::DOUBLE_PLANT_TYPE_PAEONIA => VanillaBlocks::PEONY(), - StringValues::DOUBLE_PLANT_TYPE_ROSE => VanillaBlocks::ROSE_BUSH(), - StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => VanillaBlocks::SUNFLOWER(), - StringValues::DOUBLE_PLANT_TYPE_SYRINGA => VanillaBlocks::LILAC(), - default => throw $in->badValueException(BlockStateNames::DOUBLE_PLANT_TYPE, $type), - })->setTop($in->readBool(BlockStateNames::UPPER_BLOCK_BIT)); + $this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){ + StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(), + StringValues::DOUBLE_PLANT_TYPE_GRASS => Blocks::DOUBLE_TALLGRASS(), + StringValues::DOUBLE_PLANT_TYPE_PAEONIA => Blocks::PEONY(), + StringValues::DOUBLE_PLANT_TYPE_ROSE => Blocks::ROSE_BUSH(), + StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => Blocks::SUNFLOWER(), + StringValues::DOUBLE_PLANT_TYPE_SYRINGA => Blocks::LILAC(), + default => throw $in->badValueException(StateNames::DOUBLE_PLANT_TYPE, $type), + })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); }); - $this->map(Ids::DOUBLE_STONE_SLAB, function(BlockStateReader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_SLAB, function(Reader $in) : Block{ return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB2, function(BlockStateReader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_SLAB2, function(Reader $in) : Block{ return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB3, function(BlockStateReader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_SLAB3, function(Reader $in) : Block{ return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB4, function(BlockStateReader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_SLAB4, function(Reader $in) : Block{ return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_WOODEN_SLAB, function(BlockStateReader $in) : Block{ + $this->map(Ids::DOUBLE_WOODEN_SLAB, function(Reader $in) : Block{ return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DRAGON_EGG, fn() => VanillaBlocks::DRAGON_EGG()); - $this->map(Ids::DRIED_KELP_BLOCK, fn() => VanillaBlocks::DRIED_KELP()); - $this->map(Ids::ELEMENT_0, fn() => VanillaBlocks::ELEMENT_ZERO()); - $this->map(Ids::ELEMENT_1, fn() => VanillaBlocks::ELEMENT_HYDROGEN()); - $this->map(Ids::ELEMENT_10, fn() => VanillaBlocks::ELEMENT_NEON()); - $this->map(Ids::ELEMENT_100, fn() => VanillaBlocks::ELEMENT_FERMIUM()); - $this->map(Ids::ELEMENT_101, fn() => VanillaBlocks::ELEMENT_MENDELEVIUM()); - $this->map(Ids::ELEMENT_102, fn() => VanillaBlocks::ELEMENT_NOBELIUM()); - $this->map(Ids::ELEMENT_103, fn() => VanillaBlocks::ELEMENT_LAWRENCIUM()); - $this->map(Ids::ELEMENT_104, fn() => VanillaBlocks::ELEMENT_RUTHERFORDIUM()); - $this->map(Ids::ELEMENT_105, fn() => VanillaBlocks::ELEMENT_DUBNIUM()); - $this->map(Ids::ELEMENT_106, fn() => VanillaBlocks::ELEMENT_SEABORGIUM()); - $this->map(Ids::ELEMENT_107, fn() => VanillaBlocks::ELEMENT_BOHRIUM()); - $this->map(Ids::ELEMENT_108, fn() => VanillaBlocks::ELEMENT_HASSIUM()); - $this->map(Ids::ELEMENT_109, fn() => VanillaBlocks::ELEMENT_MEITNERIUM()); - $this->map(Ids::ELEMENT_11, fn() => VanillaBlocks::ELEMENT_SODIUM()); - $this->map(Ids::ELEMENT_110, fn() => VanillaBlocks::ELEMENT_DARMSTADTIUM()); - $this->map(Ids::ELEMENT_111, fn() => VanillaBlocks::ELEMENT_ROENTGENIUM()); - $this->map(Ids::ELEMENT_112, fn() => VanillaBlocks::ELEMENT_COPERNICIUM()); - $this->map(Ids::ELEMENT_113, fn() => VanillaBlocks::ELEMENT_NIHONIUM()); - $this->map(Ids::ELEMENT_114, fn() => VanillaBlocks::ELEMENT_FLEROVIUM()); - $this->map(Ids::ELEMENT_115, fn() => VanillaBlocks::ELEMENT_MOSCOVIUM()); - $this->map(Ids::ELEMENT_116, fn() => VanillaBlocks::ELEMENT_LIVERMORIUM()); - $this->map(Ids::ELEMENT_117, fn() => VanillaBlocks::ELEMENT_TENNESSINE()); - $this->map(Ids::ELEMENT_118, fn() => VanillaBlocks::ELEMENT_OGANESSON()); - $this->map(Ids::ELEMENT_12, fn() => VanillaBlocks::ELEMENT_MAGNESIUM()); - $this->map(Ids::ELEMENT_13, fn() => VanillaBlocks::ELEMENT_ALUMINUM()); - $this->map(Ids::ELEMENT_14, fn() => VanillaBlocks::ELEMENT_SILICON()); - $this->map(Ids::ELEMENT_15, fn() => VanillaBlocks::ELEMENT_PHOSPHORUS()); - $this->map(Ids::ELEMENT_16, fn() => VanillaBlocks::ELEMENT_SULFUR()); - $this->map(Ids::ELEMENT_17, fn() => VanillaBlocks::ELEMENT_CHLORINE()); - $this->map(Ids::ELEMENT_18, fn() => VanillaBlocks::ELEMENT_ARGON()); - $this->map(Ids::ELEMENT_19, fn() => VanillaBlocks::ELEMENT_POTASSIUM()); - $this->map(Ids::ELEMENT_2, fn() => VanillaBlocks::ELEMENT_HELIUM()); - $this->map(Ids::ELEMENT_20, fn() => VanillaBlocks::ELEMENT_CALCIUM()); - $this->map(Ids::ELEMENT_21, fn() => VanillaBlocks::ELEMENT_SCANDIUM()); - $this->map(Ids::ELEMENT_22, fn() => VanillaBlocks::ELEMENT_TITANIUM()); - $this->map(Ids::ELEMENT_23, fn() => VanillaBlocks::ELEMENT_VANADIUM()); - $this->map(Ids::ELEMENT_24, fn() => VanillaBlocks::ELEMENT_CHROMIUM()); - $this->map(Ids::ELEMENT_25, fn() => VanillaBlocks::ELEMENT_MANGANESE()); - $this->map(Ids::ELEMENT_26, fn() => VanillaBlocks::ELEMENT_IRON()); - $this->map(Ids::ELEMENT_27, fn() => VanillaBlocks::ELEMENT_COBALT()); - $this->map(Ids::ELEMENT_28, fn() => VanillaBlocks::ELEMENT_NICKEL()); - $this->map(Ids::ELEMENT_29, fn() => VanillaBlocks::ELEMENT_COPPER()); - $this->map(Ids::ELEMENT_3, fn() => VanillaBlocks::ELEMENT_LITHIUM()); - $this->map(Ids::ELEMENT_30, fn() => VanillaBlocks::ELEMENT_ZINC()); - $this->map(Ids::ELEMENT_31, fn() => VanillaBlocks::ELEMENT_GALLIUM()); - $this->map(Ids::ELEMENT_32, fn() => VanillaBlocks::ELEMENT_GERMANIUM()); - $this->map(Ids::ELEMENT_33, fn() => VanillaBlocks::ELEMENT_ARSENIC()); - $this->map(Ids::ELEMENT_34, fn() => VanillaBlocks::ELEMENT_SELENIUM()); - $this->map(Ids::ELEMENT_35, fn() => VanillaBlocks::ELEMENT_BROMINE()); - $this->map(Ids::ELEMENT_36, fn() => VanillaBlocks::ELEMENT_KRYPTON()); - $this->map(Ids::ELEMENT_37, fn() => VanillaBlocks::ELEMENT_RUBIDIUM()); - $this->map(Ids::ELEMENT_38, fn() => VanillaBlocks::ELEMENT_STRONTIUM()); - $this->map(Ids::ELEMENT_39, fn() => VanillaBlocks::ELEMENT_YTTRIUM()); - $this->map(Ids::ELEMENT_4, fn() => VanillaBlocks::ELEMENT_BERYLLIUM()); - $this->map(Ids::ELEMENT_40, fn() => VanillaBlocks::ELEMENT_ZIRCONIUM()); - $this->map(Ids::ELEMENT_41, fn() => VanillaBlocks::ELEMENT_NIOBIUM()); - $this->map(Ids::ELEMENT_42, fn() => VanillaBlocks::ELEMENT_MOLYBDENUM()); - $this->map(Ids::ELEMENT_43, fn() => VanillaBlocks::ELEMENT_TECHNETIUM()); - $this->map(Ids::ELEMENT_44, fn() => VanillaBlocks::ELEMENT_RUTHENIUM()); - $this->map(Ids::ELEMENT_45, fn() => VanillaBlocks::ELEMENT_RHODIUM()); - $this->map(Ids::ELEMENT_46, fn() => VanillaBlocks::ELEMENT_PALLADIUM()); - $this->map(Ids::ELEMENT_47, fn() => VanillaBlocks::ELEMENT_SILVER()); - $this->map(Ids::ELEMENT_48, fn() => VanillaBlocks::ELEMENT_CADMIUM()); - $this->map(Ids::ELEMENT_49, fn() => VanillaBlocks::ELEMENT_INDIUM()); - $this->map(Ids::ELEMENT_5, fn() => VanillaBlocks::ELEMENT_BORON()); - $this->map(Ids::ELEMENT_50, fn() => VanillaBlocks::ELEMENT_TIN()); - $this->map(Ids::ELEMENT_51, fn() => VanillaBlocks::ELEMENT_ANTIMONY()); - $this->map(Ids::ELEMENT_52, fn() => VanillaBlocks::ELEMENT_TELLURIUM()); - $this->map(Ids::ELEMENT_53, fn() => VanillaBlocks::ELEMENT_IODINE()); - $this->map(Ids::ELEMENT_54, fn() => VanillaBlocks::ELEMENT_XENON()); - $this->map(Ids::ELEMENT_55, fn() => VanillaBlocks::ELEMENT_CESIUM()); - $this->map(Ids::ELEMENT_56, fn() => VanillaBlocks::ELEMENT_BARIUM()); - $this->map(Ids::ELEMENT_57, fn() => VanillaBlocks::ELEMENT_LANTHANUM()); - $this->map(Ids::ELEMENT_58, fn() => VanillaBlocks::ELEMENT_CERIUM()); - $this->map(Ids::ELEMENT_59, fn() => VanillaBlocks::ELEMENT_PRASEODYMIUM()); - $this->map(Ids::ELEMENT_6, fn() => VanillaBlocks::ELEMENT_CARBON()); - $this->map(Ids::ELEMENT_60, fn() => VanillaBlocks::ELEMENT_NEODYMIUM()); - $this->map(Ids::ELEMENT_61, fn() => VanillaBlocks::ELEMENT_PROMETHIUM()); - $this->map(Ids::ELEMENT_62, fn() => VanillaBlocks::ELEMENT_SAMARIUM()); - $this->map(Ids::ELEMENT_63, fn() => VanillaBlocks::ELEMENT_EUROPIUM()); - $this->map(Ids::ELEMENT_64, fn() => VanillaBlocks::ELEMENT_GADOLINIUM()); - $this->map(Ids::ELEMENT_65, fn() => VanillaBlocks::ELEMENT_TERBIUM()); - $this->map(Ids::ELEMENT_66, fn() => VanillaBlocks::ELEMENT_DYSPROSIUM()); - $this->map(Ids::ELEMENT_67, fn() => VanillaBlocks::ELEMENT_HOLMIUM()); - $this->map(Ids::ELEMENT_68, fn() => VanillaBlocks::ELEMENT_ERBIUM()); - $this->map(Ids::ELEMENT_69, fn() => VanillaBlocks::ELEMENT_THULIUM()); - $this->map(Ids::ELEMENT_7, fn() => VanillaBlocks::ELEMENT_NITROGEN()); - $this->map(Ids::ELEMENT_70, fn() => VanillaBlocks::ELEMENT_YTTERBIUM()); - $this->map(Ids::ELEMENT_71, fn() => VanillaBlocks::ELEMENT_LUTETIUM()); - $this->map(Ids::ELEMENT_72, fn() => VanillaBlocks::ELEMENT_HAFNIUM()); - $this->map(Ids::ELEMENT_73, fn() => VanillaBlocks::ELEMENT_TANTALUM()); - $this->map(Ids::ELEMENT_74, fn() => VanillaBlocks::ELEMENT_TUNGSTEN()); - $this->map(Ids::ELEMENT_75, fn() => VanillaBlocks::ELEMENT_RHENIUM()); - $this->map(Ids::ELEMENT_76, fn() => VanillaBlocks::ELEMENT_OSMIUM()); - $this->map(Ids::ELEMENT_77, fn() => VanillaBlocks::ELEMENT_IRIDIUM()); - $this->map(Ids::ELEMENT_78, fn() => VanillaBlocks::ELEMENT_PLATINUM()); - $this->map(Ids::ELEMENT_79, fn() => VanillaBlocks::ELEMENT_GOLD()); - $this->map(Ids::ELEMENT_8, fn() => VanillaBlocks::ELEMENT_OXYGEN()); - $this->map(Ids::ELEMENT_80, fn() => VanillaBlocks::ELEMENT_MERCURY()); - $this->map(Ids::ELEMENT_81, fn() => VanillaBlocks::ELEMENT_THALLIUM()); - $this->map(Ids::ELEMENT_82, fn() => VanillaBlocks::ELEMENT_LEAD()); - $this->map(Ids::ELEMENT_83, fn() => VanillaBlocks::ELEMENT_BISMUTH()); - $this->map(Ids::ELEMENT_84, fn() => VanillaBlocks::ELEMENT_POLONIUM()); - $this->map(Ids::ELEMENT_85, fn() => VanillaBlocks::ELEMENT_ASTATINE()); - $this->map(Ids::ELEMENT_86, fn() => VanillaBlocks::ELEMENT_RADON()); - $this->map(Ids::ELEMENT_87, fn() => VanillaBlocks::ELEMENT_FRANCIUM()); - $this->map(Ids::ELEMENT_88, fn() => VanillaBlocks::ELEMENT_RADIUM()); - $this->map(Ids::ELEMENT_89, fn() => VanillaBlocks::ELEMENT_ACTINIUM()); - $this->map(Ids::ELEMENT_9, fn() => VanillaBlocks::ELEMENT_FLUORINE()); - $this->map(Ids::ELEMENT_90, fn() => VanillaBlocks::ELEMENT_THORIUM()); - $this->map(Ids::ELEMENT_91, fn() => VanillaBlocks::ELEMENT_PROTACTINIUM()); - $this->map(Ids::ELEMENT_92, fn() => VanillaBlocks::ELEMENT_URANIUM()); - $this->map(Ids::ELEMENT_93, fn() => VanillaBlocks::ELEMENT_NEPTUNIUM()); - $this->map(Ids::ELEMENT_94, fn() => VanillaBlocks::ELEMENT_PLUTONIUM()); - $this->map(Ids::ELEMENT_95, fn() => VanillaBlocks::ELEMENT_AMERICIUM()); - $this->map(Ids::ELEMENT_96, fn() => VanillaBlocks::ELEMENT_CURIUM()); - $this->map(Ids::ELEMENT_97, fn() => VanillaBlocks::ELEMENT_BERKELIUM()); - $this->map(Ids::ELEMENT_98, fn() => VanillaBlocks::ELEMENT_CALIFORNIUM()); - $this->map(Ids::ELEMENT_99, fn() => VanillaBlocks::ELEMENT_EINSTEINIUM()); - $this->map(Ids::EMERALD_BLOCK, fn() => VanillaBlocks::EMERALD()); - $this->map(Ids::EMERALD_ORE, fn() => VanillaBlocks::EMERALD_ORE()); - $this->map(Ids::ENCHANTING_TABLE, fn() => VanillaBlocks::ENCHANTING_TABLE()); - $this->map(Ids::END_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::END_STONE_BRICK_STAIRS(), $in)); - $this->map(Ids::END_BRICKS, fn() => VanillaBlocks::END_STONE_BRICKS()); - $this->map(Ids::END_PORTAL_FRAME, function(BlockStateReader $in) : Block{ - return VanillaBlocks::END_PORTAL_FRAME() - ->setEye($in->readBool(BlockStateNames::END_PORTAL_EYE_BIT)) + $this->map(Ids::DRAGON_EGG, fn() => Blocks::DRAGON_EGG()); + $this->map(Ids::DRIED_KELP_BLOCK, fn() => Blocks::DRIED_KELP()); + $this->map(Ids::ELEMENT_0, fn() => Blocks::ELEMENT_ZERO()); + $this->map(Ids::ELEMENT_1, fn() => Blocks::ELEMENT_HYDROGEN()); + $this->map(Ids::ELEMENT_10, fn() => Blocks::ELEMENT_NEON()); + $this->map(Ids::ELEMENT_100, fn() => Blocks::ELEMENT_FERMIUM()); + $this->map(Ids::ELEMENT_101, fn() => Blocks::ELEMENT_MENDELEVIUM()); + $this->map(Ids::ELEMENT_102, fn() => Blocks::ELEMENT_NOBELIUM()); + $this->map(Ids::ELEMENT_103, fn() => Blocks::ELEMENT_LAWRENCIUM()); + $this->map(Ids::ELEMENT_104, fn() => Blocks::ELEMENT_RUTHERFORDIUM()); + $this->map(Ids::ELEMENT_105, fn() => Blocks::ELEMENT_DUBNIUM()); + $this->map(Ids::ELEMENT_106, fn() => Blocks::ELEMENT_SEABORGIUM()); + $this->map(Ids::ELEMENT_107, fn() => Blocks::ELEMENT_BOHRIUM()); + $this->map(Ids::ELEMENT_108, fn() => Blocks::ELEMENT_HASSIUM()); + $this->map(Ids::ELEMENT_109, fn() => Blocks::ELEMENT_MEITNERIUM()); + $this->map(Ids::ELEMENT_11, fn() => Blocks::ELEMENT_SODIUM()); + $this->map(Ids::ELEMENT_110, fn() => Blocks::ELEMENT_DARMSTADTIUM()); + $this->map(Ids::ELEMENT_111, fn() => Blocks::ELEMENT_ROENTGENIUM()); + $this->map(Ids::ELEMENT_112, fn() => Blocks::ELEMENT_COPERNICIUM()); + $this->map(Ids::ELEMENT_113, fn() => Blocks::ELEMENT_NIHONIUM()); + $this->map(Ids::ELEMENT_114, fn() => Blocks::ELEMENT_FLEROVIUM()); + $this->map(Ids::ELEMENT_115, fn() => Blocks::ELEMENT_MOSCOVIUM()); + $this->map(Ids::ELEMENT_116, fn() => Blocks::ELEMENT_LIVERMORIUM()); + $this->map(Ids::ELEMENT_117, fn() => Blocks::ELEMENT_TENNESSINE()); + $this->map(Ids::ELEMENT_118, fn() => Blocks::ELEMENT_OGANESSON()); + $this->map(Ids::ELEMENT_12, fn() => Blocks::ELEMENT_MAGNESIUM()); + $this->map(Ids::ELEMENT_13, fn() => Blocks::ELEMENT_ALUMINUM()); + $this->map(Ids::ELEMENT_14, fn() => Blocks::ELEMENT_SILICON()); + $this->map(Ids::ELEMENT_15, fn() => Blocks::ELEMENT_PHOSPHORUS()); + $this->map(Ids::ELEMENT_16, fn() => Blocks::ELEMENT_SULFUR()); + $this->map(Ids::ELEMENT_17, fn() => Blocks::ELEMENT_CHLORINE()); + $this->map(Ids::ELEMENT_18, fn() => Blocks::ELEMENT_ARGON()); + $this->map(Ids::ELEMENT_19, fn() => Blocks::ELEMENT_POTASSIUM()); + $this->map(Ids::ELEMENT_2, fn() => Blocks::ELEMENT_HELIUM()); + $this->map(Ids::ELEMENT_20, fn() => Blocks::ELEMENT_CALCIUM()); + $this->map(Ids::ELEMENT_21, fn() => Blocks::ELEMENT_SCANDIUM()); + $this->map(Ids::ELEMENT_22, fn() => Blocks::ELEMENT_TITANIUM()); + $this->map(Ids::ELEMENT_23, fn() => Blocks::ELEMENT_VANADIUM()); + $this->map(Ids::ELEMENT_24, fn() => Blocks::ELEMENT_CHROMIUM()); + $this->map(Ids::ELEMENT_25, fn() => Blocks::ELEMENT_MANGANESE()); + $this->map(Ids::ELEMENT_26, fn() => Blocks::ELEMENT_IRON()); + $this->map(Ids::ELEMENT_27, fn() => Blocks::ELEMENT_COBALT()); + $this->map(Ids::ELEMENT_28, fn() => Blocks::ELEMENT_NICKEL()); + $this->map(Ids::ELEMENT_29, fn() => Blocks::ELEMENT_COPPER()); + $this->map(Ids::ELEMENT_3, fn() => Blocks::ELEMENT_LITHIUM()); + $this->map(Ids::ELEMENT_30, fn() => Blocks::ELEMENT_ZINC()); + $this->map(Ids::ELEMENT_31, fn() => Blocks::ELEMENT_GALLIUM()); + $this->map(Ids::ELEMENT_32, fn() => Blocks::ELEMENT_GERMANIUM()); + $this->map(Ids::ELEMENT_33, fn() => Blocks::ELEMENT_ARSENIC()); + $this->map(Ids::ELEMENT_34, fn() => Blocks::ELEMENT_SELENIUM()); + $this->map(Ids::ELEMENT_35, fn() => Blocks::ELEMENT_BROMINE()); + $this->map(Ids::ELEMENT_36, fn() => Blocks::ELEMENT_KRYPTON()); + $this->map(Ids::ELEMENT_37, fn() => Blocks::ELEMENT_RUBIDIUM()); + $this->map(Ids::ELEMENT_38, fn() => Blocks::ELEMENT_STRONTIUM()); + $this->map(Ids::ELEMENT_39, fn() => Blocks::ELEMENT_YTTRIUM()); + $this->map(Ids::ELEMENT_4, fn() => Blocks::ELEMENT_BERYLLIUM()); + $this->map(Ids::ELEMENT_40, fn() => Blocks::ELEMENT_ZIRCONIUM()); + $this->map(Ids::ELEMENT_41, fn() => Blocks::ELEMENT_NIOBIUM()); + $this->map(Ids::ELEMENT_42, fn() => Blocks::ELEMENT_MOLYBDENUM()); + $this->map(Ids::ELEMENT_43, fn() => Blocks::ELEMENT_TECHNETIUM()); + $this->map(Ids::ELEMENT_44, fn() => Blocks::ELEMENT_RUTHENIUM()); + $this->map(Ids::ELEMENT_45, fn() => Blocks::ELEMENT_RHODIUM()); + $this->map(Ids::ELEMENT_46, fn() => Blocks::ELEMENT_PALLADIUM()); + $this->map(Ids::ELEMENT_47, fn() => Blocks::ELEMENT_SILVER()); + $this->map(Ids::ELEMENT_48, fn() => Blocks::ELEMENT_CADMIUM()); + $this->map(Ids::ELEMENT_49, fn() => Blocks::ELEMENT_INDIUM()); + $this->map(Ids::ELEMENT_5, fn() => Blocks::ELEMENT_BORON()); + $this->map(Ids::ELEMENT_50, fn() => Blocks::ELEMENT_TIN()); + $this->map(Ids::ELEMENT_51, fn() => Blocks::ELEMENT_ANTIMONY()); + $this->map(Ids::ELEMENT_52, fn() => Blocks::ELEMENT_TELLURIUM()); + $this->map(Ids::ELEMENT_53, fn() => Blocks::ELEMENT_IODINE()); + $this->map(Ids::ELEMENT_54, fn() => Blocks::ELEMENT_XENON()); + $this->map(Ids::ELEMENT_55, fn() => Blocks::ELEMENT_CESIUM()); + $this->map(Ids::ELEMENT_56, fn() => Blocks::ELEMENT_BARIUM()); + $this->map(Ids::ELEMENT_57, fn() => Blocks::ELEMENT_LANTHANUM()); + $this->map(Ids::ELEMENT_58, fn() => Blocks::ELEMENT_CERIUM()); + $this->map(Ids::ELEMENT_59, fn() => Blocks::ELEMENT_PRASEODYMIUM()); + $this->map(Ids::ELEMENT_6, fn() => Blocks::ELEMENT_CARBON()); + $this->map(Ids::ELEMENT_60, fn() => Blocks::ELEMENT_NEODYMIUM()); + $this->map(Ids::ELEMENT_61, fn() => Blocks::ELEMENT_PROMETHIUM()); + $this->map(Ids::ELEMENT_62, fn() => Blocks::ELEMENT_SAMARIUM()); + $this->map(Ids::ELEMENT_63, fn() => Blocks::ELEMENT_EUROPIUM()); + $this->map(Ids::ELEMENT_64, fn() => Blocks::ELEMENT_GADOLINIUM()); + $this->map(Ids::ELEMENT_65, fn() => Blocks::ELEMENT_TERBIUM()); + $this->map(Ids::ELEMENT_66, fn() => Blocks::ELEMENT_DYSPROSIUM()); + $this->map(Ids::ELEMENT_67, fn() => Blocks::ELEMENT_HOLMIUM()); + $this->map(Ids::ELEMENT_68, fn() => Blocks::ELEMENT_ERBIUM()); + $this->map(Ids::ELEMENT_69, fn() => Blocks::ELEMENT_THULIUM()); + $this->map(Ids::ELEMENT_7, fn() => Blocks::ELEMENT_NITROGEN()); + $this->map(Ids::ELEMENT_70, fn() => Blocks::ELEMENT_YTTERBIUM()); + $this->map(Ids::ELEMENT_71, fn() => Blocks::ELEMENT_LUTETIUM()); + $this->map(Ids::ELEMENT_72, fn() => Blocks::ELEMENT_HAFNIUM()); + $this->map(Ids::ELEMENT_73, fn() => Blocks::ELEMENT_TANTALUM()); + $this->map(Ids::ELEMENT_74, fn() => Blocks::ELEMENT_TUNGSTEN()); + $this->map(Ids::ELEMENT_75, fn() => Blocks::ELEMENT_RHENIUM()); + $this->map(Ids::ELEMENT_76, fn() => Blocks::ELEMENT_OSMIUM()); + $this->map(Ids::ELEMENT_77, fn() => Blocks::ELEMENT_IRIDIUM()); + $this->map(Ids::ELEMENT_78, fn() => Blocks::ELEMENT_PLATINUM()); + $this->map(Ids::ELEMENT_79, fn() => Blocks::ELEMENT_GOLD()); + $this->map(Ids::ELEMENT_8, fn() => Blocks::ELEMENT_OXYGEN()); + $this->map(Ids::ELEMENT_80, fn() => Blocks::ELEMENT_MERCURY()); + $this->map(Ids::ELEMENT_81, fn() => Blocks::ELEMENT_THALLIUM()); + $this->map(Ids::ELEMENT_82, fn() => Blocks::ELEMENT_LEAD()); + $this->map(Ids::ELEMENT_83, fn() => Blocks::ELEMENT_BISMUTH()); + $this->map(Ids::ELEMENT_84, fn() => Blocks::ELEMENT_POLONIUM()); + $this->map(Ids::ELEMENT_85, fn() => Blocks::ELEMENT_ASTATINE()); + $this->map(Ids::ELEMENT_86, fn() => Blocks::ELEMENT_RADON()); + $this->map(Ids::ELEMENT_87, fn() => Blocks::ELEMENT_FRANCIUM()); + $this->map(Ids::ELEMENT_88, fn() => Blocks::ELEMENT_RADIUM()); + $this->map(Ids::ELEMENT_89, fn() => Blocks::ELEMENT_ACTINIUM()); + $this->map(Ids::ELEMENT_9, fn() => Blocks::ELEMENT_FLUORINE()); + $this->map(Ids::ELEMENT_90, fn() => Blocks::ELEMENT_THORIUM()); + $this->map(Ids::ELEMENT_91, fn() => Blocks::ELEMENT_PROTACTINIUM()); + $this->map(Ids::ELEMENT_92, fn() => Blocks::ELEMENT_URANIUM()); + $this->map(Ids::ELEMENT_93, fn() => Blocks::ELEMENT_NEPTUNIUM()); + $this->map(Ids::ELEMENT_94, fn() => Blocks::ELEMENT_PLUTONIUM()); + $this->map(Ids::ELEMENT_95, fn() => Blocks::ELEMENT_AMERICIUM()); + $this->map(Ids::ELEMENT_96, fn() => Blocks::ELEMENT_CURIUM()); + $this->map(Ids::ELEMENT_97, fn() => Blocks::ELEMENT_BERKELIUM()); + $this->map(Ids::ELEMENT_98, fn() => Blocks::ELEMENT_CALIFORNIUM()); + $this->map(Ids::ELEMENT_99, fn() => Blocks::ELEMENT_EINSTEINIUM()); + $this->map(Ids::EMERALD_BLOCK, fn() => Blocks::EMERALD()); + $this->map(Ids::EMERALD_ORE, fn() => Blocks::EMERALD_ORE()); + $this->map(Ids::ENCHANTING_TABLE, fn() => Blocks::ENCHANTING_TABLE()); + $this->map(Ids::END_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::END_STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::END_BRICKS, fn() => Blocks::END_STONE_BRICKS()); + $this->map(Ids::END_PORTAL_FRAME, function(Reader $in) : Block{ + return Blocks::END_PORTAL_FRAME() + ->setEye($in->readBool(StateNames::END_PORTAL_EYE_BIT)) ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::END_ROD, function(BlockStateReader $in) : Block{ - return VanillaBlocks::END_ROD() + $this->map(Ids::END_ROD, function(Reader $in) : Block{ + return Blocks::END_ROD() ->setFacing($in->readEndRodFacingDirection()); }); - $this->map(Ids::END_STONE, fn() => VanillaBlocks::END_STONE()); - $this->map(Ids::ENDER_CHEST, function(BlockStateReader $in) : Block{ - return VanillaBlocks::ENDER_CHEST() + $this->map(Ids::END_STONE, fn() => Blocks::END_STONE()); + $this->map(Ids::ENDER_CHEST, function(Reader $in) : Block{ + return Blocks::ENDER_CHEST() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::FARMLAND, function(BlockStateReader $in) : Block{ - return VanillaBlocks::FARMLAND() - ->setWetness($in->readBoundedInt(BlockStateNames::MOISTURIZED_AMOUNT, 0, 7)); + $this->map(Ids::FARMLAND, function(Reader $in) : Block{ + return Blocks::FARMLAND() + ->setWetness($in->readBoundedInt(StateNames::MOISTURIZED_AMOUNT, 0, 7)); }); - $this->map(Ids::FENCE, function(BlockStateReader $in) : Block{ - return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_FENCE(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_FENCE(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_FENCE(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_FENCE(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_FENCE(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_FENCE(), - default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), + $this->map(Ids::FENCE, function(Reader $in) : Block{ + return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => Blocks::OAK_FENCE(), + StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_FENCE(), + StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_FENCE(), + StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_FENCE(), + StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_FENCE(), + StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_FENCE(), + default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodName), }; }); - $this->map(Ids::FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::OAK_FENCE_GATE(), $in)); - $this->map(Ids::FIRE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::FIRE() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + $this->map(Ids::FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::OAK_FENCE_GATE(), $in)); + $this->map(Ids::FIRE, function(Reader $in) : Block{ + return Blocks::FIRE() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); - $this->map(Ids::FLETCHING_TABLE, fn() => VanillaBlocks::FLETCHING_TABLE()); + $this->map(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); $this->map(Ids::FLOWER_POT, function() : Block{ //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) - return VanillaBlocks::FLOWER_POT(); + return Blocks::FLOWER_POT(); }); - $this->map(Ids::FLOWING_LAVA, fn(BlockStateReader $in) => Helper::decodeFlowingLiquid(VanillaBlocks::LAVA(), $in)); - $this->map(Ids::FLOWING_WATER, fn(BlockStateReader $in) => Helper::decodeFlowingLiquid(VanillaBlocks::WATER(), $in)); - $this->map(Ids::FRAME, function(BlockStateReader $in) : Block{ + $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); + $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); + $this->map(Ids::FRAME, function(Reader $in) : Block{ //TODO: in R13 this can be any side, not just horizontal - return VanillaBlocks::ITEM_FRAME() + return Blocks::ITEM_FRAME() ->setFacing($in->readHorizontalFacing()) - ->setHasMap($in->readBool(BlockStateNames::ITEM_FRAME_MAP_BIT)); + ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); }); - $this->map(Ids::FROSTED_ICE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::FROSTED_ICE() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 3)); + $this->map(Ids::FROSTED_ICE, function(Reader $in) : Block{ + return Blocks::FROSTED_ICE() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); }); - $this->map(Ids::FURNACE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::FURNACE() + $this->map(Ids::FURNACE, function(Reader $in) : Block{ + return Blocks::FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::GLASS, fn() => VanillaBlocks::GLASS()); - $this->map(Ids::GLASS_PANE, fn() => VanillaBlocks::GLASS_PANE()); - $this->map(Ids::GLOWINGOBSIDIAN, fn() => VanillaBlocks::GLOWING_OBSIDIAN()); - $this->map(Ids::GLOWSTONE, fn() => VanillaBlocks::GLOWSTONE()); - $this->map(Ids::GOLD_BLOCK, fn() => VanillaBlocks::GOLD()); - $this->map(Ids::GOLD_ORE, fn() => VanillaBlocks::GOLD_ORE()); - $this->map(Ids::GOLDEN_RAIL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::POWERED_RAIL() - ->setPowered($in->readBool(BlockStateNames::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 5)); + $this->map(Ids::GLASS, fn() => Blocks::GLASS()); + $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); + $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); + $this->map(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); + $this->map(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); + $this->map(Ids::GOLD_ORE, fn() => Blocks::GOLD_ORE()); + $this->map(Ids::GOLDEN_RAIL, function(Reader $in) : Block{ + return Blocks::POWERED_RAIL() + ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); - $this->map(Ids::GRANITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::GRANITE_STAIRS(), $in)); - $this->map(Ids::GRASS, fn() => VanillaBlocks::GRASS()); - $this->map(Ids::GRASS_PATH, fn() => VanillaBlocks::GRASS_PATH()); - $this->map(Ids::GRAVEL, fn() => VanillaBlocks::GRAVEL()); - $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::HARD_GLASS, fn() => VanillaBlocks::HARDENED_GLASS()); - $this->map(Ids::HARD_GLASS_PANE, fn() => VanillaBlocks::HARDENED_GLASS_PANE()); - $this->map(Ids::HARD_STAINED_GLASS, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_HARDENED_GLASS() + $this->map(Ids::GRANITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::GRANITE_STAIRS(), $in)); + $this->map(Ids::GRASS, fn() => Blocks::GRASS()); + $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); + $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); + $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GRAY_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GREEN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); + $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); + $this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{ + return Blocks::STAINED_HARDENED_GLASS() ->setColor($in->readColor()); }); - $this->map(Ids::HARD_STAINED_GLASS_PANE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_HARDENED_GLASS_PANE() + $this->map(Ids::HARD_STAINED_GLASS_PANE, function(Reader $in) : Block{ + return Blocks::STAINED_HARDENED_GLASS_PANE() ->setColor($in->readColor()); }); - $this->map(Ids::HARDENED_CLAY, fn() => VanillaBlocks::HARDENED_CLAY()); - $this->map(Ids::HAY_BLOCK, function(BlockStateReader $in) : Block{ + $this->map(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); + $this->map(Ids::HAY_BLOCK, function(Reader $in) : Block{ //TODO: intentionally ignored "deprecated" blockstate (useless) - return VanillaBlocks::HAY_BALE()->setAxis($in->readPillarAxis()); + return Blocks::HAY_BALE()->setAxis($in->readPillarAxis()); }); - $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeWeightedPressurePlate(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); - $this->map(Ids::HOPPER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::HOPPER() + $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); + $this->map(Ids::HOPPER, function(Reader $in) : Block{ + return Blocks::HOPPER() ->setFacing($in->readFacingWithoutUp()) - ->setPowered($in->readBool(BlockStateNames::TOGGLE_BIT)); + ->setPowered($in->readBool(StateNames::TOGGLE_BIT)); }); - $this->map(Ids::ICE, fn() => VanillaBlocks::ICE()); - $this->map(Ids::INFO_UPDATE, fn() => VanillaBlocks::INFO_UPDATE()); - $this->map(Ids::INFO_UPDATE2, fn() => VanillaBlocks::INFO_UPDATE2()); - $this->map(Ids::INVISIBLEBEDROCK, fn() => VanillaBlocks::INVISIBLE_BEDROCK()); - $this->map(Ids::IRON_BARS, fn() => VanillaBlocks::IRON_BARS()); - $this->map(Ids::IRON_BLOCK, fn() => VanillaBlocks::IRON()); - $this->map(Ids::IRON_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::IRON_DOOR(), $in)); - $this->map(Ids::IRON_ORE, fn() => VanillaBlocks::IRON_ORE()); - $this->map(Ids::IRON_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::IRON_TRAPDOOR(), $in)); - $this->map(Ids::JUKEBOX, fn() => VanillaBlocks::JUKEBOX()); - $this->map(Ids::JUNGLE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::JUNGLE_BUTTON(), $in)); - $this->map(Ids::JUNGLE_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::JUNGLE_DOOR(), $in)); - $this->map(Ids::JUNGLE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::JUNGLE_FENCE_GATE(), $in)); - $this->map(Ids::JUNGLE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), $in)); - $this->map(Ids::JUNGLE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::JUNGLE_STAIRS(), $in)); - $this->map(Ids::JUNGLE_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::JUNGLE_SIGN(), $in)); - $this->map(Ids::JUNGLE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::JUNGLE_TRAPDOOR(), $in)); - $this->map(Ids::JUNGLE_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::JUNGLE_WALL_SIGN(), $in)); - $this->map(Ids::LADDER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LADDER() + $this->map(Ids::ICE, fn() => Blocks::ICE()); + $this->map(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); + $this->map(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); + $this->map(Ids::INVISIBLEBEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); + $this->map(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); + $this->map(Ids::IRON_BLOCK, fn() => Blocks::IRON()); + $this->map(Ids::IRON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::IRON_DOOR(), $in)); + $this->map(Ids::IRON_ORE, fn() => Blocks::IRON_ORE()); + $this->map(Ids::IRON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::IRON_TRAPDOOR(), $in)); + $this->map(Ids::JUKEBOX, fn() => Blocks::JUKEBOX()); + $this->map(Ids::JUNGLE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::JUNGLE_BUTTON(), $in)); + $this->map(Ids::JUNGLE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::JUNGLE_DOOR(), $in)); + $this->map(Ids::JUNGLE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::JUNGLE_FENCE_GATE(), $in)); + $this->map(Ids::JUNGLE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::JUNGLE_PRESSURE_PLATE(), $in)); + $this->map(Ids::JUNGLE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::JUNGLE_STAIRS(), $in)); + $this->map(Ids::JUNGLE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::JUNGLE_SIGN(), $in)); + $this->map(Ids::JUNGLE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::JUNGLE_TRAPDOOR(), $in)); + $this->map(Ids::JUNGLE_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::JUNGLE_WALL_SIGN(), $in)); + $this->map(Ids::LADDER, function(Reader $in) : Block{ + return Blocks::LADDER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::LANTERN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LANTERN() - ->setHanging($in->readBool(BlockStateNames::HANGING)); + $this->map(Ids::LANTERN, function(Reader $in) : Block{ + return Blocks::LANTERN() + ->setHanging($in->readBool(StateNames::HANGING)); }); - $this->map(Ids::LAPIS_BLOCK, fn() => VanillaBlocks::LAPIS_LAZULI()); - $this->map(Ids::LAPIS_ORE, fn() => VanillaBlocks::LAPIS_LAZULI_ORE()); - $this->map(Ids::LAVA, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::LAVA(), $in)); - $this->map(Ids::LEAVES, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::OLD_LEAF_TYPE)){ - StringValues::OLD_LEAF_TYPE_BIRCH => VanillaBlocks::BIRCH_LEAVES(), - StringValues::OLD_LEAF_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LEAVES(), - StringValues::OLD_LEAF_TYPE_OAK => VanillaBlocks::OAK_LEAVES(), - StringValues::OLD_LEAF_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LEAVES(), - default => throw $in->badValueException(BlockStateNames::OLD_LEAF_TYPE, $type), + $this->map(Ids::LAPIS_BLOCK, fn() => Blocks::LAPIS_LAZULI()); + $this->map(Ids::LAPIS_ORE, fn() => Blocks::LAPIS_LAZULI_ORE()); + $this->map(Ids::LAVA, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::LAVA(), $in)); + $this->map(Ids::LEAVES, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::OLD_LEAF_TYPE)){ + StringValues::OLD_LEAF_TYPE_BIRCH => Blocks::BIRCH_LEAVES(), + StringValues::OLD_LEAF_TYPE_JUNGLE => Blocks::JUNGLE_LEAVES(), + StringValues::OLD_LEAF_TYPE_OAK => Blocks::OAK_LEAVES(), + StringValues::OLD_LEAF_TYPE_SPRUCE => Blocks::SPRUCE_LEAVES(), + default => throw $in->badValueException(StateNames::OLD_LEAF_TYPE, $type), }) - ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(BlockStateNames::UPDATE_BIT)); + ->setNoDecay($in->readBool(StateNames::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(StateNames::UPDATE_BIT)); }); - $this->map(Ids::LEAVES2, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::NEW_LEAF_TYPE)){ - StringValues::NEW_LEAF_TYPE_ACACIA => VanillaBlocks::ACACIA_LEAVES(), - StringValues::NEW_LEAF_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LEAVES(), - default => throw $in->badValueException(BlockStateNames::NEW_LEAF_TYPE, $type), + $this->map(Ids::LEAVES2, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::NEW_LEAF_TYPE)){ + StringValues::NEW_LEAF_TYPE_ACACIA => Blocks::ACACIA_LEAVES(), + StringValues::NEW_LEAF_TYPE_DARK_OAK => Blocks::DARK_OAK_LEAVES(), + default => throw $in->badValueException(StateNames::NEW_LEAF_TYPE, $type), }) - ->setNoDecay($in->readBool(BlockStateNames::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(BlockStateNames::UPDATE_BIT)); + ->setNoDecay($in->readBool(StateNames::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(StateNames::UPDATE_BIT)); }); - $this->map(Ids::LECTERN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LECTERN() + $this->map(Ids::LECTERN, function(Reader $in) : Block{ + return Blocks::LECTERN() ->setFacing($in->readLegacyHorizontalFacing()) - ->setProducingSignal($in->readBool(BlockStateNames::POWERED_BIT)); + ->setProducingSignal($in->readBool(StateNames::POWERED_BIT)); }); - $this->map(Ids::LEVER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LEVER() - ->setActivated($in->readBool(BlockStateNames::OPEN_BIT)) - ->setFacing(match($value = $in->readString(BlockStateNames::LEVER_DIRECTION)){ + $this->map(Ids::LEVER, function(Reader $in) : Block{ + return Blocks::LEVER() + ->setActivated($in->readBool(StateNames::OPEN_BIT)) + ->setFacing(match($value = $in->readString(StateNames::LEVER_DIRECTION)){ StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH => LeverFacing::DOWN_AXIS_Z(), StringValues::LEVER_DIRECTION_DOWN_EAST_WEST => LeverFacing::DOWN_AXIS_X(), StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH => LeverFacing::UP_AXIS_Z(), @@ -581,516 +583,516 @@ final class BlockStateDeserializer{ StringValues::LEVER_DIRECTION_SOUTH => LeverFacing::SOUTH(), StringValues::LEVER_DIRECTION_WEST => LeverFacing::WEST(), StringValues::LEVER_DIRECTION_EAST => LeverFacing::EAST(), - default => throw $in->badValueException(BlockStateNames::LEVER_DIRECTION, $value), + default => throw $in->badValueException(StateNames::LEVER_DIRECTION, $value), }); }); - $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeWeightedPressurePlate(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); - $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::LIT_BLAST_FURNACE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BLAST_FURNACE() + $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); + $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIME_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIT_BLAST_FURNACE, function(Reader $in) : Block{ + return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LIT_FURNACE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::FURNACE() + $this->map(Ids::LIT_FURNACE, function(Reader $in) : Block{ + return Blocks::FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LIT_PUMPKIN, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LIT_PUMPKIN() + $this->map(Ids::LIT_PUMPKIN, function(Reader $in) : Block{ + return Blocks::LIT_PUMPKIN() ->setFacing($in->readLegacyHorizontalFacing()); }); $this->map(Ids::LIT_REDSTONE_LAMP, function() : Block{ - return VanillaBlocks::REDSTONE_LAMP() + return Blocks::REDSTONE_LAMP() ->setPowered(true); }); $this->map(Ids::LIT_REDSTONE_ORE, function() : Block{ - return VanillaBlocks::REDSTONE_ORE() + return Blocks::REDSTONE_ORE() ->setLit(true); }); - $this->map(Ids::LIT_SMOKER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SMOKER() + $this->map(Ids::LIT_SMOKER, function(Reader $in) : Block{ + return Blocks::SMOKER() ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LOG, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => VanillaBlocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => VanillaBlocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => VanillaBlocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => VanillaBlocks::SPRUCE_LOG(), - default => throw $in->badValueException(BlockStateNames::OLD_LOG_TYPE, $type), + $this->map(Ids::LOG, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ + StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), + default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::LOG2, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => VanillaBlocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_LOG(), - default => throw $in->badValueException(BlockStateNames::NEW_LOG_TYPE, $type), + $this->map(Ids::LOG2, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ + StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), + default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), }) ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::LOOM, function(BlockStateReader $in) : Block{ - return VanillaBlocks::LOOM() + $this->map(Ids::LOOM, function(Reader $in) : Block{ + return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::MAGMA, fn() => VanillaBlocks::MAGMA()); - $this->map(Ids::MELON_BLOCK, fn() => VanillaBlocks::MELON()); - $this->map(Ids::MELON_STEM, fn(BlockStateReader $in) => Helper::decodeStem(VanillaBlocks::MELON_STEM(), $in)); - $this->map(Ids::MOB_SPAWNER, fn() => VanillaBlocks::MONSTER_SPAWNER()); - $this->map(Ids::MONSTER_EGG, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::MONSTER_EGG_STONE_TYPE)){ - StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => VanillaBlocks::INFESTED_COBBLESTONE(), - StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE => VanillaBlocks::INFESTED_STONE(), - StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => VanillaBlocks::INFESTED_STONE_BRICK(), - default => throw $in->badValueException(BlockStateNames::MONSTER_EGG_STONE_TYPE, $type), + $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); + $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); + $this->map(Ids::MELON_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::MELON_STEM(), $in)); + $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); + $this->map(Ids::MONSTER_EGG, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::MONSTER_EGG_STONE_TYPE)){ + StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => Blocks::INFESTED_CHISELED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE => Blocks::INFESTED_COBBLESTONE(), + StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK => Blocks::INFESTED_CRACKED_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK => Blocks::INFESTED_MOSSY_STONE_BRICK(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE => Blocks::INFESTED_STONE(), + StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK => Blocks::INFESTED_STONE_BRICK(), + default => throw $in->badValueException(StateNames::MONSTER_EGG_STONE_TYPE, $type), }; }); - $this->map(Ids::MOSSY_COBBLESTONE, fn() => VanillaBlocks::MOSSY_COBBLESTONE()); - $this->map(Ids::MOSSY_COBBLESTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), $in)); - $this->map(Ids::MOSSY_STONE_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), $in)); - $this->map(Ids::MYCELIUM, fn() => VanillaBlocks::MYCELIUM()); - $this->map(Ids::NETHER_BRICK, fn() => VanillaBlocks::NETHER_BRICKS()); - $this->map(Ids::NETHER_BRICK_FENCE, fn() => VanillaBlocks::NETHER_BRICK_FENCE()); - $this->map(Ids::NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::NETHER_BRICK_STAIRS(), $in)); - $this->map(Ids::NETHER_WART, function(BlockStateReader $in) : Block{ - return VanillaBlocks::NETHER_WART() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 3)); + $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); + $this->map(Ids::MOSSY_COBBLESTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), $in)); + $this->map(Ids::MOSSY_STONE_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); + $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); + $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); + $this->map(Ids::NETHER_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::NETHER_BRICK_STAIRS(), $in)); + $this->map(Ids::NETHER_WART, function(Reader $in) : Block{ + return Blocks::NETHER_WART() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); }); - $this->map(Ids::NETHER_WART_BLOCK, fn() => VanillaBlocks::NETHER_WART_BLOCK()); - $this->map(Ids::NETHERRACK, fn() => VanillaBlocks::NETHERRACK()); - $this->map(Ids::NETHERREACTOR, fn() => VanillaBlocks::NETHER_REACTOR_CORE()); - $this->map(Ids::NORMAL_STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::STONE_STAIRS(), $in)); - $this->map(Ids::NOTEBLOCK, fn() => VanillaBlocks::NOTE_BLOCK()); - $this->map(Ids::OAK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::OAK_STAIRS(), $in)); - $this->map(Ids::OBSIDIAN, fn() => VanillaBlocks::OBSIDIAN()); - $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::PACKED_ICE, fn() => VanillaBlocks::PACKED_ICE()); - $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::PLANKS, function(BlockStateReader $in) : Block{ - return match($woodName = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => VanillaBlocks::OAK_PLANKS(), - StringValues::WOOD_TYPE_SPRUCE => VanillaBlocks::SPRUCE_PLANKS(), - StringValues::WOOD_TYPE_BIRCH => VanillaBlocks::BIRCH_PLANKS(), - StringValues::WOOD_TYPE_JUNGLE => VanillaBlocks::JUNGLE_PLANKS(), - StringValues::WOOD_TYPE_ACACIA => VanillaBlocks::ACACIA_PLANKS(), - StringValues::WOOD_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_PLANKS(), - default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodName), + $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); + $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); + $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); + $this->map(Ids::NORMAL_STONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::STONE_STAIRS(), $in)); + $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); + $this->map(Ids::OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::OAK_STAIRS(), $in)); + $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); + $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::ORANGE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); + $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PINK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PLANKS, function(Reader $in) : Block{ + return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_OAK => Blocks::OAK_PLANKS(), + StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_PLANKS(), + StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_PLANKS(), + StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_PLANKS(), + StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_PLANKS(), + StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_PLANKS(), + default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodName), }; }); - $this->map(Ids::PODZOL, fn() => VanillaBlocks::PODZOL()); - $this->map(Ids::POLISHED_ANDESITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), $in)); - $this->map(Ids::POLISHED_DIORITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_DIORITE_STAIRS(), $in)); - $this->map(Ids::POLISHED_GRANITE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::POLISHED_GRANITE_STAIRS(), $in)); - $this->map(Ids::PORTAL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::NETHER_PORTAL() - ->setAxis(match($value = $in->readString(BlockStateNames::PORTAL_AXIS)){ + $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); + $this->map(Ids::POLISHED_ANDESITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_ANDESITE_STAIRS(), $in)); + $this->map(Ids::POLISHED_DIORITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_DIORITE_STAIRS(), $in)); + $this->map(Ids::POLISHED_GRANITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_GRANITE_STAIRS(), $in)); + $this->map(Ids::PORTAL, function(Reader $in) : Block{ + return Blocks::NETHER_PORTAL() + ->setAxis(match($value = $in->readString(StateNames::PORTAL_AXIS)){ StringValues::PORTAL_AXIS_UNKNOWN => Axis::X, StringValues::PORTAL_AXIS_X => Axis::X, StringValues::PORTAL_AXIS_Z => Axis::Z, - default => throw $in->badValueException(BlockStateNames::PORTAL_AXIS, $value), + default => throw $in->badValueException(StateNames::PORTAL_AXIS, $value), }); }); - $this->map(Ids::POTATOES, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::POTATOES(), $in)); - $this->map(Ids::POWERED_COMPARATOR, fn(BlockStateReader $in) => Helper::decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); - $this->map(Ids::POWERED_REPEATER, fn(BlockStateReader $in) => Helper::decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + $this->map(Ids::POTATOES, fn(Reader $in) => Helper::decodeCrops(Blocks::POTATOES(), $in)); + $this->map(Ids::POWERED_COMPARATOR, fn(Reader $in) => Helper::decodeComparator(Blocks::REDSTONE_COMPARATOR(), $in)); + $this->map(Ids::POWERED_REPEATER, fn(Reader $in) => Helper::decodeRepeater(Blocks::REDSTONE_REPEATER(), $in) ->setPowered(true)); - $this->map(Ids::PRISMARINE, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::PRISMARINE_BLOCK_TYPE)){ - StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => VanillaBlocks::PRISMARINE_BRICKS(), - StringValues::PRISMARINE_BLOCK_TYPE_DARK => VanillaBlocks::DARK_PRISMARINE(), - StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => VanillaBlocks::PRISMARINE(), - default => throw $in->badValueException(BlockStateNames::PRISMARINE_BLOCK_TYPE, $type), + $this->map(Ids::PRISMARINE, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::PRISMARINE_BLOCK_TYPE)){ + StringValues::PRISMARINE_BLOCK_TYPE_BRICKS => Blocks::PRISMARINE_BRICKS(), + StringValues::PRISMARINE_BLOCK_TYPE_DARK => Blocks::DARK_PRISMARINE(), + StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT => Blocks::PRISMARINE(), + default => throw $in->badValueException(StateNames::PRISMARINE_BLOCK_TYPE, $type), }; }); - $this->map(Ids::PRISMARINE_BRICKS_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), $in)); - $this->map(Ids::PRISMARINE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PRISMARINE_STAIRS(), $in)); + $this->map(Ids::PRISMARINE_BRICKS_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_BRICKS_STAIRS(), $in)); + $this->map(Ids::PRISMARINE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_STAIRS(), $in)); $this->map(Ids::PUMPKIN, function() : Block{ //TODO: intentionally ignored "direction" property (obsolete) - return VanillaBlocks::PUMPKIN(); + return Blocks::PUMPKIN(); }); - $this->map(Ids::PUMPKIN_STEM, fn(BlockStateReader $in) => Helper::decodeStem(VanillaBlocks::PUMPKIN_STEM(), $in)); - $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::PURPUR_BLOCK, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ + $this->map(Ids::PUMPKIN_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::PUMPKIN_STEM(), $in)); + $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PURPLE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PURPUR_BLOCK, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::CHISEL_TYPE)){ StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::PURPUR(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), - default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), + StringValues::CHISEL_TYPE_DEFAULT => Blocks::PURPUR(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => Blocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), + default => throw $in->badValueException(StateNames::CHISEL_TYPE, $type), }; }); - $this->map(Ids::PURPUR_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::PURPUR_STAIRS(), $in)); - $this->map(Ids::QUARTZ_BLOCK, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED => VanillaBlocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_DEFAULT => VanillaBlocks::QUARTZ(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => VanillaBlocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_SMOOTH => VanillaBlocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) - default => throw $in->badValueException(BlockStateNames::CHISEL_TYPE, $type), + $this->map(Ids::PURPUR_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PURPUR_STAIRS(), $in)); + $this->map(Ids::QUARTZ_BLOCK, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::CHISEL_TYPE)){ + StringValues::CHISEL_TYPE_CHISELED => Blocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_DEFAULT => Blocks::QUARTZ(), //TODO: axis intentionally ignored (useless) + StringValues::CHISEL_TYPE_LINES => Blocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), + StringValues::CHISEL_TYPE_SMOOTH => Blocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) + default => throw $in->badValueException(StateNames::CHISEL_TYPE, $type), }; }); - $this->map(Ids::QUARTZ_ORE, fn() => VanillaBlocks::NETHER_QUARTZ_ORE()); - $this->map(Ids::QUARTZ_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::QUARTZ_STAIRS(), $in)); - $this->map(Ids::RAIL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::RAIL() - ->setShape($in->readBoundedInt(BlockStateNames::RAIL_DIRECTION, 0, 9)); + $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); + $this->map(Ids::QUARTZ_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::QUARTZ_STAIRS(), $in)); + $this->map(Ids::RAIL, function(Reader $in) : Block{ + return Blocks::RAIL() + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 9)); }); - $this->map(Ids::RED_FLOWER, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::FLOWER_TYPE)){ - StringValues::FLOWER_TYPE_ALLIUM => VanillaBlocks::ALLIUM(), - StringValues::FLOWER_TYPE_CORNFLOWER => VanillaBlocks::CORNFLOWER(), - StringValues::FLOWER_TYPE_HOUSTONIA => VanillaBlocks::AZURE_BLUET(), //wtf ??? - StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => VanillaBlocks::LILY_OF_THE_VALLEY(), - StringValues::FLOWER_TYPE_ORCHID => VanillaBlocks::BLUE_ORCHID(), - StringValues::FLOWER_TYPE_OXEYE => VanillaBlocks::OXEYE_DAISY(), - StringValues::FLOWER_TYPE_POPPY => VanillaBlocks::POPPY(), - StringValues::FLOWER_TYPE_TULIP_ORANGE => VanillaBlocks::ORANGE_TULIP(), - StringValues::FLOWER_TYPE_TULIP_PINK => VanillaBlocks::PINK_TULIP(), - StringValues::FLOWER_TYPE_TULIP_RED => VanillaBlocks::RED_TULIP(), - StringValues::FLOWER_TYPE_TULIP_WHITE => VanillaBlocks::WHITE_TULIP(), - default => throw $in->badValueException(BlockStateNames::FLOWER_TYPE, $type), + $this->map(Ids::RED_FLOWER, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::FLOWER_TYPE)){ + StringValues::FLOWER_TYPE_ALLIUM => Blocks::ALLIUM(), + StringValues::FLOWER_TYPE_CORNFLOWER => Blocks::CORNFLOWER(), + StringValues::FLOWER_TYPE_HOUSTONIA => Blocks::AZURE_BLUET(), //wtf ??? + StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY => Blocks::LILY_OF_THE_VALLEY(), + StringValues::FLOWER_TYPE_ORCHID => Blocks::BLUE_ORCHID(), + StringValues::FLOWER_TYPE_OXEYE => Blocks::OXEYE_DAISY(), + StringValues::FLOWER_TYPE_POPPY => Blocks::POPPY(), + StringValues::FLOWER_TYPE_TULIP_ORANGE => Blocks::ORANGE_TULIP(), + StringValues::FLOWER_TYPE_TULIP_PINK => Blocks::PINK_TULIP(), + StringValues::FLOWER_TYPE_TULIP_RED => Blocks::RED_TULIP(), + StringValues::FLOWER_TYPE_TULIP_WHITE => Blocks::WHITE_TULIP(), + default => throw $in->badValueException(StateNames::FLOWER_TYPE, $type), }; }); - $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::RED_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::RED_MUSHROOM, fn() => VanillaBlocks::RED_MUSHROOM()); - $this->map(Ids::RED_MUSHROOM_BLOCK, fn(BlockStateReader $in) => Helper::decodeMushroomBlock(VanillaBlocks::RED_MUSHROOM_BLOCK(), $in)); - $this->map(Ids::RED_NETHER_BRICK, fn() => VanillaBlocks::RED_NETHER_BRICKS()); - $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), $in)); - $this->map(Ids::RED_SANDSTONE, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_RED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_RED_SANDSTONE(), - default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), + $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::RED_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); + $this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in)); + $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); + $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::RED_NETHER_BRICK_STAIRS(), $in)); + $this->map(Ids::RED_SANDSTONE, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => Blocks::CUT_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => Blocks::RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => Blocks::CHISELED_RED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => Blocks::SMOOTH_RED_SANDSTONE(), + default => throw $in->badValueException(StateNames::SAND_STONE_TYPE, $type), }; }); - $this->map(Ids::RED_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::RED_SANDSTONE_STAIRS(), $in)); - $this->map(Ids::REDSTONE_BLOCK, fn() => VanillaBlocks::REDSTONE()); + $this->map(Ids::RED_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::RED_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); $this->map(Ids::REDSTONE_LAMP, function() : Block{ - return VanillaBlocks::REDSTONE_LAMP() + return Blocks::REDSTONE_LAMP() ->setPowered(false); }); $this->map(Ids::REDSTONE_ORE, function() : Block{ - return VanillaBlocks::REDSTONE_ORE() + return Blocks::REDSTONE_ORE() ->setLit(false); }); - $this->map(Ids::REDSTONE_TORCH, function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_TORCH() + $this->map(Ids::REDSTONE_TORCH, function(Reader $in) : Block{ + return Blocks::REDSTONE_TORCH() ->setFacing($in->readTorchFacing()) ->setLit(true); }); - $this->map(Ids::REDSTONE_WIRE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_WIRE() - ->setOutputSignalStrength($in->readBoundedInt(BlockStateNames::REDSTONE_SIGNAL, 0, 15)); + $this->map(Ids::REDSTONE_WIRE, function(Reader $in) : Block{ + return Blocks::REDSTONE_WIRE() + ->setOutputSignalStrength($in->readBoundedInt(StateNames::REDSTONE_SIGNAL, 0, 15)); }); - $this->map(Ids::REEDS, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SUGARCANE() - ->setAge($in->readBoundedInt(BlockStateNames::AGE, 0, 15)); + $this->map(Ids::REEDS, function(Reader $in) : Block{ + return Blocks::SUGARCANE() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); - $this->map(Ids::RESERVED6, fn() => VanillaBlocks::RESERVED6()); - $this->map(Ids::SAND, function(BlockStateReader $in) : Block{ - return match($value = $in->readString(BlockStateNames::SAND_TYPE)){ - StringValues::SAND_TYPE_NORMAL => VanillaBlocks::SAND(), - StringValues::SAND_TYPE_RED => VanillaBlocks::RED_SAND(), - default => throw $in->badValueException(BlockStateNames::SAND_TYPE, $value), + $this->map(Ids::RESERVED6, fn() => Blocks::RESERVED6()); + $this->map(Ids::SAND, function(Reader $in) : Block{ + return match($value = $in->readString(StateNames::SAND_TYPE)){ + StringValues::SAND_TYPE_NORMAL => Blocks::SAND(), + StringValues::SAND_TYPE_RED => Blocks::RED_SAND(), + default => throw $in->badValueException(StateNames::SAND_TYPE, $value), }; }); - $this->map(Ids::SANDSTONE, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::SAND_STONE_TYPE)){ - StringValues::SAND_STONE_TYPE_CUT => VanillaBlocks::CUT_SANDSTONE(), - StringValues::SAND_STONE_TYPE_DEFAULT => VanillaBlocks::SANDSTONE(), - StringValues::SAND_STONE_TYPE_HEIROGLYPHS => VanillaBlocks::CHISELED_SANDSTONE(), - StringValues::SAND_STONE_TYPE_SMOOTH => VanillaBlocks::SMOOTH_SANDSTONE(), - default => throw $in->badValueException(BlockStateNames::SAND_STONE_TYPE, $type), + $this->map(Ids::SANDSTONE, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::SAND_STONE_TYPE)){ + StringValues::SAND_STONE_TYPE_CUT => Blocks::CUT_SANDSTONE(), + StringValues::SAND_STONE_TYPE_DEFAULT => Blocks::SANDSTONE(), + StringValues::SAND_STONE_TYPE_HEIROGLYPHS => Blocks::CHISELED_SANDSTONE(), + StringValues::SAND_STONE_TYPE_SMOOTH => Blocks::SMOOTH_SANDSTONE(), + default => throw $in->badValueException(StateNames::SAND_STONE_TYPE, $type), }; }); - $this->map(Ids::SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SANDSTONE_STAIRS(), $in)); - $this->map(Ids::SAPLING, function(BlockStateReader $in) : Block{ - return (match($type = $in->readString(BlockStateNames::SAPLING_TYPE)){ - StringValues::SAPLING_TYPE_ACACIA => VanillaBlocks::ACACIA_SAPLING(), - StringValues::SAPLING_TYPE_BIRCH => VanillaBlocks::BIRCH_SAPLING(), - StringValues::SAPLING_TYPE_DARK_OAK => VanillaBlocks::DARK_OAK_SAPLING(), - StringValues::SAPLING_TYPE_JUNGLE => VanillaBlocks::JUNGLE_SAPLING(), - StringValues::SAPLING_TYPE_OAK => VanillaBlocks::OAK_SAPLING(), - StringValues::SAPLING_TYPE_SPRUCE => VanillaBlocks::SPRUCE_SAPLING(), - default => throw $in->badValueException(BlockStateNames::SAPLING_TYPE, $type), + $this->map(Ids::SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SAPLING, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::SAPLING_TYPE)){ + StringValues::SAPLING_TYPE_ACACIA => Blocks::ACACIA_SAPLING(), + StringValues::SAPLING_TYPE_BIRCH => Blocks::BIRCH_SAPLING(), + StringValues::SAPLING_TYPE_DARK_OAK => Blocks::DARK_OAK_SAPLING(), + StringValues::SAPLING_TYPE_JUNGLE => Blocks::JUNGLE_SAPLING(), + StringValues::SAPLING_TYPE_OAK => Blocks::OAK_SAPLING(), + StringValues::SAPLING_TYPE_SPRUCE => Blocks::SPRUCE_SAPLING(), + default => throw $in->badValueException(StateNames::SAPLING_TYPE, $type), }) - ->setReady($in->readBool(BlockStateNames::AGE_BIT)); + ->setReady($in->readBool(StateNames::AGE_BIT)); }); - $this->map(Ids::SEALANTERN, fn() => VanillaBlocks::SEA_LANTERN()); - $this->map(Ids::SEA_PICKLE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SEA_PICKLE() - ->setCount($in->readBoundedInt(BlockStateNames::CLUSTER_COUNT, 0, 3) + 1) - ->setUnderwater(!$in->readBool(BlockStateNames::DEAD_BIT)); + $this->map(Ids::SEALANTERN, fn() => Blocks::SEA_LANTERN()); + $this->map(Ids::SEA_PICKLE, function(Reader $in) : Block{ + return Blocks::SEA_PICKLE() + ->setCount($in->readBoundedInt(StateNames::CLUSTER_COUNT, 0, 3) + 1) + ->setUnderwater(!$in->readBool(StateNames::DEAD_BIT)); }); - $this->map(Ids::SHULKER_BOX, function(BlockStateReader $in) : Block{ - return VanillaBlocks::DYED_SHULKER_BOX() + $this->map(Ids::SHULKER_BOX, function(Reader $in) : Block{ + return Blocks::DYED_SHULKER_BOX() ->setColor($in->readColor()); }); - $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::SKULL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::MOB_HEAD() + $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::SKULL, function(Reader $in) : Block{ + return Blocks::MOB_HEAD() ->setFacing($in->readFacingWithoutDown()) - ->setNoDrops($in->readBool(BlockStateNames::NO_DROP_BIT)); + ->setNoDrops($in->readBool(StateNames::NO_DROP_BIT)); }); - $this->map(Ids::SLIME, fn() => VanillaBlocks::SLIME()); - $this->map(Ids::SMOKER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SMOKER() + $this->map(Ids::SLIME, fn() => Blocks::SLIME()); + $this->map(Ids::SMOKER, function(Reader $in) : Block{ + return Blocks::SMOKER() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::SMOOTH_QUARTZ_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), $in)); - $this->map(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); - $this->map(Ids::SMOOTH_SANDSTONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), $in)); - $this->map(Ids::SMOOTH_STONE, fn() => VanillaBlocks::SMOOTH_STONE()); - $this->map(Ids::SNOW, fn() => VanillaBlocks::SNOW()); - $this->map(Ids::SNOW_LAYER, function(BlockStateReader $in) : Block{ + $this->map(Ids::SMOOTH_QUARTZ_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), $in)); + $this->map(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SMOOTH_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), $in)); + $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); + $this->map(Ids::SNOW, fn() => Blocks::SNOW()); + $this->map(Ids::SNOW_LAYER, function(Reader $in) : Block{ //TODO: intentionally ignored covered_bit property (appears useless and we don't track it) - return VanillaBlocks::SNOW_LAYER()->setLayers($in->readBoundedInt(BlockStateNames::HEIGHT, 0, 7) + 1); + return Blocks::SNOW_LAYER()->setLayers($in->readBoundedInt(StateNames::HEIGHT, 0, 7) + 1); }); - $this->map(Ids::SOUL_SAND, fn() => VanillaBlocks::SOUL_SAND()); - $this->map(Ids::SPONGE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::SPONGE()->setWet(match($type = $in->readString(BlockStateNames::SPONGE_TYPE)){ + $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); + $this->map(Ids::SPONGE, function(Reader $in) : Block{ + return Blocks::SPONGE()->setWet(match($type = $in->readString(StateNames::SPONGE_TYPE)){ StringValues::SPONGE_TYPE_DRY => false, StringValues::SPONGE_TYPE_WET => true, - default => throw $in->badValueException(BlockStateNames::SPONGE_TYPE, $type), + default => throw $in->badValueException(StateNames::SPONGE_TYPE, $type), }); }); - $this->map(Ids::SPRUCE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::SPRUCE_BUTTON(), $in)); - $this->map(Ids::SPRUCE_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::SPRUCE_DOOR(), $in)); - $this->map(Ids::SPRUCE_FENCE_GATE, fn(BlockStateReader $in) => Helper::decodeFenceGate(VanillaBlocks::SPRUCE_FENCE_GATE(), $in)); - $this->map(Ids::SPRUCE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), $in)); - $this->map(Ids::SPRUCE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::SPRUCE_STAIRS(), $in)); - $this->map(Ids::SPRUCE_STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::SPRUCE_SIGN(), $in)); - $this->map(Ids::SPRUCE_TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::SPRUCE_TRAPDOOR(), $in)); - $this->map(Ids::SPRUCE_WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::SPRUCE_WALL_SIGN(), $in)); - $this->map(Ids::STAINED_GLASS, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_GLASS() + $this->map(Ids::SPRUCE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::SPRUCE_BUTTON(), $in)); + $this->map(Ids::SPRUCE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::SPRUCE_DOOR(), $in)); + $this->map(Ids::SPRUCE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::SPRUCE_FENCE_GATE(), $in)); + $this->map(Ids::SPRUCE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::SPRUCE_PRESSURE_PLATE(), $in)); + $this->map(Ids::SPRUCE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SPRUCE_STAIRS(), $in)); + $this->map(Ids::SPRUCE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::SPRUCE_SIGN(), $in)); + $this->map(Ids::SPRUCE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::SPRUCE_TRAPDOOR(), $in)); + $this->map(Ids::SPRUCE_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::SPRUCE_WALL_SIGN(), $in)); + $this->map(Ids::STAINED_GLASS, function(Reader $in) : Block{ + return Blocks::STAINED_GLASS() ->setColor($in->readColor()); }); - $this->map(Ids::STAINED_GLASS_PANE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_GLASS_PANE() + $this->map(Ids::STAINED_GLASS_PANE, function(Reader $in) : Block{ + return Blocks::STAINED_GLASS_PANE() ->setColor($in->readColor()); }); - $this->map(Ids::STAINED_HARDENED_CLAY, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STAINED_CLAY() + $this->map(Ids::STAINED_HARDENED_CLAY, function(Reader $in) : Block{ + return Blocks::STAINED_CLAY() ->setColor($in->readColor()); }); - $this->map(Ids::STANDING_BANNER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::BANNER() - ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); + $this->map(Ids::STANDING_BANNER, function(Reader $in) : Block{ + return Blocks::BANNER() + ->setRotation($in->readBoundedInt(StateNames::GROUND_SIGN_DIRECTION, 0, 15)); }); - $this->map(Ids::STANDING_SIGN, fn(BlockStateReader $in) => Helper::decodeFloorSign(VanillaBlocks::OAK_SIGN(), $in)); - $this->map(Ids::STONE, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::STONE_TYPE)){ - StringValues::STONE_TYPE_ANDESITE => VanillaBlocks::ANDESITE(), - StringValues::STONE_TYPE_ANDESITE_SMOOTH => VanillaBlocks::POLISHED_ANDESITE(), - StringValues::STONE_TYPE_DIORITE => VanillaBlocks::DIORITE(), - StringValues::STONE_TYPE_DIORITE_SMOOTH => VanillaBlocks::POLISHED_DIORITE(), - StringValues::STONE_TYPE_GRANITE => VanillaBlocks::GRANITE(), - StringValues::STONE_TYPE_GRANITE_SMOOTH => VanillaBlocks::POLISHED_GRANITE(), - StringValues::STONE_TYPE_STONE => VanillaBlocks::STONE(), - default => throw $in->badValueException(BlockStateNames::STONE_TYPE, $type), + $this->map(Ids::STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::OAK_SIGN(), $in)); + $this->map(Ids::STONE, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::STONE_TYPE)){ + StringValues::STONE_TYPE_ANDESITE => Blocks::ANDESITE(), + StringValues::STONE_TYPE_ANDESITE_SMOOTH => Blocks::POLISHED_ANDESITE(), + StringValues::STONE_TYPE_DIORITE => Blocks::DIORITE(), + StringValues::STONE_TYPE_DIORITE_SMOOTH => Blocks::POLISHED_DIORITE(), + StringValues::STONE_TYPE_GRANITE => Blocks::GRANITE(), + StringValues::STONE_TYPE_GRANITE_SMOOTH => Blocks::POLISHED_GRANITE(), + StringValues::STONE_TYPE_STONE => Blocks::STONE(), + default => throw $in->badValueException(StateNames::STONE_TYPE, $type), }; }); - $this->map(Ids::STONE_BRICK_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::STONE_BRICK_STAIRS(), $in)); - $this->map(Ids::STONE_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::STONE_BUTTON(), $in)); - $this->map(Ids::STONE_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::STONE_PRESSURE_PLATE(), $in)); - $this->map(Ids::STONE_SLAB, fn(BlockStateReader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB2, fn(BlockStateReader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB3, fn(BlockStateReader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB4, fn(BlockStateReader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_STAIRS, fn(BlockStateReader $in) => Helper::decodeStairs(VanillaBlocks::COBBLESTONE_STAIRS(), $in)); - $this->map(Ids::STONEBRICK, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::STONE_BRICK_TYPE)){ + $this->map(Ids::STONE_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::STONE_BRICK_STAIRS(), $in)); + $this->map(Ids::STONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::STONE_BUTTON(), $in)); + $this->map(Ids::STONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::STONE_PRESSURE_PLATE(), $in)); + $this->map(Ids::STONE_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::COBBLESTONE_STAIRS(), $in)); + $this->map(Ids::STONEBRICK, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::STONE_BRICK_TYPE)){ StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla - StringValues::STONE_BRICK_TYPE_DEFAULT => VanillaBlocks::STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CHISELED => VanillaBlocks::CHISELED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_CRACKED => VanillaBlocks::CRACKED_STONE_BRICKS(), - StringValues::STONE_BRICK_TYPE_MOSSY => VanillaBlocks::MOSSY_STONE_BRICKS(), - default => throw $in->badValueException(BlockStateNames::STONE_BRICK_TYPE, $type), + StringValues::STONE_BRICK_TYPE_DEFAULT => Blocks::STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CHISELED => Blocks::CHISELED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_CRACKED => Blocks::CRACKED_STONE_BRICKS(), + StringValues::STONE_BRICK_TYPE_MOSSY => Blocks::MOSSY_STONE_BRICKS(), + default => throw $in->badValueException(StateNames::STONE_BRICK_TYPE, $type), }; }); - $this->map(Ids::STONECUTTER, fn() => VanillaBlocks::LEGACY_STONECUTTER()); - $this->map(Ids::STRIPPED_ACACIA_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_ACACIA_LOG() + $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); + $this->map(Ids::STRIPPED_ACACIA_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_ACACIA_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::STRIPPED_BIRCH_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_BIRCH_LOG() + $this->map(Ids::STRIPPED_BIRCH_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_BIRCH_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::STRIPPED_DARK_OAK_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_DARK_OAK_LOG() + $this->map(Ids::STRIPPED_DARK_OAK_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_DARK_OAK_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::STRIPPED_JUNGLE_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_JUNGLE_LOG() + $this->map(Ids::STRIPPED_JUNGLE_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_JUNGLE_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::STRIPPED_OAK_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_OAK_LOG() + $this->map(Ids::STRIPPED_OAK_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_OAK_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::STRIPPED_SPRUCE_LOG, function(BlockStateReader $in) : Block{ - return VanillaBlocks::STRIPPED_SPRUCE_LOG() + $this->map(Ids::STRIPPED_SPRUCE_LOG, function(Reader $in) : Block{ + return Blocks::STRIPPED_SPRUCE_LOG() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::SWEET_BERRY_BUSH, function(BlockStateReader $in) : Block{ + $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 - $growth = $in->readBoundedInt(BlockStateNames::GROWTH, 0, 7); - return VanillaBlocks::SWEET_BERRY_BUSH() + $growth = $in->readBoundedInt(StateNames::GROWTH, 0, 7); + return Blocks::SWEET_BERRY_BUSH() ->setAge(min($growth, SweetBerryBush::STAGE_MATURE)); }); - $this->map(Ids::TALLGRASS, function(BlockStateReader $in) : Block{ - return match($type = $in->readString(BlockStateNames::TALL_GRASS_TYPE)){ - StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => VanillaBlocks::TALL_GRASS(), - StringValues::TALL_GRASS_TYPE_FERN => VanillaBlocks::FERN(), - default => throw $in->badValueException(BlockStateNames::TALL_GRASS_TYPE, $type), + $this->map(Ids::TALLGRASS, function(Reader $in) : Block{ + return match($type = $in->readString(StateNames::TALL_GRASS_TYPE)){ + StringValues::TALL_GRASS_TYPE_DEFAULT, StringValues::TALL_GRASS_TYPE_SNOW, StringValues::TALL_GRASS_TYPE_TALL => Blocks::TALL_GRASS(), + StringValues::TALL_GRASS_TYPE_FERN => Blocks::FERN(), + default => throw $in->badValueException(StateNames::TALL_GRASS_TYPE, $type), }; }); - $this->map(Ids::TNT, function(BlockStateReader $in) : Block{ - return VanillaBlocks::TNT() - ->setUnstable($in->readBool(BlockStateNames::EXPLODE_BIT)) - ->setWorksUnderwater($in->readBool(BlockStateNames::ALLOW_UNDERWATER_BIT)); + $this->map(Ids::TNT, function(Reader $in) : Block{ + return Blocks::TNT() + ->setUnstable($in->readBool(StateNames::EXPLODE_BIT)) + ->setWorksUnderwater($in->readBool(StateNames::ALLOW_UNDERWATER_BIT)); }); - $this->map(Ids::TORCH, function(BlockStateReader $in) : Block{ - return VanillaBlocks::TORCH() + $this->map(Ids::TORCH, function(Reader $in) : Block{ + return Blocks::TORCH() ->setFacing($in->readTorchFacing()); }); - $this->map(Ids::TRAPDOOR, fn(BlockStateReader $in) => Helper::decodeTrapdoor(VanillaBlocks::OAK_TRAPDOOR(), $in)); - $this->map(Ids::TRAPPED_CHEST, function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRAPPED_CHEST() + $this->map(Ids::TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::OAK_TRAPDOOR(), $in)); + $this->map(Ids::TRAPPED_CHEST, function(Reader $in) : Block{ + return Blocks::TRAPPED_CHEST() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::TRIPWIRE, function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRIPWIRE() - ->setConnected($in->readBool(BlockStateNames::ATTACHED_BIT)) - ->setDisarmed($in->readBool(BlockStateNames::DISARMED_BIT)) - ->setSuspended($in->readBool(BlockStateNames::SUSPENDED_BIT)) - ->setTriggered($in->readBool(BlockStateNames::POWERED_BIT)); + $this->map(Ids::TRIPWIRE, function(Reader $in) : Block{ + return Blocks::TRIPWIRE() + ->setConnected($in->readBool(StateNames::ATTACHED_BIT)) + ->setDisarmed($in->readBool(StateNames::DISARMED_BIT)) + ->setSuspended($in->readBool(StateNames::SUSPENDED_BIT)) + ->setTriggered($in->readBool(StateNames::POWERED_BIT)); }); - $this->map(Ids::TRIPWIRE_HOOK, function(BlockStateReader $in) : Block{ - return VanillaBlocks::TRIPWIRE_HOOK() - ->setConnected($in->readBool(BlockStateNames::ATTACHED_BIT)) + $this->map(Ids::TRIPWIRE_HOOK, function(Reader $in) : Block{ + return Blocks::TRIPWIRE_HOOK() + ->setConnected($in->readBool(StateNames::ATTACHED_BIT)) ->setFacing($in->readLegacyHorizontalFacing()) - ->setPowered($in->readBool(BlockStateNames::POWERED_BIT)); + ->setPowered($in->readBool(StateNames::POWERED_BIT)); }); - $this->map(Ids::UNDERWATER_TORCH, function(BlockStateReader $in) : Block{ - return VanillaBlocks::UNDERWATER_TORCH() + $this->map(Ids::UNDERWATER_TORCH, function(Reader $in) : Block{ + return Blocks::UNDERWATER_TORCH() ->setFacing($in->readTorchFacing()); }); - $this->map(Ids::UNDYED_SHULKER_BOX, fn() => VanillaBlocks::SHULKER_BOX()); - $this->map(Ids::UNLIT_REDSTONE_TORCH, function(BlockStateReader $in) : Block{ - return VanillaBlocks::REDSTONE_TORCH() + $this->map(Ids::UNDYED_SHULKER_BOX, fn() => Blocks::SHULKER_BOX()); + $this->map(Ids::UNLIT_REDSTONE_TORCH, function(Reader $in) : Block{ + return Blocks::REDSTONE_TORCH() ->setFacing($in->readTorchFacing()) ->setLit(false); }); - $this->map(Ids::UNPOWERED_COMPARATOR, fn(BlockStateReader $in) => Helper::decodeComparator(VanillaBlocks::REDSTONE_COMPARATOR(), $in)); - $this->map(Ids::UNPOWERED_REPEATER, fn(BlockStateReader $in) => Helper::decodeRepeater(VanillaBlocks::REDSTONE_REPEATER(), $in) + $this->map(Ids::UNPOWERED_COMPARATOR, fn(Reader $in) => Helper::decodeComparator(Blocks::REDSTONE_COMPARATOR(), $in)); + $this->map(Ids::UNPOWERED_REPEATER, fn(Reader $in) => Helper::decodeRepeater(Blocks::REDSTONE_REPEATER(), $in) ->setPowered(false)); - $this->map(Ids::VINE, function(BlockStateReader $in) : Block{ - $vineDirectionFlags = $in->readBoundedInt(BlockStateNames::VINE_DIRECTION_BITS, 0, 15); - return VanillaBlocks::VINES() + $this->map(Ids::VINE, function(Reader $in) : Block{ + $vineDirectionFlags = $in->readBoundedInt(StateNames::VINE_DIRECTION_BITS, 0, 15); + return Blocks::VINES() ->setFace(Facing::NORTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_NORTH) !== 0) ->setFace(Facing::SOUTH, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_SOUTH) !== 0) ->setFace(Facing::WEST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_WEST) !== 0) ->setFace(Facing::EAST, ($vineDirectionFlags & BlockLegacyMetadata::VINE_FLAG_EAST) !== 0); }); - $this->map(Ids::WALL_BANNER, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WALL_BANNER() + $this->map(Ids::WALL_BANNER, function(Reader $in) : Block{ + return Blocks::WALL_BANNER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::WALL_SIGN, fn(BlockStateReader $in) => Helper::decodeWallSign(VanillaBlocks::OAK_WALL_SIGN(), $in)); - $this->map(Ids::WATER, fn(BlockStateReader $in) => Helper::decodeStillLiquid(VanillaBlocks::WATER(), $in)); - $this->map(Ids::WATERLILY, fn() => VanillaBlocks::LILY_PAD()); - $this->map(Ids::WEB, fn() => VanillaBlocks::COBWEB()); - $this->map(Ids::WHEAT, fn(BlockStateReader $in) => Helper::decodeCrops(VanillaBlocks::WHEAT(), $in)); - $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::WOOD, function(BlockStateReader $in) : Block{ + $this->map(Ids::WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::OAK_WALL_SIGN(), $in)); + $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); + $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); + $this->map(Ids::WEB, fn() => Blocks::COBWEB()); + $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); + $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::WHITE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::WOOD, function(Reader $in) : Block{ //TODO: our impl doesn't support axis yet - $stripped = $in->readBool(BlockStateNames::STRIPPED_BIT); - return match($woodType = $in->readString(BlockStateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => $stripped ? VanillaBlocks::STRIPPED_ACACIA_WOOD() : VanillaBlocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => $stripped ? VanillaBlocks::STRIPPED_BIRCH_WOOD() : VanillaBlocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => $stripped ? VanillaBlocks::STRIPPED_DARK_OAK_WOOD() : VanillaBlocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => $stripped ? VanillaBlocks::STRIPPED_JUNGLE_WOOD() : VanillaBlocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => $stripped ? VanillaBlocks::STRIPPED_OAK_WOOD() : VanillaBlocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => $stripped ? VanillaBlocks::STRIPPED_SPRUCE_WOOD() : VanillaBlocks::SPRUCE_WOOD(), - default => throw $in->badValueException(BlockStateNames::WOOD_TYPE, $woodType), + $stripped = $in->readBool(StateNames::STRIPPED_BIT); + return match($woodType = $in->readString(StateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => $stripped ? Blocks::STRIPPED_ACACIA_WOOD() : Blocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => $stripped ? Blocks::STRIPPED_BIRCH_WOOD() : Blocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => $stripped ? Blocks::STRIPPED_DARK_OAK_WOOD() : Blocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => $stripped ? Blocks::STRIPPED_JUNGLE_WOOD() : Blocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => $stripped ? Blocks::STRIPPED_OAK_WOOD() : Blocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => $stripped ? Blocks::STRIPPED_SPRUCE_WOOD() : Blocks::SPRUCE_WOOD(), + default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType), }; }); - $this->map(Ids::WOODEN_BUTTON, fn(BlockStateReader $in) => Helper::decodeButton(VanillaBlocks::OAK_BUTTON(), $in)); - $this->map(Ids::WOODEN_DOOR, fn(BlockStateReader $in) => Helper::decodeDoor(VanillaBlocks::OAK_DOOR(), $in)); - $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(BlockStateReader $in) => Helper::decodeSimplePressurePlate(VanillaBlocks::OAK_PRESSURE_PLATE(), $in)); - $this->map(Ids::WOODEN_SLAB, fn(BlockStateReader $in) => Helper::mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::WOOL, function(BlockStateReader $in) : Block{ - return VanillaBlocks::WOOL() + $this->map(Ids::WOODEN_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::OAK_BUTTON(), $in)); + $this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in)); + $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in)); + $this->map(Ids::WOODEN_SLAB, fn(Reader $in) => Helper::mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::WOOL, function(Reader $in) : Block{ + return Blocks::WOOL() ->setColor($in->readColor()); }); - $this->map(Ids::YELLOW_FLOWER, fn() => VanillaBlocks::DANDELION()); - $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(BlockStateReader $in) => Helper::decodeGlazedTerracotta(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), $in)); - //$this->map(Ids::ALLOW, function(BlockStateReader $in) : Block{ + $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); + $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::YELLOW_GLAZED_TERRACOTTA(), $in)); + //$this->map(Ids::ALLOW, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::AMETHYST_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::AMETHYST_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::AMETHYST_CLUSTER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::AMETHYST_CLUSTER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::ANCIENT_DEBRIS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::ANCIENT_DEBRIS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::AZALEA, function(BlockStateReader $in) : Block{ + //$this->map(Ids::AZALEA, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::AZALEA_LEAVES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::AZALEA_LEAVES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * persistent_bit (ByteTag) = 0, 1 * update_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::AZALEA_LEAVES_FLOWERED, function(BlockStateReader $in) : Block{ + //$this->map(Ids::AZALEA_LEAVES_FLOWERED, function(Reader $in) : Block{ /* * TODO: Un-implemented block * persistent_bit (ByteTag) = 0, 1 * update_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BASALT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BASALT, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::BEE_NEST, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BEE_NEST, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::BEEHIVE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BEEHIVE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::BIG_DRIPLEAF, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BIG_DRIPLEAF, function(Reader $in) : Block{ /* * TODO: Un-implemented block * big_dripleaf_head (ByteTag) = 0, 1 @@ -1098,42 +1100,42 @@ final class BlockStateDeserializer{ * direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::BLACK_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACK_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLACK_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACK_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLACKSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACKSTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::BLACKSTONE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACKSTONE_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLACKSTONE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACKSTONE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLACKSTONE_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACKSTONE_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::BLACKSTONE_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLACKSTONE_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1143,20 +1145,20 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLUE_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLUE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLUE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BLUE_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BORDER_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BORDER_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1166,139 +1168,139 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BROWN_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BROWN_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BROWN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BROWN_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BUBBLE_COLUMN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BUBBLE_COLUMN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * drag_down (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BUDDING_AMETHYST, function(BlockStateReader $in) : Block{ + //$this->map(Ids::BUDDING_AMETHYST, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CALCITE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CALCITE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CAMERA, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAMERA, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CAMPFIRE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAMPFIRE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 * extinguished (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CARTOGRAPHY_TABLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CARTOGRAPHY_TABLE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CAULDRON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAULDRON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * cauldron_liquid (StringTag) = lava, powder_snow, water * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 */ //}); - //$this->map(Ids::CAVE_VINES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAVE_VINES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::CAVE_VINES_BODY_WITH_BERRIES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAVE_VINES_BODY_WITH_BERRIES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::CAVE_VINES_HEAD_WITH_BERRIES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CAVE_VINES_HEAD_WITH_BERRIES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::CHAIN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHAIN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::CHAIN_COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHAIN_COMMAND_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * conditional_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::CHISELED_DEEPSLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHISELED_DEEPSLATE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CHISELED_NETHER_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHISELED_NETHER_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CHISELED_POLISHED_BLACKSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHISELED_POLISHED_BLACKSTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CHORUS_FLOWER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHORUS_FLOWER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * age (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::CHORUS_PLANT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CHORUS_PLANT, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CLIENT_REQUEST_PLACEHOLDER_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CLIENT_REQUEST_PLACEHOLDER_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::COBBLED_DEEPSLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COBBLED_DEEPSLATE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::COBBLED_DEEPSLATE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COBBLED_DEEPSLATE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::COBBLED_DEEPSLATE_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COBBLED_DEEPSLATE_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::COBBLED_DEEPSLATE_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COBBLED_DEEPSLATE_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1308,48 +1310,48 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COMMAND_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * conditional_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::COMPOSTER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COMPOSTER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 */ //}); - //$this->map(Ids::CONDUIT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CONDUIT, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::COPPER_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COPPER_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::COPPER_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::COPPER_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRACKED_DEEPSLATE_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRACKED_DEEPSLATE_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRACKED_DEEPSLATE_TILES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRACKED_DEEPSLATE_TILES, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRACKED_NETHER_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRACKED_NETHER_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_BUTTON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_BUTTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * button_pressed_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::CRIMSON_DOOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_DOOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -1358,16 +1360,16 @@ final class BlockStateDeserializer{ * upper_block_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CRIMSON_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CRIMSON_FENCE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_FENCE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_FENCE_GATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_FENCE_GATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -1375,56 +1377,56 @@ final class BlockStateDeserializer{ * open_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CRIMSON_FUNGUS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_FUNGUS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_HYPHAE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::CRIMSON_NYLIUM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_NYLIUM, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_PLANKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_PLANKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_PRESSURE_PLATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::CRIMSON_ROOTS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_ROOTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRIMSON_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CRIMSON_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::CRIMSON_STANDING_SIGN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_STANDING_SIGN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::CRIMSON_STEM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_STEM, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::CRIMSON_TRAPDOOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_TRAPDOOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -1432,70 +1434,70 @@ final class BlockStateDeserializer{ * upside_down_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CRIMSON_WALL_SIGN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRIMSON_WALL_SIGN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::CRYING_OBSIDIAN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CRYING_OBSIDIAN, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::CYAN_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CYAN_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::CYAN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::CYAN_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_BRICK_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_BRICK_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_BRICK_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_BRICK_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::DEEPSLATE_BRICK_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_BRICK_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1505,53 +1507,53 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_COAL_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_COAL_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_COPPER_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_COPPER_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_DIAMOND_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_DIAMOND_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_EMERALD_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_EMERALD_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_GOLD_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_GOLD_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_IRON_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_IRON_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_LAPIS_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_LAPIS_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_REDSTONE_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_REDSTONE_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DEEPSLATE_TILE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_TILE_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_TILE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_TILE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_TILE_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_TILE_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::DEEPSLATE_TILE_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_TILE_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1561,76 +1563,76 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DEEPSLATE_TILES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DEEPSLATE_TILES, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DENY, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DENY, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DIRT_WITH_ROOTS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DIRT_WITH_ROOTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DISPENSER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DISPENSER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 * triggered_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::DRIPSTONE_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DRIPSTONE_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::DROPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::DROPPER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 * triggered_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::END_GATEWAY, function(BlockStateReader $in) : Block{ + //$this->map(Ids::END_GATEWAY, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::END_PORTAL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::END_PORTAL, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::EXPOSED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::EXPOSED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::EXPOSED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::EXPOSED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::EXPOSED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::EXPOSED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::EXPOSED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::EXPOSED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::FLOWERING_AZALEA, function(BlockStateReader $in) : Block{ + //$this->map(Ids::FLOWERING_AZALEA, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::GILDED_BLACKSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GILDED_BLACKSTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::GLOW_FRAME, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GLOW_FRAME, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 @@ -1638,292 +1640,292 @@ final class BlockStateDeserializer{ * item_frame_photo_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::GLOW_LICHEN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GLOW_LICHEN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 */ //}); - //$this->map(Ids::GRAY_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GRAY_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::GRAY_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GRAY_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::GREEN_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GREEN_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::GREEN_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GREEN_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::GRINDSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::GRINDSTONE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * attachment (StringTag) = hanging, multiple, side, standing * direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::HANGING_ROOTS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::HANGING_ROOTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::HONEY_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::HONEY_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::HONEYCOMB_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::HONEYCOMB_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::INFESTED_DEEPSLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::INFESTED_DEEPSLATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::JIGSAW, function(BlockStateReader $in) : Block{ + //$this->map(Ids::JIGSAW, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 * rotation (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::KELP, function(BlockStateReader $in) : Block{ + //$this->map(Ids::KELP, function(Reader $in) : Block{ /* * TODO: Un-implemented block * kelp_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::LARGE_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LARGE_AMETHYST_BUD, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::LAVA_CAULDRON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LAVA_CAULDRON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * cauldron_liquid (StringTag) = lava, powder_snow, water * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 */ //}); - //$this->map(Ids::LIGHT_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHT_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::LIGHT_BLUE_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHT_BLUE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIGHT_GRAY_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHT_GRAY_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIGHTNING_ROD, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIGHTNING_ROD, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::LIME_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIME_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIME_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIME_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::LIT_DEEPSLATE_REDSTONE_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LIT_DEEPSLATE_REDSTONE_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::LODESTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::LODESTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MAGENTA_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MAGENTA_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::MAGENTA_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MAGENTA_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::MEDIUM_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MEDIUM_AMETHYST_BUD, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::MOSS_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MOSS_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MOSS_CARPET, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MOSS_CARPET, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MOVINGBLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MOVINGBLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MYSTERIOUS_FRAME, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MYSTERIOUS_FRAME, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MYSTERIOUS_FRAME_SLOT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::MYSTERIOUS_FRAME_SLOT, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::NETHER_GOLD_ORE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::NETHER_GOLD_ORE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::NETHER_SPROUTS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::NETHER_SPROUTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::NETHERITE_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::NETHERITE_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::OBSERVER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OBSERVER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 * powered_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::ORANGE_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::ORANGE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::ORANGE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::ORANGE_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::OXIDIZED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OXIDIZED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OXIDIZED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OXIDIZED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OXIDIZED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::PINK_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PINK_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::PINK_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PINK_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::PISTON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PISTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::PISTONARMCOLLISION, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PISTONARMCOLLISION, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::POINTED_DRIPSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POINTED_DRIPSTONE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * dripstone_thickness (StringTag) = base, frustum, merge, middle, tip * hanging (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BASALT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BASALT, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1933,42 +1935,42 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BUTTON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_BUTTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * button_pressed_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::POLISHED_BLACKSTONE_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_BLACKSTONE_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -1978,29 +1980,29 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_DEEPSLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_DEEPSLATE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_DEEPSLATE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_DEEPSLATE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_DEEPSLATE_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_DEEPSLATE_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::POLISHED_DEEPSLATE_WALL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POLISHED_DEEPSLATE_WALL, function(Reader $in) : Block{ /* * TODO: Un-implemented block * wall_connection_type_east (StringTag) = none, short, tall @@ -2010,240 +2012,240 @@ final class BlockStateDeserializer{ * wall_post_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POWDER_SNOW, function(BlockStateReader $in) : Block{ + //$this->map(Ids::POWDER_SNOW, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::PURPLE_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PURPLE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::PURPLE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::PURPLE_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::QUARTZ_BRICKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::QUARTZ_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::RAW_COPPER_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RAW_COPPER_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::RAW_GOLD_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RAW_GOLD_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::RAW_IRON_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RAW_IRON_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::RED_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RED_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::RED_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RED_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::REPEATING_COMMAND_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::REPEATING_COMMAND_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * conditional_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::RESPAWN_ANCHOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::RESPAWN_ANCHOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * respawn_anchor_charge (IntTag) = 0, 1, 2, 3, 4 */ //}); - //$this->map(Ids::SCAFFOLDING, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCAFFOLDING, function(Reader $in) : Block{ /* * TODO: Un-implemented block * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 * stability_check (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SCULK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCULK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SCULK_CATALYST, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCULK_CATALYST, function(Reader $in) : Block{ /* * TODO: Un-implemented block * bloom (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SCULK_SENSOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCULK_SENSOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * powered_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SCULK_SHRIEKER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCULK_SHRIEKER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * active (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SCULK_VEIN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SCULK_VEIN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 */ //}); - //$this->map(Ids::SEAGRASS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SEAGRASS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * sea_grass_type (StringTag) = default, double_bot, double_top */ //}); - //$this->map(Ids::SHROOMLIGHT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SHROOMLIGHT, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SMALL_AMETHYST_BUD, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SMALL_AMETHYST_BUD, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::SMALL_DRIPLEAF_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SMALL_DRIPLEAF_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 * upper_block_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SMITHING_TABLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SMITHING_TABLE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SMOOTH_BASALT, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SMOOTH_BASALT, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SOUL_CAMPFIRE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SOUL_CAMPFIRE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 * extinguished (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SOUL_FIRE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SOUL_FIRE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::SOUL_LANTERN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SOUL_LANTERN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * hanging (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::SOUL_SOIL, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SOUL_SOIL, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SOUL_TORCH, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SOUL_TORCH, function(Reader $in) : Block{ /* * TODO: Un-implemented block * torch_facing_direction (StringTag) = east, north, south, top, unknown, west */ //}); - //$this->map(Ids::SPORE_BLOSSOM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::SPORE_BLOSSOM, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::STICKYPISTONARMCOLLISION, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STICKYPISTONARMCOLLISION, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::STICKY_PISTON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STICKY_PISTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::STONECUTTER_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STONECUTTER_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::STRIPPED_CRIMSON_HYPHAE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRIPPED_CRIMSON_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::STRIPPED_CRIMSON_STEM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRIPPED_CRIMSON_STEM, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::STRIPPED_WARPED_HYPHAE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRIPPED_WARPED_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::STRIPPED_WARPED_STEM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRIPPED_WARPED_STEM, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::STRUCTURE_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRUCTURE_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block * structure_block_type (StringTag) = corner, data, export, invalid, load, save */ //}); - //$this->map(Ids::STRUCTURE_VOID, function(BlockStateReader $in) : Block{ + //$this->map(Ids::STRUCTURE_VOID, function(Reader $in) : Block{ /* * TODO: Un-implemented block * structure_void_type (StringTag) = air, void */ //}); - //$this->map(Ids::TARGET, function(BlockStateReader $in) : Block{ + //$this->map(Ids::TARGET, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::TINTED_GLASS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::TINTED_GLASS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::TUFF, function(BlockStateReader $in) : Block{ + //$this->map(Ids::TUFF, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::TURTLE_EGG, function(BlockStateReader $in) : Block{ + //$this->map(Ids::TURTLE_EGG, function(Reader $in) : Block{ /* * TODO: Un-implemented block * cracked_state (StringTag) = cracked, max_cracked, no_cracks * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg */ //}); - //$this->map(Ids::TWISTING_VINES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::TWISTING_VINES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * twisting_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::UNKNOWN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::UNKNOWN, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_BUTTON, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_BUTTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * button_pressed_bit (ByteTag) = 0, 1 * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::WARPED_DOOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_DOOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -2252,16 +2254,16 @@ final class BlockStateDeserializer{ * upper_block_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WARPED_DOUBLE_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_DOUBLE_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WARPED_FENCE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_FENCE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_FENCE_GATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_FENCE_GATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -2269,56 +2271,56 @@ final class BlockStateDeserializer{ * open_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WARPED_FUNGUS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_FUNGUS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_HYPHAE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::WARPED_NYLIUM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_NYLIUM, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_PLANKS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_PLANKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_PRESSURE_PLATE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_PRESSURE_PLATE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::WARPED_ROOTS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_ROOTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WARPED_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WARPED_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WARPED_STANDING_SIGN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_STANDING_SIGN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ //}); - //$this->map(Ids::WARPED_STEM, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_STEM, function(Reader $in) : Block{ /* * TODO: Un-implemented block * pillar_axis (StringTag) = x, y, z */ //}); - //$this->map(Ids::WARPED_TRAPDOOR, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_TRAPDOOR, function(Reader $in) : Block{ /* * TODO: Un-implemented block * direction (IntTag) = 0, 1, 2, 3 @@ -2326,170 +2328,170 @@ final class BlockStateDeserializer{ * upside_down_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WARPED_WALL_SIGN, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_WALL_SIGN, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::WARPED_WART_BLOCK, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WARPED_WART_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_EXPOSED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_EXPOSED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_OXIDIZED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_OXIDIZED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_WEATHERED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_WEATHERED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WEATHERED_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEATHERED_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WEATHERED_CUT_COPPER, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEATHERED_CUT_COPPER, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::WEATHERED_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEATHERED_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WEATHERED_CUT_COPPER_STAIRS, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEATHERED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ /* * TODO: Un-implemented block * upside_down_bit (ByteTag) = 0, 1 * weirdo_direction (IntTag) = 0, 1, 2, 3 */ //}); - //$this->map(Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ /* * TODO: Un-implemented block * top_slot_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WEEPING_VINES, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WEEPING_VINES, function(Reader $in) : Block{ /* * TODO: Un-implemented block * weeping_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 */ //}); - //$this->map(Ids::WHITE_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WHITE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WHITE_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WHITE_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::WITHER_ROSE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::WITHER_ROSE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::YELLOW_CANDLE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::YELLOW_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * candles (IntTag) = 0, 1, 2, 3 * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::YELLOW_CANDLE_CAKE, function(BlockStateReader $in) : Block{ + //$this->map(Ids::YELLOW_CANDLE_CAKE, function(Reader $in) : Block{ /* * TODO: Un-implemented block * lit (ByteTag) = 0, 1 @@ -2503,6 +2505,6 @@ final class BlockStateDeserializer{ if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); } - return $this->deserializeFuncs[$id](new BlockStateReader($blockStateData)); + return $this->deserializeFuncs[$id](new Reader($blockStateData)); } } diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index e6ebf258f..2f2037bc9 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -120,7 +120,7 @@ use pocketmine\block\UnderwaterTorch; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\LeverFacing; -use pocketmine\block\VanillaBlocks; +use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\block\Vine; use pocketmine\block\Wall; use pocketmine\block\WallBanner; @@ -137,6 +137,7 @@ use pocketmine\block\WoodenPressurePlate; use pocketmine\block\WoodenStairs; use pocketmine\block\WoodenTrapdoor; use pocketmine\block\Wool; +use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; use pocketmine\data\bedrock\blockstate\BlockStateSerializerHelper as Helper; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockStateWriter as Writer; @@ -211,519 +212,519 @@ final class BlockStateSerializer{ } private function registerSerializers() : void{ - $this->map(VanillaBlocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); - $this->map(VanillaBlocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); - $this->map(VanillaBlocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); - $this->map(VanillaBlocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); - $this->map(VanillaBlocks::ACACIA_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::ACACIA_STANDING_SIGN))); - $this->map(VanillaBlocks::ACACIA_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_ACACIA)); - $this->map(VanillaBlocks::ACACIA_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::ACACIA_STAIRS))); - $this->map(VanillaBlocks::ACACIA_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::ACACIA_TRAPDOOR))); - $this->map(VanillaBlocks::ACACIA_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::ACACIA_WALL_SIGN))); - $this->map(VanillaBlocks::ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::ACTIVATOR_RAIL(), function(ActivatorRail $block) : Writer{ + $this->map(Blocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); + $this->map(Blocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); + $this->map(Blocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); + $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); + $this->map(Blocks::ACACIA_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::ACACIA_STANDING_SIGN))); + $this->map(Blocks::ACACIA_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::ACACIA_STAIRS))); + $this->map(Blocks::ACACIA_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::ACACIA_TRAPDOOR))); + $this->map(Blocks::ACACIA_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::ACACIA_WALL_SIGN))); + $this->map(Blocks::ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::ACTIVATOR_RAIL(), function(ActivatorRail $block) : Writer{ return Writer::create(Ids::ACTIVATOR_RAIL) - ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isPowered()) - ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + ->writeBool(StateNames::RAIL_DATA_BIT, $block->isPowered()) + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(VanillaBlocks::AIR(), fn() => new Writer(Ids::AIR)); - $this->map(VanillaBlocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); - $this->map(VanillaBlocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) - ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); - $this->map(VanillaBlocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); - $this->map(VanillaBlocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); - $this->map(VanillaBlocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); - $this->map(VanillaBlocks::ANDESITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_ANDESITE)); - $this->map(VanillaBlocks::ANVIL(), function(Anvil $block) : Writer{ + $this->map(Blocks::AIR(), fn() => new Writer(Ids::AIR)); + $this->map(Blocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); + $this->map(Blocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) + ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); + $this->map(Blocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); + $this->map(Blocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); + $this->map(Blocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); + $this->map(Blocks::ANDESITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_ANDESITE)); + $this->map(Blocks::ANVIL(), function(Anvil $block) : Writer{ return Writer::create(Ids::ANVIL) ->writeLegacyHorizontalFacing($block->getFacing()) - ->writeString(BlockStateNames::DAMAGE, match($damage = $block->getDamage()){ + ->writeString(StateNames::DAMAGE, match($damage = $block->getDamage()){ 0 => StringValues::DAMAGE_UNDAMAGED, 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, 2 => StringValues::DAMAGE_VERY_DAMAGED, default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), }); }); - $this->map(VanillaBlocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); - $this->map(VanillaBlocks::BAMBOO(), function(Bamboo $block) : Writer{ + $this->map(Blocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); + $this->map(Blocks::BAMBOO(), function(Bamboo $block) : Writer{ return Writer::create(Ids::BAMBOO) - ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) - ->writeString(BlockStateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ + ->writeBool(StateNames::AGE_BIT, $block->isReady()) + ->writeString(StateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), }) - ->writeString(BlockStateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); + ->writeString(StateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); }); - $this->map(VanillaBlocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ + $this->map(Blocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ return Writer::create(Ids::BAMBOO_SAPLING) - ->writeBool(BlockStateNames::AGE_BIT, $block->isReady()) + ->writeBool(StateNames::AGE_BIT, $block->isReady()) //TODO: bug in MCPE - ->writeString(BlockStateNames::SAPLING_TYPE, StringValues::SAPLING_TYPE_OAK); + ->writeString(StateNames::SAPLING_TYPE, StringValues::SAPLING_TYPE_OAK); }); - $this->map(VanillaBlocks::BANNER(), function(FloorBanner $block) : Writer{ + $this->map(Blocks::BANNER(), function(FloorBanner $block) : Writer{ return Writer::create(Ids::STANDING_BANNER) - ->writeInt(BlockStateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); + ->writeInt(StateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); }); - $this->map(VanillaBlocks::BARREL(), function(Barrel $block) : Writer{ + $this->map(Blocks::BARREL(), function(Barrel $block) : Writer{ return Writer::create(Ids::BARREL) - ->writeBool(BlockStateNames::OPEN_BIT, $block->isOpen()) + ->writeBool(StateNames::OPEN_BIT, $block->isOpen()) ->writeFacingDirection($block->getFacing()); }); - $this->map(VanillaBlocks::BARRIER(), fn() => new Writer(Ids::BARRIER)); - $this->map(VanillaBlocks::BEACON(), fn() => new Writer(Ids::BEACON)); - $this->map(VanillaBlocks::BED(), function(Bed $block) : Writer{ + $this->map(Blocks::BARRIER(), fn() => new Writer(Ids::BARRIER)); + $this->map(Blocks::BEACON(), fn() => new Writer(Ids::BEACON)); + $this->map(Blocks::BED(), function(Bed $block) : Writer{ return Writer::create(Ids::BED) - ->writeBool(BlockStateNames::HEAD_PIECE_BIT, $block->isHeadPart()) - ->writeBool(BlockStateNames::OCCUPIED_BIT, $block->isOccupied()) + ->writeBool(StateNames::HEAD_PIECE_BIT, $block->isHeadPart()) + ->writeBool(StateNames::OCCUPIED_BIT, $block->isOccupied()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::BEDROCK(), function(Block $block) : Writer{ + $this->map(Blocks::BEDROCK(), function(Block $block) : Writer{ return Writer::create(Ids::BEDROCK) - ->writeBool(BlockStateNames::INFINIBURN_BIT, $block->burnsForever()); + ->writeBool(StateNames::INFINIBURN_BIT, $block->burnsForever()); }); - $this->map(VanillaBlocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT))); - $this->map(VanillaBlocks::BELL(), function(Bell $block) : Writer{ + $this->map(Blocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT))); + $this->map(Blocks::BELL(), function(Bell $block) : Writer{ return Writer::create(Ids::BELL) ->writeBellAttachmentType($block->getAttachmentType()) - ->writeBool(BlockStateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy + ->writeBool(StateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); - $this->map(VanillaBlocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); - $this->map(VanillaBlocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); - $this->map(VanillaBlocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); - $this->map(VanillaBlocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); - $this->map(VanillaBlocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); - $this->map(VanillaBlocks::BIRCH_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::BIRCH_STAIRS))); - $this->map(VanillaBlocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); - $this->map(VanillaBlocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); - $this->map(VanillaBlocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::BLACK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLACK_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); - $this->map(VanillaBlocks::BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLUE_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE)); - $this->map(VanillaBlocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); - $this->map(VanillaBlocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); - $this->map(VanillaBlocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ + $this->map(Blocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); + $this->map(Blocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); + $this->map(Blocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); + $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); + $this->map(Blocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); + $this->map(Blocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::BIRCH_STAIRS))); + $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); + $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); + $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::BLACK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLACK_GLAZED_TERRACOTTA))); + $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); + $this->map(Blocks::BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLUE_GLAZED_TERRACOTTA))); + $this->map(Blocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE)); + $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); + $this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); + $this->map(Blocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ return Writer::create(Ids::BONE_BLOCK) - ->writeInt(BlockStateNames::DEPRECATED, 0) + ->writeInt(StateNames::DEPRECATED, 0) ->writePillarAxis($block->getAxis()); }); - $this->map(VanillaBlocks::BOOKSHELF(), fn() => new Writer(Ids::BOOKSHELF)); - $this->map(VanillaBlocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ + $this->map(Blocks::BOOKSHELF(), fn() => new Writer(Ids::BOOKSHELF)); + $this->map(Blocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ return Writer::create(Ids::BREWING_STAND) - ->writeBool(BlockStateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) - ->writeBool(BlockStateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) - ->writeBool(BlockStateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); + ->writeBool(StateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) + ->writeBool(StateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) + ->writeBool(StateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); }); - $this->map(VanillaBlocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); - $this->map(VanillaBlocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); - $this->map(VanillaBlocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS))); - $this->map(VanillaBlocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); - $this->map(VanillaBlocks::BROWN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BROWN_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); - $this->map(VanillaBlocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); - $this->map(VanillaBlocks::CACTUS(), function(Cactus $block) : Writer{ + $this->map(Blocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); + $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); + $this->map(Blocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS))); + $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); + $this->map(Blocks::BROWN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BROWN_GLAZED_TERRACOTTA))); + $this->map(Blocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); + $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); + $this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{ return Writer::create(Ids::CACTUS) - ->writeInt(BlockStateNames::AGE, $block->getAge()); + ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(VanillaBlocks::CAKE(), function(Cake $block) : Writer{ + $this->map(Blocks::CAKE(), function(Cake $block) : Writer{ return Writer::create(Ids::CAKE) - ->writeInt(BlockStateNames::BITE_COUNTER, $block->getBites()); + ->writeInt(StateNames::BITE_COUNTER, $block->getBites()); }); - $this->map(VanillaBlocks::CARPET(), function(Carpet $block) : Writer{ + $this->map(Blocks::CARPET(), function(Carpet $block) : Writer{ return Writer::create(Ids::CARPET) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); - $this->map(VanillaBlocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ + $this->map(Blocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); + $this->map(Blocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ return Writer::create(Ids::CARVED_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::CHEMICAL_HEAT(), fn() => new Writer(Ids::CHEMICAL_HEAT)); - $this->map(VanillaBlocks::CHEST(), function(Chest $block) : Writer{ + $this->map(Blocks::CHEMICAL_HEAT(), fn() => new Writer(Ids::CHEMICAL_HEAT)); + $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ return Writer::create(Ids::CHEST) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); - $this->map(VanillaBlocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); - $this->map(VanillaBlocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); - $this->map(VanillaBlocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); - $this->map(VanillaBlocks::CLAY(), fn() => new Writer(Ids::CLAY)); - $this->map(VanillaBlocks::COAL(), fn() => new Writer(Ids::COAL_BLOCK)); - $this->map(VanillaBlocks::COAL_ORE(), fn() => new Writer(Ids::COAL_ORE)); - $this->map(VanillaBlocks::COBBLESTONE(), fn() => new Writer(Ids::COBBLESTONE)); - $this->map(VanillaBlocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); - $this->map(VanillaBlocks::COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_STAIRS))); - $this->map(VanillaBlocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); - $this->map(VanillaBlocks::COBWEB(), fn() => new Writer(Ids::WEB)); - $this->map(VanillaBlocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ + $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); + $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(Blocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); + $this->map(Blocks::CLAY(), fn() => new Writer(Ids::CLAY)); + $this->map(Blocks::COAL(), fn() => new Writer(Ids::COAL_BLOCK)); + $this->map(Blocks::COAL_ORE(), fn() => new Writer(Ids::COAL_ORE)); + $this->map(Blocks::COBBLESTONE(), fn() => new Writer(Ids::COBBLESTONE)); + $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); + $this->map(Blocks::COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_STAIRS))); + $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); + $this->map(Blocks::COBWEB(), fn() => new Writer(Ids::WEB)); + $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ return Writer::create(Ids::COCOA) - ->writeInt(BlockStateNames::AGE, $block->getAge()) + ->writeInt(StateNames::AGE, $block->getAge()) ->writeLegacyHorizontalFacing(Facing::opposite($block->getFacing())); }); - $this->map(VanillaBlocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(VanillaBlocks::CONCRETE(), function(Concrete $block) : Writer{ + $this->map(Blocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(Blocks::CONCRETE(), function(Concrete $block) : Writer{ return Writer::create(Ids::CONCRETE) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ + $this->map(Blocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ return Writer::create(Ids::CONCRETEPOWDER) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::CORAL(), function(Coral $block) : Writer{ + $this->map(Blocks::CORAL(), function(Coral $block) : Writer{ return Writer::create(Ids::CORAL) - ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeBool(StateNames::DEAD_BIT, $block->isDead()) ->writeCoralType($block->getCoralType()); }); - $this->map(VanillaBlocks::CORAL_BLOCK(), function(CoralBlock $block) : Writer{ + $this->map(Blocks::CORAL_BLOCK(), function(CoralBlock $block) : Writer{ return Writer::create(Ids::CORAL_BLOCK) - ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeBool(StateNames::DEAD_BIT, $block->isDead()) ->writeCoralType($block->getCoralType()); }); - $this->map(VanillaBlocks::CORAL_FAN(), function(FloorCoralFan $block) : Writer{ + $this->map(Blocks::CORAL_FAN(), function(FloorCoralFan $block) : Writer{ return Writer::create($block->isDead() ? Ids::CORAL_FAN_DEAD : Ids::CORAL_FAN) ->writeCoralType($block->getCoralType()) - ->writeInt(BlockStateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ + ->writeInt(StateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ Axis::X => 0, Axis::Z => 1, default => throw new BlockStateSerializeException("Invalid axis {$axis}"), }); }); - $this->map(VanillaBlocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); - $this->map(VanillaBlocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); - $this->map(VanillaBlocks::CRAFTING_TABLE(), fn() => new Writer(Ids::CRAFTING_TABLE)); - $this->map(VanillaBlocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); - $this->map(VanillaBlocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); - $this->map(VanillaBlocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); - $this->map(VanillaBlocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); - $this->map(VanillaBlocks::CYAN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::CYAN_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER)); - $this->map(VanillaBlocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); - $this->map(VanillaBlocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); - $this->map(VanillaBlocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); - $this->map(VanillaBlocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); - $this->map(VanillaBlocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); - $this->map(VanillaBlocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(VanillaBlocks::DARK_OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_OAK_STAIRS))); - $this->map(VanillaBlocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); - $this->map(VanillaBlocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); - $this->map(VanillaBlocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) - ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); - $this->map(VanillaBlocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); - $this->map(VanillaBlocks::DARK_PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_PRISMARINE_STAIRS))); - $this->map(VanillaBlocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ + $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); + $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); + $this->map(Blocks::CRAFTING_TABLE(), fn() => new Writer(Ids::CRAFTING_TABLE)); + $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); + $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); + $this->map(Blocks::CYAN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::CYAN_GLAZED_TERRACOTTA))); + $this->map(Blocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER)); + $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); + $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); + $this->map(Blocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); + $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); + $this->map(Blocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); + $this->map(Blocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_OAK_STAIRS))); + $this->map(Blocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); + $this->map(Blocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); + $this->map(Blocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); + $this->map(Blocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); + $this->map(Blocks::DARK_PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_PRISMARINE_STAIRS))); + $this->map(Blocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) - ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(VanillaBlocks::DEAD_BUSH(), fn() => new Writer(Ids::DEADBUSH)); - $this->map(VanillaBlocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ + $this->map(Blocks::DEAD_BUSH(), fn() => new Writer(Ids::DEADBUSH)); + $this->map(Blocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ return Writer::create(Ids::DETECTOR_RAIL) - ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isActivated()) - ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + ->writeBool(StateNames::RAIL_DATA_BIT, $block->isActivated()) + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(VanillaBlocks::DIAMOND(), fn() => new Writer(Ids::DIAMOND_BLOCK)); - $this->map(VanillaBlocks::DIAMOND_ORE(), fn() => new Writer(Ids::DIAMOND_ORE)); - $this->map(VanillaBlocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); - $this->map(VanillaBlocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); - $this->map(VanillaBlocks::DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DIORITE_STAIRS))); - $this->map(VanillaBlocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); - $this->map(VanillaBlocks::DIRT(), function(Dirt $block) : Writer{ + $this->map(Blocks::DIAMOND(), fn() => new Writer(Ids::DIAMOND_BLOCK)); + $this->map(Blocks::DIAMOND_ORE(), fn() => new Writer(Ids::DIAMOND_ORE)); + $this->map(Blocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); + $this->map(Blocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); + $this->map(Blocks::DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DIORITE_STAIRS))); + $this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); + $this->map(Blocks::DIRT(), function(Dirt $block) : Writer{ return Writer::create(Ids::DIRT) - ->writeString(BlockStateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); + ->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); }); - $this->map(VanillaBlocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::DRAGON_EGG(), fn() => new Writer(Ids::DRAGON_EGG)); - $this->map(VanillaBlocks::DRIED_KELP(), fn() => new Writer(Ids::DRIED_KELP_BLOCK)); - $this->map(VanillaBlocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ + $this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::DRAGON_EGG(), fn() => new Writer(Ids::DRAGON_EGG)); + $this->map(Blocks::DRIED_KELP(), fn() => new Writer(Ids::DRIED_KELP_BLOCK)); + $this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ return Writer::create(Ids::SHULKER_BOX) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::ELEMENT_ACTINIUM(), fn() => new Writer(Ids::ELEMENT_89)); - $this->map(VanillaBlocks::ELEMENT_ALUMINUM(), fn() => new Writer(Ids::ELEMENT_13)); - $this->map(VanillaBlocks::ELEMENT_AMERICIUM(), fn() => new Writer(Ids::ELEMENT_95)); - $this->map(VanillaBlocks::ELEMENT_ANTIMONY(), fn() => new Writer(Ids::ELEMENT_51)); - $this->map(VanillaBlocks::ELEMENT_ARGON(), fn() => new Writer(Ids::ELEMENT_18)); - $this->map(VanillaBlocks::ELEMENT_ARSENIC(), fn() => new Writer(Ids::ELEMENT_33)); - $this->map(VanillaBlocks::ELEMENT_ASTATINE(), fn() => new Writer(Ids::ELEMENT_85)); - $this->map(VanillaBlocks::ELEMENT_BARIUM(), fn() => new Writer(Ids::ELEMENT_56)); - $this->map(VanillaBlocks::ELEMENT_BERKELIUM(), fn() => new Writer(Ids::ELEMENT_97)); - $this->map(VanillaBlocks::ELEMENT_BERYLLIUM(), fn() => new Writer(Ids::ELEMENT_4)); - $this->map(VanillaBlocks::ELEMENT_BISMUTH(), fn() => new Writer(Ids::ELEMENT_83)); - $this->map(VanillaBlocks::ELEMENT_BOHRIUM(), fn() => new Writer(Ids::ELEMENT_107)); - $this->map(VanillaBlocks::ELEMENT_BORON(), fn() => new Writer(Ids::ELEMENT_5)); - $this->map(VanillaBlocks::ELEMENT_BROMINE(), fn() => new Writer(Ids::ELEMENT_35)); - $this->map(VanillaBlocks::ELEMENT_CADMIUM(), fn() => new Writer(Ids::ELEMENT_48)); - $this->map(VanillaBlocks::ELEMENT_CALCIUM(), fn() => new Writer(Ids::ELEMENT_20)); - $this->map(VanillaBlocks::ELEMENT_CALIFORNIUM(), fn() => new Writer(Ids::ELEMENT_98)); - $this->map(VanillaBlocks::ELEMENT_CARBON(), fn() => new Writer(Ids::ELEMENT_6)); - $this->map(VanillaBlocks::ELEMENT_CERIUM(), fn() => new Writer(Ids::ELEMENT_58)); - $this->map(VanillaBlocks::ELEMENT_CESIUM(), fn() => new Writer(Ids::ELEMENT_55)); - $this->map(VanillaBlocks::ELEMENT_CHLORINE(), fn() => new Writer(Ids::ELEMENT_17)); - $this->map(VanillaBlocks::ELEMENT_CHROMIUM(), fn() => new Writer(Ids::ELEMENT_24)); - $this->map(VanillaBlocks::ELEMENT_COBALT(), fn() => new Writer(Ids::ELEMENT_27)); - $this->map(VanillaBlocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(VanillaBlocks::ELEMENT_COPERNICIUM(), fn() => new Writer(Ids::ELEMENT_112)); - $this->map(VanillaBlocks::ELEMENT_COPPER(), fn() => new Writer(Ids::ELEMENT_29)); - $this->map(VanillaBlocks::ELEMENT_CURIUM(), fn() => new Writer(Ids::ELEMENT_96)); - $this->map(VanillaBlocks::ELEMENT_DARMSTADTIUM(), fn() => new Writer(Ids::ELEMENT_110)); - $this->map(VanillaBlocks::ELEMENT_DUBNIUM(), fn() => new Writer(Ids::ELEMENT_105)); - $this->map(VanillaBlocks::ELEMENT_DYSPROSIUM(), fn() => new Writer(Ids::ELEMENT_66)); - $this->map(VanillaBlocks::ELEMENT_EINSTEINIUM(), fn() => new Writer(Ids::ELEMENT_99)); - $this->map(VanillaBlocks::ELEMENT_ERBIUM(), fn() => new Writer(Ids::ELEMENT_68)); - $this->map(VanillaBlocks::ELEMENT_EUROPIUM(), fn() => new Writer(Ids::ELEMENT_63)); - $this->map(VanillaBlocks::ELEMENT_FERMIUM(), fn() => new Writer(Ids::ELEMENT_100)); - $this->map(VanillaBlocks::ELEMENT_FLEROVIUM(), fn() => new Writer(Ids::ELEMENT_114)); - $this->map(VanillaBlocks::ELEMENT_FLUORINE(), fn() => new Writer(Ids::ELEMENT_9)); - $this->map(VanillaBlocks::ELEMENT_FRANCIUM(), fn() => new Writer(Ids::ELEMENT_87)); - $this->map(VanillaBlocks::ELEMENT_GADOLINIUM(), fn() => new Writer(Ids::ELEMENT_64)); - $this->map(VanillaBlocks::ELEMENT_GALLIUM(), fn() => new Writer(Ids::ELEMENT_31)); - $this->map(VanillaBlocks::ELEMENT_GERMANIUM(), fn() => new Writer(Ids::ELEMENT_32)); - $this->map(VanillaBlocks::ELEMENT_GOLD(), fn() => new Writer(Ids::ELEMENT_79)); - $this->map(VanillaBlocks::ELEMENT_HAFNIUM(), fn() => new Writer(Ids::ELEMENT_72)); - $this->map(VanillaBlocks::ELEMENT_HASSIUM(), fn() => new Writer(Ids::ELEMENT_108)); - $this->map(VanillaBlocks::ELEMENT_HELIUM(), fn() => new Writer(Ids::ELEMENT_2)); - $this->map(VanillaBlocks::ELEMENT_HOLMIUM(), fn() => new Writer(Ids::ELEMENT_67)); - $this->map(VanillaBlocks::ELEMENT_HYDROGEN(), fn() => new Writer(Ids::ELEMENT_1)); - $this->map(VanillaBlocks::ELEMENT_INDIUM(), fn() => new Writer(Ids::ELEMENT_49)); - $this->map(VanillaBlocks::ELEMENT_IODINE(), fn() => new Writer(Ids::ELEMENT_53)); - $this->map(VanillaBlocks::ELEMENT_IRIDIUM(), fn() => new Writer(Ids::ELEMENT_77)); - $this->map(VanillaBlocks::ELEMENT_IRON(), fn() => new Writer(Ids::ELEMENT_26)); - $this->map(VanillaBlocks::ELEMENT_KRYPTON(), fn() => new Writer(Ids::ELEMENT_36)); - $this->map(VanillaBlocks::ELEMENT_LANTHANUM(), fn() => new Writer(Ids::ELEMENT_57)); - $this->map(VanillaBlocks::ELEMENT_LAWRENCIUM(), fn() => new Writer(Ids::ELEMENT_103)); - $this->map(VanillaBlocks::ELEMENT_LEAD(), fn() => new Writer(Ids::ELEMENT_82)); - $this->map(VanillaBlocks::ELEMENT_LITHIUM(), fn() => new Writer(Ids::ELEMENT_3)); - $this->map(VanillaBlocks::ELEMENT_LIVERMORIUM(), fn() => new Writer(Ids::ELEMENT_116)); - $this->map(VanillaBlocks::ELEMENT_LUTETIUM(), fn() => new Writer(Ids::ELEMENT_71)); - $this->map(VanillaBlocks::ELEMENT_MAGNESIUM(), fn() => new Writer(Ids::ELEMENT_12)); - $this->map(VanillaBlocks::ELEMENT_MANGANESE(), fn() => new Writer(Ids::ELEMENT_25)); - $this->map(VanillaBlocks::ELEMENT_MEITNERIUM(), fn() => new Writer(Ids::ELEMENT_109)); - $this->map(VanillaBlocks::ELEMENT_MENDELEVIUM(), fn() => new Writer(Ids::ELEMENT_101)); - $this->map(VanillaBlocks::ELEMENT_MERCURY(), fn() => new Writer(Ids::ELEMENT_80)); - $this->map(VanillaBlocks::ELEMENT_MOLYBDENUM(), fn() => new Writer(Ids::ELEMENT_42)); - $this->map(VanillaBlocks::ELEMENT_MOSCOVIUM(), fn() => new Writer(Ids::ELEMENT_115)); - $this->map(VanillaBlocks::ELEMENT_NEODYMIUM(), fn() => new Writer(Ids::ELEMENT_60)); - $this->map(VanillaBlocks::ELEMENT_NEON(), fn() => new Writer(Ids::ELEMENT_10)); - $this->map(VanillaBlocks::ELEMENT_NEPTUNIUM(), fn() => new Writer(Ids::ELEMENT_93)); - $this->map(VanillaBlocks::ELEMENT_NICKEL(), fn() => new Writer(Ids::ELEMENT_28)); - $this->map(VanillaBlocks::ELEMENT_NIHONIUM(), fn() => new Writer(Ids::ELEMENT_113)); - $this->map(VanillaBlocks::ELEMENT_NIOBIUM(), fn() => new Writer(Ids::ELEMENT_41)); - $this->map(VanillaBlocks::ELEMENT_NITROGEN(), fn() => new Writer(Ids::ELEMENT_7)); - $this->map(VanillaBlocks::ELEMENT_NOBELIUM(), fn() => new Writer(Ids::ELEMENT_102)); - $this->map(VanillaBlocks::ELEMENT_OGANESSON(), fn() => new Writer(Ids::ELEMENT_118)); - $this->map(VanillaBlocks::ELEMENT_OSMIUM(), fn() => new Writer(Ids::ELEMENT_76)); - $this->map(VanillaBlocks::ELEMENT_OXYGEN(), fn() => new Writer(Ids::ELEMENT_8)); - $this->map(VanillaBlocks::ELEMENT_PALLADIUM(), fn() => new Writer(Ids::ELEMENT_46)); - $this->map(VanillaBlocks::ELEMENT_PHOSPHORUS(), fn() => new Writer(Ids::ELEMENT_15)); - $this->map(VanillaBlocks::ELEMENT_PLATINUM(), fn() => new Writer(Ids::ELEMENT_78)); - $this->map(VanillaBlocks::ELEMENT_PLUTONIUM(), fn() => new Writer(Ids::ELEMENT_94)); - $this->map(VanillaBlocks::ELEMENT_POLONIUM(), fn() => new Writer(Ids::ELEMENT_84)); - $this->map(VanillaBlocks::ELEMENT_POTASSIUM(), fn() => new Writer(Ids::ELEMENT_19)); - $this->map(VanillaBlocks::ELEMENT_PRASEODYMIUM(), fn() => new Writer(Ids::ELEMENT_59)); - $this->map(VanillaBlocks::ELEMENT_PROMETHIUM(), fn() => new Writer(Ids::ELEMENT_61)); - $this->map(VanillaBlocks::ELEMENT_PROTACTINIUM(), fn() => new Writer(Ids::ELEMENT_91)); - $this->map(VanillaBlocks::ELEMENT_RADIUM(), fn() => new Writer(Ids::ELEMENT_88)); - $this->map(VanillaBlocks::ELEMENT_RADON(), fn() => new Writer(Ids::ELEMENT_86)); - $this->map(VanillaBlocks::ELEMENT_RHENIUM(), fn() => new Writer(Ids::ELEMENT_75)); - $this->map(VanillaBlocks::ELEMENT_RHODIUM(), fn() => new Writer(Ids::ELEMENT_45)); - $this->map(VanillaBlocks::ELEMENT_ROENTGENIUM(), fn() => new Writer(Ids::ELEMENT_111)); - $this->map(VanillaBlocks::ELEMENT_RUBIDIUM(), fn() => new Writer(Ids::ELEMENT_37)); - $this->map(VanillaBlocks::ELEMENT_RUTHENIUM(), fn() => new Writer(Ids::ELEMENT_44)); - $this->map(VanillaBlocks::ELEMENT_RUTHERFORDIUM(), fn() => new Writer(Ids::ELEMENT_104)); - $this->map(VanillaBlocks::ELEMENT_SAMARIUM(), fn() => new Writer(Ids::ELEMENT_62)); - $this->map(VanillaBlocks::ELEMENT_SCANDIUM(), fn() => new Writer(Ids::ELEMENT_21)); - $this->map(VanillaBlocks::ELEMENT_SEABORGIUM(), fn() => new Writer(Ids::ELEMENT_106)); - $this->map(VanillaBlocks::ELEMENT_SELENIUM(), fn() => new Writer(Ids::ELEMENT_34)); - $this->map(VanillaBlocks::ELEMENT_SILICON(), fn() => new Writer(Ids::ELEMENT_14)); - $this->map(VanillaBlocks::ELEMENT_SILVER(), fn() => new Writer(Ids::ELEMENT_47)); - $this->map(VanillaBlocks::ELEMENT_SODIUM(), fn() => new Writer(Ids::ELEMENT_11)); - $this->map(VanillaBlocks::ELEMENT_STRONTIUM(), fn() => new Writer(Ids::ELEMENT_38)); - $this->map(VanillaBlocks::ELEMENT_SULFUR(), fn() => new Writer(Ids::ELEMENT_16)); - $this->map(VanillaBlocks::ELEMENT_TANTALUM(), fn() => new Writer(Ids::ELEMENT_73)); - $this->map(VanillaBlocks::ELEMENT_TECHNETIUM(), fn() => new Writer(Ids::ELEMENT_43)); - $this->map(VanillaBlocks::ELEMENT_TELLURIUM(), fn() => new Writer(Ids::ELEMENT_52)); - $this->map(VanillaBlocks::ELEMENT_TENNESSINE(), fn() => new Writer(Ids::ELEMENT_117)); - $this->map(VanillaBlocks::ELEMENT_TERBIUM(), fn() => new Writer(Ids::ELEMENT_65)); - $this->map(VanillaBlocks::ELEMENT_THALLIUM(), fn() => new Writer(Ids::ELEMENT_81)); - $this->map(VanillaBlocks::ELEMENT_THORIUM(), fn() => new Writer(Ids::ELEMENT_90)); - $this->map(VanillaBlocks::ELEMENT_THULIUM(), fn() => new Writer(Ids::ELEMENT_69)); - $this->map(VanillaBlocks::ELEMENT_TIN(), fn() => new Writer(Ids::ELEMENT_50)); - $this->map(VanillaBlocks::ELEMENT_TITANIUM(), fn() => new Writer(Ids::ELEMENT_22)); - $this->map(VanillaBlocks::ELEMENT_TUNGSTEN(), fn() => new Writer(Ids::ELEMENT_74)); - $this->map(VanillaBlocks::ELEMENT_URANIUM(), fn() => new Writer(Ids::ELEMENT_92)); - $this->map(VanillaBlocks::ELEMENT_VANADIUM(), fn() => new Writer(Ids::ELEMENT_23)); - $this->map(VanillaBlocks::ELEMENT_XENON(), fn() => new Writer(Ids::ELEMENT_54)); - $this->map(VanillaBlocks::ELEMENT_YTTERBIUM(), fn() => new Writer(Ids::ELEMENT_70)); - $this->map(VanillaBlocks::ELEMENT_YTTRIUM(), fn() => new Writer(Ids::ELEMENT_39)); - $this->map(VanillaBlocks::ELEMENT_ZERO(), fn() => new Writer(Ids::ELEMENT_0)); - $this->map(VanillaBlocks::ELEMENT_ZINC(), fn() => new Writer(Ids::ELEMENT_30)); - $this->map(VanillaBlocks::ELEMENT_ZIRCONIUM(), fn() => new Writer(Ids::ELEMENT_40)); - $this->map(VanillaBlocks::EMERALD(), fn() => new Writer(Ids::EMERALD_BLOCK)); - $this->map(VanillaBlocks::EMERALD_ORE(), fn() => new Writer(Ids::EMERALD_ORE)); - $this->map(VanillaBlocks::ENCHANTING_TABLE(), fn() => new Writer(Ids::ENCHANTING_TABLE)); - $this->map(VanillaBlocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ + $this->map(Blocks::ELEMENT_ACTINIUM(), fn() => new Writer(Ids::ELEMENT_89)); + $this->map(Blocks::ELEMENT_ALUMINUM(), fn() => new Writer(Ids::ELEMENT_13)); + $this->map(Blocks::ELEMENT_AMERICIUM(), fn() => new Writer(Ids::ELEMENT_95)); + $this->map(Blocks::ELEMENT_ANTIMONY(), fn() => new Writer(Ids::ELEMENT_51)); + $this->map(Blocks::ELEMENT_ARGON(), fn() => new Writer(Ids::ELEMENT_18)); + $this->map(Blocks::ELEMENT_ARSENIC(), fn() => new Writer(Ids::ELEMENT_33)); + $this->map(Blocks::ELEMENT_ASTATINE(), fn() => new Writer(Ids::ELEMENT_85)); + $this->map(Blocks::ELEMENT_BARIUM(), fn() => new Writer(Ids::ELEMENT_56)); + $this->map(Blocks::ELEMENT_BERKELIUM(), fn() => new Writer(Ids::ELEMENT_97)); + $this->map(Blocks::ELEMENT_BERYLLIUM(), fn() => new Writer(Ids::ELEMENT_4)); + $this->map(Blocks::ELEMENT_BISMUTH(), fn() => new Writer(Ids::ELEMENT_83)); + $this->map(Blocks::ELEMENT_BOHRIUM(), fn() => new Writer(Ids::ELEMENT_107)); + $this->map(Blocks::ELEMENT_BORON(), fn() => new Writer(Ids::ELEMENT_5)); + $this->map(Blocks::ELEMENT_BROMINE(), fn() => new Writer(Ids::ELEMENT_35)); + $this->map(Blocks::ELEMENT_CADMIUM(), fn() => new Writer(Ids::ELEMENT_48)); + $this->map(Blocks::ELEMENT_CALCIUM(), fn() => new Writer(Ids::ELEMENT_20)); + $this->map(Blocks::ELEMENT_CALIFORNIUM(), fn() => new Writer(Ids::ELEMENT_98)); + $this->map(Blocks::ELEMENT_CARBON(), fn() => new Writer(Ids::ELEMENT_6)); + $this->map(Blocks::ELEMENT_CERIUM(), fn() => new Writer(Ids::ELEMENT_58)); + $this->map(Blocks::ELEMENT_CESIUM(), fn() => new Writer(Ids::ELEMENT_55)); + $this->map(Blocks::ELEMENT_CHLORINE(), fn() => new Writer(Ids::ELEMENT_17)); + $this->map(Blocks::ELEMENT_CHROMIUM(), fn() => new Writer(Ids::ELEMENT_24)); + $this->map(Blocks::ELEMENT_COBALT(), fn() => new Writer(Ids::ELEMENT_27)); + $this->map(Blocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(Blocks::ELEMENT_COPERNICIUM(), fn() => new Writer(Ids::ELEMENT_112)); + $this->map(Blocks::ELEMENT_COPPER(), fn() => new Writer(Ids::ELEMENT_29)); + $this->map(Blocks::ELEMENT_CURIUM(), fn() => new Writer(Ids::ELEMENT_96)); + $this->map(Blocks::ELEMENT_DARMSTADTIUM(), fn() => new Writer(Ids::ELEMENT_110)); + $this->map(Blocks::ELEMENT_DUBNIUM(), fn() => new Writer(Ids::ELEMENT_105)); + $this->map(Blocks::ELEMENT_DYSPROSIUM(), fn() => new Writer(Ids::ELEMENT_66)); + $this->map(Blocks::ELEMENT_EINSTEINIUM(), fn() => new Writer(Ids::ELEMENT_99)); + $this->map(Blocks::ELEMENT_ERBIUM(), fn() => new Writer(Ids::ELEMENT_68)); + $this->map(Blocks::ELEMENT_EUROPIUM(), fn() => new Writer(Ids::ELEMENT_63)); + $this->map(Blocks::ELEMENT_FERMIUM(), fn() => new Writer(Ids::ELEMENT_100)); + $this->map(Blocks::ELEMENT_FLEROVIUM(), fn() => new Writer(Ids::ELEMENT_114)); + $this->map(Blocks::ELEMENT_FLUORINE(), fn() => new Writer(Ids::ELEMENT_9)); + $this->map(Blocks::ELEMENT_FRANCIUM(), fn() => new Writer(Ids::ELEMENT_87)); + $this->map(Blocks::ELEMENT_GADOLINIUM(), fn() => new Writer(Ids::ELEMENT_64)); + $this->map(Blocks::ELEMENT_GALLIUM(), fn() => new Writer(Ids::ELEMENT_31)); + $this->map(Blocks::ELEMENT_GERMANIUM(), fn() => new Writer(Ids::ELEMENT_32)); + $this->map(Blocks::ELEMENT_GOLD(), fn() => new Writer(Ids::ELEMENT_79)); + $this->map(Blocks::ELEMENT_HAFNIUM(), fn() => new Writer(Ids::ELEMENT_72)); + $this->map(Blocks::ELEMENT_HASSIUM(), fn() => new Writer(Ids::ELEMENT_108)); + $this->map(Blocks::ELEMENT_HELIUM(), fn() => new Writer(Ids::ELEMENT_2)); + $this->map(Blocks::ELEMENT_HOLMIUM(), fn() => new Writer(Ids::ELEMENT_67)); + $this->map(Blocks::ELEMENT_HYDROGEN(), fn() => new Writer(Ids::ELEMENT_1)); + $this->map(Blocks::ELEMENT_INDIUM(), fn() => new Writer(Ids::ELEMENT_49)); + $this->map(Blocks::ELEMENT_IODINE(), fn() => new Writer(Ids::ELEMENT_53)); + $this->map(Blocks::ELEMENT_IRIDIUM(), fn() => new Writer(Ids::ELEMENT_77)); + $this->map(Blocks::ELEMENT_IRON(), fn() => new Writer(Ids::ELEMENT_26)); + $this->map(Blocks::ELEMENT_KRYPTON(), fn() => new Writer(Ids::ELEMENT_36)); + $this->map(Blocks::ELEMENT_LANTHANUM(), fn() => new Writer(Ids::ELEMENT_57)); + $this->map(Blocks::ELEMENT_LAWRENCIUM(), fn() => new Writer(Ids::ELEMENT_103)); + $this->map(Blocks::ELEMENT_LEAD(), fn() => new Writer(Ids::ELEMENT_82)); + $this->map(Blocks::ELEMENT_LITHIUM(), fn() => new Writer(Ids::ELEMENT_3)); + $this->map(Blocks::ELEMENT_LIVERMORIUM(), fn() => new Writer(Ids::ELEMENT_116)); + $this->map(Blocks::ELEMENT_LUTETIUM(), fn() => new Writer(Ids::ELEMENT_71)); + $this->map(Blocks::ELEMENT_MAGNESIUM(), fn() => new Writer(Ids::ELEMENT_12)); + $this->map(Blocks::ELEMENT_MANGANESE(), fn() => new Writer(Ids::ELEMENT_25)); + $this->map(Blocks::ELEMENT_MEITNERIUM(), fn() => new Writer(Ids::ELEMENT_109)); + $this->map(Blocks::ELEMENT_MENDELEVIUM(), fn() => new Writer(Ids::ELEMENT_101)); + $this->map(Blocks::ELEMENT_MERCURY(), fn() => new Writer(Ids::ELEMENT_80)); + $this->map(Blocks::ELEMENT_MOLYBDENUM(), fn() => new Writer(Ids::ELEMENT_42)); + $this->map(Blocks::ELEMENT_MOSCOVIUM(), fn() => new Writer(Ids::ELEMENT_115)); + $this->map(Blocks::ELEMENT_NEODYMIUM(), fn() => new Writer(Ids::ELEMENT_60)); + $this->map(Blocks::ELEMENT_NEON(), fn() => new Writer(Ids::ELEMENT_10)); + $this->map(Blocks::ELEMENT_NEPTUNIUM(), fn() => new Writer(Ids::ELEMENT_93)); + $this->map(Blocks::ELEMENT_NICKEL(), fn() => new Writer(Ids::ELEMENT_28)); + $this->map(Blocks::ELEMENT_NIHONIUM(), fn() => new Writer(Ids::ELEMENT_113)); + $this->map(Blocks::ELEMENT_NIOBIUM(), fn() => new Writer(Ids::ELEMENT_41)); + $this->map(Blocks::ELEMENT_NITROGEN(), fn() => new Writer(Ids::ELEMENT_7)); + $this->map(Blocks::ELEMENT_NOBELIUM(), fn() => new Writer(Ids::ELEMENT_102)); + $this->map(Blocks::ELEMENT_OGANESSON(), fn() => new Writer(Ids::ELEMENT_118)); + $this->map(Blocks::ELEMENT_OSMIUM(), fn() => new Writer(Ids::ELEMENT_76)); + $this->map(Blocks::ELEMENT_OXYGEN(), fn() => new Writer(Ids::ELEMENT_8)); + $this->map(Blocks::ELEMENT_PALLADIUM(), fn() => new Writer(Ids::ELEMENT_46)); + $this->map(Blocks::ELEMENT_PHOSPHORUS(), fn() => new Writer(Ids::ELEMENT_15)); + $this->map(Blocks::ELEMENT_PLATINUM(), fn() => new Writer(Ids::ELEMENT_78)); + $this->map(Blocks::ELEMENT_PLUTONIUM(), fn() => new Writer(Ids::ELEMENT_94)); + $this->map(Blocks::ELEMENT_POLONIUM(), fn() => new Writer(Ids::ELEMENT_84)); + $this->map(Blocks::ELEMENT_POTASSIUM(), fn() => new Writer(Ids::ELEMENT_19)); + $this->map(Blocks::ELEMENT_PRASEODYMIUM(), fn() => new Writer(Ids::ELEMENT_59)); + $this->map(Blocks::ELEMENT_PROMETHIUM(), fn() => new Writer(Ids::ELEMENT_61)); + $this->map(Blocks::ELEMENT_PROTACTINIUM(), fn() => new Writer(Ids::ELEMENT_91)); + $this->map(Blocks::ELEMENT_RADIUM(), fn() => new Writer(Ids::ELEMENT_88)); + $this->map(Blocks::ELEMENT_RADON(), fn() => new Writer(Ids::ELEMENT_86)); + $this->map(Blocks::ELEMENT_RHENIUM(), fn() => new Writer(Ids::ELEMENT_75)); + $this->map(Blocks::ELEMENT_RHODIUM(), fn() => new Writer(Ids::ELEMENT_45)); + $this->map(Blocks::ELEMENT_ROENTGENIUM(), fn() => new Writer(Ids::ELEMENT_111)); + $this->map(Blocks::ELEMENT_RUBIDIUM(), fn() => new Writer(Ids::ELEMENT_37)); + $this->map(Blocks::ELEMENT_RUTHENIUM(), fn() => new Writer(Ids::ELEMENT_44)); + $this->map(Blocks::ELEMENT_RUTHERFORDIUM(), fn() => new Writer(Ids::ELEMENT_104)); + $this->map(Blocks::ELEMENT_SAMARIUM(), fn() => new Writer(Ids::ELEMENT_62)); + $this->map(Blocks::ELEMENT_SCANDIUM(), fn() => new Writer(Ids::ELEMENT_21)); + $this->map(Blocks::ELEMENT_SEABORGIUM(), fn() => new Writer(Ids::ELEMENT_106)); + $this->map(Blocks::ELEMENT_SELENIUM(), fn() => new Writer(Ids::ELEMENT_34)); + $this->map(Blocks::ELEMENT_SILICON(), fn() => new Writer(Ids::ELEMENT_14)); + $this->map(Blocks::ELEMENT_SILVER(), fn() => new Writer(Ids::ELEMENT_47)); + $this->map(Blocks::ELEMENT_SODIUM(), fn() => new Writer(Ids::ELEMENT_11)); + $this->map(Blocks::ELEMENT_STRONTIUM(), fn() => new Writer(Ids::ELEMENT_38)); + $this->map(Blocks::ELEMENT_SULFUR(), fn() => new Writer(Ids::ELEMENT_16)); + $this->map(Blocks::ELEMENT_TANTALUM(), fn() => new Writer(Ids::ELEMENT_73)); + $this->map(Blocks::ELEMENT_TECHNETIUM(), fn() => new Writer(Ids::ELEMENT_43)); + $this->map(Blocks::ELEMENT_TELLURIUM(), fn() => new Writer(Ids::ELEMENT_52)); + $this->map(Blocks::ELEMENT_TENNESSINE(), fn() => new Writer(Ids::ELEMENT_117)); + $this->map(Blocks::ELEMENT_TERBIUM(), fn() => new Writer(Ids::ELEMENT_65)); + $this->map(Blocks::ELEMENT_THALLIUM(), fn() => new Writer(Ids::ELEMENT_81)); + $this->map(Blocks::ELEMENT_THORIUM(), fn() => new Writer(Ids::ELEMENT_90)); + $this->map(Blocks::ELEMENT_THULIUM(), fn() => new Writer(Ids::ELEMENT_69)); + $this->map(Blocks::ELEMENT_TIN(), fn() => new Writer(Ids::ELEMENT_50)); + $this->map(Blocks::ELEMENT_TITANIUM(), fn() => new Writer(Ids::ELEMENT_22)); + $this->map(Blocks::ELEMENT_TUNGSTEN(), fn() => new Writer(Ids::ELEMENT_74)); + $this->map(Blocks::ELEMENT_URANIUM(), fn() => new Writer(Ids::ELEMENT_92)); + $this->map(Blocks::ELEMENT_VANADIUM(), fn() => new Writer(Ids::ELEMENT_23)); + $this->map(Blocks::ELEMENT_XENON(), fn() => new Writer(Ids::ELEMENT_54)); + $this->map(Blocks::ELEMENT_YTTERBIUM(), fn() => new Writer(Ids::ELEMENT_70)); + $this->map(Blocks::ELEMENT_YTTRIUM(), fn() => new Writer(Ids::ELEMENT_39)); + $this->map(Blocks::ELEMENT_ZERO(), fn() => new Writer(Ids::ELEMENT_0)); + $this->map(Blocks::ELEMENT_ZINC(), fn() => new Writer(Ids::ELEMENT_30)); + $this->map(Blocks::ELEMENT_ZIRCONIUM(), fn() => new Writer(Ids::ELEMENT_40)); + $this->map(Blocks::EMERALD(), fn() => new Writer(Ids::EMERALD_BLOCK)); + $this->map(Blocks::EMERALD_ORE(), fn() => new Writer(Ids::EMERALD_ORE)); + $this->map(Blocks::ENCHANTING_TABLE(), fn() => new Writer(Ids::ENCHANTING_TABLE)); + $this->map(Blocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ return Writer::create(Ids::ENDER_CHEST) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::END_PORTAL_FRAME(), function(EndPortalFrame $block) : Writer{ + $this->map(Blocks::END_PORTAL_FRAME(), function(EndPortalFrame $block) : Writer{ return Writer::create(Ids::END_PORTAL_FRAME) - ->writeBool(BlockStateNames::END_PORTAL_EYE_BIT, $block->hasEye()) + ->writeBool(StateNames::END_PORTAL_EYE_BIT, $block->hasEye()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::END_ROD(), function(EndRod $block) : Writer{ + $this->map(Blocks::END_ROD(), function(EndRod $block) : Writer{ return Writer::create(Ids::END_ROD) ->writeEndRodFacingDirection($block->getFacing()); }); - $this->map(VanillaBlocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); - $this->map(VanillaBlocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); - $this->map(VanillaBlocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); - $this->map(VanillaBlocks::END_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::END_BRICK_STAIRS))); - $this->map(VanillaBlocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); - $this->map(VanillaBlocks::FAKE_WOODEN_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_WOOD)); - $this->map(VanillaBlocks::FARMLAND(), function(Farmland $block) : Writer{ + $this->map(Blocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); + $this->map(Blocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); + $this->map(Blocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); + $this->map(Blocks::END_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::END_BRICK_STAIRS))); + $this->map(Blocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); + $this->map(Blocks::FAKE_WOODEN_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_WOOD)); + $this->map(Blocks::FARMLAND(), function(Farmland $block) : Writer{ return Writer::create(Ids::FARMLAND) - ->writeInt(BlockStateNames::MOISTURIZED_AMOUNT, $block->getWetness()); + ->writeInt(StateNames::MOISTURIZED_AMOUNT, $block->getWetness()); }); - $this->map(VanillaBlocks::FERN(), fn() => Writer::create(Ids::TALLGRASS) - ->writeString(BlockStateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_FERN)); - $this->map(VanillaBlocks::FIRE(), function(Fire $block) : Writer{ + $this->map(Blocks::FERN(), fn() => Writer::create(Ids::TALLGRASS) + ->writeString(StateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_FERN)); + $this->map(Blocks::FIRE(), function(Fire $block) : Writer{ return Writer::create(Ids::FIRE) - ->writeInt(BlockStateNames::AGE, $block->getAge()); + ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(VanillaBlocks::FLETCHING_TABLE(), fn() => new Writer(Ids::FLETCHING_TABLE)); - $this->map(VanillaBlocks::FLOWER_POT(), function() : Writer{ + $this->map(Blocks::FLETCHING_TABLE(), fn() => new Writer(Ids::FLETCHING_TABLE)); + $this->map(Blocks::FLOWER_POT(), function() : Writer{ return Writer::create(Ids::FLOWER_POT) - ->writeBool(BlockStateNames::UPDATE_BIT, true); //to keep MCPE happy + ->writeBool(StateNames::UPDATE_BIT, true); //to keep MCPE happy }); - $this->map(VanillaBlocks::FROSTED_ICE(), function(FrostedIce $block) : Writer{ + $this->map(Blocks::FROSTED_ICE(), function(FrostedIce $block) : Writer{ return Writer::create(Ids::FROSTED_ICE) - ->writeInt(BlockStateNames::AGE, $block->getAge()); + ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(VanillaBlocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); - $this->map(VanillaBlocks::GLASS(), fn() => new Writer(Ids::GLASS)); - $this->map(VanillaBlocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE)); - $this->map(VanillaBlocks::GLOWING_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN)); - $this->map(VanillaBlocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE)); - $this->map(VanillaBlocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK)); - $this->map(VanillaBlocks::GOLD_ORE(), fn() => new Writer(Ids::GOLD_ORE)); - $this->map(VanillaBlocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); - $this->map(VanillaBlocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); - $this->map(VanillaBlocks::GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::GRANITE_STAIRS))); - $this->map(VanillaBlocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); - $this->map(VanillaBlocks::GRASS(), fn() => new Writer(Ids::GRASS)); - $this->map(VanillaBlocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); - $this->map(VanillaBlocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL)); - $this->map(VanillaBlocks::GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GRAY_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::GREEN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GREEN_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); - $this->map(VanillaBlocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY)); - $this->map(VanillaBlocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS)); - $this->map(VanillaBlocks::HARDENED_GLASS_PANE(), fn() => new Writer(Ids::HARD_GLASS_PANE)); - $this->map(VanillaBlocks::HAY_BALE(), function(HayBale $block) : Writer{ + $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); + $this->map(Blocks::GLASS(), fn() => new Writer(Ids::GLASS)); + $this->map(Blocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE)); + $this->map(Blocks::GLOWING_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN)); + $this->map(Blocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE)); + $this->map(Blocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK)); + $this->map(Blocks::GOLD_ORE(), fn() => new Writer(Ids::GOLD_ORE)); + $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); + $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); + $this->map(Blocks::GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::GRANITE_STAIRS))); + $this->map(Blocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); + $this->map(Blocks::GRASS(), fn() => new Writer(Ids::GRASS)); + $this->map(Blocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); + $this->map(Blocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL)); + $this->map(Blocks::GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GRAY_GLAZED_TERRACOTTA))); + $this->map(Blocks::GREEN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GREEN_GLAZED_TERRACOTTA))); + $this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); + $this->map(Blocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY)); + $this->map(Blocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS)); + $this->map(Blocks::HARDENED_GLASS_PANE(), fn() => new Writer(Ids::HARD_GLASS_PANE)); + $this->map(Blocks::HAY_BALE(), function(HayBale $block) : Writer{ return Writer::create(Ids::HAY_BLOCK) - ->writeInt(BlockStateNames::DEPRECATED, 0) + ->writeInt(StateNames::DEPRECATED, 0) ->writePillarAxis($block->getAxis()); }); - $this->map(VanillaBlocks::HOPPER(), function(Hopper $block) : Writer{ + $this->map(Blocks::HOPPER(), function(Hopper $block) : Writer{ return Writer::create(Ids::HOPPER) - ->writeBool(BlockStateNames::TOGGLE_BIT, $block->isPowered()) + ->writeBool(StateNames::TOGGLE_BIT, $block->isPowered()) ->writeFacingWithoutUp($block->getFacing()); }); - $this->map(VanillaBlocks::ICE(), fn() => new Writer(Ids::ICE)); - $this->map(VanillaBlocks::INFESTED_CHISELED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK)); - $this->map(VanillaBlocks::INFESTED_COBBLESTONE(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE)); - $this->map(VanillaBlocks::INFESTED_CRACKED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK)); - $this->map(VanillaBlocks::INFESTED_MOSSY_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK)); - $this->map(VanillaBlocks::INFESTED_STONE(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE)); - $this->map(VanillaBlocks::INFESTED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) - ->writeString(BlockStateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); - $this->map(VanillaBlocks::INFO_UPDATE(), fn() => new Writer(Ids::INFO_UPDATE)); - $this->map(VanillaBlocks::INFO_UPDATE2(), fn() => new Writer(Ids::INFO_UPDATE2)); - $this->map(VanillaBlocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLEBEDROCK)); - $this->map(VanillaBlocks::IRON(), fn() => new Writer(Ids::IRON_BLOCK)); - $this->map(VanillaBlocks::IRON_BARS(), fn() => new Writer(Ids::IRON_BARS)); - $this->map(VanillaBlocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); - $this->map(VanillaBlocks::IRON_ORE(), fn() => new Writer(Ids::IRON_ORE)); - $this->map(VanillaBlocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); - $this->map(VanillaBlocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ + $this->map(Blocks::ICE(), fn() => new Writer(Ids::ICE)); + $this->map(Blocks::INFESTED_CHISELED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK)); + $this->map(Blocks::INFESTED_COBBLESTONE(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_COBBLESTONE)); + $this->map(Blocks::INFESTED_CRACKED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CRACKED_STONE_BRICK)); + $this->map(Blocks::INFESTED_MOSSY_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_MOSSY_STONE_BRICK)); + $this->map(Blocks::INFESTED_STONE(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE)); + $this->map(Blocks::INFESTED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) + ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); + $this->map(Blocks::INFO_UPDATE(), fn() => new Writer(Ids::INFO_UPDATE)); + $this->map(Blocks::INFO_UPDATE2(), fn() => new Writer(Ids::INFO_UPDATE2)); + $this->map(Blocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLEBEDROCK)); + $this->map(Blocks::IRON(), fn() => new Writer(Ids::IRON_BLOCK)); + $this->map(Blocks::IRON_BARS(), fn() => new Writer(Ids::IRON_BARS)); + $this->map(Blocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); + $this->map(Blocks::IRON_ORE(), fn() => new Writer(Ids::IRON_ORE)); + $this->map(Blocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); + $this->map(Blocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ return Writer::create(Ids::FRAME) - ->writeBool(BlockStateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) - ->writeBool(BlockStateNames::ITEM_FRAME_PHOTO_BIT, false) + ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) + ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); - $this->map(VanillaBlocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); - $this->map(VanillaBlocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); - $this->map(VanillaBlocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); - $this->map(VanillaBlocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); - $this->map(VanillaBlocks::JUNGLE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::JUNGLE_STANDING_SIGN))); - $this->map(VanillaBlocks::JUNGLE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_JUNGLE)); - $this->map(VanillaBlocks::JUNGLE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::JUNGLE_STAIRS))); - $this->map(VanillaBlocks::JUNGLE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::JUNGLE_TRAPDOOR))); - $this->map(VanillaBlocks::JUNGLE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::JUNGLE_WALL_SIGN))); - $this->map(VanillaBlocks::JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::LAB_TABLE(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(VanillaBlocks::LADDER(), function(Ladder $block) : Writer{ + $this->map(Blocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); + $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); + $this->map(Blocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); + $this->map(Blocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); + $this->map(Blocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); + $this->map(Blocks::JUNGLE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::JUNGLE_STANDING_SIGN))); + $this->map(Blocks::JUNGLE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::JUNGLE_STAIRS))); + $this->map(Blocks::JUNGLE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::JUNGLE_TRAPDOOR))); + $this->map(Blocks::JUNGLE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::JUNGLE_WALL_SIGN))); + $this->map(Blocks::JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::LAB_TABLE(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(Blocks::LADDER(), function(Ladder $block) : Writer{ return Writer::create(Ids::LADDER) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::LANTERN(), function(Lantern $block) : Writer{ + $this->map(Blocks::LANTERN(), function(Lantern $block) : Writer{ return Writer::create(Ids::LANTERN) - ->writeBool(BlockStateNames::HANGING, $block->isHanging()); + ->writeBool(StateNames::HANGING, $block->isHanging()); }); - $this->map(VanillaBlocks::LAPIS_LAZULI(), fn() => new Writer(Ids::LAPIS_BLOCK)); - $this->map(VanillaBlocks::LAPIS_LAZULI_ORE(), fn() => new Writer(Ids::LAPIS_ORE)); - $this->map(VanillaBlocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_FERN, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA)); - $this->map(VanillaBlocks::LECTERN(), function(Lectern $block) : Writer{ + $this->map(Blocks::LAPIS_LAZULI(), fn() => new Writer(Ids::LAPIS_BLOCK)); + $this->map(Blocks::LAPIS_LAZULI_ORE(), fn() => new Writer(Ids::LAPIS_ORE)); + $this->map(Blocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_FERN, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA)); + $this->map(Blocks::LECTERN(), function(Lectern $block) : Writer{ return Writer::create(Ids::LECTERN) - ->writeBool(BlockStateNames::POWERED_BIT, $block->isProducingSignal()) + ->writeBool(StateNames::POWERED_BIT, $block->isProducingSignal()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::LEGACY_STONECUTTER(), fn() => new Writer(Ids::STONECUTTER)); - $this->map(VanillaBlocks::LEVER(), function(Lever $block) : Writer{ + $this->map(Blocks::LEGACY_STONECUTTER(), fn() => new Writer(Ids::STONECUTTER)); + $this->map(Blocks::LEVER(), function(Lever $block) : Writer{ return Writer::create(Ids::LEVER) - ->writeBool(BlockStateNames::OPEN_BIT, $block->isActivated()) - ->writeString(BlockStateNames::LEVER_DIRECTION, match($block->getFacing()->id()){ + ->writeBool(StateNames::OPEN_BIT, $block->isActivated()) + ->writeString(StateNames::LEVER_DIRECTION, match($block->getFacing()->id()){ LeverFacing::DOWN_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_DOWN_NORTH_SOUTH, LeverFacing::DOWN_AXIS_X()->id() => StringValues::LEVER_DIRECTION_DOWN_EAST_WEST, LeverFacing::UP_AXIS_Z()->id() => StringValues::LEVER_DIRECTION_UP_NORTH_SOUTH, @@ -735,332 +736,332 @@ final class BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), }); }); - $this->map(VanillaBlocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); - $this->map(VanillaBlocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY)); - $this->map(VanillaBlocks::LIME_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIME_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ + $this->map(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA))); + $this->map(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA))); + $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); + $this->map(Blocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY)); + $this->map(Blocks::LIME_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIME_GLAZED_TERRACOTTA))); + $this->map(Blocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ return Writer::create(Ids::LIT_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::LOOM(), function(Loom $block) : Writer{ + $this->map(Blocks::LOOM(), function(Loom $block) : Writer{ return Writer::create(Ids::LOOM) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::MAGENTA_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::MAGENTA_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::MAGMA(), fn() => new Writer(Ids::MAGMA)); - $this->map(VanillaBlocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(VanillaBlocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK)); - $this->map(VanillaBlocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); - $this->map(VanillaBlocks::MOB_HEAD(), function(Skull $block) : Writer{ + $this->map(Blocks::MAGENTA_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::MAGENTA_GLAZED_TERRACOTTA))); + $this->map(Blocks::MAGMA(), fn() => new Writer(Ids::MAGMA)); + $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(Blocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK)); + $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); + $this->map(Blocks::MOB_HEAD(), function(Skull $block) : Writer{ return Writer::create(Ids::SKULL) - ->writeBool(BlockStateNames::NO_DROP_BIT, $block->isNoDrops()) + ->writeBool(StateNames::NO_DROP_BIT, $block->isNoDrops()) ->writeFacingWithoutDown($block->getFacing()); }); - $this->map(VanillaBlocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); - $this->map(VanillaBlocks::MOSSY_COBBLESTONE(), fn() => new Writer(Ids::MOSSY_COBBLESTONE)); - $this->map(VanillaBlocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); - $this->map(VanillaBlocks::MOSSY_COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_COBBLESTONE_STAIRS))); - $this->map(VanillaBlocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); - $this->map(VanillaBlocks::MOSSY_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_MOSSY)); - $this->map(VanillaBlocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); - $this->map(VanillaBlocks::MOSSY_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_STONE_BRICK_STAIRS))); - $this->map(VanillaBlocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); - $this->map(VanillaBlocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) - ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); - $this->map(VanillaBlocks::MYCELIUM(), fn() => new Writer(Ids::MYCELIUM)); - $this->map(VanillaBlocks::NETHERRACK(), fn() => new Writer(Ids::NETHERRACK)); - $this->map(VanillaBlocks::NETHER_BRICKS(), fn() => new Writer(Ids::NETHER_BRICK)); - $this->map(VanillaBlocks::NETHER_BRICK_FENCE(), fn() => new Writer(Ids::NETHER_BRICK_FENCE)); - $this->map(VanillaBlocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); - $this->map(VanillaBlocks::NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NETHER_BRICK_STAIRS))); - $this->map(VanillaBlocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); - $this->map(VanillaBlocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ + $this->map(Blocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); + $this->map(Blocks::MOSSY_COBBLESTONE(), fn() => new Writer(Ids::MOSSY_COBBLESTONE)); + $this->map(Blocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); + $this->map(Blocks::MOSSY_COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_COBBLESTONE_STAIRS))); + $this->map(Blocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); + $this->map(Blocks::MOSSY_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_MOSSY)); + $this->map(Blocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); + $this->map(Blocks::MOSSY_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_STONE_BRICK_STAIRS))); + $this->map(Blocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); + $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) + ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); + $this->map(Blocks::MYCELIUM(), fn() => new Writer(Ids::MYCELIUM)); + $this->map(Blocks::NETHERRACK(), fn() => new Writer(Ids::NETHERRACK)); + $this->map(Blocks::NETHER_BRICKS(), fn() => new Writer(Ids::NETHER_BRICK)); + $this->map(Blocks::NETHER_BRICK_FENCE(), fn() => new Writer(Ids::NETHER_BRICK_FENCE)); + $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); + $this->map(Blocks::NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NETHER_BRICK_STAIRS))); + $this->map(Blocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); + $this->map(Blocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ return Writer::create(Ids::PORTAL) - ->writeString(BlockStateNames::PORTAL_AXIS, match($block->getAxis()){ + ->writeString(StateNames::PORTAL_AXIS, match($block->getAxis()){ Axis::X => StringValues::PORTAL_AXIS_X, Axis::Z => StringValues::PORTAL_AXIS_Z, default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), }); }); - $this->map(VanillaBlocks::NETHER_QUARTZ_ORE(), fn() => new Writer(Ids::QUARTZ_ORE)); - $this->map(VanillaBlocks::NETHER_REACTOR_CORE(), fn() => new Writer(Ids::NETHERREACTOR)); - $this->map(VanillaBlocks::NETHER_WART(), function(NetherWartPlant $block) : Writer{ + $this->map(Blocks::NETHER_QUARTZ_ORE(), fn() => new Writer(Ids::QUARTZ_ORE)); + $this->map(Blocks::NETHER_REACTOR_CORE(), fn() => new Writer(Ids::NETHERREACTOR)); + $this->map(Blocks::NETHER_WART(), function(NetherWartPlant $block) : Writer{ return Writer::create(Ids::NETHER_WART) - ->writeInt(BlockStateNames::AGE, $block->getAge()); + ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(VanillaBlocks::NETHER_WART_BLOCK(), fn() => new Writer(Ids::NETHER_WART_BLOCK)); - $this->map(VanillaBlocks::NOTE_BLOCK(), fn() => new Writer(Ids::NOTEBLOCK)); - $this->map(VanillaBlocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); - $this->map(VanillaBlocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); - $this->map(VanillaBlocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); - $this->map(VanillaBlocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); - $this->map(VanillaBlocks::OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::STANDING_SIGN))); - $this->map(VanillaBlocks::OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_OAK)); - $this->map(VanillaBlocks::OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::OAK_STAIRS))); - $this->map(VanillaBlocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); - $this->map(VanillaBlocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); - $this->map(VanillaBlocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN)); - $this->map(VanillaBlocks::ORANGE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::ORANGE_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); - $this->map(VanillaBlocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); - $this->map(VanillaBlocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE)); - $this->map(VanillaBlocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::PINK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PINK_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); - $this->map(VanillaBlocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); - $this->map(VanillaBlocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); - $this->map(VanillaBlocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); - $this->map(VanillaBlocks::POLISHED_ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_ANDESITE_STAIRS))); - $this->map(VanillaBlocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); - $this->map(VanillaBlocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); - $this->map(VanillaBlocks::POLISHED_DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_DIORITE_STAIRS))); - $this->map(VanillaBlocks::POLISHED_GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE_SMOOTH)); - $this->map(VanillaBlocks::POLISHED_GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE)); - $this->map(VanillaBlocks::POLISHED_GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_GRANITE_STAIRS))); - $this->map(VanillaBlocks::POPPY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_POPPY)); - $this->map(VanillaBlocks::POTATOES(), fn(Potato $block) => Helper::encodeCrops($block, new Writer(Ids::POTATOES))); - $this->map(VanillaBlocks::POWERED_RAIL(), function(PoweredRail $block) : Writer{ + $this->map(Blocks::NETHER_WART_BLOCK(), fn() => new Writer(Ids::NETHER_WART_BLOCK)); + $this->map(Blocks::NOTE_BLOCK(), fn() => new Writer(Ids::NOTEBLOCK)); + $this->map(Blocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); + $this->map(Blocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); + $this->map(Blocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); + $this->map(Blocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); + $this->map(Blocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); + $this->map(Blocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK)); + $this->map(Blocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); + $this->map(Blocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); + $this->map(Blocks::OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_OAK)); + $this->map(Blocks::OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::STANDING_SIGN))); + $this->map(Blocks::OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_OAK)); + $this->map(Blocks::OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::OAK_STAIRS))); + $this->map(Blocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); + $this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); + $this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN)); + $this->map(Blocks::ORANGE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::ORANGE_GLAZED_TERRACOTTA))); + $this->map(Blocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); + $this->map(Blocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); + $this->map(Blocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE)); + $this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::PINK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PINK_GLAZED_TERRACOTTA))); + $this->map(Blocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); + $this->map(Blocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); + $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); + $this->map(Blocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); + $this->map(Blocks::POLISHED_ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_ANDESITE_STAIRS))); + $this->map(Blocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); + $this->map(Blocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); + $this->map(Blocks::POLISHED_DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_DIORITE_STAIRS))); + $this->map(Blocks::POLISHED_GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE_SMOOTH)); + $this->map(Blocks::POLISHED_GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE)); + $this->map(Blocks::POLISHED_GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_GRANITE_STAIRS))); + $this->map(Blocks::POPPY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_POPPY)); + $this->map(Blocks::POTATOES(), fn(Potato $block) => Helper::encodeCrops($block, new Writer(Ids::POTATOES))); + $this->map(Blocks::POWERED_RAIL(), function(PoweredRail $block) : Writer{ return Writer::create(Ids::GOLDEN_RAIL) - ->writeBool(BlockStateNames::RAIL_DATA_BIT, $block->isPowered()) - ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + ->writeBool(StateNames::RAIL_DATA_BIT, $block->isPowered()) + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(VanillaBlocks::PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) - ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT)); - $this->map(VanillaBlocks::PRISMARINE_BRICKS(), fn() => Writer::create(Ids::PRISMARINE) - ->writeString(BlockStateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_BRICKS)); - $this->map(VanillaBlocks::PRISMARINE_BRICKS_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK)); - $this->map(VanillaBlocks::PRISMARINE_BRICKS_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_BRICKS_STAIRS))); - $this->map(VanillaBlocks::PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH)); - $this->map(VanillaBlocks::PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_STAIRS))); - $this->map(VanillaBlocks::PRISMARINE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_PRISMARINE)); - $this->map(VanillaBlocks::PUMPKIN(), function() : Writer{ + $this->map(Blocks::PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DEFAULT)); + $this->map(Blocks::PRISMARINE_BRICKS(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_BRICKS)); + $this->map(Blocks::PRISMARINE_BRICKS_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK)); + $this->map(Blocks::PRISMARINE_BRICKS_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_BRICKS_STAIRS))); + $this->map(Blocks::PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH)); + $this->map(Blocks::PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_STAIRS))); + $this->map(Blocks::PRISMARINE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_PRISMARINE)); + $this->map(Blocks::PUMPKIN(), function() : Writer{ return Writer::create(Ids::PUMPKIN) ->writeLegacyHorizontalFacing(Facing::SOUTH); //no longer used }); - $this->map(VanillaBlocks::PUMPKIN_STEM(), fn(PumpkinStem $block) => Helper::encodeStem($block, new Writer(Ids::PUMPKIN_STEM))); - $this->map(VanillaBlocks::PURPLE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PURPLE_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::PURPLE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_BP))); - $this->map(VanillaBlocks::PURPUR(), function() : Writer{ + $this->map(Blocks::PUMPKIN_STEM(), fn(PumpkinStem $block) => Helper::encodeStem($block, new Writer(Ids::PUMPKIN_STEM))); + $this->map(Blocks::PURPLE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PURPLE_GLAZED_TERRACOTTA))); + $this->map(Blocks::PURPLE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_BP))); + $this->map(Blocks::PURPUR(), function() : Writer{ return Writer::create(Ids::PURPUR_BLOCK) - ->writeString(BlockStateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_DEFAULT) + ->writeString(StateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_DEFAULT) ->writePillarAxis(Axis::Y); //useless, but MCPE wants it }); - $this->map(VanillaBlocks::PURPUR_PILLAR(), function(SimplePillar $block) : Writer{ + $this->map(Blocks::PURPUR_PILLAR(), function(SimplePillar $block) : Writer{ return Writer::create(Ids::PURPUR_BLOCK) - ->writeString(BlockStateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_LINES) + ->writeString(StateNames::CHISEL_TYPE, StringValues::CHISEL_TYPE_LINES) ->writePillarAxis($block->getAxis()); }); - $this->map(VanillaBlocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); - $this->map(VanillaBlocks::PURPUR_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PURPUR_STAIRS))); - $this->map(VanillaBlocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); - $this->map(VanillaBlocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); - $this->map(VanillaBlocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); - $this->map(VanillaBlocks::QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::QUARTZ_STAIRS))); - $this->map(VanillaBlocks::RAIL(), function(Rail $block) : Writer{ + $this->map(Blocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); + $this->map(Blocks::PURPUR_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PURPUR_STAIRS))); + $this->map(Blocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); + $this->map(Blocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); + $this->map(Blocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); + $this->map(Blocks::QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::QUARTZ_STAIRS))); + $this->map(Blocks::RAIL(), function(Rail $block) : Writer{ return Writer::create(Ids::RAIL) - ->writeInt(BlockStateNames::RAIL_DIRECTION, $block->getShape()); + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(VanillaBlocks::REDSTONE(), fn() => new Writer(Ids::REDSTONE_BLOCK)); - $this->map(VanillaBlocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : BlockStateWriter{ + $this->map(Blocks::REDSTONE(), fn() => new Writer(Ids::REDSTONE_BLOCK)); + $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : BlockStateWriter{ return BlockStateWriter::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) - ->writeBool(BlockStateNames::OUTPUT_LIT_BIT, $block->isPowered()) - ->writeBool(BlockStateNames::OUTPUT_SUBTRACT_BIT, $block->isSubtractMode()) + ->writeBool(StateNames::OUTPUT_LIT_BIT, $block->isPowered()) + ->writeBool(StateNames::OUTPUT_SUBTRACT_BIT, $block->isSubtractMode()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::REDSTONE_LAMP(), fn(RedstoneLamp $block) => new Writer($block->isPowered() ? Ids::LIT_REDSTONE_LAMP : Ids::REDSTONE_LAMP)); - $this->map(VanillaBlocks::REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_REDSTONE_ORE : Ids::REDSTONE_ORE)); - $this->map(VanillaBlocks::REDSTONE_REPEATER(), function(RedstoneRepeater $block) : BlockStateWriter{ + $this->map(Blocks::REDSTONE_LAMP(), fn(RedstoneLamp $block) => new Writer($block->isPowered() ? Ids::LIT_REDSTONE_LAMP : Ids::REDSTONE_LAMP)); + $this->map(Blocks::REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_REDSTONE_ORE : Ids::REDSTONE_ORE)); + $this->map(Blocks::REDSTONE_REPEATER(), function(RedstoneRepeater $block) : BlockStateWriter{ return Writer::create($block->isPowered() ? Ids::POWERED_REPEATER : Ids::UNPOWERED_REPEATER) ->writeLegacyHorizontalFacing($block->getFacing()) - ->writeInt(BlockStateNames::REPEATER_DELAY, $block->getDelay() - 1); + ->writeInt(StateNames::REPEATER_DELAY, $block->getDelay() - 1); }); - $this->map(VanillaBlocks::REDSTONE_TORCH(), function(RedstoneTorch $block) : Writer{ + $this->map(Blocks::REDSTONE_TORCH(), function(RedstoneTorch $block) : Writer{ return Writer::create($block->isLit() ? Ids::REDSTONE_TORCH : Ids::UNLIT_REDSTONE_TORCH) ->writeTorchFacing($block->getFacing()); }); - $this->map(VanillaBlocks::REDSTONE_WIRE(), function(RedstoneWire $block) : Writer{ + $this->map(Blocks::REDSTONE_WIRE(), function(RedstoneWire $block) : Writer{ return Writer::create(Ids::REDSTONE_WIRE) - ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(VanillaBlocks::RED_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::RED_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM)); - $this->map(VanillaBlocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); - $this->map(VanillaBlocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); - $this->map(VanillaBlocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); - $this->map(VanillaBlocks::RED_NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_NETHER_BRICK_STAIRS))); - $this->map(VanillaBlocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); - $this->map(VanillaBlocks::RED_SAND(), fn() => Writer::create(Ids::SAND) - ->writeString(BlockStateNames::SAND_TYPE, StringValues::SAND_TYPE_RED)); - $this->map(VanillaBlocks::RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); - $this->map(VanillaBlocks::RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE)); - $this->map(VanillaBlocks::RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_SANDSTONE_STAIRS))); - $this->map(VanillaBlocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); - $this->map(VanillaBlocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); - $this->map(VanillaBlocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); - $this->map(VanillaBlocks::RESERVED6(), fn() => new Writer(Ids::RESERVED6)); - $this->map(VanillaBlocks::ROSE_BUSH(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_ROSE, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::SAND(), fn() => Writer::create(Ids::SAND) - ->writeString(BlockStateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); - $this->map(VanillaBlocks::SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); - $this->map(VanillaBlocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); - $this->map(VanillaBlocks::SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SANDSTONE_STAIRS))); - $this->map(VanillaBlocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); - $this->map(VanillaBlocks::SEA_LANTERN(), fn() => new Writer(Ids::SEALANTERN)); - $this->map(VanillaBlocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ + $this->map(Blocks::RED_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::RED_GLAZED_TERRACOTTA))); + $this->map(Blocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM)); + $this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); + $this->map(Blocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); + $this->map(Blocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); + $this->map(Blocks::RED_NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_NETHER_BRICK_STAIRS))); + $this->map(Blocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); + $this->map(Blocks::RED_SAND(), fn() => Writer::create(Ids::SAND) + ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_RED)); + $this->map(Blocks::RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); + $this->map(Blocks::RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE)); + $this->map(Blocks::RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_SANDSTONE_STAIRS))); + $this->map(Blocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); + $this->map(Blocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); + $this->map(Blocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); + $this->map(Blocks::RESERVED6(), fn() => new Writer(Ids::RESERVED6)); + $this->map(Blocks::ROSE_BUSH(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_ROSE, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::SAND(), fn() => Writer::create(Ids::SAND) + ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); + $this->map(Blocks::SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); + $this->map(Blocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); + $this->map(Blocks::SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SANDSTONE_STAIRS))); + $this->map(Blocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); + $this->map(Blocks::SEA_LANTERN(), fn() => new Writer(Ids::SEALANTERN)); + $this->map(Blocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ return Writer::create(Ids::SEA_PICKLE) - ->writeBool(BlockStateNames::DEAD_BIT, !$block->isUnderwater()) - ->writeInt(BlockStateNames::CLUSTER_COUNT, $block->getCount() - 1); + ->writeBool(StateNames::DEAD_BIT, !$block->isUnderwater()) + ->writeInt(StateNames::CLUSTER_COUNT, $block->getCount() - 1); }); - $this->map(VanillaBlocks::SHULKER_BOX(), fn() => new Writer(Ids::UNDYED_SHULKER_BOX)); - $this->map(VanillaBlocks::SLIME(), fn() => new Writer(Ids::SLIME)); - $this->map(VanillaBlocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); - $this->map(VanillaBlocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); - $this->map(VanillaBlocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); - $this->map(VanillaBlocks::SMOOTH_QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_QUARTZ_STAIRS))); - $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); - $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE)); - $this->map(VanillaBlocks::SMOOTH_RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_RED_SANDSTONE_STAIRS))); - $this->map(VanillaBlocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); - $this->map(VanillaBlocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); - $this->map(VanillaBlocks::SMOOTH_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_SANDSTONE_STAIRS))); - $this->map(VanillaBlocks::SMOOTH_STONE(), fn() => new Writer(Ids::SMOOTH_STONE)); - $this->map(VanillaBlocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); - $this->map(VanillaBlocks::SNOW(), fn() => new Writer(Ids::SNOW)); - $this->map(VanillaBlocks::SNOW_LAYER(), function(SnowLayer $block) : Writer{ + $this->map(Blocks::SHULKER_BOX(), fn() => new Writer(Ids::UNDYED_SHULKER_BOX)); + $this->map(Blocks::SLIME(), fn() => new Writer(Ids::SLIME)); + $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); + $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); + $this->map(Blocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); + $this->map(Blocks::SMOOTH_QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_QUARTZ_STAIRS))); + $this->map(Blocks::SMOOTH_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); + $this->map(Blocks::SMOOTH_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE)); + $this->map(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_RED_SANDSTONE_STAIRS))); + $this->map(Blocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); + $this->map(Blocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); + $this->map(Blocks::SMOOTH_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_SANDSTONE_STAIRS))); + $this->map(Blocks::SMOOTH_STONE(), fn() => new Writer(Ids::SMOOTH_STONE)); + $this->map(Blocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); + $this->map(Blocks::SNOW(), fn() => new Writer(Ids::SNOW)); + $this->map(Blocks::SNOW_LAYER(), function(SnowLayer $block) : Writer{ return Writer::create(Ids::SNOW_LAYER) - ->writeBool(BlockStateNames::COVERED_BIT, false) - ->writeInt(BlockStateNames::HEIGHT, $block->getLayers() - 1); + ->writeBool(StateNames::COVERED_BIT, false) + ->writeInt(StateNames::HEIGHT, $block->getLayers() - 1); }); - $this->map(VanillaBlocks::SOUL_SAND(), fn() => new Writer(Ids::SOUL_SAND)); - $this->map(VanillaBlocks::SPONGE(), function(Sponge $block) : Writer{ + $this->map(Blocks::SOUL_SAND(), fn() => new Writer(Ids::SOUL_SAND)); + $this->map(Blocks::SPONGE(), function(Sponge $block) : Writer{ return Writer::create(Ids::SPONGE) - ->writeString(BlockStateNames::SPONGE_TYPE, $block->isWet() ? StringValues::SPONGE_TYPE_WET : StringValues::SPONGE_TYPE_DRY); + ->writeString(StateNames::SPONGE_TYPE, $block->isWet() ? StringValues::SPONGE_TYPE_WET : StringValues::SPONGE_TYPE_DRY); }); - $this->map(VanillaBlocks::SPRUCE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::SPRUCE_BUTTON))); - $this->map(VanillaBlocks::SPRUCE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::SPRUCE_DOOR))); - $this->map(VanillaBlocks::SPRUCE_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); - $this->map(VanillaBlocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(BlockStateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); - $this->map(VanillaBlocks::SPRUCE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::SPRUCE_STANDING_SIGN))); - $this->map(VanillaBlocks::SPRUCE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_SPRUCE)); - $this->map(VanillaBlocks::SPRUCE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::SPRUCE_STAIRS))); - $this->map(VanillaBlocks::SPRUCE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::SPRUCE_TRAPDOOR))); - $this->map(VanillaBlocks::SPRUCE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::SPRUCE_WALL_SIGN))); - $this->map(VanillaBlocks::SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STAINED_CLAY(), function(StainedHardenedClay $block) : Writer{ + $this->map(Blocks::SPRUCE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::SPRUCE_BUTTON))); + $this->map(Blocks::SPRUCE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::SPRUCE_DOOR))); + $this->map(Blocks::SPRUCE_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); + $this->map(Blocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); + $this->map(Blocks::SPRUCE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::SPRUCE_STANDING_SIGN))); + $this->map(Blocks::SPRUCE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::SPRUCE_STAIRS))); + $this->map(Blocks::SPRUCE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::SPRUCE_TRAPDOOR))); + $this->map(Blocks::SPRUCE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::SPRUCE_WALL_SIGN))); + $this->map(Blocks::SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STAINED_CLAY(), function(StainedHardenedClay $block) : Writer{ return Writer::create(Ids::STAINED_HARDENED_CLAY) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::STAINED_GLASS(), function(StainedGlass $block) : Writer{ + $this->map(Blocks::STAINED_GLASS(), function(StainedGlass $block) : Writer{ return Writer::create(Ids::STAINED_GLASS) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::STAINED_GLASS_PANE(), function(StainedGlassPane $block) : Writer{ + $this->map(Blocks::STAINED_GLASS_PANE(), function(StainedGlassPane $block) : Writer{ return Writer::create(Ids::STAINED_GLASS_PANE) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::STAINED_HARDENED_GLASS(), function(StainedHardenedGlass $block) : Writer{ + $this->map(Blocks::STAINED_HARDENED_GLASS(), function(StainedHardenedGlass $block) : Writer{ return Writer::create(Ids::HARD_STAINED_GLASS) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::STAINED_HARDENED_GLASS_PANE(), function(StainedHardenedGlassPane $block) : Writer{ + $this->map(Blocks::STAINED_HARDENED_GLASS_PANE(), function(StainedHardenedGlassPane $block) : Writer{ return Writer::create(Ids::HARD_STAINED_GLASS_PANE) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::STONE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_STONE)); - $this->map(VanillaBlocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); - $this->map(VanillaBlocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); - $this->map(VanillaBlocks::STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_BRICK_STAIRS))); - $this->map(VanillaBlocks::STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_STONE_BRICK)); - $this->map(VanillaBlocks::STONE_BUTTON(), fn(StoneButton $block) => Helper::encodeButton($block, new Writer(Ids::STONE_BUTTON))); - $this->map(VanillaBlocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); - $this->map(VanillaBlocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); - $this->map(VanillaBlocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); - $this->map(VanillaBlocks::STRIPPED_ACACIA_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_ACACIA_LOG) + $this->map(Blocks::STONE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_STONE)); + $this->map(Blocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); + $this->map(Blocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); + $this->map(Blocks::STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_BRICK_STAIRS))); + $this->map(Blocks::STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_STONE_BRICK)); + $this->map(Blocks::STONE_BUTTON(), fn(StoneButton $block) => Helper::encodeButton($block, new Writer(Ids::STONE_BUTTON))); + $this->map(Blocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); + $this->map(Blocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); + $this->map(Blocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); + $this->map(Blocks::STRIPPED_ACACIA_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_ACACIA_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STRIPPED_BIRCH_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_BIRCH_LOG) + $this->map(Blocks::STRIPPED_ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STRIPPED_BIRCH_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_BIRCH_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STRIPPED_DARK_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_DARK_OAK_LOG) + $this->map(Blocks::STRIPPED_BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STRIPPED_DARK_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_DARK_OAK_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STRIPPED_JUNGLE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_JUNGLE_LOG) + $this->map(Blocks::STRIPPED_DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STRIPPED_JUNGLE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_JUNGLE_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STRIPPED_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_OAK_LOG) + $this->map(Blocks::STRIPPED_JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STRIPPED_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_OAK_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::STRIPPED_SPRUCE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_SPRUCE_LOG) + $this->map(Blocks::STRIPPED_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::STRIPPED_SPRUCE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_SPRUCE_LOG) ->writePillarAxis($block->getAxis())); - $this->map(VanillaBlocks::STRIPPED_SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(VanillaBlocks::SUGARCANE(), function(Sugarcane $block) : Writer{ + $this->map(Blocks::STRIPPED_SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::SUGARCANE(), function(Sugarcane $block) : Writer{ return Writer::create(Ids::REEDS) - ->writeInt(BlockStateNames::AGE, $block->getAge()); + ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(VanillaBlocks::SUNFLOWER(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(VanillaBlocks::SWEET_BERRY_BUSH(), function(SweetBerryBush $block) : Writer{ + $this->map(Blocks::SUNFLOWER(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::SWEET_BERRY_BUSH(), function(SweetBerryBush $block) : Writer{ return Writer::create(Ids::SWEET_BERRY_BUSH) - ->writeInt(BlockStateNames::GROWTH, $block->getAge()); + ->writeInt(StateNames::GROWTH, $block->getAge()); }); - $this->map(VanillaBlocks::TALL_GRASS(), fn() => Writer::create(Ids::TALLGRASS) - ->writeString(BlockStateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_TALL)); - $this->map(VanillaBlocks::TNT(), function(TNT $block) : Writer{ + $this->map(Blocks::TALL_GRASS(), fn() => Writer::create(Ids::TALLGRASS) + ->writeString(StateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_TALL)); + $this->map(Blocks::TNT(), function(TNT $block) : Writer{ return Writer::create(Ids::TNT) - ->writeBool(BlockStateNames::ALLOW_UNDERWATER_BIT, $block->worksUnderwater()) - ->writeBool(BlockStateNames::EXPLODE_BIT, $block->isUnstable()); + ->writeBool(StateNames::ALLOW_UNDERWATER_BIT, $block->worksUnderwater()) + ->writeBool(StateNames::EXPLODE_BIT, $block->isUnstable()); }); - $this->map(VanillaBlocks::TORCH(), function(Torch $block) : Writer{ + $this->map(Blocks::TORCH(), function(Torch $block) : Writer{ return Writer::create(Ids::TORCH) ->writeTorchFacing($block->getFacing()); }); - $this->map(VanillaBlocks::TRAPPED_CHEST(), function(TrappedChest $block) : Writer{ + $this->map(Blocks::TRAPPED_CHEST(), function(TrappedChest $block) : Writer{ return Writer::create(Ids::TRAPPED_CHEST) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::TRIPWIRE(), function(Tripwire $block) : Writer{ + $this->map(Blocks::TRIPWIRE(), function(Tripwire $block) : Writer{ return Writer::create(Ids::TRIPWIRE) - ->writeBool(BlockStateNames::ATTACHED_BIT, $block->isConnected()) - ->writeBool(BlockStateNames::DISARMED_BIT, $block->isDisarmed()) - ->writeBool(BlockStateNames::POWERED_BIT, $block->isTriggered()) - ->writeBool(BlockStateNames::SUSPENDED_BIT, $block->isSuspended()); + ->writeBool(StateNames::ATTACHED_BIT, $block->isConnected()) + ->writeBool(StateNames::DISARMED_BIT, $block->isDisarmed()) + ->writeBool(StateNames::POWERED_BIT, $block->isTriggered()) + ->writeBool(StateNames::SUSPENDED_BIT, $block->isSuspended()); }); - $this->map(VanillaBlocks::TRIPWIRE_HOOK(), function(TripwireHook $block) : Writer{ + $this->map(Blocks::TRIPWIRE_HOOK(), function(TripwireHook $block) : Writer{ return Writer::create(Ids::TRIPWIRE_HOOK) - ->writeBool(BlockStateNames::ATTACHED_BIT, $block->isConnected()) - ->writeBool(BlockStateNames::POWERED_BIT, $block->isPowered()) + ->writeBool(StateNames::ATTACHED_BIT, $block->isConnected()) + ->writeBool(StateNames::POWERED_BIT, $block->isPowered()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ + $this->map(Blocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ return Writer::create(Ids::UNDERWATER_TORCH) ->writeTorchFacing($block->getFacing()); }); - $this->map(VanillaBlocks::VINES(), function(Vine $block) : Writer{ + $this->map(Blocks::VINES(), function(Vine $block) : Writer{ return Writer::create(Ids::VINE) - ->writeInt(BlockStateNames::VINE_DIRECTION_BITS, ($block->hasFace(Facing::NORTH) ? BlockLegacyMetadata::VINE_FLAG_NORTH : 0) | ($block->hasFace(Facing::SOUTH) ? BlockLegacyMetadata::VINE_FLAG_SOUTH : 0) | ($block->hasFace(Facing::WEST) ? BlockLegacyMetadata::VINE_FLAG_WEST : 0) | ($block->hasFace(Facing::EAST) ? BlockLegacyMetadata::VINE_FLAG_EAST : 0)); + ->writeInt(StateNames::VINE_DIRECTION_BITS, ($block->hasFace(Facing::NORTH) ? BlockLegacyMetadata::VINE_FLAG_NORTH : 0) | ($block->hasFace(Facing::SOUTH) ? BlockLegacyMetadata::VINE_FLAG_SOUTH : 0) | ($block->hasFace(Facing::WEST) ? BlockLegacyMetadata::VINE_FLAG_WEST : 0) | ($block->hasFace(Facing::EAST) ? BlockLegacyMetadata::VINE_FLAG_EAST : 0)); }); - $this->map(VanillaBlocks::WALL_BANNER(), function(WallBanner $block) : Writer{ + $this->map(Blocks::WALL_BANNER(), function(WallBanner $block) : Writer{ return Writer::create(Ids::WALL_BANNER) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(VanillaBlocks::WALL_CORAL_FAN(), function(WallCoralFan $block) : Writer{ + $this->map(Blocks::WALL_CORAL_FAN(), function(WallCoralFan $block) : Writer{ $coralType = $block->getCoralType(); return Writer::create(match($coralType->id()){ CoralType::TUBE()->id(), CoralType::BRAIN()->id() => Ids::CORAL_FAN_HANG, @@ -1068,26 +1069,26 @@ final class BlockStateSerializer{ CoralType::HORN()->id() => Ids::CORAL_FAN_HANG3, default => throw new BlockStateSerializeException("Invalid Coral type " . $coralType->name()), }) - ->writeBool(BlockStateNames::CORAL_HANG_TYPE_BIT, $coralType->equals(CoralType::BRAIN()) || $coralType->equals(CoralType::FIRE())) - ->writeBool(BlockStateNames::DEAD_BIT, $block->isDead()) + ->writeBool(StateNames::CORAL_HANG_TYPE_BIT, $coralType->equals(CoralType::BRAIN()) || $coralType->equals(CoralType::FIRE())) + ->writeBool(StateNames::DEAD_BIT, $block->isDead()) ->writeCoralFacing($block->getFacing()); }); - $this->map(VanillaBlocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); - $this->map(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ + $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); + $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) - ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(VanillaBlocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), function(WeightedPressurePlateLight $block) : Writer{ + $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), function(WeightedPressurePlateLight $block) : Writer{ return Writer::create(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE) - ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(VanillaBlocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); - $this->map(VanillaBlocks::WHITE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::WHITE_GLAZED_TERRACOTTA))); - $this->map(VanillaBlocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); - $this->map(VanillaBlocks::WOOL(), function(Wool $block) : Writer{ + $this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); + $this->map(Blocks::WHITE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::WHITE_GLAZED_TERRACOTTA))); + $this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); + $this->map(Blocks::WOOL(), function(Wool $block) : Writer{ return Writer::create(Ids::WOOL) ->writeColor($block->getColor()); }); - $this->map(VanillaBlocks::YELLOW_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::YELLOW_GLAZED_TERRACOTTA))); + $this->map(Blocks::YELLOW_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::YELLOW_GLAZED_TERRACOTTA))); } } From 8f5813b003bbf7c1b586231cddcdcaacca17f304 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Feb 2022 17:21:32 +0000 Subject: [PATCH 037/692] Move PM core-specific serializer/deserializer stuff to data/bedrock/blockstate/convert --- .../{ => convert}/BlockStateDeserializer.php | 8 +++++--- .../{ => convert}/BlockStateDeserializerHelper.php | 5 ++++- .../blockstate/{ => convert}/BlockStateReader.php | 5 ++++- .../{ => convert}/BlockStateSerializer.php | 14 ++++++++------ .../{ => convert}/BlockStateSerializerHelper.php | 5 ++++- .../blockstate/{ => convert}/BlockStateWriter.php | 5 ++++- 6 files changed, 29 insertions(+), 13 deletions(-) rename src/data/bedrock/blockstate/{ => convert}/BlockStateDeserializer.php (99%) rename src/data/bedrock/blockstate/{ => convert}/BlockStateDeserializerHelper.php (98%) rename src/data/bedrock/blockstate/{ => convert}/BlockStateReader.php (97%) rename src/data/bedrock/blockstate/{ => convert}/BlockStateSerializer.php (99%) rename src/data/bedrock/blockstate/{ => convert}/BlockStateSerializerHelper.php (98%) rename src/data/bedrock/blockstate/{ => convert}/BlockStateWriter.php (97%) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php similarity index 99% rename from src/data/bedrock/blockstate/BlockStateDeserializer.php rename to src/data/bedrock/blockstate/convert/BlockStateDeserializer.php index 69972564f..48371902a 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; @@ -32,9 +32,11 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\blockstate\convert\BlockStateDeserializerHelper as Helper; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; -use pocketmine\data\bedrock\blockstate\BlockStateReader as Reader; +use pocketmine\data\bedrock\blockstate\convert\BlockStateReader as Reader; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; diff --git a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php similarity index 98% rename from src/data/bedrock/blockstate/BlockStateDeserializerHelper.php rename to src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php index 225df7c2b..0453bc396 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\Block; use pocketmine\block\BlockLegacyMetadata; @@ -47,7 +47,10 @@ use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; use pocketmine\block\WeightedPressurePlate; +use pocketmine\data\bedrock\blockstate\BlockStateNames; +use pocketmine\data\bedrock\blockstate\convert\BlockStateReader; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/data/bedrock/blockstate/BlockStateReader.php b/src/data/bedrock/blockstate/convert/BlockStateReader.php similarity index 97% rename from src/data/bedrock/blockstate/BlockStateReader.php rename to src/data/bedrock/blockstate/convert/BlockStateReader.php index 992a34b82..10b676565 100644 --- a/src/data/bedrock/blockstate/BlockStateReader.php +++ b/src/data/bedrock/blockstate/convert/BlockStateReader.php @@ -21,13 +21,16 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateNames; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockStateSerializer.php similarity index 99% rename from src/data/bedrock/blockstate/BlockStateSerializer.php rename to src/data/bedrock/blockstate/convert/BlockStateSerializer.php index 2f2037bc9..c1048803f 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\ActivatorRail; use pocketmine\block\Anvil; @@ -137,10 +137,12 @@ use pocketmine\block\WoodenPressurePlate; use pocketmine\block\WoodenStairs; use pocketmine\block\WoodenTrapdoor; use pocketmine\block\Wool; +use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; -use pocketmine\data\bedrock\blockstate\BlockStateSerializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializerHelper as Helper; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; -use pocketmine\data\bedrock\blockstate\BlockStateWriter as Writer; +use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter as Writer; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -873,15 +875,15 @@ final class BlockStateSerializer{ ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); $this->map(Blocks::REDSTONE(), fn() => new Writer(Ids::REDSTONE_BLOCK)); - $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : BlockStateWriter{ - return BlockStateWriter::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) + $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : Writer{ + return Writer::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) ->writeBool(StateNames::OUTPUT_LIT_BIT, $block->isPowered()) ->writeBool(StateNames::OUTPUT_SUBTRACT_BIT, $block->isSubtractMode()) ->writeLegacyHorizontalFacing($block->getFacing()); }); $this->map(Blocks::REDSTONE_LAMP(), fn(RedstoneLamp $block) => new Writer($block->isPowered() ? Ids::LIT_REDSTONE_LAMP : Ids::REDSTONE_LAMP)); $this->map(Blocks::REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_REDSTONE_ORE : Ids::REDSTONE_ORE)); - $this->map(Blocks::REDSTONE_REPEATER(), function(RedstoneRepeater $block) : BlockStateWriter{ + $this->map(Blocks::REDSTONE_REPEATER(), function(RedstoneRepeater $block) : Writer{ return Writer::create($block->isPowered() ? Ids::POWERED_REPEATER : Ids::UNPOWERED_REPEATER) ->writeLegacyHorizontalFacing($block->getFacing()) ->writeInt(StateNames::REPEATER_DELAY, $block->getDelay() - 1); diff --git a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php similarity index 98% rename from src/data/bedrock/blockstate/BlockStateSerializerHelper.php rename to src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php index 81d6bedbb..27bd2b3f6 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\Button; use pocketmine\block\ChemistryTable; @@ -47,6 +47,9 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\Wall; use pocketmine\block\WallSign; use pocketmine\block\Wood; +use pocketmine\data\bedrock\blockstate\BlockStateNames; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues; +use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; diff --git a/src/data/bedrock/blockstate/BlockStateWriter.php b/src/data/bedrock/blockstate/convert/BlockStateWriter.php similarity index 97% rename from src/data/bedrock/blockstate/BlockStateWriter.php rename to src/data/bedrock/blockstate/convert/BlockStateWriter.php index a3db88c33..c94919413 100644 --- a/src/data/bedrock/blockstate/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/convert/BlockStateWriter.php @@ -21,14 +21,17 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\blockstate\convert; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\TreeType; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateNames; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\CompoundTag; From d55eed803df01a6c9e881ead3449357f8de9dec4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 5 Feb 2022 21:12:11 +0000 Subject: [PATCH 038/692] make build green --- .../bedrock/blockstate/convert/BlockStateDeserializer.php | 4 ++-- .../blockstate/convert/BlockStateDeserializerHelper.php | 5 ++--- src/data/bedrock/blockstate/convert/BlockStateReader.php | 2 +- src/data/bedrock/blockstate/convert/BlockStateSerializer.php | 4 ++-- .../blockstate/convert/BlockStateSerializerHelper.php | 1 - src/data/bedrock/blockstate/convert/BlockStateWriter.php | 2 +- src/network/mcpe/convert/RuntimeBlockMapping.php | 2 +- 7 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php index 48371902a..3fb4c476b 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php @@ -34,11 +34,11 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\convert\BlockStateDeserializerHelper as Helper; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; -use pocketmine\data\bedrock\blockstate\convert\BlockStateReader as Reader; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; +use pocketmine\data\bedrock\blockstate\convert\BlockStateDeserializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\convert\BlockStateReader as Reader; use pocketmine\math\Axis; use pocketmine\math\Facing; use function array_key_exists; diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php index 0453bc396..52760d47c 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php @@ -47,10 +47,9 @@ use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; use pocketmine\block\WeightedPressurePlate; -use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\convert\BlockStateReader; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\blockstate\BlockStateNames; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/data/bedrock/blockstate/convert/BlockStateReader.php b/src/data/bedrock/blockstate/convert/BlockStateReader.php index 10b676565..5ced88381 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateReader.php +++ b/src/data/bedrock/blockstate/convert/BlockStateReader.php @@ -28,9 +28,9 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; use pocketmine\data\bedrock\blockstate\BlockStateNames; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockStateSerializer.php index c1048803f..31c2b232a 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializer.php @@ -140,10 +140,10 @@ use pocketmine\block\Wool; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; -use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializerHelper as Helper; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; -use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter as Writer; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; +use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializerHelper as Helper; +use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter as Writer; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php index 27bd2b3f6..91e4cba86 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php @@ -49,7 +49,6 @@ use pocketmine\block\WallSign; use pocketmine\block\Wood; use pocketmine\data\bedrock\blockstate\BlockStateNames; use pocketmine\data\bedrock\blockstate\BlockStateStringValues; -use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; diff --git a/src/data/bedrock/blockstate/convert/BlockStateWriter.php b/src/data/bedrock/blockstate/convert/BlockStateWriter.php index c94919413..d05c5f6c4 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/convert/BlockStateWriter.php @@ -30,8 +30,8 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\utils\TreeType; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\CompoundTag; diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 41a2cd5b7..49a74e480 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -27,8 +27,8 @@ use pocketmine\block\BlockFactory; use pocketmine\block\UnknownBlock; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; -use pocketmine\data\bedrock\blockstate\BlockStateSerializer; use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializer; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; From 1b48603d07433065c3852db47755a016d051e98b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 02:41:50 +0000 Subject: [PATCH 039/692] another vague commit restructuring stuff --- .../blockstate/BlockStateDeserializer.php | 40 +++++++++++++++ .../blockstate/BlockStateSerializer.php | 40 +++++++++++++++ .../CachingBlockStateDeserializer.php | 49 +++++++++++++++++++ .../CachingBlockStateSerializer.php | 43 ++++++++++++++++ .../UpgradingBlockStateDeserializer.php | 40 +++++++++++++++ ... => BlockObjectToBlockStateSerializer.php} | 11 ++++- ...> BlockStateToBlockObjectDeserializer.php} | 15 ++++-- ...DataMap.php => LegacyBlockStateMapper.php} | 28 ++++++++--- 8 files changed, 254 insertions(+), 12 deletions(-) create mode 100644 src/data/bedrock/blockstate/BlockStateDeserializer.php create mode 100644 src/data/bedrock/blockstate/BlockStateSerializer.php create mode 100644 src/data/bedrock/blockstate/CachingBlockStateDeserializer.php create mode 100644 src/data/bedrock/blockstate/CachingBlockStateSerializer.php create mode 100644 src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php rename src/data/bedrock/blockstate/convert/{BlockStateSerializer.php => BlockObjectToBlockStateSerializer.php} (99%) rename src/data/bedrock/blockstate/convert/{BlockStateDeserializer.php => BlockStateToBlockObjectDeserializer.php} (99%) rename src/data/bedrock/blockstate/upgrade/{LegacyIdMetaToBlockStateDataMap.php => LegacyBlockStateMapper.php} (65%) diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php new file mode 100644 index 000000000..180480bb1 --- /dev/null +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -0,0 +1,40 @@ + + */ + private array $simpleCache = []; + + public function __construct( + private BlockStateDeserializer $realDeserializer + ){} + + public function deserialize(BlockStateData $stateData) : int{ + if($stateData->getStates()->count() === 0){ + //if a block has zero properties, we can keep a map of string ID -> internal blockstate ID + return $this->simpleCache[$stateData->getName()] ??= $this->realDeserializer->deserialize($stateData); + } + + //we can't cache blocks that have properties - go ahead and deserialize the slow way + return $this->realDeserializer->deserialize($stateData); + } + + public function getRealDeserializer() : BlockStateDeserializer{ return $this->realDeserializer; } +} diff --git a/src/data/bedrock/blockstate/CachingBlockStateSerializer.php b/src/data/bedrock/blockstate/CachingBlockStateSerializer.php new file mode 100644 index 000000000..eb4cc13de --- /dev/null +++ b/src/data/bedrock/blockstate/CachingBlockStateSerializer.php @@ -0,0 +1,43 @@ + + */ + private array $cache = []; + + public function __construct( + private BlockStateSerializer $realSerializer + ){} + + public function serialize(int $stateId) : BlockStateData{ + return $this->cache[$stateId] ??= $this->realSerializer->serialize($stateId); + } + + public function getRealSerializer() : BlockStateSerializer{ return $this->realSerializer; } +} diff --git a/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php b/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php new file mode 100644 index 000000000..cd1c114df --- /dev/null +++ b/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php @@ -0,0 +1,40 @@ +realDeserializer->deserialize($this->blockStateUpgrader->upgrade($stateData)); + } + + public function getRealDeserializer() : BlockStateDeserializer{ return $this->realDeserializer; } +} diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php similarity index 99% rename from src/data/bedrock/blockstate/convert/BlockStateSerializer.php rename to src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index 31c2b232a..cfd0e3e0f 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -32,6 +32,7 @@ use pocketmine\block\Bed; use pocketmine\block\Beetroot; use pocketmine\block\Bell; use pocketmine\block\Block; +use pocketmine\block\BlockFactory; use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\BoneBlock; use pocketmine\block\BrewingStand; @@ -140,6 +141,7 @@ use pocketmine\block\Wool; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\blockstate\BlockStateSerializer; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializerHelper as Helper; @@ -150,7 +152,7 @@ use pocketmine\utils\AssumptionFailedError; use function class_parents; use function get_class; -final class BlockStateSerializer{ +final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ /** * These callables actually accept Block, but for the sake of type completeness, it has to be never, since we can't * describe the bottom type of a type hierarchy only containing Block. @@ -164,6 +166,11 @@ final class BlockStateSerializer{ $this->registerSerializers(); } + public function serialize(int $stateId) : BlockStateData{ + //TODO: singleton usage not ideal + return $this->serializeBlock(BlockFactory::getInstance()->fromFullBlock($stateId)); + } + /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $block @@ -181,7 +188,7 @@ final class BlockStateSerializer{ * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $blockState */ - public function serialize(Block $blockState) : BlockStateData{ + public function serializeBlock(Block $blockState) : BlockStateData{ $typeId = $blockState->getTypeId(); $locatedSerializer = $this->serializers[$typeId][get_class($blockState)] ?? null; diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php similarity index 99% rename from src/data/bedrock/blockstate/convert/BlockStateDeserializer.php rename to src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 3fb4c476b..77323213b 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -34,6 +34,7 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializer; use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; @@ -44,7 +45,7 @@ use pocketmine\math\Facing; use function array_key_exists; use function min; -final class BlockStateDeserializer{ +final class BlockStateToBlockObjectDeserializer implements BlockStateDeserializer{ /** * @var \Closure[] @@ -52,6 +53,14 @@ final class BlockStateDeserializer{ */ private array $deserializeFuncs = []; + public function __construct(){ + $this->registerDeserializers(); + } + + public function deserialize(BlockStateData $stateData) : int{ + return $this->deserializeBlock($stateData)->getFullId(); + } + /** @phpstan-param \Closure(Reader) : Block $c */ private function map(string $id, \Closure $c) : void{ if(array_key_exists($id, $this->deserializeFuncs)){ @@ -60,7 +69,7 @@ final class BlockStateDeserializer{ $this->deserializeFuncs[$id] = $c; } - public function __construct(){ + private function registerDeserializers() : void{ $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); $this->map(Ids::ACACIA_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::ACACIA_FENCE_GATE(), $in)); @@ -2502,7 +2511,7 @@ final class BlockStateDeserializer{ } /** @throws BlockStateDeserializeException */ - public function deserialize(BlockStateData $blockStateData) : Block{ + public function deserializeBlock(BlockStateData $blockStateData) : Block{ $id = $blockStateData->getName(); if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); diff --git a/src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php similarity index 65% rename from src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php rename to src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php index 3ecf18a17..1a8e7186a 100644 --- a/src/data/bedrock/blockstate/upgrade/LegacyIdMetaToBlockStateDataMap.php +++ b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php @@ -24,27 +24,41 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate\upgrade; use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; +use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\BinaryStream; +use pocketmine\utils\SingletonTrait; +use Webmozart\PathUtil\Path; +use function file_get_contents; +use const pocketmine\BEDROCK_DATA_PATH; /** - * Interface to an upgrade schema describing how to convert 1.12 id+meta into modern blockstate NBT. + * Handles translating legacy 1.12 block ID/meta into modern blockstates. */ -final class LegacyIdMetaToBlockStateDataMap{ - +final class LegacyBlockStateMapper{ /** * @param BlockStateData[][] $mappingTable * @phpstan-param array> $mappingTable */ public function __construct( - private array $mappingTable + private array $mappingTable, + private LegacyBlockIdToStringIdMap $legacyNumericIdMap ){} - public function getDataFromLegacyIdMeta(string $id, int $meta) : ?BlockStateData{ + public function fromStringIdMeta(string $id, int $meta) : ?BlockStateData{ return $this->mappingTable[$id][$meta] ?? null; } - public static function loadFromString(string $data) : self{ + public function fromIntIdMeta(int $id, int $meta) : ?BlockStateData{ + $stringId = $this->legacyNumericIdMap->legacyToString($id); + if($stringId === null){ + return null; + } + return $this->fromStringIdMeta($stringId, $meta); + } + + public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap) : self{ $mappingTable = []; $legacyStateMapReader = new BinaryStream($data); @@ -59,6 +73,6 @@ final class LegacyIdMetaToBlockStateDataMap{ $mappingTable[$id][$meta] = BlockStateData::fromNbt($state); } - return new self($mappingTable); + return new self($mappingTable, $idMap); } } From 9e0313686140ae5cd4f71184720e21689dbd0d6e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 02:43:57 +0000 Subject: [PATCH 040/692] fix CS --- .../bedrock/blockstate/upgrade/LegacyBlockStateMapper.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php index 1a8e7186a..c2b2517d5 100644 --- a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php @@ -25,13 +25,8 @@ namespace pocketmine\data\bedrock\blockstate\upgrade; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; -use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\BinaryStream; -use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; -use function file_get_contents; -use const pocketmine\BEDROCK_DATA_PATH; /** * Handles translating legacy 1.12 block ID/meta into modern blockstates. From f870568e62e04d16ed24e1a27348104892042a32 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 02:46:50 +0000 Subject: [PATCH 041/692] fix RuntimeBlockMapping --- .../mcpe/convert/RuntimeBlockMapping.php | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 49a74e480..195d248a0 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -28,6 +28,8 @@ use pocketmine\block\UnknownBlock; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\data\bedrock\blockstate\CachingBlockStateSerializer; +use pocketmine\data\bedrock\blockstate\convert\BlockObjectToBlockStateSerializer; use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializer; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; @@ -56,7 +58,7 @@ final class RuntimeBlockMapping{ private function __construct(){ $contents = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")), "Missing required resource file"); $this->blockStateDictionary = BlockStateDictionary::loadFromString($contents); - $this->blockStateSerializer = new BlockStateSerializer(); + $this->blockStateSerializer = new CachingBlockStateSerializer(new BlockObjectToBlockStateSerializer()); $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); } @@ -66,16 +68,12 @@ final class RuntimeBlockMapping{ return $this->networkIdCache[$internalStateId]; } - //TODO: singleton usage not ideal - $block = BlockFactory::getInstance()->fromFullBlock($internalStateId); - if($block instanceof UnknownBlock){ - $blockStateData = $this->fallbackStateData; - }else{ - try{ - $blockStateData = $this->blockStateSerializer->serialize($block); - }catch(BlockStateSerializeException $e){ - throw new AssumptionFailedError("Invalid serializer for block $block", 0, $e); - } + try{ + $blockStateData = $this->blockStateSerializer->serialize($internalStateId); + }catch(BlockStateSerializeException){ + //TODO: this will swallow any error caused by invalid block properties; this is not ideal, but it should be + //covered by unit tests, so this is probably a safe assumption. + $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); } $networkId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); From 863f9560b0e84f59f3520513c03992536a55adf4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 02:49:19 +0000 Subject: [PATCH 042/692] RuntimeBlockMapping: make fallbackStateData not useless --- src/network/mcpe/convert/RuntimeBlockMapping.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 195d248a0..23c1e8587 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -73,7 +73,7 @@ final class RuntimeBlockMapping{ }catch(BlockStateSerializeException){ //TODO: this will swallow any error caused by invalid block properties; this is not ideal, but it should be //covered by unit tests, so this is probably a safe assumption. - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + $blockStateData = $this->fallbackStateData; } $networkId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); From dd3b79b142cbec34237fd0e554914c670c95053c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 02:50:43 +0000 Subject: [PATCH 043/692] phpstorm sucks --- src/network/mcpe/convert/RuntimeBlockMapping.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 23c1e8587..10f8f30b3 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -23,14 +23,12 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\block\BlockFactory; -use pocketmine\block\UnknownBlock; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\blockstate\BlockStateSerializer; use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\data\bedrock\blockstate\CachingBlockStateSerializer; use pocketmine\data\bedrock\blockstate\convert\BlockObjectToBlockStateSerializer; -use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializer; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; From e58b3ba46cc9d03ae0bfb55c621e351f06017d08 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 03:04:29 +0000 Subject: [PATCH 044/692] First look at loading 1.13+ worlds --- composer.json | 2 +- composer.lock | 38 ++-- .../upgrade/BlockStateUpgradeSchemaUtils.php | 13 +- .../blockstate/upgrade/BlockStateUpgrader.php | 10 + .../mcpe/convert/RuntimeBlockMapping.php | 5 +- src/world/format/io/BaseWorldProvider.php | 42 ++++ .../format/io/GlobalBlockStateHandlers.php | 79 ++++++++ src/world/format/io/leveldb/LevelDB.php | 189 ++++++++++++++---- src/world/format/io/region/Anvil.php | 3 +- src/world/format/io/region/McRegion.php | 3 +- src/world/format/io/region/PMAnvil.php | 3 +- .../upgrade/BlockStateUpgraderTest.php | 2 +- 12 files changed, 321 insertions(+), 68 deletions(-) create mode 100644 src/world/format/io/GlobalBlockStateHandlers.php diff --git a/composer.json b/composer.json index d36d57b93..bafe720e6 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,7 @@ "adhocore/json-comment": "^1.1", "fgrosse/phpasn1": "^2.3", "netresearch/jsonmapper": "^4.0", - "pocketmine/bedrock-data": "~1.5.0+bedrock-1.18.0", + "pocketmine/bedrock-data": "dev-experimental/upgrade-tables", "pocketmine/bedrock-protocol": "~7.3.0+bedrock-1.18.0", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", diff --git a/composer.lock b/composer.lock index eed889375..42f1857a5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9aa2f11ba68d00423732973554fafb20", + "content-hash": "6723715c08c1582240f1c219df330f96", "packages": [ { "name": "adhocore/json-comment", @@ -249,16 +249,16 @@ }, { "name": "pocketmine/bedrock-data", - "version": "1.5.0+bedrock-1.18.0", + "version": "dev-experimental/upgrade-tables", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "482c679aa5ed0b81c088c2b1ff0b8110a94c8a6c" + "reference": "747359be18b433659556c5adb527e47b0b150fdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/482c679aa5ed0b81c088c2b1ff0b8110a94c8a6c", - "reference": "482c679aa5ed0b81c088c2b1ff0b8110a94c8a6c", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/747359be18b433659556c5adb527e47b0b150fdd", + "reference": "747359be18b433659556c5adb527e47b0b150fdd", "shasum": "" }, "type": "library", @@ -269,9 +269,9 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.18.0" + "source": "https://github.com/pmmp/BedrockData/tree/experimental/upgrade-tables" }, - "time": "2021-11-30T18:30:46+00:00" + "time": "2022-02-05T16:34:56+00:00" }, { "name": "pocketmine/bedrock-protocol", @@ -1136,12 +1136,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1219,12 +1219,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1474,12 +1474,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3507,7 +3507,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "pocketmine/bedrock-data": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index ce8b7534e..425fe0545 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -180,13 +180,13 @@ final class BlockStateUpgradeSchemaUtils{ * * @return BlockStateUpgradeSchema[] */ - public static function loadSchemas(string $path) : array{ + public static function loadSchemas(string $path, int $currentVersion) : array{ $iterator = new \RegexIterator( new \FilesystemIterator( $path, \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS ), - '/\/mapping_schema_(\d{4}).*\.json$/', + '/\/(\d{4}).*\.json$/', \RegexIterator::GET_MATCH ); @@ -209,7 +209,14 @@ final class BlockStateUpgradeSchemaUtils{ } $model = $jsonMapper->map($json, new BlockStateUpgradeSchemaModel()); - $result[$priority] = self::fromJsonModel($model); + $schema = self::fromJsonModel($model); + if($schema->getVersionId() > $currentVersion){ + //this might be a beta schema which shouldn't be applicable + //TODO: why do we load the whole schema just to throw it away if it's too new? ... + continue; + } + + $result[$priority] = $schema; } ksort($result, SORT_NUMERIC); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index 537700aa9..b24489fcf 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -34,6 +34,16 @@ final class BlockStateUpgrader{ /** @var BlockStateUpgradeSchema[][] */ private array $upgradeSchemas = []; + /** + * @param BlockStateUpgradeSchema[] $upgradeSchemas + * @phpstan-param array $upgradeSchemas + */ + public function __construct(array $upgradeSchemas){ + foreach($upgradeSchemas as $priority => $schema){ + $this->addSchema($schema, $priority); + } + } + public function addSchema(BlockStateUpgradeSchema $schema, int $priority) : void{ if(isset($this->upgradeSchemas[$schema->getVersionId()][$priority])){ throw new \InvalidArgumentException("Another schema already has this priority"); diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 10f8f30b3..efbfdeb75 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -27,12 +27,11 @@ use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\data\bedrock\blockstate\BlockStateSerializer; use pocketmine\data\bedrock\blockstate\BlockTypeNames; -use pocketmine\data\bedrock\blockstate\CachingBlockStateSerializer; -use pocketmine\data\bedrock\blockstate\convert\BlockObjectToBlockStateSerializer; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; +use pocketmine\world\format\io\GlobalBlockStateHandlers; use Webmozart\PathUtil\Path; use function file_get_contents; @@ -56,7 +55,7 @@ final class RuntimeBlockMapping{ private function __construct(){ $contents = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")), "Missing required resource file"); $this->blockStateDictionary = BlockStateDictionary::loadFromString($contents); - $this->blockStateSerializer = new CachingBlockStateSerializer(new BlockObjectToBlockStateSerializer()); + $this->blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); } diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index 6404f641b..269b599ed 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -23,8 +23,12 @@ declare(strict_types=1); namespace pocketmine\world\format\io; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; +use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\WorldException; use function file_exists; @@ -49,6 +53,44 @@ abstract class BaseWorldProvider implements WorldProvider{ */ abstract protected function loadLevelData() : WorldData; + private function translatePalette(PalettedBlockArray $blockArray) : PalettedBlockArray{ + $palette = $blockArray->getPalette(); + + //TODO: this should be dependency-injected so it can be replaced, but that would break BC + //also, we want it to be lazy-loaded ... + $legacyBlockStateMapper = GlobalBlockStateHandlers::getLegacyBlockStateMapper(); + $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); + $newPalette = []; + foreach($palette as $k => $legacyIdMeta){ + $newStateData = $legacyBlockStateMapper->fromIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); + if($newStateData === null){ + //TODO: remember data for unknown states so we can implement them later + $newStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + } + + $newPalette[$k] = $blockStateDeserializer->deserialize($newStateData); + } + + //TODO: this is sub-optimal since it reallocates the offset table multiple times + return PalettedBlockArray::fromData( + $blockArray->getBitsPerBlock(), + $blockArray->getWordArray(), + $newPalette + ); + } + + protected function palettizeLegacySubChunkXZY(string $idArray, string $metaArray) : PalettedBlockArray{ + return $this->translatePalette(SubChunkConverter::convertSubChunkXZY($idArray, $metaArray)); + } + + protected function palettizeLegacySubChunkYZX(string $idArray, string $metaArray) : PalettedBlockArray{ + return $this->translatePalette(SubChunkConverter::convertSubChunkYZX($idArray, $metaArray)); + } + + protected function palettizeLegacySubChunkFromColumn(string $idArray, string $metaArray, int $yOffset) : PalettedBlockArray{ + return $this->translatePalette(SubChunkConverter::convertSubChunkFromLegacyColumn($idArray, $metaArray, $yOffset)); + } + public function getPath() : string{ return $this->path; } diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php new file mode 100644 index 000000000..c041e08fc --- /dev/null +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -0,0 +1,79 @@ + file_get_contents(Path::join(BEDROCK_DATA_PATH, 'r12_to_current_block_map.bin'))), + LegacyBlockIdToStringIdMap::getInstance() + ); + } +} diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 671acb6d9..26329a044 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -26,7 +26,9 @@ namespace pocketmine\world\format\io\leveldb; use pocketmine\block\Block; use pocketmine\block\BlockLegacyIds; use pocketmine\data\bedrock\BiomeIds; -use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; +use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; @@ -44,7 +46,7 @@ use pocketmine\world\format\io\data\BedrockWorldData; use pocketmine\world\format\io\exception\CorruptedChunkException; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; -use pocketmine\world\format\io\SubChunkConverter; +use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\format\io\WorldData; use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\format\PalettedBlockArray; @@ -70,32 +72,46 @@ use const LEVELDB_ZLIB_RAW_COMPRESSION; class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ - //According to Tomasso, these aren't supposed to be readable anymore. Thankfully he didn't change the readable ones... + /** @deprecated */ protected const TAG_DATA_2D = ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES; + /** @deprecated */ protected const TAG_DATA_2D_LEGACY = ChunkDataKey::HEIGHTMAP_AND_2D_BIOME_COLORS; + /** @deprecated */ protected const TAG_SUBCHUNK_PREFIX = ChunkDataKey::SUBCHUNK; + /** @deprecated */ protected const TAG_LEGACY_TERRAIN = ChunkDataKey::LEGACY_TERRAIN; + /** @deprecated */ protected const TAG_BLOCK_ENTITY = ChunkDataKey::BLOCK_ENTITIES; + /** @deprecated */ protected const TAG_ENTITY = ChunkDataKey::ENTITIES; + /** @deprecated */ protected const TAG_PENDING_TICK = ChunkDataKey::PENDING_SCHEDULED_TICKS; + /** @deprecated */ protected const TAG_BLOCK_EXTRA_DATA = ChunkDataKey::LEGACY_BLOCK_EXTRA_DATA; + /** @deprecated */ protected const TAG_BIOME_STATE = ChunkDataKey::BIOME_STATES; + /** @deprecated */ protected const TAG_STATE_FINALISATION = ChunkDataKey::FINALIZATION; + /** @deprecated */ protected const TAG_BORDER_BLOCKS = ChunkDataKey::BORDER_BLOCKS; + /** @deprecated */ protected const TAG_HARDCODED_SPAWNERS = ChunkDataKey::HARDCODED_SPAWNERS; protected const FINALISATION_NEEDS_INSTATICKING = 0; protected const FINALISATION_NEEDS_POPULATION = 1; protected const FINALISATION_DONE = 2; - protected const TAG_VERSION = ChunkDataKey::OLD_VERSION; + /** @deprecated */ + protected const TAG_VERSION = ChunkDataKey::NEW_VERSION; protected const ENTRY_FLAT_WORLD_LAYERS = "game_flatworldlayers"; - protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_2_0; //yes, I know this is wrong, but it ensures vanilla auto-fixes stuff we currently don't + protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_18_0_25_beta; protected const CURRENT_LEVEL_SUBCHUNK_VERSION = SubChunkVersion::PALETTED_MULTI; + private const CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET = 4; + /** @var \LevelDB */ protected $db; @@ -171,18 +187,41 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } $nbt = new LittleEndianNbtSerializer(); $palette = []; - $idMap = LegacyBlockIdToStringIdMap::getInstance(); - for($i = 0, $paletteSize = $stream->getLInt(); $i < $paletteSize; ++$i){ + + $paletteSize = $bitsPerBlock === 0 ? 1 : $stream->getLInt(); + + $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); + for($i = 0; $i < $paletteSize; ++$i){ try{ $offset = $stream->getOffset(); $tag = $nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag(); $stream->setOffset($offset); - $id = $idMap->stringToLegacy($tag->getString("name")) ?? BlockLegacyIds::INFO_UPDATE; - $data = $tag->getShort("val"); - $palette[] = ($id << Block::INTERNAL_METADATA_BITS) | $data; - }catch(NbtException $e){ + if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ + //Legacy (pre-1.13) blockstate - upgrade it to a version we understand + $id = $tag->getString("name"); + $data = $tag->getShort("val"); + + $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromStringIdMeta($id, $data); + if($blockStateData === null){ + //TODO: this might be a slightly-invalid state that isn't in the mapping table + $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + } + }else{ + //Modern (post-1.13) blockstate + $blockStateData = BlockStateData::fromNbt($tag); + } + + try{ + $palette[] = $blockStateDeserializer->deserialize($blockStateData); + }catch(BlockStateDeserializeException){ + //TODO: remember data for unknown states so we can implement them later + //TODO: this is slow; we need to cache this + //TODO: log this + $palette[] = $blockStateDeserializer->deserialize(new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION)); + } + }catch(NbtException | BlockStateDeserializeException $e){ throw new CorruptedChunkException("Invalid blockstate NBT at offset $i in paletted storage: " . $e->getMessage(), 0, $e); } } @@ -215,6 +254,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $extraDataLayers = []; $binaryStream = new BinaryStream($extraRawData); $count = $binaryStream->getLInt(); + + $legacyMapper = GlobalBlockStateHandlers::getLegacyBlockStateMapper(); + $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); for($i = 0; $i < $count; ++$i){ $key = $binaryStream->getLInt(); $value = $binaryStream->getLShort(); @@ -226,23 +268,49 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockId = $value & 0xff; $blockData = ($value >> 8) & 0xf; + $blockStateData = $legacyMapper->fromIntIdMeta($blockId, $blockData); + if($blockStateData === null){ + //TODO: we could preserve this in case it's supported in the future, but this was historically only + //used for grass anyway, so we probably don't need to care + continue; + } + $blockStateId = $blockStateDeserializer->deserialize($blockStateData); + if(!isset($extraDataLayers[$ySub])){ $extraDataLayers[$ySub] = new PalettedBlockArray(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS); } - $extraDataLayers[$ySub]->set($x, $y, $z, ($blockId << Block::INTERNAL_METADATA_BITS) | $blockData); + $extraDataLayers[$ySub]->set($x, $y, $z, $blockStateId); } return $extraDataLayers; } + private function readVersion(int $chunkX, int $chunkZ) : ?int{ + $index = self::chunkIndex($chunkX, $chunkZ); + $chunkVersionRaw = $this->db->get($index . ChunkDataKey::NEW_VERSION); + if($chunkVersionRaw === false){ + $chunkVersionRaw = $this->db->get($index . ChunkDataKey::OLD_VERSION); + if($chunkVersionRaw === false){ + return null; + } + } + + return ord($chunkVersionRaw); + } + + private static function hasOffsetCavesAndCliffsSubChunks(int $chunkVersion) : bool{ + return $chunkVersion >= ChunkVersion::v1_16_220_50_unused && $chunkVersion <= ChunkVersion::v1_16_230_50_unused; + } + /** * @throws CorruptedChunkException */ public function loadChunk(int $chunkX, int $chunkZ) : ?ChunkData{ $index = LevelDB::chunkIndex($chunkX, $chunkZ); - $chunkVersionRaw = $this->db->get($index . ChunkDataKey::OLD_VERSION); - if($chunkVersionRaw === false){ + $chunkVersion = $this->readVersion($chunkX, $chunkZ); + if($chunkVersion === null){ + //TODO: this might be a slightly-corrupted chunk with a missing version field return null; } @@ -252,10 +320,36 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** @var BiomeArray|null $biomeArray */ $biomeArray = null; - $chunkVersion = ord($chunkVersionRaw); $hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION; + $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; + switch($chunkVersion){ + case ChunkVersion::v1_18_0_25_beta: + case ChunkVersion::v1_18_0_24_unused: + case ChunkVersion::v1_18_0_24_beta: + case ChunkVersion::v1_18_0_22_unused: + case ChunkVersion::v1_18_0_22_beta: + case ChunkVersion::v1_18_0_20_unused: + case ChunkVersion::v1_18_0_20_beta: + case ChunkVersion::v1_17_40_unused: + case ChunkVersion::v1_17_40_20_beta_experimental_caves_cliffs: + case ChunkVersion::v1_17_30_25_unused: + case ChunkVersion::v1_17_30_25_beta_experimental_caves_cliffs: + case ChunkVersion::v1_17_30_23_unused: + case ChunkVersion::v1_17_30_23_beta_experimental_caves_cliffs: + case ChunkVersion::v1_16_230_50_unused: + case ChunkVersion::v1_16_230_50_beta_experimental_caves_cliffs: + case ChunkVersion::v1_16_220_50_unused: + case ChunkVersion::v1_16_220_50_beta_experimental_caves_cliffs: + case ChunkVersion::v1_16_210: + case ChunkVersion::v1_16_100_57_beta: + case ChunkVersion::v1_16_100_52_beta: + case ChunkVersion::v1_16_0: + case ChunkVersion::v1_16_0_51_beta: + //TODO: check walls + case ChunkVersion::v1_12_0_unused2: + case ChunkVersion::v1_12_0_unused1: case ChunkVersion::v1_12_0_4_beta: case ChunkVersion::v1_11_1: case ChunkVersion::v1_11_0_4_beta: @@ -266,13 +360,14 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ case ChunkVersion::v1_2_13: case ChunkVersion::v1_2_0: case ChunkVersion::v1_2_0_2_beta: + case ChunkVersion::v1_1_0_converted_from_console: case ChunkVersion::v1_1_0: //TODO: check beds case ChunkVersion::v1_0_0: $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ - if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y))) === false){ + if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y + $subChunkKeyOffset))) === false){ continue; } @@ -305,7 +400,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ throw new CorruptedChunkException($e->getMessage(), 0, $e); } - $storages = [SubChunkConverter::convertSubChunkXZY($blocks, $blockData)]; + $storages = [$this->palettizeLegacySubChunkXZY($blocks, $blockData)]; if(isset($convertedLegacyExtraData[$y])){ $storages[] = $convertedLegacyExtraData[$y]; } @@ -320,8 +415,13 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, $storages); break; case SubChunkVersion::PALETTED_MULTI: + case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: //legacy extradata layers intentionally ignored because they aren't supposed to exist in v8 $storageCount = $binaryStream->getByte(); + if($subChunkVersion >= SubChunkVersion::PALETTED_MULTI_WITH_OFFSET){ + //height ignored; this seems pointless since this is already in the key anyway + $binaryStream->getByte(); + } if($storageCount > 0){ $storages = []; @@ -367,7 +467,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } for($yy = 0; $yy < 8; ++$yy){ - $storages = [SubChunkConverter::convertSubChunkFromLegacyColumn($fullIds, $fullData, $yy)]; + $storages = [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $yy)]; if(isset($convertedLegacyExtraData[$yy])){ $storages[] = $convertedLegacyExtraData[$yy]; } @@ -434,15 +534,40 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void{ - $idMap = LegacyBlockIdToStringIdMap::getInstance(); $index = LevelDB::chunkIndex($chunkX, $chunkZ); $write = new \LevelDBWriteBatch(); - $write->put($index . ChunkDataKey::OLD_VERSION, chr(self::CURRENT_LEVEL_CHUNK_VERSION)); + + $previousVersion = $this->readVersion($chunkX, $chunkZ); + $write->put($index . ChunkDataKey::NEW_VERSION, chr(self::CURRENT_LEVEL_CHUNK_VERSION)); $chunk = $chunkData->getChunk(); + + //TODO: This ensures that negative subchunks don't get destroyed in newer worlds for as long as we don't yet + //support negative height. Since we don't save with a shift, if the old save had the subchunks shifted, we need + //to shift them to their correct positions to avoid destroying data. + //This can be removed once we support the full height. + if($previousVersion !== null && self::hasOffsetCavesAndCliffsSubChunks($previousVersion)){ + $subChunks = $chunk->getSubChunks(); + + for($y = -4; $y <= 20; $y++){ + $key = $index . ChunkDataKey::SUBCHUNK . chr($y + self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET); + if( + (!isset($subChunks[$y]) || !$chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)) && + ($subChunkData = $this->db->get($key)) !== false + ){ + $write->delete($key); + $write->put($index . ChunkDataKey::SUBCHUNK . chr($y & 0xff), $subChunkData); + } + } + } + if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)){ $subChunks = $chunk->getSubChunks(); + + //TODO: this should not rely on globals, but in PM4 we have no other option, and it's not worse than what we + //were doing before anyway ... + $blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); foreach($subChunks as $y => $subChunk){ $key = $index . ChunkDataKey::SUBCHUNK . chr($y); if($subChunk->isEmptyAuthoritative()){ @@ -454,24 +579,16 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $layers = $subChunk->getBlockLayers(); $subStream->putByte(count($layers)); foreach($layers as $blocks){ - if($blocks->getBitsPerBlock() !== 0){ - $subStream->putByte($blocks->getBitsPerBlock() << 1); - $subStream->put($blocks->getWordArray()); - }else{ - //TODO: we use these in-memory, but they aren't supported on disk by the game yet - //polyfill them with a zero'd 1-bpb instead - $subStream->putByte(1 << 1); - $subStream->put(str_repeat("\x00", PalettedBlockArray::getExpectedWordArraySize(1))); - } + $subStream->putByte($blocks->getBitsPerBlock() << 1); + $subStream->put($blocks->getWordArray()); $palette = $blocks->getPalette(); - $subStream->putLInt(count($palette)); + if($blocks->getBitsPerBlock() !== 0){ + $subStream->putLInt(count($palette)); + } $tags = []; foreach($palette as $p){ - $tags[] = new TreeRoot(CompoundTag::create() - ->setString("name", $idMap->legacyToString($p >> Block::INTERNAL_METADATA_BITS) ?? "minecraft:info_update") - ->setInt("oldid", $p >> Block::INTERNAL_METADATA_BITS) //PM only (debugging), vanilla doesn't have this - ->setShort("val", $p & Block::INTERNAL_METADATA_MASK)); + $tags[] = new TreeRoot($blockStateSerializer->serialize($p)->toNbt()); } $subStream->put((new LittleEndianNbtSerializer())->writeMultiple($tags)); @@ -528,7 +645,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ public function getAllChunks(bool $skipCorrupted = false, ?\Logger $logger = null) : \Generator{ foreach($this->db->getIterator() as $key => $_){ - if(strlen($key) === 9 && substr($key, -1) === ChunkDataKey::OLD_VERSION){ + if(strlen($key) === 9 && ($key[8] === ChunkDataKey::NEW_VERSION || $key[8] === ChunkDataKey::OLD_VERSION)){ $chunkX = Binary::readLInt(substr($key, 0, 4)); $chunkZ = Binary::readLInt(substr($key, 4, 4)); try{ @@ -550,7 +667,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ public function calculateChunkCount() : int{ $count = 0; foreach($this->db->getIterator() as $key => $_){ - if(strlen($key) === 9 && substr($key, -1) === ChunkDataKey::OLD_VERSION){ + if(strlen($key) === 9 && ($key[8] === ChunkDataKey::NEW_VERSION || $key[8] === ChunkDataKey::OLD_VERSION)){ $count++; } } diff --git a/src/world/format/io/region/Anvil.php b/src/world/format/io/region/Anvil.php index 12e907d20..df5caedaf 100644 --- a/src/world/format/io/region/Anvil.php +++ b/src/world/format/io/region/Anvil.php @@ -26,14 +26,13 @@ namespace pocketmine\world\format\io\region; use pocketmine\block\Block; use pocketmine\block\BlockLegacyIds; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\world\format\io\SubChunkConverter; use pocketmine\world\format\SubChunk; class Anvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ - return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [SubChunkConverter::convertSubChunkYZX( + return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkYZX( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )]); diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index bf1597364..7df146b1c 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -38,7 +38,6 @@ use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\ChunkUtils; use pocketmine\world\format\io\exception\CorruptedChunkException; -use pocketmine\world\format\io\SubChunkConverter; use pocketmine\world\format\SubChunk; use function zlib_decode; @@ -75,7 +74,7 @@ class McRegion extends RegionWorldProvider{ $fullData = self::readFixedSizeByteArray($chunk, "Data", 16384); for($y = 0; $y < 8; ++$y){ - $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [SubChunkConverter::convertSubChunkFromLegacyColumn($fullIds, $fullData, $y)]); + $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)]); } $makeBiomeArray = function(string $biomeIds) : BiomeArray{ diff --git a/src/world/format/io/region/PMAnvil.php b/src/world/format/io/region/PMAnvil.php index 299d597c9..45c59bee7 100644 --- a/src/world/format/io/region/PMAnvil.php +++ b/src/world/format/io/region/PMAnvil.php @@ -26,7 +26,6 @@ namespace pocketmine\world\format\io\region; use pocketmine\block\Block; use pocketmine\block\BlockLegacyIds; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\world\format\io\SubChunkConverter; use pocketmine\world\format\SubChunk; /** @@ -37,7 +36,7 @@ class PMAnvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ - return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [SubChunkConverter::convertSubChunkXZY( + return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkXZY( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )]); diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php index caf917ec4..cd5e44216 100644 --- a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php @@ -44,7 +44,7 @@ class BlockStateUpgraderTest extends TestCase{ private BlockStateUpgrader $upgrader; public function setUp() : void{ - $this->upgrader = new BlockStateUpgrader(); + $this->upgrader = new BlockStateUpgrader([]); } private function getNewSchema() : BlockStateUpgradeSchema{ From fe2c3d08a0819d768cb15833c13c9a2bad9d2a66 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 17:31:41 +0000 Subject: [PATCH 045/692] Reduce memory footprint of state remapping tables this becomes a significant problem when expanding metadata size. --- src/block/BlockFactory.php | 46 ++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 14d37d72d..91eaff0fa 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -77,10 +77,16 @@ class BlockFactory{ private $fullList; /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray + * @var int[] + * @phpstan-var array */ - private \SplFixedArray $mappedStateIds; + private array $defaultStateIndexes = []; + + /** + * @var int[] + * @phpstan-var array + */ + private array $mappedStateIndexes = []; /** * @var \SplFixedArray|int[] @@ -105,7 +111,6 @@ class BlockFactory{ public function __construct(){ $this->fullList = new \SplFixedArray(1024 << Block::INTERNAL_METADATA_BITS); - $this->mappedStateIds = new \SplFixedArray(1024 << Block::INTERNAL_METADATA_BITS); $this->light = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 0)); $this->lightFilter = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 1)); @@ -944,11 +949,7 @@ class BlockFactory{ } foreach($ids as $id){ - for($meta = 0; $meta < 1 << Block::INTERNAL_METADATA_BITS; ++$meta){ - if(!$this->isRegistered($id, $meta)){ - $this->remap($id, $meta, $default); - } - } + $this->defaultStateIndexes[$id] = $default->getFullId(); } } @@ -1027,8 +1028,12 @@ class BlockFactory{ } private function fillStaticArrays(int $index, Block $block) : void{ - $this->fullList[$index] = $block; - $this->mappedStateIds[$index] = $block->getFullId(); + $fullId = $block->getFullId(); + if($index !== $fullId){ + $this->mappedStateIndexes[$index] = $fullId; + }else{ + $this->fullList[$index] = $block; + } $this->light[$index] = $block->getLightLevel(); $this->lightFilter[$index] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter $this->blocksDirectSkyLight[$index] = $block->blocksDirectSkyLight(); @@ -1051,8 +1056,10 @@ class BlockFactory{ if($index < 0 || $index >= $this->fullList->getSize()){ throw new \InvalidArgumentException("Block ID $id is out of bounds"); } - if($this->fullList[$index] !== null){ + if($this->fullList[$index] !== null){ //hot $block = clone $this->fullList[$index]; + }elseif(($mappedIndex = $this->getMappedStateId($index)) !== $index && $this->fullList[$mappedIndex] !== null){ //cold + $block = clone $this->fullList[$mappedIndex]; }else{ $block = new UnknownBlock(new BID($id, $meta), BlockBreakInfo::instant()); } @@ -1068,7 +1075,15 @@ class BlockFactory{ * Returns whether a specified block state is already registered in the block factory. */ public function isRegistered(int $id, int $meta = 0) : bool{ - $b = $this->fullList[($id << Block::INTERNAL_METADATA_BITS) | $meta]; + $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; + $b = $this->fullList[$index]; + if($b === null){ + $mappedIndex = $this->mappedStateIndexes[$index] ?? $this->defaultStateIndexes[$id] ?? null; + if($mappedIndex === null){ + return false; + } + $b = $this->fullList[$mappedIndex]; + } return $b !== null && !($b instanceof UnknownBlock); } @@ -1084,6 +1099,9 @@ class BlockFactory{ * Used to correct invalid blockstates found in loaded chunks. */ public function getMappedStateId(int $fullState) : int{ - return $this->mappedStateIds[$fullState] ?? $fullState; + if($this->fullList[$fullState] !== null){ + return $fullState; + } + return $this->mappedStateIndexes[$fullState] ?? $this->defaultStateIndexes[$fullState >> Block::INTERNAL_METADATA_BITS] ?? $fullState; } } From c2d3b23449f0717df7faabed63a59a8d3439f712 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Feb 2022 18:04:02 +0000 Subject: [PATCH 046/692] fixed BlockFactory consistency test - remapped states are no longer returned by getAllKnownStates() --- tests/phpunit/block/BlockTest.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 8e101bc0f..033f191b5 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -151,8 +151,13 @@ class BlockTest extends TestCase{ $knownStates = $list["knownStates"]; $remaps = $list["remaps"]; - $states = $this->blockFactory->getAllKnownStates(); - foreach($states as $k => $state){ + $states = []; + for($k = 0; $k < 1024 << Block::INTERNAL_METADATA_BITS; $k++){ + $state = $this->blockFactory->fromFullBlock($k); + if($state instanceof UnknownBlock){ + continue; + } + $states[$k] = $state; if($state->getFullId() !== $k){ self::assertArrayHasKey($k, $remaps, "New remap of state $k (" . $state->getName() . ") - consistency check may need regenerating"); self::assertSame($state->getFullId(), $remaps[$k], "Mismatched full IDs of remapped state $k"); From 166ffe430ace99d1f2aae40fe1887cf7648e9f7e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 8 Feb 2022 22:56:04 +0000 Subject: [PATCH 047/692] Updated for 1.18.10 --- src/data/bedrock/blockstate/BlockStateNames.php | 1 - src/data/bedrock/blockstate/BlockTypeNames.php | 4 ++++ .../blockstate/convert/BlockObjectToBlockStateSerializer.php | 1 - .../convert/BlockStateToBlockObjectDeserializer.php | 3 +-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateNames.php b/src/data/bedrock/blockstate/BlockStateNames.php index 08279ded1..93d827005 100644 --- a/src/data/bedrock/blockstate/BlockStateNames.php +++ b/src/data/bedrock/blockstate/BlockStateNames.php @@ -94,7 +94,6 @@ final class BlockStateNames{ public const MULTI_FACE_DIRECTION_BITS = "multi_face_direction_bits"; public const NEW_LEAF_TYPE = "new_leaf_type"; public const NEW_LOG_TYPE = "new_log_type"; - public const NO_DROP_BIT = "no_drop_bit"; public const OCCUPIED_BIT = "occupied_bit"; public const OLD_LEAF_TYPE = "old_leaf_type"; public const OLD_LOG_TYPE = "old_log_type"; diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/blockstate/BlockTypeNames.php index 54536c0da..01c116198 100644 --- a/src/data/bedrock/blockstate/BlockTypeNames.php +++ b/src/data/bedrock/blockstate/BlockTypeNames.php @@ -374,6 +374,7 @@ final class BlockTypeNames{ public const FLOWING_LAVA = "minecraft:flowing_lava"; public const FLOWING_WATER = "minecraft:flowing_water"; public const FRAME = "minecraft:frame"; + public const FROG_EGG = "minecraft:frog_egg"; public const FROSTED_ICE = "minecraft:frosted_ice"; public const FURNACE = "minecraft:furnace"; public const GILDED_BLACKSTONE = "minecraft:gilded_blackstone"; @@ -495,6 +496,7 @@ final class BlockTypeNames{ public const OAK_STAIRS = "minecraft:oak_stairs"; public const OBSERVER = "minecraft:observer"; public const OBSIDIAN = "minecraft:obsidian"; + public const OCHRE_FROGLIGHT = "minecraft:ochre_froglight"; public const ORANGE_CANDLE = "minecraft:orange_candle"; public const ORANGE_CANDLE_CAKE = "minecraft:orange_candle_cake"; public const ORANGE_GLAZED_TERRACOTTA = "minecraft:orange_glazed_terracotta"; @@ -504,6 +506,7 @@ final class BlockTypeNames{ public const OXIDIZED_CUT_COPPER_STAIRS = "minecraft:oxidized_cut_copper_stairs"; public const OXIDIZED_DOUBLE_CUT_COPPER_SLAB = "minecraft:oxidized_double_cut_copper_slab"; public const PACKED_ICE = "minecraft:packed_ice"; + public const PEARLESCENT_FROGLIGHT = "minecraft:pearlescent_froglight"; public const PINK_CANDLE = "minecraft:pink_candle"; public const PINK_CANDLE_CAKE = "minecraft:pink_candle_cake"; public const PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta"; @@ -670,6 +673,7 @@ final class BlockTypeNames{ public const UNLIT_REDSTONE_TORCH = "minecraft:unlit_redstone_torch"; public const UNPOWERED_COMPARATOR = "minecraft:unpowered_comparator"; public const UNPOWERED_REPEATER = "minecraft:unpowered_repeater"; + public const VERDANT_FROGLIGHT = "minecraft:verdant_froglight"; public const VINE = "minecraft:vine"; public const WALL_BANNER = "minecraft:wall_banner"; public const WALL_SIGN = "minecraft:wall_sign"; diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index cfd0e3e0f..5e29f1c83 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -766,7 +766,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); $this->map(Blocks::MOB_HEAD(), function(Skull $block) : Writer{ return Writer::create(Ids::SKULL) - ->writeBool(StateNames::NO_DROP_BIT, $block->isNoDrops()) ->writeFacingWithoutDown($block->getFacing()); }); $this->map(Blocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 77323213b..3da7d1508 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -851,8 +851,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::SKULL, function(Reader $in) : Block{ return Blocks::MOB_HEAD() - ->setFacing($in->readFacingWithoutDown()) - ->setNoDrops($in->readBool(StateNames::NO_DROP_BIT)); + ->setFacing($in->readFacingWithoutDown()); }); $this->map(Ids::SLIME, fn() => Blocks::SLIME()); $this->map(Ids::SMOKER, function(Reader $in) : Block{ From 0226f5466c3e4d7621dd9632bb6e678aed044147 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 20:05:20 +0000 Subject: [PATCH 048/692] Added support for upgrading states via remap (needed for end rods and all-sided-logs) --- .../upgrade/BlockStateUpgradeSchema.php | 6 +++++ .../upgrade/BlockStateUpgradeSchemaUtils.php | 22 +++++++++++++++++++ .../blockstate/upgrade/BlockStateUpgrader.php | 11 ++++++++-- .../model/BlockStateUpgradeSchemaModel.php | 6 +++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index b47c9f1fe..024b0d4b3 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -57,6 +57,12 @@ final class BlockStateUpgradeSchema{ */ public array $remappedPropertyValues = []; + /** + * @var BlockStateUpgradeSchemaBlockRemap[][] + * @phpstan-var array> + */ + public array $remappedStates = []; + public function __construct( public int $maxVersionMajor, public int $maxVersionMinor, diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 425fe0545..d3f9304e1 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate\upgrade; use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModel; +use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelBlockRemap; use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelTag; use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelValueRemap; use pocketmine\errorhandler\ErrorToExceptionHandler; @@ -33,6 +34,7 @@ use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; +use function array_map; use function file_get_contents; use function get_class; use function implode; @@ -142,6 +144,16 @@ final class BlockStateUpgradeSchemaUtils{ } } + foreach(Utils::stringifyKeys($model->remappedStates ?? []) as $oldBlockName => $remaps){ + foreach($remaps as $remap){ + $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaBlockRemap( + array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->oldState), + $remap->newName, + array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->newState), + ); + } + } + return $result; } @@ -172,6 +184,16 @@ final class BlockStateUpgradeSchemaUtils{ } } + foreach(Utils::stringifyKeys($schema->remappedStates) as $oldBlockName => $remaps){ + foreach($remaps as $remap){ + $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaModelBlockRemap( + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState), + $remap->newName, + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), + ); + } + } + return $result; } diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index b24489fcf..9f3ec33cb 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -54,8 +54,6 @@ final class BlockStateUpgrader{ } public function upgrade(BlockStateData $blockStateData) : BlockStateData{ - $oldName = $blockStateData->getName(); - $version = $blockStateData->getVersion(); foreach($this->upgradeSchemas as $resultVersion => $schemas){ if($version > $resultVersion){ @@ -64,6 +62,15 @@ final class BlockStateUpgrader{ continue; } foreach($schemas as $schema){ + $oldName = $blockStateData->getName(); + if(isset($schema->remappedStates[$oldName])){ + foreach($schema->remappedStates[$oldName] as $remap){ + if($blockStateData->getStates()->equals($remap->oldState)){ + $blockStateData = new BlockStateData($remap->newName, clone $remap->newState, $resultVersion); + continue 2; + } + } + } $newName = $schema->renamedIds[$oldName] ?? null; $stateChanges = 0; diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php index 4827082c9..54357bd8d 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -69,6 +69,12 @@ final class BlockStateUpgradeSchemaModel implements \JsonSerializable{ */ public array $remappedPropertyValues; + /** + * @var BlockStateUpgradeSchemaModelBlockRemap[][] + * @phpstan-var array> + */ + public array $remappedStates; + /** * @return mixed[] */ From 0ce3f763db3de38dec778ee42ff347e3efcbd2c7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 20:13:59 +0000 Subject: [PATCH 049/692] reEEEEEEEEEEEEEEEEE --- .../BlockStateUpgradeSchemaBlockRemap.php | 55 ++++++++++++++++++ ...BlockStateUpgradeSchemaModelBlockRemap.php | 56 +++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php create mode 100644 src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php new file mode 100644 index 000000000..b30713771 --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php @@ -0,0 +1,55 @@ + $oldState + * @phpstan-param array $newState + */ + public function __construct( + array $oldState, + public string $newName, + array $newState + ){ + $this->oldState = CompoundTag::create(); + $this->newState = CompoundTag::create(); + foreach(Utils::stringifyKeys($oldState) as $k => $v){ + $this->oldState->setTag($k, $v); + } + foreach(Utils::stringifyKeys($newState) as $k => $v){ + $this->newState->setTag($k, $v); + } + } +} diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php new file mode 100644 index 000000000..5404c0bdc --- /dev/null +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php @@ -0,0 +1,56 @@ + + * @required + */ + public array $oldState; + + /** @required */ + public string $newName; + + /** + * @var BlockStateUpgradeSchemaModelTag[] + * @phpstan-var array + * @required + */ + public array $newState; + + /** + * @param BlockStateUpgradeSchemaModelTag[] $oldState + * @param BlockStateUpgradeSchemaModelTag[] $newState + * @phpstan-param array $oldState + * @phpstan-param array $newState + */ + public function __construct(array $oldState, string $newName, array $newState){ + $this->oldState = $oldState; + $this->newName = $newName; + $this->newState = $newState; + } +} From 77ba8b81f8dbfe238e9da460a1ffbc5814101cb2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 20:16:54 +0000 Subject: [PATCH 050/692] Updated BedrockData --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index d62b16e07..8fa2fa59b 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "42298c194b0ae5282f6745256e379c01334f82e6" + "reference": "607e4766c95f448b607c05a7e5170b43f9420ab0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/42298c194b0ae5282f6745256e379c01334f82e6", - "reference": "42298c194b0ae5282f6745256e379c01334f82e6", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/607e4766c95f448b607c05a7e5170b43f9420ab0", + "reference": "607e4766c95f448b607c05a7e5170b43f9420ab0", "shasum": "" }, "type": "library", @@ -271,7 +271,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/experimental/upgrade-tables" }, - "time": "2022-02-08T22:24:32+00:00" + "time": "2022-02-09T19:48:12+00:00" }, { "name": "pocketmine/bedrock-protocol", From 03cf635adca89714f3da2f4faa2c3d401cbf777c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 20:17:28 +0000 Subject: [PATCH 051/692] Removed pointless array cast --- .../bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index d3f9304e1..2f7c1c3f1 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -176,7 +176,7 @@ final class BlockStateUpgradeSchemaUtils{ foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $properties){ foreach(Utils::stringifyKeys($properties) as $property => $propertyValues){ foreach($propertyValues as $oldNew){ - $result->remappedPropertyValues[$blockName][$property][] = (array) new BlockStateUpgradeSchemaModelValueRemap( + $result->remappedPropertyValues[$blockName][$property][] = new BlockStateUpgradeSchemaModelValueRemap( self::tagToJsonModel($oldNew->old), self::tagToJsonModel($oldNew->new) ); From dc5ddf1c1b855d75c9ed5b22f97eeabdd7d7afb0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 20:18:38 +0000 Subject: [PATCH 052/692] make the build pass --- .../blockstate/upgrade/BlockStateUpgradeSchemaUtils.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 2f7c1c3f1..8ea14acad 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -187,9 +187,9 @@ final class BlockStateUpgradeSchemaUtils{ foreach(Utils::stringifyKeys($schema->remappedStates) as $oldBlockName => $remaps){ foreach($remaps as $remap){ $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaModelBlockRemap( - array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState), + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState->getValue()), $remap->newName, - array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState->getValue()), ); } } From 1b3e50d0a3977449252351932392e4dc8b8c21cf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 9 Feb 2022 23:58:56 +0000 Subject: [PATCH 053/692] Implement support for remappedPropertyValuesIndex schema format --- composer.lock | 8 +- .../upgrade/BlockStateUpgradeSchemaUtils.php | 90 +++++++++++++++---- .../model/BlockStateUpgradeSchemaModel.php | 10 ++- 3 files changed, 87 insertions(+), 21 deletions(-) diff --git a/composer.lock b/composer.lock index 8fa2fa59b..8df7f6614 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "607e4766c95f448b607c05a7e5170b43f9420ab0" + "reference": "1d96dd836a77996719ed09dced6e4bba99b0fc1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/607e4766c95f448b607c05a7e5170b43f9420ab0", - "reference": "607e4766c95f448b607c05a7e5170b43f9420ab0", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/1d96dd836a77996719ed09dced6e4bba99b0fc1e", + "reference": "1d96dd836a77996719ed09dced6e4bba99b0fc1e", "shasum": "" }, "type": "library", @@ -271,7 +271,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/experimental/upgrade-tables" }, - "time": "2022-02-09T19:48:12+00:00" + "time": "2022-02-09T21:52:48+00:00" }, { "name": "pocketmine/bedrock-protocol", diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 8ea14acad..72e262313 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -35,6 +35,7 @@ use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; use function array_map; +use function count; use function file_get_contents; use function get_class; use function implode; @@ -43,6 +44,8 @@ use function is_object; use function is_string; use function json_decode; use function ksort; +use function str_pad; +use function strval; use const JSON_THROW_ON_ERROR; use const SORT_NUMERIC; @@ -133,14 +136,22 @@ final class BlockStateUpgradeSchemaUtils{ } } + $convertedRemappedValuesIndex = []; + foreach(Utils::stringifyKeys($model->remappedPropertyValuesIndex ?? []) as $mappingKey => $mappingValues){ + foreach($mappingValues as $k => $oldNew){ + $convertedRemappedValuesIndex[$mappingKey][$k] = new BlockStateUpgradeSchemaValueRemap( + self::jsonModelToTag($oldNew->old), + self::jsonModelToTag($oldNew->new) + ); + } + } + foreach(Utils::stringifyKeys($model->remappedPropertyValues ?? []) as $blockName => $properties){ foreach(Utils::stringifyKeys($properties) as $property => $mappedValuesKey){ - foreach($mappedValuesKey as $oldNew){ - $result->remappedPropertyValues[$blockName][$property][] = new BlockStateUpgradeSchemaValueRemap( - self::jsonModelToTag($oldNew->old), - self::jsonModelToTag($oldNew->new) - ); + if(!isset($convertedRemappedValuesIndex[$mappedValuesKey])){ + throw new \UnexpectedValueException("Missing key from schema values index $mappedValuesKey"); } + $result->remappedPropertyValues[$blockName][$property] = $convertedRemappedValuesIndex[$mappedValuesKey]; } } @@ -157,6 +168,64 @@ final class BlockStateUpgradeSchemaUtils{ return $result; } + private static function buildRemappedValuesIndex(BlockStateUpgradeSchema $schema, BlockStateUpgradeSchemaModel $model) : void{ + if(count($schema->remappedPropertyValues) === 0){ + return; + } + $dedupMapping = []; + $dedupTable = []; + $dedupTableMap = []; + $counter = 0; + + foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $remaps){ + foreach(Utils::stringifyKeys($remaps) as $propertyName => $remappedValues){ + $remappedValuesMap = []; + foreach($remappedValues as $oldNew){ + $remappedValuesMap[$oldNew->old->toString()] = $oldNew; + } + + foreach(Utils::stringifyKeys($dedupTableMap) as $dedupName => $dedupValuesMap){ + if(count($remappedValuesMap) !== count($dedupValuesMap)){ + continue; + } + + foreach(Utils::stringifyKeys($remappedValuesMap) as $oldHash => $remappedOldNew){ + if( + !isset($dedupValuesMap[$oldHash]) || + !$remappedOldNew->old->equals($dedupValuesMap[$oldHash]->old) || + !$remappedOldNew->new->equals($dedupValuesMap[$oldHash]->new) + ){ + continue 2; + } + } + + //we found a match + $dedupMapping[$blockName][$propertyName] = $dedupName; + continue 2; + } + + //no match, add the values to the table + $newDedupName = $propertyName . "_" . str_pad(strval($counter++), 2, "0", STR_PAD_LEFT); + $dedupTableMap[$newDedupName] = $remappedValuesMap; + $dedupTable[$newDedupName] = $remappedValues; + $dedupMapping[$blockName][$propertyName] = $newDedupName; + } + } + + $modelTable = []; + foreach(Utils::stringifyKeys($dedupTable) as $dedupName => $valuePairs){ + foreach($valuePairs as $k => $pair){ + $modelTable[$dedupName][$k] = new BlockStateUpgradeSchemaModelValueRemap( + BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->old), + BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->new), + ); + } + } + + $model->remappedPropertyValuesIndex = $modelTable; + $model->remappedPropertyValues = $dedupMapping; + } + public static function toJsonModel(BlockStateUpgradeSchema $schema) : BlockStateUpgradeSchemaModel{ $result = new BlockStateUpgradeSchemaModel(); $result->maxVersionMajor = $schema->maxVersionMajor; @@ -173,16 +242,7 @@ final class BlockStateUpgradeSchemaUtils{ } } - foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $properties){ - foreach(Utils::stringifyKeys($properties) as $property => $propertyValues){ - foreach($propertyValues as $oldNew){ - $result->remappedPropertyValues[$blockName][$property][] = new BlockStateUpgradeSchemaModelValueRemap( - self::tagToJsonModel($oldNew->old), - self::tagToJsonModel($oldNew->new) - ); - } - } - } + self::buildRemappedValuesIndex($schema, $result); foreach(Utils::stringifyKeys($schema->remappedStates) as $oldBlockName => $remaps){ foreach($remaps as $remap){ diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php index 54357bd8d..824ca7a7a 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -64,11 +64,17 @@ final class BlockStateUpgradeSchemaModel implements \JsonSerializable{ public array $renamedProperties; /** - * @var BlockStateUpgradeSchemaModelValueRemap[][][] - * @phpstan-var array>> + * @var string[][] + * @phpstan-var array> */ public array $remappedPropertyValues; + /** + * @var BlockStateUpgradeSchemaModelValueRemap[][] + * @phpstan-var array> + */ + public array $remappedPropertyValuesIndex; + /** * @var BlockStateUpgradeSchemaModelBlockRemap[][] * @phpstan-var array> From 0a0383d9bda6e81998f4f0ba7610bd08418935e4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 13:03:29 +0000 Subject: [PATCH 054/692] BlockStateUpgradeSchema: added isEmpty() --- .../upgrade/BlockStateUpgradeSchema.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index 024b0d4b3..fa845acfb 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -73,4 +73,21 @@ final class BlockStateUpgradeSchema{ public function getVersionId() : int{ return ($this->maxVersionMajor << 24) | ($this->maxVersionMinor << 16) | ($this->maxVersionPatch << 8) | $this->maxVersionRevision; } + + public function isEmpty() : bool{ + foreach([ + $this->renamedIds, + $this->addedProperties, + $this->removedProperties, + $this->renamedProperties, + $this->remappedPropertyValues, + $this->remappedStates, + ] as $list){ + if(count($list) !== 0){ + return false; + } + } + + return true; + } } From 0f07b2499c21c8f03ee0f56a343c380420124349 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 13:45:39 +0000 Subject: [PATCH 055/692] Added blockstate upgrade schema generator --- tools/generate-blockstate-upgrade-schema.php | 271 +++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 tools/generate-blockstate-upgrade-schema.php diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php new file mode 100644 index 000000000..d4713586d --- /dev/null +++ b/tools/generate-blockstate-upgrade-schema.php @@ -0,0 +1,271 @@ +> + */ +function loadUpgradeTable(string $file, bool $reverse) : array{ + try{ + $contents = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($file)); + }catch(\ErrorException $e){ + throw new \RuntimeException("Failed loading mapping table file $file: " . $e->getMessage(), 0, $e); + } + $data = (new NetworkNbtSerializer())->readMultiple($contents); + + $result = []; + + for($i = 0; isset($data[$i]); $i += 2){ + $oldTag = $data[$i]->mustGetCompoundTag(); + $newTag = $data[$i + 1]->mustGetCompoundTag(); + $old = BlockStateData::fromNbt($reverse ? $newTag : $oldTag); + $new = BlockStateData::fromNbt($reverse ? $oldTag : $newTag); + + $result[$old->getName()][] = new BlockStateMapping( + $old, + $new + ); + } + + return $result; +} + +/** + * @param true[] $removedPropertiesCache + * @param Tag[][] $remappedPropertyValuesCache + * @phpstan-param array $removedPropertiesCache + * @phpstan-param array> $remappedPropertyValuesCache + */ +function processState(BlockStateData $old, BlockStateData $new, BlockStateUpgradeSchema $result, array &$removedPropertiesCache, array &$remappedPropertyValuesCache) : void{ + + //new and old IDs are the same; compare states + $oldName = $old->getName(); + + $oldStates = $old->getStates(); + $newStates = $new->getStates(); + + $propertyRemoved = []; + $propertyAdded = []; + foreach($oldStates as $propertyName => $oldProperty){ + $newProperty = $newStates->getTag($propertyName); + if($newProperty === null){ + $propertyRemoved[$propertyName] = $oldProperty; + }elseif(!$newProperty->equals($oldProperty)){ + if(!isset($remappedPropertyValuesCache[$propertyName][$oldProperty->getValue()])){ + $result->remappedPropertyValues[$oldName][$propertyName][] = new BlockStateUpgradeSchemaValueRemap( + $oldProperty, + $newProperty + ); + $remappedPropertyValuesCache[$propertyName][$oldProperty->getValue()] = $newProperty; + } + } + } + + foreach($newStates as $propertyName => $value){ + if($oldStates->getTag($propertyName) === null){ + $propertyAdded[$propertyName] = $value; + } + } + + if(count($propertyAdded) === 0 && count($propertyRemoved) === 0){ + return; + } + if(count($propertyAdded) === 1 && count($propertyRemoved) === 1){ + $propertyOldName = array_key_first($propertyRemoved); + $propertyNewName = array_key_first($propertyAdded); + + $propertyOldValue = $propertyRemoved[$propertyOldName]; + $propertyNewValue = $propertyAdded[$propertyNewName]; + + $existingPropertyValueMap = $remappedPropertyValuesCache[$propertyOldName][$propertyOldValue->getValue()] ?? null; + if($propertyOldName !== $propertyNewName){ + if(!$propertyOldValue->equals($propertyNewValue) && $existingPropertyValueMap === null){ + \GlobalLogger::get()->warning("warning: guessing that $oldName has $propertyOldName renamed to $propertyNewName with a value map of $propertyOldValue mapped to $propertyNewValue");; + } + //this is a guess; it might not be reliable if the value changed as well + //this will probably never be an issue, but it might rear its ugly head in the future + $result->renamedProperties[$oldName][$propertyOldName] = $propertyNewName; + } + if(!$propertyOldValue->equals($propertyNewValue)){ + $mapped = true; + if($existingPropertyValueMap !== null && !$existingPropertyValueMap->equals($propertyNewValue)){ + if($existingPropertyValueMap->equals($propertyOldValue)){ + \GlobalLogger::get()->warning("warning: guessing that the value $propertyOldValue of $propertyNewValue did not change");; + $mapped = false; + }else{ + \GlobalLogger::get()->warning("warning: mismatch of new value for $propertyNewName for $oldName: $propertyOldValue seen mapped to $propertyNewValue and $existingPropertyValueMap");; + } + } + if($mapped && !isset($remappedPropertyValuesCache[$propertyOldName][$propertyOldValue->getValue()])){ + //value remap + $result->remappedPropertyValues[$oldName][$propertyOldName][] = new BlockStateUpgradeSchemaValueRemap( + $propertyRemoved[$propertyOldName], + $propertyAdded[$propertyNewName] + ); + $remappedPropertyValuesCache[$propertyOldName][$propertyOldValue->getValue()] = $propertyNewValue; + } + }elseif($existingPropertyValueMap !== null){ + \GlobalLogger::get()->warning("warning: multiple values found for value $propertyOldValue of $propertyNewName on block $oldName, guessing it did not change");; + $remappedPropertyValuesCache[$propertyOldName][$propertyOldValue->getValue()] = $propertyNewValue; + } + }else{ + if(count($propertyAdded) !== 0 && count($propertyRemoved) === 0){ + foreach(Utils::stringifyKeys($propertyAdded) as $propertyAddedName => $propertyAddedValue){ + $existingDefault = $result->addedProperties[$oldName][$propertyAddedName] ?? null; + if($existingDefault !== null && !$existingDefault->equals($propertyAddedValue)){ + throw new \UnexpectedValueException("Ambiguous default value for added property $propertyAddedName on block $oldName"); + } + + $result->addedProperties[$oldName][$propertyAddedName] = $propertyAddedValue; + } + }elseif(count($propertyRemoved) !== 0 && count($propertyAdded) === 0){ + foreach(Utils::stringifyKeys($propertyRemoved) as $propertyRemovedName => $propertyRemovedValue){ + if(!isset($removedPropertiesCache[$propertyRemovedName])){ + //to avoid having useless keys in the output + $result->removedProperties[$oldName][] = $propertyRemovedName; + $removedPropertiesCache[$propertyRemovedName] = $propertyRemovedName; + } + } + }else{ + $result->remappedStates[$oldName][] = new BlockStateUpgradeSchemaBlockRemap( + $oldStates->getValue(), + $new->getName(), + $newStates->getValue() + ); + \GlobalLogger::get()->warning("warning: multiple properties added and removed for $oldName; added full state remap");; + } + } +} + +/** + * @param BlockStateMapping[][] $upgradeTable + * @phpstan-param array> $upgradeTable + */ +function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgradeSchema{ + $foundVersion = -1; + foreach(Utils::stringifyKeys($upgradeTable) as $blockStateMappings){ + foreach($blockStateMappings as $mapping){ + if($foundVersion === -1 || $mapping->new->getVersion() === $foundVersion){ + $foundVersion = $mapping->new->getVersion(); + }else{ + throw new AssumptionFailedError("Mixed versions found"); + } + } + } + + $result = new BlockStateUpgradeSchema( + ($foundVersion >> 24) & 0xff, + ($foundVersion >> 16) & 0xff, + ($foundVersion >> 8) & 0xff, + ($foundVersion & 0xff) + ); + foreach(Utils::stringifyKeys($upgradeTable) as $oldName => $blockStateMappings){ + $newNameFound = []; + + $removedPropertiesCache = []; + $remappedPropertyValuesCache = []; + foreach($blockStateMappings as $mapping){ + $newName = $mapping->new->getName(); + $newNameFound[$newName] = true; + } + if(count($newNameFound) === 1){ + $newName = array_key_first($newNameFound); + if($newName !== $oldName){ + $result->renamedIds[$oldName] = array_key_first($newNameFound); + } + foreach($blockStateMappings as $mapping){ + processState($mapping->old, $mapping->new, $result, $removedPropertiesCache, $remappedPropertyValuesCache); + } + }else{ + //block mapped to multiple different new IDs; we can't guess these, so we just do a plain old remap + foreach($blockStateMappings as $mapping){ + if($mapping->old->getName() !== $mapping->new->getName() || !$mapping->old->getStates()->equals($mapping->new->getStates())){ + $result->remappedStates[$mapping->old->getName()][] = new BlockStateUpgradeSchemaBlockRemap( + $mapping->old->getStates()->getValue(), + $mapping->new->getName(), + $mapping->new->getStates()->getValue() + ); + } + } + } + } + + return $result; +} + +/** + * @param string[] $argv + */ +function main(array $argv) : int{ + if(count($argv) !== 3){ + fwrite(STDERR, "Required arguments: input file path, output file path\n"); + return 1; + } + + $input = $argv[1]; + $output = $argv[2]; + + $table = loadUpgradeTable($input, false); + + ksort($table, SORT_STRING); + + $diff = generateBlockStateUpgradeSchema($table); + if($diff->isEmpty()){ + \GlobalLogger::get()->warning("All states appear to be the same! No schema generated."); + return 0; + } + file_put_contents( + $output, + json_encode(BlockStateUpgradeSchemaUtils::toJsonModel($diff), JSON_PRETTY_PRINT) . "\n" + ); + \GlobalLogger::get()->info("Schema file $output generated successfully."); + + return 0; +} + +exit(main($argv)); From 45150f1a524e99cdadffd88f2b7d5249934288b1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 13:47:20 +0000 Subject: [PATCH 056/692] fix CS --- tools/generate-blockstate-upgrade-schema.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index d4713586d..54e773e22 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -33,8 +33,14 @@ use pocketmine\nbt\tag\Tag; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; +use function array_key_first; +use function count; use function dirname; +use function file_get_contents; +use function file_put_contents; use function fwrite; +use function json_encode; +use function ksort; use const STDERR; require_once dirname(__DIR__) . '/vendor/autoload.php'; From db9d769db64e9950d044e4810ea009fb22e8b62e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 13:49:40 +0000 Subject: [PATCH 057/692] fix CS #2 --- src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php | 1 + .../bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php | 1 + 2 files changed, 2 insertions(+) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index fa845acfb..562128812 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\blockstate\upgrade; use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaValueRemap as ValueRemap; use pocketmine\nbt\tag\Tag; +use function count; final class BlockStateUpgradeSchema{ /** diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 72e262313..5db1ba07f 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -48,6 +48,7 @@ use function str_pad; use function strval; use const JSON_THROW_ON_ERROR; use const SORT_NUMERIC; +use const STR_PAD_LEFT; final class BlockStateUpgradeSchemaUtils{ From 8a11ed70e3b614c2139655aaf4f77e8961d45982 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 19:38:50 +0000 Subject: [PATCH 058/692] improve reusability --- .../upgrade/BlockStateUpgradeSchemaUtils.php | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 5db1ba07f..dfe3b922a 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -38,6 +38,7 @@ use function array_map; use function count; use function file_get_contents; use function get_class; +use function gettype; use function implode; use function is_int; use function is_object; @@ -275,7 +276,6 @@ final class BlockStateUpgradeSchemaUtils{ $result = []; - $jsonMapper = new \JsonMapper(); /** @var string[] $matches */ foreach($iterator as $matches){ $filename = $matches[0]; @@ -283,16 +283,18 @@ final class BlockStateUpgradeSchemaUtils{ $fullPath = Path::join($path, $filename); - //TODO: should we bother handling exceptions in here? - $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); - - $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); - if(!is_object($json)){ - throw new \RuntimeException("Unexpected root type of schema file $fullPath"); + try{ + $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); + }catch(\ErrorException $e){ + throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); + } + + try{ + $schema = self::loadSchemaFromString($raw); + }catch(\RuntimeException $e){ + throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); } - $model = $jsonMapper->map($json, new BlockStateUpgradeSchemaModel()); - $schema = self::fromJsonModel($model); if($schema->getVersionId() > $currentVersion){ //this might be a beta schema which shouldn't be applicable //TODO: why do we load the whole schema just to throw it away if it's too new? ... @@ -305,4 +307,24 @@ final class BlockStateUpgradeSchemaUtils{ ksort($result, SORT_NUMERIC); return $result; } + + public static function loadSchemaFromString(string $raw) : BlockStateUpgradeSchema{ + try{ + $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); + }catch(\JsonException $e){ + throw new \RuntimeException($e->getMessage(), 0, $e); + } + if(!is_object($json)){ + throw new \RuntimeException("Unexpected root type of schema file " . gettype($json) . ", expected object"); + } + + $jsonMapper = new \JsonMapper(); + try{ + $model = $jsonMapper->map($json, new BlockStateUpgradeSchemaModel()); + }catch(\JsonMapper_Exception $e){ + throw new \RuntimeException($e->getMessage(), 0, $e); + } + + return self::fromJsonModel($model); + } } From 905eee3198b72701db7137d6abec598d12002d2f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 20:51:31 +0000 Subject: [PATCH 059/692] BlockStateUpgrader: do not apply backwards-incompatible schemas to blockstates already on the correct version this notably led to corruption of glow_lichen and sculk_vein in 1.18.10. --- .../upgrade/BlockStateUpgradeSchema.php | 20 +++++++++++++ .../blockstate/upgrade/BlockStateUpgrader.php | 28 ++++++++++++++----- .../upgrade/BlockStateUpgraderTest.php | 2 +- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index 562128812..e81d84ef5 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -64,6 +64,8 @@ final class BlockStateUpgradeSchema{ */ public array $remappedStates = []; + private ?bool $backwardsCompatible = null; + public function __construct( public int $maxVersionMajor, public int $maxVersionMinor, @@ -91,4 +93,22 @@ final class BlockStateUpgradeSchema{ return true; } + + public function isBackwardsCompatible() : bool{ + if($this->backwardsCompatible === null){ + $this->backwardsCompatible = true; + foreach([ + $this->renamedIds, + $this->removedProperties, + $this->remappedPropertyValues, + $this->remappedStates + ] as $bcBreakingRules){ + if(count($bcBreakingRules) !== 0){ + $this->backwardsCompatible = false; + } + } + } + //schemas which only add properties are backwards compatible + return $this->backwardsCompatible; + } } diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index 9f3ec33cb..28845d9dc 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -27,6 +27,7 @@ use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; +use function array_unshift; use function ksort; use const SORT_NUMERIC; @@ -39,18 +40,26 @@ final class BlockStateUpgrader{ * @phpstan-param array $upgradeSchemas */ public function __construct(array $upgradeSchemas){ - foreach($upgradeSchemas as $priority => $schema){ - $this->addSchema($schema, $priority); + foreach($upgradeSchemas as $schema){ + $this->addSchema($schema); } } - public function addSchema(BlockStateUpgradeSchema $schema, int $priority) : void{ - if(isset($this->upgradeSchemas[$schema->getVersionId()][$priority])){ - throw new \InvalidArgumentException("Another schema already has this priority"); + public function addSchema(BlockStateUpgradeSchema $schema) : void{ + if(!$schema->isBackwardsCompatible()){ + $schemaList = $this->upgradeSchemas[$schema->getVersionId()] ?? []; + foreach($schemaList as $otherSchema){ + if(!$otherSchema->isBackwardsCompatible()){ + throw new \InvalidArgumentException("Cannot add two backwards-incompatible schemas with the same version"); + } + } + array_unshift($schemaList, $schema); + $this->upgradeSchemas[$schema->getVersionId()] = $schemaList; + }else{ + //Backwards-compatible schemas can be added in any order + $this->upgradeSchemas[$schema->getVersionId()][] = $schema; } - $this->upgradeSchemas[$schema->getVersionId()][$priority] = $schema; ksort($this->upgradeSchemas, SORT_NUMERIC); - ksort($this->upgradeSchemas[$schema->getVersionId()], SORT_NUMERIC); } public function upgrade(BlockStateData $blockStateData) : BlockStateData{ @@ -62,6 +71,11 @@ final class BlockStateUpgrader{ continue; } foreach($schemas as $schema){ + if(!$schema->isBackwardsCompatible() && $resultVersion === $version){ + //backwards-compatible updates typically don't bump version and must always be applied because we + //can't tell any different, but backwards-incompatible ones SHOULD always get their own version bump + continue; + } $oldName = $blockStateData->getName(); if(isset($schema->remappedStates[$oldName])){ foreach($schema->remappedStates[$oldName] as $remap){ diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php index cd5e44216..9decc4d88 100644 --- a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php @@ -53,7 +53,7 @@ class BlockStateUpgraderTest extends TestCase{ private function getNewSchemaVersion(int $versionId) : BlockStateUpgradeSchema{ $schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff); - $this->upgrader->addSchema($schema, 0); + $this->upgrader->addSchema($schema); return $schema; } From 169a3217de965b4b7adf4d57b31ccfd52a947e06 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 10 Feb 2022 20:56:53 +0000 Subject: [PATCH 060/692] fix build --- tests/phpstan/configs/phpstan-bugs.neon | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/phpstan/configs/phpstan-bugs.neon b/tests/phpstan/configs/phpstan-bugs.neon index 99fcbe5e6..6e8229bd7 100644 --- a/tests/phpstan/configs/phpstan-bugs.neon +++ b/tests/phpstan/configs/phpstan-bugs.neon @@ -15,6 +15,11 @@ parameters: count: 1 path: ../../../src/crafting/CraftingManager.php + - + message: "#^Dead catch \\- JsonException is never thrown in the try block\\.$#" + count: 1 + path: ../../../src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php + - message: "#^Call to function assert\\(\\) with false and 'unknown hit type' will always evaluate to false\\.$#" count: 1 From bc46e148dfb5de931f8c56c91b4218d6e845658a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 11 Feb 2022 21:13:28 +0000 Subject: [PATCH 061/692] Updated to support new tag storage format --- .../upgrade/BlockStateUpgradeSchemaUtils.php | 45 ++++++++----------- .../model/BlockStateUpgradeSchemaModelTag.php | 16 ++----- 2 files changed, 22 insertions(+), 39 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index dfe3b922a..ea6033aa3 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -38,6 +38,7 @@ use function array_map; use function count; use function file_get_contents; use function get_class; +use function get_debug_type; use function gettype; use function implode; use function is_int; @@ -89,36 +90,28 @@ final class BlockStateUpgradeSchemaUtils{ return implode("\n", $lines); } - private static function tagToJsonModel(Tag $tag) : BlockStateUpgradeSchemaModelTag{ - $type = match(get_class($tag)){ - IntTag::class => "int", - StringTag::class => "string", - ByteTag::class => "byte", - default => throw new \UnexpectedValueException() - }; + public static function tagToJsonModel(Tag $tag) : BlockStateUpgradeSchemaModelTag{ + $model = new BlockStateUpgradeSchemaModelTag(); + if($tag instanceof IntTag){ + $model->int = $tag->getValue(); + }elseif($tag instanceof StringTag){ + $model->string = $tag->getValue(); + }elseif($tag instanceof ByteTag){ + $model->byte = $tag->getValue(); + }else{ + throw new \UnexpectedValueException("Unexpected value type " . get_debug_type($tag)); + } - return new BlockStateUpgradeSchemaModelTag($type, $tag->getValue()); + return $model; } private static function jsonModelToTag(BlockStateUpgradeSchemaModelTag $model) : Tag{ - if($model->type === "int"){ - if(!is_int($model->value)){ - throw new \UnexpectedValueException("Value for type int must be an int"); - } - return new IntTag($model->value); - }elseif($model->type === "byte"){ - if(!is_int($model->value)){ - throw new \UnexpectedValueException("Value for type byte must be an int"); - } - return new ByteTag($model->value); - }elseif($model->type === "string"){ - if(!is_string($model->value)){ - throw new \UnexpectedValueException("Value for type string must be a string"); - } - return new StringTag($model->value); - }else{ - throw new \UnexpectedValueException("Unknown blockstate value type $model->type"); - } + return match(true){ + isset($model->byte) && !isset($model->int) && !isset($model->string) => new ByteTag($model->byte), + !isset($model->byte) && isset($model->int) && !isset($model->string) => new IntTag($model->int), + !isset($model->byte) && !isset($model->int) && isset($model->string) => new StringTag($model->string), + default => throw new \UnexpectedValueException("Malformed JSON model tag, expected exactly one of 'byte', 'int' or 'string' properties") + }; } public static function fromJsonModel(BlockStateUpgradeSchemaModel $model) : BlockStateUpgradeSchema{ diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php index f34c48928..2e0d24cac 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php @@ -24,17 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate\upgrade\model; final class BlockStateUpgradeSchemaModelTag{ - - /** @required */ - public string $type; - /** - * @required - * @var mixed JsonMapper doesn't support mixed type :( - */ - public $value; - - public function __construct(string $type, mixed $value){ - $this->type = $type; - $this->value = $value; - } + public int $byte; + public int $int; + public string $string; } From dda2f42e59892a3ee35bc69d3b687fb15fb6496b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 11 Feb 2022 21:13:59 +0000 Subject: [PATCH 062/692] updated BedrockData --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 8df7f6614..7c3c03054 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "1d96dd836a77996719ed09dced6e4bba99b0fc1e" + "reference": "b6ffd9dc61821358d65618d91f67e2ea21d421d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/1d96dd836a77996719ed09dced6e4bba99b0fc1e", - "reference": "1d96dd836a77996719ed09dced6e4bba99b0fc1e", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/b6ffd9dc61821358d65618d91f67e2ea21d421d0", + "reference": "b6ffd9dc61821358d65618d91f67e2ea21d421d0", "shasum": "" }, "type": "library", @@ -271,7 +271,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/experimental/upgrade-tables" }, - "time": "2022-02-09T21:52:48+00:00" + "time": "2022-02-11T20:20:39+00:00" }, { "name": "pocketmine/bedrock-protocol", From e98cf39b47c6c37619cae32d2d2596b08f4d938f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 11 Feb 2022 21:18:56 +0000 Subject: [PATCH 063/692] cs --- .../blockstate/upgrade/BlockStateUpgradeSchemaUtils.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index ea6033aa3..96135430b 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -37,13 +37,10 @@ use Webmozart\PathUtil\Path; use function array_map; use function count; use function file_get_contents; -use function get_class; use function get_debug_type; use function gettype; use function implode; -use function is_int; use function is_object; -use function is_string; use function json_decode; use function ksort; use function str_pad; From a95749f96883dadc8c41f52bcdbaeadb590178fb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 22 Feb 2022 22:09:47 +0000 Subject: [PATCH 064/692] Now using new repository for block upgrade schemas --- composer.json | 3 +- composer.lock | 47 +++++++++++++++---- src/CoreConstants.php | 1 + .../format/io/GlobalBlockStateHandlers.php | 9 ++-- 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 7f3d979a9..b7186a75a 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,8 @@ "adhocore/json-comment": "^1.1", "fgrosse/phpasn1": "^2.3", "netresearch/jsonmapper": "^4.0", - "pocketmine/bedrock-data": "dev-experimental/upgrade-tables", + "pocketmine/bedrock-block-upgrade-schema": "dev-master@dev", + "pocketmine/bedrock-data": "~1.6.0+bedrock-1.18.10", "pocketmine/bedrock-protocol": "~8.0.0+bedrock-1.18.10", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", diff --git a/composer.lock b/composer.lock index 7c3c03054..4336da911 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7b0434a812ea018e8e5491fcd4e81441", + "content-hash": "98a6d4ddd8c38237bc86945326a856d9", "packages": [ { "name": "adhocore/json-comment", @@ -248,17 +248,44 @@ "time": "2020-12-01T19:48:11+00:00" }, { - "name": "pocketmine/bedrock-data", - "version": "dev-experimental/upgrade-tables", + "name": "pocketmine/bedrock-block-upgrade-schema", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/pmmp/BedrockData.git", - "reference": "b6ffd9dc61821358d65618d91f67e2ea21d421d0" + "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", + "reference": "871e5fa8ea56458c05154697f7bb2be3490441d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/b6ffd9dc61821358d65618d91f67e2ea21d421d0", - "reference": "b6ffd9dc61821358d65618d91f67e2ea21d421d0", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/871e5fa8ea56458c05154697f7bb2be3490441d7", + "reference": "871e5fa8ea56458c05154697f7bb2be3490441d7", + "shasum": "" + }, + "default-branch": true, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "CC0-1.0" + ], + "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", + "support": { + "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", + "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" + }, + "time": "2022-02-22T22:00:27+00:00" + }, + { + "name": "pocketmine/bedrock-data", + "version": "1.6.0+bedrock-1.18.10", + "source": { + "type": "git", + "url": "https://github.com/pmmp/BedrockData.git", + "reference": "e98c511584a7bd58a95986374d2df4b04c6a2ba0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/e98c511584a7bd58a95986374d2df4b04c6a2ba0", + "reference": "e98c511584a7bd58a95986374d2df4b04c6a2ba0", "shasum": "" }, "type": "library", @@ -269,9 +296,9 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/experimental/upgrade-tables" + "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.18.10" }, - "time": "2022-02-11T20:20:39+00:00" + "time": "2022-02-08T19:13:47+00:00" }, { "name": "pocketmine/bedrock-protocol", @@ -3508,7 +3535,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "pocketmine/bedrock-data": 20 + "pocketmine/bedrock-block-upgrade-schema": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/src/CoreConstants.php b/src/CoreConstants.php index 46e00a2a3..09d43a989 100644 --- a/src/CoreConstants.php +++ b/src/CoreConstants.php @@ -37,4 +37,5 @@ define('pocketmine\PATH', dirname(__DIR__) . '/'); define('pocketmine\RESOURCE_PATH', dirname(__DIR__) . '/resources/'); define('pocketmine\BEDROCK_DATA_PATH', dirname(__DIR__) . '/vendor/pocketmine/bedrock-data/'); define('pocketmine\LOCALE_DATA_PATH', dirname(__DIR__) . '/vendor/pocketmine/locale-data/'); +define('pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH', dirname(__DIR__) . '/vendor/pocketmine/bedrock-block-upgrade-schema/'); define('pocketmine\COMPOSER_AUTOLOADER_PATH', dirname(__DIR__) . '/vendor/autoload.php'); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index c041e08fc..3ea54b01c 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -38,7 +38,7 @@ use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; use pocketmine\errorhandler\ErrorToExceptionHandler; use Webmozart\PathUtil\Path; use function file_get_contents; -use const pocketmine\BEDROCK_DATA_PATH; +use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; /** * Provides global access to blockstate serializers for all world providers. @@ -58,7 +58,7 @@ final class GlobalBlockStateHandlers{ return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer( new UpgradingBlockStateDeserializer( new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( - Path::join(BEDROCK_DATA_PATH, 'upgrade_schema'), + Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), BlockStateData::CURRENT_VERSION )), new BlockStateToBlockObjectDeserializer() @@ -72,7 +72,10 @@ final class GlobalBlockStateHandlers{ public static function getLegacyBlockStateMapper() : LegacyBlockStateMapper{ return self::$legacyBlockStateMapper ??= LegacyBlockStateMapper::loadFromString( - ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join(BEDROCK_DATA_PATH, 'r12_to_current_block_map.bin'))), + ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( + BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, + '1.12.0_to_1.18.10_blockstate_map.bin' + ))), LegacyBlockIdToStringIdMap::getInstance() ); } From 310104f786b094a738bb0c6b7922443ed1a88c53 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Mar 2022 14:34:15 +0000 Subject: [PATCH 065/692] BlockFactory: change fullList to non-fixed array when we expand the metadata range, having a fixed array here will present some problems due to significantly increased memory footprint (2x for every bit added). --- src/block/BlockFactory.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 91eaff0fa..c124f4398 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -71,10 +71,10 @@ class BlockFactory{ use SingletonTrait; /** - * @var \SplFixedArray|Block[] - * @phpstan-var \SplFixedArray + * @var Block[] + * @phpstan-var array */ - private $fullList; + private array $fullList = []; /** * @var int[] @@ -110,8 +110,6 @@ class BlockFactory{ public $blastResistance; public function __construct(){ - $this->fullList = new \SplFixedArray(1024 << Block::INTERNAL_METADATA_BITS); - $this->light = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 0)); $this->lightFilter = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 1)); $this->blocksDirectSkyLight = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, false)); @@ -1017,7 +1015,7 @@ class BlockFactory{ public function remap(int $id, int $meta, Block $block) : void{ $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; if($this->isRegistered($id, $meta)){ - $existing = $this->fullList[$index]; + $existing = $this->fullList[$index] ?? null; if($existing !== null && $existing->getFullId() === $index){ throw new \InvalidArgumentException("$id:$meta is already mapped"); }else{ @@ -1053,12 +1051,12 @@ class BlockFactory{ } $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; - if($index < 0 || $index >= $this->fullList->getSize()){ + if($index < 0){ throw new \InvalidArgumentException("Block ID $id is out of bounds"); } - if($this->fullList[$index] !== null){ //hot + if(isset($this->fullList[$index])){ //hot $block = clone $this->fullList[$index]; - }elseif(($mappedIndex = $this->getMappedStateId($index)) !== $index && $this->fullList[$mappedIndex] !== null){ //cold + }elseif(($mappedIndex = $this->getMappedStateId($index)) !== $index && isset($this->fullList[$mappedIndex])){ //cold $block = clone $this->fullList[$mappedIndex]; }else{ $block = new UnknownBlock(new BID($id, $meta), BlockBreakInfo::instant()); @@ -1076,13 +1074,13 @@ class BlockFactory{ */ public function isRegistered(int $id, int $meta = 0) : bool{ $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; - $b = $this->fullList[$index]; + $b = $this->fullList[$index] ?? null; if($b === null){ $mappedIndex = $this->mappedStateIndexes[$index] ?? $this->defaultStateIndexes[$id] ?? null; if($mappedIndex === null){ return false; } - $b = $this->fullList[$mappedIndex]; + $b = $this->fullList[$mappedIndex] ?? null; } return $b !== null && !($b instanceof UnknownBlock); } @@ -1091,7 +1089,7 @@ class BlockFactory{ * @return Block[] */ public function getAllKnownStates() : array{ - return array_filter($this->fullList->toArray(), function(?Block $v) : bool{ return $v !== null; }); + return $this->fullList; } /** @@ -1099,7 +1097,7 @@ class BlockFactory{ * Used to correct invalid blockstates found in loaded chunks. */ public function getMappedStateId(int $fullState) : int{ - if($this->fullList[$fullState] !== null){ + if(isset($this->fullList[$fullState])){ return $fullState; } return $this->mappedStateIndexes[$fullState] ?? $this->defaultStateIndexes[$fullState >> Block::INTERNAL_METADATA_BITS] ?? $fullState; From b52bb5016c437438c2c2e1685b2d4a4df83779b3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Mar 2022 14:39:02 +0000 Subject: [PATCH 066/692] BlockIdentifier: enforce that ID and variant must be non-negative --- src/block/BlockIdentifier.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/block/BlockIdentifier.php b/src/block/BlockIdentifier.php index b69037ad0..2c3d13733 100644 --- a/src/block/BlockIdentifier.php +++ b/src/block/BlockIdentifier.php @@ -38,6 +38,12 @@ class BlockIdentifier{ * @phpstan-param class-string|null $tileClass */ public function __construct(int $blockId, int $variant, ?int $itemId = null, ?string $tileClass = null){ + if($blockId < 0){ + throw new \InvalidArgumentException("Block ID may not be negative"); + } + if($variant < 0){ + throw new \InvalidArgumentException("Block variant may not be negative"); + } $this->blockId = $blockId; $this->variant = $variant; $this->itemId = $itemId; From 334c9daa6add720433c6509896b3ecc82b120799 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Mar 2022 15:22:57 +0000 Subject: [PATCH 067/692] BlockFactory: change property cache arrays to use regular arrays instead of SplFixedArray this does come at a performance cost, but is necessary for metadata expansion. we finally concede that this is not going to happen without BC breaks, however small they might be ... --- src/block/BlockFactory.php | 42 +++++++++++++--------------- src/world/Explosion.php | 2 +- src/world/light/BlockLightUpdate.php | 20 ++++++------- src/world/light/LightUpdate.php | 14 ++++++---- src/world/light/SkyLightUpdate.php | 34 +++++++++++----------- tests/phpunit/block/BlockTest.php | 1 - 6 files changed, 55 insertions(+), 58 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index c124f4398..20b8d8bd4 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -58,8 +58,7 @@ use pocketmine\item\Item; use pocketmine\item\ItemIds; use pocketmine\item\ToolTier; use pocketmine\utils\SingletonTrait; -use function array_fill; -use function array_filter; +use pocketmine\world\light\LightUpdate; use function get_class; use function min; @@ -89,32 +88,27 @@ class BlockFactory{ private array $mappedStateIndexes = []; /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray + * @var int[] + * @phpstan-var array */ - public $light; + public array $light = []; /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray + * @var int[] + * @phpstan-var array */ - public $lightFilter; + public array $lightFilter = []; /** - * @var \SplFixedArray|bool[] - * @phpstan-var \SplFixedArray + * @var true[] + * @phpstan-var array */ - public $blocksDirectSkyLight; + public array $blocksDirectSkyLight = []; /** - * @var \SplFixedArray|float[] - * @phpstan-var \SplFixedArray + * @var float[] + * @phpstan-var array */ - public $blastResistance; + public array $blastResistance = []; public function __construct(){ - $this->light = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 0)); - $this->lightFilter = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 1)); - $this->blocksDirectSkyLight = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, false)); - $this->blastResistance = \SplFixedArray::fromArray(array_fill(0, 1024 << Block::INTERNAL_METADATA_BITS, 0.0)); - $railBreakInfo = new BlockBreakInfo(0.7); $this->registerAllMeta(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); $this->registerAllMeta(new Air(new BID(Ids::AIR, 0), "Air", BlockBreakInfo::indestructible(-1.0))); @@ -1031,11 +1025,13 @@ class BlockFactory{ $this->mappedStateIndexes[$index] = $fullId; }else{ $this->fullList[$index] = $block; + $this->blastResistance[$index] = $block->getBreakInfo()->getBlastResistance(); + $this->light[$index] = $block->getLightLevel(); + $this->lightFilter[$index] = min(15, $block->getLightFilter() + LightUpdate::BASE_LIGHT_FILTER); + if($block->blocksDirectSkyLight()){ + $this->blocksDirectSkyLight[$index] = true; + } } - $this->light[$index] = $block->getLightLevel(); - $this->lightFilter[$index] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter - $this->blocksDirectSkyLight[$index] = $block->blocksDirectSkyLight(); - $this->blastResistance[$index] = $block->getBreakInfo()->getBlastResistance(); } /** diff --git a/src/world/Explosion.php b/src/world/Explosion.php index f67d9034f..05ddd3d59 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -129,7 +129,7 @@ class Explosion{ $state = $this->subChunkExplorer->currentSubChunk->getFullBlock($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK); - $blastResistance = $blockFactory->blastResistance[$state]; + $blastResistance = $blockFactory->blastResistance[$state] ?? 0; if($blastResistance >= 0){ $blastForce -= ($blastResistance / 5 + 0.3) * $this->stepLen; if($blastForce > 0){ diff --git a/src/world/light/BlockLightUpdate.php b/src/world/light/BlockLightUpdate.php index 5036400d8..1b10ac806 100644 --- a/src/world/light/BlockLightUpdate.php +++ b/src/world/light/BlockLightUpdate.php @@ -32,18 +32,18 @@ use function max; class BlockLightUpdate extends LightUpdate{ /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray + * @var int[] + * @phpstan-var array */ private $lightEmitters; /** - * @param \SplFixedArray|int[] $lightFilters - * @param \SplFixedArray|int[] $lightEmitters - * @phpstan-param \SplFixedArray $lightFilters - * @phpstan-param \SplFixedArray $lightEmitters + * @param int[] $lightFilters + * @param int[] $lightEmitters + * @phpstan-param array $lightFilters + * @phpstan-param array $lightEmitters */ - public function __construct(SubChunkExplorer $subChunkExplorer, \SplFixedArray $lightFilters, \SplFixedArray $lightEmitters){ + public function __construct(SubChunkExplorer $subChunkExplorer, array $lightFilters, array $lightEmitters){ parent::__construct($subChunkExplorer, $lightFilters); $this->lightEmitters = $lightEmitters; } @@ -55,7 +55,7 @@ class BlockLightUpdate extends LightUpdate{ public function recalculateNode(int $x, int $y, int $z) : void{ if($this->subChunkExplorer->moveTo($x, $y, $z) !== SubChunkExplorerStatus::INVALID){ $block = $this->subChunkExplorer->currentSubChunk->getFullBlock($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); - $this->setAndUpdateLight($x, $y, $z, max($this->lightEmitters[$block], $this->getHighestAdjacentLight($x, $y, $z) - $this->lightFilters[$block])); + $this->setAndUpdateLight($x, $y, $z, max($this->lightEmitters[$block] ?? 0, $this->getHighestAdjacentLight($x, $y, $z) - ($this->lightFilters[$block] ?? self::BASE_LIGHT_FILTER))); } } @@ -71,7 +71,7 @@ class BlockLightUpdate extends LightUpdate{ foreach($subChunk->getBlockLayers() as $layer){ foreach($layer->getPalette() as $state){ - if($this->lightEmitters[$state] > 0){ + if(($this->lightEmitters[$state] ?? 0) > 0){ $lightSources += $this->scanForLightEmittingBlocks($subChunk, $chunkX << SubChunk::COORD_BIT_SIZE, $subChunkY << SubChunk::COORD_BIT_SIZE, $chunkZ << SubChunk::COORD_BIT_SIZE); break 2; } @@ -87,7 +87,7 @@ class BlockLightUpdate extends LightUpdate{ for($x = 0; $x < SubChunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < SubChunk::EDGE_LENGTH; ++$z){ for($y = 0; $y < SubChunk::EDGE_LENGTH; ++$y){ - $light = $this->lightEmitters[$subChunk->getFullBlock($x, $y, $z)]; + $light = $this->lightEmitters[$subChunk->getFullBlock($x, $y, $z)] ?? 0; if($light > 0){ $this->setAndUpdateLight( $baseX + $x, diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index 45fa19df3..89e077cb6 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -41,9 +41,11 @@ abstract class LightUpdate{ [ 0, 0, -1] ]; + public const BASE_LIGHT_FILTER = 1; + /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray + * @var int[] + * @phpstan-var array */ protected $lightFilters; @@ -57,10 +59,10 @@ abstract class LightUpdate{ protected $subChunkExplorer; /** - * @param \SplFixedArray|int[] $lightFilters - * @phpstan-param \SplFixedArray $lightFilters + * @param int[] $lightFilters + * @phpstan-param array $lightFilters */ - public function __construct(SubChunkExplorer $subChunkExplorer, \SplFixedArray $lightFilters){ + public function __construct(SubChunkExplorer $subChunkExplorer, array $lightFilters){ $this->lightFilters = $lightFilters; $this->subChunkExplorer = $subChunkExplorer; @@ -196,7 +198,7 @@ abstract class LightUpdate{ $ly = $y & SubChunk::COORD_MASK; $lz = $z & SubChunk::COORD_MASK; $current = $lightArray->get($lx, $ly, $lz); - $potentialLight = $newAdjacentLevel - $this->lightFilters[$this->subChunkExplorer->currentSubChunk->getFullBlock($lx, $ly, $lz)]; + $potentialLight = $newAdjacentLevel - ($this->lightFilters[$this->subChunkExplorer->currentSubChunk->getFullBlock($lx, $ly, $lz)] ?? self::BASE_LIGHT_FILTER); if($current < $potentialLight){ $lightArray->set($lx, $ly, $lz, $potentialLight); diff --git a/src/world/light/SkyLightUpdate.php b/src/world/light/SkyLightUpdate.php index a505fde02..67e88abeb 100644 --- a/src/world/light/SkyLightUpdate.php +++ b/src/world/light/SkyLightUpdate.php @@ -35,18 +35,18 @@ use function max; class SkyLightUpdate extends LightUpdate{ /** - * @var \SplFixedArray|bool[] - * @phpstan-var \SplFixedArray + * @var true[] + * @phpstan-var array */ private $directSkyLightBlockers; /** - * @param \SplFixedArray|int[] $lightFilters - * @param \SplFixedArray|bool[] $directSkyLightBlockers - * @phpstan-param \SplFixedArray $lightFilters - * @phpstan-param \SplFixedArray $directSkyLightBlockers + * @param int[] $lightFilters + * @param true[] $directSkyLightBlockers + * @phpstan-param array $lightFilters + * @phpstan-param array $directSkyLightBlockers */ - public function __construct(SubChunkExplorer $subChunkExplorer, \SplFixedArray $lightFilters, \SplFixedArray $directSkyLightBlockers){ + public function __construct(SubChunkExplorer $subChunkExplorer, array $lightFilters, array $directSkyLightBlockers){ parent::__construct($subChunkExplorer, $lightFilters); $this->directSkyLightBlockers = $directSkyLightBlockers; } @@ -78,7 +78,7 @@ class SkyLightUpdate extends LightUpdate{ $newHeightMap = self::recalculateHeightMapColumn($chunk, $x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK, $this->directSkyLightBlockers); $chunk->setHeightMap($x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK, $newHeightMap); }elseif($yPlusOne > $oldHeightMap){ //Block changed above the heightmap. - if($this->directSkyLightBlockers[$source]){ + if(isset($this->directSkyLightBlockers[$source])){ $chunk->setHeightMap($x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK, $yPlusOne); $newHeightMap = $yPlusOne; }else{ //Block changed which has no effect on direct sky light, for example placing or removing glass. @@ -97,7 +97,7 @@ class SkyLightUpdate extends LightUpdate{ $this->setAndUpdateLight($x, $i, $z, 15); } }else{ //No heightmap change, block changed "underground" - $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - $this->lightFilters[$source])); + $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - ($this->lightFilters[$source] ?? self::BASE_LIGHT_FILTER))); } } @@ -168,10 +168,10 @@ class SkyLightUpdate extends LightUpdate{ /** * Recalculates the heightmap for the whole chunk. * - * @param \SplFixedArray|bool[] $directSkyLightBlockers - * @phpstan-param \SplFixedArray $directSkyLightBlockers + * @param true[] $directSkyLightBlockers + * @phpstan-param array $directSkyLightBlockers */ - private static function recalculateHeightMap(Chunk $chunk, \SplFixedArray $directSkyLightBlockers) : HeightArray{ + private static function recalculateHeightMap(Chunk $chunk, array $directSkyLightBlockers) : HeightArray{ $maxSubChunkY = Chunk::MAX_SUBCHUNK_INDEX; for(; $maxSubChunkY >= Chunk::MIN_SUBCHUNK_INDEX; $maxSubChunkY--){ if(!$chunk->getSubChunk($maxSubChunkY)->isEmptyFast()){ @@ -198,7 +198,7 @@ class SkyLightUpdate extends LightUpdate{ $result->set($x, $z, World::Y_MIN); }else{ for(; $y >= World::Y_MIN; --$y){ - if($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)]){ + if(isset($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)])){ $result->set($x, $z, $y + 1); break; } @@ -214,18 +214,18 @@ class SkyLightUpdate extends LightUpdate{ * * @param int $x 0-15 * @param int $z 0-15 - * @param \SplFixedArray|bool[] $directSkyLightBlockers - * @phpstan-param \SplFixedArray $directSkyLightBlockers + * @param true[] $directSkyLightBlockers + * @phpstan-param array $directSkyLightBlockers * * @return int New calculated heightmap value (0-256 inclusive) */ - private static function recalculateHeightMapColumn(Chunk $chunk, int $x, int $z, \SplFixedArray $directSkyLightBlockers) : int{ + private static function recalculateHeightMapColumn(Chunk $chunk, int $x, int $z, array $directSkyLightBlockers) : int{ $y = $chunk->getHighestBlockAt($x, $z); if($y === null){ return World::Y_MIN; } for(; $y >= World::Y_MIN; --$y){ - if($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)]){ + if(isset($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)])){ break; } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 033f191b5..77b8dedf0 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -137,7 +137,6 @@ class BlockTest extends TestCase{ */ public function testLightFiltersValid() : void{ foreach($this->blockFactory->lightFilter as $id => $value){ - self::assertNotNull($value, "Light filter value missing for $id"); self::assertLessThanOrEqual(15, $value, "Light filter value for $id is larger than the expected 15"); self::assertGreaterThan(0, $value, "Light filter value for $id must be larger than 0"); } From 3c5300556abab1fbefe9e2d47c01bc8d1e873cb8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Mar 2022 15:27:57 +0000 Subject: [PATCH 068/692] Fixed tests --- tests/phpunit/block/BlockTest.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 77b8dedf0..ebcaca8dc 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -71,19 +71,11 @@ class BlockTest extends TestCase{ throw new \RuntimeException("Can't test registering new blocks because no unused spaces left"); } - /** - * Verifies that blocks with IDs larger than 255 can't be registered - */ - public function testRegisterIdTooLarge() : void{ - self::expectException(\RuntimeException::class); - $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(25555, 0), "Out Of Bounds Block", BlockBreakInfo::instant())); - } - /** * Verifies that blocks with IDs smaller than 0 can't be registered */ public function testRegisterIdTooSmall() : void{ - self::expectException(\RuntimeException::class); + self::expectException(\InvalidArgumentException::class); $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1, 0), "Out Of Bounds Block", BlockBreakInfo::instant())); } From 9f4418e01d74a3bd86b3ab5b3fe986741d5c80f1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 24 Mar 2022 12:52:51 +0000 Subject: [PATCH 069/692] Wall: separate connection calculation into its own method we'll need this once wall connections start actually being stored instead of just being recalculated on every read. --- src/block/Wall.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/block/Wall.php b/src/block/Wall.php index 6c827d190..06e7d061a 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -35,16 +35,31 @@ class Wall extends Transparent{ public function readStateFromWorld() : void{ parent::readStateFromWorld(); + $this->recalculateConnections(); + } + + protected function recalculateConnections() : bool{ + $changed = 0; foreach(Facing::HORIZONTAL as $facing){ $block = $this->getSide($facing); if($block instanceof static || $block instanceof FenceGate || ($block->isSolid() && !$block->isTransparent())){ - $this->connections[$facing] = $facing; - }else{ + if(!isset($this->connections[$facing])){ + $this->connections[$facing] = $facing; + $changed++; + } + }elseif(isset($this->connections[$facing])){ unset($this->connections[$facing]); + $changed++; } } - $this->up = $this->getSide(Facing::UP)->getId() !== BlockLegacyIds::AIR; + $up = $this->getSide(Facing::UP)->getId() !== BlockLegacyIds::AIR; + if($up !== $this->up){ + $this->up = $up; + $changed++; + } + + return $changed > 0; } protected function recalculateCollisionBoxes() : array{ From 993adc8c82fedca5d6b3ffcff1258459a1bc0991 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 24 Mar 2022 12:59:45 +0000 Subject: [PATCH 070/692] LevelDB: remove deprecated constants there's no point pretending we can maintain BC on this now --- src/world/format/io/leveldb/LevelDB.php | 29 ------------------------- 1 file changed, 29 deletions(-) diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 26329a044..e3b8eeef4 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -72,39 +72,10 @@ use const LEVELDB_ZLIB_RAW_COMPRESSION; class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ - /** @deprecated */ - protected const TAG_DATA_2D = ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES; - /** @deprecated */ - protected const TAG_DATA_2D_LEGACY = ChunkDataKey::HEIGHTMAP_AND_2D_BIOME_COLORS; - /** @deprecated */ - protected const TAG_SUBCHUNK_PREFIX = ChunkDataKey::SUBCHUNK; - /** @deprecated */ - protected const TAG_LEGACY_TERRAIN = ChunkDataKey::LEGACY_TERRAIN; - /** @deprecated */ - protected const TAG_BLOCK_ENTITY = ChunkDataKey::BLOCK_ENTITIES; - /** @deprecated */ - protected const TAG_ENTITY = ChunkDataKey::ENTITIES; - /** @deprecated */ - protected const TAG_PENDING_TICK = ChunkDataKey::PENDING_SCHEDULED_TICKS; - /** @deprecated */ - protected const TAG_BLOCK_EXTRA_DATA = ChunkDataKey::LEGACY_BLOCK_EXTRA_DATA; - /** @deprecated */ - protected const TAG_BIOME_STATE = ChunkDataKey::BIOME_STATES; - /** @deprecated */ - protected const TAG_STATE_FINALISATION = ChunkDataKey::FINALIZATION; - - /** @deprecated */ - protected const TAG_BORDER_BLOCKS = ChunkDataKey::BORDER_BLOCKS; - /** @deprecated */ - protected const TAG_HARDCODED_SPAWNERS = ChunkDataKey::HARDCODED_SPAWNERS; - protected const FINALISATION_NEEDS_INSTATICKING = 0; protected const FINALISATION_NEEDS_POPULATION = 1; protected const FINALISATION_DONE = 2; - /** @deprecated */ - protected const TAG_VERSION = ChunkDataKey::NEW_VERSION; - protected const ENTRY_FLAT_WORLD_LAYERS = "game_flatworldlayers"; protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_18_0_25_beta; From 4c433fd75b47de84c0dd83a14694ab5f4774f6c8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 28 Mar 2022 18:13:14 +0100 Subject: [PATCH 071/692] Remap invalid metadata values to zero this is a bit less sophisticated than the way we do it with BlockFactory, but this shouldn't usually have any relevance anyway - it's only used for correcting bogus states. --- src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php index c2b2517d5..843c0932e 100644 --- a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php @@ -42,7 +42,7 @@ final class LegacyBlockStateMapper{ ){} public function fromStringIdMeta(string $id, int $meta) : ?BlockStateData{ - return $this->mappingTable[$id][$meta] ?? null; + return $this->mappingTable[$id][$meta] ?? $this->mappingTable[$id][0] ?? null; } public function fromIntIdMeta(int $id, int $meta) : ?BlockStateData{ From ede9e78fbd80904b52d15eec1f98cc76a604e906 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 29 Mar 2022 12:49:49 +0100 Subject: [PATCH 072/692] ItemBlock: make final, and document its purpose more clearly --- src/item/ItemBlock.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 0836d86e1..f5bf7920e 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -27,9 +27,12 @@ use pocketmine\block\Block; use pocketmine\block\BlockFactory; /** - * Class used for Items that can be Blocks + * Class used for Items that directly represent blocks, such as stone, dirt, wood etc. + * + * This should NOT be used for items which are merely *associated* with blocks (e.g. seeds are not wheat crops; they + * just place wheat crops when used on the ground). */ -class ItemBlock extends Item{ +final class ItemBlock extends Item{ /** @var int */ private $blockFullId; From c1c3475e5ae0ae9378a1484b293f30f13d955380 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 15 Apr 2022 19:06:56 +0100 Subject: [PATCH 073/692] RuntimeBlockMapping: reuse the state ID for unknown blocks this doesn't really provide any meaningful benefit, unless there are a very large number of unrecognized states --- src/network/mcpe/convert/RuntimeBlockMapping.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index efbfdeb75..b4c323622 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -51,6 +51,7 @@ final class RuntimeBlockMapping{ /** Used when a blockstate can't be correctly serialized (e.g. because it's unknown) */ private BlockStateData $fallbackStateData; + private int $fallbackStateId; private function __construct(){ $contents = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")), "Missing required resource file"); @@ -58,6 +59,7 @@ final class RuntimeBlockMapping{ $this->blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData($this->fallbackStateData) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); } public function toRuntimeId(int $internalStateId) : int{ @@ -67,17 +69,17 @@ final class RuntimeBlockMapping{ try{ $blockStateData = $this->blockStateSerializer->serialize($internalStateId); + + $networkId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); + if($networkId === null){ + throw new AssumptionFailedError("Unmapped blockstate returned by blockstate serializer: " . $blockStateData->toNbt()); + } }catch(BlockStateSerializeException){ //TODO: this will swallow any error caused by invalid block properties; this is not ideal, but it should be //covered by unit tests, so this is probably a safe assumption. - $blockStateData = $this->fallbackStateData; + $networkId = $this->fallbackStateId; } - $networkId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); - - if($networkId === null){ - throw new AssumptionFailedError("Unmapped blockstate returned by blockstate serializer: " . $blockStateData->toNbt()); - } return $this->networkIdCache[$internalStateId] = $networkId; } From eafbc3a46860c447aba739ad1d5d8ccc5c97bcec Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 15 Apr 2022 19:10:24 +0100 Subject: [PATCH 074/692] Expand height range to include -64 to 320 --- src/network/mcpe/ChunkRequestTask.php | 2 +- .../mcpe/serializer/ChunkSerializer.php | 8 ------- src/world/World.php | 4 ++-- src/world/format/Chunk.php | 4 ++-- src/world/format/io/leveldb/LevelDB.php | 23 ++----------------- 5 files changed, 7 insertions(+), 34 deletions(-) diff --git a/src/network/mcpe/ChunkRequestTask.php b/src/network/mcpe/ChunkRequestTask.php index 5a8c06fa5..cc94c95f1 100644 --- a/src/network/mcpe/ChunkRequestTask.php +++ b/src/network/mcpe/ChunkRequestTask.php @@ -69,7 +69,7 @@ class ChunkRequestTask extends AsyncTask{ public function onRun() : void{ $chunk = FastChunkSerializer::deserializeTerrain($this->chunk); - $subCount = ChunkSerializer::getSubChunkCount($chunk) + ChunkSerializer::LOWER_PADDING_SIZE; + $subCount = ChunkSerializer::getSubChunkCount($chunk); $encoderContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()); $payload = ChunkSerializer::serializeFullChunk($chunk, RuntimeBlockMapping::getInstance(), $encoderContext, $this->tiles); $this->setResult($this->compressor->compress(PacketBatch::fromPackets($encoderContext, LevelChunkPacket::create($this->chunkX, $this->chunkZ, $subCount, false, null, $payload))->getBuffer())); diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index f83e2fa20..6246dcc49 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -41,8 +41,6 @@ use function count; use function str_repeat; final class ChunkSerializer{ - public const LOWER_PADDING_SIZE = 4; - private function __construct(){ //NOOP } @@ -65,12 +63,6 @@ final class ChunkSerializer{ public static function serializeFullChunk(Chunk $chunk, RuntimeBlockMapping $blockMapper, PacketSerializerContext $encoderContext, ?string $tiles = null) : string{ $stream = PacketSerializer::encoder($encoderContext); - //TODO: HACK! fill in fake subchunks to make up for the new negative space client-side - for($y = 0; $y < self::LOWER_PADDING_SIZE; $y++){ - $stream->putByte(8); //subchunk version 8 - $stream->putByte(0); //0 layers - client will treat this as all-air - } - $subChunkCount = self::getSubChunkCount($chunk); for($y = Chunk::MIN_SUBCHUNK_INDEX, $writtenCount = 0; $writtenCount < $subChunkCount; ++$y, ++$writtenCount){ self::serializeSubChunk($chunk->getSubChunk($y), $blockMapper, $stream, false); diff --git a/src/world/World.php b/src/world/World.php index 6c2a6a9e5..4aa5ba7dc 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -134,8 +134,8 @@ class World implements ChunkManager{ /** @var int */ private static $worldIdCounter = 1; - public const Y_MAX = 256; - public const Y_MIN = 0; + public const Y_MAX = 320; + public const Y_MIN = -64; public const TIME_DAY = 1000; public const TIME_NOON = 6000; diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index 6a8dad59c..6e33e0c05 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -35,8 +35,8 @@ class Chunk{ public const DIRTY_FLAG_BLOCKS = 1 << 0; public const DIRTY_FLAG_BIOMES = 1 << 3; - public const MIN_SUBCHUNK_INDEX = 0; - public const MAX_SUBCHUNK_INDEX = 15; + public const MIN_SUBCHUNK_INDEX = -4; + public const MAX_SUBCHUNK_INDEX = 19; public const MAX_SUBCHUNKS = self::MAX_SUBCHUNK_INDEX - self::MIN_SUBCHUNK_INDEX + 1; public const EDGE_LENGTH = SubChunk::EDGE_LENGTH; diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index e3b8eeef4..6bf9552f4 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -123,11 +123,11 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } public function getWorldMinY() : int{ - return 0; + return -64; } public function getWorldMaxY() : int{ - return 256; + return 320; } public static function isValid(string $path) : bool{ @@ -514,25 +514,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $chunk = $chunkData->getChunk(); - //TODO: This ensures that negative subchunks don't get destroyed in newer worlds for as long as we don't yet - //support negative height. Since we don't save with a shift, if the old save had the subchunks shifted, we need - //to shift them to their correct positions to avoid destroying data. - //This can be removed once we support the full height. - if($previousVersion !== null && self::hasOffsetCavesAndCliffsSubChunks($previousVersion)){ - $subChunks = $chunk->getSubChunks(); - - for($y = -4; $y <= 20; $y++){ - $key = $index . ChunkDataKey::SUBCHUNK . chr($y + self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET); - if( - (!isset($subChunks[$y]) || !$chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)) && - ($subChunkData = $this->db->get($key)) !== false - ){ - $write->delete($key); - $write->put($index . ChunkDataKey::SUBCHUNK . chr($y & 0xff), $subChunkData); - } - } - } - if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)){ $subChunks = $chunk->getSubChunks(); From 3edb735850ba11c847dc14aa6fea6f7ae72f60b6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 15 Apr 2022 19:12:08 +0100 Subject: [PATCH 075/692] Regenerate PHPStan baseline --- tests/phpstan/configs/actual-problems.neon | 32 +--------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index d3776de3d..e1dbcda47 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -131,7 +131,7 @@ parameters: path: ../../../src/block/DragonEgg.php - - message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:getBlockAt\\(\\) expects int, float\\|int\\<0, max\\> given\\.$#" + message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:getBlockAt\\(\\) expects int, float\\|int\\<\\-64, max\\> given\\.$#" count: 1 path: ../../../src/block/DragonEgg.php @@ -955,11 +955,6 @@ parameters: count: 1 path: ../../../src/world/Explosion.php - - - message: "#^Only numeric types are allowed in /, float\\|null given on the left side\\.$#" - count: 1 - path: ../../../src/world/Explosion.php - - message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:getTileAt\\(\\) expects int, float\\|int given\\.$#" count: 1 @@ -1270,16 +1265,6 @@ parameters: count: 1 path: ../../../src/world/light/BlockLightUpdate.php - - - message: "#^Only numeric types are allowed in \\-, int\\|null given on the right side\\.$#" - count: 1 - path: ../../../src/world/light/BlockLightUpdate.php - - - - message: "#^Parameter \\#4 \\$newLevel of method pocketmine\\\\world\\\\light\\\\LightUpdate\\:\\:setAndUpdateLight\\(\\) expects int, int\\|null given\\.$#" - count: 1 - path: ../../../src/world/light/BlockLightUpdate.php - - message: "#^Property pocketmine\\\\world\\\\light\\\\LightPopulationTask\\:\\:\\$resultBlockLightArrays \\(string\\) does not accept string\\|null\\.$#" count: 1 @@ -1300,11 +1285,6 @@ parameters: count: 1 path: ../../../src/world/light/LightUpdate.php - - - message: "#^Only numeric types are allowed in \\-, int\\|null given on the right side\\.$#" - count: 1 - path: ../../../src/world/light/LightUpdate.php - - message: "#^Cannot call method getBlockSkyLightArray\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 @@ -1340,21 +1320,11 @@ parameters: count: 1 path: ../../../src/world/light/SkyLightUpdate.php - - - message: "#^Only booleans are allowed in an if condition, bool\\|null given\\.$#" - count: 3 - path: ../../../src/world/light/SkyLightUpdate.php - - message: "#^Only numeric types are allowed in \\+, int\\|false given on the left side\\.$#" count: 1 path: ../../../src/world/light/SkyLightUpdate.php - - - message: "#^Only numeric types are allowed in \\-, int\\|null given on the right side\\.$#" - count: 1 - path: ../../../src/world/light/SkyLightUpdate.php - - message: "#^Parameter \\#1 \\$chunk of static method pocketmine\\\\world\\\\light\\\\SkyLightUpdate\\:\\:recalculateHeightMap\\(\\) expects pocketmine\\\\world\\\\format\\\\Chunk, pocketmine\\\\world\\\\format\\\\Chunk\\|null given\\.$#" count: 1 From 63b2e7cc4f221a8c156f3704718d4ec7a8ea4edb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 15 Apr 2022 19:25:39 +0100 Subject: [PATCH 076/692] fix CS --- src/network/mcpe/convert/RuntimeBlockMapping.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index b4c323622..e30d1ca2e 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -80,7 +80,6 @@ final class RuntimeBlockMapping{ $networkId = $this->fallbackStateId; } - return $this->networkIdCache[$internalStateId] = $networkId; } From 42474c14aa98a23f22d70e22a616406f6909db51 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 15 Apr 2022 19:47:25 +0100 Subject: [PATCH 077/692] World: reduce blockhash padding for Y axis to accommodate new height range --- src/world/World.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/World.php b/src/world/World.php index 4aa5ba7dc..48c3d5b47 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -329,7 +329,7 @@ class World implements ChunkManager{ private const MORTON3D_BIT_SIZE = 21; private const BLOCKHASH_Y_BITS = 9; - private const BLOCKHASH_Y_PADDING = 128; //size (in blocks) of padding after both boundaries of the Y axis + private const BLOCKHASH_Y_PADDING = 64; //size (in blocks) of padding after both boundaries of the Y axis private const BLOCKHASH_Y_OFFSET = self::BLOCKHASH_Y_PADDING - self::Y_MIN; private const BLOCKHASH_Y_MASK = (1 << self::BLOCKHASH_Y_BITS) - 1; private const BLOCKHASH_XZ_MASK = (1 << self::MORTON3D_BIT_SIZE) - 1; From 8edf2c4507ccee595637fc06ceb98fb90cf9babb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Apr 2022 15:31:39 +0100 Subject: [PATCH 078/692] Update blockstate upgrade schemas --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 29f74a681..e2e67bbe5 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "871e5fa8ea56458c05154697f7bb2be3490441d7" + "reference": "90aa2b01ba9c863ecb5818210235ad304b1b13b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/871e5fa8ea56458c05154697f7bb2be3490441d7", - "reference": "871e5fa8ea56458c05154697f7bb2be3490441d7", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/90aa2b01ba9c863ecb5818210235ad304b1b13b3", + "reference": "90aa2b01ba9c863ecb5818210235ad304b1b13b3", "shasum": "" }, "default-branch": true, @@ -272,7 +272,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-02-22T22:00:27+00:00" + "time": "2022-04-15T17:44:42+00:00" }, { "name": "pocketmine/bedrock-data", From cfea0dac76e7f942c688808b8a7f70d292f36c58 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Apr 2022 14:22:31 +0100 Subject: [PATCH 079/692] Push back to 4.4.0 --- src/VersionInfo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index c2b9b3974..3da89892c 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,7 +31,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "4.3.0"; + public const BASE_VERSION = "4.4.0"; public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; From 43e61336cfdb81f43cd8bed9800bbc649f7599eb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Apr 2022 14:58:32 +0100 Subject: [PATCH 080/692] Support 1.18.30 worlds --- .../bedrock/blockstate/BlockTypeNames.php | 29 ++++++++++++------- .../BlockObjectToBlockStateSerializer.php | 8 ++--- .../BlockStateToBlockObjectDeserializer.php | 8 ++--- src/world/format/io/data/BedrockWorldData.php | 4 +-- src/world/format/io/leveldb/ChunkVersion.php | 1 + src/world/format/io/leveldb/LevelDB.php | 3 +- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/blockstate/BlockTypeNames.php index 01c116198..93b637089 100644 --- a/src/data/bedrock/blockstate/BlockTypeNames.php +++ b/src/data/bedrock/blockstate/BlockTypeNames.php @@ -139,7 +139,7 @@ final class BlockTypeNames{ public const COMMAND_BLOCK = "minecraft:command_block"; public const COMPOSTER = "minecraft:composter"; public const CONCRETE = "minecraft:concrete"; - public const CONCRETEPOWDER = "minecraft:concretePowder"; + public const CONCRETE_POWDER = "minecraft:concrete_powder"; public const CONDUIT = "minecraft:conduit"; public const COPPER_BLOCK = "minecraft:copper_block"; public const COPPER_ORE = "minecraft:copper_ore"; @@ -374,7 +374,7 @@ final class BlockTypeNames{ public const FLOWING_LAVA = "minecraft:flowing_lava"; public const FLOWING_WATER = "minecraft:flowing_water"; public const FRAME = "minecraft:frame"; - public const FROG_EGG = "minecraft:frog_egg"; + public const FROG_SPAWN = "minecraft:frog_spawn"; public const FROSTED_ICE = "minecraft:frosted_ice"; public const FURNACE = "minecraft:furnace"; public const GILDED_BLACKSTONE = "minecraft:gilded_blackstone"; @@ -413,7 +413,7 @@ final class BlockTypeNames{ public const INFESTED_DEEPSLATE = "minecraft:infested_deepslate"; public const INFO_UPDATE = "minecraft:info_update"; public const INFO_UPDATE2 = "minecraft:info_update2"; - public const INVISIBLEBEDROCK = "minecraft:invisibleBedrock"; + public const INVISIBLE_BEDROCK = "minecraft:invisible_bedrock"; public const IRON_BARS = "minecraft:iron_bars"; public const IRON_BLOCK = "minecraft:iron_block"; public const IRON_DOOR = "minecraft:iron_door"; @@ -467,6 +467,9 @@ final class BlockTypeNames{ public const MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake"; public const MAGENTA_GLAZED_TERRACOTTA = "minecraft:magenta_glazed_terracotta"; public const MAGMA = "minecraft:magma"; + public const MANGROVE_LEAVES = "minecraft:mangrove_leaves"; + public const MANGROVE_PROPAGULE = "minecraft:mangrove_propagule"; + public const MANGROVE_PROPAGULE_HANGING = "minecraft:mangrove_propagule_hanging"; public const MEDIUM_AMETHYST_BUD = "minecraft:medium_amethyst_bud"; public const MELON_BLOCK = "minecraft:melon_block"; public const MELON_STEM = "minecraft:melon_stem"; @@ -477,10 +480,14 @@ final class BlockTypeNames{ public const MOSSY_COBBLESTONE = "minecraft:mossy_cobblestone"; public const MOSSY_COBBLESTONE_STAIRS = "minecraft:mossy_cobblestone_stairs"; public const MOSSY_STONE_BRICK_STAIRS = "minecraft:mossy_stone_brick_stairs"; - public const MOVINGBLOCK = "minecraft:movingBlock"; + public const MOVING_BLOCK = "minecraft:moving_block"; + public const MUD = "minecraft:mud"; + public const MUD_BRICK_DOUBLE_SLAB = "minecraft:mud_brick_double_slab"; + public const MUD_BRICK_SLAB = "minecraft:mud_brick_slab"; + public const MUD_BRICK_STAIRS = "minecraft:mud_brick_stairs"; + public const MUD_BRICK_WALL = "minecraft:mud_brick_wall"; + public const MUD_BRICKS = "minecraft:mud_bricks"; public const MYCELIUM = "minecraft:mycelium"; - public const MYSTERIOUS_FRAME = "minecraft:mysterious_frame"; - public const MYSTERIOUS_FRAME_SLOT = "minecraft:mysterious_frame_slot"; public const NETHER_BRICK = "minecraft:nether_brick"; public const NETHER_BRICK_FENCE = "minecraft:nether_brick_fence"; public const NETHER_BRICK_STAIRS = "minecraft:nether_brick_stairs"; @@ -506,12 +513,13 @@ final class BlockTypeNames{ public const OXIDIZED_CUT_COPPER_STAIRS = "minecraft:oxidized_cut_copper_stairs"; public const OXIDIZED_DOUBLE_CUT_COPPER_SLAB = "minecraft:oxidized_double_cut_copper_slab"; public const PACKED_ICE = "minecraft:packed_ice"; + public const PACKED_MUD = "minecraft:packed_mud"; public const PEARLESCENT_FROGLIGHT = "minecraft:pearlescent_froglight"; public const PINK_CANDLE = "minecraft:pink_candle"; public const PINK_CANDLE_CAKE = "minecraft:pink_candle_cake"; public const PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta"; public const PISTON = "minecraft:piston"; - public const PISTONARMCOLLISION = "minecraft:pistonArmCollision"; + public const PISTON_ARM_COLLISION = "minecraft:piston_arm_collision"; public const PLANKS = "minecraft:planks"; public const PODZOL = "minecraft:podzol"; public const POINTED_DRIPSTONE = "minecraft:pointed_dripstone"; @@ -575,6 +583,7 @@ final class BlockTypeNames{ public const REDSTONE_TORCH = "minecraft:redstone_torch"; public const REDSTONE_WIRE = "minecraft:redstone_wire"; public const REEDS = "minecraft:reeds"; + public const REINFORCED_DEEPSLATE = "minecraft:reinforced_deepslate"; public const REPEATING_COMMAND_BLOCK = "minecraft:repeating_command_block"; public const RESERVED6 = "minecraft:reserved6"; public const RESPAWN_ANCHOR = "minecraft:respawn_anchor"; @@ -588,9 +597,9 @@ final class BlockTypeNames{ public const SCULK_SENSOR = "minecraft:sculk_sensor"; public const SCULK_SHRIEKER = "minecraft:sculk_shrieker"; public const SCULK_VEIN = "minecraft:sculk_vein"; + public const SEA_LANTERN = "minecraft:sea_lantern"; public const SEA_PICKLE = "minecraft:sea_pickle"; public const SEAGRASS = "minecraft:seagrass"; - public const SEALANTERN = "minecraft:seaLantern"; public const SHROOMLIGHT = "minecraft:shroomlight"; public const SHULKER_BOX = "minecraft:shulker_box"; public const SILVER_GLAZED_TERRACOTTA = "minecraft:silver_glazed_terracotta"; @@ -629,7 +638,7 @@ final class BlockTypeNames{ public const STANDING_BANNER = "minecraft:standing_banner"; public const STANDING_SIGN = "minecraft:standing_sign"; public const STICKY_PISTON = "minecraft:sticky_piston"; - public const STICKYPISTONARMCOLLISION = "minecraft:stickyPistonArmCollision"; + public const STICKY_PISTON_ARM_COLLISION = "minecraft:sticky_piston_arm_collision"; public const STONE = "minecraft:stone"; public const STONE_BRICK_STAIRS = "minecraft:stone_brick_stairs"; public const STONE_BUTTON = "minecraft:stone_button"; @@ -662,7 +671,7 @@ final class BlockTypeNames{ public const TORCH = "minecraft:torch"; public const TRAPDOOR = "minecraft:trapdoor"; public const TRAPPED_CHEST = "minecraft:trapped_chest"; - public const TRIPWIRE = "minecraft:tripWire"; + public const TRIP_WIRE = "minecraft:trip_wire"; public const TRIPWIRE_HOOK = "minecraft:tripwire_hook"; public const TUFF = "minecraft:tuff"; public const TURTLE_EGG = "minecraft:turtle_egg"; diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index 5e29f1c83..88bce58ef 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -396,7 +396,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeColor($block->getColor()); }); $this->map(Blocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ - return Writer::create(Ids::CONCRETEPOWDER) + return Writer::create(Ids::CONCRETE_POWDER) ->writeColor($block->getColor()); }); $this->map(Blocks::CORAL(), function(Coral $block) : Writer{ @@ -681,7 +681,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); $this->map(Blocks::INFO_UPDATE(), fn() => new Writer(Ids::INFO_UPDATE)); $this->map(Blocks::INFO_UPDATE2(), fn() => new Writer(Ids::INFO_UPDATE2)); - $this->map(Blocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLEBEDROCK)); + $this->map(Blocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLE_BEDROCK)); $this->map(Blocks::IRON(), fn() => new Writer(Ids::IRON_BLOCK)); $this->map(Blocks::IRON_BARS(), fn() => new Writer(Ids::IRON_BARS)); $this->map(Blocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); @@ -925,7 +925,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); $this->map(Blocks::SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SANDSTONE_STAIRS))); $this->map(Blocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); - $this->map(Blocks::SEA_LANTERN(), fn() => new Writer(Ids::SEALANTERN)); + $this->map(Blocks::SEA_LANTERN(), fn() => new Writer(Ids::SEA_LANTERN)); $this->map(Blocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ return Writer::create(Ids::SEA_PICKLE) ->writeBool(StateNames::DEAD_BIT, !$block->isUnderwater()) @@ -1045,7 +1045,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeHorizontalFacing($block->getFacing()); }); $this->map(Blocks::TRIPWIRE(), function(Tripwire $block) : Writer{ - return Writer::create(Ids::TRIPWIRE) + return Writer::create(Ids::TRIP_WIRE) ->writeBool(StateNames::ATTACHED_BIT, $block->isConnected()) ->writeBool(StateNames::DISARMED_BIT, $block->isDisarmed()) ->writeBool(StateNames::POWERED_BIT, $block->isTriggered()) diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 3da7d1508..323cdc63d 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -226,7 +226,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CONCRETE() ->setColor($in->readColor()); }); - $this->map(Ids::CONCRETEPOWDER, function(Reader $in) : Block{ + $this->map(Ids::CONCRETE_POWDER, function(Reader $in) : Block{ return Blocks::CONCRETE_POWDER() ->setColor($in->readColor()); }); @@ -531,7 +531,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::ICE, fn() => Blocks::ICE()); $this->map(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); $this->map(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); - $this->map(Ids::INVISIBLEBEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); + $this->map(Ids::INVISIBLE_BEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); $this->map(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); $this->map(Ids::IRON_BLOCK, fn() => Blocks::IRON()); $this->map(Ids::IRON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::IRON_DOOR(), $in)); @@ -838,7 +838,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }) ->setReady($in->readBool(StateNames::AGE_BIT)); }); - $this->map(Ids::SEALANTERN, fn() => Blocks::SEA_LANTERN()); + $this->map(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); $this->map(Ids::SEA_PICKLE, function(Reader $in) : Block{ return Blocks::SEA_PICKLE() ->setCount($in->readBoundedInt(StateNames::CLUSTER_COUNT, 0, 3) + 1) @@ -983,7 +983,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::TRAPPED_CHEST() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::TRIPWIRE, function(Reader $in) : Block{ + $this->map(Ids::TRIP_WIRE, function(Reader $in) : Block{ return Blocks::TRIPWIRE() ->setConnected($in->readBool(StateNames::ATTACHED_BIT)) ->setDisarmed($in->readBool(StateNames::DISARMED_BIT)) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 80184b9ec..dae9e8c08 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -47,13 +47,13 @@ use function time; class BedrockWorldData extends BaseNbtWorldData{ - public const CURRENT_STORAGE_VERSION = 8; + public const CURRENT_STORAGE_VERSION = 9; /** * WARNING: In the future, this should be only as high as the newest world format currently supported. We don't * actually support worlds from 1.18.10 yet, but due to an old stupid bug, all worlds created by PM will report this * version. */ - public const CURRENT_STORAGE_NETWORK_VERSION = 486; // 1.18.10 + public const CURRENT_STORAGE_NETWORK_VERSION = 503; // 1.18.10 public const GENERATOR_LIMITED = 0; public const GENERATOR_INFINITE = 1; diff --git a/src/world/format/io/leveldb/ChunkVersion.php b/src/world/format/io/leveldb/ChunkVersion.php index e4fb74526..7a9208dba 100644 --- a/src/world/format/io/leveldb/ChunkVersion.php +++ b/src/world/format/io/leveldb/ChunkVersion.php @@ -70,4 +70,5 @@ final class ChunkVersion{ public const v1_18_0_24_beta = 37; public const v1_18_0_24_unused = 38; public const v1_18_0_25_beta = 39; + public const v1_18_30 = 40; } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 6bf9552f4..4c4b9d1b1 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -78,7 +78,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ protected const ENTRY_FLAT_WORLD_LAYERS = "game_flatworldlayers"; - protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_18_0_25_beta; + protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_18_30; protected const CURRENT_LEVEL_SUBCHUNK_VERSION = SubChunkVersion::PALETTED_MULTI; private const CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET = 4; @@ -296,6 +296,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; switch($chunkVersion){ + case ChunkVersion::v1_18_30: case ChunkVersion::v1_18_0_25_beta: case ChunkVersion::v1_18_0_24_unused: case ChunkVersion::v1_18_0_24_beta: From 37f0ccdb7e3d2fb5fd3c1b791f11eed4852a7b2f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Apr 2022 14:58:57 +0100 Subject: [PATCH 081/692] fix CS --- src/network/mcpe/convert/RuntimeBlockMapping.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 82ef9266f..2913e63c5 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -28,7 +28,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\data\bedrock\blockstate\BlockStateSerializer; use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\protocol\SimulationTypePacket; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; @@ -57,7 +56,7 @@ final class RuntimeBlockMapping{ private static function make() : self{ return new self(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")); } - + public function __construct(string $canonicalBlockStatesFile){ $contents = Utils::assumeNotFalse(file_get_contents($canonicalBlockStatesFile), "Missing required resource file"); $this->blockStateDictionary = BlockStateDictionary::loadFromString($contents); From 6c92e73b4648c85d852ea9a76ee04320e2ef0fe9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 15:30:35 +0100 Subject: [PATCH 082/692] Switch to modernized BedrockData --- composer.json | 2 +- composer.lock | 17 +++++++++-------- src/data/bedrock/LegacyBlockIdToStringIdMap.php | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 001acdafd..1362c107a 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ "fgrosse/phpasn1": "^2.3", "netresearch/jsonmapper": "^4.0", "pocketmine/bedrock-block-upgrade-schema": "dev-master@dev", - "pocketmine/bedrock-data": "~1.7.0+bedrock-1.18.30", + "pocketmine/bedrock-data": "dev-modern-world-support@dev", "pocketmine/bedrock-protocol": "~9.0.0+bedrock-1.18.30", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", diff --git a/composer.lock b/composer.lock index 95591e8e4..1b627715e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0d40189fe566643df70bf3eee5a9b126", + "content-hash": "f9bd717430394f8e47f421ce1aecaf32", "packages": [ { "name": "adhocore/json-comment", @@ -276,16 +276,16 @@ }, { "name": "pocketmine/bedrock-data", - "version": "1.7.0+bedrock-1.18.30", + "version": "dev-modern-world-support", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "c8f323ff0cbdb36a5d95e7e4a23969f562445be0" + "reference": "5f94ed0af2e3f301671b1d10073219133178c9c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/c8f323ff0cbdb36a5d95e7e4a23969f562445be0", - "reference": "c8f323ff0cbdb36a5d95e7e4a23969f562445be0", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/5f94ed0af2e3f301671b1d10073219133178c9c4", + "reference": "5f94ed0af2e3f301671b1d10073219133178c9c4", "shasum": "" }, "type": "library", @@ -296,9 +296,9 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.18.30" + "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-04-20T12:40:59+00:00" + "time": "2022-05-12T14:21:14+00:00" }, { "name": "pocketmine/bedrock-protocol", @@ -3442,7 +3442,8 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "pocketmine/bedrock-block-upgrade-schema": 20 + "pocketmine/bedrock-block-upgrade-schema": 20, + "pocketmine/bedrock-data": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/src/data/bedrock/LegacyBlockIdToStringIdMap.php b/src/data/bedrock/LegacyBlockIdToStringIdMap.php index 5c52fa972..1165cf9e0 100644 --- a/src/data/bedrock/LegacyBlockIdToStringIdMap.php +++ b/src/data/bedrock/LegacyBlockIdToStringIdMap.php @@ -30,6 +30,6 @@ final class LegacyBlockIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ use SingletonTrait; public function __construct(){ - parent::__construct(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'block_id_map.json')); + parent::__construct(Path::join(\pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'block_legacy_id_map.json')); } } From cb97f37d131e062b01c0058744a28cefe9878a9f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:26:38 +0100 Subject: [PATCH 083/692] First look at modern-spec serializer/deserializer for items this is not yet used by anything --- src/data/bedrock/BlockItemIdMap.php | 63 ++ src/data/bedrock/item/ItemDeserializer.php | 703 ++++++++++++++++++ src/data/bedrock/item/ItemSerializer.php | 567 ++++++++++++++ src/data/bedrock/item/ItemTypeIds.php | 409 ++++++++++ src/data/bedrock/item/SavedItemData.php | 108 +++ src/item/VanillaItems.php | 18 + .../item/ItemSerializerDeserializerTest.php | 66 ++ 7 files changed, 1934 insertions(+) create mode 100644 src/data/bedrock/BlockItemIdMap.php create mode 100644 src/data/bedrock/item/ItemDeserializer.php create mode 100644 src/data/bedrock/item/ItemSerializer.php create mode 100644 src/data/bedrock/item/ItemTypeIds.php create mode 100644 src/data/bedrock/item/SavedItemData.php create mode 100644 tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php diff --git a/src/data/bedrock/BlockItemIdMap.php b/src/data/bedrock/BlockItemIdMap.php new file mode 100644 index 000000000..dd8fb8bb7 --- /dev/null +++ b/src/data/bedrock/BlockItemIdMap.php @@ -0,0 +1,63 @@ + $blockToItemId + */ + public function __construct(private array $blockToItemId){} + + public function lookupItemId(string $blockId) : ?string{ + return $this->blockToItemId[$blockId] ?? null; + } + + public function lookupBlockId(string $itemId) : ?string{ + //we don't need this for any functionality, so we're not concerned about performance here + //however, it might be nice to have for debugging + $blockId = array_search($itemId, $this->blockToItemId, true); + return $blockId !== false ? $blockId : null; + } +} \ No newline at end of file diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php new file mode 100644 index 000000000..6ecedd614 --- /dev/null +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -0,0 +1,703 @@ + + */ + private array $deserializers = []; + + public function __construct(){ + $this->registerDeserializers(); + } + + /** + * @phpstan-param \Closure(Data) : Item $deserializer + */ + public function map(string $id, \Closure $deserializer) : void{ + $this->deserializers[$id] = $deserializer; + } + + public function deserialize(Data $data) : Item{ + if(($blockData = $data->getBlock()) !== null){ + //TODO: this is rough duct tape; we need a better way to deal with this + try{ + $block = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockData); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Failed to deserialize item data: " . $e->getMessage(), 0, $e); + } + + //TODO: worth caching this or not? + return BlockFactory::getInstance()->fromFullBlock($block)->asItem(); + } + $id = $data->getName(); + if(!isset($this->deserializers[$id])){ + throw new SavedDataLoadingException("No deserializer found for ID $id"); + } + + return ($this->deserializers[$id])($data); + } + + private function registerDeserializers() : void{ + $this->map(Ids::ACACIA_BOAT, fn() => Items::ACACIA_BOAT()); + $this->map(Ids::ACACIA_DOOR, fn() => Blocks::ACACIA_DOOR()->asItem()); + $this->map(Ids::ACACIA_SIGN, fn() => Blocks::ACACIA_SIGN()->asItem()); + //TODO: minecraft:agent_spawn_egg + //TODO: minecraft:allay_spawn_egg + //TODO: minecraft:amethyst_shard + $this->map(Ids::APPLE, fn() => Items::APPLE()); + //TODO: minecraft:armor_stand + $this->map(Ids::ARROW, function(Data $data) : Item{ + if($data->getMeta() === 0){ + return Items::ARROW(); + } + throw new SavedDataLoadingException("Tipped arrows are not implemented yet"); + }); + //TODO: minecraft:axolotl_bucket + //TODO: minecraft:axolotl_spawn_egg + $this->map(Ids::BAKED_POTATO, fn() => Items::BAKED_POTATO()); + //TODO: minecraft:balloon + $this->map(Ids::BANNER, function(Data $data) : Item{ + $meta = $data->getMeta(); + $color = DyeColorIdMap::getInstance()->fromInvertedId($meta); + if($color === null){ + throw new SavedDataLoadingException("Unknown banner meta $meta"); + } + return Items::BANNER()->setColor($color); + }); + //TODO: minecraft:banner_pattern + //TODO: minecraft:bat_spawn_egg + $this->map(Ids::BED, function(Data $data) : Item{ + $meta = $data->getMeta(); + $color = DyeColorIdMap::getInstance()->fromId($meta); + if($color === null){ + throw new SavedDataLoadingException("Unknown bed meta $meta"); + } + return Blocks::BED()->setColor($color)->asItem(); + }); + //TODO: minecraft:bee_spawn_egg + $this->map(Ids::BEEF, fn() => Items::RAW_BEEF()); + $this->map(Ids::BEETROOT, fn() => Items::BEETROOT()); + $this->map(Ids::BEETROOT_SEEDS, fn() => Items::BEETROOT_SEEDS()); + $this->map(Ids::BEETROOT_SOUP, fn() => Items::BEETROOT_SOUP()); + $this->map(Ids::BIRCH_BOAT, fn() => Items::BIRCH_BOAT()); + $this->map(Ids::BIRCH_DOOR, fn() => Blocks::BIRCH_DOOR()->asItem()); + $this->map(Ids::BIRCH_SIGN, fn() => Blocks::BIRCH_SIGN()->asItem()); + $this->map(Ids::BLACK_DYE, fn() => Items::BLACK_DYE()); + $this->map(Ids::BLAZE_POWDER, fn() => Items::BLAZE_POWDER()); + $this->map(Ids::BLAZE_ROD, fn() => Items::BLAZE_ROD()); + //TODO: minecraft:blaze_spawn_egg + $this->map(Ids::BLEACH, fn() => Items::BLEACH()); + $this->map(Ids::BLUE_DYE, fn() => Items::BLUE_DYE()); + $this->map(Ids::BOAT, function(Data $data) : Item{ + try{ + $treeType = TreeType::fromMagicNumber($data->getMeta()); + }catch(\InvalidArgumentException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + return match($treeType->id()){ + TreeType::OAK()->id() => Items::OAK_BOAT(), + TreeType::SPRUCE()->id() => Items::SPRUCE_BOAT(), + TreeType::BIRCH()->id() => Items::BIRCH_BOAT(), + TreeType::JUNGLE()->id() => Items::JUNGLE_BOAT(), + TreeType::ACACIA()->id() => Items::ACACIA_BOAT(), + TreeType::DARK_OAK()->id() => Items::DARK_OAK_BOAT(), + default => throw new AssumptionFailedError("Unexpected tree type " . $treeType->name()) + }; + }); + $this->map(Ids::BONE, fn() => Items::BONE()); + $this->map(Ids::BONE_MEAL, fn() => Items::BONE_MEAL()); + $this->map(Ids::BOOK, fn() => Items::BOOK()); + //TODO: minecraft:bordure_indented_banner_pattern + $this->map(Ids::BOW, fn() => Items::BOW()); + $this->map(Ids::BOWL, fn() => Items::BOWL()); + $this->map(Ids::BREAD, fn() => Items::BREAD()); + $this->map(Ids::BREWING_STAND, fn() => Blocks::BREWING_STAND()->asItem()); + $this->map(Ids::BRICK, fn() => Items::BRICK()); + $this->map(Ids::BROWN_DYE, fn() => Items::BROWN_DYE()); + $this->map(Ids::BUCKET, fn() => Items::BUCKET()); + $this->map(Ids::CAKE, fn() => Blocks::CAKE()->asItem()); + //TODO: minecraft:camera + //TODO: minecraft:campfire + $this->map(Ids::CARROT, fn() => Items::CARROT()); + //TODO: minecraft:carrot_on_a_stick + //TODO: minecraft:cat_spawn_egg + //TODO: minecraft:cauldron + //TODO: minecraft:cave_spider_spawn_egg + //TODO: minecraft:chain + $this->map(Ids::CHAINMAIL_BOOTS, fn() => Items::CHAINMAIL_BOOTS()); + $this->map(Ids::CHAINMAIL_CHESTPLATE, fn() => Items::CHAINMAIL_CHESTPLATE()); + $this->map(Ids::CHAINMAIL_HELMET, fn() => Items::CHAINMAIL_HELMET()); + $this->map(Ids::CHAINMAIL_LEGGINGS, fn() => Items::CHAINMAIL_LEGGINGS()); + $this->map(Ids::CHARCOAL, fn() => Items::CHARCOAL()); + //TODO: minecraft:chest_minecart + $this->map(Ids::CHICKEN, fn() => Items::RAW_CHICKEN()); + //TODO: minecraft:chicken_spawn_egg + $this->map(Ids::CHORUS_FRUIT, fn() => Items::CHORUS_FRUIT()); + $this->map(Ids::CLAY_BALL, fn() => Items::CLAY()); + $this->map(Ids::CLOCK, fn() => Items::CLOCK()); + $this->map(Ids::COAL, fn() => Items::COAL()); + $this->map(Ids::COCOA_BEANS, fn() => Items::COCOA_BEANS()); + $this->map(Ids::COD, fn() => Items::RAW_FISH()); + //TODO: minecraft:cod_bucket + //TODO: minecraft:cod_spawn_egg + //TODO: minecraft:command_block_minecart + $this->map(Ids::COMPARATOR, fn() => Blocks::REDSTONE_COMPARATOR()->asItem()); + $this->map(Ids::COMPASS, fn() => Items::COMPASS()); + $this->map(Ids::COMPOUND, fn(Data $data) => match($data->getMeta()){ + CompoundTypeIds::SALT => Items::CHEMICAL_SALT(), + CompoundTypeIds::SODIUM_OXIDE => Items::CHEMICAL_SODIUM_OXIDE(), + CompoundTypeIds::SODIUM_HYDROXIDE => Items::CHEMICAL_SODIUM_HYDROXIDE(), + CompoundTypeIds::MAGNESIUM_NITRATE => Items::CHEMICAL_MAGNESIUM_NITRATE(), + CompoundTypeIds::IRON_SULPHIDE => Items::CHEMICAL_IRON_SULPHIDE(), + CompoundTypeIds::LITHIUM_HYDRIDE => Items::CHEMICAL_LITHIUM_HYDRIDE(), + CompoundTypeIds::SODIUM_HYDRIDE => Items::CHEMICAL_SODIUM_HYDRIDE(), + CompoundTypeIds::CALCIUM_BROMIDE => Items::CHEMICAL_CALCIUM_BROMIDE(), + CompoundTypeIds::MAGNESIUM_OXIDE => Items::CHEMICAL_MAGNESIUM_OXIDE(), + CompoundTypeIds::SODIUM_ACETATE => Items::CHEMICAL_SODIUM_ACETATE(), + CompoundTypeIds::LUMINOL => Items::CHEMICAL_LUMINOL(), + CompoundTypeIds::CHARCOAL => Items::CHEMICAL_CHARCOAL(), + CompoundTypeIds::SUGAR => Items::CHEMICAL_SUGAR(), + CompoundTypeIds::ALUMINIUM_OXIDE => Items::CHEMICAL_ALUMINIUM_OXIDE(), + CompoundTypeIds::BORON_TRIOXIDE => Items::CHEMICAL_BORON_TRIOXIDE(), + CompoundTypeIds::SOAP => Items::CHEMICAL_SOAP(), + CompoundTypeIds::POLYETHYLENE => Items::CHEMICAL_POLYETHYLENE(), + CompoundTypeIds::RUBBISH => Items::CHEMICAL_RUBBISH(), + CompoundTypeIds::MAGNESIUM_SALTS => Items::CHEMICAL_MAGNESIUM_SALTS(), + CompoundTypeIds::SULPHATE => Items::CHEMICAL_SULPHATE(), + CompoundTypeIds::BARIUM_SULPHATE => Items::CHEMICAL_BARIUM_SULPHATE(), + CompoundTypeIds::POTASSIUM_CHLORIDE => Items::CHEMICAL_POTASSIUM_CHLORIDE(), + CompoundTypeIds::MERCURIC_CHLORIDE => Items::CHEMICAL_MERCURIC_CHLORIDE(), + CompoundTypeIds::CERIUM_CHLORIDE => Items::CHEMICAL_CERIUM_CHLORIDE(), + CompoundTypeIds::TUNGSTEN_CHLORIDE => Items::CHEMICAL_TUNGSTEN_CHLORIDE(), + CompoundTypeIds::CALCIUM_CHLORIDE => Items::CHEMICAL_CALCIUM_CHLORIDE(), + CompoundTypeIds::WATER => Items::CHEMICAL_WATER(), + CompoundTypeIds::GLUE => Items::CHEMICAL_GLUE(), + CompoundTypeIds::HYPOCHLORITE => Items::CHEMICAL_HYPOCHLORITE(), + CompoundTypeIds::CRUDE_OIL => Items::CHEMICAL_CRUDE_OIL(), + CompoundTypeIds::LATEX => Items::CHEMICAL_LATEX(), + CompoundTypeIds::POTASSIUM_IODIDE => Items::CHEMICAL_POTASSIUM_IODIDE(), + CompoundTypeIds::SODIUM_FLUORIDE => Items::CHEMICAL_SODIUM_FLUORIDE(), + CompoundTypeIds::BENZENE => Items::CHEMICAL_BENZENE(), + CompoundTypeIds::INK => Items::CHEMICAL_INK(), + CompoundTypeIds::HYDROGEN_PEROXIDE => Items::CHEMICAL_HYDROGEN_PEROXIDE(), + CompoundTypeIds::AMMONIA => Items::CHEMICAL_AMMONIA(), + CompoundTypeIds::SODIUM_HYPOCHLORITE => Items::CHEMICAL_SODIUM_HYPOCHLORITE(), + default => throw new SavedDataLoadingException("Unknown chemical meta " . $data->getMeta()) + }); + $this->map(Ids::COOKED_BEEF, fn() => Items::STEAK()); + $this->map(Ids::COOKED_CHICKEN, fn() => Items::COOKED_CHICKEN()); + $this->map(Ids::COOKED_COD, fn() => Items::COOKED_FISH()); + $this->map(Ids::COOKED_MUTTON, fn() => Items::COOKED_MUTTON()); + $this->map(Ids::COOKED_PORKCHOP, fn() => Items::COOKED_PORKCHOP()); + $this->map(Ids::COOKED_RABBIT, fn() => Items::COOKED_RABBIT()); + $this->map(Ids::COOKED_SALMON, fn() => Items::COOKED_SALMON()); + $this->map(Ids::COOKIE, fn() => Items::COOKIE()); + //TODO: minecraft:copper_ingot + //TODO: minecraft:cow_spawn_egg + //TODO: minecraft:creeper_banner_pattern + //TODO: minecraft:creeper_spawn_egg + //TODO: minecraft:crimson_door + //TODO: minecraft:crimson_sign + //TODO: minecraft:crossbow + $this->map(Ids::CYAN_DYE, fn() => Items::CYAN_DYE()); + $this->map(Ids::DARK_OAK_BOAT, fn() => Items::DARK_OAK_BOAT()); + $this->map(Ids::DARK_OAK_DOOR, fn() => Blocks::DARK_OAK_DOOR()->asItem()); + $this->map(Ids::DARK_OAK_SIGN, fn() => Blocks::DARK_OAK_SIGN()->asItem()); + $this->map(Ids::DIAMOND, fn() => Items::DIAMOND()); + $this->map(Ids::DIAMOND_AXE, fn() => Items::DIAMOND_AXE()); + $this->map(Ids::DIAMOND_BOOTS, fn() => Items::DIAMOND_BOOTS()); + $this->map(Ids::DIAMOND_CHESTPLATE, fn() => Items::DIAMOND_CHESTPLATE()); + $this->map(Ids::DIAMOND_HELMET, fn() => Items::DIAMOND_HELMET()); + $this->map(Ids::DIAMOND_HOE, fn() => Items::DIAMOND_HOE()); + //TODO: minecraft:diamond_horse_armor + $this->map(Ids::DIAMOND_LEGGINGS, fn() => Items::DIAMOND_LEGGINGS()); + $this->map(Ids::DIAMOND_PICKAXE, fn() => Items::DIAMOND_PICKAXE()); + $this->map(Ids::DIAMOND_SHOVEL, fn() => Items::DIAMOND_SHOVEL()); + $this->map(Ids::DIAMOND_SWORD, fn() => Items::DIAMOND_SWORD()); + //TODO: minecraft:dolphin_spawn_egg + //TODO: minecraft:donkey_spawn_egg + $this->map(Ids::DRAGON_BREATH, fn() => Items::DRAGON_BREATH()); + $this->map(Ids::DRIED_KELP, fn() => Items::DRIED_KELP()); + //TODO: minecraft:drowned_spawn_egg + $this->map(Ids::DYE, function(Data $data) : Item{ + $meta = $data->getMeta(); + $item = match($meta) { + 0 => Items::INK_SAC(), + 3 => Items::COCOA_BEANS(), + 4 => Items::LAPIS_LAZULI(), + 15 => Items::BONE_MEAL(), + 16 => Items::BLACK_DYE(), + 17 => Items::BROWN_DYE(), + 18 => Items::BLUE_DYE(), + 19 => Items::WHITE_DYE(), + default => null + }; + if($item !== null){ + return $item; + } + $dyeColor = DyeColorIdMap::getInstance()->fromInvertedId($meta); + if($dyeColor === null){ + throw new SavedDataLoadingException("Unknown dye meta $meta"); + } + return match($dyeColor->id()){ + DyeColor::CYAN()->id() => Items::CYAN_DYE(), + DyeColor::GRAY()->id() => Items::GRAY_DYE(), + DyeColor::GREEN()->id() => Items::GREEN_DYE(), + DyeColor::LIGHT_BLUE()->id() => Items::LIGHT_BLUE_DYE(), + DyeColor::LIGHT_GRAY()->id() => Items::LIGHT_GRAY_DYE(), + DyeColor::LIME()->id() => Items::LIME_DYE(), + DyeColor::MAGENTA()->id() => Items::MAGENTA_DYE(), + DyeColor::ORANGE()->id() => Items::ORANGE_DYE(), + DyeColor::PINK()->id() => Items::PINK_DYE(), + DyeColor::PURPLE()->id() => Items::PURPLE_DYE(), + DyeColor::RED()->id() => Items::RED_DYE(), + DyeColor::YELLOW()->id() => Items::YELLOW_DYE(), + default => throw new AssumptionFailedError("Unhandled dye color " . $dyeColor->name()) + }; + }); + $this->map(Ids::EGG, fn() => Items::EGG()); + //TODO: minecraft:elder_guardian_spawn_egg + //TODO: minecraft:elytra + $this->map(Ids::EMERALD, fn() => Items::EMERALD()); + //TODO: minecraft:empty_map + //TODO: minecraft:enchanted_book + $this->map(Ids::ENCHANTED_GOLDEN_APPLE, fn() => Items::ENCHANTED_GOLDEN_APPLE()); + //TODO: minecraft:end_crystal + //TODO: minecraft:ender_eye + $this->map(Ids::ENDER_PEARL, fn() => Items::ENDER_PEARL()); + //TODO: minecraft:enderman_spawn_egg + //TODO: minecraft:endermite_spawn_egg + //TODO: minecraft:evoker_spawn_egg + $this->map(Ids::EXPERIENCE_BOTTLE, fn() => Items::EXPERIENCE_BOTTLE()); + $this->map(Ids::FEATHER, fn() => Items::FEATHER()); + $this->map(Ids::FERMENTED_SPIDER_EYE, fn() => Items::FERMENTED_SPIDER_EYE()); + //TODO: minecraft:field_masoned_banner_pattern + //TODO: minecraft:filled_map + //TODO: minecraft:fire_charge + //TODO: minecraft:firefly_spawn_egg + //TODO: minecraft:firework_rocket + //TODO: minecraft:firework_star + $this->map(Ids::FISHING_ROD, fn() => Items::FISHING_ROD()); + $this->map(Ids::FLINT, fn() => Items::FLINT()); + $this->map(Ids::FLINT_AND_STEEL, fn() => Items::FLINT_AND_STEEL()); + //TODO: minecraft:flower_banner_pattern + $this->map(Ids::FLOWER_POT, fn() => Blocks::FLOWER_POT()->asItem()); + //TODO: minecraft:fox_spawn_egg + $this->map(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->asItem()); + //TODO: minecraft:frog_spawn_egg + //TODO: minecraft:ghast_spawn_egg + $this->map(Ids::GHAST_TEAR, fn() => Items::GHAST_TEAR()); + $this->map(Ids::GLASS_BOTTLE, fn() => Items::GLASS_BOTTLE()); + $this->map(Ids::GLISTERING_MELON_SLICE, fn() => Items::GLISTERING_MELON()); + //TODO: minecraft:globe_banner_pattern + //TODO: minecraft:glow_berries + //TODO: minecraft:glow_frame + //TODO: minecraft:glow_ink_sac + //TODO: minecraft:glow_squid_spawn_egg + //TODO: minecraft:glow_stick + $this->map(Ids::GLOWSTONE_DUST, fn() => Items::GLOWSTONE_DUST()); + //TODO: minecraft:goat_horn + //TODO: minecraft:goat_spawn_egg + $this->map(Ids::GOLD_INGOT, fn() => Items::GOLD_INGOT()); + $this->map(Ids::GOLD_NUGGET, fn() => Items::GOLD_NUGGET()); + $this->map(Ids::GOLDEN_APPLE, fn() => Items::GOLDEN_APPLE()); + $this->map(Ids::GOLDEN_AXE, fn() => Items::GOLDEN_AXE()); + $this->map(Ids::GOLDEN_BOOTS, fn() => Items::GOLDEN_BOOTS()); + $this->map(Ids::GOLDEN_CARROT, fn() => Items::GOLDEN_CARROT()); + $this->map(Ids::GOLDEN_CHESTPLATE, fn() => Items::GOLDEN_CHESTPLATE()); + $this->map(Ids::GOLDEN_HELMET, fn() => Items::GOLDEN_HELMET()); + $this->map(Ids::GOLDEN_HOE, fn() => Items::GOLDEN_HOE()); + //TODO: minecraft:golden_horse_armor + $this->map(Ids::GOLDEN_LEGGINGS, fn() => Items::GOLDEN_LEGGINGS()); + $this->map(Ids::GOLDEN_PICKAXE, fn() => Items::GOLDEN_PICKAXE()); + $this->map(Ids::GOLDEN_SHOVEL, fn() => Items::GOLDEN_SHOVEL()); + $this->map(Ids::GOLDEN_SWORD, fn() => Items::GOLDEN_SWORD()); + $this->map(Ids::GRAY_DYE, fn() => Items::GRAY_DYE()); + $this->map(Ids::GREEN_DYE, fn() => Items::GREEN_DYE()); + //TODO: minecraft:guardian_spawn_egg + $this->map(Ids::GUNPOWDER, fn() => Items::GUNPOWDER()); + $this->map(Ids::HEART_OF_THE_SEA, fn() => Items::HEART_OF_THE_SEA()); + //TODO: minecraft:hoglin_spawn_egg + //TODO: minecraft:honey_bottle + //TODO: minecraft:honeycomb + $this->map(Ids::HOPPER, fn() => Blocks::HOPPER()->asItem()); + //TODO: minecraft:hopper_minecart + //TODO: minecraft:horse_spawn_egg + //TODO: minecraft:husk_spawn_egg + //TODO: minecraft:ice_bomb + $this->map(Ids::INK_SAC, fn() => Items::INK_SAC()); + $this->map(Ids::IRON_AXE, fn() => Items::IRON_AXE()); + $this->map(Ids::IRON_BOOTS, fn() => Items::IRON_BOOTS()); + $this->map(Ids::IRON_CHESTPLATE, fn() => Items::IRON_CHESTPLATE()); + $this->map(Ids::IRON_DOOR, fn() => Blocks::IRON_DOOR()->asItem()); + $this->map(Ids::IRON_HELMET, fn() => Items::IRON_HELMET()); + $this->map(Ids::IRON_HOE, fn() => Items::IRON_HOE()); + //TODO: minecraft:iron_horse_armor + $this->map(Ids::IRON_INGOT, fn() => Items::IRON_INGOT()); + $this->map(Ids::IRON_LEGGINGS, fn() => Items::IRON_LEGGINGS()); + $this->map(Ids::IRON_NUGGET, fn() => Items::IRON_NUGGET()); + $this->map(Ids::IRON_PICKAXE, fn() => Items::IRON_PICKAXE()); + $this->map(Ids::IRON_SHOVEL, fn() => Items::IRON_SHOVEL()); + $this->map(Ids::IRON_SWORD, fn() => Items::IRON_SWORD()); + $this->map(Ids::JUNGLE_BOAT, fn() => Items::JUNGLE_BOAT()); + $this->map(Ids::JUNGLE_DOOR, fn() => Blocks::JUNGLE_DOOR()->asItem()); + $this->map(Ids::JUNGLE_SIGN, fn() => Blocks::JUNGLE_SIGN()->asItem()); + //TODO: minecraft:kelp + $this->map(Ids::LAPIS_LAZULI, fn() => Items::LAPIS_LAZULI()); + $this->map(Ids::LAVA_BUCKET, fn() => Items::LAVA_BUCKET()); + //TODO: minecraft:lead + $this->map(Ids::LEATHER, fn() => Items::LEATHER()); + $this->map(Ids::LEATHER_BOOTS, fn() => Items::LEATHER_BOOTS()); + $this->map(Ids::LEATHER_CHESTPLATE, fn() => Items::LEATHER_TUNIC()); + $this->map(Ids::LEATHER_HELMET, fn() => Items::LEATHER_CAP()); + //TODO: minecraft:leather_horse_armor + $this->map(Ids::LEATHER_LEGGINGS, fn() => Items::LEATHER_PANTS()); + $this->map(Ids::LIGHT_BLUE_DYE, fn() => Items::LIGHT_BLUE_DYE()); + $this->map(Ids::LIGHT_GRAY_DYE, fn() => Items::LIGHT_GRAY_DYE()); + $this->map(Ids::LIME_DYE, fn() => Items::LIME_DYE()); + //TODO: minecraft:lingering_potion + //TODO: minecraft:llama_spawn_egg + //TODO: minecraft:lodestone_compass + $this->map(Ids::MAGENTA_DYE, fn() => Items::MAGENTA_DYE()); + $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); + //TODO: minecraft:magma_cube_spawn_egg + //TODO: minecraft:medicine + $this->map(Ids::MELON_SEEDS, fn() => Items::MELON_SEEDS()); + $this->map(Ids::MELON_SLICE, fn() => Items::MELON()); + $this->map(Ids::MILK_BUCKET, fn() => Items::MILK_BUCKET()); + $this->map(Ids::MINECART, fn() => Items::MINECART()); + //TODO: minecraft:mojang_banner_pattern + //TODO: minecraft:mooshroom_spawn_egg + //TODO: minecraft:mule_spawn_egg + $this->map(Ids::MUSHROOM_STEW, fn() => Items::MUSHROOM_STEW()); + $this->map(Ids::MUSIC_DISC_11, fn() => Items::RECORD_11()); + $this->map(Ids::MUSIC_DISC_13, fn() => Items::RECORD_13()); + $this->map(Ids::MUSIC_DISC_BLOCKS, fn() => Items::RECORD_BLOCKS()); + $this->map(Ids::MUSIC_DISC_CAT, fn() => Items::RECORD_CAT()); + $this->map(Ids::MUSIC_DISC_CHIRP, fn() => Items::RECORD_CHIRP()); + $this->map(Ids::MUSIC_DISC_FAR, fn() => Items::RECORD_FAR()); + $this->map(Ids::MUSIC_DISC_MALL, fn() => Items::RECORD_MALL()); + $this->map(Ids::MUSIC_DISC_MELLOHI, fn() => Items::RECORD_MELLOHI()); + //TODO: minecraft:music_disc_otherside + //TODO: minecraft:music_disc_pigstep + $this->map(Ids::MUSIC_DISC_STAL, fn() => Items::RECORD_STAL()); + $this->map(Ids::MUSIC_DISC_STRAD, fn() => Items::RECORD_STRAD()); + $this->map(Ids::MUSIC_DISC_WAIT, fn() => Items::RECORD_WAIT()); + $this->map(Ids::MUSIC_DISC_WARD, fn() => Items::RECORD_WARD()); + $this->map(Ids::MUTTON, fn() => Items::RAW_MUTTON()); + //TODO: minecraft:name_tag + $this->map(Ids::NAUTILUS_SHELL, fn() => Items::NAUTILUS_SHELL()); + //TODO: minecraft:nether_sprouts + $this->map(Ids::NETHER_STAR, fn() => Items::NETHER_STAR()); + $this->map(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()->asItem()); + $this->map(Ids::NETHERBRICK, fn() => Items::NETHER_BRICK()); + //TODO: minecraft:netherite_axe + //TODO: minecraft:netherite_boots + //TODO: minecraft:netherite_chestplate + //TODO: minecraft:netherite_helmet + //TODO: minecraft:netherite_hoe + //TODO: minecraft:netherite_ingot + //TODO: minecraft:netherite_leggings + //TODO: minecraft:netherite_pickaxe + //TODO: minecraft:netherite_scrap + //TODO: minecraft:netherite_shovel + //TODO: minecraft:netherite_sword + //TODO: minecraft:npc_spawn_egg + $this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT()); + $this->map(Ids::OAK_SIGN, fn() => Blocks::OAK_SIGN()->asItem()); + //TODO: minecraft:ocelot_spawn_egg + $this->map(Ids::ORANGE_DYE, fn() => Items::ORANGE_DYE()); + $this->map(Ids::PAINTING, fn() => Items::PAINTING()); + //TODO: minecraft:panda_spawn_egg + $this->map(Ids::PAPER, fn() => Items::PAPER()); + //TODO: minecraft:parrot_spawn_egg + //TODO: minecraft:phantom_membrane + //TODO: minecraft:phantom_spawn_egg + //TODO: minecraft:pig_spawn_egg + //TODO: minecraft:piglin_banner_pattern + //TODO: minecraft:piglin_brute_spawn_egg + //TODO: minecraft:piglin_spawn_egg + //TODO: minecraft:pillager_spawn_egg + $this->map(Ids::PINK_DYE, fn() => Items::PINK_DYE()); + $this->map(Ids::POISONOUS_POTATO, fn() => Items::POISONOUS_POTATO()); + //TODO: minecraft:polar_bear_spawn_egg + $this->map(Ids::POPPED_CHORUS_FRUIT, fn() => Items::POPPED_CHORUS_FRUIT()); + $this->map(Ids::PORKCHOP, fn() => Items::RAW_PORKCHOP()); + $this->map(Ids::POTATO, fn() => Items::POTATO()); + $this->map(Ids::POTION, function(Data $data) : Item{ + $meta = $data->getMeta(); + $potionType = PotionTypeIdMap::getInstance()->fromId($meta); + if($potionType === null){ + throw new SavedDataLoadingException("Unknown potion type ID $meta"); + } + return match($potionType->id()){ + PotionType::WATER()->id() => Items::WATER_POTION(), + PotionType::MUNDANE()->id() => Items::MUNDANE_POTION(), + PotionType::LONG_MUNDANE()->id() => Items::LONG_MUNDANE_POTION(), + PotionType::THICK()->id() => Items::THICK_POTION(), + PotionType::AWKWARD()->id() => Items::AWKWARD_POTION(), + PotionType::NIGHT_VISION()->id() => Items::NIGHT_VISION_POTION(), + PotionType::LONG_NIGHT_VISION()->id() => Items::LONG_NIGHT_VISION_POTION(), + PotionType::INVISIBILITY()->id() => Items::INVISIBILITY_POTION(), + PotionType::LONG_INVISIBILITY()->id() => Items::LONG_INVISIBILITY_POTION(), + PotionType::LEAPING()->id() => Items::LEAPING_POTION(), + PotionType::LONG_LEAPING()->id() => Items::LONG_LEAPING_POTION(), + PotionType::STRONG_LEAPING()->id() => Items::STRONG_LEAPING_POTION(), + PotionType::FIRE_RESISTANCE()->id() => Items::FIRE_RESISTANCE_POTION(), + PotionType::LONG_FIRE_RESISTANCE()->id() => Items::LONG_FIRE_RESISTANCE_POTION(), + PotionType::SWIFTNESS()->id() => Items::SWIFTNESS_POTION(), + PotionType::LONG_SWIFTNESS()->id() => Items::LONG_SWIFTNESS_POTION(), + PotionType::STRONG_SWIFTNESS()->id() => Items::STRONG_SWIFTNESS_POTION(), + PotionType::SLOWNESS()->id() => Items::SLOWNESS_POTION(), + PotionType::LONG_SLOWNESS()->id() => Items::LONG_SLOWNESS_POTION(), + PotionType::WATER_BREATHING()->id() => Items::WATER_BREATHING_POTION(), + PotionType::LONG_WATER_BREATHING()->id() => Items::LONG_WATER_BREATHING_POTION(), + PotionType::HEALING()->id() => Items::HEALING_POTION(), + PotionType::STRONG_HEALING()->id() => Items::STRONG_HEALING_POTION(), + PotionType::HARMING()->id() => Items::HARMING_POTION(), + PotionType::STRONG_HARMING()->id() => Items::STRONG_HARMING_POTION(), + PotionType::POISON()->id() => Items::POISON_POTION(), + PotionType::LONG_POISON()->id() => Items::LONG_POISON_POTION(), + PotionType::STRONG_POISON()->id() => Items::STRONG_POISON_POTION(), + PotionType::REGENERATION()->id() => Items::REGENERATION_POTION(), + PotionType::LONG_REGENERATION()->id() => Items::LONG_REGENERATION_POTION(), + PotionType::STRONG_REGENERATION()->id() => Items::STRONG_REGENERATION_POTION(), + PotionType::STRENGTH()->id() => Items::STRENGTH_POTION(), + PotionType::LONG_STRENGTH()->id() => Items::LONG_STRENGTH_POTION(), + PotionType::STRONG_STRENGTH()->id() => Items::STRONG_STRENGTH_POTION(), + PotionType::WEAKNESS()->id() => Items::WEAKNESS_POTION(), + PotionType::LONG_WEAKNESS()->id() => Items::LONG_WEAKNESS_POTION(), + PotionType::WITHER()->id() => Items::WITHER_POTION(), + PotionType::TURTLE_MASTER()->id() => Items::TURTLE_MASTER_POTION(), + PotionType::LONG_TURTLE_MASTER()->id() => Items::LONG_TURTLE_MASTER_POTION(), + PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_POTION(), + PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_POTION(), + PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_POTION(), + default => throw new SavedDataLoadingException("Unhandled potion type " . $potionType->getDisplayName()) + }; + }); + //TODO: minecraft:powder_snow_bucket + $this->map(Ids::PRISMARINE_CRYSTALS, fn() => Items::PRISMARINE_CRYSTALS()); + $this->map(Ids::PRISMARINE_SHARD, fn() => Items::PRISMARINE_SHARD()); + $this->map(Ids::PUFFERFISH, fn() => Items::PUFFERFISH()); + //TODO: minecraft:pufferfish_bucket + //TODO: minecraft:pufferfish_spawn_egg + $this->map(Ids::PUMPKIN_PIE, fn() => Items::PUMPKIN_PIE()); + $this->map(Ids::PUMPKIN_SEEDS, fn() => Items::PUMPKIN_SEEDS()); + $this->map(Ids::PURPLE_DYE, fn() => Items::PURPLE_DYE()); + $this->map(Ids::QUARTZ, fn() => Items::NETHER_QUARTZ()); + $this->map(Ids::RABBIT, fn() => Items::RAW_RABBIT()); + $this->map(Ids::RABBIT_FOOT, fn() => Items::RABBIT_FOOT()); + $this->map(Ids::RABBIT_HIDE, fn() => Items::RABBIT_HIDE()); + //TODO: minecraft:rabbit_spawn_egg + $this->map(Ids::RABBIT_STEW, fn() => Items::RABBIT_STEW()); + //TODO: minecraft:rapid_fertilizer + //TODO: minecraft:ravager_spawn_egg + //TODO: minecraft:raw_copper + //TODO: minecraft:raw_gold + //TODO: minecraft:raw_iron + $this->map(Ids::RED_DYE, fn() => Items::RED_DYE()); + $this->map(Ids::REDSTONE, fn() => Items::REDSTONE_DUST()); + $this->map(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()->asItem()); + $this->map(Ids::ROTTEN_FLESH, fn() => Items::ROTTEN_FLESH()); + //TODO: minecraft:saddle + $this->map(Ids::SALMON, fn() => Items::RAW_SALMON()); + //TODO: minecraft:salmon_bucket + //TODO: minecraft:salmon_spawn_egg + $this->map(Ids::SCUTE, fn() => Items::SCUTE()); + $this->map(Ids::SHEARS, fn() => Items::SHEARS()); + //TODO: minecraft:sheep_spawn_egg + //TODO: minecraft:shield + $this->map(Ids::SHULKER_SHELL, fn() => Items::SHULKER_SHELL()); + //TODO: minecraft:shulker_spawn_egg + //TODO: minecraft:silverfish_spawn_egg + //TODO: minecraft:skeleton_horse_spawn_egg + //TODO: minecraft:skeleton_spawn_egg + $this->map(Ids::SKULL, function(Data $data) : Item{ + $meta = $data->getMeta(); + try{ + $skullType = SkullType::fromMagicNumber($meta); + }catch(\InvalidArgumentException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + return match($skullType->id()) { + SkullType::SKELETON()->id() => Items::SKELETON_SKULL(), + SkullType::WITHER_SKELETON()->id() => Items::WITHER_SKELETON_SKULL(), + SkullType::ZOMBIE()->id() => Items::ZOMBIE_HEAD(), + SkullType::CREEPER()->id() => Items::CREEPER_HEAD(), + SkullType::PLAYER()->id() => Items::PLAYER_HEAD(), + SkullType::DRAGON()->id() => Items::DRAGON_HEAD(), + default => throw new SavedDataLoadingException("Unexpected skull type " . $skullType->getDisplayName()) + }; + }); + //TODO: minecraft:skull_banner_pattern + $this->map(Ids::SLIME_BALL, fn() => Items::SLIMEBALL()); + //TODO: minecraft:slime_spawn_egg + $this->map(Ids::SNOWBALL, fn() => Items::SNOWBALL()); + //TODO: minecraft:soul_campfire + //TODO: minecraft:sparkler + $this->map(Ids::SPAWN_EGG, fn(Data $data) => match($data->getMeta()){ + EntityLegacyIds::ZOMBIE => Items::ZOMBIE_SPAWN_EGG(), + EntityLegacyIds::SQUID => Items::SQUID_SPAWN_EGG(), + EntityLegacyIds::VILLAGER => Items::VILLAGER_SPAWN_EGG(), + default => throw new SavedDataLoadingException("Unhandled spawn egg meta " . $data->getMeta()) + }); + $this->map(Ids::SPIDER_EYE, fn() => Items::SPIDER_EYE()); + //TODO: minecraft:spider_spawn_egg + $this->map(Ids::SPLASH_POTION, function(Data $data) : Item{ + $meta = $data->getMeta(); + $potionType = PotionTypeIdMap::getInstance()->fromId($meta); + if($potionType === null){ + throw new SavedDataLoadingException("Unknown potion type ID $meta"); + } + return match($potionType->id()){ + PotionType::WATER()->id() => Items::WATER_SPLASH_POTION(), + PotionType::MUNDANE()->id() => Items::MUNDANE_SPLASH_POTION(), + PotionType::LONG_MUNDANE()->id() => Items::LONG_MUNDANE_SPLASH_POTION(), + PotionType::THICK()->id() => Items::THICK_SPLASH_POTION(), + PotionType::AWKWARD()->id() => Items::AWKWARD_SPLASH_POTION(), + PotionType::NIGHT_VISION()->id() => Items::NIGHT_VISION_SPLASH_POTION(), + PotionType::LONG_NIGHT_VISION()->id() => Items::LONG_NIGHT_VISION_SPLASH_POTION(), + PotionType::INVISIBILITY()->id() => Items::INVISIBILITY_SPLASH_POTION(), + PotionType::LONG_INVISIBILITY()->id() => Items::LONG_INVISIBILITY_SPLASH_POTION(), + PotionType::LEAPING()->id() => Items::LEAPING_SPLASH_POTION(), + PotionType::LONG_LEAPING()->id() => Items::LONG_LEAPING_SPLASH_POTION(), + PotionType::STRONG_LEAPING()->id() => Items::STRONG_LEAPING_SPLASH_POTION(), + PotionType::FIRE_RESISTANCE()->id() => Items::FIRE_RESISTANCE_SPLASH_POTION(), + PotionType::LONG_FIRE_RESISTANCE()->id() => Items::LONG_FIRE_RESISTANCE_SPLASH_POTION(), + PotionType::SWIFTNESS()->id() => Items::SWIFTNESS_SPLASH_POTION(), + PotionType::LONG_SWIFTNESS()->id() => Items::LONG_SWIFTNESS_SPLASH_POTION(), + PotionType::STRONG_SWIFTNESS()->id() => Items::STRONG_SWIFTNESS_SPLASH_POTION(), + PotionType::SLOWNESS()->id() => Items::SLOWNESS_SPLASH_POTION(), + PotionType::LONG_SLOWNESS()->id() => Items::LONG_SLOWNESS_SPLASH_POTION(), + PotionType::WATER_BREATHING()->id() => Items::WATER_BREATHING_SPLASH_POTION(), + PotionType::LONG_WATER_BREATHING()->id() => Items::LONG_WATER_BREATHING_SPLASH_POTION(), + PotionType::HEALING()->id() => Items::HEALING_SPLASH_POTION(), + PotionType::STRONG_HEALING()->id() => Items::STRONG_HEALING_SPLASH_POTION(), + PotionType::HARMING()->id() => Items::HARMING_SPLASH_POTION(), + PotionType::STRONG_HARMING()->id() => Items::STRONG_HARMING_SPLASH_POTION(), + PotionType::POISON()->id() => Items::POISON_SPLASH_POTION(), + PotionType::LONG_POISON()->id() => Items::LONG_POISON_SPLASH_POTION(), + PotionType::STRONG_POISON()->id() => Items::STRONG_POISON_SPLASH_POTION(), + PotionType::REGENERATION()->id() => Items::REGENERATION_SPLASH_POTION(), + PotionType::LONG_REGENERATION()->id() => Items::LONG_REGENERATION_SPLASH_POTION(), + PotionType::STRONG_REGENERATION()->id() => Items::STRONG_REGENERATION_SPLASH_POTION(), + PotionType::STRENGTH()->id() => Items::STRENGTH_SPLASH_POTION(), + PotionType::LONG_STRENGTH()->id() => Items::LONG_STRENGTH_SPLASH_POTION(), + PotionType::STRONG_STRENGTH()->id() => Items::STRONG_STRENGTH_SPLASH_POTION(), + PotionType::WEAKNESS()->id() => Items::WEAKNESS_SPLASH_POTION(), + PotionType::LONG_WEAKNESS()->id() => Items::LONG_WEAKNESS_SPLASH_POTION(), + PotionType::WITHER()->id() => Items::WITHER_SPLASH_POTION(), + PotionType::TURTLE_MASTER()->id() => Items::TURTLE_MASTER_SPLASH_POTION(), + PotionType::LONG_TURTLE_MASTER()->id() => Items::LONG_TURTLE_MASTER_SPLASH_POTION(), + PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_SPLASH_POTION(), + PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_SPLASH_POTION(), + PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_SPLASH_POTION(), + default => throw new SavedDataLoadingException("Unhandled potion type " . $potionType->getDisplayName()) + }; + }); + $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); + $this->map(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()->asItem()); + $this->map(Ids::SPRUCE_SIGN, fn() => Blocks::SPRUCE_SIGN()->asItem()); + //TODO: minecraft:spyglass + $this->map(Ids::SQUID_SPAWN_EGG, fn() => Items::SQUID_SPAWN_EGG()); + $this->map(Ids::STICK, fn() => Items::STICK()); + $this->map(Ids::STONE_AXE, fn() => Items::STONE_AXE()); + $this->map(Ids::STONE_HOE, fn() => Items::STONE_HOE()); + $this->map(Ids::STONE_PICKAXE, fn() => Items::STONE_PICKAXE()); + $this->map(Ids::STONE_SHOVEL, fn() => Items::STONE_SHOVEL()); + $this->map(Ids::STONE_SWORD, fn() => Items::STONE_SWORD()); + //TODO: minecraft:stray_spawn_egg + //TODO: minecraft:strider_spawn_egg + $this->map(Ids::STRING, fn() => Items::STRING()); + $this->map(Ids::SUGAR, fn() => Items::SUGAR()); + $this->map(Ids::SUGAR_CANE, fn() => Blocks::SUGARCANE()->asItem()); + //TODO: minecraft:suspicious_stew + $this->map(Ids::SWEET_BERRIES, fn() => Items::SWEET_BERRIES()); + //TODO: minecraft:tadpole_bucket + //TODO: minecraft:tadpole_spawn_egg + //TODO: minecraft:tnt_minecart + $this->map(Ids::TOTEM_OF_UNDYING, fn() => Items::TOTEM()); + //TODO: minecraft:trident + $this->map(Ids::TROPICAL_FISH, fn() => Items::CLOWNFISH()); + //TODO: minecraft:tropical_fish_bucket + //TODO: minecraft:tropical_fish_spawn_egg + //TODO: minecraft:turtle_helmet + //TODO: minecraft:turtle_spawn_egg + //TODO: minecraft:vex_spawn_egg + $this->map(Ids::VILLAGER_SPAWN_EGG, fn() => Items::VILLAGER_SPAWN_EGG()); + //TODO: minecraft:vindicator_spawn_egg + //TODO: minecraft:wandering_trader_spawn_egg + //TODO: minecraft:warped_door + //TODO: minecraft:warped_fungus_on_a_stick + //TODO: minecraft:warped_sign + $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); + $this->map(Ids::WHEAT, fn() => Items::WHEAT()); + $this->map(Ids::WHEAT_SEEDS, fn() => Items::WHEAT_SEEDS()); + $this->map(Ids::WHITE_DYE, fn() => Items::WHITE_DYE()); + //TODO: minecraft:witch_spawn_egg + //TODO: minecraft:wither_skeleton_spawn_egg + //TODO: minecraft:wolf_spawn_egg + $this->map(Ids::WOODEN_AXE, fn() => Items::WOODEN_AXE()); + $this->map(Ids::WOODEN_DOOR, fn() => Blocks::OAK_DOOR()->asItem()); + $this->map(Ids::WOODEN_HOE, fn() => Items::WOODEN_HOE()); + $this->map(Ids::WOODEN_PICKAXE, fn() => Items::WOODEN_PICKAXE()); + $this->map(Ids::WOODEN_SHOVEL, fn() => Items::WOODEN_SHOVEL()); + $this->map(Ids::WOODEN_SWORD, fn() => Items::WOODEN_SWORD()); + $this->map(Ids::WRITABLE_BOOK, fn() => Items::WRITABLE_BOOK()); + $this->map(Ids::WRITTEN_BOOK, fn() => Items::WRITTEN_BOOK()); + $this->map(Ids::YELLOW_DYE, fn() => Items::YELLOW_DYE()); + //TODO: minecraft:zoglin_spawn_egg + //TODO: minecraft:zombie_horse_spawn_egg + //TODO: minecraft:zombie_pigman_spawn_egg + $this->map(Ids::ZOMBIE_SPAWN_EGG, fn() => Items::ZOMBIE_SPAWN_EGG()); + //TODO: minecraft:zombie_villager_spawn_egg + } +} diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php new file mode 100644 index 000000000..e8031f5d8 --- /dev/null +++ b/src/data/bedrock/item/ItemSerializer.php @@ -0,0 +1,567 @@ +> + */ + private array $serializers = []; + + /** + * @var \Closure[] + * @phpstan-var array> + */ + private array $blockItemSerializers = []; + + public function __construct(){ + $this->registerSerializers(); + } + + /** + * @phpstan-template TItemType of Item + * @phpstan-param TItemType $item + * @phpstan-param \Closure(TItemType) : Data $serializer + */ + public function map(Item $item, \Closure $serializer) : void{ + if($item->hasAnyDamageValue()){ + throw new \InvalidArgumentException("Cannot serialize a recipe wildcard"); + } + $index = ($item->getId() << 16) | $item->getMeta(); + if(isset($this->serializers[$index])){ + //TODO: REMOVE ME + throw new AssumptionFailedError("Registering the same item twice!"); + } + $this->serializers[$index][get_class($item)] = $serializer; + } + + /** + * @phpstan-param \Closure(ItemBlock) : Data $serializer + */ + public function mapBlock(Block $block, \Closure $serializer) : void{ + if(!$block->asItem() instanceof ItemBlock){ + throw new AssumptionFailedError("Mapped item must be an ItemBlock"); + } + $index = $block->getTypeId(); + if(isset($this->blockItemSerializers[$index])){ + throw new AssumptionFailedError("Registering the same item twice!"); + } + $this->blockItemSerializers[$index] = $serializer; + } + + /** + * @phpstan-template TItemType of Item + * @phpstan-param TItemType $item + */ + public function serialize(Item $item) : Data{ + if($item->isNull()){ + throw new \InvalidArgumentException("Cannot serialize a null itemstack"); + } + if($item instanceof ItemBlock){ + $block = $item->getBlock(); + $index = $block->getTypeId(); + $serializer = $this->blockItemSerializers[$index] ?? null; + + if($serializer !== null){ + $data = $serializer($item); + }else{ //assume that this is just a standard itemblock + $data = self::standardBlock($block); + } + }else{ + $index = ($item->getId() << 16) | ($item instanceof Durable ? 0 : $item->getMeta()); + + $locatedSerializer = $this->serializers[$index][get_class($item)] ?? null; + if($locatedSerializer === null){ + $parents = class_parents($item); + if($parents !== false){ + foreach($parents as $parent){ + if(isset($this->serializers[$index][$parent])){ + $locatedSerializer = $this->serializers[$index][$parent]; + break; + } + } + } + } + + if($locatedSerializer === null){ + //TODO: proper exceptions + throw new \LogicException("No serializer registered for " . get_class($item) . " " . $item->getName()); + } + + /** + * @var \Closure $serializer + * @phpstan-var \Closure(TItemType) : Data $serializer + */ + $serializer = $locatedSerializer; + + /** @var Data $data */ + $data = $serializer($item); + } + + return $data; + } + + private static function standardBlock(Block $block) : Data{ + $blockStateData = GlobalBlockStateHandlers::getSerializer()->serialize($block->getFullId()); + + $itemNameId = BlockItemIdMap::getInstance()->lookupItemId($blockStateData->getName()); + if($itemNameId === null){ + //TODO: this might end up being a hassle for custom blocks, since it'll force providing an item + //serializer for every custom block + //it would probably be better if we allow adding custom item <-> block ID mappings for this + throw new \LogicException("No blockitem serializer or blockitem ID mapping registered for block " . $blockStateData->getName()); + } + + return new Data($itemNameId, 0, $blockStateData); + } + + /** + * @phpstan-return \Closure(Item) : Data + */ + private static function standardBlockWrapper() : \Closure{ + return fn(Item $item) => self::standardBlock($item->getBlock()); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function id(string $id) : \Closure{ + return fn() => new Data($id); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function bed(DyeColor $color) : \Closure{ + $meta = DyeColorIdMap::getInstance()->toId($color); + return fn() => new Data(Ids::BED, $meta); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function skull(SkullType $skullType) : \Closure{ + $meta = $skullType->getMagicNumber(); + return fn() => new Data(Ids::SKULL, $meta); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function chemical(int $type) : \Closure{ + return fn() => new Data(Ids::COMPOUND, $type); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function potion(PotionType $type) : \Closure{ + $meta = PotionTypeIdMap::getInstance()->toId($type); + return fn() => new Data(Ids::POTION, $meta); + } + + /** + * @phpstan-return \Closure() : Data + */ + private static function splashPotion(PotionType $type) : \Closure{ + $meta = PotionTypeIdMap::getInstance()->toId($type); + return fn() => new Data(Ids::SPLASH_POTION, $meta); + } + + private function registerSerializers() : void{ + //these are encoded as regular blocks, but they have to be accounted for explicitly since they don't use ItemBlock + $this->map(Items::BAMBOO(), self::standardBlockWrapper()); + $this->map(Items::CORAL_FAN(), self::standardBlockWrapper()); + + $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); + $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); + $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); + $this->map(Items::APPLE(), self::id(Ids::APPLE)); + $this->map(Items::ARROW(), self::id(Ids::ARROW)); + $this->map(Items::AWKWARD_POTION(), self::potion(PotionType::AWKWARD())); + $this->map(Items::AWKWARD_SPLASH_POTION(), self::splashPotion(PotionType::AWKWARD())); + $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); + $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); + $this->map(Items::BEETROOT_SEEDS(), self::id(Ids::BEETROOT_SEEDS)); + $this->map(Items::BEETROOT_SOUP(), self::id(Ids::BEETROOT_SOUP)); + $this->map(Items::BIRCH_BOAT(), self::id(Ids::BIRCH_BOAT)); + $this->map(Items::BIRCH_SIGN(), self::id(Ids::BIRCH_SIGN)); + $this->map(Items::BLACK_BED(), self::bed(DyeColor::BLACK())); + $this->map(Items::BLACK_DYE(), self::id(Ids::BLACK_DYE)); + $this->map(Items::BLAZE_POWDER(), self::id(Ids::BLAZE_POWDER)); + $this->map(Items::BLAZE_ROD(), self::id(Ids::BLAZE_ROD)); + $this->map(Items::BLEACH(), self::id(Ids::BLEACH)); + $this->map(Items::BLUE_BED(), self::bed(DyeColor::BLUE())); + $this->map(Items::BLUE_DYE(), self::id(Ids::BLUE_DYE)); + $this->map(Items::BONE(), self::id(Ids::BONE)); + $this->map(Items::BONE_MEAL(), self::id(Ids::BONE_MEAL)); + $this->map(Items::BOOK(), self::id(Ids::BOOK)); + $this->map(Items::BOW(), self::id(Ids::BOW)); + $this->map(Items::BOWL(), self::id(Ids::BOWL)); + $this->map(Items::BREAD(), self::id(Ids::BREAD)); + $this->map(Items::BRICK(), self::id(Ids::BRICK)); + $this->map(Items::BROWN_BED(), self::bed(DyeColor::BROWN())); + $this->map(Items::BROWN_DYE(), self::id(Ids::BROWN_DYE)); + $this->map(Items::BUCKET(), self::id(Ids::BUCKET)); + $this->map(Items::CARROT(), self::id(Ids::CARROT)); + $this->map(Items::CHAINMAIL_BOOTS(), self::id(Ids::CHAINMAIL_BOOTS)); + $this->map(Items::CHAINMAIL_CHESTPLATE(), self::id(Ids::CHAINMAIL_CHESTPLATE)); + $this->map(Items::CHAINMAIL_HELMET(), self::id(Ids::CHAINMAIL_HELMET)); + $this->map(Items::CHAINMAIL_LEGGINGS(), self::id(Ids::CHAINMAIL_LEGGINGS)); + $this->map(Items::CHARCOAL(), self::id(Ids::CHARCOAL)); + $this->map(Items::CHEMICAL_ALUMINIUM_OXIDE(), self::chemical(CompoundTypeIds::ALUMINIUM_OXIDE)); + $this->map(Items::CHEMICAL_AMMONIA(), self::chemical(CompoundTypeIds::AMMONIA)); + $this->map(Items::CHEMICAL_BARIUM_SULPHATE(), self::chemical(CompoundTypeIds::BARIUM_SULPHATE)); + $this->map(Items::CHEMICAL_BENZENE(), self::chemical(CompoundTypeIds::BENZENE)); + $this->map(Items::CHEMICAL_BORON_TRIOXIDE(), self::chemical(CompoundTypeIds::BORON_TRIOXIDE)); + $this->map(Items::CHEMICAL_CALCIUM_BROMIDE(), self::chemical(CompoundTypeIds::CALCIUM_BROMIDE)); + $this->map(Items::CHEMICAL_CALCIUM_CHLORIDE(), self::chemical(CompoundTypeIds::CALCIUM_CHLORIDE)); + $this->map(Items::CHEMICAL_CERIUM_CHLORIDE(), self::chemical(CompoundTypeIds::CERIUM_CHLORIDE)); + $this->map(Items::CHEMICAL_CHARCOAL(), self::chemical(CompoundTypeIds::CHARCOAL)); + $this->map(Items::CHEMICAL_CRUDE_OIL(), self::chemical(CompoundTypeIds::CRUDE_OIL)); + $this->map(Items::CHEMICAL_GLUE(), self::chemical(CompoundTypeIds::GLUE)); + $this->map(Items::CHEMICAL_HYDROGEN_PEROXIDE(), self::chemical(CompoundTypeIds::HYDROGEN_PEROXIDE)); + $this->map(Items::CHEMICAL_HYPOCHLORITE(), self::chemical(CompoundTypeIds::HYPOCHLORITE)); + $this->map(Items::CHEMICAL_INK(), self::chemical(CompoundTypeIds::INK)); + $this->map(Items::CHEMICAL_IRON_SULPHIDE(), self::chemical(CompoundTypeIds::IRON_SULPHIDE)); + $this->map(Items::CHEMICAL_LATEX(), self::chemical(CompoundTypeIds::LATEX)); + $this->map(Items::CHEMICAL_LITHIUM_HYDRIDE(), self::chemical(CompoundTypeIds::LITHIUM_HYDRIDE)); + $this->map(Items::CHEMICAL_LUMINOL(), self::chemical(CompoundTypeIds::LUMINOL)); + $this->map(Items::CHEMICAL_MAGNESIUM_NITRATE(), self::chemical(CompoundTypeIds::MAGNESIUM_NITRATE)); + $this->map(Items::CHEMICAL_MAGNESIUM_OXIDE(), self::chemical(CompoundTypeIds::MAGNESIUM_OXIDE)); + $this->map(Items::CHEMICAL_MAGNESIUM_SALTS(), self::chemical(CompoundTypeIds::MAGNESIUM_SALTS)); + $this->map(Items::CHEMICAL_MERCURIC_CHLORIDE(), self::chemical(CompoundTypeIds::MERCURIC_CHLORIDE)); + $this->map(Items::CHEMICAL_POLYETHYLENE(), self::chemical(CompoundTypeIds::POLYETHYLENE)); + $this->map(Items::CHEMICAL_POTASSIUM_CHLORIDE(), self::chemical(CompoundTypeIds::POTASSIUM_CHLORIDE)); + $this->map(Items::CHEMICAL_POTASSIUM_IODIDE(), self::chemical(CompoundTypeIds::POTASSIUM_IODIDE)); + $this->map(Items::CHEMICAL_RUBBISH(), self::chemical(CompoundTypeIds::RUBBISH)); + $this->map(Items::CHEMICAL_SALT(), self::chemical(CompoundTypeIds::SALT)); + $this->map(Items::CHEMICAL_SOAP(), self::chemical(CompoundTypeIds::SOAP)); + $this->map(Items::CHEMICAL_SODIUM_ACETATE(), self::chemical(CompoundTypeIds::SODIUM_ACETATE)); + $this->map(Items::CHEMICAL_SODIUM_FLUORIDE(), self::chemical(CompoundTypeIds::SODIUM_FLUORIDE)); + $this->map(Items::CHEMICAL_SODIUM_HYDRIDE(), self::chemical(CompoundTypeIds::SODIUM_HYDRIDE)); + $this->map(Items::CHEMICAL_SODIUM_HYDROXIDE(), self::chemical(CompoundTypeIds::SODIUM_HYDROXIDE)); + $this->map(Items::CHEMICAL_SODIUM_HYPOCHLORITE(), self::chemical(CompoundTypeIds::SODIUM_HYPOCHLORITE)); + $this->map(Items::CHEMICAL_SODIUM_OXIDE(), self::chemical(CompoundTypeIds::SODIUM_OXIDE)); + $this->map(Items::CHEMICAL_SUGAR(), self::chemical(CompoundTypeIds::SUGAR)); + $this->map(Items::CHEMICAL_SULPHATE(), self::chemical(CompoundTypeIds::SULPHATE)); + $this->map(Items::CHEMICAL_TUNGSTEN_CHLORIDE(), self::chemical(CompoundTypeIds::TUNGSTEN_CHLORIDE)); + $this->map(Items::CHEMICAL_WATER(), self::chemical(CompoundTypeIds::WATER)); + $this->map(Items::CHORUS_FRUIT(), self::id(Ids::CHORUS_FRUIT)); + $this->map(Items::CLAY(), self::id(Ids::CLAY_BALL)); + $this->map(Items::CLOCK(), self::id(Ids::CLOCK)); + $this->map(Items::CLOWNFISH(), self::id(Ids::TROPICAL_FISH)); + $this->map(Items::COAL(), self::id(Ids::COAL)); + $this->map(Items::COCOA_BEANS(), self::id(Ids::COCOA_BEANS)); + $this->map(Items::COMPASS(), self::id(Ids::COMPASS)); + $this->map(Items::COOKED_CHICKEN(), self::id(Ids::COOKED_CHICKEN)); + $this->map(Items::COOKED_FISH(), self::id(Ids::COOKED_COD)); + $this->map(Items::COOKED_MUTTON(), self::id(Ids::COOKED_MUTTON)); + $this->map(Items::COOKED_PORKCHOP(), self::id(Ids::COOKED_PORKCHOP)); + $this->map(Items::COOKED_RABBIT(), self::id(Ids::COOKED_RABBIT)); + $this->map(Items::COOKED_SALMON(), self::id(Ids::COOKED_SALMON)); + $this->map(Items::COOKIE(), self::id(Ids::COOKIE)); + $this->map(Items::CREEPER_HEAD(), self::skull(SkullType::CREEPER())); + $this->map(Items::CYAN_BED(), self::bed(DyeColor::CYAN())); + $this->map(Items::CYAN_DYE(), self::id(Ids::CYAN_DYE)); + $this->map(Items::DARK_OAK_BOAT(), self::id(Ids::DARK_OAK_BOAT)); + $this->map(Items::DARK_OAK_SIGN(), self::id(Ids::DARK_OAK_SIGN)); + $this->map(Items::DIAMOND(), self::id(Ids::DIAMOND)); + $this->map(Items::DIAMOND_AXE(), self::id(Ids::DIAMOND_AXE)); + $this->map(Items::DIAMOND_BOOTS(), self::id(Ids::DIAMOND_BOOTS)); + $this->map(Items::DIAMOND_CHESTPLATE(), self::id(Ids::DIAMOND_CHESTPLATE)); + $this->map(Items::DIAMOND_HELMET(), self::id(Ids::DIAMOND_HELMET)); + $this->map(Items::DIAMOND_HOE(), self::id(Ids::DIAMOND_HOE)); + $this->map(Items::DIAMOND_LEGGINGS(), self::id(Ids::DIAMOND_LEGGINGS)); + $this->map(Items::DIAMOND_PICKAXE(), self::id(Ids::DIAMOND_PICKAXE)); + $this->map(Items::DIAMOND_SHOVEL(), self::id(Ids::DIAMOND_SHOVEL)); + $this->map(Items::DIAMOND_SWORD(), self::id(Ids::DIAMOND_SWORD)); + $this->map(Items::DRAGON_BREATH(), self::id(Ids::DRAGON_BREATH)); + $this->map(Items::DRAGON_HEAD(), self::skull(SkullType::DRAGON())); + $this->map(Items::DRIED_KELP(), self::id(Ids::DRIED_KELP)); + $this->map(Items::EGG(), self::id(Ids::EGG)); + $this->map(Items::EMERALD(), self::id(Ids::EMERALD)); + $this->map(Items::ENCHANTED_GOLDEN_APPLE(), self::id(Ids::ENCHANTED_GOLDEN_APPLE)); + $this->map(Items::ENDER_PEARL(), self::id(Ids::ENDER_PEARL)); + $this->map(Items::EXPERIENCE_BOTTLE(), self::id(Ids::EXPERIENCE_BOTTLE)); + $this->map(Items::FEATHER(), self::id(Ids::FEATHER)); + $this->map(Items::FERMENTED_SPIDER_EYE(), self::id(Ids::FERMENTED_SPIDER_EYE)); + $this->map(Items::FIRE_RESISTANCE_POTION(), self::potion(PotionType::FIRE_RESISTANCE())); + $this->map(Items::FIRE_RESISTANCE_SPLASH_POTION(), self::splashPotion(PotionType::FIRE_RESISTANCE())); + $this->map(Items::FISHING_ROD(), self::id(Ids::FISHING_ROD)); + $this->map(Items::FLINT(), self::id(Ids::FLINT)); + $this->map(Items::FLINT_AND_STEEL(), self::id(Ids::FLINT_AND_STEEL)); + $this->map(Items::GHAST_TEAR(), self::id(Ids::GHAST_TEAR)); + $this->map(Items::GLASS_BOTTLE(), self::id(Ids::GLASS_BOTTLE)); + $this->map(Items::GLISTERING_MELON(), self::id(Ids::GLISTERING_MELON_SLICE)); + $this->map(Items::GLOWSTONE_DUST(), self::id(Ids::GLOWSTONE_DUST)); + $this->map(Items::GOLDEN_APPLE(), self::id(Ids::GOLDEN_APPLE)); + $this->map(Items::GOLDEN_AXE(), self::id(Ids::GOLDEN_AXE)); + $this->map(Items::GOLDEN_BOOTS(), self::id(Ids::GOLDEN_BOOTS)); + $this->map(Items::GOLDEN_CARROT(), self::id(Ids::GOLDEN_CARROT)); + $this->map(Items::GOLDEN_CHESTPLATE(), self::id(Ids::GOLDEN_CHESTPLATE)); + $this->map(Items::GOLDEN_HELMET(), self::id(Ids::GOLDEN_HELMET)); + $this->map(Items::GOLDEN_HOE(), self::id(Ids::GOLDEN_HOE)); + $this->map(Items::GOLDEN_LEGGINGS(), self::id(Ids::GOLDEN_LEGGINGS)); + $this->map(Items::GOLDEN_PICKAXE(), self::id(Ids::GOLDEN_PICKAXE)); + $this->map(Items::GOLDEN_SHOVEL(), self::id(Ids::GOLDEN_SHOVEL)); + $this->map(Items::GOLDEN_SWORD(), self::id(Ids::GOLDEN_SWORD)); + $this->map(Items::GOLD_INGOT(), self::id(Ids::GOLD_INGOT)); + $this->map(Items::GOLD_NUGGET(), self::id(Ids::GOLD_NUGGET)); + $this->map(Items::GRAY_BED(), self::bed(DyeColor::GRAY())); + $this->map(Items::GRAY_DYE(), self::id(Ids::GRAY_DYE)); + $this->map(Items::GREEN_BED(), self::bed(DyeColor::GREEN())); + $this->map(Items::GREEN_DYE(), self::id(Ids::GREEN_DYE)); + $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); + $this->map(Items::HARMING_POTION(), self::potion(PotionType::HARMING())); + $this->map(Items::HARMING_SPLASH_POTION(), self::splashPotion(PotionType::HARMING())); + $this->map(Items::HEALING_POTION(), self::potion(PotionType::HEALING())); + $this->map(Items::HEALING_SPLASH_POTION(), self::splashPotion(PotionType::HEALING())); + $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); + $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); + $this->map(Items::INVISIBILITY_POTION(), self::potion(PotionType::INVISIBILITY())); + $this->map(Items::INVISIBILITY_SPLASH_POTION(), self::splashPotion(PotionType::INVISIBILITY())); + $this->map(Items::IRON_AXE(), self::id(Ids::IRON_AXE)); + $this->map(Items::IRON_BOOTS(), self::id(Ids::IRON_BOOTS)); + $this->map(Items::IRON_CHESTPLATE(), self::id(Ids::IRON_CHESTPLATE)); + $this->map(Items::IRON_HELMET(), self::id(Ids::IRON_HELMET)); + $this->map(Items::IRON_HOE(), self::id(Ids::IRON_HOE)); + $this->map(Items::IRON_INGOT(), self::id(Ids::IRON_INGOT)); + $this->map(Items::IRON_LEGGINGS(), self::id(Ids::IRON_LEGGINGS)); + $this->map(Items::IRON_NUGGET(), self::id(Ids::IRON_NUGGET)); + $this->map(Items::IRON_PICKAXE(), self::id(Ids::IRON_PICKAXE)); + $this->map(Items::IRON_SHOVEL(), self::id(Ids::IRON_SHOVEL)); + $this->map(Items::IRON_SWORD(), self::id(Ids::IRON_SWORD)); + $this->map(Items::JUNGLE_BOAT(), self::id(Ids::JUNGLE_BOAT)); + $this->map(Items::JUNGLE_SIGN(), self::id(Ids::JUNGLE_SIGN)); + $this->map(Items::LAPIS_LAZULI(), self::id(Ids::LAPIS_LAZULI)); + $this->map(Items::LAVA_BUCKET(), self::id(Ids::LAVA_BUCKET)); + $this->map(Items::LEAPING_POTION(), self::potion(PotionType::LEAPING())); + $this->map(Items::LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::LEAPING())); + $this->map(Items::LEATHER(), self::id(Ids::LEATHER)); + $this->map(Items::LEATHER_BOOTS(), self::id(Ids::LEATHER_BOOTS)); + $this->map(Items::LEATHER_CAP(), self::id(Ids::LEATHER_HELMET)); + $this->map(Items::LEATHER_PANTS(), self::id(Ids::LEATHER_LEGGINGS)); + $this->map(Items::LEATHER_TUNIC(), self::id(Ids::LEATHER_CHESTPLATE)); + $this->map(Items::LIGHT_BLUE_BED(), self::bed(DyeColor::LIGHT_BLUE())); + $this->map(Items::LIGHT_BLUE_DYE(), self::id(Ids::LIGHT_BLUE_DYE)); + $this->map(Items::LIGHT_GRAY_BED(), self::bed(DyeColor::LIGHT_GRAY())); + $this->map(Items::LIGHT_GRAY_DYE(), self::id(Ids::LIGHT_GRAY_DYE)); + $this->map(Items::LIME_BED(), self::bed(DyeColor::LIME())); + $this->map(Items::LIME_DYE(), self::id(Ids::LIME_DYE)); + $this->map(Items::LONG_FIRE_RESISTANCE_POTION(), self::potion(PotionType::LONG_FIRE_RESISTANCE())); + $this->map(Items::LONG_FIRE_RESISTANCE_SPLASH_POTION(), self::splashPotion(PotionType::LONG_FIRE_RESISTANCE())); + $this->map(Items::LONG_INVISIBILITY_POTION(), self::potion(PotionType::LONG_INVISIBILITY())); + $this->map(Items::LONG_INVISIBILITY_SPLASH_POTION(), self::splashPotion(PotionType::LONG_INVISIBILITY())); + $this->map(Items::LONG_LEAPING_POTION(), self::potion(PotionType::LONG_LEAPING())); + $this->map(Items::LONG_LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_LEAPING())); + $this->map(Items::LONG_MUNDANE_POTION(), self::potion(PotionType::LONG_MUNDANE())); + $this->map(Items::LONG_MUNDANE_SPLASH_POTION(), self::splashPotion(PotionType::LONG_MUNDANE())); + $this->map(Items::LONG_NIGHT_VISION_POTION(), self::potion(PotionType::LONG_NIGHT_VISION())); + $this->map(Items::LONG_NIGHT_VISION_SPLASH_POTION(), self::splashPotion(PotionType::LONG_NIGHT_VISION())); + $this->map(Items::LONG_POISON_POTION(), self::potion(PotionType::LONG_POISON())); + $this->map(Items::LONG_POISON_SPLASH_POTION(), self::splashPotion(PotionType::LONG_POISON())); + $this->map(Items::LONG_REGENERATION_POTION(), self::potion(PotionType::LONG_REGENERATION())); + $this->map(Items::LONG_REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::LONG_REGENERATION())); + $this->map(Items::LONG_SLOWNESS_POTION(), self::potion(PotionType::LONG_SLOWNESS())); + $this->map(Items::LONG_SLOWNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SLOWNESS())); + $this->map(Items::LONG_SLOW_FALLING_POTION(), self::potion(PotionType::LONG_SLOW_FALLING())); + $this->map(Items::LONG_SLOW_FALLING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SLOW_FALLING())); + $this->map(Items::LONG_STRENGTH_POTION(), self::potion(PotionType::LONG_STRENGTH())); + $this->map(Items::LONG_STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::LONG_STRENGTH())); + $this->map(Items::LONG_SWIFTNESS_POTION(), self::potion(PotionType::LONG_SWIFTNESS())); + $this->map(Items::LONG_SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SWIFTNESS())); + $this->map(Items::LONG_TURTLE_MASTER_POTION(), self::potion(PotionType::LONG_TURTLE_MASTER())); + $this->map(Items::LONG_TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::LONG_TURTLE_MASTER())); + $this->map(Items::LONG_WATER_BREATHING_POTION(), self::potion(PotionType::LONG_WATER_BREATHING())); + $this->map(Items::LONG_WATER_BREATHING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_WATER_BREATHING())); + $this->map(Items::LONG_WEAKNESS_POTION(), self::potion(PotionType::LONG_WEAKNESS())); + $this->map(Items::LONG_WEAKNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_WEAKNESS())); + $this->map(Items::MAGENTA_BED(), self::bed(DyeColor::MAGENTA())); + $this->map(Items::MAGENTA_DYE(), self::id(Ids::MAGENTA_DYE)); + $this->map(Items::MAGMA_CREAM(), self::id(Ids::MAGMA_CREAM)); + $this->map(Items::MELON(), self::id(Ids::MELON_SLICE)); + $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); + $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); + $this->map(Items::MINECART(), self::id(Ids::MINECART)); + $this->map(Items::MUNDANE_POTION(), self::potion(PotionType::MUNDANE())); + $this->map(Items::MUNDANE_SPLASH_POTION(), self::splashPotion(PotionType::MUNDANE())); + $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); + $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); + $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); + $this->map(Items::NETHER_QUARTZ(), self::id(Ids::QUARTZ)); + $this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR)); + $this->map(Items::NIGHT_VISION_POTION(), self::potion(PotionType::NIGHT_VISION())); + $this->map(Items::NIGHT_VISION_SPLASH_POTION(), self::splashPotion(PotionType::NIGHT_VISION())); + $this->map(Items::OAK_BOAT(), self::id(Ids::OAK_BOAT)); + $this->map(Items::OAK_SIGN(), self::id(Ids::OAK_SIGN)); + $this->map(Items::ORANGE_BED(), self::bed(DyeColor::ORANGE())); + $this->map(Items::ORANGE_DYE(), self::id(Ids::ORANGE_DYE)); + $this->map(Items::PAINTING(), self::id(Ids::PAINTING)); + $this->map(Items::PAPER(), self::id(Ids::PAPER)); + $this->map(Items::PINK_BED(), self::bed(DyeColor::PINK())); + $this->map(Items::PINK_DYE(), self::id(Ids::PINK_DYE)); + $this->map(Items::PLAYER_HEAD(), self::skull(SkullType::PLAYER())); + $this->map(Items::POISONOUS_POTATO(), self::id(Ids::POISONOUS_POTATO)); + $this->map(Items::POISON_POTION(), self::potion(PotionType::POISON())); + $this->map(Items::POISON_SPLASH_POTION(), self::splashPotion(PotionType::POISON())); + $this->map(Items::POPPED_CHORUS_FRUIT(), self::id(Ids::POPPED_CHORUS_FRUIT)); + $this->map(Items::POTATO(), self::id(Ids::POTATO)); + $this->map(Items::PRISMARINE_CRYSTALS(), self::id(Ids::PRISMARINE_CRYSTALS)); + $this->map(Items::PRISMARINE_SHARD(), self::id(Ids::PRISMARINE_SHARD)); + $this->map(Items::PUFFERFISH(), self::id(Ids::PUFFERFISH)); + $this->map(Items::PUMPKIN_PIE(), self::id(Ids::PUMPKIN_PIE)); + $this->map(Items::PUMPKIN_SEEDS(), self::id(Ids::PUMPKIN_SEEDS)); + $this->map(Items::PURPLE_BED(), self::bed(DyeColor::PURPLE())); + $this->map(Items::PURPLE_DYE(), self::id(Ids::PURPLE_DYE)); + $this->map(Items::RABBIT_FOOT(), self::id(Ids::RABBIT_FOOT)); + $this->map(Items::RABBIT_HIDE(), self::id(Ids::RABBIT_HIDE)); + $this->map(Items::RABBIT_STEW(), self::id(Ids::RABBIT_STEW)); + $this->map(Items::RAW_BEEF(), self::id(Ids::BEEF)); + $this->map(Items::RAW_CHICKEN(), self::id(Ids::CHICKEN)); + $this->map(Items::RAW_FISH(), self::id(Ids::COD)); + $this->map(Items::RAW_MUTTON(), self::id(Ids::MUTTON)); + $this->map(Items::RAW_PORKCHOP(), self::id(Ids::PORKCHOP)); + $this->map(Items::RAW_RABBIT(), self::id(Ids::RABBIT)); + $this->map(Items::RAW_SALMON(), self::id(Ids::SALMON)); + $this->map(Items::RECORD_11(), self::id(Ids::MUSIC_DISC_11)); + $this->map(Items::RECORD_13(), self::id(Ids::MUSIC_DISC_13)); + $this->map(Items::RECORD_BLOCKS(), self::id(Ids::MUSIC_DISC_BLOCKS)); + $this->map(Items::RECORD_CAT(), self::id(Ids::MUSIC_DISC_CAT)); + $this->map(Items::RECORD_CHIRP(), self::id(Ids::MUSIC_DISC_CHIRP)); + $this->map(Items::RECORD_FAR(), self::id(Ids::MUSIC_DISC_FAR)); + $this->map(Items::RECORD_MALL(), self::id(Ids::MUSIC_DISC_MALL)); + $this->map(Items::RECORD_MELLOHI(), self::id(Ids::MUSIC_DISC_MELLOHI)); + $this->map(Items::RECORD_STAL(), self::id(Ids::MUSIC_DISC_STAL)); + $this->map(Items::RECORD_STRAD(), self::id(Ids::MUSIC_DISC_STRAD)); + $this->map(Items::RECORD_WAIT(), self::id(Ids::MUSIC_DISC_WAIT)); + $this->map(Items::RECORD_WARD(), self::id(Ids::MUSIC_DISC_WARD)); + $this->map(Items::REDSTONE_DUST(), self::id(Ids::REDSTONE)); + $this->map(Items::RED_BED(), self::bed(DyeColor::RED())); + $this->map(Items::RED_DYE(), self::id(Ids::RED_DYE)); + $this->map(Items::REGENERATION_POTION(), self::potion(PotionType::REGENERATION())); + $this->map(Items::REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::REGENERATION())); + $this->map(Items::ROTTEN_FLESH(), self::id(Ids::ROTTEN_FLESH)); + $this->map(Items::SCUTE(), self::id(Ids::SCUTE)); + $this->map(Items::SHEARS(), self::id(Ids::SHEARS)); + $this->map(Items::SHULKER_SHELL(), self::id(Ids::SHULKER_SHELL)); + $this->map(Items::SKELETON_SKULL(), self::skull(SkullType::SKELETON())); + $this->map(Items::SLIMEBALL(), self::id(Ids::SLIME_BALL)); + $this->map(Items::SLOWNESS_POTION(), self::potion(PotionType::SLOWNESS())); + $this->map(Items::SLOWNESS_SPLASH_POTION(), self::splashPotion(PotionType::SLOWNESS())); + $this->map(Items::SLOW_FALLING_POTION(), self::potion(PotionType::SLOW_FALLING())); + $this->map(Items::SLOW_FALLING_SPLASH_POTION(), self::splashPotion(PotionType::SLOW_FALLING())); + $this->map(Items::SNOWBALL(), self::id(Ids::SNOWBALL)); + $this->map(Items::SPIDER_EYE(), self::id(Ids::SPIDER_EYE)); + $this->map(Items::SPRUCE_BOAT(), self::id(Ids::SPRUCE_BOAT)); + $this->map(Items::SPRUCE_SIGN(), self::id(Ids::SPRUCE_SIGN)); + $this->map(Items::SQUID_SPAWN_EGG(), self::id(Ids::SQUID_SPAWN_EGG)); + $this->map(Items::STEAK(), self::id(Ids::COOKED_BEEF)); + $this->map(Items::STICK(), self::id(Ids::STICK)); + $this->map(Items::STONE_AXE(), self::id(Ids::STONE_AXE)); + $this->map(Items::STONE_HOE(), self::id(Ids::STONE_HOE)); + $this->map(Items::STONE_PICKAXE(), self::id(Ids::STONE_PICKAXE)); + $this->map(Items::STONE_SHOVEL(), self::id(Ids::STONE_SHOVEL)); + $this->map(Items::STONE_SWORD(), self::id(Ids::STONE_SWORD)); + $this->map(Items::STRENGTH_POTION(), self::potion(PotionType::STRENGTH())); + $this->map(Items::STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::STRENGTH())); + $this->map(Items::STRING(), self::id(Ids::STRING)); + $this->map(Items::STRONG_HARMING_POTION(), self::potion(PotionType::STRONG_HARMING())); + $this->map(Items::STRONG_HARMING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_HARMING())); + $this->map(Items::STRONG_HEALING_POTION(), self::potion(PotionType::STRONG_HEALING())); + $this->map(Items::STRONG_HEALING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_HEALING())); + $this->map(Items::STRONG_LEAPING_POTION(), self::potion(PotionType::STRONG_LEAPING())); + $this->map(Items::STRONG_LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_LEAPING())); + $this->map(Items::STRONG_POISON_POTION(), self::potion(PotionType::STRONG_POISON())); + $this->map(Items::STRONG_POISON_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_POISON())); + $this->map(Items::STRONG_REGENERATION_POTION(), self::potion(PotionType::STRONG_REGENERATION())); + $this->map(Items::STRONG_REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_REGENERATION())); + $this->map(Items::STRONG_STRENGTH_POTION(), self::potion(PotionType::STRONG_STRENGTH())); + $this->map(Items::STRONG_STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_STRENGTH())); + $this->map(Items::STRONG_SWIFTNESS_POTION(), self::potion(PotionType::STRONG_SWIFTNESS())); + $this->map(Items::STRONG_SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_SWIFTNESS())); + $this->map(Items::STRONG_TURTLE_MASTER_POTION(), self::potion(PotionType::STRONG_TURTLE_MASTER())); + $this->map(Items::STRONG_TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_TURTLE_MASTER())); + $this->map(Items::SUGAR(), self::id(Ids::SUGAR)); + $this->map(Items::SWEET_BERRIES(), self::id(Ids::SWEET_BERRIES)); + $this->map(Items::SWIFTNESS_POTION(), self::potion(PotionType::SWIFTNESS())); + $this->map(Items::SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::SWIFTNESS())); + $this->map(Items::THICK_POTION(), self::potion(PotionType::THICK())); + $this->map(Items::THICK_SPLASH_POTION(), self::splashPotion(PotionType::THICK())); + $this->map(Items::TOTEM(), self::id(Ids::TOTEM_OF_UNDYING)); + $this->map(Items::TURTLE_MASTER_POTION(), self::potion(PotionType::TURTLE_MASTER())); + $this->map(Items::TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::TURTLE_MASTER())); + $this->map(Items::VILLAGER_SPAWN_EGG(), self::id(Ids::VILLAGER_SPAWN_EGG)); + $this->map(Items::WATER_BREATHING_POTION(), self::potion(PotionType::WATER_BREATHING())); + $this->map(Items::WATER_BREATHING_SPLASH_POTION(), self::splashPotion(PotionType::WATER_BREATHING())); + $this->map(Items::WATER_BUCKET(), self::id(Ids::WATER_BUCKET)); + $this->map(Items::WATER_POTION(), self::potion(PotionType::WATER())); + $this->map(Items::WATER_SPLASH_POTION(), self::splashPotion(PotionType::WATER())); + $this->map(Items::WEAKNESS_POTION(), self::potion(PotionType::WEAKNESS())); + $this->map(Items::WEAKNESS_SPLASH_POTION(), self::splashPotion(PotionType::WEAKNESS())); + $this->map(Items::WHEAT(), self::id(Ids::WHEAT)); + $this->map(Items::WHEAT_SEEDS(), self::id(Ids::WHEAT_SEEDS)); + $this->map(Items::WHITE_BED(), self::bed(DyeColor::WHITE())); + $this->map(Items::WHITE_DYE(), self::id(Ids::WHITE_DYE)); + $this->map(Items::WITHER_POTION(), self::potion(PotionType::WITHER())); + $this->map(Items::WITHER_SKELETON_SKULL(), self::skull(SkullType::WITHER_SKELETON())); + $this->map(Items::WITHER_SPLASH_POTION(), self::splashPotion(PotionType::WITHER())); + $this->map(Items::WOODEN_AXE(), self::id(Ids::WOODEN_AXE)); + $this->map(Items::WOODEN_HOE(), self::id(Ids::WOODEN_HOE)); + $this->map(Items::WOODEN_PICKAXE(), self::id(Ids::WOODEN_PICKAXE)); + $this->map(Items::WOODEN_SHOVEL(), self::id(Ids::WOODEN_SHOVEL)); + $this->map(Items::WOODEN_SWORD(), self::id(Ids::WOODEN_SWORD)); + $this->map(Items::WRITABLE_BOOK(), self::id(Ids::WRITABLE_BOOK)); + $this->map(Items::WRITTEN_BOOK(), self::id(Ids::WRITTEN_BOOK)); + $this->map(Items::YELLOW_BED(), self::bed(DyeColor::YELLOW())); + $this->map(Items::YELLOW_DYE(), self::id(Ids::YELLOW_DYE)); + $this->map(Items::ZOMBIE_HEAD(), self::skull(SkullType::ZOMBIE())); + $this->map(Items::ZOMBIE_SPAWN_EGG(), self::id(Ids::ZOMBIE_SPAWN_EGG)); + } +} diff --git a/src/data/bedrock/item/ItemTypeIds.php b/src/data/bedrock/item/ItemTypeIds.php new file mode 100644 index 000000000..f51504136 --- /dev/null +++ b/src/data/bedrock/item/ItemTypeIds.php @@ -0,0 +1,409 @@ +name; } + + public function getMeta() : int{ return $this->meta; } + + public function getBlock() : ?BlockStateData{ return $this->block; } + + public function getTag() : ?CompoundTag{ return $this->tag; } + + public static function fromNbt(CompoundTag $tag) : self{ + try{ + //required + $name = $tag->getString(self::TAG_NAME); + $damage = $tag->getShort(self::TAG_DAMAGE); + + //optional + $blockStateNbt = $tag->getCompoundTag(self::TAG_BLOCK); + $extraData = $tag->getCompoundTag(self::TAG_TAG); + }catch(NbtException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + + //TODO: this hack probably doesn't belong here; it's necessary to deal with spawn eggs from before 1.16.100 + if( + $name === ItemTypeIds::SPAWN_EGG && + ($itemIdentifierTag = $tag->getTag(self::TAG_ITEM_IDENTIFIER)) instanceof StringTag && + str_starts_with($itemIdentifierTag->getValue(), "minecraft:") + ){ + \GlobalLogger::get()->debug("Handling legacy spawn egg for " . $itemIdentifierTag->getValue()); + $name = $itemIdentifierTag->getValue() . "_spawn_egg"; + } + + try{ + $blockStateData = $blockStateNbt !== null ? BlockStateData::fromNbt($blockStateNbt) : null; + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Failed to load item saved data: " . $e->getMessage(), 0, $e); + } + + return new self( + $name, + $damage, + $blockStateData, + $extraData + ); + } + + public function toNbt() : CompoundTag{ + $result = CompoundTag::create(); + $result->setString(self::TAG_NAME, $this->name); + $result->setShort(self::TAG_DAMAGE, $this->meta); + + if($this->block !== null){ + $result->setTag(self::TAG_BLOCK, $this->block->toNbt()); + } + if($this->tag !== null){ + $result->setTag(self::TAG_TAG, $this->tag); + } + + return $result; + } +} diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 77a77c28a..60694e8b5 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -33,16 +33,20 @@ use pocketmine\utils\CloningRegistryTrait; * @generate-registry-docblock * * @method static Boat ACACIA_BOAT() + * @method static ItemBlockWallOrFloor ACACIA_SIGN() * @method static ItemBlock AIR() * @method static Apple APPLE() * @method static Arrow ARROW() * @method static Potion AWKWARD_POTION() * @method static SplashPotion AWKWARD_SPLASH_POTION() * @method static BakedPotato BAKED_POTATO() + * @method static Bamboo BAMBOO() + * @method static Banner BANNER() * @method static Beetroot BEETROOT() * @method static BeetrootSeeds BEETROOT_SEEDS() * @method static BeetrootSoup BEETROOT_SOUP() * @method static Boat BIRCH_BOAT() + * @method static ItemBlockWallOrFloor BIRCH_SIGN() * @method static Bed BLACK_BED() * @method static Dye BLACK_DYE() * @method static Item BLAZE_POWDER() @@ -118,10 +122,12 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CookedRabbit COOKED_RABBIT() * @method static CookedSalmon COOKED_SALMON() * @method static Cookie COOKIE() + * @method static ItemBlockWallOrFloor CORAL_FAN() * @method static Skull CREEPER_HEAD() * @method static Bed CYAN_BED() * @method static Dye CYAN_DYE() * @method static Boat DARK_OAK_BOAT() + * @method static ItemBlockWallOrFloor DARK_OAK_SIGN() * @method static Item DIAMOND() * @method static Axe DIAMOND_AXE() * @method static Armor DIAMOND_BOOTS() @@ -189,6 +195,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Shovel IRON_SHOVEL() * @method static Sword IRON_SWORD() * @method static Boat JUNGLE_BOAT() + * @method static ItemBlockWallOrFloor JUNGLE_SIGN() * @method static Item LAPIS_LAZULI() * @method static LiquidBucket LAVA_BUCKET() * @method static Potion LEAPING_POTION() @@ -249,6 +256,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Potion NIGHT_VISION_POTION() * @method static SplashPotion NIGHT_VISION_SPLASH_POTION() * @method static Boat OAK_BOAT() + * @method static ItemBlockWallOrFloor OAK_SIGN() * @method static Bed ORANGE_BED() * @method static Dye ORANGE_DYE() * @method static PaintingItem PAINTING() @@ -308,6 +316,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Snowball SNOWBALL() * @method static SpiderEye SPIDER_EYE() * @method static Boat SPRUCE_BOAT() + * @method static ItemBlockWallOrFloor SPRUCE_SIGN() * @method static SpawnEgg SQUID_SPAWN_EGG() * @method static Steak STEAK() * @method static Stick STICK() @@ -395,16 +404,20 @@ final class VanillaItems{ protected static function setup() : void{ $factory = ItemFactory::getInstance(); self::register("acacia_boat", $factory->get(Ids::BOAT, 4)); + self::register("acacia_sign", $factory->get(Ids::ACACIA_SIGN)); self::register("air", $factory->get(Ids::AIR, 0, 0)); self::register("apple", $factory->get(Ids::APPLE)); self::register("arrow", $factory->get(Ids::ARROW)); self::register("awkward_potion", $factory->get(Ids::POTION, 4)); self::register("awkward_splash_potion", $factory->get(Ids::SPLASH_POTION, 4)); self::register("baked_potato", $factory->get(Ids::BAKED_POTATO)); + self::register("bamboo", $factory->get(Ids::BAMBOO)); + self::register("banner", $factory->get(Ids::BANNER)); self::register("beetroot", $factory->get(Ids::BEETROOT)); self::register("beetroot_seeds", $factory->get(Ids::BEETROOT_SEEDS)); self::register("beetroot_soup", $factory->get(Ids::BEETROOT_SOUP)); self::register("birch_boat", $factory->get(Ids::BOAT, 2)); + self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN)); self::register("black_bed", $factory->get(Ids::BED, 15)); self::register("black_dye", $factory->get(Ids::DYE, 16)); self::register("blaze_powder", $factory->get(Ids::BLAZE_POWDER)); @@ -480,10 +493,12 @@ final class VanillaItems{ self::register("cooked_rabbit", $factory->get(Ids::COOKED_RABBIT)); self::register("cooked_salmon", $factory->get(Ids::COOKED_SALMON)); self::register("cookie", $factory->get(Ids::COOKIE)); + self::register("coral_fan", $factory->get(Ids::CORAL_FAN)); self::register("creeper_head", $factory->get(Ids::MOB_HEAD, 4)); self::register("cyan_bed", $factory->get(Ids::BED, 9)); self::register("cyan_dye", $factory->get(Ids::DYE, 6)); self::register("dark_oak_boat", $factory->get(Ids::BOAT, 5)); + self::register("dark_oak_sign", $factory->get(Ids::DARKOAK_SIGN)); self::register("diamond", $factory->get(Ids::DIAMOND)); self::register("diamond_axe", $factory->get(Ids::DIAMOND_AXE)); self::register("diamond_boots", $factory->get(Ids::DIAMOND_BOOTS)); @@ -551,6 +566,7 @@ final class VanillaItems{ self::register("iron_shovel", $factory->get(Ids::IRON_SHOVEL)); self::register("iron_sword", $factory->get(Ids::IRON_SWORD)); self::register("jungle_boat", $factory->get(Ids::BOAT, 3)); + self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN)); self::register("lapis_lazuli", $factory->get(Ids::DYE, 4)); self::register("lava_bucket", $factory->get(Ids::BUCKET, 10)); self::register("leaping_potion", $factory->get(Ids::POTION, 9)); @@ -611,6 +627,7 @@ final class VanillaItems{ self::register("night_vision_potion", $factory->get(Ids::POTION, 5)); self::register("night_vision_splash_potion", $factory->get(Ids::SPLASH_POTION, 5)); self::register("oak_boat", $factory->get(Ids::BOAT)); + self::register("oak_sign", $factory->get(Ids::SIGN)); self::register("orange_bed", $factory->get(Ids::BED, 1)); self::register("orange_dye", $factory->get(Ids::DYE, 14)); self::register("painting", $factory->get(Ids::PAINTING)); @@ -670,6 +687,7 @@ final class VanillaItems{ self::register("snowball", $factory->get(Ids::SNOWBALL)); self::register("spider_eye", $factory->get(Ids::SPIDER_EYE)); self::register("spruce_boat", $factory->get(Ids::BOAT, 1)); + self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN)); self::register("squid_spawn_egg", $factory->get(Ids::SPAWN_EGG, 17)); self::register("steak", $factory->get(Ids::COOKED_BEEF)); self::register("stick", $factory->get(Ids::STICK)); diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php new file mode 100644 index 000000000..c841d72bb --- /dev/null +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -0,0 +1,66 @@ +deserializer = new ItemDeserializer(); + $this->serializer = new ItemSerializer(); + } + + public function testAllVanillaItemsSerializableAndDeserializable() : void{ + foreach(VanillaItems::getAll() as $item){ + if($item->isNull()){ + continue; + } + + $itemData = $this->serializer->serialize($item); + $newItem = $this->deserializer->deserialize($itemData); + + self::assertTrue($item->equalsExact($newItem)); + } + } + + public function testAllVanillaBlocksSerializableAndDeserializable() : void{ + foreach(VanillaBlocks::getAll() as $block){ + $item = $block->asItem(); + if($item->isNull()){ + continue; + } + + $itemData = $this->serializer->serialize($item); + $newItem = $this->deserializer->deserialize($itemData); + + self::assertTrue($item->equalsExact($newItem)); + } + } +} From 7769857f6a63b63d812a3651339041ca1523aaba Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:34:24 +0100 Subject: [PATCH 084/692] Added unit test to verify all VanillaBlocks serialize and deserialize correctly --- .../BlockSerializerDeserializerTest.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php new file mode 100644 index 000000000..d5a99328f --- /dev/null +++ b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php @@ -0,0 +1,27 @@ +deserializer = new BlockStateToBlockObjectDeserializer(); + $this->serializer = new BlockObjectToBlockStateSerializer(); + } + + public function testAllVanillaBlocksSerializableAndDeserializable() : void{ + foreach(VanillaBlocks::getAll() as $block){ + $blockStateData = $this->serializer->serializeBlock($block); + $newBlock = $this->deserializer->deserializeBlock($blockStateData); + + self::assertSame($block->getFullId(), $newBlock->getFullId()); + } + } +} From 107b0e1728d26fed02276385792343f9c998c45c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:35:12 +0100 Subject: [PATCH 085/692] CS again, kill me --- src/data/bedrock/BlockItemIdMap.php | 7 +++++-- src/data/bedrock/item/ItemSerializer.php | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/BlockItemIdMap.php b/src/data/bedrock/BlockItemIdMap.php index dd8fb8bb7..2cc9f7e6c 100644 --- a/src/data/bedrock/BlockItemIdMap.php +++ b/src/data/bedrock/BlockItemIdMap.php @@ -23,10 +23,13 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; -use pocketmine\entity\effect\StringToEffectParser; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; +use function array_search; +use function file_get_contents; +use function is_array; +use function json_decode; use const pocketmine\BEDROCK_DATA_PATH; /** @@ -60,4 +63,4 @@ final class BlockItemIdMap{ $blockId = array_search($itemId, $this->blockToItemId, true); return $blockId !== false ? $blockId : null; } -} \ No newline at end of file +} diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index e8031f5d8..4f4a4e685 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -219,7 +219,7 @@ final class ItemSerializer{ $this->map(Items::BAMBOO(), self::standardBlockWrapper()); $this->map(Items::CORAL_FAN(), self::standardBlockWrapper()); - $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); + $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); $this->map(Items::APPLE(), self::id(Ids::APPLE)); From d10d660a4ddfb0becf68a88b59864dd6c616448c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:37:50 +0100 Subject: [PATCH 086/692] fix PHPStan --- src/data/bedrock/BlockItemIdMap.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/BlockItemIdMap.php b/src/data/bedrock/BlockItemIdMap.php index 2cc9f7e6c..a345a0a32 100644 --- a/src/data/bedrock/BlockItemIdMap.php +++ b/src/data/bedrock/BlockItemIdMap.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; +use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; use function array_search; use function file_get_contents; @@ -39,7 +40,11 @@ final class BlockItemIdMap{ use SingletonTrait; private static function make() : self{ - $map = json_decode(file_get_contents(Path::join(BEDROCK_DATA_PATH, 'block_id_to_item_id_map.json')), true, flags: JSON_THROW_ON_ERROR); + $map = json_decode( + Utils::assumeNotFalse(file_get_contents(Path::join(BEDROCK_DATA_PATH, 'block_id_to_item_id_map.json')), "Missing required resource file"), + associative: true, + flags: JSON_THROW_ON_ERROR + ); if(!is_array($map)){ throw new AssumptionFailedError("Invalid blockitem ID mapping table, expected array as root type"); } From 3ae9341c527bf92694ae1ba7c5480e6b6b432743 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:43:44 +0100 Subject: [PATCH 087/692] [BC break] doors don't have a powered flag in Bedrock --- src/block/BlockLegacyMetadata.php | 1 - src/block/Door.php | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/block/BlockLegacyMetadata.php b/src/block/BlockLegacyMetadata.php index 22085c427..93408bdaa 100644 --- a/src/block/BlockLegacyMetadata.php +++ b/src/block/BlockLegacyMetadata.php @@ -98,7 +98,6 @@ final class BlockLegacyMetadata{ public const DOOR_FLAG_TOP = 0x08; public const DOOR_BOTTOM_FLAG_OPEN = 0x04; public const DOOR_TOP_FLAG_RIGHT = 0x01; - public const DOOR_TOP_FLAG_POWERED = 0x02; public const DOUBLE_PLANT_SUNFLOWER = 0; public const DOUBLE_PLANT_LILAC = 1; diff --git a/src/block/Door.php b/src/block/Door.php index a52e51d9d..8460a94f3 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -36,7 +36,6 @@ use pocketmine\world\sound\DoorSound; class Door extends Transparent{ use HorizontalFacingTrait; - use PoweredByRedstoneTrait; protected bool $top = false; protected bool $hingeRight = false; @@ -45,8 +44,7 @@ class Door extends Transparent{ protected function writeStateToMeta() : int{ if($this->top){ return BlockLegacyMetadata::DOOR_FLAG_TOP | - ($this->hingeRight ? BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT : 0) | - ($this->powered ? BlockLegacyMetadata::DOOR_TOP_FLAG_POWERED : 0); + ($this->hingeRight ? BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT : 0); } return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::rotateY($this->facing, true)) | ($this->open ? BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN : 0); @@ -56,7 +54,6 @@ class Door extends Transparent{ $this->top = ($stateMeta & BlockLegacyMetadata::DOOR_FLAG_TOP) !== 0; if($this->top){ $this->hingeRight = ($stateMeta & BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT) !== 0; - $this->powered = ($stateMeta & BlockLegacyMetadata::DOOR_TOP_FLAG_POWERED) !== 0; }else{ $this->facing = Facing::rotateY(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03), false); $this->open = ($stateMeta & BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN) !== 0; @@ -78,7 +75,6 @@ class Door extends Transparent{ $this->open = $other->open; }else{ $this->hingeRight = $other->hingeRight; - $this->powered = $other->powered; } } } From 4c03aabe0f4af2f600e2ff170224833a1f0c6d22 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:44:21 +0100 Subject: [PATCH 088/692] I'm going to kill myself... --- src/block/Door.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/block/Door.php b/src/block/Door.php index 8460a94f3..210f2dceb 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; From d17032dd8c8418d755c9f608cdd53a5c0788b2c6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 16:45:44 +0100 Subject: [PATCH 089/692] Test all known blockstates, not just the ones found in VanillaBlocks VanillaBlocks isn't guaranteed to be a complete record. For example, I've considered moving chemistry blocks to a separate EducationBlocks registry. In such a case, the blocks are still expected to serialize correctly, but they won't be in VanillaBlocks. --- .../convert/BlockSerializerDeserializerTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php index d5a99328f..5bec77cc1 100644 --- a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\blockstate\convert; use PHPUnit\Framework\TestCase; -use pocketmine\block\VanillaBlocks; +use pocketmine\block\BlockFactory; final class BlockSerializerDeserializerTest extends TestCase{ private BlockStateToBlockObjectDeserializer $deserializer; @@ -16,12 +16,12 @@ final class BlockSerializerDeserializerTest extends TestCase{ $this->serializer = new BlockObjectToBlockStateSerializer(); } - public function testAllVanillaBlocksSerializableAndDeserializable() : void{ - foreach(VanillaBlocks::getAll() as $block){ + public function testAllKnownBlockStatesSerializableAndDeserializable() : void{ + foreach(BlockFactory::getInstance()->getAllKnownStates() as $block){ $blockStateData = $this->serializer->serializeBlock($block); $newBlock = $this->deserializer->deserializeBlock($blockStateData); - self::assertSame($block->getFullId(), $newBlock->getFullId()); + self::assertSame($block->getFullId(), $newBlock->getFullId(), "Mismatch of blockstate for " . $block->getName()); } } } From d922f003f640b6bcdb72f8a2d77dba5d4a8f8d2b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 20:39:03 +0100 Subject: [PATCH 090/692] Fixed consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- tests/phpunit/block/regenerate_consistency_check.php | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 7f6816083..e6631df72 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"0":"Air","16":"Stone","17":"Granite","18":"Polished Granite","19":"Diorite","20":"Polished Diorite","21":"Andesite","22":"Polished Andesite","32":"Grass","48":"Dirt","49":"Dirt","64":"Cobblestone","80":"Oak Planks","81":"Spruce Planks","82":"Birch Planks","83":"Jungle Planks","84":"Acacia Planks","85":"Dark Oak Planks","96":"Oak Sapling","97":"Spruce Sapling","98":"Birch Sapling","99":"Jungle Sapling","100":"Acacia Sapling","101":"Dark Oak Sapling","104":"Oak Sapling","105":"Spruce Sapling","106":"Birch Sapling","107":"Jungle Sapling","108":"Acacia Sapling","109":"Dark Oak Sapling","112":"Bedrock","113":"Bedrock","128":"Water","129":"Water","130":"Water","131":"Water","132":"Water","133":"Water","134":"Water","135":"Water","136":"Water","137":"Water","138":"Water","139":"Water","140":"Water","141":"Water","142":"Water","143":"Water","144":"Water","145":"Water","146":"Water","147":"Water","148":"Water","149":"Water","150":"Water","151":"Water","152":"Water","153":"Water","154":"Water","155":"Water","156":"Water","157":"Water","158":"Water","159":"Water","160":"Lava","161":"Lava","162":"Lava","163":"Lava","164":"Lava","165":"Lava","166":"Lava","167":"Lava","168":"Lava","169":"Lava","170":"Lava","171":"Lava","172":"Lava","173":"Lava","174":"Lava","175":"Lava","176":"Lava","177":"Lava","178":"Lava","179":"Lava","180":"Lava","181":"Lava","182":"Lava","183":"Lava","184":"Lava","185":"Lava","186":"Lava","187":"Lava","188":"Lava","189":"Lava","190":"Lava","191":"Lava","192":"Sand","193":"Red Sand","208":"Gravel","224":"Gold Ore","240":"Iron Ore","256":"Coal Ore","272":"Oak Log","273":"Spruce Log","274":"Birch Log","275":"Jungle Log","276":"Oak Log","277":"Spruce Log","278":"Birch Log","279":"Jungle Log","280":"Oak Log","281":"Spruce Log","282":"Birch Log","283":"Jungle Log","288":"Oak Leaves","289":"Spruce Leaves","290":"Birch Leaves","291":"Jungle Leaves","292":"Oak Leaves","293":"Spruce Leaves","294":"Birch Leaves","295":"Jungle Leaves","296":"Oak Leaves","297":"Spruce Leaves","298":"Birch Leaves","299":"Jungle Leaves","300":"Oak Leaves","301":"Spruce Leaves","302":"Birch Leaves","303":"Jungle Leaves","304":"Sponge","305":"Sponge","320":"Glass","336":"Lapis Lazuli Ore","352":"Lapis Lazuli Block","384":"Sandstone","385":"Chiseled Sandstone","386":"Cut Sandstone","387":"Smooth Sandstone","400":"Note Block","416":"Bed Block","417":"Bed Block","418":"Bed Block","419":"Bed Block","420":"Bed Block","421":"Bed Block","422":"Bed Block","423":"Bed Block","424":"Bed Block","425":"Bed Block","426":"Bed Block","427":"Bed Block","428":"Bed Block","429":"Bed Block","430":"Bed Block","431":"Bed Block","432":"Powered Rail","433":"Powered Rail","434":"Powered Rail","435":"Powered Rail","436":"Powered Rail","437":"Powered Rail","440":"Powered Rail","441":"Powered Rail","442":"Powered Rail","443":"Powered Rail","444":"Powered Rail","445":"Powered Rail","448":"Detector Rail","449":"Detector Rail","450":"Detector Rail","451":"Detector Rail","452":"Detector Rail","453":"Detector Rail","456":"Detector Rail","457":"Detector Rail","458":"Detector Rail","459":"Detector Rail","460":"Detector Rail","461":"Detector Rail","480":"Cobweb","497":"Tall Grass","498":"Fern","512":"Dead Bush","560":"Wool","561":"Wool","562":"Wool","563":"Wool","564":"Wool","565":"Wool","566":"Wool","567":"Wool","568":"Wool","569":"Wool","570":"Wool","571":"Wool","572":"Wool","573":"Wool","574":"Wool","575":"Wool","576":"???","592":"Dandelion","608":"Poppy","609":"Blue Orchid","610":"Allium","611":"Azure Bluet","612":"Red Tulip","613":"Orange Tulip","614":"White Tulip","615":"Pink Tulip","616":"Oxeye Daisy","617":"Cornflower","618":"Lily of the Valley","624":"Brown Mushroom","640":"Red Mushroom","656":"Gold Block","672":"Iron Block","688":"Smooth Stone Slab","689":"Sandstone Slab","690":"Fake Wooden Slab","691":"Cobblestone Slab","692":"Brick Slab","693":"Stone Brick Slab","694":"Quartz Slab","695":"Nether Brick Slab","704":"Smooth Stone Slab","705":"Sandstone Slab","706":"Fake Wooden Slab","707":"Cobblestone Slab","708":"Brick Slab","709":"Stone Brick Slab","710":"Quartz Slab","711":"Nether Brick Slab","712":"Smooth Stone Slab","713":"Sandstone Slab","714":"Fake Wooden Slab","715":"Cobblestone Slab","716":"Brick Slab","717":"Stone Brick Slab","718":"Quartz Slab","719":"Nether Brick Slab","720":"Bricks","736":"TNT","737":"TNT","738":"TNT","739":"TNT","752":"Bookshelf","768":"Mossy Cobblestone","784":"Obsidian","801":"Torch","802":"Torch","803":"Torch","804":"Torch","805":"Torch","816":"Fire Block","817":"Fire Block","818":"Fire Block","819":"Fire Block","820":"Fire Block","821":"Fire Block","822":"Fire Block","823":"Fire Block","824":"Fire Block","825":"Fire Block","826":"Fire Block","827":"Fire Block","828":"Fire Block","829":"Fire Block","830":"Fire Block","831":"Fire Block","832":"Monster Spawner","848":"Oak Stairs","849":"Oak Stairs","850":"Oak Stairs","851":"Oak Stairs","852":"Oak Stairs","853":"Oak Stairs","854":"Oak Stairs","855":"Oak Stairs","866":"Chest","867":"Chest","868":"Chest","869":"Chest","880":"Redstone","881":"Redstone","882":"Redstone","883":"Redstone","884":"Redstone","885":"Redstone","886":"Redstone","887":"Redstone","888":"Redstone","889":"Redstone","890":"Redstone","891":"Redstone","892":"Redstone","893":"Redstone","894":"Redstone","895":"Redstone","896":"Diamond Ore","912":"Diamond Block","928":"Crafting Table","944":"Wheat Block","945":"Wheat Block","946":"Wheat Block","947":"Wheat Block","948":"Wheat Block","949":"Wheat Block","950":"Wheat Block","951":"Wheat Block","960":"Farmland","961":"Farmland","962":"Farmland","963":"Farmland","964":"Farmland","965":"Farmland","966":"Farmland","967":"Farmland","978":"Furnace","979":"Furnace","980":"Furnace","981":"Furnace","994":"Furnace","995":"Furnace","996":"Furnace","997":"Furnace","1008":"Oak Sign","1009":"Oak Sign","1010":"Oak Sign","1011":"Oak Sign","1012":"Oak Sign","1013":"Oak Sign","1014":"Oak Sign","1015":"Oak Sign","1016":"Oak Sign","1017":"Oak Sign","1018":"Oak Sign","1019":"Oak Sign","1020":"Oak Sign","1021":"Oak Sign","1022":"Oak Sign","1023":"Oak Sign","1024":"Oak Door","1025":"Oak Door","1026":"Oak Door","1027":"Oak Door","1028":"Oak Door","1029":"Oak Door","1030":"Oak Door","1031":"Oak Door","1032":"Oak Door","1033":"Oak Door","1034":"Oak Door","1035":"Oak Door","1042":"Ladder","1043":"Ladder","1044":"Ladder","1045":"Ladder","1056":"Rail","1057":"Rail","1058":"Rail","1059":"Rail","1060":"Rail","1061":"Rail","1062":"Rail","1063":"Rail","1064":"Rail","1065":"Rail","1072":"Cobblestone Stairs","1073":"Cobblestone Stairs","1074":"Cobblestone Stairs","1075":"Cobblestone Stairs","1076":"Cobblestone Stairs","1077":"Cobblestone Stairs","1078":"Cobblestone Stairs","1079":"Cobblestone Stairs","1090":"Oak Wall Sign","1091":"Oak Wall Sign","1092":"Oak Wall Sign","1093":"Oak Wall Sign","1104":"Lever","1105":"Lever","1106":"Lever","1107":"Lever","1108":"Lever","1109":"Lever","1110":"Lever","1111":"Lever","1112":"Lever","1113":"Lever","1114":"Lever","1115":"Lever","1116":"Lever","1117":"Lever","1118":"Lever","1119":"Lever","1120":"Stone Pressure Plate","1121":"Stone Pressure Plate","1136":"Iron Door","1137":"Iron Door","1138":"Iron Door","1139":"Iron Door","1140":"Iron Door","1141":"Iron Door","1142":"Iron Door","1143":"Iron Door","1144":"Iron Door","1145":"Iron Door","1146":"Iron Door","1147":"Iron Door","1152":"Oak Pressure Plate","1153":"Oak Pressure Plate","1168":"Redstone Ore","1184":"Redstone Ore","1201":"Redstone Torch","1202":"Redstone Torch","1203":"Redstone Torch","1204":"Redstone Torch","1205":"Redstone Torch","1217":"Redstone Torch","1218":"Redstone Torch","1219":"Redstone Torch","1220":"Redstone Torch","1221":"Redstone Torch","1232":"Stone Button","1233":"Stone Button","1234":"Stone Button","1235":"Stone Button","1236":"Stone Button","1237":"Stone Button","1240":"Stone Button","1241":"Stone Button","1242":"Stone Button","1243":"Stone Button","1244":"Stone Button","1245":"Stone Button","1248":"Snow Layer","1249":"Snow Layer","1250":"Snow Layer","1251":"Snow Layer","1252":"Snow Layer","1253":"Snow Layer","1254":"Snow Layer","1255":"Snow Layer","1264":"Ice","1280":"Snow Block","1296":"Cactus","1297":"Cactus","1298":"Cactus","1299":"Cactus","1300":"Cactus","1301":"Cactus","1302":"Cactus","1303":"Cactus","1304":"Cactus","1305":"Cactus","1306":"Cactus","1307":"Cactus","1308":"Cactus","1309":"Cactus","1310":"Cactus","1311":"Cactus","1312":"Clay Block","1328":"Sugarcane","1329":"Sugarcane","1330":"Sugarcane","1331":"Sugarcane","1332":"Sugarcane","1333":"Sugarcane","1334":"Sugarcane","1335":"Sugarcane","1336":"Sugarcane","1337":"Sugarcane","1338":"Sugarcane","1339":"Sugarcane","1340":"Sugarcane","1341":"Sugarcane","1342":"Sugarcane","1343":"Sugarcane","1344":"Jukebox","1360":"Oak Fence","1361":"Spruce Fence","1362":"Birch Fence","1363":"Jungle Fence","1364":"Acacia Fence","1365":"Dark Oak Fence","1376":"Pumpkin","1392":"Netherrack","1408":"Soul Sand","1424":"Glowstone","1441":"Nether Portal","1442":"Nether Portal","1456":"Jack o'Lantern","1457":"Jack o'Lantern","1458":"Jack o'Lantern","1459":"Jack o'Lantern","1472":"Cake","1473":"Cake","1474":"Cake","1475":"Cake","1476":"Cake","1477":"Cake","1478":"Cake","1488":"Redstone Repeater","1489":"Redstone Repeater","1490":"Redstone Repeater","1491":"Redstone Repeater","1492":"Redstone Repeater","1493":"Redstone Repeater","1494":"Redstone Repeater","1495":"Redstone Repeater","1496":"Redstone Repeater","1497":"Redstone Repeater","1498":"Redstone Repeater","1499":"Redstone Repeater","1500":"Redstone Repeater","1501":"Redstone Repeater","1502":"Redstone Repeater","1503":"Redstone Repeater","1504":"Redstone Repeater","1505":"Redstone Repeater","1506":"Redstone Repeater","1507":"Redstone Repeater","1508":"Redstone Repeater","1509":"Redstone Repeater","1510":"Redstone Repeater","1511":"Redstone Repeater","1512":"Redstone Repeater","1513":"Redstone Repeater","1514":"Redstone Repeater","1515":"Redstone Repeater","1516":"Redstone Repeater","1517":"Redstone Repeater","1518":"Redstone Repeater","1519":"Redstone Repeater","1520":"Invisible Bedrock","1536":"Oak Trapdoor","1537":"Oak Trapdoor","1538":"Oak Trapdoor","1539":"Oak Trapdoor","1540":"Oak Trapdoor","1541":"Oak Trapdoor","1542":"Oak Trapdoor","1543":"Oak Trapdoor","1544":"Oak Trapdoor","1545":"Oak Trapdoor","1546":"Oak Trapdoor","1547":"Oak Trapdoor","1548":"Oak Trapdoor","1549":"Oak Trapdoor","1550":"Oak Trapdoor","1551":"Oak Trapdoor","1552":"Infested Stone","1553":"Infested Cobblestone","1554":"Infested Stone Brick","1555":"Infested Mossy Stone Brick","1556":"Infested Cracked Stone Brick","1557":"Infested Chiseled Stone Brick","1568":"Stone Bricks","1569":"Mossy Stone Bricks","1570":"Cracked Stone Bricks","1571":"Chiseled Stone Bricks","1584":"Brown Mushroom Block","1585":"Brown Mushroom Block","1586":"Brown Mushroom Block","1587":"Brown Mushroom Block","1588":"Brown Mushroom Block","1589":"Brown Mushroom Block","1590":"Brown Mushroom Block","1591":"Brown Mushroom Block","1592":"Brown Mushroom Block","1593":"Brown Mushroom Block","1594":"Mushroom Stem","1598":"Brown Mushroom Block","1599":"All Sided Mushroom Stem","1600":"Red Mushroom Block","1601":"Red Mushroom Block","1602":"Red Mushroom Block","1603":"Red Mushroom Block","1604":"Red Mushroom Block","1605":"Red Mushroom Block","1606":"Red Mushroom Block","1607":"Red Mushroom Block","1608":"Red Mushroom Block","1609":"Red Mushroom Block","1614":"Red Mushroom Block","1616":"Iron Bars","1632":"Glass Pane","1648":"Melon Block","1664":"Pumpkin Stem","1665":"Pumpkin Stem","1666":"Pumpkin Stem","1667":"Pumpkin Stem","1668":"Pumpkin Stem","1669":"Pumpkin Stem","1670":"Pumpkin Stem","1671":"Pumpkin Stem","1680":"Melon Stem","1681":"Melon Stem","1682":"Melon Stem","1683":"Melon Stem","1684":"Melon Stem","1685":"Melon Stem","1686":"Melon Stem","1687":"Melon Stem","1696":"Vines","1697":"Vines","1698":"Vines","1699":"Vines","1700":"Vines","1701":"Vines","1702":"Vines","1703":"Vines","1704":"Vines","1705":"Vines","1706":"Vines","1707":"Vines","1708":"Vines","1709":"Vines","1710":"Vines","1711":"Vines","1712":"Oak Fence Gate","1713":"Oak Fence Gate","1714":"Oak Fence Gate","1715":"Oak Fence Gate","1716":"Oak Fence Gate","1717":"Oak Fence Gate","1718":"Oak Fence Gate","1719":"Oak Fence Gate","1720":"Oak Fence Gate","1721":"Oak Fence Gate","1722":"Oak Fence Gate","1723":"Oak Fence Gate","1724":"Oak Fence Gate","1725":"Oak Fence Gate","1726":"Oak Fence Gate","1727":"Oak Fence Gate","1728":"Brick Stairs","1729":"Brick Stairs","1730":"Brick Stairs","1731":"Brick Stairs","1732":"Brick Stairs","1733":"Brick Stairs","1734":"Brick Stairs","1735":"Brick Stairs","1744":"Stone Brick Stairs","1745":"Stone Brick Stairs","1746":"Stone Brick Stairs","1747":"Stone Brick Stairs","1748":"Stone Brick Stairs","1749":"Stone Brick Stairs","1750":"Stone Brick Stairs","1751":"Stone Brick Stairs","1760":"Mycelium","1776":"Lily Pad","1792":"Nether Bricks","1808":"Nether Brick Fence","1824":"Nether Brick Stairs","1825":"Nether Brick Stairs","1826":"Nether Brick Stairs","1827":"Nether Brick Stairs","1828":"Nether Brick Stairs","1829":"Nether Brick Stairs","1830":"Nether Brick Stairs","1831":"Nether Brick Stairs","1840":"Nether Wart","1841":"Nether Wart","1842":"Nether Wart","1843":"Nether Wart","1856":"Enchanting Table","1872":"Brewing Stand","1873":"Brewing Stand","1874":"Brewing Stand","1875":"Brewing Stand","1876":"Brewing Stand","1877":"Brewing Stand","1878":"Brewing Stand","1879":"Brewing Stand","1920":"End Portal Frame","1921":"End Portal Frame","1922":"End Portal Frame","1923":"End Portal Frame","1924":"End Portal Frame","1925":"End Portal Frame","1926":"End Portal Frame","1927":"End Portal Frame","1936":"End Stone","1952":"Dragon Egg","1968":"Redstone Lamp","1984":"Redstone Lamp","2016":"Activator Rail","2017":"Activator Rail","2018":"Activator Rail","2019":"Activator Rail","2020":"Activator Rail","2021":"Activator Rail","2024":"Activator Rail","2025":"Activator Rail","2026":"Activator Rail","2027":"Activator Rail","2028":"Activator Rail","2029":"Activator Rail","2032":"Cocoa Block","2033":"Cocoa Block","2034":"Cocoa Block","2035":"Cocoa Block","2036":"Cocoa Block","2037":"Cocoa Block","2038":"Cocoa Block","2039":"Cocoa Block","2040":"Cocoa Block","2041":"Cocoa Block","2042":"Cocoa Block","2043":"Cocoa Block","2048":"Sandstone Stairs","2049":"Sandstone Stairs","2050":"Sandstone Stairs","2051":"Sandstone Stairs","2052":"Sandstone Stairs","2053":"Sandstone Stairs","2054":"Sandstone Stairs","2055":"Sandstone Stairs","2064":"Emerald Ore","2082":"Ender Chest","2083":"Ender Chest","2084":"Ender Chest","2085":"Ender Chest","2096":"Tripwire Hook","2097":"Tripwire Hook","2098":"Tripwire Hook","2099":"Tripwire Hook","2100":"Tripwire Hook","2101":"Tripwire Hook","2102":"Tripwire Hook","2103":"Tripwire Hook","2104":"Tripwire Hook","2105":"Tripwire Hook","2106":"Tripwire Hook","2107":"Tripwire Hook","2108":"Tripwire Hook","2109":"Tripwire Hook","2110":"Tripwire Hook","2111":"Tripwire Hook","2112":"Tripwire","2113":"Tripwire","2114":"Tripwire","2115":"Tripwire","2116":"Tripwire","2117":"Tripwire","2118":"Tripwire","2119":"Tripwire","2120":"Tripwire","2121":"Tripwire","2122":"Tripwire","2123":"Tripwire","2124":"Tripwire","2125":"Tripwire","2126":"Tripwire","2127":"Tripwire","2128":"Emerald Block","2144":"Spruce Stairs","2145":"Spruce Stairs","2146":"Spruce Stairs","2147":"Spruce Stairs","2148":"Spruce Stairs","2149":"Spruce Stairs","2150":"Spruce Stairs","2151":"Spruce Stairs","2160":"Birch Stairs","2161":"Birch Stairs","2162":"Birch Stairs","2163":"Birch Stairs","2164":"Birch Stairs","2165":"Birch Stairs","2166":"Birch Stairs","2167":"Birch Stairs","2176":"Jungle Stairs","2177":"Jungle Stairs","2178":"Jungle Stairs","2179":"Jungle Stairs","2180":"Jungle Stairs","2181":"Jungle Stairs","2182":"Jungle Stairs","2183":"Jungle Stairs","2208":"Beacon","2224":"Cobblestone Wall","2225":"Mossy Cobblestone Wall","2226":"Granite Wall","2227":"Diorite Wall","2228":"Andesite Wall","2229":"Sandstone Wall","2230":"Brick Wall","2231":"Stone Brick Wall","2232":"Mossy Stone Brick Wall","2233":"Nether Brick Wall","2234":"End Stone Brick Wall","2235":"Prismarine Wall","2236":"Red Sandstone Wall","2237":"Red Nether Brick Wall","2240":"Flower Pot","2256":"Carrot Block","2257":"Carrot Block","2258":"Carrot Block","2259":"Carrot Block","2260":"Carrot Block","2261":"Carrot Block","2262":"Carrot Block","2263":"Carrot Block","2272":"Potato Block","2273":"Potato Block","2274":"Potato Block","2275":"Potato Block","2276":"Potato Block","2277":"Potato Block","2278":"Potato Block","2279":"Potato Block","2288":"Oak Button","2289":"Oak Button","2290":"Oak Button","2291":"Oak Button","2292":"Oak Button","2293":"Oak Button","2296":"Oak Button","2297":"Oak Button","2298":"Oak Button","2299":"Oak Button","2300":"Oak Button","2301":"Oak Button","2305":"Mob Head","2306":"Mob Head","2307":"Mob Head","2308":"Mob Head","2309":"Mob Head","2320":"Anvil","2321":"Anvil","2322":"Anvil","2323":"Anvil","2324":"Anvil","2325":"Anvil","2326":"Anvil","2327":"Anvil","2328":"Anvil","2329":"Anvil","2330":"Anvil","2331":"Anvil","2338":"Trapped Chest","2339":"Trapped Chest","2340":"Trapped Chest","2341":"Trapped Chest","2352":"Weighted Pressure Plate Light","2353":"Weighted Pressure Plate Light","2354":"Weighted Pressure Plate Light","2355":"Weighted Pressure Plate Light","2356":"Weighted Pressure Plate Light","2357":"Weighted Pressure Plate Light","2358":"Weighted Pressure Plate Light","2359":"Weighted Pressure Plate Light","2360":"Weighted Pressure Plate Light","2361":"Weighted Pressure Plate Light","2362":"Weighted Pressure Plate Light","2363":"Weighted Pressure Plate Light","2364":"Weighted Pressure Plate Light","2365":"Weighted Pressure Plate Light","2366":"Weighted Pressure Plate Light","2367":"Weighted Pressure Plate Light","2368":"Weighted Pressure Plate Heavy","2369":"Weighted Pressure Plate Heavy","2370":"Weighted Pressure Plate Heavy","2371":"Weighted Pressure Plate Heavy","2372":"Weighted Pressure Plate Heavy","2373":"Weighted Pressure Plate Heavy","2374":"Weighted Pressure Plate Heavy","2375":"Weighted Pressure Plate Heavy","2376":"Weighted Pressure Plate Heavy","2377":"Weighted Pressure Plate Heavy","2378":"Weighted Pressure Plate Heavy","2379":"Weighted Pressure Plate Heavy","2380":"Weighted Pressure Plate Heavy","2381":"Weighted Pressure Plate Heavy","2382":"Weighted Pressure Plate Heavy","2383":"Weighted Pressure Plate Heavy","2384":"Redstone Comparator","2385":"Redstone Comparator","2386":"Redstone Comparator","2387":"Redstone Comparator","2388":"Redstone Comparator","2389":"Redstone Comparator","2390":"Redstone Comparator","2391":"Redstone Comparator","2408":"Redstone Comparator","2409":"Redstone Comparator","2410":"Redstone Comparator","2411":"Redstone Comparator","2412":"Redstone Comparator","2413":"Redstone Comparator","2414":"Redstone Comparator","2415":"Redstone Comparator","2416":"Daylight Sensor","2417":"Daylight Sensor","2418":"Daylight Sensor","2419":"Daylight Sensor","2420":"Daylight Sensor","2421":"Daylight Sensor","2422":"Daylight Sensor","2423":"Daylight Sensor","2424":"Daylight Sensor","2425":"Daylight Sensor","2426":"Daylight Sensor","2427":"Daylight Sensor","2428":"Daylight Sensor","2429":"Daylight Sensor","2430":"Daylight Sensor","2431":"Daylight Sensor","2432":"Redstone Block","2448":"Nether Quartz Ore","2464":"Hopper","2466":"Hopper","2467":"Hopper","2468":"Hopper","2469":"Hopper","2472":"Hopper","2474":"Hopper","2475":"Hopper","2476":"Hopper","2477":"Hopper","2480":"Quartz Block","2481":"Chiseled Quartz Block","2482":"Quartz Pillar","2483":"Smooth Quartz Block","2485":"Chiseled Quartz Block","2486":"Quartz Pillar","2489":"Chiseled Quartz Block","2490":"Quartz Pillar","2496":"Quartz Stairs","2497":"Quartz Stairs","2498":"Quartz Stairs","2499":"Quartz Stairs","2500":"Quartz Stairs","2501":"Quartz Stairs","2502":"Quartz Stairs","2503":"Quartz Stairs","2512":"Oak Slab","2513":"Spruce Slab","2514":"Birch Slab","2515":"Jungle Slab","2516":"Acacia Slab","2517":"Dark Oak Slab","2528":"Oak Slab","2529":"Spruce Slab","2530":"Birch Slab","2531":"Jungle Slab","2532":"Acacia Slab","2533":"Dark Oak Slab","2536":"Oak Slab","2537":"Spruce Slab","2538":"Birch Slab","2539":"Jungle Slab","2540":"Acacia Slab","2541":"Dark Oak Slab","2544":"Stained Clay","2545":"Stained Clay","2546":"Stained Clay","2547":"Stained Clay","2548":"Stained Clay","2549":"Stained Clay","2550":"Stained Clay","2551":"Stained Clay","2552":"Stained Clay","2553":"Stained Clay","2554":"Stained Clay","2555":"Stained Clay","2556":"Stained Clay","2557":"Stained Clay","2558":"Stained Clay","2559":"Stained Clay","2560":"Stained Glass Pane","2561":"Stained Glass Pane","2562":"Stained Glass Pane","2563":"Stained Glass Pane","2564":"Stained Glass Pane","2565":"Stained Glass Pane","2566":"Stained Glass Pane","2567":"Stained Glass Pane","2568":"Stained Glass Pane","2569":"Stained Glass Pane","2570":"Stained Glass Pane","2571":"Stained Glass Pane","2572":"Stained Glass Pane","2573":"Stained Glass Pane","2574":"Stained Glass Pane","2575":"Stained Glass Pane","2576":"Acacia Leaves","2577":"Dark Oak Leaves","2580":"Acacia Leaves","2581":"Dark Oak Leaves","2584":"Acacia Leaves","2585":"Dark Oak Leaves","2588":"Acacia Leaves","2589":"Dark Oak Leaves","2592":"Acacia Log","2593":"Dark Oak Log","2596":"Acacia Log","2597":"Dark Oak Log","2600":"Acacia Log","2601":"Dark Oak Log","2608":"Acacia Stairs","2609":"Acacia Stairs","2610":"Acacia Stairs","2611":"Acacia Stairs","2612":"Acacia Stairs","2613":"Acacia Stairs","2614":"Acacia Stairs","2615":"Acacia Stairs","2624":"Dark Oak Stairs","2625":"Dark Oak Stairs","2626":"Dark Oak Stairs","2627":"Dark Oak Stairs","2628":"Dark Oak Stairs","2629":"Dark Oak Stairs","2630":"Dark Oak Stairs","2631":"Dark Oak Stairs","2640":"Slime Block","2672":"Iron Trapdoor","2673":"Iron Trapdoor","2674":"Iron Trapdoor","2675":"Iron Trapdoor","2676":"Iron Trapdoor","2677":"Iron Trapdoor","2678":"Iron Trapdoor","2679":"Iron Trapdoor","2680":"Iron Trapdoor","2681":"Iron Trapdoor","2682":"Iron Trapdoor","2683":"Iron Trapdoor","2684":"Iron Trapdoor","2685":"Iron Trapdoor","2686":"Iron Trapdoor","2687":"Iron Trapdoor","2688":"Prismarine","2689":"Dark Prismarine","2690":"Prismarine Bricks","2704":"Sea Lantern","2720":"Hay Bale","2724":"Hay Bale","2728":"Hay Bale","2736":"Carpet","2737":"Carpet","2738":"Carpet","2739":"Carpet","2740":"Carpet","2741":"Carpet","2742":"Carpet","2743":"Carpet","2744":"Carpet","2745":"Carpet","2746":"Carpet","2747":"Carpet","2748":"Carpet","2749":"Carpet","2750":"Carpet","2751":"Carpet","2752":"Hardened Clay","2768":"Coal Block","2784":"Packed Ice","2800":"Sunflower","2801":"Lilac","2802":"Double Tallgrass","2803":"Large Fern","2804":"Rose Bush","2805":"Peony","2808":"Sunflower","2809":"Lilac","2810":"Double Tallgrass","2811":"Large Fern","2812":"Rose Bush","2813":"Peony","2816":"Banner","2817":"Banner","2818":"Banner","2819":"Banner","2820":"Banner","2821":"Banner","2822":"Banner","2823":"Banner","2824":"Banner","2825":"Banner","2826":"Banner","2827":"Banner","2828":"Banner","2829":"Banner","2830":"Banner","2831":"Banner","2834":"Wall Banner","2835":"Wall Banner","2836":"Wall Banner","2837":"Wall Banner","2848":"Daylight Sensor","2849":"Daylight Sensor","2850":"Daylight Sensor","2851":"Daylight Sensor","2852":"Daylight Sensor","2853":"Daylight Sensor","2854":"Daylight Sensor","2855":"Daylight Sensor","2856":"Daylight Sensor","2857":"Daylight Sensor","2858":"Daylight Sensor","2859":"Daylight Sensor","2860":"Daylight Sensor","2861":"Daylight Sensor","2862":"Daylight Sensor","2863":"Daylight Sensor","2864":"Red Sandstone","2865":"Chiseled Red Sandstone","2866":"Cut Red Sandstone","2867":"Smooth Red Sandstone","2880":"Red Sandstone Stairs","2881":"Red Sandstone Stairs","2882":"Red Sandstone Stairs","2883":"Red Sandstone Stairs","2884":"Red Sandstone Stairs","2885":"Red Sandstone Stairs","2886":"Red Sandstone Stairs","2887":"Red Sandstone Stairs","2896":"Red Sandstone Slab","2897":"Purpur Slab","2898":"Prismarine Slab","2899":"Dark Prismarine Slab","2900":"Prismarine Bricks Slab","2901":"Mossy Cobblestone Slab","2902":"Smooth Sandstone Slab","2903":"Red Nether Brick Slab","2912":"Red Sandstone Slab","2913":"Purpur Slab","2914":"Prismarine Slab","2915":"Dark Prismarine Slab","2916":"Prismarine Bricks Slab","2917":"Mossy Cobblestone Slab","2918":"Smooth Sandstone Slab","2919":"Red Nether Brick Slab","2920":"Red Sandstone Slab","2921":"Purpur Slab","2922":"Prismarine Slab","2923":"Dark Prismarine Slab","2924":"Prismarine Bricks Slab","2925":"Mossy Cobblestone Slab","2926":"Smooth Sandstone Slab","2927":"Red Nether Brick Slab","2928":"Spruce Fence Gate","2929":"Spruce Fence Gate","2930":"Spruce Fence Gate","2931":"Spruce Fence Gate","2932":"Spruce Fence Gate","2933":"Spruce Fence Gate","2934":"Spruce Fence Gate","2935":"Spruce Fence Gate","2936":"Spruce Fence Gate","2937":"Spruce Fence Gate","2938":"Spruce Fence Gate","2939":"Spruce Fence Gate","2940":"Spruce Fence Gate","2941":"Spruce Fence Gate","2942":"Spruce Fence Gate","2943":"Spruce Fence Gate","2944":"Birch Fence Gate","2945":"Birch Fence Gate","2946":"Birch Fence Gate","2947":"Birch Fence Gate","2948":"Birch Fence Gate","2949":"Birch Fence Gate","2950":"Birch Fence Gate","2951":"Birch Fence Gate","2952":"Birch Fence Gate","2953":"Birch Fence Gate","2954":"Birch Fence Gate","2955":"Birch Fence Gate","2956":"Birch Fence Gate","2957":"Birch Fence Gate","2958":"Birch Fence Gate","2959":"Birch Fence Gate","2960":"Jungle Fence Gate","2961":"Jungle Fence Gate","2962":"Jungle Fence Gate","2963":"Jungle Fence Gate","2964":"Jungle Fence Gate","2965":"Jungle Fence Gate","2966":"Jungle Fence Gate","2967":"Jungle Fence Gate","2968":"Jungle Fence Gate","2969":"Jungle Fence Gate","2970":"Jungle Fence Gate","2971":"Jungle Fence Gate","2972":"Jungle Fence Gate","2973":"Jungle Fence Gate","2974":"Jungle Fence Gate","2975":"Jungle Fence Gate","2976":"Dark Oak Fence Gate","2977":"Dark Oak Fence Gate","2978":"Dark Oak Fence Gate","2979":"Dark Oak Fence Gate","2980":"Dark Oak Fence Gate","2981":"Dark Oak Fence Gate","2982":"Dark Oak Fence Gate","2983":"Dark Oak Fence Gate","2984":"Dark Oak Fence Gate","2985":"Dark Oak Fence Gate","2986":"Dark Oak Fence Gate","2987":"Dark Oak Fence Gate","2988":"Dark Oak Fence Gate","2989":"Dark Oak Fence Gate","2990":"Dark Oak Fence Gate","2991":"Dark Oak Fence Gate","2992":"Acacia Fence Gate","2993":"Acacia Fence Gate","2994":"Acacia Fence Gate","2995":"Acacia Fence Gate","2996":"Acacia Fence Gate","2997":"Acacia Fence Gate","2998":"Acacia Fence Gate","2999":"Acacia Fence Gate","3000":"Acacia Fence Gate","3001":"Acacia Fence Gate","3002":"Acacia Fence Gate","3003":"Acacia Fence Gate","3004":"Acacia Fence Gate","3005":"Acacia Fence Gate","3006":"Acacia Fence Gate","3007":"Acacia Fence Gate","3040":"Hardened Glass Pane","3056":"Stained Hardened Glass Pane","3057":"Stained Hardened Glass Pane","3058":"Stained Hardened Glass Pane","3059":"Stained Hardened Glass Pane","3060":"Stained Hardened Glass Pane","3061":"Stained Hardened Glass Pane","3062":"Stained Hardened Glass Pane","3063":"Stained Hardened Glass Pane","3064":"Stained Hardened Glass Pane","3065":"Stained Hardened Glass Pane","3066":"Stained Hardened Glass Pane","3067":"Stained Hardened Glass Pane","3068":"Stained Hardened Glass Pane","3069":"Stained Hardened Glass Pane","3070":"Stained Hardened Glass Pane","3071":"Stained Hardened Glass Pane","3072":"Heat Block","3088":"Spruce Door","3089":"Spruce Door","3090":"Spruce Door","3091":"Spruce Door","3092":"Spruce Door","3093":"Spruce Door","3094":"Spruce Door","3095":"Spruce Door","3096":"Spruce Door","3097":"Spruce Door","3098":"Spruce Door","3099":"Spruce Door","3104":"Birch Door","3105":"Birch Door","3106":"Birch Door","3107":"Birch Door","3108":"Birch Door","3109":"Birch Door","3110":"Birch Door","3111":"Birch Door","3112":"Birch Door","3113":"Birch Door","3114":"Birch Door","3115":"Birch Door","3120":"Jungle Door","3121":"Jungle Door","3122":"Jungle Door","3123":"Jungle Door","3124":"Jungle Door","3125":"Jungle Door","3126":"Jungle Door","3127":"Jungle Door","3128":"Jungle Door","3129":"Jungle Door","3130":"Jungle Door","3131":"Jungle Door","3136":"Acacia Door","3137":"Acacia Door","3138":"Acacia Door","3139":"Acacia Door","3140":"Acacia Door","3141":"Acacia Door","3142":"Acacia Door","3143":"Acacia Door","3144":"Acacia Door","3145":"Acacia Door","3146":"Acacia Door","3147":"Acacia Door","3152":"Dark Oak Door","3153":"Dark Oak Door","3154":"Dark Oak Door","3155":"Dark Oak Door","3156":"Dark Oak Door","3157":"Dark Oak Door","3158":"Dark Oak Door","3159":"Dark Oak Door","3160":"Dark Oak Door","3161":"Dark Oak Door","3162":"Dark Oak Door","3163":"Dark Oak Door","3168":"Grass Path","3184":"Item Frame","3185":"Item Frame","3186":"Item Frame","3187":"Item Frame","3188":"Item Frame","3189":"Item Frame","3190":"Item Frame","3191":"Item Frame","3216":"Purpur Block","3218":"Purpur Pillar","3222":"Purpur Pillar","3226":"Purpur Pillar","3233":"Red Torch","3234":"Red Torch","3235":"Red Torch","3236":"Red Torch","3237":"Red Torch","3241":"Green Torch","3242":"Green Torch","3243":"Green Torch","3244":"Green Torch","3245":"Green Torch","3248":"Purpur Stairs","3249":"Purpur Stairs","3250":"Purpur Stairs","3251":"Purpur Stairs","3252":"Purpur Stairs","3253":"Purpur Stairs","3254":"Purpur Stairs","3255":"Purpur Stairs","3265":"Blue Torch","3266":"Blue Torch","3267":"Blue Torch","3268":"Blue Torch","3269":"Blue Torch","3273":"Purple Torch","3274":"Purple Torch","3275":"Purple Torch","3276":"Purple Torch","3277":"Purple Torch","3280":"Shulker Box","3296":"End Stone Bricks","3312":"Frosted Ice","3313":"Frosted Ice","3314":"Frosted Ice","3315":"Frosted Ice","3328":"End Rod","3329":"End Rod","3330":"End Rod","3331":"End Rod","3332":"End Rod","3333":"End Rod","3408":"Magma Block","3424":"Nether Wart Block","3440":"Red Nether Bricks","3456":"Bone Block","3460":"Bone Block","3464":"Bone Block","3488":"Dyed Shulker Box","3489":"Dyed Shulker Box","3490":"Dyed Shulker Box","3491":"Dyed Shulker Box","3492":"Dyed Shulker Box","3493":"Dyed Shulker Box","3494":"Dyed Shulker Box","3495":"Dyed Shulker Box","3496":"Dyed Shulker Box","3497":"Dyed Shulker Box","3498":"Dyed Shulker Box","3499":"Dyed Shulker Box","3500":"Dyed Shulker Box","3501":"Dyed Shulker Box","3502":"Dyed Shulker Box","3503":"Dyed Shulker Box","3506":"Purple Glazed Terracotta","3507":"Purple Glazed Terracotta","3508":"Purple Glazed Terracotta","3509":"Purple Glazed Terracotta","3522":"White Glazed Terracotta","3523":"White Glazed Terracotta","3524":"White Glazed Terracotta","3525":"White Glazed Terracotta","3538":"Orange Glazed Terracotta","3539":"Orange Glazed Terracotta","3540":"Orange Glazed Terracotta","3541":"Orange Glazed Terracotta","3554":"Magenta Glazed Terracotta","3555":"Magenta Glazed Terracotta","3556":"Magenta Glazed Terracotta","3557":"Magenta Glazed Terracotta","3570":"Light Blue Glazed Terracotta","3571":"Light Blue Glazed Terracotta","3572":"Light Blue Glazed Terracotta","3573":"Light Blue Glazed Terracotta","3586":"Yellow Glazed Terracotta","3587":"Yellow Glazed Terracotta","3588":"Yellow Glazed Terracotta","3589":"Yellow Glazed Terracotta","3602":"Lime Glazed Terracotta","3603":"Lime Glazed Terracotta","3604":"Lime Glazed Terracotta","3605":"Lime Glazed Terracotta","3618":"Pink Glazed Terracotta","3619":"Pink Glazed Terracotta","3620":"Pink Glazed Terracotta","3621":"Pink Glazed Terracotta","3634":"Gray Glazed Terracotta","3635":"Gray Glazed Terracotta","3636":"Gray Glazed Terracotta","3637":"Gray Glazed Terracotta","3650":"Light Gray Glazed Terracotta","3651":"Light Gray Glazed Terracotta","3652":"Light Gray Glazed Terracotta","3653":"Light Gray Glazed Terracotta","3666":"Cyan Glazed Terracotta","3667":"Cyan Glazed Terracotta","3668":"Cyan Glazed Terracotta","3669":"Cyan Glazed Terracotta","3698":"Blue Glazed Terracotta","3699":"Blue Glazed Terracotta","3700":"Blue Glazed Terracotta","3701":"Blue Glazed Terracotta","3714":"Brown Glazed Terracotta","3715":"Brown Glazed Terracotta","3716":"Brown Glazed Terracotta","3717":"Brown Glazed Terracotta","3730":"Green Glazed Terracotta","3731":"Green Glazed Terracotta","3732":"Green Glazed Terracotta","3733":"Green Glazed Terracotta","3746":"Red Glazed Terracotta","3747":"Red Glazed Terracotta","3748":"Red Glazed Terracotta","3749":"Red Glazed Terracotta","3762":"Black Glazed Terracotta","3763":"Black Glazed Terracotta","3764":"Black Glazed Terracotta","3765":"Black Glazed Terracotta","3776":"Concrete","3777":"Concrete","3778":"Concrete","3779":"Concrete","3780":"Concrete","3781":"Concrete","3782":"Concrete","3783":"Concrete","3784":"Concrete","3785":"Concrete","3786":"Concrete","3787":"Concrete","3788":"Concrete","3789":"Concrete","3790":"Concrete","3791":"Concrete","3792":"Concrete Powder","3793":"Concrete Powder","3794":"Concrete Powder","3795":"Concrete Powder","3796":"Concrete Powder","3797":"Concrete Powder","3798":"Concrete Powder","3799":"Concrete Powder","3800":"Concrete Powder","3801":"Concrete Powder","3802":"Concrete Powder","3803":"Concrete Powder","3804":"Concrete Powder","3805":"Concrete Powder","3806":"Concrete Powder","3807":"Concrete Powder","3808":"Compound Creator","3809":"Compound Creator","3810":"Compound Creator","3811":"Compound Creator","3812":"Material Reducer","3813":"Material Reducer","3814":"Material Reducer","3815":"Material Reducer","3816":"Element Constructor","3817":"Element Constructor","3818":"Element Constructor","3819":"Element Constructor","3820":"Lab Table","3821":"Lab Table","3822":"Lab Table","3823":"Lab Table","3825":"Underwater Torch","3826":"Underwater Torch","3827":"Underwater Torch","3828":"Underwater Torch","3829":"Underwater Torch","3856":"Stained Glass","3857":"Stained Glass","3858":"Stained Glass","3859":"Stained Glass","3860":"Stained Glass","3861":"Stained Glass","3862":"Stained Glass","3863":"Stained Glass","3864":"Stained Glass","3865":"Stained Glass","3866":"Stained Glass","3867":"Stained Glass","3868":"Stained Glass","3869":"Stained Glass","3870":"Stained Glass","3871":"Stained Glass","3888":"Podzol","3904":"Beetroot Block","3905":"Beetroot Block","3906":"Beetroot Block","3907":"Beetroot Block","3908":"Beetroot Block","3909":"Beetroot Block","3910":"Beetroot Block","3911":"Beetroot Block","3920":"Stonecutter","3936":"Glowing Obsidian","3952":"Nether Reactor Core","3968":"update!","3984":"ate!upd","4048":"Hardened Glass","4064":"Stained Hardened Glass","4065":"Stained Hardened Glass","4066":"Stained Hardened Glass","4067":"Stained Hardened Glass","4068":"Stained Hardened Glass","4069":"Stained Hardened Glass","4070":"Stained Hardened Glass","4071":"Stained Hardened Glass","4072":"Stained Hardened Glass","4073":"Stained Hardened Glass","4074":"Stained Hardened Glass","4075":"Stained Hardened Glass","4076":"Stained Hardened Glass","4077":"Stained Hardened Glass","4078":"Stained Hardened Glass","4079":"Stained Hardened Glass","4080":"reserved6","4112":"Prismarine Stairs","4113":"Prismarine Stairs","4114":"Prismarine Stairs","4115":"Prismarine Stairs","4116":"Prismarine Stairs","4117":"Prismarine Stairs","4118":"Prismarine Stairs","4119":"Prismarine Stairs","4128":"Dark Prismarine Stairs","4129":"Dark Prismarine Stairs","4130":"Dark Prismarine Stairs","4131":"Dark Prismarine Stairs","4132":"Dark Prismarine Stairs","4133":"Dark Prismarine Stairs","4134":"Dark Prismarine Stairs","4135":"Dark Prismarine Stairs","4144":"Prismarine Bricks Stairs","4145":"Prismarine Bricks Stairs","4146":"Prismarine Bricks Stairs","4147":"Prismarine Bricks Stairs","4148":"Prismarine Bricks Stairs","4149":"Prismarine Bricks Stairs","4150":"Prismarine Bricks Stairs","4151":"Prismarine Bricks Stairs","4160":"Stripped Spruce Log","4161":"Stripped Spruce Log","4162":"Stripped Spruce Log","4176":"Stripped Birch Log","4177":"Stripped Birch Log","4178":"Stripped Birch Log","4192":"Stripped Jungle Log","4193":"Stripped Jungle Log","4194":"Stripped Jungle Log","4208":"Stripped Acacia Log","4209":"Stripped Acacia Log","4210":"Stripped Acacia Log","4224":"Stripped Dark Oak Log","4225":"Stripped Dark Oak Log","4226":"Stripped Dark Oak Log","4240":"Stripped Oak Log","4241":"Stripped Oak Log","4242":"Stripped Oak Log","4256":"Blue Ice","4272":"Hydrogen","4288":"Helium","4304":"Lithium","4320":"Beryllium","4336":"Boron","4352":"Carbon","4368":"Nitrogen","4384":"Oxygen","4400":"Fluorine","4416":"Neon","4432":"Sodium","4448":"Magnesium","4464":"Aluminum","4480":"Silicon","4496":"Phosphorus","4512":"Sulfur","4528":"Chlorine","4544":"Argon","4560":"Potassium","4576":"Calcium","4592":"Scandium","4608":"Titanium","4624":"Vanadium","4640":"Chromium","4656":"Manganese","4672":"Iron","4688":"Cobalt","4704":"Nickel","4720":"Copper","4736":"Zinc","4752":"Gallium","4768":"Germanium","4784":"Arsenic","4800":"Selenium","4816":"Bromine","4832":"Krypton","4848":"Rubidium","4864":"Strontium","4880":"Yttrium","4896":"Zirconium","4912":"Niobium","4928":"Molybdenum","4944":"Technetium","4960":"Ruthenium","4976":"Rhodium","4992":"Palladium","5008":"Silver","5024":"Cadmium","5040":"Indium","5056":"Tin","5072":"Antimony","5088":"Tellurium","5104":"Iodine","5120":"Xenon","5136":"Cesium","5152":"Barium","5168":"Lanthanum","5184":"Cerium","5200":"Praseodymium","5216":"Neodymium","5232":"Promethium","5248":"Samarium","5264":"Europium","5280":"Gadolinium","5296":"Terbium","5312":"Dysprosium","5328":"Holmium","5344":"Erbium","5360":"Thulium","5376":"Ytterbium","5392":"Lutetium","5408":"Hafnium","5424":"Tantalum","5440":"Tungsten","5456":"Rhenium","5472":"Osmium","5488":"Iridium","5504":"Platinum","5520":"Gold","5536":"Mercury","5552":"Thallium","5568":"Lead","5584":"Bismuth","5600":"Polonium","5616":"Astatine","5632":"Radon","5648":"Francium","5664":"Radium","5680":"Actinium","5696":"Thorium","5712":"Protactinium","5728":"Uranium","5744":"Neptunium","5760":"Plutonium","5776":"Americium","5792":"Curium","5808":"Berkelium","5824":"Californium","5840":"Einsteinium","5856":"Fermium","5872":"Mendelevium","5888":"Nobelium","5904":"Lawrencium","5920":"Rutherfordium","5936":"Dubnium","5952":"Seaborgium","5968":"Bohrium","5984":"Hassium","6000":"Meitnerium","6016":"Darmstadtium","6032":"Roentgenium","6048":"Copernicium","6064":"Nihonium","6080":"Flerovium","6096":"Moscovium","6112":"Livermorium","6128":"Tennessine","6144":"Oganesson","6176":"Coral","6177":"Coral","6178":"Coral","6179":"Coral","6180":"Coral","6192":"Coral Block","6193":"Coral Block","6194":"Coral Block","6195":"Coral Block","6196":"Coral Block","6200":"Coral Block","6201":"Coral Block","6202":"Coral Block","6203":"Coral Block","6204":"Coral Block","6208":"Coral Fan","6209":"Coral Fan","6210":"Coral Fan","6211":"Coral Fan","6212":"Coral Fan","6216":"Coral Fan","6217":"Coral Fan","6218":"Coral Fan","6219":"Coral Fan","6220":"Coral Fan","6224":"Coral Fan","6225":"Coral Fan","6226":"Coral Fan","6227":"Coral Fan","6228":"Coral Fan","6232":"Coral Fan","6233":"Coral Fan","6234":"Coral Fan","6235":"Coral Fan","6236":"Coral Fan","6240":"Wall Coral Fan","6241":"Wall Coral Fan","6242":"Wall Coral Fan","6243":"Wall Coral Fan","6244":"Wall Coral Fan","6245":"Wall Coral Fan","6246":"Wall Coral Fan","6247":"Wall Coral Fan","6248":"Wall Coral Fan","6249":"Wall Coral Fan","6250":"Wall Coral Fan","6251":"Wall Coral Fan","6252":"Wall Coral Fan","6253":"Wall Coral Fan","6254":"Wall Coral Fan","6255":"Wall Coral Fan","6256":"Wall Coral Fan","6257":"Wall Coral Fan","6258":"Wall Coral Fan","6259":"Wall Coral Fan","6260":"Wall Coral Fan","6261":"Wall Coral Fan","6262":"Wall Coral Fan","6263":"Wall Coral Fan","6264":"Wall Coral Fan","6265":"Wall Coral Fan","6266":"Wall Coral Fan","6267":"Wall Coral Fan","6268":"Wall Coral Fan","6269":"Wall Coral Fan","6270":"Wall Coral Fan","6271":"Wall Coral Fan","6272":"Wall Coral Fan","6274":"Wall Coral Fan","6276":"Wall Coral Fan","6278":"Wall Coral Fan","6280":"Wall Coral Fan","6282":"Wall Coral Fan","6284":"Wall Coral Fan","6286":"Wall Coral Fan","6304":"Dried Kelp Block","6320":"Acacia Button","6321":"Acacia Button","6322":"Acacia Button","6323":"Acacia Button","6324":"Acacia Button","6325":"Acacia Button","6328":"Acacia Button","6329":"Acacia Button","6330":"Acacia Button","6331":"Acacia Button","6332":"Acacia Button","6333":"Acacia Button","6336":"Birch Button","6337":"Birch Button","6338":"Birch Button","6339":"Birch Button","6340":"Birch Button","6341":"Birch Button","6344":"Birch Button","6345":"Birch Button","6346":"Birch Button","6347":"Birch Button","6348":"Birch Button","6349":"Birch Button","6352":"Dark Oak Button","6353":"Dark Oak Button","6354":"Dark Oak Button","6355":"Dark Oak Button","6356":"Dark Oak Button","6357":"Dark Oak Button","6360":"Dark Oak Button","6361":"Dark Oak Button","6362":"Dark Oak Button","6363":"Dark Oak Button","6364":"Dark Oak Button","6365":"Dark Oak Button","6368":"Jungle Button","6369":"Jungle Button","6370":"Jungle Button","6371":"Jungle Button","6372":"Jungle Button","6373":"Jungle Button","6376":"Jungle Button","6377":"Jungle Button","6378":"Jungle Button","6379":"Jungle Button","6380":"Jungle Button","6381":"Jungle Button","6384":"Spruce Button","6385":"Spruce Button","6386":"Spruce Button","6387":"Spruce Button","6388":"Spruce Button","6389":"Spruce Button","6392":"Spruce Button","6393":"Spruce Button","6394":"Spruce Button","6395":"Spruce Button","6396":"Spruce Button","6397":"Spruce Button","6400":"Acacia Trapdoor","6401":"Acacia Trapdoor","6402":"Acacia Trapdoor","6403":"Acacia Trapdoor","6404":"Acacia Trapdoor","6405":"Acacia Trapdoor","6406":"Acacia Trapdoor","6407":"Acacia Trapdoor","6408":"Acacia Trapdoor","6409":"Acacia Trapdoor","6410":"Acacia Trapdoor","6411":"Acacia Trapdoor","6412":"Acacia Trapdoor","6413":"Acacia Trapdoor","6414":"Acacia Trapdoor","6415":"Acacia Trapdoor","6416":"Birch Trapdoor","6417":"Birch Trapdoor","6418":"Birch Trapdoor","6419":"Birch Trapdoor","6420":"Birch Trapdoor","6421":"Birch Trapdoor","6422":"Birch Trapdoor","6423":"Birch Trapdoor","6424":"Birch Trapdoor","6425":"Birch Trapdoor","6426":"Birch Trapdoor","6427":"Birch Trapdoor","6428":"Birch Trapdoor","6429":"Birch Trapdoor","6430":"Birch Trapdoor","6431":"Birch Trapdoor","6432":"Dark Oak Trapdoor","6433":"Dark Oak Trapdoor","6434":"Dark Oak Trapdoor","6435":"Dark Oak Trapdoor","6436":"Dark Oak Trapdoor","6437":"Dark Oak Trapdoor","6438":"Dark Oak Trapdoor","6439":"Dark Oak Trapdoor","6440":"Dark Oak Trapdoor","6441":"Dark Oak Trapdoor","6442":"Dark Oak Trapdoor","6443":"Dark Oak Trapdoor","6444":"Dark Oak Trapdoor","6445":"Dark Oak Trapdoor","6446":"Dark Oak Trapdoor","6447":"Dark Oak Trapdoor","6448":"Jungle Trapdoor","6449":"Jungle Trapdoor","6450":"Jungle Trapdoor","6451":"Jungle Trapdoor","6452":"Jungle Trapdoor","6453":"Jungle Trapdoor","6454":"Jungle Trapdoor","6455":"Jungle Trapdoor","6456":"Jungle Trapdoor","6457":"Jungle Trapdoor","6458":"Jungle Trapdoor","6459":"Jungle Trapdoor","6460":"Jungle Trapdoor","6461":"Jungle Trapdoor","6462":"Jungle Trapdoor","6463":"Jungle Trapdoor","6464":"Spruce Trapdoor","6465":"Spruce Trapdoor","6466":"Spruce Trapdoor","6467":"Spruce Trapdoor","6468":"Spruce Trapdoor","6469":"Spruce Trapdoor","6470":"Spruce Trapdoor","6471":"Spruce Trapdoor","6472":"Spruce Trapdoor","6473":"Spruce Trapdoor","6474":"Spruce Trapdoor","6475":"Spruce Trapdoor","6476":"Spruce Trapdoor","6477":"Spruce Trapdoor","6478":"Spruce Trapdoor","6479":"Spruce Trapdoor","6480":"Acacia Pressure Plate","6481":"Acacia Pressure Plate","6496":"Birch Pressure Plate","6497":"Birch Pressure Plate","6512":"Dark Oak Pressure Plate","6513":"Dark Oak Pressure Plate","6528":"Jungle Pressure Plate","6529":"Jungle Pressure Plate","6544":"Spruce Pressure Plate","6545":"Spruce Pressure Plate","6560":"Carved Pumpkin","6561":"Carved Pumpkin","6562":"Carved Pumpkin","6563":"Carved Pumpkin","6576":"Sea Pickle","6577":"Sea Pickle","6578":"Sea Pickle","6579":"Sea Pickle","6580":"Sea Pickle","6581":"Sea Pickle","6582":"Sea Pickle","6583":"Sea Pickle","6656":"Barrier","6672":"End Stone Brick Slab","6673":"Smooth Red Sandstone Slab","6674":"Polished Andesite Slab","6675":"Andesite Slab","6676":"Diorite Slab","6677":"Polished Diorite Slab","6678":"Granite Slab","6679":"Polished Granite Slab","6680":"End Stone Brick Slab","6681":"Smooth Red Sandstone Slab","6682":"Polished Andesite Slab","6683":"Andesite Slab","6684":"Diorite Slab","6685":"Polished Diorite Slab","6686":"Granite Slab","6687":"Polished Granite Slab","6688":"Bamboo","6689":"Bamboo","6690":"Bamboo","6691":"Bamboo","6692":"Bamboo","6693":"Bamboo","6696":"Bamboo","6697":"Bamboo","6698":"Bamboo","6699":"Bamboo","6700":"Bamboo","6701":"Bamboo","6704":"Bamboo Sapling","6705":"Bamboo Sapling","6736":"Mossy Stone Brick Slab","6737":"Smooth Quartz Slab","6738":"Stone Slab","6739":"Cut Sandstone Slab","6740":"Cut Red Sandstone Slab","6744":"Mossy Stone Brick Slab","6745":"Smooth Quartz Slab","6746":"Stone Slab","6747":"Cut Sandstone Slab","6748":"Cut Red Sandstone Slab","6752":"End Stone Brick Slab","6753":"Smooth Red Sandstone Slab","6754":"Polished Andesite Slab","6755":"Andesite Slab","6756":"Diorite Slab","6757":"Polished Diorite Slab","6758":"Granite Slab","6759":"Polished Granite Slab","6768":"Mossy Stone Brick Slab","6769":"Smooth Quartz Slab","6770":"Stone Slab","6771":"Cut Sandstone Slab","6772":"Cut Red Sandstone Slab","6784":"Granite Stairs","6785":"Granite Stairs","6786":"Granite Stairs","6787":"Granite Stairs","6788":"Granite Stairs","6789":"Granite Stairs","6790":"Granite Stairs","6791":"Granite Stairs","6800":"Diorite Stairs","6801":"Diorite Stairs","6802":"Diorite Stairs","6803":"Diorite Stairs","6804":"Diorite Stairs","6805":"Diorite Stairs","6806":"Diorite Stairs","6807":"Diorite Stairs","6816":"Andesite Stairs","6817":"Andesite Stairs","6818":"Andesite Stairs","6819":"Andesite Stairs","6820":"Andesite Stairs","6821":"Andesite Stairs","6822":"Andesite Stairs","6823":"Andesite Stairs","6832":"Polished Granite Stairs","6833":"Polished Granite Stairs","6834":"Polished Granite Stairs","6835":"Polished Granite Stairs","6836":"Polished Granite Stairs","6837":"Polished Granite Stairs","6838":"Polished Granite Stairs","6839":"Polished Granite Stairs","6848":"Polished Diorite Stairs","6849":"Polished Diorite Stairs","6850":"Polished Diorite Stairs","6851":"Polished Diorite Stairs","6852":"Polished Diorite Stairs","6853":"Polished Diorite Stairs","6854":"Polished Diorite Stairs","6855":"Polished Diorite Stairs","6864":"Polished Andesite Stairs","6865":"Polished Andesite Stairs","6866":"Polished Andesite Stairs","6867":"Polished Andesite Stairs","6868":"Polished Andesite Stairs","6869":"Polished Andesite Stairs","6870":"Polished Andesite Stairs","6871":"Polished Andesite Stairs","6880":"Mossy Stone Brick Stairs","6881":"Mossy Stone Brick Stairs","6882":"Mossy Stone Brick Stairs","6883":"Mossy Stone Brick Stairs","6884":"Mossy Stone Brick Stairs","6885":"Mossy Stone Brick Stairs","6886":"Mossy Stone Brick Stairs","6887":"Mossy Stone Brick Stairs","6896":"Smooth Red Sandstone Stairs","6897":"Smooth Red Sandstone Stairs","6898":"Smooth Red Sandstone Stairs","6899":"Smooth Red Sandstone Stairs","6900":"Smooth Red Sandstone Stairs","6901":"Smooth Red Sandstone Stairs","6902":"Smooth Red Sandstone Stairs","6903":"Smooth Red Sandstone Stairs","6912":"Smooth Sandstone Stairs","6913":"Smooth Sandstone Stairs","6914":"Smooth Sandstone Stairs","6915":"Smooth Sandstone Stairs","6916":"Smooth Sandstone Stairs","6917":"Smooth Sandstone Stairs","6918":"Smooth Sandstone Stairs","6919":"Smooth Sandstone Stairs","6928":"End Stone Brick Stairs","6929":"End Stone Brick Stairs","6930":"End Stone Brick Stairs","6931":"End Stone Brick Stairs","6932":"End Stone Brick Stairs","6933":"End Stone Brick Stairs","6934":"End Stone Brick Stairs","6935":"End Stone Brick Stairs","6944":"Mossy Cobblestone Stairs","6945":"Mossy Cobblestone Stairs","6946":"Mossy Cobblestone Stairs","6947":"Mossy Cobblestone Stairs","6948":"Mossy Cobblestone Stairs","6949":"Mossy Cobblestone Stairs","6950":"Mossy Cobblestone Stairs","6951":"Mossy Cobblestone Stairs","6960":"Stone Stairs","6961":"Stone Stairs","6962":"Stone Stairs","6963":"Stone Stairs","6964":"Stone Stairs","6965":"Stone Stairs","6966":"Stone Stairs","6967":"Stone Stairs","6976":"Spruce Sign","6977":"Spruce Sign","6978":"Spruce Sign","6979":"Spruce Sign","6980":"Spruce Sign","6981":"Spruce Sign","6982":"Spruce Sign","6983":"Spruce Sign","6984":"Spruce Sign","6985":"Spruce Sign","6986":"Spruce Sign","6987":"Spruce Sign","6988":"Spruce Sign","6989":"Spruce Sign","6990":"Spruce Sign","6991":"Spruce Sign","6994":"Spruce Wall Sign","6995":"Spruce Wall Sign","6996":"Spruce Wall Sign","6997":"Spruce Wall Sign","7008":"Smooth Stone","7024":"Red Nether Brick Stairs","7025":"Red Nether Brick Stairs","7026":"Red Nether Brick Stairs","7027":"Red Nether Brick Stairs","7028":"Red Nether Brick Stairs","7029":"Red Nether Brick Stairs","7030":"Red Nether Brick Stairs","7031":"Red Nether Brick Stairs","7040":"Smooth Quartz Stairs","7041":"Smooth Quartz Stairs","7042":"Smooth Quartz Stairs","7043":"Smooth Quartz Stairs","7044":"Smooth Quartz Stairs","7045":"Smooth Quartz Stairs","7046":"Smooth Quartz Stairs","7047":"Smooth Quartz Stairs","7056":"Birch Sign","7057":"Birch Sign","7058":"Birch Sign","7059":"Birch Sign","7060":"Birch Sign","7061":"Birch Sign","7062":"Birch Sign","7063":"Birch Sign","7064":"Birch Sign","7065":"Birch Sign","7066":"Birch Sign","7067":"Birch Sign","7068":"Birch Sign","7069":"Birch Sign","7070":"Birch Sign","7071":"Birch Sign","7074":"Birch Wall Sign","7075":"Birch Wall Sign","7076":"Birch Wall Sign","7077":"Birch Wall Sign","7088":"Jungle Sign","7089":"Jungle Sign","7090":"Jungle Sign","7091":"Jungle Sign","7092":"Jungle Sign","7093":"Jungle Sign","7094":"Jungle Sign","7095":"Jungle Sign","7096":"Jungle Sign","7097":"Jungle Sign","7098":"Jungle Sign","7099":"Jungle Sign","7100":"Jungle Sign","7101":"Jungle Sign","7102":"Jungle Sign","7103":"Jungle Sign","7106":"Jungle Wall Sign","7107":"Jungle Wall Sign","7108":"Jungle Wall Sign","7109":"Jungle Wall Sign","7120":"Acacia Sign","7121":"Acacia Sign","7122":"Acacia Sign","7123":"Acacia Sign","7124":"Acacia Sign","7125":"Acacia Sign","7126":"Acacia Sign","7127":"Acacia Sign","7128":"Acacia Sign","7129":"Acacia Sign","7130":"Acacia Sign","7131":"Acacia Sign","7132":"Acacia Sign","7133":"Acacia Sign","7134":"Acacia Sign","7135":"Acacia Sign","7138":"Acacia Wall Sign","7139":"Acacia Wall Sign","7140":"Acacia Wall Sign","7141":"Acacia Wall Sign","7152":"Dark Oak Sign","7153":"Dark Oak Sign","7154":"Dark Oak Sign","7155":"Dark Oak Sign","7156":"Dark Oak Sign","7157":"Dark Oak Sign","7158":"Dark Oak Sign","7159":"Dark Oak Sign","7160":"Dark Oak Sign","7161":"Dark Oak Sign","7162":"Dark Oak Sign","7163":"Dark Oak Sign","7164":"Dark Oak Sign","7165":"Dark Oak Sign","7166":"Dark Oak Sign","7167":"Dark Oak Sign","7170":"Dark Oak Wall Sign","7171":"Dark Oak Wall Sign","7172":"Dark Oak Wall Sign","7173":"Dark Oak Wall Sign","7184":"Lectern","7185":"Lectern","7186":"Lectern","7187":"Lectern","7188":"Lectern","7189":"Lectern","7190":"Lectern","7191":"Lectern","7218":"Blast Furnace","7219":"Blast Furnace","7220":"Blast Furnace","7221":"Blast Furnace","7250":"Smoker","7251":"Smoker","7252":"Smoker","7253":"Smoker","7266":"Smoker","7267":"Smoker","7268":"Smoker","7269":"Smoker","7296":"Fletching Table","7328":"Barrel","7329":"Barrel","7330":"Barrel","7331":"Barrel","7332":"Barrel","7333":"Barrel","7336":"Barrel","7337":"Barrel","7338":"Barrel","7339":"Barrel","7340":"Barrel","7341":"Barrel","7344":"Loom","7345":"Loom","7346":"Loom","7347":"Loom","7376":"Bell","7377":"Bell","7378":"Bell","7379":"Bell","7380":"Bell","7381":"Bell","7382":"Bell","7383":"Bell","7384":"Bell","7385":"Bell","7386":"Bell","7387":"Bell","7388":"Bell","7389":"Bell","7390":"Bell","7391":"Bell","7392":"Sweet Berry Bush","7393":"Sweet Berry Bush","7394":"Sweet Berry Bush","7395":"Sweet Berry Bush","7408":"Lantern","7409":"Lantern","7472":"Oak Wood","7473":"Spruce Wood","7474":"Birch Wood","7475":"Jungle Wood","7476":"Acacia Wood","7477":"Dark Oak Wood","7480":"Stripped Oak Wood","7481":"Stripped Spruce Wood","7482":"Stripped Birch Wood","7483":"Stripped Jungle Wood","7484":"Stripped Acacia Wood","7485":"Stripped Dark Oak Wood","7506":"Blast Furnace","7507":"Blast Furnace","7508":"Blast Furnace","7509":"Blast Furnace"},"remaps":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"23":16,"24":16,"25":16,"26":16,"27":16,"28":16,"29":16,"30":16,"31":16,"33":32,"34":32,"35":32,"36":32,"37":32,"38":32,"39":32,"40":32,"41":32,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"50":48,"51":48,"52":48,"53":48,"54":48,"55":48,"56":48,"57":48,"58":48,"59":48,"60":48,"61":48,"62":48,"63":48,"65":64,"66":64,"67":64,"68":64,"69":64,"70":64,"71":64,"72":64,"73":64,"74":64,"75":64,"76":64,"77":64,"78":64,"79":64,"86":80,"87":80,"88":80,"89":80,"90":80,"91":80,"92":80,"93":80,"94":80,"95":80,"102":96,"103":96,"110":96,"111":96,"114":112,"115":112,"116":112,"117":112,"118":112,"119":112,"120":112,"121":112,"122":112,"123":112,"124":112,"125":112,"126":112,"127":112,"194":192,"195":192,"196":192,"197":192,"198":192,"199":192,"200":192,"201":192,"202":192,"203":192,"204":192,"205":192,"206":192,"207":192,"209":208,"210":208,"211":208,"212":208,"213":208,"214":208,"215":208,"216":208,"217":208,"218":208,"219":208,"220":208,"221":208,"222":208,"223":208,"225":224,"226":224,"227":224,"228":224,"229":224,"230":224,"231":224,"232":224,"233":224,"234":224,"235":224,"236":224,"237":224,"238":224,"239":224,"241":240,"242":240,"243":240,"244":240,"245":240,"246":240,"247":240,"248":240,"249":240,"250":240,"251":240,"252":240,"253":240,"254":240,"255":240,"257":256,"258":256,"259":256,"260":256,"261":256,"262":256,"263":256,"264":256,"265":256,"266":256,"267":256,"268":256,"269":256,"270":256,"271":256,"284":7472,"285":7473,"286":7474,"287":7475,"306":304,"307":304,"308":304,"309":304,"310":304,"311":304,"312":304,"313":304,"314":304,"315":304,"316":304,"317":304,"318":304,"319":304,"321":320,"322":320,"323":320,"324":320,"325":320,"326":320,"327":320,"328":320,"329":320,"330":320,"331":320,"332":320,"333":320,"334":320,"335":320,"337":336,"338":336,"339":336,"340":336,"341":336,"342":336,"343":336,"344":336,"345":336,"346":336,"347":336,"348":336,"349":336,"350":336,"351":336,"353":352,"354":352,"355":352,"356":352,"357":352,"358":352,"359":352,"360":352,"361":352,"362":352,"363":352,"364":352,"365":352,"366":352,"367":352,"388":384,"389":384,"390":384,"391":384,"392":384,"393":384,"394":384,"395":384,"396":384,"397":384,"398":384,"399":384,"401":400,"402":400,"403":400,"404":400,"405":400,"406":400,"407":400,"408":400,"409":400,"410":400,"411":400,"412":400,"413":400,"414":400,"415":400,"438":432,"439":432,"446":432,"447":432,"454":448,"455":448,"462":448,"463":448,"481":480,"482":480,"483":480,"484":480,"485":480,"486":480,"487":480,"488":480,"489":480,"490":480,"491":480,"492":480,"493":480,"494":480,"495":480,"496":498,"499":498,"500":498,"501":498,"502":498,"503":498,"504":498,"505":498,"506":498,"507":498,"508":498,"509":498,"510":498,"511":498,"513":512,"514":512,"515":512,"516":512,"517":512,"518":512,"519":512,"520":512,"521":512,"522":512,"523":512,"524":512,"525":512,"526":512,"527":512,"577":576,"578":576,"579":576,"580":576,"581":576,"582":576,"583":576,"584":576,"585":576,"586":576,"587":576,"588":576,"589":576,"590":576,"591":576,"593":592,"594":592,"595":592,"596":592,"597":592,"598":592,"599":592,"600":592,"601":592,"602":592,"603":592,"604":592,"605":592,"606":592,"607":592,"619":608,"620":608,"621":608,"622":608,"623":608,"625":624,"626":624,"627":624,"628":624,"629":624,"630":624,"631":624,"632":624,"633":624,"634":624,"635":624,"636":624,"637":624,"638":624,"639":624,"641":640,"642":640,"643":640,"644":640,"645":640,"646":640,"647":640,"648":640,"649":640,"650":640,"651":640,"652":640,"653":640,"654":640,"655":640,"657":656,"658":656,"659":656,"660":656,"661":656,"662":656,"663":656,"664":656,"665":656,"666":656,"667":656,"668":656,"669":656,"670":656,"671":656,"673":672,"674":672,"675":672,"676":672,"677":672,"678":672,"679":672,"680":672,"681":672,"682":672,"683":672,"684":672,"685":672,"686":672,"687":672,"696":688,"697":689,"698":690,"699":691,"700":692,"701":693,"702":694,"703":695,"721":720,"722":720,"723":720,"724":720,"725":720,"726":720,"727":720,"728":720,"729":720,"730":720,"731":720,"732":720,"733":720,"734":720,"735":720,"740":736,"741":736,"742":736,"743":736,"744":736,"745":736,"746":736,"747":736,"748":736,"749":736,"750":736,"751":736,"753":752,"754":752,"755":752,"756":752,"757":752,"758":752,"759":752,"760":752,"761":752,"762":752,"763":752,"764":752,"765":752,"766":752,"767":752,"769":768,"770":768,"771":768,"772":768,"773":768,"774":768,"775":768,"776":768,"777":768,"778":768,"779":768,"780":768,"781":768,"782":768,"783":768,"785":784,"786":784,"787":784,"788":784,"789":784,"790":784,"791":784,"792":784,"793":784,"794":784,"795":784,"796":784,"797":784,"798":784,"799":784,"800":805,"806":805,"807":805,"808":805,"809":805,"810":805,"811":805,"812":805,"813":805,"814":805,"815":805,"833":832,"834":832,"835":832,"836":832,"837":832,"838":832,"839":832,"840":832,"841":832,"842":832,"843":832,"844":832,"845":832,"846":832,"847":832,"856":851,"857":851,"858":851,"859":851,"860":851,"861":851,"862":851,"863":851,"864":866,"865":866,"870":866,"871":866,"872":866,"873":866,"874":866,"875":866,"876":866,"877":866,"878":866,"879":866,"897":896,"898":896,"899":896,"900":896,"901":896,"902":896,"903":896,"904":896,"905":896,"906":896,"907":896,"908":896,"909":896,"910":896,"911":896,"913":912,"914":912,"915":912,"916":912,"917":912,"918":912,"919":912,"920":912,"921":912,"922":912,"923":912,"924":912,"925":912,"926":912,"927":912,"929":928,"930":928,"931":928,"932":928,"933":928,"934":928,"935":928,"936":928,"937":928,"938":928,"939":928,"940":928,"941":928,"942":928,"943":928,"952":944,"953":944,"954":944,"955":944,"956":944,"957":944,"958":944,"959":944,"968":960,"969":960,"970":960,"971":960,"972":960,"973":960,"974":960,"975":960,"976":978,"977":978,"982":978,"983":978,"984":978,"985":978,"986":978,"987":978,"988":978,"989":978,"990":978,"991":978,"992":978,"993":978,"998":978,"999":978,"1000":978,"1001":978,"1002":978,"1003":978,"1004":978,"1005":978,"1006":978,"1007":978,"1036":1027,"1037":1027,"1038":1027,"1039":1027,"1040":1042,"1041":1042,"1046":1042,"1047":1042,"1048":1042,"1049":1042,"1050":1042,"1051":1042,"1052":1042,"1053":1042,"1054":1042,"1055":1042,"1066":1056,"1067":1056,"1068":1056,"1069":1056,"1070":1056,"1071":1056,"1080":1075,"1081":1075,"1082":1075,"1083":1075,"1084":1075,"1085":1075,"1086":1075,"1087":1075,"1088":1090,"1089":1090,"1094":1090,"1095":1090,"1096":1090,"1097":1090,"1098":1090,"1099":1090,"1100":1090,"1101":1090,"1102":1090,"1103":1090,"1122":1120,"1123":1120,"1124":1120,"1125":1120,"1126":1120,"1127":1120,"1128":1120,"1129":1120,"1130":1120,"1131":1120,"1132":1120,"1133":1120,"1134":1120,"1135":1120,"1148":1139,"1149":1139,"1150":1139,"1151":1139,"1154":1152,"1155":1152,"1156":1152,"1157":1152,"1158":1152,"1159":1152,"1160":1152,"1161":1152,"1162":1152,"1163":1152,"1164":1152,"1165":1152,"1166":1152,"1167":1152,"1169":1168,"1170":1168,"1171":1168,"1172":1168,"1173":1168,"1174":1168,"1175":1168,"1176":1168,"1177":1168,"1178":1168,"1179":1168,"1180":1168,"1181":1168,"1182":1168,"1183":1168,"1185":1168,"1186":1168,"1187":1168,"1188":1168,"1189":1168,"1190":1168,"1191":1168,"1192":1168,"1193":1168,"1194":1168,"1195":1168,"1196":1168,"1197":1168,"1198":1168,"1199":1168,"1200":1221,"1206":1221,"1207":1221,"1208":1221,"1209":1221,"1210":1221,"1211":1221,"1212":1221,"1213":1221,"1214":1221,"1215":1221,"1216":1221,"1222":1221,"1223":1221,"1224":1221,"1225":1221,"1226":1221,"1227":1221,"1228":1221,"1229":1221,"1230":1221,"1231":1221,"1238":1232,"1239":1232,"1246":1232,"1247":1232,"1256":1248,"1257":1248,"1258":1248,"1259":1248,"1260":1248,"1261":1248,"1262":1248,"1263":1248,"1265":1264,"1266":1264,"1267":1264,"1268":1264,"1269":1264,"1270":1264,"1271":1264,"1272":1264,"1273":1264,"1274":1264,"1275":1264,"1276":1264,"1277":1264,"1278":1264,"1279":1264,"1281":1280,"1282":1280,"1283":1280,"1284":1280,"1285":1280,"1286":1280,"1287":1280,"1288":1280,"1289":1280,"1290":1280,"1291":1280,"1292":1280,"1293":1280,"1294":1280,"1295":1280,"1313":1312,"1314":1312,"1315":1312,"1316":1312,"1317":1312,"1318":1312,"1319":1312,"1320":1312,"1321":1312,"1322":1312,"1323":1312,"1324":1312,"1325":1312,"1326":1312,"1327":1312,"1345":1344,"1346":1344,"1347":1344,"1348":1344,"1349":1344,"1350":1344,"1351":1344,"1352":1344,"1353":1344,"1354":1344,"1355":1344,"1356":1344,"1357":1344,"1358":1344,"1359":1344,"1366":1360,"1367":1360,"1368":1360,"1369":1360,"1370":1360,"1371":1360,"1372":1360,"1373":1360,"1374":1360,"1375":1360,"1377":1376,"1378":1376,"1379":1376,"1380":1376,"1381":1376,"1382":1376,"1383":1376,"1384":1376,"1385":1376,"1386":1376,"1387":1376,"1388":1376,"1389":1376,"1390":1376,"1391":1376,"1393":1392,"1394":1392,"1395":1392,"1396":1392,"1397":1392,"1398":1392,"1399":1392,"1400":1392,"1401":1392,"1402":1392,"1403":1392,"1404":1392,"1405":1392,"1406":1392,"1407":1392,"1409":1408,"1410":1408,"1411":1408,"1412":1408,"1413":1408,"1414":1408,"1415":1408,"1416":1408,"1417":1408,"1418":1408,"1419":1408,"1420":1408,"1421":1408,"1422":1408,"1423":1408,"1425":1424,"1426":1424,"1427":1424,"1428":1424,"1429":1424,"1430":1424,"1431":1424,"1432":1424,"1433":1424,"1434":1424,"1435":1424,"1436":1424,"1437":1424,"1438":1424,"1439":1424,"1440":1441,"1443":1441,"1444":1441,"1445":1441,"1446":1441,"1447":1441,"1448":1441,"1449":1441,"1450":1441,"1451":1441,"1452":1441,"1453":1441,"1454":1441,"1455":1441,"1460":1458,"1461":1458,"1462":1458,"1463":1458,"1464":1458,"1465":1458,"1466":1458,"1467":1458,"1468":1458,"1469":1458,"1470":1458,"1471":1458,"1479":1472,"1480":1472,"1481":1472,"1482":1472,"1483":1472,"1484":1472,"1485":1472,"1486":1472,"1487":1472,"1521":1520,"1522":1520,"1523":1520,"1524":1520,"1525":1520,"1526":1520,"1527":1520,"1528":1520,"1529":1520,"1530":1520,"1531":1520,"1532":1520,"1533":1520,"1534":1520,"1535":1520,"1558":1552,"1559":1552,"1560":1552,"1561":1552,"1562":1552,"1563":1552,"1564":1552,"1565":1552,"1566":1552,"1567":1552,"1572":1568,"1573":1568,"1574":1568,"1575":1568,"1576":1568,"1577":1568,"1578":1568,"1579":1568,"1580":1568,"1581":1568,"1582":1568,"1583":1568,"1595":1598,"1596":1598,"1597":1598,"1610":1594,"1611":1614,"1612":1614,"1613":1614,"1615":1599,"1617":1616,"1618":1616,"1619":1616,"1620":1616,"1621":1616,"1622":1616,"1623":1616,"1624":1616,"1625":1616,"1626":1616,"1627":1616,"1628":1616,"1629":1616,"1630":1616,"1631":1616,"1633":1632,"1634":1632,"1635":1632,"1636":1632,"1637":1632,"1638":1632,"1639":1632,"1640":1632,"1641":1632,"1642":1632,"1643":1632,"1644":1632,"1645":1632,"1646":1632,"1647":1632,"1649":1648,"1650":1648,"1651":1648,"1652":1648,"1653":1648,"1654":1648,"1655":1648,"1656":1648,"1657":1648,"1658":1648,"1659":1648,"1660":1648,"1661":1648,"1662":1648,"1663":1648,"1672":1664,"1673":1664,"1674":1664,"1675":1664,"1676":1664,"1677":1664,"1678":1664,"1679":1664,"1688":1680,"1689":1680,"1690":1680,"1691":1680,"1692":1680,"1693":1680,"1694":1680,"1695":1680,"1736":1731,"1737":1731,"1738":1731,"1739":1731,"1740":1731,"1741":1731,"1742":1731,"1743":1731,"1752":1747,"1753":1747,"1754":1747,"1755":1747,"1756":1747,"1757":1747,"1758":1747,"1759":1747,"1761":1760,"1762":1760,"1763":1760,"1764":1760,"1765":1760,"1766":1760,"1767":1760,"1768":1760,"1769":1760,"1770":1760,"1771":1760,"1772":1760,"1773":1760,"1774":1760,"1775":1760,"1777":1776,"1778":1776,"1779":1776,"1780":1776,"1781":1776,"1782":1776,"1783":1776,"1784":1776,"1785":1776,"1786":1776,"1787":1776,"1788":1776,"1789":1776,"1790":1776,"1791":1776,"1793":1792,"1794":1792,"1795":1792,"1796":1792,"1797":1792,"1798":1792,"1799":1792,"1800":1792,"1801":1792,"1802":1792,"1803":1792,"1804":1792,"1805":1792,"1806":1792,"1807":1792,"1809":1808,"1810":1808,"1811":1808,"1812":1808,"1813":1808,"1814":1808,"1815":1808,"1816":1808,"1817":1808,"1818":1808,"1819":1808,"1820":1808,"1821":1808,"1822":1808,"1823":1808,"1832":1827,"1833":1827,"1834":1827,"1835":1827,"1836":1827,"1837":1827,"1838":1827,"1839":1827,"1844":1840,"1845":1840,"1846":1840,"1847":1840,"1848":1840,"1849":1840,"1850":1840,"1851":1840,"1852":1840,"1853":1840,"1854":1840,"1855":1840,"1857":1856,"1858":1856,"1859":1856,"1860":1856,"1861":1856,"1862":1856,"1863":1856,"1864":1856,"1865":1856,"1866":1856,"1867":1856,"1868":1856,"1869":1856,"1870":1856,"1871":1856,"1880":1872,"1881":1872,"1882":1872,"1883":1872,"1884":1872,"1885":1872,"1886":1872,"1887":1872,"1928":1922,"1929":1922,"1930":1922,"1931":1922,"1932":1922,"1933":1922,"1934":1922,"1935":1922,"1937":1936,"1938":1936,"1939":1936,"1940":1936,"1941":1936,"1942":1936,"1943":1936,"1944":1936,"1945":1936,"1946":1936,"1947":1936,"1948":1936,"1949":1936,"1950":1936,"1951":1936,"1953":1952,"1954":1952,"1955":1952,"1956":1952,"1957":1952,"1958":1952,"1959":1952,"1960":1952,"1961":1952,"1962":1952,"1963":1952,"1964":1952,"1965":1952,"1966":1952,"1967":1952,"1969":1968,"1970":1968,"1971":1968,"1972":1968,"1973":1968,"1974":1968,"1975":1968,"1976":1968,"1977":1968,"1978":1968,"1979":1968,"1980":1968,"1981":1968,"1982":1968,"1983":1968,"1985":1968,"1986":1968,"1987":1968,"1988":1968,"1989":1968,"1990":1968,"1991":1968,"1992":1968,"1993":1968,"1994":1968,"1995":1968,"1996":1968,"1997":1968,"1998":1968,"1999":1968,"2022":2016,"2023":2016,"2030":2016,"2031":2016,"2044":2032,"2045":2032,"2046":2032,"2047":2032,"2056":2051,"2057":2051,"2058":2051,"2059":2051,"2060":2051,"2061":2051,"2062":2051,"2063":2051,"2065":2064,"2066":2064,"2067":2064,"2068":2064,"2069":2064,"2070":2064,"2071":2064,"2072":2064,"2073":2064,"2074":2064,"2075":2064,"2076":2064,"2077":2064,"2078":2064,"2079":2064,"2080":2082,"2081":2082,"2086":2082,"2087":2082,"2088":2082,"2089":2082,"2090":2082,"2091":2082,"2092":2082,"2093":2082,"2094":2082,"2095":2082,"2129":2128,"2130":2128,"2131":2128,"2132":2128,"2133":2128,"2134":2128,"2135":2128,"2136":2128,"2137":2128,"2138":2128,"2139":2128,"2140":2128,"2141":2128,"2142":2128,"2143":2128,"2152":2147,"2153":2147,"2154":2147,"2155":2147,"2156":2147,"2157":2147,"2158":2147,"2159":2147,"2168":2163,"2169":2163,"2170":2163,"2171":2163,"2172":2163,"2173":2163,"2174":2163,"2175":2163,"2184":2179,"2185":2179,"2186":2179,"2187":2179,"2188":2179,"2189":2179,"2190":2179,"2191":2179,"2209":2208,"2210":2208,"2211":2208,"2212":2208,"2213":2208,"2214":2208,"2215":2208,"2216":2208,"2217":2208,"2218":2208,"2219":2208,"2220":2208,"2221":2208,"2222":2208,"2223":2208,"2238":2224,"2239":2224,"2241":2240,"2242":2240,"2243":2240,"2244":2240,"2245":2240,"2246":2240,"2247":2240,"2248":2240,"2249":2240,"2250":2240,"2251":2240,"2252":2240,"2253":2240,"2254":2240,"2255":2240,"2264":2256,"2265":2256,"2266":2256,"2267":2256,"2268":2256,"2269":2256,"2270":2256,"2271":2256,"2280":2272,"2281":2272,"2282":2272,"2283":2272,"2284":2272,"2285":2272,"2286":2272,"2287":2272,"2294":2288,"2295":2288,"2302":2288,"2303":2288,"2304":2306,"2310":2306,"2311":2306,"2312":2306,"2313":2306,"2314":2306,"2315":2306,"2316":2306,"2317":2306,"2318":2306,"2319":2306,"2332":2322,"2333":2322,"2334":2322,"2335":2322,"2336":2338,"2337":2338,"2342":2338,"2343":2338,"2344":2338,"2345":2338,"2346":2338,"2347":2338,"2348":2338,"2349":2338,"2350":2338,"2351":2338,"2392":2386,"2393":2386,"2394":2386,"2395":2386,"2396":2386,"2397":2386,"2398":2386,"2399":2386,"2400":2386,"2401":2386,"2402":2386,"2403":2386,"2404":2386,"2405":2386,"2406":2386,"2407":2386,"2433":2432,"2434":2432,"2435":2432,"2436":2432,"2437":2432,"2438":2432,"2439":2432,"2440":2432,"2441":2432,"2442":2432,"2443":2432,"2444":2432,"2445":2432,"2446":2432,"2447":2432,"2449":2448,"2450":2448,"2451":2448,"2452":2448,"2453":2448,"2454":2448,"2455":2448,"2456":2448,"2457":2448,"2458":2448,"2459":2448,"2460":2448,"2461":2448,"2462":2448,"2463":2448,"2465":2464,"2470":2464,"2471":2464,"2473":2464,"2478":2464,"2479":2464,"2484":2480,"2487":2480,"2488":2480,"2491":2480,"2492":2480,"2493":2481,"2494":2482,"2495":2480,"2504":2499,"2505":2499,"2506":2499,"2507":2499,"2508":2499,"2509":2499,"2510":2499,"2511":2499,"2520":2512,"2521":2513,"2522":2514,"2523":2515,"2524":2516,"2525":2517,"2578":288,"2579":288,"2582":288,"2583":288,"2586":288,"2587":288,"2590":288,"2591":288,"2604":7476,"2605":7477,"2616":2611,"2617":2611,"2618":2611,"2619":2611,"2620":2611,"2621":2611,"2622":2611,"2623":2611,"2632":2627,"2633":2627,"2634":2627,"2635":2627,"2636":2627,"2637":2627,"2638":2627,"2639":2627,"2641":2640,"2642":2640,"2643":2640,"2644":2640,"2645":2640,"2646":2640,"2647":2640,"2648":2640,"2649":2640,"2650":2640,"2651":2640,"2652":2640,"2653":2640,"2654":2640,"2655":2640,"2691":2688,"2692":2688,"2693":2688,"2694":2688,"2695":2688,"2696":2688,"2697":2688,"2698":2688,"2699":2688,"2700":2688,"2701":2688,"2702":2688,"2703":2688,"2705":2704,"2706":2704,"2707":2704,"2708":2704,"2709":2704,"2710":2704,"2711":2704,"2712":2704,"2713":2704,"2714":2704,"2715":2704,"2716":2704,"2717":2704,"2718":2704,"2719":2704,"2721":2720,"2722":2720,"2723":2720,"2725":2720,"2726":2720,"2727":2720,"2729":2720,"2730":2720,"2731":2720,"2732":2720,"2733":2720,"2734":2720,"2735":2720,"2753":2752,"2754":2752,"2755":2752,"2756":2752,"2757":2752,"2758":2752,"2759":2752,"2760":2752,"2761":2752,"2762":2752,"2763":2752,"2764":2752,"2765":2752,"2766":2752,"2767":2752,"2769":2768,"2770":2768,"2771":2768,"2772":2768,"2773":2768,"2774":2768,"2775":2768,"2776":2768,"2777":2768,"2778":2768,"2779":2768,"2780":2768,"2781":2768,"2782":2768,"2783":2768,"2785":2784,"2786":2784,"2787":2784,"2788":2784,"2789":2784,"2790":2784,"2791":2784,"2792":2784,"2793":2784,"2794":2784,"2795":2784,"2796":2784,"2797":2784,"2798":2784,"2799":2784,"2806":2800,"2807":2800,"2814":2800,"2815":2800,"2832":2834,"2833":2834,"2838":2834,"2839":2834,"2840":2834,"2841":2834,"2842":2834,"2843":2834,"2844":2834,"2845":2834,"2846":2834,"2847":2834,"2868":2864,"2869":2864,"2870":2864,"2871":2864,"2872":2864,"2873":2864,"2874":2864,"2875":2864,"2876":2864,"2877":2864,"2878":2864,"2879":2864,"2888":2883,"2889":2883,"2890":2883,"2891":2883,"2892":2883,"2893":2883,"2894":2883,"2895":2883,"2904":2896,"2905":2897,"2906":2898,"2907":2899,"2908":2900,"2909":2901,"2910":2902,"2911":2903,"3041":3040,"3042":3040,"3043":3040,"3044":3040,"3045":3040,"3046":3040,"3047":3040,"3048":3040,"3049":3040,"3050":3040,"3051":3040,"3052":3040,"3053":3040,"3054":3040,"3055":3040,"3073":3072,"3074":3072,"3075":3072,"3076":3072,"3077":3072,"3078":3072,"3079":3072,"3080":3072,"3081":3072,"3082":3072,"3083":3072,"3084":3072,"3085":3072,"3086":3072,"3087":3072,"3100":3091,"3101":3091,"3102":3091,"3103":3091,"3116":3107,"3117":3107,"3118":3107,"3119":3107,"3132":3123,"3133":3123,"3134":3123,"3135":3123,"3148":3139,"3149":3139,"3150":3139,"3151":3139,"3164":3155,"3165":3155,"3166":3155,"3167":3155,"3169":3168,"3170":3168,"3171":3168,"3172":3168,"3173":3168,"3174":3168,"3175":3168,"3176":3168,"3177":3168,"3178":3168,"3179":3168,"3180":3168,"3181":3168,"3182":3168,"3183":3168,"3192":3187,"3193":3187,"3194":3187,"3195":3187,"3196":3187,"3197":3187,"3198":3187,"3199":3187,"3217":3216,"3219":3216,"3220":3216,"3221":3216,"3223":3216,"3224":3216,"3225":3216,"3227":3216,"3228":3216,"3229":3216,"3230":3218,"3231":3216,"3232":3237,"3238":3237,"3239":3237,"3240":3245,"3246":3245,"3247":3245,"3256":3251,"3257":3251,"3258":3251,"3259":3251,"3260":3251,"3261":3251,"3262":3251,"3263":3251,"3264":3269,"3270":3269,"3271":3269,"3272":3277,"3278":3277,"3279":3277,"3281":3280,"3282":3280,"3283":3280,"3284":3280,"3285":3280,"3286":3280,"3287":3280,"3288":3280,"3289":3280,"3290":3280,"3291":3280,"3292":3280,"3293":3280,"3294":3280,"3295":3280,"3297":3296,"3298":3296,"3299":3296,"3300":3296,"3301":3296,"3302":3296,"3303":3296,"3304":3296,"3305":3296,"3306":3296,"3307":3296,"3308":3296,"3309":3296,"3310":3296,"3311":3296,"3316":3312,"3317":3312,"3318":3312,"3319":3312,"3320":3312,"3321":3312,"3322":3312,"3323":3312,"3324":3312,"3325":3312,"3326":3312,"3327":3312,"3334":3328,"3335":3328,"3336":3328,"3337":3328,"3338":3328,"3339":3328,"3340":3328,"3341":3328,"3342":3328,"3343":3328,"3409":3408,"3410":3408,"3411":3408,"3412":3408,"3413":3408,"3414":3408,"3415":3408,"3416":3408,"3417":3408,"3418":3408,"3419":3408,"3420":3408,"3421":3408,"3422":3408,"3423":3408,"3425":3424,"3426":3424,"3427":3424,"3428":3424,"3429":3424,"3430":3424,"3431":3424,"3432":3424,"3433":3424,"3434":3424,"3435":3424,"3436":3424,"3437":3424,"3438":3424,"3439":3424,"3441":3440,"3442":3440,"3443":3440,"3444":3440,"3445":3440,"3446":3440,"3447":3440,"3448":3440,"3449":3440,"3450":3440,"3451":3440,"3452":3440,"3453":3440,"3454":3440,"3455":3440,"3457":3456,"3458":3456,"3459":3456,"3461":3456,"3462":3456,"3463":3456,"3465":3456,"3466":3456,"3467":3456,"3468":3456,"3469":3456,"3470":3456,"3471":3456,"3504":3506,"3505":3506,"3510":3506,"3511":3506,"3512":3506,"3513":3506,"3514":3506,"3515":3506,"3516":3506,"3517":3506,"3518":3506,"3519":3506,"3520":3522,"3521":3522,"3526":3522,"3527":3522,"3528":3522,"3529":3522,"3530":3522,"3531":3522,"3532":3522,"3533":3522,"3534":3522,"3535":3522,"3536":3538,"3537":3538,"3542":3538,"3543":3538,"3544":3538,"3545":3538,"3546":3538,"3547":3538,"3548":3538,"3549":3538,"3550":3538,"3551":3538,"3552":3554,"3553":3554,"3558":3554,"3559":3554,"3560":3554,"3561":3554,"3562":3554,"3563":3554,"3564":3554,"3565":3554,"3566":3554,"3567":3554,"3568":3570,"3569":3570,"3574":3570,"3575":3570,"3576":3570,"3577":3570,"3578":3570,"3579":3570,"3580":3570,"3581":3570,"3582":3570,"3583":3570,"3584":3586,"3585":3586,"3590":3586,"3591":3586,"3592":3586,"3593":3586,"3594":3586,"3595":3586,"3596":3586,"3597":3586,"3598":3586,"3599":3586,"3600":3602,"3601":3602,"3606":3602,"3607":3602,"3608":3602,"3609":3602,"3610":3602,"3611":3602,"3612":3602,"3613":3602,"3614":3602,"3615":3602,"3616":3618,"3617":3618,"3622":3618,"3623":3618,"3624":3618,"3625":3618,"3626":3618,"3627":3618,"3628":3618,"3629":3618,"3630":3618,"3631":3618,"3632":3634,"3633":3634,"3638":3634,"3639":3634,"3640":3634,"3641":3634,"3642":3634,"3643":3634,"3644":3634,"3645":3634,"3646":3634,"3647":3634,"3648":3650,"3649":3650,"3654":3650,"3655":3650,"3656":3650,"3657":3650,"3658":3650,"3659":3650,"3660":3650,"3661":3650,"3662":3650,"3663":3650,"3664":3666,"3665":3666,"3670":3666,"3671":3666,"3672":3666,"3673":3666,"3674":3666,"3675":3666,"3676":3666,"3677":3666,"3678":3666,"3679":3666,"3696":3698,"3697":3698,"3702":3698,"3703":3698,"3704":3698,"3705":3698,"3706":3698,"3707":3698,"3708":3698,"3709":3698,"3710":3698,"3711":3698,"3712":3714,"3713":3714,"3718":3714,"3719":3714,"3720":3714,"3721":3714,"3722":3714,"3723":3714,"3724":3714,"3725":3714,"3726":3714,"3727":3714,"3728":3730,"3729":3730,"3734":3730,"3735":3730,"3736":3730,"3737":3730,"3738":3730,"3739":3730,"3740":3730,"3741":3730,"3742":3730,"3743":3730,"3744":3746,"3745":3746,"3750":3746,"3751":3746,"3752":3746,"3753":3746,"3754":3746,"3755":3746,"3756":3746,"3757":3746,"3758":3746,"3759":3746,"3760":3762,"3761":3762,"3766":3762,"3767":3762,"3768":3762,"3769":3762,"3770":3762,"3771":3762,"3772":3762,"3773":3762,"3774":3762,"3775":3762,"3824":3829,"3830":3829,"3831":3829,"3832":3829,"3833":3829,"3834":3829,"3835":3829,"3836":3829,"3837":3829,"3838":3829,"3839":3829,"3889":3888,"3890":3888,"3891":3888,"3892":3888,"3893":3888,"3894":3888,"3895":3888,"3896":3888,"3897":3888,"3898":3888,"3899":3888,"3900":3888,"3901":3888,"3902":3888,"3903":3888,"3912":3904,"3913":3904,"3914":3904,"3915":3904,"3916":3904,"3917":3904,"3918":3904,"3919":3904,"3921":3920,"3922":3920,"3923":3920,"3924":3920,"3925":3920,"3926":3920,"3927":3920,"3928":3920,"3929":3920,"3930":3920,"3931":3920,"3932":3920,"3933":3920,"3934":3920,"3935":3920,"3937":3936,"3938":3936,"3939":3936,"3940":3936,"3941":3936,"3942":3936,"3943":3936,"3944":3936,"3945":3936,"3946":3936,"3947":3936,"3948":3936,"3949":3936,"3950":3936,"3951":3936,"3953":3952,"3954":3952,"3955":3952,"3956":3952,"3957":3952,"3958":3952,"3959":3952,"3960":3952,"3961":3952,"3962":3952,"3963":3952,"3964":3952,"3965":3952,"3966":3952,"3967":3952,"3969":3968,"3970":3968,"3971":3968,"3972":3968,"3973":3968,"3974":3968,"3975":3968,"3976":3968,"3977":3968,"3978":3968,"3979":3968,"3980":3968,"3981":3968,"3982":3968,"3983":3968,"3985":3984,"3986":3984,"3987":3984,"3988":3984,"3989":3984,"3990":3984,"3991":3984,"3992":3984,"3993":3984,"3994":3984,"3995":3984,"3996":3984,"3997":3984,"3998":3984,"3999":3984,"4049":4048,"4050":4048,"4051":4048,"4052":4048,"4053":4048,"4054":4048,"4055":4048,"4056":4048,"4057":4048,"4058":4048,"4059":4048,"4060":4048,"4061":4048,"4062":4048,"4063":4048,"4081":4080,"4082":4080,"4083":4080,"4084":4080,"4085":4080,"4086":4080,"4087":4080,"4088":4080,"4089":4080,"4090":4080,"4091":4080,"4092":4080,"4093":4080,"4094":4080,"4095":4080,"4120":4115,"4121":4115,"4122":4115,"4123":4115,"4124":4115,"4125":4115,"4126":4115,"4127":4115,"4136":4131,"4137":4131,"4138":4131,"4139":4131,"4140":4131,"4141":4131,"4142":4131,"4143":4131,"4152":4147,"4153":4147,"4154":4147,"4155":4147,"4156":4147,"4157":4147,"4158":4147,"4159":4147,"4163":4160,"4164":4160,"4165":4160,"4166":4160,"4167":4160,"4168":4160,"4169":4160,"4170":4160,"4171":4160,"4172":4160,"4173":4160,"4174":4160,"4175":4160,"4179":4176,"4180":4176,"4181":4176,"4182":4176,"4183":4176,"4184":4176,"4185":4176,"4186":4176,"4187":4176,"4188":4176,"4189":4176,"4190":4176,"4191":4176,"4195":4192,"4196":4192,"4197":4192,"4198":4192,"4199":4192,"4200":4192,"4201":4192,"4202":4192,"4203":4192,"4204":4192,"4205":4192,"4206":4192,"4207":4192,"4211":4208,"4212":4208,"4213":4208,"4214":4208,"4215":4208,"4216":4208,"4217":4208,"4218":4208,"4219":4208,"4220":4208,"4221":4208,"4222":4208,"4223":4208,"4227":4224,"4228":4224,"4229":4224,"4230":4224,"4231":4224,"4232":4224,"4233":4224,"4234":4224,"4235":4224,"4236":4224,"4237":4224,"4238":4224,"4239":4224,"4243":4240,"4244":4240,"4245":4240,"4246":4240,"4247":4240,"4248":4240,"4249":4240,"4250":4240,"4251":4240,"4252":4240,"4253":4240,"4254":4240,"4255":4240,"4257":4256,"4258":4256,"4259":4256,"4260":4256,"4261":4256,"4262":4256,"4263":4256,"4264":4256,"4265":4256,"4266":4256,"4267":4256,"4268":4256,"4269":4256,"4270":4256,"4271":4256,"4273":4272,"4274":4272,"4275":4272,"4276":4272,"4277":4272,"4278":4272,"4279":4272,"4280":4272,"4281":4272,"4282":4272,"4283":4272,"4284":4272,"4285":4272,"4286":4272,"4287":4272,"4289":4288,"4290":4288,"4291":4288,"4292":4288,"4293":4288,"4294":4288,"4295":4288,"4296":4288,"4297":4288,"4298":4288,"4299":4288,"4300":4288,"4301":4288,"4302":4288,"4303":4288,"4305":4304,"4306":4304,"4307":4304,"4308":4304,"4309":4304,"4310":4304,"4311":4304,"4312":4304,"4313":4304,"4314":4304,"4315":4304,"4316":4304,"4317":4304,"4318":4304,"4319":4304,"4321":4320,"4322":4320,"4323":4320,"4324":4320,"4325":4320,"4326":4320,"4327":4320,"4328":4320,"4329":4320,"4330":4320,"4331":4320,"4332":4320,"4333":4320,"4334":4320,"4335":4320,"4337":4336,"4338":4336,"4339":4336,"4340":4336,"4341":4336,"4342":4336,"4343":4336,"4344":4336,"4345":4336,"4346":4336,"4347":4336,"4348":4336,"4349":4336,"4350":4336,"4351":4336,"4353":4352,"4354":4352,"4355":4352,"4356":4352,"4357":4352,"4358":4352,"4359":4352,"4360":4352,"4361":4352,"4362":4352,"4363":4352,"4364":4352,"4365":4352,"4366":4352,"4367":4352,"4369":4368,"4370":4368,"4371":4368,"4372":4368,"4373":4368,"4374":4368,"4375":4368,"4376":4368,"4377":4368,"4378":4368,"4379":4368,"4380":4368,"4381":4368,"4382":4368,"4383":4368,"4385":4384,"4386":4384,"4387":4384,"4388":4384,"4389":4384,"4390":4384,"4391":4384,"4392":4384,"4393":4384,"4394":4384,"4395":4384,"4396":4384,"4397":4384,"4398":4384,"4399":4384,"4401":4400,"4402":4400,"4403":4400,"4404":4400,"4405":4400,"4406":4400,"4407":4400,"4408":4400,"4409":4400,"4410":4400,"4411":4400,"4412":4400,"4413":4400,"4414":4400,"4415":4400,"4417":4416,"4418":4416,"4419":4416,"4420":4416,"4421":4416,"4422":4416,"4423":4416,"4424":4416,"4425":4416,"4426":4416,"4427":4416,"4428":4416,"4429":4416,"4430":4416,"4431":4416,"4433":4432,"4434":4432,"4435":4432,"4436":4432,"4437":4432,"4438":4432,"4439":4432,"4440":4432,"4441":4432,"4442":4432,"4443":4432,"4444":4432,"4445":4432,"4446":4432,"4447":4432,"4449":4448,"4450":4448,"4451":4448,"4452":4448,"4453":4448,"4454":4448,"4455":4448,"4456":4448,"4457":4448,"4458":4448,"4459":4448,"4460":4448,"4461":4448,"4462":4448,"4463":4448,"4465":4464,"4466":4464,"4467":4464,"4468":4464,"4469":4464,"4470":4464,"4471":4464,"4472":4464,"4473":4464,"4474":4464,"4475":4464,"4476":4464,"4477":4464,"4478":4464,"4479":4464,"4481":4480,"4482":4480,"4483":4480,"4484":4480,"4485":4480,"4486":4480,"4487":4480,"4488":4480,"4489":4480,"4490":4480,"4491":4480,"4492":4480,"4493":4480,"4494":4480,"4495":4480,"4497":4496,"4498":4496,"4499":4496,"4500":4496,"4501":4496,"4502":4496,"4503":4496,"4504":4496,"4505":4496,"4506":4496,"4507":4496,"4508":4496,"4509":4496,"4510":4496,"4511":4496,"4513":4512,"4514":4512,"4515":4512,"4516":4512,"4517":4512,"4518":4512,"4519":4512,"4520":4512,"4521":4512,"4522":4512,"4523":4512,"4524":4512,"4525":4512,"4526":4512,"4527":4512,"4529":4528,"4530":4528,"4531":4528,"4532":4528,"4533":4528,"4534":4528,"4535":4528,"4536":4528,"4537":4528,"4538":4528,"4539":4528,"4540":4528,"4541":4528,"4542":4528,"4543":4528,"4545":4544,"4546":4544,"4547":4544,"4548":4544,"4549":4544,"4550":4544,"4551":4544,"4552":4544,"4553":4544,"4554":4544,"4555":4544,"4556":4544,"4557":4544,"4558":4544,"4559":4544,"4561":4560,"4562":4560,"4563":4560,"4564":4560,"4565":4560,"4566":4560,"4567":4560,"4568":4560,"4569":4560,"4570":4560,"4571":4560,"4572":4560,"4573":4560,"4574":4560,"4575":4560,"4577":4576,"4578":4576,"4579":4576,"4580":4576,"4581":4576,"4582":4576,"4583":4576,"4584":4576,"4585":4576,"4586":4576,"4587":4576,"4588":4576,"4589":4576,"4590":4576,"4591":4576,"4593":4592,"4594":4592,"4595":4592,"4596":4592,"4597":4592,"4598":4592,"4599":4592,"4600":4592,"4601":4592,"4602":4592,"4603":4592,"4604":4592,"4605":4592,"4606":4592,"4607":4592,"4609":4608,"4610":4608,"4611":4608,"4612":4608,"4613":4608,"4614":4608,"4615":4608,"4616":4608,"4617":4608,"4618":4608,"4619":4608,"4620":4608,"4621":4608,"4622":4608,"4623":4608,"4625":4624,"4626":4624,"4627":4624,"4628":4624,"4629":4624,"4630":4624,"4631":4624,"4632":4624,"4633":4624,"4634":4624,"4635":4624,"4636":4624,"4637":4624,"4638":4624,"4639":4624,"4641":4640,"4642":4640,"4643":4640,"4644":4640,"4645":4640,"4646":4640,"4647":4640,"4648":4640,"4649":4640,"4650":4640,"4651":4640,"4652":4640,"4653":4640,"4654":4640,"4655":4640,"4657":4656,"4658":4656,"4659":4656,"4660":4656,"4661":4656,"4662":4656,"4663":4656,"4664":4656,"4665":4656,"4666":4656,"4667":4656,"4668":4656,"4669":4656,"4670":4656,"4671":4656,"4673":4672,"4674":4672,"4675":4672,"4676":4672,"4677":4672,"4678":4672,"4679":4672,"4680":4672,"4681":4672,"4682":4672,"4683":4672,"4684":4672,"4685":4672,"4686":4672,"4687":4672,"4689":4688,"4690":4688,"4691":4688,"4692":4688,"4693":4688,"4694":4688,"4695":4688,"4696":4688,"4697":4688,"4698":4688,"4699":4688,"4700":4688,"4701":4688,"4702":4688,"4703":4688,"4705":4704,"4706":4704,"4707":4704,"4708":4704,"4709":4704,"4710":4704,"4711":4704,"4712":4704,"4713":4704,"4714":4704,"4715":4704,"4716":4704,"4717":4704,"4718":4704,"4719":4704,"4721":4720,"4722":4720,"4723":4720,"4724":4720,"4725":4720,"4726":4720,"4727":4720,"4728":4720,"4729":4720,"4730":4720,"4731":4720,"4732":4720,"4733":4720,"4734":4720,"4735":4720,"4737":4736,"4738":4736,"4739":4736,"4740":4736,"4741":4736,"4742":4736,"4743":4736,"4744":4736,"4745":4736,"4746":4736,"4747":4736,"4748":4736,"4749":4736,"4750":4736,"4751":4736,"4753":4752,"4754":4752,"4755":4752,"4756":4752,"4757":4752,"4758":4752,"4759":4752,"4760":4752,"4761":4752,"4762":4752,"4763":4752,"4764":4752,"4765":4752,"4766":4752,"4767":4752,"4769":4768,"4770":4768,"4771":4768,"4772":4768,"4773":4768,"4774":4768,"4775":4768,"4776":4768,"4777":4768,"4778":4768,"4779":4768,"4780":4768,"4781":4768,"4782":4768,"4783":4768,"4785":4784,"4786":4784,"4787":4784,"4788":4784,"4789":4784,"4790":4784,"4791":4784,"4792":4784,"4793":4784,"4794":4784,"4795":4784,"4796":4784,"4797":4784,"4798":4784,"4799":4784,"4801":4800,"4802":4800,"4803":4800,"4804":4800,"4805":4800,"4806":4800,"4807":4800,"4808":4800,"4809":4800,"4810":4800,"4811":4800,"4812":4800,"4813":4800,"4814":4800,"4815":4800,"4817":4816,"4818":4816,"4819":4816,"4820":4816,"4821":4816,"4822":4816,"4823":4816,"4824":4816,"4825":4816,"4826":4816,"4827":4816,"4828":4816,"4829":4816,"4830":4816,"4831":4816,"4833":4832,"4834":4832,"4835":4832,"4836":4832,"4837":4832,"4838":4832,"4839":4832,"4840":4832,"4841":4832,"4842":4832,"4843":4832,"4844":4832,"4845":4832,"4846":4832,"4847":4832,"4849":4848,"4850":4848,"4851":4848,"4852":4848,"4853":4848,"4854":4848,"4855":4848,"4856":4848,"4857":4848,"4858":4848,"4859":4848,"4860":4848,"4861":4848,"4862":4848,"4863":4848,"4865":4864,"4866":4864,"4867":4864,"4868":4864,"4869":4864,"4870":4864,"4871":4864,"4872":4864,"4873":4864,"4874":4864,"4875":4864,"4876":4864,"4877":4864,"4878":4864,"4879":4864,"4881":4880,"4882":4880,"4883":4880,"4884":4880,"4885":4880,"4886":4880,"4887":4880,"4888":4880,"4889":4880,"4890":4880,"4891":4880,"4892":4880,"4893":4880,"4894":4880,"4895":4880,"4897":4896,"4898":4896,"4899":4896,"4900":4896,"4901":4896,"4902":4896,"4903":4896,"4904":4896,"4905":4896,"4906":4896,"4907":4896,"4908":4896,"4909":4896,"4910":4896,"4911":4896,"4913":4912,"4914":4912,"4915":4912,"4916":4912,"4917":4912,"4918":4912,"4919":4912,"4920":4912,"4921":4912,"4922":4912,"4923":4912,"4924":4912,"4925":4912,"4926":4912,"4927":4912,"4929":4928,"4930":4928,"4931":4928,"4932":4928,"4933":4928,"4934":4928,"4935":4928,"4936":4928,"4937":4928,"4938":4928,"4939":4928,"4940":4928,"4941":4928,"4942":4928,"4943":4928,"4945":4944,"4946":4944,"4947":4944,"4948":4944,"4949":4944,"4950":4944,"4951":4944,"4952":4944,"4953":4944,"4954":4944,"4955":4944,"4956":4944,"4957":4944,"4958":4944,"4959":4944,"4961":4960,"4962":4960,"4963":4960,"4964":4960,"4965":4960,"4966":4960,"4967":4960,"4968":4960,"4969":4960,"4970":4960,"4971":4960,"4972":4960,"4973":4960,"4974":4960,"4975":4960,"4977":4976,"4978":4976,"4979":4976,"4980":4976,"4981":4976,"4982":4976,"4983":4976,"4984":4976,"4985":4976,"4986":4976,"4987":4976,"4988":4976,"4989":4976,"4990":4976,"4991":4976,"4993":4992,"4994":4992,"4995":4992,"4996":4992,"4997":4992,"4998":4992,"4999":4992,"5000":4992,"5001":4992,"5002":4992,"5003":4992,"5004":4992,"5005":4992,"5006":4992,"5007":4992,"5009":5008,"5010":5008,"5011":5008,"5012":5008,"5013":5008,"5014":5008,"5015":5008,"5016":5008,"5017":5008,"5018":5008,"5019":5008,"5020":5008,"5021":5008,"5022":5008,"5023":5008,"5025":5024,"5026":5024,"5027":5024,"5028":5024,"5029":5024,"5030":5024,"5031":5024,"5032":5024,"5033":5024,"5034":5024,"5035":5024,"5036":5024,"5037":5024,"5038":5024,"5039":5024,"5041":5040,"5042":5040,"5043":5040,"5044":5040,"5045":5040,"5046":5040,"5047":5040,"5048":5040,"5049":5040,"5050":5040,"5051":5040,"5052":5040,"5053":5040,"5054":5040,"5055":5040,"5057":5056,"5058":5056,"5059":5056,"5060":5056,"5061":5056,"5062":5056,"5063":5056,"5064":5056,"5065":5056,"5066":5056,"5067":5056,"5068":5056,"5069":5056,"5070":5056,"5071":5056,"5073":5072,"5074":5072,"5075":5072,"5076":5072,"5077":5072,"5078":5072,"5079":5072,"5080":5072,"5081":5072,"5082":5072,"5083":5072,"5084":5072,"5085":5072,"5086":5072,"5087":5072,"5089":5088,"5090":5088,"5091":5088,"5092":5088,"5093":5088,"5094":5088,"5095":5088,"5096":5088,"5097":5088,"5098":5088,"5099":5088,"5100":5088,"5101":5088,"5102":5088,"5103":5088,"5105":5104,"5106":5104,"5107":5104,"5108":5104,"5109":5104,"5110":5104,"5111":5104,"5112":5104,"5113":5104,"5114":5104,"5115":5104,"5116":5104,"5117":5104,"5118":5104,"5119":5104,"5121":5120,"5122":5120,"5123":5120,"5124":5120,"5125":5120,"5126":5120,"5127":5120,"5128":5120,"5129":5120,"5130":5120,"5131":5120,"5132":5120,"5133":5120,"5134":5120,"5135":5120,"5137":5136,"5138":5136,"5139":5136,"5140":5136,"5141":5136,"5142":5136,"5143":5136,"5144":5136,"5145":5136,"5146":5136,"5147":5136,"5148":5136,"5149":5136,"5150":5136,"5151":5136,"5153":5152,"5154":5152,"5155":5152,"5156":5152,"5157":5152,"5158":5152,"5159":5152,"5160":5152,"5161":5152,"5162":5152,"5163":5152,"5164":5152,"5165":5152,"5166":5152,"5167":5152,"5169":5168,"5170":5168,"5171":5168,"5172":5168,"5173":5168,"5174":5168,"5175":5168,"5176":5168,"5177":5168,"5178":5168,"5179":5168,"5180":5168,"5181":5168,"5182":5168,"5183":5168,"5185":5184,"5186":5184,"5187":5184,"5188":5184,"5189":5184,"5190":5184,"5191":5184,"5192":5184,"5193":5184,"5194":5184,"5195":5184,"5196":5184,"5197":5184,"5198":5184,"5199":5184,"5201":5200,"5202":5200,"5203":5200,"5204":5200,"5205":5200,"5206":5200,"5207":5200,"5208":5200,"5209":5200,"5210":5200,"5211":5200,"5212":5200,"5213":5200,"5214":5200,"5215":5200,"5217":5216,"5218":5216,"5219":5216,"5220":5216,"5221":5216,"5222":5216,"5223":5216,"5224":5216,"5225":5216,"5226":5216,"5227":5216,"5228":5216,"5229":5216,"5230":5216,"5231":5216,"5233":5232,"5234":5232,"5235":5232,"5236":5232,"5237":5232,"5238":5232,"5239":5232,"5240":5232,"5241":5232,"5242":5232,"5243":5232,"5244":5232,"5245":5232,"5246":5232,"5247":5232,"5249":5248,"5250":5248,"5251":5248,"5252":5248,"5253":5248,"5254":5248,"5255":5248,"5256":5248,"5257":5248,"5258":5248,"5259":5248,"5260":5248,"5261":5248,"5262":5248,"5263":5248,"5265":5264,"5266":5264,"5267":5264,"5268":5264,"5269":5264,"5270":5264,"5271":5264,"5272":5264,"5273":5264,"5274":5264,"5275":5264,"5276":5264,"5277":5264,"5278":5264,"5279":5264,"5281":5280,"5282":5280,"5283":5280,"5284":5280,"5285":5280,"5286":5280,"5287":5280,"5288":5280,"5289":5280,"5290":5280,"5291":5280,"5292":5280,"5293":5280,"5294":5280,"5295":5280,"5297":5296,"5298":5296,"5299":5296,"5300":5296,"5301":5296,"5302":5296,"5303":5296,"5304":5296,"5305":5296,"5306":5296,"5307":5296,"5308":5296,"5309":5296,"5310":5296,"5311":5296,"5313":5312,"5314":5312,"5315":5312,"5316":5312,"5317":5312,"5318":5312,"5319":5312,"5320":5312,"5321":5312,"5322":5312,"5323":5312,"5324":5312,"5325":5312,"5326":5312,"5327":5312,"5329":5328,"5330":5328,"5331":5328,"5332":5328,"5333":5328,"5334":5328,"5335":5328,"5336":5328,"5337":5328,"5338":5328,"5339":5328,"5340":5328,"5341":5328,"5342":5328,"5343":5328,"5345":5344,"5346":5344,"5347":5344,"5348":5344,"5349":5344,"5350":5344,"5351":5344,"5352":5344,"5353":5344,"5354":5344,"5355":5344,"5356":5344,"5357":5344,"5358":5344,"5359":5344,"5361":5360,"5362":5360,"5363":5360,"5364":5360,"5365":5360,"5366":5360,"5367":5360,"5368":5360,"5369":5360,"5370":5360,"5371":5360,"5372":5360,"5373":5360,"5374":5360,"5375":5360,"5377":5376,"5378":5376,"5379":5376,"5380":5376,"5381":5376,"5382":5376,"5383":5376,"5384":5376,"5385":5376,"5386":5376,"5387":5376,"5388":5376,"5389":5376,"5390":5376,"5391":5376,"5393":5392,"5394":5392,"5395":5392,"5396":5392,"5397":5392,"5398":5392,"5399":5392,"5400":5392,"5401":5392,"5402":5392,"5403":5392,"5404":5392,"5405":5392,"5406":5392,"5407":5392,"5409":5408,"5410":5408,"5411":5408,"5412":5408,"5413":5408,"5414":5408,"5415":5408,"5416":5408,"5417":5408,"5418":5408,"5419":5408,"5420":5408,"5421":5408,"5422":5408,"5423":5408,"5425":5424,"5426":5424,"5427":5424,"5428":5424,"5429":5424,"5430":5424,"5431":5424,"5432":5424,"5433":5424,"5434":5424,"5435":5424,"5436":5424,"5437":5424,"5438":5424,"5439":5424,"5441":5440,"5442":5440,"5443":5440,"5444":5440,"5445":5440,"5446":5440,"5447":5440,"5448":5440,"5449":5440,"5450":5440,"5451":5440,"5452":5440,"5453":5440,"5454":5440,"5455":5440,"5457":5456,"5458":5456,"5459":5456,"5460":5456,"5461":5456,"5462":5456,"5463":5456,"5464":5456,"5465":5456,"5466":5456,"5467":5456,"5468":5456,"5469":5456,"5470":5456,"5471":5456,"5473":5472,"5474":5472,"5475":5472,"5476":5472,"5477":5472,"5478":5472,"5479":5472,"5480":5472,"5481":5472,"5482":5472,"5483":5472,"5484":5472,"5485":5472,"5486":5472,"5487":5472,"5489":5488,"5490":5488,"5491":5488,"5492":5488,"5493":5488,"5494":5488,"5495":5488,"5496":5488,"5497":5488,"5498":5488,"5499":5488,"5500":5488,"5501":5488,"5502":5488,"5503":5488,"5505":5504,"5506":5504,"5507":5504,"5508":5504,"5509":5504,"5510":5504,"5511":5504,"5512":5504,"5513":5504,"5514":5504,"5515":5504,"5516":5504,"5517":5504,"5518":5504,"5519":5504,"5521":5520,"5522":5520,"5523":5520,"5524":5520,"5525":5520,"5526":5520,"5527":5520,"5528":5520,"5529":5520,"5530":5520,"5531":5520,"5532":5520,"5533":5520,"5534":5520,"5535":5520,"5537":5536,"5538":5536,"5539":5536,"5540":5536,"5541":5536,"5542":5536,"5543":5536,"5544":5536,"5545":5536,"5546":5536,"5547":5536,"5548":5536,"5549":5536,"5550":5536,"5551":5536,"5553":5552,"5554":5552,"5555":5552,"5556":5552,"5557":5552,"5558":5552,"5559":5552,"5560":5552,"5561":5552,"5562":5552,"5563":5552,"5564":5552,"5565":5552,"5566":5552,"5567":5552,"5569":5568,"5570":5568,"5571":5568,"5572":5568,"5573":5568,"5574":5568,"5575":5568,"5576":5568,"5577":5568,"5578":5568,"5579":5568,"5580":5568,"5581":5568,"5582":5568,"5583":5568,"5585":5584,"5586":5584,"5587":5584,"5588":5584,"5589":5584,"5590":5584,"5591":5584,"5592":5584,"5593":5584,"5594":5584,"5595":5584,"5596":5584,"5597":5584,"5598":5584,"5599":5584,"5601":5600,"5602":5600,"5603":5600,"5604":5600,"5605":5600,"5606":5600,"5607":5600,"5608":5600,"5609":5600,"5610":5600,"5611":5600,"5612":5600,"5613":5600,"5614":5600,"5615":5600,"5617":5616,"5618":5616,"5619":5616,"5620":5616,"5621":5616,"5622":5616,"5623":5616,"5624":5616,"5625":5616,"5626":5616,"5627":5616,"5628":5616,"5629":5616,"5630":5616,"5631":5616,"5633":5632,"5634":5632,"5635":5632,"5636":5632,"5637":5632,"5638":5632,"5639":5632,"5640":5632,"5641":5632,"5642":5632,"5643":5632,"5644":5632,"5645":5632,"5646":5632,"5647":5632,"5649":5648,"5650":5648,"5651":5648,"5652":5648,"5653":5648,"5654":5648,"5655":5648,"5656":5648,"5657":5648,"5658":5648,"5659":5648,"5660":5648,"5661":5648,"5662":5648,"5663":5648,"5665":5664,"5666":5664,"5667":5664,"5668":5664,"5669":5664,"5670":5664,"5671":5664,"5672":5664,"5673":5664,"5674":5664,"5675":5664,"5676":5664,"5677":5664,"5678":5664,"5679":5664,"5681":5680,"5682":5680,"5683":5680,"5684":5680,"5685":5680,"5686":5680,"5687":5680,"5688":5680,"5689":5680,"5690":5680,"5691":5680,"5692":5680,"5693":5680,"5694":5680,"5695":5680,"5697":5696,"5698":5696,"5699":5696,"5700":5696,"5701":5696,"5702":5696,"5703":5696,"5704":5696,"5705":5696,"5706":5696,"5707":5696,"5708":5696,"5709":5696,"5710":5696,"5711":5696,"5713":5712,"5714":5712,"5715":5712,"5716":5712,"5717":5712,"5718":5712,"5719":5712,"5720":5712,"5721":5712,"5722":5712,"5723":5712,"5724":5712,"5725":5712,"5726":5712,"5727":5712,"5729":5728,"5730":5728,"5731":5728,"5732":5728,"5733":5728,"5734":5728,"5735":5728,"5736":5728,"5737":5728,"5738":5728,"5739":5728,"5740":5728,"5741":5728,"5742":5728,"5743":5728,"5745":5744,"5746":5744,"5747":5744,"5748":5744,"5749":5744,"5750":5744,"5751":5744,"5752":5744,"5753":5744,"5754":5744,"5755":5744,"5756":5744,"5757":5744,"5758":5744,"5759":5744,"5761":5760,"5762":5760,"5763":5760,"5764":5760,"5765":5760,"5766":5760,"5767":5760,"5768":5760,"5769":5760,"5770":5760,"5771":5760,"5772":5760,"5773":5760,"5774":5760,"5775":5760,"5777":5776,"5778":5776,"5779":5776,"5780":5776,"5781":5776,"5782":5776,"5783":5776,"5784":5776,"5785":5776,"5786":5776,"5787":5776,"5788":5776,"5789":5776,"5790":5776,"5791":5776,"5793":5792,"5794":5792,"5795":5792,"5796":5792,"5797":5792,"5798":5792,"5799":5792,"5800":5792,"5801":5792,"5802":5792,"5803":5792,"5804":5792,"5805":5792,"5806":5792,"5807":5792,"5809":5808,"5810":5808,"5811":5808,"5812":5808,"5813":5808,"5814":5808,"5815":5808,"5816":5808,"5817":5808,"5818":5808,"5819":5808,"5820":5808,"5821":5808,"5822":5808,"5823":5808,"5825":5824,"5826":5824,"5827":5824,"5828":5824,"5829":5824,"5830":5824,"5831":5824,"5832":5824,"5833":5824,"5834":5824,"5835":5824,"5836":5824,"5837":5824,"5838":5824,"5839":5824,"5841":5840,"5842":5840,"5843":5840,"5844":5840,"5845":5840,"5846":5840,"5847":5840,"5848":5840,"5849":5840,"5850":5840,"5851":5840,"5852":5840,"5853":5840,"5854":5840,"5855":5840,"5857":5856,"5858":5856,"5859":5856,"5860":5856,"5861":5856,"5862":5856,"5863":5856,"5864":5856,"5865":5856,"5866":5856,"5867":5856,"5868":5856,"5869":5856,"5870":5856,"5871":5856,"5873":5872,"5874":5872,"5875":5872,"5876":5872,"5877":5872,"5878":5872,"5879":5872,"5880":5872,"5881":5872,"5882":5872,"5883":5872,"5884":5872,"5885":5872,"5886":5872,"5887":5872,"5889":5888,"5890":5888,"5891":5888,"5892":5888,"5893":5888,"5894":5888,"5895":5888,"5896":5888,"5897":5888,"5898":5888,"5899":5888,"5900":5888,"5901":5888,"5902":5888,"5903":5888,"5905":5904,"5906":5904,"5907":5904,"5908":5904,"5909":5904,"5910":5904,"5911":5904,"5912":5904,"5913":5904,"5914":5904,"5915":5904,"5916":5904,"5917":5904,"5918":5904,"5919":5904,"5921":5920,"5922":5920,"5923":5920,"5924":5920,"5925":5920,"5926":5920,"5927":5920,"5928":5920,"5929":5920,"5930":5920,"5931":5920,"5932":5920,"5933":5920,"5934":5920,"5935":5920,"5937":5936,"5938":5936,"5939":5936,"5940":5936,"5941":5936,"5942":5936,"5943":5936,"5944":5936,"5945":5936,"5946":5936,"5947":5936,"5948":5936,"5949":5936,"5950":5936,"5951":5936,"5953":5952,"5954":5952,"5955":5952,"5956":5952,"5957":5952,"5958":5952,"5959":5952,"5960":5952,"5961":5952,"5962":5952,"5963":5952,"5964":5952,"5965":5952,"5966":5952,"5967":5952,"5969":5968,"5970":5968,"5971":5968,"5972":5968,"5973":5968,"5974":5968,"5975":5968,"5976":5968,"5977":5968,"5978":5968,"5979":5968,"5980":5968,"5981":5968,"5982":5968,"5983":5968,"5985":5984,"5986":5984,"5987":5984,"5988":5984,"5989":5984,"5990":5984,"5991":5984,"5992":5984,"5993":5984,"5994":5984,"5995":5984,"5996":5984,"5997":5984,"5998":5984,"5999":5984,"6001":6000,"6002":6000,"6003":6000,"6004":6000,"6005":6000,"6006":6000,"6007":6000,"6008":6000,"6009":6000,"6010":6000,"6011":6000,"6012":6000,"6013":6000,"6014":6000,"6015":6000,"6017":6016,"6018":6016,"6019":6016,"6020":6016,"6021":6016,"6022":6016,"6023":6016,"6024":6016,"6025":6016,"6026":6016,"6027":6016,"6028":6016,"6029":6016,"6030":6016,"6031":6016,"6033":6032,"6034":6032,"6035":6032,"6036":6032,"6037":6032,"6038":6032,"6039":6032,"6040":6032,"6041":6032,"6042":6032,"6043":6032,"6044":6032,"6045":6032,"6046":6032,"6047":6032,"6049":6048,"6050":6048,"6051":6048,"6052":6048,"6053":6048,"6054":6048,"6055":6048,"6056":6048,"6057":6048,"6058":6048,"6059":6048,"6060":6048,"6061":6048,"6062":6048,"6063":6048,"6065":6064,"6066":6064,"6067":6064,"6068":6064,"6069":6064,"6070":6064,"6071":6064,"6072":6064,"6073":6064,"6074":6064,"6075":6064,"6076":6064,"6077":6064,"6078":6064,"6079":6064,"6081":6080,"6082":6080,"6083":6080,"6084":6080,"6085":6080,"6086":6080,"6087":6080,"6088":6080,"6089":6080,"6090":6080,"6091":6080,"6092":6080,"6093":6080,"6094":6080,"6095":6080,"6097":6096,"6098":6096,"6099":6096,"6100":6096,"6101":6096,"6102":6096,"6103":6096,"6104":6096,"6105":6096,"6106":6096,"6107":6096,"6108":6096,"6109":6096,"6110":6096,"6111":6096,"6113":6112,"6114":6112,"6115":6112,"6116":6112,"6117":6112,"6118":6112,"6119":6112,"6120":6112,"6121":6112,"6122":6112,"6123":6112,"6124":6112,"6125":6112,"6126":6112,"6127":6112,"6129":6128,"6130":6128,"6131":6128,"6132":6128,"6133":6128,"6134":6128,"6135":6128,"6136":6128,"6137":6128,"6138":6128,"6139":6128,"6140":6128,"6141":6128,"6142":6128,"6143":6128,"6145":6144,"6146":6144,"6147":6144,"6148":6144,"6149":6144,"6150":6144,"6151":6144,"6152":6144,"6153":6144,"6154":6144,"6155":6144,"6156":6144,"6157":6144,"6158":6144,"6159":6144,"6181":6176,"6182":6176,"6183":6176,"6184":6176,"6185":6176,"6186":6176,"6187":6176,"6188":6176,"6189":6176,"6190":6176,"6191":6176,"6197":6192,"6198":6192,"6199":6192,"6205":6192,"6206":6192,"6207":6192,"6213":6208,"6214":6208,"6215":6208,"6221":6208,"6222":6208,"6223":6208,"6229":6208,"6230":6208,"6231":6208,"6237":6208,"6238":6208,"6239":6208,"6273":6248,"6275":6248,"6277":6248,"6279":6248,"6281":6248,"6283":6248,"6285":6248,"6287":6248,"6305":6304,"6306":6304,"6307":6304,"6308":6304,"6309":6304,"6310":6304,"6311":6304,"6312":6304,"6313":6304,"6314":6304,"6315":6304,"6316":6304,"6317":6304,"6318":6304,"6319":6304,"6326":6320,"6327":6320,"6334":6320,"6335":6320,"6342":6336,"6343":6336,"6350":6336,"6351":6336,"6358":6352,"6359":6352,"6366":6352,"6367":6352,"6374":6368,"6375":6368,"6382":6368,"6383":6368,"6390":6384,"6391":6384,"6398":6384,"6399":6384,"6482":6480,"6483":6480,"6484":6480,"6485":6480,"6486":6480,"6487":6480,"6488":6480,"6489":6480,"6490":6480,"6491":6480,"6492":6480,"6493":6480,"6494":6480,"6495":6480,"6498":6496,"6499":6496,"6500":6496,"6501":6496,"6502":6496,"6503":6496,"6504":6496,"6505":6496,"6506":6496,"6507":6496,"6508":6496,"6509":6496,"6510":6496,"6511":6496,"6514":6512,"6515":6512,"6516":6512,"6517":6512,"6518":6512,"6519":6512,"6520":6512,"6521":6512,"6522":6512,"6523":6512,"6524":6512,"6525":6512,"6526":6512,"6527":6512,"6530":6528,"6531":6528,"6532":6528,"6533":6528,"6534":6528,"6535":6528,"6536":6528,"6537":6528,"6538":6528,"6539":6528,"6540":6528,"6541":6528,"6542":6528,"6543":6528,"6546":6544,"6547":6544,"6548":6544,"6549":6544,"6550":6544,"6551":6544,"6552":6544,"6553":6544,"6554":6544,"6555":6544,"6556":6544,"6557":6544,"6558":6544,"6559":6544,"6564":6562,"6565":6562,"6566":6562,"6567":6562,"6568":6562,"6569":6562,"6570":6562,"6571":6562,"6572":6562,"6573":6562,"6574":6562,"6575":6562,"6584":6580,"6585":6580,"6586":6580,"6587":6580,"6588":6580,"6589":6580,"6590":6580,"6591":6580,"6657":6656,"6658":6656,"6659":6656,"6660":6656,"6661":6656,"6662":6656,"6663":6656,"6664":6656,"6665":6656,"6666":6656,"6667":6656,"6668":6656,"6669":6656,"6670":6656,"6671":6656,"6694":6688,"6695":6688,"6702":6688,"6703":6688,"6706":6704,"6707":6704,"6708":6704,"6709":6704,"6710":6704,"6711":6704,"6712":6704,"6713":6704,"6714":6704,"6715":6704,"6716":6704,"6717":6704,"6718":6704,"6719":6704,"6760":6752,"6761":6753,"6762":6754,"6763":6755,"6764":6756,"6765":6757,"6766":6758,"6767":6759,"6776":6768,"6777":6769,"6778":6770,"6779":6771,"6780":6772,"6792":6787,"6793":6787,"6794":6787,"6795":6787,"6796":6787,"6797":6787,"6798":6787,"6799":6787,"6808":6803,"6809":6803,"6810":6803,"6811":6803,"6812":6803,"6813":6803,"6814":6803,"6815":6803,"6824":6819,"6825":6819,"6826":6819,"6827":6819,"6828":6819,"6829":6819,"6830":6819,"6831":6819,"6840":6835,"6841":6835,"6842":6835,"6843":6835,"6844":6835,"6845":6835,"6846":6835,"6847":6835,"6856":6851,"6857":6851,"6858":6851,"6859":6851,"6860":6851,"6861":6851,"6862":6851,"6863":6851,"6872":6867,"6873":6867,"6874":6867,"6875":6867,"6876":6867,"6877":6867,"6878":6867,"6879":6867,"6888":6883,"6889":6883,"6890":6883,"6891":6883,"6892":6883,"6893":6883,"6894":6883,"6895":6883,"6904":6899,"6905":6899,"6906":6899,"6907":6899,"6908":6899,"6909":6899,"6910":6899,"6911":6899,"6920":6915,"6921":6915,"6922":6915,"6923":6915,"6924":6915,"6925":6915,"6926":6915,"6927":6915,"6936":6931,"6937":6931,"6938":6931,"6939":6931,"6940":6931,"6941":6931,"6942":6931,"6943":6931,"6952":6947,"6953":6947,"6954":6947,"6955":6947,"6956":6947,"6957":6947,"6958":6947,"6959":6947,"6968":6963,"6969":6963,"6970":6963,"6971":6963,"6972":6963,"6973":6963,"6974":6963,"6975":6963,"6992":6994,"6993":6994,"6998":6994,"6999":6994,"7000":6994,"7001":6994,"7002":6994,"7003":6994,"7004":6994,"7005":6994,"7006":6994,"7007":6994,"7009":7008,"7010":7008,"7011":7008,"7012":7008,"7013":7008,"7014":7008,"7015":7008,"7016":7008,"7017":7008,"7018":7008,"7019":7008,"7020":7008,"7021":7008,"7022":7008,"7023":7008,"7032":7027,"7033":7027,"7034":7027,"7035":7027,"7036":7027,"7037":7027,"7038":7027,"7039":7027,"7048":7043,"7049":7043,"7050":7043,"7051":7043,"7052":7043,"7053":7043,"7054":7043,"7055":7043,"7072":7074,"7073":7074,"7078":7074,"7079":7074,"7080":7074,"7081":7074,"7082":7074,"7083":7074,"7084":7074,"7085":7074,"7086":7074,"7087":7074,"7104":7106,"7105":7106,"7110":7106,"7111":7106,"7112":7106,"7113":7106,"7114":7106,"7115":7106,"7116":7106,"7117":7106,"7118":7106,"7119":7106,"7136":7138,"7137":7138,"7142":7138,"7143":7138,"7144":7138,"7145":7138,"7146":7138,"7147":7138,"7148":7138,"7149":7138,"7150":7138,"7151":7138,"7168":7170,"7169":7170,"7174":7170,"7175":7170,"7176":7170,"7177":7170,"7178":7170,"7179":7170,"7180":7170,"7181":7170,"7182":7170,"7183":7170,"7192":7186,"7193":7186,"7194":7186,"7195":7186,"7196":7186,"7197":7186,"7198":7186,"7199":7186,"7216":7218,"7217":7218,"7222":7218,"7223":7218,"7224":7218,"7225":7218,"7226":7218,"7227":7218,"7228":7218,"7229":7218,"7230":7218,"7231":7218,"7248":7250,"7249":7250,"7254":7250,"7255":7250,"7256":7250,"7257":7250,"7258":7250,"7259":7250,"7260":7250,"7261":7250,"7262":7250,"7263":7250,"7264":7250,"7265":7250,"7270":7250,"7271":7250,"7272":7250,"7273":7250,"7274":7250,"7275":7250,"7276":7250,"7277":7250,"7278":7250,"7279":7250,"7297":7296,"7298":7296,"7299":7296,"7300":7296,"7301":7296,"7302":7296,"7303":7296,"7304":7296,"7305":7296,"7306":7296,"7307":7296,"7308":7296,"7309":7296,"7310":7296,"7311":7296,"7334":7328,"7335":7328,"7342":7328,"7343":7328,"7348":7346,"7349":7346,"7350":7346,"7351":7346,"7352":7346,"7353":7346,"7354":7346,"7355":7346,"7356":7346,"7357":7346,"7358":7346,"7359":7346,"7396":7392,"7397":7392,"7398":7392,"7399":7392,"7400":7392,"7401":7392,"7402":7392,"7403":7392,"7404":7392,"7405":7392,"7406":7392,"7407":7392,"7410":7408,"7411":7408,"7412":7408,"7413":7408,"7414":7408,"7415":7408,"7416":7408,"7417":7408,"7418":7408,"7419":7408,"7420":7408,"7421":7408,"7422":7408,"7423":7408,"7478":7472,"7479":7472,"7486":7472,"7487":7472,"7504":7218,"7505":7218,"7510":7218,"7511":7218,"7512":7218,"7513":7218,"7514":7218,"7515":7218,"7516":7218,"7517":7218,"7518":7218,"7519":7218}} \ No newline at end of file +{"knownStates":{"0":"Air","16":"Stone","17":"Granite","18":"Polished Granite","19":"Diorite","20":"Polished Diorite","21":"Andesite","22":"Polished Andesite","32":"Grass","48":"Dirt","49":"Dirt","64":"Cobblestone","80":"Oak Planks","81":"Spruce Planks","82":"Birch Planks","83":"Jungle Planks","84":"Acacia Planks","85":"Dark Oak Planks","96":"Oak Sapling","97":"Spruce Sapling","98":"Birch Sapling","99":"Jungle Sapling","100":"Acacia Sapling","101":"Dark Oak Sapling","104":"Oak Sapling","105":"Spruce Sapling","106":"Birch Sapling","107":"Jungle Sapling","108":"Acacia Sapling","109":"Dark Oak Sapling","112":"Bedrock","113":"Bedrock","128":"Water","129":"Water","130":"Water","131":"Water","132":"Water","133":"Water","134":"Water","135":"Water","136":"Water","137":"Water","138":"Water","139":"Water","140":"Water","141":"Water","142":"Water","143":"Water","144":"Water","145":"Water","146":"Water","147":"Water","148":"Water","149":"Water","150":"Water","151":"Water","152":"Water","153":"Water","154":"Water","155":"Water","156":"Water","157":"Water","158":"Water","159":"Water","160":"Lava","161":"Lava","162":"Lava","163":"Lava","164":"Lava","165":"Lava","166":"Lava","167":"Lava","168":"Lava","169":"Lava","170":"Lava","171":"Lava","172":"Lava","173":"Lava","174":"Lava","175":"Lava","176":"Lava","177":"Lava","178":"Lava","179":"Lava","180":"Lava","181":"Lava","182":"Lava","183":"Lava","184":"Lava","185":"Lava","186":"Lava","187":"Lava","188":"Lava","189":"Lava","190":"Lava","191":"Lava","192":"Sand","193":"Red Sand","208":"Gravel","224":"Gold Ore","240":"Iron Ore","256":"Coal Ore","272":"Oak Log","273":"Spruce Log","274":"Birch Log","275":"Jungle Log","276":"Oak Log","277":"Spruce Log","278":"Birch Log","279":"Jungle Log","280":"Oak Log","281":"Spruce Log","282":"Birch Log","283":"Jungle Log","288":"Oak Leaves","289":"Spruce Leaves","290":"Birch Leaves","291":"Jungle Leaves","292":"Oak Leaves","293":"Spruce Leaves","294":"Birch Leaves","295":"Jungle Leaves","296":"Oak Leaves","297":"Spruce Leaves","298":"Birch Leaves","299":"Jungle Leaves","300":"Oak Leaves","301":"Spruce Leaves","302":"Birch Leaves","303":"Jungle Leaves","304":"Sponge","305":"Sponge","320":"Glass","336":"Lapis Lazuli Ore","352":"Lapis Lazuli Block","384":"Sandstone","385":"Chiseled Sandstone","386":"Cut Sandstone","387":"Smooth Sandstone","400":"Note Block","416":"Bed Block","417":"Bed Block","418":"Bed Block","419":"Bed Block","420":"Bed Block","421":"Bed Block","422":"Bed Block","423":"Bed Block","424":"Bed Block","425":"Bed Block","426":"Bed Block","427":"Bed Block","428":"Bed Block","429":"Bed Block","430":"Bed Block","431":"Bed Block","432":"Powered Rail","433":"Powered Rail","434":"Powered Rail","435":"Powered Rail","436":"Powered Rail","437":"Powered Rail","440":"Powered Rail","441":"Powered Rail","442":"Powered Rail","443":"Powered Rail","444":"Powered Rail","445":"Powered Rail","448":"Detector Rail","449":"Detector Rail","450":"Detector Rail","451":"Detector Rail","452":"Detector Rail","453":"Detector Rail","456":"Detector Rail","457":"Detector Rail","458":"Detector Rail","459":"Detector Rail","460":"Detector Rail","461":"Detector Rail","480":"Cobweb","497":"Tall Grass","498":"Fern","512":"Dead Bush","560":"Wool","561":"Wool","562":"Wool","563":"Wool","564":"Wool","565":"Wool","566":"Wool","567":"Wool","568":"Wool","569":"Wool","570":"Wool","571":"Wool","572":"Wool","573":"Wool","574":"Wool","575":"Wool","576":"???","592":"Dandelion","608":"Poppy","609":"Blue Orchid","610":"Allium","611":"Azure Bluet","612":"Red Tulip","613":"Orange Tulip","614":"White Tulip","615":"Pink Tulip","616":"Oxeye Daisy","617":"Cornflower","618":"Lily of the Valley","624":"Brown Mushroom","640":"Red Mushroom","656":"Gold Block","672":"Iron Block","688":"Smooth Stone Slab","689":"Sandstone Slab","690":"Fake Wooden Slab","691":"Cobblestone Slab","692":"Brick Slab","693":"Stone Brick Slab","694":"Quartz Slab","695":"Nether Brick Slab","704":"Smooth Stone Slab","705":"Sandstone Slab","706":"Fake Wooden Slab","707":"Cobblestone Slab","708":"Brick Slab","709":"Stone Brick Slab","710":"Quartz Slab","711":"Nether Brick Slab","712":"Smooth Stone Slab","713":"Sandstone Slab","714":"Fake Wooden Slab","715":"Cobblestone Slab","716":"Brick Slab","717":"Stone Brick Slab","718":"Quartz Slab","719":"Nether Brick Slab","720":"Bricks","736":"TNT","737":"TNT","738":"TNT","739":"TNT","752":"Bookshelf","768":"Mossy Cobblestone","784":"Obsidian","801":"Torch","802":"Torch","803":"Torch","804":"Torch","805":"Torch","816":"Fire Block","817":"Fire Block","818":"Fire Block","819":"Fire Block","820":"Fire Block","821":"Fire Block","822":"Fire Block","823":"Fire Block","824":"Fire Block","825":"Fire Block","826":"Fire Block","827":"Fire Block","828":"Fire Block","829":"Fire Block","830":"Fire Block","831":"Fire Block","832":"Monster Spawner","848":"Oak Stairs","849":"Oak Stairs","850":"Oak Stairs","851":"Oak Stairs","852":"Oak Stairs","853":"Oak Stairs","854":"Oak Stairs","855":"Oak Stairs","866":"Chest","867":"Chest","868":"Chest","869":"Chest","880":"Redstone","881":"Redstone","882":"Redstone","883":"Redstone","884":"Redstone","885":"Redstone","886":"Redstone","887":"Redstone","888":"Redstone","889":"Redstone","890":"Redstone","891":"Redstone","892":"Redstone","893":"Redstone","894":"Redstone","895":"Redstone","896":"Diamond Ore","912":"Diamond Block","928":"Crafting Table","944":"Wheat Block","945":"Wheat Block","946":"Wheat Block","947":"Wheat Block","948":"Wheat Block","949":"Wheat Block","950":"Wheat Block","951":"Wheat Block","960":"Farmland","961":"Farmland","962":"Farmland","963":"Farmland","964":"Farmland","965":"Farmland","966":"Farmland","967":"Farmland","978":"Furnace","979":"Furnace","980":"Furnace","981":"Furnace","994":"Furnace","995":"Furnace","996":"Furnace","997":"Furnace","1008":"Oak Sign","1009":"Oak Sign","1010":"Oak Sign","1011":"Oak Sign","1012":"Oak Sign","1013":"Oak Sign","1014":"Oak Sign","1015":"Oak Sign","1016":"Oak Sign","1017":"Oak Sign","1018":"Oak Sign","1019":"Oak Sign","1020":"Oak Sign","1021":"Oak Sign","1022":"Oak Sign","1023":"Oak Sign","1024":"Oak Door","1025":"Oak Door","1026":"Oak Door","1027":"Oak Door","1028":"Oak Door","1029":"Oak Door","1030":"Oak Door","1031":"Oak Door","1032":"Oak Door","1033":"Oak Door","1042":"Ladder","1043":"Ladder","1044":"Ladder","1045":"Ladder","1056":"Rail","1057":"Rail","1058":"Rail","1059":"Rail","1060":"Rail","1061":"Rail","1062":"Rail","1063":"Rail","1064":"Rail","1065":"Rail","1072":"Cobblestone Stairs","1073":"Cobblestone Stairs","1074":"Cobblestone Stairs","1075":"Cobblestone Stairs","1076":"Cobblestone Stairs","1077":"Cobblestone Stairs","1078":"Cobblestone Stairs","1079":"Cobblestone Stairs","1090":"Oak Wall Sign","1091":"Oak Wall Sign","1092":"Oak Wall Sign","1093":"Oak Wall Sign","1104":"Lever","1105":"Lever","1106":"Lever","1107":"Lever","1108":"Lever","1109":"Lever","1110":"Lever","1111":"Lever","1112":"Lever","1113":"Lever","1114":"Lever","1115":"Lever","1116":"Lever","1117":"Lever","1118":"Lever","1119":"Lever","1120":"Stone Pressure Plate","1121":"Stone Pressure Plate","1136":"Iron Door","1137":"Iron Door","1138":"Iron Door","1139":"Iron Door","1140":"Iron Door","1141":"Iron Door","1142":"Iron Door","1143":"Iron Door","1144":"Iron Door","1145":"Iron Door","1152":"Oak Pressure Plate","1153":"Oak Pressure Plate","1168":"Redstone Ore","1184":"Redstone Ore","1201":"Redstone Torch","1202":"Redstone Torch","1203":"Redstone Torch","1204":"Redstone Torch","1205":"Redstone Torch","1217":"Redstone Torch","1218":"Redstone Torch","1219":"Redstone Torch","1220":"Redstone Torch","1221":"Redstone Torch","1232":"Stone Button","1233":"Stone Button","1234":"Stone Button","1235":"Stone Button","1236":"Stone Button","1237":"Stone Button","1240":"Stone Button","1241":"Stone Button","1242":"Stone Button","1243":"Stone Button","1244":"Stone Button","1245":"Stone Button","1248":"Snow Layer","1249":"Snow Layer","1250":"Snow Layer","1251":"Snow Layer","1252":"Snow Layer","1253":"Snow Layer","1254":"Snow Layer","1255":"Snow Layer","1264":"Ice","1280":"Snow Block","1296":"Cactus","1297":"Cactus","1298":"Cactus","1299":"Cactus","1300":"Cactus","1301":"Cactus","1302":"Cactus","1303":"Cactus","1304":"Cactus","1305":"Cactus","1306":"Cactus","1307":"Cactus","1308":"Cactus","1309":"Cactus","1310":"Cactus","1311":"Cactus","1312":"Clay Block","1328":"Sugarcane","1329":"Sugarcane","1330":"Sugarcane","1331":"Sugarcane","1332":"Sugarcane","1333":"Sugarcane","1334":"Sugarcane","1335":"Sugarcane","1336":"Sugarcane","1337":"Sugarcane","1338":"Sugarcane","1339":"Sugarcane","1340":"Sugarcane","1341":"Sugarcane","1342":"Sugarcane","1343":"Sugarcane","1344":"Jukebox","1360":"Oak Fence","1361":"Spruce Fence","1362":"Birch Fence","1363":"Jungle Fence","1364":"Acacia Fence","1365":"Dark Oak Fence","1376":"Pumpkin","1392":"Netherrack","1408":"Soul Sand","1424":"Glowstone","1441":"Nether Portal","1442":"Nether Portal","1456":"Jack o'Lantern","1457":"Jack o'Lantern","1458":"Jack o'Lantern","1459":"Jack o'Lantern","1472":"Cake","1473":"Cake","1474":"Cake","1475":"Cake","1476":"Cake","1477":"Cake","1478":"Cake","1488":"Redstone Repeater","1489":"Redstone Repeater","1490":"Redstone Repeater","1491":"Redstone Repeater","1492":"Redstone Repeater","1493":"Redstone Repeater","1494":"Redstone Repeater","1495":"Redstone Repeater","1496":"Redstone Repeater","1497":"Redstone Repeater","1498":"Redstone Repeater","1499":"Redstone Repeater","1500":"Redstone Repeater","1501":"Redstone Repeater","1502":"Redstone Repeater","1503":"Redstone Repeater","1504":"Redstone Repeater","1505":"Redstone Repeater","1506":"Redstone Repeater","1507":"Redstone Repeater","1508":"Redstone Repeater","1509":"Redstone Repeater","1510":"Redstone Repeater","1511":"Redstone Repeater","1512":"Redstone Repeater","1513":"Redstone Repeater","1514":"Redstone Repeater","1515":"Redstone Repeater","1516":"Redstone Repeater","1517":"Redstone Repeater","1518":"Redstone Repeater","1519":"Redstone Repeater","1520":"Invisible Bedrock","1536":"Oak Trapdoor","1537":"Oak Trapdoor","1538":"Oak Trapdoor","1539":"Oak Trapdoor","1540":"Oak Trapdoor","1541":"Oak Trapdoor","1542":"Oak Trapdoor","1543":"Oak Trapdoor","1544":"Oak Trapdoor","1545":"Oak Trapdoor","1546":"Oak Trapdoor","1547":"Oak Trapdoor","1548":"Oak Trapdoor","1549":"Oak Trapdoor","1550":"Oak Trapdoor","1551":"Oak Trapdoor","1552":"Infested Stone","1553":"Infested Cobblestone","1554":"Infested Stone Brick","1555":"Infested Mossy Stone Brick","1556":"Infested Cracked Stone Brick","1557":"Infested Chiseled Stone Brick","1568":"Stone Bricks","1569":"Mossy Stone Bricks","1570":"Cracked Stone Bricks","1571":"Chiseled Stone Bricks","1584":"Brown Mushroom Block","1585":"Brown Mushroom Block","1586":"Brown Mushroom Block","1587":"Brown Mushroom Block","1588":"Brown Mushroom Block","1589":"Brown Mushroom Block","1590":"Brown Mushroom Block","1591":"Brown Mushroom Block","1592":"Brown Mushroom Block","1593":"Brown Mushroom Block","1594":"Mushroom Stem","1598":"Brown Mushroom Block","1599":"All Sided Mushroom Stem","1600":"Red Mushroom Block","1601":"Red Mushroom Block","1602":"Red Mushroom Block","1603":"Red Mushroom Block","1604":"Red Mushroom Block","1605":"Red Mushroom Block","1606":"Red Mushroom Block","1607":"Red Mushroom Block","1608":"Red Mushroom Block","1609":"Red Mushroom Block","1614":"Red Mushroom Block","1616":"Iron Bars","1632":"Glass Pane","1648":"Melon Block","1664":"Pumpkin Stem","1665":"Pumpkin Stem","1666":"Pumpkin Stem","1667":"Pumpkin Stem","1668":"Pumpkin Stem","1669":"Pumpkin Stem","1670":"Pumpkin Stem","1671":"Pumpkin Stem","1680":"Melon Stem","1681":"Melon Stem","1682":"Melon Stem","1683":"Melon Stem","1684":"Melon Stem","1685":"Melon Stem","1686":"Melon Stem","1687":"Melon Stem","1696":"Vines","1697":"Vines","1698":"Vines","1699":"Vines","1700":"Vines","1701":"Vines","1702":"Vines","1703":"Vines","1704":"Vines","1705":"Vines","1706":"Vines","1707":"Vines","1708":"Vines","1709":"Vines","1710":"Vines","1711":"Vines","1712":"Oak Fence Gate","1713":"Oak Fence Gate","1714":"Oak Fence Gate","1715":"Oak Fence Gate","1716":"Oak Fence Gate","1717":"Oak Fence Gate","1718":"Oak Fence Gate","1719":"Oak Fence Gate","1720":"Oak Fence Gate","1721":"Oak Fence Gate","1722":"Oak Fence Gate","1723":"Oak Fence Gate","1724":"Oak Fence Gate","1725":"Oak Fence Gate","1726":"Oak Fence Gate","1727":"Oak Fence Gate","1728":"Brick Stairs","1729":"Brick Stairs","1730":"Brick Stairs","1731":"Brick Stairs","1732":"Brick Stairs","1733":"Brick Stairs","1734":"Brick Stairs","1735":"Brick Stairs","1744":"Stone Brick Stairs","1745":"Stone Brick Stairs","1746":"Stone Brick Stairs","1747":"Stone Brick Stairs","1748":"Stone Brick Stairs","1749":"Stone Brick Stairs","1750":"Stone Brick Stairs","1751":"Stone Brick Stairs","1760":"Mycelium","1776":"Lily Pad","1792":"Nether Bricks","1808":"Nether Brick Fence","1824":"Nether Brick Stairs","1825":"Nether Brick Stairs","1826":"Nether Brick Stairs","1827":"Nether Brick Stairs","1828":"Nether Brick Stairs","1829":"Nether Brick Stairs","1830":"Nether Brick Stairs","1831":"Nether Brick Stairs","1840":"Nether Wart","1841":"Nether Wart","1842":"Nether Wart","1843":"Nether Wart","1856":"Enchanting Table","1872":"Brewing Stand","1873":"Brewing Stand","1874":"Brewing Stand","1875":"Brewing Stand","1876":"Brewing Stand","1877":"Brewing Stand","1878":"Brewing Stand","1879":"Brewing Stand","1920":"End Portal Frame","1921":"End Portal Frame","1922":"End Portal Frame","1923":"End Portal Frame","1924":"End Portal Frame","1925":"End Portal Frame","1926":"End Portal Frame","1927":"End Portal Frame","1936":"End Stone","1952":"Dragon Egg","1968":"Redstone Lamp","1984":"Redstone Lamp","2016":"Activator Rail","2017":"Activator Rail","2018":"Activator Rail","2019":"Activator Rail","2020":"Activator Rail","2021":"Activator Rail","2024":"Activator Rail","2025":"Activator Rail","2026":"Activator Rail","2027":"Activator Rail","2028":"Activator Rail","2029":"Activator Rail","2032":"Cocoa Block","2033":"Cocoa Block","2034":"Cocoa Block","2035":"Cocoa Block","2036":"Cocoa Block","2037":"Cocoa Block","2038":"Cocoa Block","2039":"Cocoa Block","2040":"Cocoa Block","2041":"Cocoa Block","2042":"Cocoa Block","2043":"Cocoa Block","2048":"Sandstone Stairs","2049":"Sandstone Stairs","2050":"Sandstone Stairs","2051":"Sandstone Stairs","2052":"Sandstone Stairs","2053":"Sandstone Stairs","2054":"Sandstone Stairs","2055":"Sandstone Stairs","2064":"Emerald Ore","2082":"Ender Chest","2083":"Ender Chest","2084":"Ender Chest","2085":"Ender Chest","2096":"Tripwire Hook","2097":"Tripwire Hook","2098":"Tripwire Hook","2099":"Tripwire Hook","2100":"Tripwire Hook","2101":"Tripwire Hook","2102":"Tripwire Hook","2103":"Tripwire Hook","2104":"Tripwire Hook","2105":"Tripwire Hook","2106":"Tripwire Hook","2107":"Tripwire Hook","2108":"Tripwire Hook","2109":"Tripwire Hook","2110":"Tripwire Hook","2111":"Tripwire Hook","2112":"Tripwire","2113":"Tripwire","2114":"Tripwire","2115":"Tripwire","2116":"Tripwire","2117":"Tripwire","2118":"Tripwire","2119":"Tripwire","2120":"Tripwire","2121":"Tripwire","2122":"Tripwire","2123":"Tripwire","2124":"Tripwire","2125":"Tripwire","2126":"Tripwire","2127":"Tripwire","2128":"Emerald Block","2144":"Spruce Stairs","2145":"Spruce Stairs","2146":"Spruce Stairs","2147":"Spruce Stairs","2148":"Spruce Stairs","2149":"Spruce Stairs","2150":"Spruce Stairs","2151":"Spruce Stairs","2160":"Birch Stairs","2161":"Birch Stairs","2162":"Birch Stairs","2163":"Birch Stairs","2164":"Birch Stairs","2165":"Birch Stairs","2166":"Birch Stairs","2167":"Birch Stairs","2176":"Jungle Stairs","2177":"Jungle Stairs","2178":"Jungle Stairs","2179":"Jungle Stairs","2180":"Jungle Stairs","2181":"Jungle Stairs","2182":"Jungle Stairs","2183":"Jungle Stairs","2208":"Beacon","2224":"Cobblestone Wall","2225":"Mossy Cobblestone Wall","2226":"Granite Wall","2227":"Diorite Wall","2228":"Andesite Wall","2229":"Sandstone Wall","2230":"Brick Wall","2231":"Stone Brick Wall","2232":"Mossy Stone Brick Wall","2233":"Nether Brick Wall","2234":"End Stone Brick Wall","2235":"Prismarine Wall","2236":"Red Sandstone Wall","2237":"Red Nether Brick Wall","2240":"Flower Pot","2256":"Carrot Block","2257":"Carrot Block","2258":"Carrot Block","2259":"Carrot Block","2260":"Carrot Block","2261":"Carrot Block","2262":"Carrot Block","2263":"Carrot Block","2272":"Potato Block","2273":"Potato Block","2274":"Potato Block","2275":"Potato Block","2276":"Potato Block","2277":"Potato Block","2278":"Potato Block","2279":"Potato Block","2288":"Oak Button","2289":"Oak Button","2290":"Oak Button","2291":"Oak Button","2292":"Oak Button","2293":"Oak Button","2296":"Oak Button","2297":"Oak Button","2298":"Oak Button","2299":"Oak Button","2300":"Oak Button","2301":"Oak Button","2305":"Mob Head","2306":"Mob Head","2307":"Mob Head","2308":"Mob Head","2309":"Mob Head","2320":"Anvil","2321":"Anvil","2322":"Anvil","2323":"Anvil","2324":"Anvil","2325":"Anvil","2326":"Anvil","2327":"Anvil","2328":"Anvil","2329":"Anvil","2330":"Anvil","2331":"Anvil","2338":"Trapped Chest","2339":"Trapped Chest","2340":"Trapped Chest","2341":"Trapped Chest","2352":"Weighted Pressure Plate Light","2353":"Weighted Pressure Plate Light","2354":"Weighted Pressure Plate Light","2355":"Weighted Pressure Plate Light","2356":"Weighted Pressure Plate Light","2357":"Weighted Pressure Plate Light","2358":"Weighted Pressure Plate Light","2359":"Weighted Pressure Plate Light","2360":"Weighted Pressure Plate Light","2361":"Weighted Pressure Plate Light","2362":"Weighted Pressure Plate Light","2363":"Weighted Pressure Plate Light","2364":"Weighted Pressure Plate Light","2365":"Weighted Pressure Plate Light","2366":"Weighted Pressure Plate Light","2367":"Weighted Pressure Plate Light","2368":"Weighted Pressure Plate Heavy","2369":"Weighted Pressure Plate Heavy","2370":"Weighted Pressure Plate Heavy","2371":"Weighted Pressure Plate Heavy","2372":"Weighted Pressure Plate Heavy","2373":"Weighted Pressure Plate Heavy","2374":"Weighted Pressure Plate Heavy","2375":"Weighted Pressure Plate Heavy","2376":"Weighted Pressure Plate Heavy","2377":"Weighted Pressure Plate Heavy","2378":"Weighted Pressure Plate Heavy","2379":"Weighted Pressure Plate Heavy","2380":"Weighted Pressure Plate Heavy","2381":"Weighted Pressure Plate Heavy","2382":"Weighted Pressure Plate Heavy","2383":"Weighted Pressure Plate Heavy","2384":"Redstone Comparator","2385":"Redstone Comparator","2386":"Redstone Comparator","2387":"Redstone Comparator","2388":"Redstone Comparator","2389":"Redstone Comparator","2390":"Redstone Comparator","2391":"Redstone Comparator","2408":"Redstone Comparator","2409":"Redstone Comparator","2410":"Redstone Comparator","2411":"Redstone Comparator","2412":"Redstone Comparator","2413":"Redstone Comparator","2414":"Redstone Comparator","2415":"Redstone Comparator","2416":"Daylight Sensor","2417":"Daylight Sensor","2418":"Daylight Sensor","2419":"Daylight Sensor","2420":"Daylight Sensor","2421":"Daylight Sensor","2422":"Daylight Sensor","2423":"Daylight Sensor","2424":"Daylight Sensor","2425":"Daylight Sensor","2426":"Daylight Sensor","2427":"Daylight Sensor","2428":"Daylight Sensor","2429":"Daylight Sensor","2430":"Daylight Sensor","2431":"Daylight Sensor","2432":"Redstone Block","2448":"Nether Quartz Ore","2464":"Hopper","2466":"Hopper","2467":"Hopper","2468":"Hopper","2469":"Hopper","2472":"Hopper","2474":"Hopper","2475":"Hopper","2476":"Hopper","2477":"Hopper","2480":"Quartz Block","2481":"Chiseled Quartz Block","2482":"Quartz Pillar","2483":"Smooth Quartz Block","2485":"Chiseled Quartz Block","2486":"Quartz Pillar","2489":"Chiseled Quartz Block","2490":"Quartz Pillar","2496":"Quartz Stairs","2497":"Quartz Stairs","2498":"Quartz Stairs","2499":"Quartz Stairs","2500":"Quartz Stairs","2501":"Quartz Stairs","2502":"Quartz Stairs","2503":"Quartz Stairs","2512":"Oak Slab","2513":"Spruce Slab","2514":"Birch Slab","2515":"Jungle Slab","2516":"Acacia Slab","2517":"Dark Oak Slab","2528":"Oak Slab","2529":"Spruce Slab","2530":"Birch Slab","2531":"Jungle Slab","2532":"Acacia Slab","2533":"Dark Oak Slab","2536":"Oak Slab","2537":"Spruce Slab","2538":"Birch Slab","2539":"Jungle Slab","2540":"Acacia Slab","2541":"Dark Oak Slab","2544":"Stained Clay","2545":"Stained Clay","2546":"Stained Clay","2547":"Stained Clay","2548":"Stained Clay","2549":"Stained Clay","2550":"Stained Clay","2551":"Stained Clay","2552":"Stained Clay","2553":"Stained Clay","2554":"Stained Clay","2555":"Stained Clay","2556":"Stained Clay","2557":"Stained Clay","2558":"Stained Clay","2559":"Stained Clay","2560":"Stained Glass Pane","2561":"Stained Glass Pane","2562":"Stained Glass Pane","2563":"Stained Glass Pane","2564":"Stained Glass Pane","2565":"Stained Glass Pane","2566":"Stained Glass Pane","2567":"Stained Glass Pane","2568":"Stained Glass Pane","2569":"Stained Glass Pane","2570":"Stained Glass Pane","2571":"Stained Glass Pane","2572":"Stained Glass Pane","2573":"Stained Glass Pane","2574":"Stained Glass Pane","2575":"Stained Glass Pane","2576":"Acacia Leaves","2577":"Dark Oak Leaves","2580":"Acacia Leaves","2581":"Dark Oak Leaves","2584":"Acacia Leaves","2585":"Dark Oak Leaves","2588":"Acacia Leaves","2589":"Dark Oak Leaves","2592":"Acacia Log","2593":"Dark Oak Log","2596":"Acacia Log","2597":"Dark Oak Log","2600":"Acacia Log","2601":"Dark Oak Log","2608":"Acacia Stairs","2609":"Acacia Stairs","2610":"Acacia Stairs","2611":"Acacia Stairs","2612":"Acacia Stairs","2613":"Acacia Stairs","2614":"Acacia Stairs","2615":"Acacia Stairs","2624":"Dark Oak Stairs","2625":"Dark Oak Stairs","2626":"Dark Oak Stairs","2627":"Dark Oak Stairs","2628":"Dark Oak Stairs","2629":"Dark Oak Stairs","2630":"Dark Oak Stairs","2631":"Dark Oak Stairs","2640":"Slime Block","2672":"Iron Trapdoor","2673":"Iron Trapdoor","2674":"Iron Trapdoor","2675":"Iron Trapdoor","2676":"Iron Trapdoor","2677":"Iron Trapdoor","2678":"Iron Trapdoor","2679":"Iron Trapdoor","2680":"Iron Trapdoor","2681":"Iron Trapdoor","2682":"Iron Trapdoor","2683":"Iron Trapdoor","2684":"Iron Trapdoor","2685":"Iron Trapdoor","2686":"Iron Trapdoor","2687":"Iron Trapdoor","2688":"Prismarine","2689":"Dark Prismarine","2690":"Prismarine Bricks","2704":"Sea Lantern","2720":"Hay Bale","2724":"Hay Bale","2728":"Hay Bale","2736":"Carpet","2737":"Carpet","2738":"Carpet","2739":"Carpet","2740":"Carpet","2741":"Carpet","2742":"Carpet","2743":"Carpet","2744":"Carpet","2745":"Carpet","2746":"Carpet","2747":"Carpet","2748":"Carpet","2749":"Carpet","2750":"Carpet","2751":"Carpet","2752":"Hardened Clay","2768":"Coal Block","2784":"Packed Ice","2800":"Sunflower","2801":"Lilac","2802":"Double Tallgrass","2803":"Large Fern","2804":"Rose Bush","2805":"Peony","2808":"Sunflower","2809":"Lilac","2810":"Double Tallgrass","2811":"Large Fern","2812":"Rose Bush","2813":"Peony","2816":"Banner","2817":"Banner","2818":"Banner","2819":"Banner","2820":"Banner","2821":"Banner","2822":"Banner","2823":"Banner","2824":"Banner","2825":"Banner","2826":"Banner","2827":"Banner","2828":"Banner","2829":"Banner","2830":"Banner","2831":"Banner","2834":"Wall Banner","2835":"Wall Banner","2836":"Wall Banner","2837":"Wall Banner","2848":"Daylight Sensor","2849":"Daylight Sensor","2850":"Daylight Sensor","2851":"Daylight Sensor","2852":"Daylight Sensor","2853":"Daylight Sensor","2854":"Daylight Sensor","2855":"Daylight Sensor","2856":"Daylight Sensor","2857":"Daylight Sensor","2858":"Daylight Sensor","2859":"Daylight Sensor","2860":"Daylight Sensor","2861":"Daylight Sensor","2862":"Daylight Sensor","2863":"Daylight Sensor","2864":"Red Sandstone","2865":"Chiseled Red Sandstone","2866":"Cut Red Sandstone","2867":"Smooth Red Sandstone","2880":"Red Sandstone Stairs","2881":"Red Sandstone Stairs","2882":"Red Sandstone Stairs","2883":"Red Sandstone Stairs","2884":"Red Sandstone Stairs","2885":"Red Sandstone Stairs","2886":"Red Sandstone Stairs","2887":"Red Sandstone Stairs","2896":"Red Sandstone Slab","2897":"Purpur Slab","2898":"Prismarine Slab","2899":"Dark Prismarine Slab","2900":"Prismarine Bricks Slab","2901":"Mossy Cobblestone Slab","2902":"Smooth Sandstone Slab","2903":"Red Nether Brick Slab","2912":"Red Sandstone Slab","2913":"Purpur Slab","2914":"Prismarine Slab","2915":"Dark Prismarine Slab","2916":"Prismarine Bricks Slab","2917":"Mossy Cobblestone Slab","2918":"Smooth Sandstone Slab","2919":"Red Nether Brick Slab","2920":"Red Sandstone Slab","2921":"Purpur Slab","2922":"Prismarine Slab","2923":"Dark Prismarine Slab","2924":"Prismarine Bricks Slab","2925":"Mossy Cobblestone Slab","2926":"Smooth Sandstone Slab","2927":"Red Nether Brick Slab","2928":"Spruce Fence Gate","2929":"Spruce Fence Gate","2930":"Spruce Fence Gate","2931":"Spruce Fence Gate","2932":"Spruce Fence Gate","2933":"Spruce Fence Gate","2934":"Spruce Fence Gate","2935":"Spruce Fence Gate","2936":"Spruce Fence Gate","2937":"Spruce Fence Gate","2938":"Spruce Fence Gate","2939":"Spruce Fence Gate","2940":"Spruce Fence Gate","2941":"Spruce Fence Gate","2942":"Spruce Fence Gate","2943":"Spruce Fence Gate","2944":"Birch Fence Gate","2945":"Birch Fence Gate","2946":"Birch Fence Gate","2947":"Birch Fence Gate","2948":"Birch Fence Gate","2949":"Birch Fence Gate","2950":"Birch Fence Gate","2951":"Birch Fence Gate","2952":"Birch Fence Gate","2953":"Birch Fence Gate","2954":"Birch Fence Gate","2955":"Birch Fence Gate","2956":"Birch Fence Gate","2957":"Birch Fence Gate","2958":"Birch Fence Gate","2959":"Birch Fence Gate","2960":"Jungle Fence Gate","2961":"Jungle Fence Gate","2962":"Jungle Fence Gate","2963":"Jungle Fence Gate","2964":"Jungle Fence Gate","2965":"Jungle Fence Gate","2966":"Jungle Fence Gate","2967":"Jungle Fence Gate","2968":"Jungle Fence Gate","2969":"Jungle Fence Gate","2970":"Jungle Fence Gate","2971":"Jungle Fence Gate","2972":"Jungle Fence Gate","2973":"Jungle Fence Gate","2974":"Jungle Fence Gate","2975":"Jungle Fence Gate","2976":"Dark Oak Fence Gate","2977":"Dark Oak Fence Gate","2978":"Dark Oak Fence Gate","2979":"Dark Oak Fence Gate","2980":"Dark Oak Fence Gate","2981":"Dark Oak Fence Gate","2982":"Dark Oak Fence Gate","2983":"Dark Oak Fence Gate","2984":"Dark Oak Fence Gate","2985":"Dark Oak Fence Gate","2986":"Dark Oak Fence Gate","2987":"Dark Oak Fence Gate","2988":"Dark Oak Fence Gate","2989":"Dark Oak Fence Gate","2990":"Dark Oak Fence Gate","2991":"Dark Oak Fence Gate","2992":"Acacia Fence Gate","2993":"Acacia Fence Gate","2994":"Acacia Fence Gate","2995":"Acacia Fence Gate","2996":"Acacia Fence Gate","2997":"Acacia Fence Gate","2998":"Acacia Fence Gate","2999":"Acacia Fence Gate","3000":"Acacia Fence Gate","3001":"Acacia Fence Gate","3002":"Acacia Fence Gate","3003":"Acacia Fence Gate","3004":"Acacia Fence Gate","3005":"Acacia Fence Gate","3006":"Acacia Fence Gate","3007":"Acacia Fence Gate","3040":"Hardened Glass Pane","3056":"Stained Hardened Glass Pane","3057":"Stained Hardened Glass Pane","3058":"Stained Hardened Glass Pane","3059":"Stained Hardened Glass Pane","3060":"Stained Hardened Glass Pane","3061":"Stained Hardened Glass Pane","3062":"Stained Hardened Glass Pane","3063":"Stained Hardened Glass Pane","3064":"Stained Hardened Glass Pane","3065":"Stained Hardened Glass Pane","3066":"Stained Hardened Glass Pane","3067":"Stained Hardened Glass Pane","3068":"Stained Hardened Glass Pane","3069":"Stained Hardened Glass Pane","3070":"Stained Hardened Glass Pane","3071":"Stained Hardened Glass Pane","3072":"Heat Block","3088":"Spruce Door","3089":"Spruce Door","3090":"Spruce Door","3091":"Spruce Door","3092":"Spruce Door","3093":"Spruce Door","3094":"Spruce Door","3095":"Spruce Door","3096":"Spruce Door","3097":"Spruce Door","3104":"Birch Door","3105":"Birch Door","3106":"Birch Door","3107":"Birch Door","3108":"Birch Door","3109":"Birch Door","3110":"Birch Door","3111":"Birch Door","3112":"Birch Door","3113":"Birch Door","3120":"Jungle Door","3121":"Jungle Door","3122":"Jungle Door","3123":"Jungle Door","3124":"Jungle Door","3125":"Jungle Door","3126":"Jungle Door","3127":"Jungle Door","3128":"Jungle Door","3129":"Jungle Door","3136":"Acacia Door","3137":"Acacia Door","3138":"Acacia Door","3139":"Acacia Door","3140":"Acacia Door","3141":"Acacia Door","3142":"Acacia Door","3143":"Acacia Door","3144":"Acacia Door","3145":"Acacia Door","3152":"Dark Oak Door","3153":"Dark Oak Door","3154":"Dark Oak Door","3155":"Dark Oak Door","3156":"Dark Oak Door","3157":"Dark Oak Door","3158":"Dark Oak Door","3159":"Dark Oak Door","3160":"Dark Oak Door","3161":"Dark Oak Door","3168":"Grass Path","3184":"Item Frame","3185":"Item Frame","3186":"Item Frame","3187":"Item Frame","3188":"Item Frame","3189":"Item Frame","3190":"Item Frame","3191":"Item Frame","3216":"Purpur Block","3218":"Purpur Pillar","3222":"Purpur Pillar","3226":"Purpur Pillar","3233":"Red Torch","3234":"Red Torch","3235":"Red Torch","3236":"Red Torch","3237":"Red Torch","3241":"Green Torch","3242":"Green Torch","3243":"Green Torch","3244":"Green Torch","3245":"Green Torch","3248":"Purpur Stairs","3249":"Purpur Stairs","3250":"Purpur Stairs","3251":"Purpur Stairs","3252":"Purpur Stairs","3253":"Purpur Stairs","3254":"Purpur Stairs","3255":"Purpur Stairs","3265":"Blue Torch","3266":"Blue Torch","3267":"Blue Torch","3268":"Blue Torch","3269":"Blue Torch","3273":"Purple Torch","3274":"Purple Torch","3275":"Purple Torch","3276":"Purple Torch","3277":"Purple Torch","3280":"Shulker Box","3296":"End Stone Bricks","3312":"Frosted Ice","3313":"Frosted Ice","3314":"Frosted Ice","3315":"Frosted Ice","3328":"End Rod","3329":"End Rod","3330":"End Rod","3331":"End Rod","3332":"End Rod","3333":"End Rod","3408":"Magma Block","3424":"Nether Wart Block","3440":"Red Nether Bricks","3456":"Bone Block","3460":"Bone Block","3464":"Bone Block","3488":"Dyed Shulker Box","3489":"Dyed Shulker Box","3490":"Dyed Shulker Box","3491":"Dyed Shulker Box","3492":"Dyed Shulker Box","3493":"Dyed Shulker Box","3494":"Dyed Shulker Box","3495":"Dyed Shulker Box","3496":"Dyed Shulker Box","3497":"Dyed Shulker Box","3498":"Dyed Shulker Box","3499":"Dyed Shulker Box","3500":"Dyed Shulker Box","3501":"Dyed Shulker Box","3502":"Dyed Shulker Box","3503":"Dyed Shulker Box","3506":"Purple Glazed Terracotta","3507":"Purple Glazed Terracotta","3508":"Purple Glazed Terracotta","3509":"Purple Glazed Terracotta","3522":"White Glazed Terracotta","3523":"White Glazed Terracotta","3524":"White Glazed Terracotta","3525":"White Glazed Terracotta","3538":"Orange Glazed Terracotta","3539":"Orange Glazed Terracotta","3540":"Orange Glazed Terracotta","3541":"Orange Glazed Terracotta","3554":"Magenta Glazed Terracotta","3555":"Magenta Glazed Terracotta","3556":"Magenta Glazed Terracotta","3557":"Magenta Glazed Terracotta","3570":"Light Blue Glazed Terracotta","3571":"Light Blue Glazed Terracotta","3572":"Light Blue Glazed Terracotta","3573":"Light Blue Glazed Terracotta","3586":"Yellow Glazed Terracotta","3587":"Yellow Glazed Terracotta","3588":"Yellow Glazed Terracotta","3589":"Yellow Glazed Terracotta","3602":"Lime Glazed Terracotta","3603":"Lime Glazed Terracotta","3604":"Lime Glazed Terracotta","3605":"Lime Glazed Terracotta","3618":"Pink Glazed Terracotta","3619":"Pink Glazed Terracotta","3620":"Pink Glazed Terracotta","3621":"Pink Glazed Terracotta","3634":"Gray Glazed Terracotta","3635":"Gray Glazed Terracotta","3636":"Gray Glazed Terracotta","3637":"Gray Glazed Terracotta","3650":"Light Gray Glazed Terracotta","3651":"Light Gray Glazed Terracotta","3652":"Light Gray Glazed Terracotta","3653":"Light Gray Glazed Terracotta","3666":"Cyan Glazed Terracotta","3667":"Cyan Glazed Terracotta","3668":"Cyan Glazed Terracotta","3669":"Cyan Glazed Terracotta","3698":"Blue Glazed Terracotta","3699":"Blue Glazed Terracotta","3700":"Blue Glazed Terracotta","3701":"Blue Glazed Terracotta","3714":"Brown Glazed Terracotta","3715":"Brown Glazed Terracotta","3716":"Brown Glazed Terracotta","3717":"Brown Glazed Terracotta","3730":"Green Glazed Terracotta","3731":"Green Glazed Terracotta","3732":"Green Glazed Terracotta","3733":"Green Glazed Terracotta","3746":"Red Glazed Terracotta","3747":"Red Glazed Terracotta","3748":"Red Glazed Terracotta","3749":"Red Glazed Terracotta","3762":"Black Glazed Terracotta","3763":"Black Glazed Terracotta","3764":"Black Glazed Terracotta","3765":"Black Glazed Terracotta","3776":"Concrete","3777":"Concrete","3778":"Concrete","3779":"Concrete","3780":"Concrete","3781":"Concrete","3782":"Concrete","3783":"Concrete","3784":"Concrete","3785":"Concrete","3786":"Concrete","3787":"Concrete","3788":"Concrete","3789":"Concrete","3790":"Concrete","3791":"Concrete","3792":"Concrete Powder","3793":"Concrete Powder","3794":"Concrete Powder","3795":"Concrete Powder","3796":"Concrete Powder","3797":"Concrete Powder","3798":"Concrete Powder","3799":"Concrete Powder","3800":"Concrete Powder","3801":"Concrete Powder","3802":"Concrete Powder","3803":"Concrete Powder","3804":"Concrete Powder","3805":"Concrete Powder","3806":"Concrete Powder","3807":"Concrete Powder","3808":"Compound Creator","3809":"Compound Creator","3810":"Compound Creator","3811":"Compound Creator","3812":"Material Reducer","3813":"Material Reducer","3814":"Material Reducer","3815":"Material Reducer","3816":"Element Constructor","3817":"Element Constructor","3818":"Element Constructor","3819":"Element Constructor","3820":"Lab Table","3821":"Lab Table","3822":"Lab Table","3823":"Lab Table","3825":"Underwater Torch","3826":"Underwater Torch","3827":"Underwater Torch","3828":"Underwater Torch","3829":"Underwater Torch","3856":"Stained Glass","3857":"Stained Glass","3858":"Stained Glass","3859":"Stained Glass","3860":"Stained Glass","3861":"Stained Glass","3862":"Stained Glass","3863":"Stained Glass","3864":"Stained Glass","3865":"Stained Glass","3866":"Stained Glass","3867":"Stained Glass","3868":"Stained Glass","3869":"Stained Glass","3870":"Stained Glass","3871":"Stained Glass","3888":"Podzol","3904":"Beetroot Block","3905":"Beetroot Block","3906":"Beetroot Block","3907":"Beetroot Block","3908":"Beetroot Block","3909":"Beetroot Block","3910":"Beetroot Block","3911":"Beetroot Block","3920":"Stonecutter","3936":"Glowing Obsidian","3952":"Nether Reactor Core","3968":"update!","3984":"ate!upd","4048":"Hardened Glass","4064":"Stained Hardened Glass","4065":"Stained Hardened Glass","4066":"Stained Hardened Glass","4067":"Stained Hardened Glass","4068":"Stained Hardened Glass","4069":"Stained Hardened Glass","4070":"Stained Hardened Glass","4071":"Stained Hardened Glass","4072":"Stained Hardened Glass","4073":"Stained Hardened Glass","4074":"Stained Hardened Glass","4075":"Stained Hardened Glass","4076":"Stained Hardened Glass","4077":"Stained Hardened Glass","4078":"Stained Hardened Glass","4079":"Stained Hardened Glass","4080":"reserved6","4112":"Prismarine Stairs","4113":"Prismarine Stairs","4114":"Prismarine Stairs","4115":"Prismarine Stairs","4116":"Prismarine Stairs","4117":"Prismarine Stairs","4118":"Prismarine Stairs","4119":"Prismarine Stairs","4128":"Dark Prismarine Stairs","4129":"Dark Prismarine Stairs","4130":"Dark Prismarine Stairs","4131":"Dark Prismarine Stairs","4132":"Dark Prismarine Stairs","4133":"Dark Prismarine Stairs","4134":"Dark Prismarine Stairs","4135":"Dark Prismarine Stairs","4144":"Prismarine Bricks Stairs","4145":"Prismarine Bricks Stairs","4146":"Prismarine Bricks Stairs","4147":"Prismarine Bricks Stairs","4148":"Prismarine Bricks Stairs","4149":"Prismarine Bricks Stairs","4150":"Prismarine Bricks Stairs","4151":"Prismarine Bricks Stairs","4160":"Stripped Spruce Log","4161":"Stripped Spruce Log","4162":"Stripped Spruce Log","4176":"Stripped Birch Log","4177":"Stripped Birch Log","4178":"Stripped Birch Log","4192":"Stripped Jungle Log","4193":"Stripped Jungle Log","4194":"Stripped Jungle Log","4208":"Stripped Acacia Log","4209":"Stripped Acacia Log","4210":"Stripped Acacia Log","4224":"Stripped Dark Oak Log","4225":"Stripped Dark Oak Log","4226":"Stripped Dark Oak Log","4240":"Stripped Oak Log","4241":"Stripped Oak Log","4242":"Stripped Oak Log","4256":"Blue Ice","4272":"Hydrogen","4288":"Helium","4304":"Lithium","4320":"Beryllium","4336":"Boron","4352":"Carbon","4368":"Nitrogen","4384":"Oxygen","4400":"Fluorine","4416":"Neon","4432":"Sodium","4448":"Magnesium","4464":"Aluminum","4480":"Silicon","4496":"Phosphorus","4512":"Sulfur","4528":"Chlorine","4544":"Argon","4560":"Potassium","4576":"Calcium","4592":"Scandium","4608":"Titanium","4624":"Vanadium","4640":"Chromium","4656":"Manganese","4672":"Iron","4688":"Cobalt","4704":"Nickel","4720":"Copper","4736":"Zinc","4752":"Gallium","4768":"Germanium","4784":"Arsenic","4800":"Selenium","4816":"Bromine","4832":"Krypton","4848":"Rubidium","4864":"Strontium","4880":"Yttrium","4896":"Zirconium","4912":"Niobium","4928":"Molybdenum","4944":"Technetium","4960":"Ruthenium","4976":"Rhodium","4992":"Palladium","5008":"Silver","5024":"Cadmium","5040":"Indium","5056":"Tin","5072":"Antimony","5088":"Tellurium","5104":"Iodine","5120":"Xenon","5136":"Cesium","5152":"Barium","5168":"Lanthanum","5184":"Cerium","5200":"Praseodymium","5216":"Neodymium","5232":"Promethium","5248":"Samarium","5264":"Europium","5280":"Gadolinium","5296":"Terbium","5312":"Dysprosium","5328":"Holmium","5344":"Erbium","5360":"Thulium","5376":"Ytterbium","5392":"Lutetium","5408":"Hafnium","5424":"Tantalum","5440":"Tungsten","5456":"Rhenium","5472":"Osmium","5488":"Iridium","5504":"Platinum","5520":"Gold","5536":"Mercury","5552":"Thallium","5568":"Lead","5584":"Bismuth","5600":"Polonium","5616":"Astatine","5632":"Radon","5648":"Francium","5664":"Radium","5680":"Actinium","5696":"Thorium","5712":"Protactinium","5728":"Uranium","5744":"Neptunium","5760":"Plutonium","5776":"Americium","5792":"Curium","5808":"Berkelium","5824":"Californium","5840":"Einsteinium","5856":"Fermium","5872":"Mendelevium","5888":"Nobelium","5904":"Lawrencium","5920":"Rutherfordium","5936":"Dubnium","5952":"Seaborgium","5968":"Bohrium","5984":"Hassium","6000":"Meitnerium","6016":"Darmstadtium","6032":"Roentgenium","6048":"Copernicium","6064":"Nihonium","6080":"Flerovium","6096":"Moscovium","6112":"Livermorium","6128":"Tennessine","6144":"Oganesson","6176":"Coral","6177":"Coral","6178":"Coral","6179":"Coral","6180":"Coral","6192":"Coral Block","6193":"Coral Block","6194":"Coral Block","6195":"Coral Block","6196":"Coral Block","6200":"Coral Block","6201":"Coral Block","6202":"Coral Block","6203":"Coral Block","6204":"Coral Block","6208":"Coral Fan","6209":"Coral Fan","6210":"Coral Fan","6211":"Coral Fan","6212":"Coral Fan","6216":"Coral Fan","6217":"Coral Fan","6218":"Coral Fan","6219":"Coral Fan","6220":"Coral Fan","6224":"Coral Fan","6225":"Coral Fan","6226":"Coral Fan","6227":"Coral Fan","6228":"Coral Fan","6232":"Coral Fan","6233":"Coral Fan","6234":"Coral Fan","6235":"Coral Fan","6236":"Coral Fan","6240":"Wall Coral Fan","6241":"Wall Coral Fan","6242":"Wall Coral Fan","6243":"Wall Coral Fan","6244":"Wall Coral Fan","6245":"Wall Coral Fan","6246":"Wall Coral Fan","6247":"Wall Coral Fan","6248":"Wall Coral Fan","6249":"Wall Coral Fan","6250":"Wall Coral Fan","6251":"Wall Coral Fan","6252":"Wall Coral Fan","6253":"Wall Coral Fan","6254":"Wall Coral Fan","6255":"Wall Coral Fan","6256":"Wall Coral Fan","6257":"Wall Coral Fan","6258":"Wall Coral Fan","6259":"Wall Coral Fan","6260":"Wall Coral Fan","6261":"Wall Coral Fan","6262":"Wall Coral Fan","6263":"Wall Coral Fan","6264":"Wall Coral Fan","6265":"Wall Coral Fan","6266":"Wall Coral Fan","6267":"Wall Coral Fan","6268":"Wall Coral Fan","6269":"Wall Coral Fan","6270":"Wall Coral Fan","6271":"Wall Coral Fan","6272":"Wall Coral Fan","6274":"Wall Coral Fan","6276":"Wall Coral Fan","6278":"Wall Coral Fan","6280":"Wall Coral Fan","6282":"Wall Coral Fan","6284":"Wall Coral Fan","6286":"Wall Coral Fan","6304":"Dried Kelp Block","6320":"Acacia Button","6321":"Acacia Button","6322":"Acacia Button","6323":"Acacia Button","6324":"Acacia Button","6325":"Acacia Button","6328":"Acacia Button","6329":"Acacia Button","6330":"Acacia Button","6331":"Acacia Button","6332":"Acacia Button","6333":"Acacia Button","6336":"Birch Button","6337":"Birch Button","6338":"Birch Button","6339":"Birch Button","6340":"Birch Button","6341":"Birch Button","6344":"Birch Button","6345":"Birch Button","6346":"Birch Button","6347":"Birch Button","6348":"Birch Button","6349":"Birch Button","6352":"Dark Oak Button","6353":"Dark Oak Button","6354":"Dark Oak Button","6355":"Dark Oak Button","6356":"Dark Oak Button","6357":"Dark Oak Button","6360":"Dark Oak Button","6361":"Dark Oak Button","6362":"Dark Oak Button","6363":"Dark Oak Button","6364":"Dark Oak Button","6365":"Dark Oak Button","6368":"Jungle Button","6369":"Jungle Button","6370":"Jungle Button","6371":"Jungle Button","6372":"Jungle Button","6373":"Jungle Button","6376":"Jungle Button","6377":"Jungle Button","6378":"Jungle Button","6379":"Jungle Button","6380":"Jungle Button","6381":"Jungle Button","6384":"Spruce Button","6385":"Spruce Button","6386":"Spruce Button","6387":"Spruce Button","6388":"Spruce Button","6389":"Spruce Button","6392":"Spruce Button","6393":"Spruce Button","6394":"Spruce Button","6395":"Spruce Button","6396":"Spruce Button","6397":"Spruce Button","6400":"Acacia Trapdoor","6401":"Acacia Trapdoor","6402":"Acacia Trapdoor","6403":"Acacia Trapdoor","6404":"Acacia Trapdoor","6405":"Acacia Trapdoor","6406":"Acacia Trapdoor","6407":"Acacia Trapdoor","6408":"Acacia Trapdoor","6409":"Acacia Trapdoor","6410":"Acacia Trapdoor","6411":"Acacia Trapdoor","6412":"Acacia Trapdoor","6413":"Acacia Trapdoor","6414":"Acacia Trapdoor","6415":"Acacia Trapdoor","6416":"Birch Trapdoor","6417":"Birch Trapdoor","6418":"Birch Trapdoor","6419":"Birch Trapdoor","6420":"Birch Trapdoor","6421":"Birch Trapdoor","6422":"Birch Trapdoor","6423":"Birch Trapdoor","6424":"Birch Trapdoor","6425":"Birch Trapdoor","6426":"Birch Trapdoor","6427":"Birch Trapdoor","6428":"Birch Trapdoor","6429":"Birch Trapdoor","6430":"Birch Trapdoor","6431":"Birch Trapdoor","6432":"Dark Oak Trapdoor","6433":"Dark Oak Trapdoor","6434":"Dark Oak Trapdoor","6435":"Dark Oak Trapdoor","6436":"Dark Oak Trapdoor","6437":"Dark Oak Trapdoor","6438":"Dark Oak Trapdoor","6439":"Dark Oak Trapdoor","6440":"Dark Oak Trapdoor","6441":"Dark Oak Trapdoor","6442":"Dark Oak Trapdoor","6443":"Dark Oak Trapdoor","6444":"Dark Oak Trapdoor","6445":"Dark Oak Trapdoor","6446":"Dark Oak Trapdoor","6447":"Dark Oak Trapdoor","6448":"Jungle Trapdoor","6449":"Jungle Trapdoor","6450":"Jungle Trapdoor","6451":"Jungle Trapdoor","6452":"Jungle Trapdoor","6453":"Jungle Trapdoor","6454":"Jungle Trapdoor","6455":"Jungle Trapdoor","6456":"Jungle Trapdoor","6457":"Jungle Trapdoor","6458":"Jungle Trapdoor","6459":"Jungle Trapdoor","6460":"Jungle Trapdoor","6461":"Jungle Trapdoor","6462":"Jungle Trapdoor","6463":"Jungle Trapdoor","6464":"Spruce Trapdoor","6465":"Spruce Trapdoor","6466":"Spruce Trapdoor","6467":"Spruce Trapdoor","6468":"Spruce Trapdoor","6469":"Spruce Trapdoor","6470":"Spruce Trapdoor","6471":"Spruce Trapdoor","6472":"Spruce Trapdoor","6473":"Spruce Trapdoor","6474":"Spruce Trapdoor","6475":"Spruce Trapdoor","6476":"Spruce Trapdoor","6477":"Spruce Trapdoor","6478":"Spruce Trapdoor","6479":"Spruce Trapdoor","6480":"Acacia Pressure Plate","6481":"Acacia Pressure Plate","6496":"Birch Pressure Plate","6497":"Birch Pressure Plate","6512":"Dark Oak Pressure Plate","6513":"Dark Oak Pressure Plate","6528":"Jungle Pressure Plate","6529":"Jungle Pressure Plate","6544":"Spruce Pressure Plate","6545":"Spruce Pressure Plate","6560":"Carved Pumpkin","6561":"Carved Pumpkin","6562":"Carved Pumpkin","6563":"Carved Pumpkin","6576":"Sea Pickle","6577":"Sea Pickle","6578":"Sea Pickle","6579":"Sea Pickle","6580":"Sea Pickle","6581":"Sea Pickle","6582":"Sea Pickle","6583":"Sea Pickle","6656":"Barrier","6672":"End Stone Brick Slab","6673":"Smooth Red Sandstone Slab","6674":"Polished Andesite Slab","6675":"Andesite Slab","6676":"Diorite Slab","6677":"Polished Diorite Slab","6678":"Granite Slab","6679":"Polished Granite Slab","6680":"End Stone Brick Slab","6681":"Smooth Red Sandstone Slab","6682":"Polished Andesite Slab","6683":"Andesite Slab","6684":"Diorite Slab","6685":"Polished Diorite Slab","6686":"Granite Slab","6687":"Polished Granite Slab","6688":"Bamboo","6689":"Bamboo","6690":"Bamboo","6691":"Bamboo","6692":"Bamboo","6693":"Bamboo","6696":"Bamboo","6697":"Bamboo","6698":"Bamboo","6699":"Bamboo","6700":"Bamboo","6701":"Bamboo","6704":"Bamboo Sapling","6705":"Bamboo Sapling","6736":"Mossy Stone Brick Slab","6737":"Smooth Quartz Slab","6738":"Stone Slab","6739":"Cut Sandstone Slab","6740":"Cut Red Sandstone Slab","6744":"Mossy Stone Brick Slab","6745":"Smooth Quartz Slab","6746":"Stone Slab","6747":"Cut Sandstone Slab","6748":"Cut Red Sandstone Slab","6752":"End Stone Brick Slab","6753":"Smooth Red Sandstone Slab","6754":"Polished Andesite Slab","6755":"Andesite Slab","6756":"Diorite Slab","6757":"Polished Diorite Slab","6758":"Granite Slab","6759":"Polished Granite Slab","6768":"Mossy Stone Brick Slab","6769":"Smooth Quartz Slab","6770":"Stone Slab","6771":"Cut Sandstone Slab","6772":"Cut Red Sandstone Slab","6784":"Granite Stairs","6785":"Granite Stairs","6786":"Granite Stairs","6787":"Granite Stairs","6788":"Granite Stairs","6789":"Granite Stairs","6790":"Granite Stairs","6791":"Granite Stairs","6800":"Diorite Stairs","6801":"Diorite Stairs","6802":"Diorite Stairs","6803":"Diorite Stairs","6804":"Diorite Stairs","6805":"Diorite Stairs","6806":"Diorite Stairs","6807":"Diorite Stairs","6816":"Andesite Stairs","6817":"Andesite Stairs","6818":"Andesite Stairs","6819":"Andesite Stairs","6820":"Andesite Stairs","6821":"Andesite Stairs","6822":"Andesite Stairs","6823":"Andesite Stairs","6832":"Polished Granite Stairs","6833":"Polished Granite Stairs","6834":"Polished Granite Stairs","6835":"Polished Granite Stairs","6836":"Polished Granite Stairs","6837":"Polished Granite Stairs","6838":"Polished Granite Stairs","6839":"Polished Granite Stairs","6848":"Polished Diorite Stairs","6849":"Polished Diorite Stairs","6850":"Polished Diorite Stairs","6851":"Polished Diorite Stairs","6852":"Polished Diorite Stairs","6853":"Polished Diorite Stairs","6854":"Polished Diorite Stairs","6855":"Polished Diorite Stairs","6864":"Polished Andesite Stairs","6865":"Polished Andesite Stairs","6866":"Polished Andesite Stairs","6867":"Polished Andesite Stairs","6868":"Polished Andesite Stairs","6869":"Polished Andesite Stairs","6870":"Polished Andesite Stairs","6871":"Polished Andesite Stairs","6880":"Mossy Stone Brick Stairs","6881":"Mossy Stone Brick Stairs","6882":"Mossy Stone Brick Stairs","6883":"Mossy Stone Brick Stairs","6884":"Mossy Stone Brick Stairs","6885":"Mossy Stone Brick Stairs","6886":"Mossy Stone Brick Stairs","6887":"Mossy Stone Brick Stairs","6896":"Smooth Red Sandstone Stairs","6897":"Smooth Red Sandstone Stairs","6898":"Smooth Red Sandstone Stairs","6899":"Smooth Red Sandstone Stairs","6900":"Smooth Red Sandstone Stairs","6901":"Smooth Red Sandstone Stairs","6902":"Smooth Red Sandstone Stairs","6903":"Smooth Red Sandstone Stairs","6912":"Smooth Sandstone Stairs","6913":"Smooth Sandstone Stairs","6914":"Smooth Sandstone Stairs","6915":"Smooth Sandstone Stairs","6916":"Smooth Sandstone Stairs","6917":"Smooth Sandstone Stairs","6918":"Smooth Sandstone Stairs","6919":"Smooth Sandstone Stairs","6928":"End Stone Brick Stairs","6929":"End Stone Brick Stairs","6930":"End Stone Brick Stairs","6931":"End Stone Brick Stairs","6932":"End Stone Brick Stairs","6933":"End Stone Brick Stairs","6934":"End Stone Brick Stairs","6935":"End Stone Brick Stairs","6944":"Mossy Cobblestone Stairs","6945":"Mossy Cobblestone Stairs","6946":"Mossy Cobblestone Stairs","6947":"Mossy Cobblestone Stairs","6948":"Mossy Cobblestone Stairs","6949":"Mossy Cobblestone Stairs","6950":"Mossy Cobblestone Stairs","6951":"Mossy Cobblestone Stairs","6960":"Stone Stairs","6961":"Stone Stairs","6962":"Stone Stairs","6963":"Stone Stairs","6964":"Stone Stairs","6965":"Stone Stairs","6966":"Stone Stairs","6967":"Stone Stairs","6976":"Spruce Sign","6977":"Spruce Sign","6978":"Spruce Sign","6979":"Spruce Sign","6980":"Spruce Sign","6981":"Spruce Sign","6982":"Spruce Sign","6983":"Spruce Sign","6984":"Spruce Sign","6985":"Spruce Sign","6986":"Spruce Sign","6987":"Spruce Sign","6988":"Spruce Sign","6989":"Spruce Sign","6990":"Spruce Sign","6991":"Spruce Sign","6994":"Spruce Wall Sign","6995":"Spruce Wall Sign","6996":"Spruce Wall Sign","6997":"Spruce Wall Sign","7008":"Smooth Stone","7024":"Red Nether Brick Stairs","7025":"Red Nether Brick Stairs","7026":"Red Nether Brick Stairs","7027":"Red Nether Brick Stairs","7028":"Red Nether Brick Stairs","7029":"Red Nether Brick Stairs","7030":"Red Nether Brick Stairs","7031":"Red Nether Brick Stairs","7040":"Smooth Quartz Stairs","7041":"Smooth Quartz Stairs","7042":"Smooth Quartz Stairs","7043":"Smooth Quartz Stairs","7044":"Smooth Quartz Stairs","7045":"Smooth Quartz Stairs","7046":"Smooth Quartz Stairs","7047":"Smooth Quartz Stairs","7056":"Birch Sign","7057":"Birch Sign","7058":"Birch Sign","7059":"Birch Sign","7060":"Birch Sign","7061":"Birch Sign","7062":"Birch Sign","7063":"Birch Sign","7064":"Birch Sign","7065":"Birch Sign","7066":"Birch Sign","7067":"Birch Sign","7068":"Birch Sign","7069":"Birch Sign","7070":"Birch Sign","7071":"Birch Sign","7074":"Birch Wall Sign","7075":"Birch Wall Sign","7076":"Birch Wall Sign","7077":"Birch Wall Sign","7088":"Jungle Sign","7089":"Jungle Sign","7090":"Jungle Sign","7091":"Jungle Sign","7092":"Jungle Sign","7093":"Jungle Sign","7094":"Jungle Sign","7095":"Jungle Sign","7096":"Jungle Sign","7097":"Jungle Sign","7098":"Jungle Sign","7099":"Jungle Sign","7100":"Jungle Sign","7101":"Jungle Sign","7102":"Jungle Sign","7103":"Jungle Sign","7106":"Jungle Wall Sign","7107":"Jungle Wall Sign","7108":"Jungle Wall Sign","7109":"Jungle Wall Sign","7120":"Acacia Sign","7121":"Acacia Sign","7122":"Acacia Sign","7123":"Acacia Sign","7124":"Acacia Sign","7125":"Acacia Sign","7126":"Acacia Sign","7127":"Acacia Sign","7128":"Acacia Sign","7129":"Acacia Sign","7130":"Acacia Sign","7131":"Acacia Sign","7132":"Acacia Sign","7133":"Acacia Sign","7134":"Acacia Sign","7135":"Acacia Sign","7138":"Acacia Wall Sign","7139":"Acacia Wall Sign","7140":"Acacia Wall Sign","7141":"Acacia Wall Sign","7152":"Dark Oak Sign","7153":"Dark Oak Sign","7154":"Dark Oak Sign","7155":"Dark Oak Sign","7156":"Dark Oak Sign","7157":"Dark Oak Sign","7158":"Dark Oak Sign","7159":"Dark Oak Sign","7160":"Dark Oak Sign","7161":"Dark Oak Sign","7162":"Dark Oak Sign","7163":"Dark Oak Sign","7164":"Dark Oak Sign","7165":"Dark Oak Sign","7166":"Dark Oak Sign","7167":"Dark Oak Sign","7170":"Dark Oak Wall Sign","7171":"Dark Oak Wall Sign","7172":"Dark Oak Wall Sign","7173":"Dark Oak Wall Sign","7184":"Lectern","7185":"Lectern","7186":"Lectern","7187":"Lectern","7188":"Lectern","7189":"Lectern","7190":"Lectern","7191":"Lectern","7218":"Blast Furnace","7219":"Blast Furnace","7220":"Blast Furnace","7221":"Blast Furnace","7250":"Smoker","7251":"Smoker","7252":"Smoker","7253":"Smoker","7266":"Smoker","7267":"Smoker","7268":"Smoker","7269":"Smoker","7296":"Fletching Table","7328":"Barrel","7329":"Barrel","7330":"Barrel","7331":"Barrel","7332":"Barrel","7333":"Barrel","7336":"Barrel","7337":"Barrel","7338":"Barrel","7339":"Barrel","7340":"Barrel","7341":"Barrel","7344":"Loom","7345":"Loom","7346":"Loom","7347":"Loom","7376":"Bell","7377":"Bell","7378":"Bell","7379":"Bell","7380":"Bell","7381":"Bell","7382":"Bell","7383":"Bell","7384":"Bell","7385":"Bell","7386":"Bell","7387":"Bell","7388":"Bell","7389":"Bell","7390":"Bell","7391":"Bell","7392":"Sweet Berry Bush","7393":"Sweet Berry Bush","7394":"Sweet Berry Bush","7395":"Sweet Berry Bush","7408":"Lantern","7409":"Lantern","7472":"Oak Wood","7473":"Spruce Wood","7474":"Birch Wood","7475":"Jungle Wood","7476":"Acacia Wood","7477":"Dark Oak Wood","7480":"Stripped Oak Wood","7481":"Stripped Spruce Wood","7482":"Stripped Birch Wood","7483":"Stripped Jungle Wood","7484":"Stripped Acacia Wood","7485":"Stripped Dark Oak Wood","7506":"Blast Furnace","7507":"Blast Furnace","7508":"Blast Furnace","7509":"Blast Furnace"},"remaps":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"23":16,"24":16,"25":16,"26":16,"27":16,"28":16,"29":16,"30":16,"31":16,"33":32,"34":32,"35":32,"36":32,"37":32,"38":32,"39":32,"40":32,"41":32,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"50":48,"51":48,"52":48,"53":48,"54":48,"55":48,"56":48,"57":48,"58":48,"59":48,"60":48,"61":48,"62":48,"63":48,"65":64,"66":64,"67":64,"68":64,"69":64,"70":64,"71":64,"72":64,"73":64,"74":64,"75":64,"76":64,"77":64,"78":64,"79":64,"86":80,"87":80,"88":80,"89":80,"90":80,"91":80,"92":80,"93":80,"94":80,"95":80,"102":96,"103":96,"110":96,"111":96,"114":112,"115":112,"116":112,"117":112,"118":112,"119":112,"120":112,"121":112,"122":112,"123":112,"124":112,"125":112,"126":112,"127":112,"194":192,"195":192,"196":192,"197":192,"198":192,"199":192,"200":192,"201":192,"202":192,"203":192,"204":192,"205":192,"206":192,"207":192,"209":208,"210":208,"211":208,"212":208,"213":208,"214":208,"215":208,"216":208,"217":208,"218":208,"219":208,"220":208,"221":208,"222":208,"223":208,"225":224,"226":224,"227":224,"228":224,"229":224,"230":224,"231":224,"232":224,"233":224,"234":224,"235":224,"236":224,"237":224,"238":224,"239":224,"241":240,"242":240,"243":240,"244":240,"245":240,"246":240,"247":240,"248":240,"249":240,"250":240,"251":240,"252":240,"253":240,"254":240,"255":240,"257":256,"258":256,"259":256,"260":256,"261":256,"262":256,"263":256,"264":256,"265":256,"266":256,"267":256,"268":256,"269":256,"270":256,"271":256,"284":7472,"285":7473,"286":7474,"287":7475,"306":304,"307":304,"308":304,"309":304,"310":304,"311":304,"312":304,"313":304,"314":304,"315":304,"316":304,"317":304,"318":304,"319":304,"321":320,"322":320,"323":320,"324":320,"325":320,"326":320,"327":320,"328":320,"329":320,"330":320,"331":320,"332":320,"333":320,"334":320,"335":320,"337":336,"338":336,"339":336,"340":336,"341":336,"342":336,"343":336,"344":336,"345":336,"346":336,"347":336,"348":336,"349":336,"350":336,"351":336,"353":352,"354":352,"355":352,"356":352,"357":352,"358":352,"359":352,"360":352,"361":352,"362":352,"363":352,"364":352,"365":352,"366":352,"367":352,"388":384,"389":384,"390":384,"391":384,"392":384,"393":384,"394":384,"395":384,"396":384,"397":384,"398":384,"399":384,"401":400,"402":400,"403":400,"404":400,"405":400,"406":400,"407":400,"408":400,"409":400,"410":400,"411":400,"412":400,"413":400,"414":400,"415":400,"438":432,"439":432,"446":432,"447":432,"454":448,"455":448,"462":448,"463":448,"481":480,"482":480,"483":480,"484":480,"485":480,"486":480,"487":480,"488":480,"489":480,"490":480,"491":480,"492":480,"493":480,"494":480,"495":480,"496":498,"499":498,"500":498,"501":498,"502":498,"503":498,"504":498,"505":498,"506":498,"507":498,"508":498,"509":498,"510":498,"511":498,"513":512,"514":512,"515":512,"516":512,"517":512,"518":512,"519":512,"520":512,"521":512,"522":512,"523":512,"524":512,"525":512,"526":512,"527":512,"577":576,"578":576,"579":576,"580":576,"581":576,"582":576,"583":576,"584":576,"585":576,"586":576,"587":576,"588":576,"589":576,"590":576,"591":576,"593":592,"594":592,"595":592,"596":592,"597":592,"598":592,"599":592,"600":592,"601":592,"602":592,"603":592,"604":592,"605":592,"606":592,"607":592,"619":608,"620":608,"621":608,"622":608,"623":608,"625":624,"626":624,"627":624,"628":624,"629":624,"630":624,"631":624,"632":624,"633":624,"634":624,"635":624,"636":624,"637":624,"638":624,"639":624,"641":640,"642":640,"643":640,"644":640,"645":640,"646":640,"647":640,"648":640,"649":640,"650":640,"651":640,"652":640,"653":640,"654":640,"655":640,"657":656,"658":656,"659":656,"660":656,"661":656,"662":656,"663":656,"664":656,"665":656,"666":656,"667":656,"668":656,"669":656,"670":656,"671":656,"673":672,"674":672,"675":672,"676":672,"677":672,"678":672,"679":672,"680":672,"681":672,"682":672,"683":672,"684":672,"685":672,"686":672,"687":672,"696":688,"697":689,"698":690,"699":691,"700":692,"701":693,"702":694,"703":695,"721":720,"722":720,"723":720,"724":720,"725":720,"726":720,"727":720,"728":720,"729":720,"730":720,"731":720,"732":720,"733":720,"734":720,"735":720,"740":736,"741":736,"742":736,"743":736,"744":736,"745":736,"746":736,"747":736,"748":736,"749":736,"750":736,"751":736,"753":752,"754":752,"755":752,"756":752,"757":752,"758":752,"759":752,"760":752,"761":752,"762":752,"763":752,"764":752,"765":752,"766":752,"767":752,"769":768,"770":768,"771":768,"772":768,"773":768,"774":768,"775":768,"776":768,"777":768,"778":768,"779":768,"780":768,"781":768,"782":768,"783":768,"785":784,"786":784,"787":784,"788":784,"789":784,"790":784,"791":784,"792":784,"793":784,"794":784,"795":784,"796":784,"797":784,"798":784,"799":784,"800":805,"806":805,"807":805,"808":805,"809":805,"810":805,"811":805,"812":805,"813":805,"814":805,"815":805,"833":832,"834":832,"835":832,"836":832,"837":832,"838":832,"839":832,"840":832,"841":832,"842":832,"843":832,"844":832,"845":832,"846":832,"847":832,"856":851,"857":851,"858":851,"859":851,"860":851,"861":851,"862":851,"863":851,"864":866,"865":866,"870":866,"871":866,"872":866,"873":866,"874":866,"875":866,"876":866,"877":866,"878":866,"879":866,"897":896,"898":896,"899":896,"900":896,"901":896,"902":896,"903":896,"904":896,"905":896,"906":896,"907":896,"908":896,"909":896,"910":896,"911":896,"913":912,"914":912,"915":912,"916":912,"917":912,"918":912,"919":912,"920":912,"921":912,"922":912,"923":912,"924":912,"925":912,"926":912,"927":912,"929":928,"930":928,"931":928,"932":928,"933":928,"934":928,"935":928,"936":928,"937":928,"938":928,"939":928,"940":928,"941":928,"942":928,"943":928,"952":944,"953":944,"954":944,"955":944,"956":944,"957":944,"958":944,"959":944,"968":960,"969":960,"970":960,"971":960,"972":960,"973":960,"974":960,"975":960,"976":978,"977":978,"982":978,"983":978,"984":978,"985":978,"986":978,"987":978,"988":978,"989":978,"990":978,"991":978,"992":978,"993":978,"998":978,"999":978,"1000":978,"1001":978,"1002":978,"1003":978,"1004":978,"1005":978,"1006":978,"1007":978,"1034":1027,"1035":1027,"1036":1027,"1037":1027,"1038":1027,"1039":1027,"1040":1042,"1041":1042,"1046":1042,"1047":1042,"1048":1042,"1049":1042,"1050":1042,"1051":1042,"1052":1042,"1053":1042,"1054":1042,"1055":1042,"1066":1056,"1067":1056,"1068":1056,"1069":1056,"1070":1056,"1071":1056,"1080":1075,"1081":1075,"1082":1075,"1083":1075,"1084":1075,"1085":1075,"1086":1075,"1087":1075,"1088":1090,"1089":1090,"1094":1090,"1095":1090,"1096":1090,"1097":1090,"1098":1090,"1099":1090,"1100":1090,"1101":1090,"1102":1090,"1103":1090,"1122":1120,"1123":1120,"1124":1120,"1125":1120,"1126":1120,"1127":1120,"1128":1120,"1129":1120,"1130":1120,"1131":1120,"1132":1120,"1133":1120,"1134":1120,"1135":1120,"1146":1139,"1147":1139,"1148":1139,"1149":1139,"1150":1139,"1151":1139,"1154":1152,"1155":1152,"1156":1152,"1157":1152,"1158":1152,"1159":1152,"1160":1152,"1161":1152,"1162":1152,"1163":1152,"1164":1152,"1165":1152,"1166":1152,"1167":1152,"1169":1168,"1170":1168,"1171":1168,"1172":1168,"1173":1168,"1174":1168,"1175":1168,"1176":1168,"1177":1168,"1178":1168,"1179":1168,"1180":1168,"1181":1168,"1182":1168,"1183":1168,"1185":1168,"1186":1168,"1187":1168,"1188":1168,"1189":1168,"1190":1168,"1191":1168,"1192":1168,"1193":1168,"1194":1168,"1195":1168,"1196":1168,"1197":1168,"1198":1168,"1199":1168,"1200":1221,"1206":1221,"1207":1221,"1208":1221,"1209":1221,"1210":1221,"1211":1221,"1212":1221,"1213":1221,"1214":1221,"1215":1221,"1216":1221,"1222":1221,"1223":1221,"1224":1221,"1225":1221,"1226":1221,"1227":1221,"1228":1221,"1229":1221,"1230":1221,"1231":1221,"1238":1232,"1239":1232,"1246":1232,"1247":1232,"1256":1248,"1257":1248,"1258":1248,"1259":1248,"1260":1248,"1261":1248,"1262":1248,"1263":1248,"1265":1264,"1266":1264,"1267":1264,"1268":1264,"1269":1264,"1270":1264,"1271":1264,"1272":1264,"1273":1264,"1274":1264,"1275":1264,"1276":1264,"1277":1264,"1278":1264,"1279":1264,"1281":1280,"1282":1280,"1283":1280,"1284":1280,"1285":1280,"1286":1280,"1287":1280,"1288":1280,"1289":1280,"1290":1280,"1291":1280,"1292":1280,"1293":1280,"1294":1280,"1295":1280,"1313":1312,"1314":1312,"1315":1312,"1316":1312,"1317":1312,"1318":1312,"1319":1312,"1320":1312,"1321":1312,"1322":1312,"1323":1312,"1324":1312,"1325":1312,"1326":1312,"1327":1312,"1345":1344,"1346":1344,"1347":1344,"1348":1344,"1349":1344,"1350":1344,"1351":1344,"1352":1344,"1353":1344,"1354":1344,"1355":1344,"1356":1344,"1357":1344,"1358":1344,"1359":1344,"1366":1360,"1367":1360,"1368":1360,"1369":1360,"1370":1360,"1371":1360,"1372":1360,"1373":1360,"1374":1360,"1375":1360,"1377":1376,"1378":1376,"1379":1376,"1380":1376,"1381":1376,"1382":1376,"1383":1376,"1384":1376,"1385":1376,"1386":1376,"1387":1376,"1388":1376,"1389":1376,"1390":1376,"1391":1376,"1393":1392,"1394":1392,"1395":1392,"1396":1392,"1397":1392,"1398":1392,"1399":1392,"1400":1392,"1401":1392,"1402":1392,"1403":1392,"1404":1392,"1405":1392,"1406":1392,"1407":1392,"1409":1408,"1410":1408,"1411":1408,"1412":1408,"1413":1408,"1414":1408,"1415":1408,"1416":1408,"1417":1408,"1418":1408,"1419":1408,"1420":1408,"1421":1408,"1422":1408,"1423":1408,"1425":1424,"1426":1424,"1427":1424,"1428":1424,"1429":1424,"1430":1424,"1431":1424,"1432":1424,"1433":1424,"1434":1424,"1435":1424,"1436":1424,"1437":1424,"1438":1424,"1439":1424,"1440":1441,"1443":1441,"1444":1441,"1445":1441,"1446":1441,"1447":1441,"1448":1441,"1449":1441,"1450":1441,"1451":1441,"1452":1441,"1453":1441,"1454":1441,"1455":1441,"1460":1458,"1461":1458,"1462":1458,"1463":1458,"1464":1458,"1465":1458,"1466":1458,"1467":1458,"1468":1458,"1469":1458,"1470":1458,"1471":1458,"1479":1472,"1480":1472,"1481":1472,"1482":1472,"1483":1472,"1484":1472,"1485":1472,"1486":1472,"1487":1472,"1521":1520,"1522":1520,"1523":1520,"1524":1520,"1525":1520,"1526":1520,"1527":1520,"1528":1520,"1529":1520,"1530":1520,"1531":1520,"1532":1520,"1533":1520,"1534":1520,"1535":1520,"1558":1552,"1559":1552,"1560":1552,"1561":1552,"1562":1552,"1563":1552,"1564":1552,"1565":1552,"1566":1552,"1567":1552,"1572":1568,"1573":1568,"1574":1568,"1575":1568,"1576":1568,"1577":1568,"1578":1568,"1579":1568,"1580":1568,"1581":1568,"1582":1568,"1583":1568,"1595":1598,"1596":1598,"1597":1598,"1610":1594,"1611":1614,"1612":1614,"1613":1614,"1615":1599,"1617":1616,"1618":1616,"1619":1616,"1620":1616,"1621":1616,"1622":1616,"1623":1616,"1624":1616,"1625":1616,"1626":1616,"1627":1616,"1628":1616,"1629":1616,"1630":1616,"1631":1616,"1633":1632,"1634":1632,"1635":1632,"1636":1632,"1637":1632,"1638":1632,"1639":1632,"1640":1632,"1641":1632,"1642":1632,"1643":1632,"1644":1632,"1645":1632,"1646":1632,"1647":1632,"1649":1648,"1650":1648,"1651":1648,"1652":1648,"1653":1648,"1654":1648,"1655":1648,"1656":1648,"1657":1648,"1658":1648,"1659":1648,"1660":1648,"1661":1648,"1662":1648,"1663":1648,"1672":1664,"1673":1664,"1674":1664,"1675":1664,"1676":1664,"1677":1664,"1678":1664,"1679":1664,"1688":1680,"1689":1680,"1690":1680,"1691":1680,"1692":1680,"1693":1680,"1694":1680,"1695":1680,"1736":1731,"1737":1731,"1738":1731,"1739":1731,"1740":1731,"1741":1731,"1742":1731,"1743":1731,"1752":1747,"1753":1747,"1754":1747,"1755":1747,"1756":1747,"1757":1747,"1758":1747,"1759":1747,"1761":1760,"1762":1760,"1763":1760,"1764":1760,"1765":1760,"1766":1760,"1767":1760,"1768":1760,"1769":1760,"1770":1760,"1771":1760,"1772":1760,"1773":1760,"1774":1760,"1775":1760,"1777":1776,"1778":1776,"1779":1776,"1780":1776,"1781":1776,"1782":1776,"1783":1776,"1784":1776,"1785":1776,"1786":1776,"1787":1776,"1788":1776,"1789":1776,"1790":1776,"1791":1776,"1793":1792,"1794":1792,"1795":1792,"1796":1792,"1797":1792,"1798":1792,"1799":1792,"1800":1792,"1801":1792,"1802":1792,"1803":1792,"1804":1792,"1805":1792,"1806":1792,"1807":1792,"1809":1808,"1810":1808,"1811":1808,"1812":1808,"1813":1808,"1814":1808,"1815":1808,"1816":1808,"1817":1808,"1818":1808,"1819":1808,"1820":1808,"1821":1808,"1822":1808,"1823":1808,"1832":1827,"1833":1827,"1834":1827,"1835":1827,"1836":1827,"1837":1827,"1838":1827,"1839":1827,"1844":1840,"1845":1840,"1846":1840,"1847":1840,"1848":1840,"1849":1840,"1850":1840,"1851":1840,"1852":1840,"1853":1840,"1854":1840,"1855":1840,"1857":1856,"1858":1856,"1859":1856,"1860":1856,"1861":1856,"1862":1856,"1863":1856,"1864":1856,"1865":1856,"1866":1856,"1867":1856,"1868":1856,"1869":1856,"1870":1856,"1871":1856,"1880":1872,"1881":1872,"1882":1872,"1883":1872,"1884":1872,"1885":1872,"1886":1872,"1887":1872,"1928":1922,"1929":1922,"1930":1922,"1931":1922,"1932":1922,"1933":1922,"1934":1922,"1935":1922,"1937":1936,"1938":1936,"1939":1936,"1940":1936,"1941":1936,"1942":1936,"1943":1936,"1944":1936,"1945":1936,"1946":1936,"1947":1936,"1948":1936,"1949":1936,"1950":1936,"1951":1936,"1953":1952,"1954":1952,"1955":1952,"1956":1952,"1957":1952,"1958":1952,"1959":1952,"1960":1952,"1961":1952,"1962":1952,"1963":1952,"1964":1952,"1965":1952,"1966":1952,"1967":1952,"1969":1968,"1970":1968,"1971":1968,"1972":1968,"1973":1968,"1974":1968,"1975":1968,"1976":1968,"1977":1968,"1978":1968,"1979":1968,"1980":1968,"1981":1968,"1982":1968,"1983":1968,"1985":1968,"1986":1968,"1987":1968,"1988":1968,"1989":1968,"1990":1968,"1991":1968,"1992":1968,"1993":1968,"1994":1968,"1995":1968,"1996":1968,"1997":1968,"1998":1968,"1999":1968,"2022":2016,"2023":2016,"2030":2016,"2031":2016,"2044":2032,"2045":2032,"2046":2032,"2047":2032,"2056":2051,"2057":2051,"2058":2051,"2059":2051,"2060":2051,"2061":2051,"2062":2051,"2063":2051,"2065":2064,"2066":2064,"2067":2064,"2068":2064,"2069":2064,"2070":2064,"2071":2064,"2072":2064,"2073":2064,"2074":2064,"2075":2064,"2076":2064,"2077":2064,"2078":2064,"2079":2064,"2080":2082,"2081":2082,"2086":2082,"2087":2082,"2088":2082,"2089":2082,"2090":2082,"2091":2082,"2092":2082,"2093":2082,"2094":2082,"2095":2082,"2129":2128,"2130":2128,"2131":2128,"2132":2128,"2133":2128,"2134":2128,"2135":2128,"2136":2128,"2137":2128,"2138":2128,"2139":2128,"2140":2128,"2141":2128,"2142":2128,"2143":2128,"2152":2147,"2153":2147,"2154":2147,"2155":2147,"2156":2147,"2157":2147,"2158":2147,"2159":2147,"2168":2163,"2169":2163,"2170":2163,"2171":2163,"2172":2163,"2173":2163,"2174":2163,"2175":2163,"2184":2179,"2185":2179,"2186":2179,"2187":2179,"2188":2179,"2189":2179,"2190":2179,"2191":2179,"2209":2208,"2210":2208,"2211":2208,"2212":2208,"2213":2208,"2214":2208,"2215":2208,"2216":2208,"2217":2208,"2218":2208,"2219":2208,"2220":2208,"2221":2208,"2222":2208,"2223":2208,"2238":2224,"2239":2224,"2241":2240,"2242":2240,"2243":2240,"2244":2240,"2245":2240,"2246":2240,"2247":2240,"2248":2240,"2249":2240,"2250":2240,"2251":2240,"2252":2240,"2253":2240,"2254":2240,"2255":2240,"2264":2256,"2265":2256,"2266":2256,"2267":2256,"2268":2256,"2269":2256,"2270":2256,"2271":2256,"2280":2272,"2281":2272,"2282":2272,"2283":2272,"2284":2272,"2285":2272,"2286":2272,"2287":2272,"2294":2288,"2295":2288,"2302":2288,"2303":2288,"2304":2306,"2310":2306,"2311":2306,"2312":2306,"2313":2306,"2314":2306,"2315":2306,"2316":2306,"2317":2306,"2318":2306,"2319":2306,"2332":2322,"2333":2322,"2334":2322,"2335":2322,"2336":2338,"2337":2338,"2342":2338,"2343":2338,"2344":2338,"2345":2338,"2346":2338,"2347":2338,"2348":2338,"2349":2338,"2350":2338,"2351":2338,"2392":2386,"2393":2386,"2394":2386,"2395":2386,"2396":2386,"2397":2386,"2398":2386,"2399":2386,"2400":2386,"2401":2386,"2402":2386,"2403":2386,"2404":2386,"2405":2386,"2406":2386,"2407":2386,"2433":2432,"2434":2432,"2435":2432,"2436":2432,"2437":2432,"2438":2432,"2439":2432,"2440":2432,"2441":2432,"2442":2432,"2443":2432,"2444":2432,"2445":2432,"2446":2432,"2447":2432,"2449":2448,"2450":2448,"2451":2448,"2452":2448,"2453":2448,"2454":2448,"2455":2448,"2456":2448,"2457":2448,"2458":2448,"2459":2448,"2460":2448,"2461":2448,"2462":2448,"2463":2448,"2465":2464,"2470":2464,"2471":2464,"2473":2464,"2478":2464,"2479":2464,"2484":2480,"2487":2480,"2488":2480,"2491":2480,"2492":2480,"2493":2481,"2494":2482,"2495":2480,"2504":2499,"2505":2499,"2506":2499,"2507":2499,"2508":2499,"2509":2499,"2510":2499,"2511":2499,"2520":2512,"2521":2513,"2522":2514,"2523":2515,"2524":2516,"2525":2517,"2578":288,"2579":288,"2582":288,"2583":288,"2586":288,"2587":288,"2590":288,"2591":288,"2604":7476,"2605":7477,"2616":2611,"2617":2611,"2618":2611,"2619":2611,"2620":2611,"2621":2611,"2622":2611,"2623":2611,"2632":2627,"2633":2627,"2634":2627,"2635":2627,"2636":2627,"2637":2627,"2638":2627,"2639":2627,"2641":2640,"2642":2640,"2643":2640,"2644":2640,"2645":2640,"2646":2640,"2647":2640,"2648":2640,"2649":2640,"2650":2640,"2651":2640,"2652":2640,"2653":2640,"2654":2640,"2655":2640,"2691":2688,"2692":2688,"2693":2688,"2694":2688,"2695":2688,"2696":2688,"2697":2688,"2698":2688,"2699":2688,"2700":2688,"2701":2688,"2702":2688,"2703":2688,"2705":2704,"2706":2704,"2707":2704,"2708":2704,"2709":2704,"2710":2704,"2711":2704,"2712":2704,"2713":2704,"2714":2704,"2715":2704,"2716":2704,"2717":2704,"2718":2704,"2719":2704,"2721":2720,"2722":2720,"2723":2720,"2725":2720,"2726":2720,"2727":2720,"2729":2720,"2730":2720,"2731":2720,"2732":2720,"2733":2720,"2734":2720,"2735":2720,"2753":2752,"2754":2752,"2755":2752,"2756":2752,"2757":2752,"2758":2752,"2759":2752,"2760":2752,"2761":2752,"2762":2752,"2763":2752,"2764":2752,"2765":2752,"2766":2752,"2767":2752,"2769":2768,"2770":2768,"2771":2768,"2772":2768,"2773":2768,"2774":2768,"2775":2768,"2776":2768,"2777":2768,"2778":2768,"2779":2768,"2780":2768,"2781":2768,"2782":2768,"2783":2768,"2785":2784,"2786":2784,"2787":2784,"2788":2784,"2789":2784,"2790":2784,"2791":2784,"2792":2784,"2793":2784,"2794":2784,"2795":2784,"2796":2784,"2797":2784,"2798":2784,"2799":2784,"2806":2800,"2807":2800,"2814":2800,"2815":2800,"2832":2834,"2833":2834,"2838":2834,"2839":2834,"2840":2834,"2841":2834,"2842":2834,"2843":2834,"2844":2834,"2845":2834,"2846":2834,"2847":2834,"2868":2864,"2869":2864,"2870":2864,"2871":2864,"2872":2864,"2873":2864,"2874":2864,"2875":2864,"2876":2864,"2877":2864,"2878":2864,"2879":2864,"2888":2883,"2889":2883,"2890":2883,"2891":2883,"2892":2883,"2893":2883,"2894":2883,"2895":2883,"2904":2896,"2905":2897,"2906":2898,"2907":2899,"2908":2900,"2909":2901,"2910":2902,"2911":2903,"3041":3040,"3042":3040,"3043":3040,"3044":3040,"3045":3040,"3046":3040,"3047":3040,"3048":3040,"3049":3040,"3050":3040,"3051":3040,"3052":3040,"3053":3040,"3054":3040,"3055":3040,"3073":3072,"3074":3072,"3075":3072,"3076":3072,"3077":3072,"3078":3072,"3079":3072,"3080":3072,"3081":3072,"3082":3072,"3083":3072,"3084":3072,"3085":3072,"3086":3072,"3087":3072,"3098":3091,"3099":3091,"3100":3091,"3101":3091,"3102":3091,"3103":3091,"3114":3107,"3115":3107,"3116":3107,"3117":3107,"3118":3107,"3119":3107,"3130":3123,"3131":3123,"3132":3123,"3133":3123,"3134":3123,"3135":3123,"3146":3139,"3147":3139,"3148":3139,"3149":3139,"3150":3139,"3151":3139,"3162":3155,"3163":3155,"3164":3155,"3165":3155,"3166":3155,"3167":3155,"3169":3168,"3170":3168,"3171":3168,"3172":3168,"3173":3168,"3174":3168,"3175":3168,"3176":3168,"3177":3168,"3178":3168,"3179":3168,"3180":3168,"3181":3168,"3182":3168,"3183":3168,"3192":3187,"3193":3187,"3194":3187,"3195":3187,"3196":3187,"3197":3187,"3198":3187,"3199":3187,"3217":3216,"3219":3216,"3220":3216,"3221":3216,"3223":3216,"3224":3216,"3225":3216,"3227":3216,"3228":3216,"3229":3216,"3230":3218,"3231":3216,"3232":3237,"3238":3237,"3239":3237,"3240":3245,"3246":3245,"3247":3245,"3256":3251,"3257":3251,"3258":3251,"3259":3251,"3260":3251,"3261":3251,"3262":3251,"3263":3251,"3264":3269,"3270":3269,"3271":3269,"3272":3277,"3278":3277,"3279":3277,"3281":3280,"3282":3280,"3283":3280,"3284":3280,"3285":3280,"3286":3280,"3287":3280,"3288":3280,"3289":3280,"3290":3280,"3291":3280,"3292":3280,"3293":3280,"3294":3280,"3295":3280,"3297":3296,"3298":3296,"3299":3296,"3300":3296,"3301":3296,"3302":3296,"3303":3296,"3304":3296,"3305":3296,"3306":3296,"3307":3296,"3308":3296,"3309":3296,"3310":3296,"3311":3296,"3316":3312,"3317":3312,"3318":3312,"3319":3312,"3320":3312,"3321":3312,"3322":3312,"3323":3312,"3324":3312,"3325":3312,"3326":3312,"3327":3312,"3334":3328,"3335":3328,"3336":3328,"3337":3328,"3338":3328,"3339":3328,"3340":3328,"3341":3328,"3342":3328,"3343":3328,"3409":3408,"3410":3408,"3411":3408,"3412":3408,"3413":3408,"3414":3408,"3415":3408,"3416":3408,"3417":3408,"3418":3408,"3419":3408,"3420":3408,"3421":3408,"3422":3408,"3423":3408,"3425":3424,"3426":3424,"3427":3424,"3428":3424,"3429":3424,"3430":3424,"3431":3424,"3432":3424,"3433":3424,"3434":3424,"3435":3424,"3436":3424,"3437":3424,"3438":3424,"3439":3424,"3441":3440,"3442":3440,"3443":3440,"3444":3440,"3445":3440,"3446":3440,"3447":3440,"3448":3440,"3449":3440,"3450":3440,"3451":3440,"3452":3440,"3453":3440,"3454":3440,"3455":3440,"3457":3456,"3458":3456,"3459":3456,"3461":3456,"3462":3456,"3463":3456,"3465":3456,"3466":3456,"3467":3456,"3468":3456,"3469":3456,"3470":3456,"3471":3456,"3504":3506,"3505":3506,"3510":3506,"3511":3506,"3512":3506,"3513":3506,"3514":3506,"3515":3506,"3516":3506,"3517":3506,"3518":3506,"3519":3506,"3520":3522,"3521":3522,"3526":3522,"3527":3522,"3528":3522,"3529":3522,"3530":3522,"3531":3522,"3532":3522,"3533":3522,"3534":3522,"3535":3522,"3536":3538,"3537":3538,"3542":3538,"3543":3538,"3544":3538,"3545":3538,"3546":3538,"3547":3538,"3548":3538,"3549":3538,"3550":3538,"3551":3538,"3552":3554,"3553":3554,"3558":3554,"3559":3554,"3560":3554,"3561":3554,"3562":3554,"3563":3554,"3564":3554,"3565":3554,"3566":3554,"3567":3554,"3568":3570,"3569":3570,"3574":3570,"3575":3570,"3576":3570,"3577":3570,"3578":3570,"3579":3570,"3580":3570,"3581":3570,"3582":3570,"3583":3570,"3584":3586,"3585":3586,"3590":3586,"3591":3586,"3592":3586,"3593":3586,"3594":3586,"3595":3586,"3596":3586,"3597":3586,"3598":3586,"3599":3586,"3600":3602,"3601":3602,"3606":3602,"3607":3602,"3608":3602,"3609":3602,"3610":3602,"3611":3602,"3612":3602,"3613":3602,"3614":3602,"3615":3602,"3616":3618,"3617":3618,"3622":3618,"3623":3618,"3624":3618,"3625":3618,"3626":3618,"3627":3618,"3628":3618,"3629":3618,"3630":3618,"3631":3618,"3632":3634,"3633":3634,"3638":3634,"3639":3634,"3640":3634,"3641":3634,"3642":3634,"3643":3634,"3644":3634,"3645":3634,"3646":3634,"3647":3634,"3648":3650,"3649":3650,"3654":3650,"3655":3650,"3656":3650,"3657":3650,"3658":3650,"3659":3650,"3660":3650,"3661":3650,"3662":3650,"3663":3650,"3664":3666,"3665":3666,"3670":3666,"3671":3666,"3672":3666,"3673":3666,"3674":3666,"3675":3666,"3676":3666,"3677":3666,"3678":3666,"3679":3666,"3696":3698,"3697":3698,"3702":3698,"3703":3698,"3704":3698,"3705":3698,"3706":3698,"3707":3698,"3708":3698,"3709":3698,"3710":3698,"3711":3698,"3712":3714,"3713":3714,"3718":3714,"3719":3714,"3720":3714,"3721":3714,"3722":3714,"3723":3714,"3724":3714,"3725":3714,"3726":3714,"3727":3714,"3728":3730,"3729":3730,"3734":3730,"3735":3730,"3736":3730,"3737":3730,"3738":3730,"3739":3730,"3740":3730,"3741":3730,"3742":3730,"3743":3730,"3744":3746,"3745":3746,"3750":3746,"3751":3746,"3752":3746,"3753":3746,"3754":3746,"3755":3746,"3756":3746,"3757":3746,"3758":3746,"3759":3746,"3760":3762,"3761":3762,"3766":3762,"3767":3762,"3768":3762,"3769":3762,"3770":3762,"3771":3762,"3772":3762,"3773":3762,"3774":3762,"3775":3762,"3824":3829,"3830":3829,"3831":3829,"3832":3829,"3833":3829,"3834":3829,"3835":3829,"3836":3829,"3837":3829,"3838":3829,"3839":3829,"3889":3888,"3890":3888,"3891":3888,"3892":3888,"3893":3888,"3894":3888,"3895":3888,"3896":3888,"3897":3888,"3898":3888,"3899":3888,"3900":3888,"3901":3888,"3902":3888,"3903":3888,"3912":3904,"3913":3904,"3914":3904,"3915":3904,"3916":3904,"3917":3904,"3918":3904,"3919":3904,"3921":3920,"3922":3920,"3923":3920,"3924":3920,"3925":3920,"3926":3920,"3927":3920,"3928":3920,"3929":3920,"3930":3920,"3931":3920,"3932":3920,"3933":3920,"3934":3920,"3935":3920,"3937":3936,"3938":3936,"3939":3936,"3940":3936,"3941":3936,"3942":3936,"3943":3936,"3944":3936,"3945":3936,"3946":3936,"3947":3936,"3948":3936,"3949":3936,"3950":3936,"3951":3936,"3953":3952,"3954":3952,"3955":3952,"3956":3952,"3957":3952,"3958":3952,"3959":3952,"3960":3952,"3961":3952,"3962":3952,"3963":3952,"3964":3952,"3965":3952,"3966":3952,"3967":3952,"3969":3968,"3970":3968,"3971":3968,"3972":3968,"3973":3968,"3974":3968,"3975":3968,"3976":3968,"3977":3968,"3978":3968,"3979":3968,"3980":3968,"3981":3968,"3982":3968,"3983":3968,"3985":3984,"3986":3984,"3987":3984,"3988":3984,"3989":3984,"3990":3984,"3991":3984,"3992":3984,"3993":3984,"3994":3984,"3995":3984,"3996":3984,"3997":3984,"3998":3984,"3999":3984,"4049":4048,"4050":4048,"4051":4048,"4052":4048,"4053":4048,"4054":4048,"4055":4048,"4056":4048,"4057":4048,"4058":4048,"4059":4048,"4060":4048,"4061":4048,"4062":4048,"4063":4048,"4081":4080,"4082":4080,"4083":4080,"4084":4080,"4085":4080,"4086":4080,"4087":4080,"4088":4080,"4089":4080,"4090":4080,"4091":4080,"4092":4080,"4093":4080,"4094":4080,"4095":4080,"4120":4115,"4121":4115,"4122":4115,"4123":4115,"4124":4115,"4125":4115,"4126":4115,"4127":4115,"4136":4131,"4137":4131,"4138":4131,"4139":4131,"4140":4131,"4141":4131,"4142":4131,"4143":4131,"4152":4147,"4153":4147,"4154":4147,"4155":4147,"4156":4147,"4157":4147,"4158":4147,"4159":4147,"4163":4160,"4164":4160,"4165":4160,"4166":4160,"4167":4160,"4168":4160,"4169":4160,"4170":4160,"4171":4160,"4172":4160,"4173":4160,"4174":4160,"4175":4160,"4179":4176,"4180":4176,"4181":4176,"4182":4176,"4183":4176,"4184":4176,"4185":4176,"4186":4176,"4187":4176,"4188":4176,"4189":4176,"4190":4176,"4191":4176,"4195":4192,"4196":4192,"4197":4192,"4198":4192,"4199":4192,"4200":4192,"4201":4192,"4202":4192,"4203":4192,"4204":4192,"4205":4192,"4206":4192,"4207":4192,"4211":4208,"4212":4208,"4213":4208,"4214":4208,"4215":4208,"4216":4208,"4217":4208,"4218":4208,"4219":4208,"4220":4208,"4221":4208,"4222":4208,"4223":4208,"4227":4224,"4228":4224,"4229":4224,"4230":4224,"4231":4224,"4232":4224,"4233":4224,"4234":4224,"4235":4224,"4236":4224,"4237":4224,"4238":4224,"4239":4224,"4243":4240,"4244":4240,"4245":4240,"4246":4240,"4247":4240,"4248":4240,"4249":4240,"4250":4240,"4251":4240,"4252":4240,"4253":4240,"4254":4240,"4255":4240,"4257":4256,"4258":4256,"4259":4256,"4260":4256,"4261":4256,"4262":4256,"4263":4256,"4264":4256,"4265":4256,"4266":4256,"4267":4256,"4268":4256,"4269":4256,"4270":4256,"4271":4256,"4273":4272,"4274":4272,"4275":4272,"4276":4272,"4277":4272,"4278":4272,"4279":4272,"4280":4272,"4281":4272,"4282":4272,"4283":4272,"4284":4272,"4285":4272,"4286":4272,"4287":4272,"4289":4288,"4290":4288,"4291":4288,"4292":4288,"4293":4288,"4294":4288,"4295":4288,"4296":4288,"4297":4288,"4298":4288,"4299":4288,"4300":4288,"4301":4288,"4302":4288,"4303":4288,"4305":4304,"4306":4304,"4307":4304,"4308":4304,"4309":4304,"4310":4304,"4311":4304,"4312":4304,"4313":4304,"4314":4304,"4315":4304,"4316":4304,"4317":4304,"4318":4304,"4319":4304,"4321":4320,"4322":4320,"4323":4320,"4324":4320,"4325":4320,"4326":4320,"4327":4320,"4328":4320,"4329":4320,"4330":4320,"4331":4320,"4332":4320,"4333":4320,"4334":4320,"4335":4320,"4337":4336,"4338":4336,"4339":4336,"4340":4336,"4341":4336,"4342":4336,"4343":4336,"4344":4336,"4345":4336,"4346":4336,"4347":4336,"4348":4336,"4349":4336,"4350":4336,"4351":4336,"4353":4352,"4354":4352,"4355":4352,"4356":4352,"4357":4352,"4358":4352,"4359":4352,"4360":4352,"4361":4352,"4362":4352,"4363":4352,"4364":4352,"4365":4352,"4366":4352,"4367":4352,"4369":4368,"4370":4368,"4371":4368,"4372":4368,"4373":4368,"4374":4368,"4375":4368,"4376":4368,"4377":4368,"4378":4368,"4379":4368,"4380":4368,"4381":4368,"4382":4368,"4383":4368,"4385":4384,"4386":4384,"4387":4384,"4388":4384,"4389":4384,"4390":4384,"4391":4384,"4392":4384,"4393":4384,"4394":4384,"4395":4384,"4396":4384,"4397":4384,"4398":4384,"4399":4384,"4401":4400,"4402":4400,"4403":4400,"4404":4400,"4405":4400,"4406":4400,"4407":4400,"4408":4400,"4409":4400,"4410":4400,"4411":4400,"4412":4400,"4413":4400,"4414":4400,"4415":4400,"4417":4416,"4418":4416,"4419":4416,"4420":4416,"4421":4416,"4422":4416,"4423":4416,"4424":4416,"4425":4416,"4426":4416,"4427":4416,"4428":4416,"4429":4416,"4430":4416,"4431":4416,"4433":4432,"4434":4432,"4435":4432,"4436":4432,"4437":4432,"4438":4432,"4439":4432,"4440":4432,"4441":4432,"4442":4432,"4443":4432,"4444":4432,"4445":4432,"4446":4432,"4447":4432,"4449":4448,"4450":4448,"4451":4448,"4452":4448,"4453":4448,"4454":4448,"4455":4448,"4456":4448,"4457":4448,"4458":4448,"4459":4448,"4460":4448,"4461":4448,"4462":4448,"4463":4448,"4465":4464,"4466":4464,"4467":4464,"4468":4464,"4469":4464,"4470":4464,"4471":4464,"4472":4464,"4473":4464,"4474":4464,"4475":4464,"4476":4464,"4477":4464,"4478":4464,"4479":4464,"4481":4480,"4482":4480,"4483":4480,"4484":4480,"4485":4480,"4486":4480,"4487":4480,"4488":4480,"4489":4480,"4490":4480,"4491":4480,"4492":4480,"4493":4480,"4494":4480,"4495":4480,"4497":4496,"4498":4496,"4499":4496,"4500":4496,"4501":4496,"4502":4496,"4503":4496,"4504":4496,"4505":4496,"4506":4496,"4507":4496,"4508":4496,"4509":4496,"4510":4496,"4511":4496,"4513":4512,"4514":4512,"4515":4512,"4516":4512,"4517":4512,"4518":4512,"4519":4512,"4520":4512,"4521":4512,"4522":4512,"4523":4512,"4524":4512,"4525":4512,"4526":4512,"4527":4512,"4529":4528,"4530":4528,"4531":4528,"4532":4528,"4533":4528,"4534":4528,"4535":4528,"4536":4528,"4537":4528,"4538":4528,"4539":4528,"4540":4528,"4541":4528,"4542":4528,"4543":4528,"4545":4544,"4546":4544,"4547":4544,"4548":4544,"4549":4544,"4550":4544,"4551":4544,"4552":4544,"4553":4544,"4554":4544,"4555":4544,"4556":4544,"4557":4544,"4558":4544,"4559":4544,"4561":4560,"4562":4560,"4563":4560,"4564":4560,"4565":4560,"4566":4560,"4567":4560,"4568":4560,"4569":4560,"4570":4560,"4571":4560,"4572":4560,"4573":4560,"4574":4560,"4575":4560,"4577":4576,"4578":4576,"4579":4576,"4580":4576,"4581":4576,"4582":4576,"4583":4576,"4584":4576,"4585":4576,"4586":4576,"4587":4576,"4588":4576,"4589":4576,"4590":4576,"4591":4576,"4593":4592,"4594":4592,"4595":4592,"4596":4592,"4597":4592,"4598":4592,"4599":4592,"4600":4592,"4601":4592,"4602":4592,"4603":4592,"4604":4592,"4605":4592,"4606":4592,"4607":4592,"4609":4608,"4610":4608,"4611":4608,"4612":4608,"4613":4608,"4614":4608,"4615":4608,"4616":4608,"4617":4608,"4618":4608,"4619":4608,"4620":4608,"4621":4608,"4622":4608,"4623":4608,"4625":4624,"4626":4624,"4627":4624,"4628":4624,"4629":4624,"4630":4624,"4631":4624,"4632":4624,"4633":4624,"4634":4624,"4635":4624,"4636":4624,"4637":4624,"4638":4624,"4639":4624,"4641":4640,"4642":4640,"4643":4640,"4644":4640,"4645":4640,"4646":4640,"4647":4640,"4648":4640,"4649":4640,"4650":4640,"4651":4640,"4652":4640,"4653":4640,"4654":4640,"4655":4640,"4657":4656,"4658":4656,"4659":4656,"4660":4656,"4661":4656,"4662":4656,"4663":4656,"4664":4656,"4665":4656,"4666":4656,"4667":4656,"4668":4656,"4669":4656,"4670":4656,"4671":4656,"4673":4672,"4674":4672,"4675":4672,"4676":4672,"4677":4672,"4678":4672,"4679":4672,"4680":4672,"4681":4672,"4682":4672,"4683":4672,"4684":4672,"4685":4672,"4686":4672,"4687":4672,"4689":4688,"4690":4688,"4691":4688,"4692":4688,"4693":4688,"4694":4688,"4695":4688,"4696":4688,"4697":4688,"4698":4688,"4699":4688,"4700":4688,"4701":4688,"4702":4688,"4703":4688,"4705":4704,"4706":4704,"4707":4704,"4708":4704,"4709":4704,"4710":4704,"4711":4704,"4712":4704,"4713":4704,"4714":4704,"4715":4704,"4716":4704,"4717":4704,"4718":4704,"4719":4704,"4721":4720,"4722":4720,"4723":4720,"4724":4720,"4725":4720,"4726":4720,"4727":4720,"4728":4720,"4729":4720,"4730":4720,"4731":4720,"4732":4720,"4733":4720,"4734":4720,"4735":4720,"4737":4736,"4738":4736,"4739":4736,"4740":4736,"4741":4736,"4742":4736,"4743":4736,"4744":4736,"4745":4736,"4746":4736,"4747":4736,"4748":4736,"4749":4736,"4750":4736,"4751":4736,"4753":4752,"4754":4752,"4755":4752,"4756":4752,"4757":4752,"4758":4752,"4759":4752,"4760":4752,"4761":4752,"4762":4752,"4763":4752,"4764":4752,"4765":4752,"4766":4752,"4767":4752,"4769":4768,"4770":4768,"4771":4768,"4772":4768,"4773":4768,"4774":4768,"4775":4768,"4776":4768,"4777":4768,"4778":4768,"4779":4768,"4780":4768,"4781":4768,"4782":4768,"4783":4768,"4785":4784,"4786":4784,"4787":4784,"4788":4784,"4789":4784,"4790":4784,"4791":4784,"4792":4784,"4793":4784,"4794":4784,"4795":4784,"4796":4784,"4797":4784,"4798":4784,"4799":4784,"4801":4800,"4802":4800,"4803":4800,"4804":4800,"4805":4800,"4806":4800,"4807":4800,"4808":4800,"4809":4800,"4810":4800,"4811":4800,"4812":4800,"4813":4800,"4814":4800,"4815":4800,"4817":4816,"4818":4816,"4819":4816,"4820":4816,"4821":4816,"4822":4816,"4823":4816,"4824":4816,"4825":4816,"4826":4816,"4827":4816,"4828":4816,"4829":4816,"4830":4816,"4831":4816,"4833":4832,"4834":4832,"4835":4832,"4836":4832,"4837":4832,"4838":4832,"4839":4832,"4840":4832,"4841":4832,"4842":4832,"4843":4832,"4844":4832,"4845":4832,"4846":4832,"4847":4832,"4849":4848,"4850":4848,"4851":4848,"4852":4848,"4853":4848,"4854":4848,"4855":4848,"4856":4848,"4857":4848,"4858":4848,"4859":4848,"4860":4848,"4861":4848,"4862":4848,"4863":4848,"4865":4864,"4866":4864,"4867":4864,"4868":4864,"4869":4864,"4870":4864,"4871":4864,"4872":4864,"4873":4864,"4874":4864,"4875":4864,"4876":4864,"4877":4864,"4878":4864,"4879":4864,"4881":4880,"4882":4880,"4883":4880,"4884":4880,"4885":4880,"4886":4880,"4887":4880,"4888":4880,"4889":4880,"4890":4880,"4891":4880,"4892":4880,"4893":4880,"4894":4880,"4895":4880,"4897":4896,"4898":4896,"4899":4896,"4900":4896,"4901":4896,"4902":4896,"4903":4896,"4904":4896,"4905":4896,"4906":4896,"4907":4896,"4908":4896,"4909":4896,"4910":4896,"4911":4896,"4913":4912,"4914":4912,"4915":4912,"4916":4912,"4917":4912,"4918":4912,"4919":4912,"4920":4912,"4921":4912,"4922":4912,"4923":4912,"4924":4912,"4925":4912,"4926":4912,"4927":4912,"4929":4928,"4930":4928,"4931":4928,"4932":4928,"4933":4928,"4934":4928,"4935":4928,"4936":4928,"4937":4928,"4938":4928,"4939":4928,"4940":4928,"4941":4928,"4942":4928,"4943":4928,"4945":4944,"4946":4944,"4947":4944,"4948":4944,"4949":4944,"4950":4944,"4951":4944,"4952":4944,"4953":4944,"4954":4944,"4955":4944,"4956":4944,"4957":4944,"4958":4944,"4959":4944,"4961":4960,"4962":4960,"4963":4960,"4964":4960,"4965":4960,"4966":4960,"4967":4960,"4968":4960,"4969":4960,"4970":4960,"4971":4960,"4972":4960,"4973":4960,"4974":4960,"4975":4960,"4977":4976,"4978":4976,"4979":4976,"4980":4976,"4981":4976,"4982":4976,"4983":4976,"4984":4976,"4985":4976,"4986":4976,"4987":4976,"4988":4976,"4989":4976,"4990":4976,"4991":4976,"4993":4992,"4994":4992,"4995":4992,"4996":4992,"4997":4992,"4998":4992,"4999":4992,"5000":4992,"5001":4992,"5002":4992,"5003":4992,"5004":4992,"5005":4992,"5006":4992,"5007":4992,"5009":5008,"5010":5008,"5011":5008,"5012":5008,"5013":5008,"5014":5008,"5015":5008,"5016":5008,"5017":5008,"5018":5008,"5019":5008,"5020":5008,"5021":5008,"5022":5008,"5023":5008,"5025":5024,"5026":5024,"5027":5024,"5028":5024,"5029":5024,"5030":5024,"5031":5024,"5032":5024,"5033":5024,"5034":5024,"5035":5024,"5036":5024,"5037":5024,"5038":5024,"5039":5024,"5041":5040,"5042":5040,"5043":5040,"5044":5040,"5045":5040,"5046":5040,"5047":5040,"5048":5040,"5049":5040,"5050":5040,"5051":5040,"5052":5040,"5053":5040,"5054":5040,"5055":5040,"5057":5056,"5058":5056,"5059":5056,"5060":5056,"5061":5056,"5062":5056,"5063":5056,"5064":5056,"5065":5056,"5066":5056,"5067":5056,"5068":5056,"5069":5056,"5070":5056,"5071":5056,"5073":5072,"5074":5072,"5075":5072,"5076":5072,"5077":5072,"5078":5072,"5079":5072,"5080":5072,"5081":5072,"5082":5072,"5083":5072,"5084":5072,"5085":5072,"5086":5072,"5087":5072,"5089":5088,"5090":5088,"5091":5088,"5092":5088,"5093":5088,"5094":5088,"5095":5088,"5096":5088,"5097":5088,"5098":5088,"5099":5088,"5100":5088,"5101":5088,"5102":5088,"5103":5088,"5105":5104,"5106":5104,"5107":5104,"5108":5104,"5109":5104,"5110":5104,"5111":5104,"5112":5104,"5113":5104,"5114":5104,"5115":5104,"5116":5104,"5117":5104,"5118":5104,"5119":5104,"5121":5120,"5122":5120,"5123":5120,"5124":5120,"5125":5120,"5126":5120,"5127":5120,"5128":5120,"5129":5120,"5130":5120,"5131":5120,"5132":5120,"5133":5120,"5134":5120,"5135":5120,"5137":5136,"5138":5136,"5139":5136,"5140":5136,"5141":5136,"5142":5136,"5143":5136,"5144":5136,"5145":5136,"5146":5136,"5147":5136,"5148":5136,"5149":5136,"5150":5136,"5151":5136,"5153":5152,"5154":5152,"5155":5152,"5156":5152,"5157":5152,"5158":5152,"5159":5152,"5160":5152,"5161":5152,"5162":5152,"5163":5152,"5164":5152,"5165":5152,"5166":5152,"5167":5152,"5169":5168,"5170":5168,"5171":5168,"5172":5168,"5173":5168,"5174":5168,"5175":5168,"5176":5168,"5177":5168,"5178":5168,"5179":5168,"5180":5168,"5181":5168,"5182":5168,"5183":5168,"5185":5184,"5186":5184,"5187":5184,"5188":5184,"5189":5184,"5190":5184,"5191":5184,"5192":5184,"5193":5184,"5194":5184,"5195":5184,"5196":5184,"5197":5184,"5198":5184,"5199":5184,"5201":5200,"5202":5200,"5203":5200,"5204":5200,"5205":5200,"5206":5200,"5207":5200,"5208":5200,"5209":5200,"5210":5200,"5211":5200,"5212":5200,"5213":5200,"5214":5200,"5215":5200,"5217":5216,"5218":5216,"5219":5216,"5220":5216,"5221":5216,"5222":5216,"5223":5216,"5224":5216,"5225":5216,"5226":5216,"5227":5216,"5228":5216,"5229":5216,"5230":5216,"5231":5216,"5233":5232,"5234":5232,"5235":5232,"5236":5232,"5237":5232,"5238":5232,"5239":5232,"5240":5232,"5241":5232,"5242":5232,"5243":5232,"5244":5232,"5245":5232,"5246":5232,"5247":5232,"5249":5248,"5250":5248,"5251":5248,"5252":5248,"5253":5248,"5254":5248,"5255":5248,"5256":5248,"5257":5248,"5258":5248,"5259":5248,"5260":5248,"5261":5248,"5262":5248,"5263":5248,"5265":5264,"5266":5264,"5267":5264,"5268":5264,"5269":5264,"5270":5264,"5271":5264,"5272":5264,"5273":5264,"5274":5264,"5275":5264,"5276":5264,"5277":5264,"5278":5264,"5279":5264,"5281":5280,"5282":5280,"5283":5280,"5284":5280,"5285":5280,"5286":5280,"5287":5280,"5288":5280,"5289":5280,"5290":5280,"5291":5280,"5292":5280,"5293":5280,"5294":5280,"5295":5280,"5297":5296,"5298":5296,"5299":5296,"5300":5296,"5301":5296,"5302":5296,"5303":5296,"5304":5296,"5305":5296,"5306":5296,"5307":5296,"5308":5296,"5309":5296,"5310":5296,"5311":5296,"5313":5312,"5314":5312,"5315":5312,"5316":5312,"5317":5312,"5318":5312,"5319":5312,"5320":5312,"5321":5312,"5322":5312,"5323":5312,"5324":5312,"5325":5312,"5326":5312,"5327":5312,"5329":5328,"5330":5328,"5331":5328,"5332":5328,"5333":5328,"5334":5328,"5335":5328,"5336":5328,"5337":5328,"5338":5328,"5339":5328,"5340":5328,"5341":5328,"5342":5328,"5343":5328,"5345":5344,"5346":5344,"5347":5344,"5348":5344,"5349":5344,"5350":5344,"5351":5344,"5352":5344,"5353":5344,"5354":5344,"5355":5344,"5356":5344,"5357":5344,"5358":5344,"5359":5344,"5361":5360,"5362":5360,"5363":5360,"5364":5360,"5365":5360,"5366":5360,"5367":5360,"5368":5360,"5369":5360,"5370":5360,"5371":5360,"5372":5360,"5373":5360,"5374":5360,"5375":5360,"5377":5376,"5378":5376,"5379":5376,"5380":5376,"5381":5376,"5382":5376,"5383":5376,"5384":5376,"5385":5376,"5386":5376,"5387":5376,"5388":5376,"5389":5376,"5390":5376,"5391":5376,"5393":5392,"5394":5392,"5395":5392,"5396":5392,"5397":5392,"5398":5392,"5399":5392,"5400":5392,"5401":5392,"5402":5392,"5403":5392,"5404":5392,"5405":5392,"5406":5392,"5407":5392,"5409":5408,"5410":5408,"5411":5408,"5412":5408,"5413":5408,"5414":5408,"5415":5408,"5416":5408,"5417":5408,"5418":5408,"5419":5408,"5420":5408,"5421":5408,"5422":5408,"5423":5408,"5425":5424,"5426":5424,"5427":5424,"5428":5424,"5429":5424,"5430":5424,"5431":5424,"5432":5424,"5433":5424,"5434":5424,"5435":5424,"5436":5424,"5437":5424,"5438":5424,"5439":5424,"5441":5440,"5442":5440,"5443":5440,"5444":5440,"5445":5440,"5446":5440,"5447":5440,"5448":5440,"5449":5440,"5450":5440,"5451":5440,"5452":5440,"5453":5440,"5454":5440,"5455":5440,"5457":5456,"5458":5456,"5459":5456,"5460":5456,"5461":5456,"5462":5456,"5463":5456,"5464":5456,"5465":5456,"5466":5456,"5467":5456,"5468":5456,"5469":5456,"5470":5456,"5471":5456,"5473":5472,"5474":5472,"5475":5472,"5476":5472,"5477":5472,"5478":5472,"5479":5472,"5480":5472,"5481":5472,"5482":5472,"5483":5472,"5484":5472,"5485":5472,"5486":5472,"5487":5472,"5489":5488,"5490":5488,"5491":5488,"5492":5488,"5493":5488,"5494":5488,"5495":5488,"5496":5488,"5497":5488,"5498":5488,"5499":5488,"5500":5488,"5501":5488,"5502":5488,"5503":5488,"5505":5504,"5506":5504,"5507":5504,"5508":5504,"5509":5504,"5510":5504,"5511":5504,"5512":5504,"5513":5504,"5514":5504,"5515":5504,"5516":5504,"5517":5504,"5518":5504,"5519":5504,"5521":5520,"5522":5520,"5523":5520,"5524":5520,"5525":5520,"5526":5520,"5527":5520,"5528":5520,"5529":5520,"5530":5520,"5531":5520,"5532":5520,"5533":5520,"5534":5520,"5535":5520,"5537":5536,"5538":5536,"5539":5536,"5540":5536,"5541":5536,"5542":5536,"5543":5536,"5544":5536,"5545":5536,"5546":5536,"5547":5536,"5548":5536,"5549":5536,"5550":5536,"5551":5536,"5553":5552,"5554":5552,"5555":5552,"5556":5552,"5557":5552,"5558":5552,"5559":5552,"5560":5552,"5561":5552,"5562":5552,"5563":5552,"5564":5552,"5565":5552,"5566":5552,"5567":5552,"5569":5568,"5570":5568,"5571":5568,"5572":5568,"5573":5568,"5574":5568,"5575":5568,"5576":5568,"5577":5568,"5578":5568,"5579":5568,"5580":5568,"5581":5568,"5582":5568,"5583":5568,"5585":5584,"5586":5584,"5587":5584,"5588":5584,"5589":5584,"5590":5584,"5591":5584,"5592":5584,"5593":5584,"5594":5584,"5595":5584,"5596":5584,"5597":5584,"5598":5584,"5599":5584,"5601":5600,"5602":5600,"5603":5600,"5604":5600,"5605":5600,"5606":5600,"5607":5600,"5608":5600,"5609":5600,"5610":5600,"5611":5600,"5612":5600,"5613":5600,"5614":5600,"5615":5600,"5617":5616,"5618":5616,"5619":5616,"5620":5616,"5621":5616,"5622":5616,"5623":5616,"5624":5616,"5625":5616,"5626":5616,"5627":5616,"5628":5616,"5629":5616,"5630":5616,"5631":5616,"5633":5632,"5634":5632,"5635":5632,"5636":5632,"5637":5632,"5638":5632,"5639":5632,"5640":5632,"5641":5632,"5642":5632,"5643":5632,"5644":5632,"5645":5632,"5646":5632,"5647":5632,"5649":5648,"5650":5648,"5651":5648,"5652":5648,"5653":5648,"5654":5648,"5655":5648,"5656":5648,"5657":5648,"5658":5648,"5659":5648,"5660":5648,"5661":5648,"5662":5648,"5663":5648,"5665":5664,"5666":5664,"5667":5664,"5668":5664,"5669":5664,"5670":5664,"5671":5664,"5672":5664,"5673":5664,"5674":5664,"5675":5664,"5676":5664,"5677":5664,"5678":5664,"5679":5664,"5681":5680,"5682":5680,"5683":5680,"5684":5680,"5685":5680,"5686":5680,"5687":5680,"5688":5680,"5689":5680,"5690":5680,"5691":5680,"5692":5680,"5693":5680,"5694":5680,"5695":5680,"5697":5696,"5698":5696,"5699":5696,"5700":5696,"5701":5696,"5702":5696,"5703":5696,"5704":5696,"5705":5696,"5706":5696,"5707":5696,"5708":5696,"5709":5696,"5710":5696,"5711":5696,"5713":5712,"5714":5712,"5715":5712,"5716":5712,"5717":5712,"5718":5712,"5719":5712,"5720":5712,"5721":5712,"5722":5712,"5723":5712,"5724":5712,"5725":5712,"5726":5712,"5727":5712,"5729":5728,"5730":5728,"5731":5728,"5732":5728,"5733":5728,"5734":5728,"5735":5728,"5736":5728,"5737":5728,"5738":5728,"5739":5728,"5740":5728,"5741":5728,"5742":5728,"5743":5728,"5745":5744,"5746":5744,"5747":5744,"5748":5744,"5749":5744,"5750":5744,"5751":5744,"5752":5744,"5753":5744,"5754":5744,"5755":5744,"5756":5744,"5757":5744,"5758":5744,"5759":5744,"5761":5760,"5762":5760,"5763":5760,"5764":5760,"5765":5760,"5766":5760,"5767":5760,"5768":5760,"5769":5760,"5770":5760,"5771":5760,"5772":5760,"5773":5760,"5774":5760,"5775":5760,"5777":5776,"5778":5776,"5779":5776,"5780":5776,"5781":5776,"5782":5776,"5783":5776,"5784":5776,"5785":5776,"5786":5776,"5787":5776,"5788":5776,"5789":5776,"5790":5776,"5791":5776,"5793":5792,"5794":5792,"5795":5792,"5796":5792,"5797":5792,"5798":5792,"5799":5792,"5800":5792,"5801":5792,"5802":5792,"5803":5792,"5804":5792,"5805":5792,"5806":5792,"5807":5792,"5809":5808,"5810":5808,"5811":5808,"5812":5808,"5813":5808,"5814":5808,"5815":5808,"5816":5808,"5817":5808,"5818":5808,"5819":5808,"5820":5808,"5821":5808,"5822":5808,"5823":5808,"5825":5824,"5826":5824,"5827":5824,"5828":5824,"5829":5824,"5830":5824,"5831":5824,"5832":5824,"5833":5824,"5834":5824,"5835":5824,"5836":5824,"5837":5824,"5838":5824,"5839":5824,"5841":5840,"5842":5840,"5843":5840,"5844":5840,"5845":5840,"5846":5840,"5847":5840,"5848":5840,"5849":5840,"5850":5840,"5851":5840,"5852":5840,"5853":5840,"5854":5840,"5855":5840,"5857":5856,"5858":5856,"5859":5856,"5860":5856,"5861":5856,"5862":5856,"5863":5856,"5864":5856,"5865":5856,"5866":5856,"5867":5856,"5868":5856,"5869":5856,"5870":5856,"5871":5856,"5873":5872,"5874":5872,"5875":5872,"5876":5872,"5877":5872,"5878":5872,"5879":5872,"5880":5872,"5881":5872,"5882":5872,"5883":5872,"5884":5872,"5885":5872,"5886":5872,"5887":5872,"5889":5888,"5890":5888,"5891":5888,"5892":5888,"5893":5888,"5894":5888,"5895":5888,"5896":5888,"5897":5888,"5898":5888,"5899":5888,"5900":5888,"5901":5888,"5902":5888,"5903":5888,"5905":5904,"5906":5904,"5907":5904,"5908":5904,"5909":5904,"5910":5904,"5911":5904,"5912":5904,"5913":5904,"5914":5904,"5915":5904,"5916":5904,"5917":5904,"5918":5904,"5919":5904,"5921":5920,"5922":5920,"5923":5920,"5924":5920,"5925":5920,"5926":5920,"5927":5920,"5928":5920,"5929":5920,"5930":5920,"5931":5920,"5932":5920,"5933":5920,"5934":5920,"5935":5920,"5937":5936,"5938":5936,"5939":5936,"5940":5936,"5941":5936,"5942":5936,"5943":5936,"5944":5936,"5945":5936,"5946":5936,"5947":5936,"5948":5936,"5949":5936,"5950":5936,"5951":5936,"5953":5952,"5954":5952,"5955":5952,"5956":5952,"5957":5952,"5958":5952,"5959":5952,"5960":5952,"5961":5952,"5962":5952,"5963":5952,"5964":5952,"5965":5952,"5966":5952,"5967":5952,"5969":5968,"5970":5968,"5971":5968,"5972":5968,"5973":5968,"5974":5968,"5975":5968,"5976":5968,"5977":5968,"5978":5968,"5979":5968,"5980":5968,"5981":5968,"5982":5968,"5983":5968,"5985":5984,"5986":5984,"5987":5984,"5988":5984,"5989":5984,"5990":5984,"5991":5984,"5992":5984,"5993":5984,"5994":5984,"5995":5984,"5996":5984,"5997":5984,"5998":5984,"5999":5984,"6001":6000,"6002":6000,"6003":6000,"6004":6000,"6005":6000,"6006":6000,"6007":6000,"6008":6000,"6009":6000,"6010":6000,"6011":6000,"6012":6000,"6013":6000,"6014":6000,"6015":6000,"6017":6016,"6018":6016,"6019":6016,"6020":6016,"6021":6016,"6022":6016,"6023":6016,"6024":6016,"6025":6016,"6026":6016,"6027":6016,"6028":6016,"6029":6016,"6030":6016,"6031":6016,"6033":6032,"6034":6032,"6035":6032,"6036":6032,"6037":6032,"6038":6032,"6039":6032,"6040":6032,"6041":6032,"6042":6032,"6043":6032,"6044":6032,"6045":6032,"6046":6032,"6047":6032,"6049":6048,"6050":6048,"6051":6048,"6052":6048,"6053":6048,"6054":6048,"6055":6048,"6056":6048,"6057":6048,"6058":6048,"6059":6048,"6060":6048,"6061":6048,"6062":6048,"6063":6048,"6065":6064,"6066":6064,"6067":6064,"6068":6064,"6069":6064,"6070":6064,"6071":6064,"6072":6064,"6073":6064,"6074":6064,"6075":6064,"6076":6064,"6077":6064,"6078":6064,"6079":6064,"6081":6080,"6082":6080,"6083":6080,"6084":6080,"6085":6080,"6086":6080,"6087":6080,"6088":6080,"6089":6080,"6090":6080,"6091":6080,"6092":6080,"6093":6080,"6094":6080,"6095":6080,"6097":6096,"6098":6096,"6099":6096,"6100":6096,"6101":6096,"6102":6096,"6103":6096,"6104":6096,"6105":6096,"6106":6096,"6107":6096,"6108":6096,"6109":6096,"6110":6096,"6111":6096,"6113":6112,"6114":6112,"6115":6112,"6116":6112,"6117":6112,"6118":6112,"6119":6112,"6120":6112,"6121":6112,"6122":6112,"6123":6112,"6124":6112,"6125":6112,"6126":6112,"6127":6112,"6129":6128,"6130":6128,"6131":6128,"6132":6128,"6133":6128,"6134":6128,"6135":6128,"6136":6128,"6137":6128,"6138":6128,"6139":6128,"6140":6128,"6141":6128,"6142":6128,"6143":6128,"6145":6144,"6146":6144,"6147":6144,"6148":6144,"6149":6144,"6150":6144,"6151":6144,"6152":6144,"6153":6144,"6154":6144,"6155":6144,"6156":6144,"6157":6144,"6158":6144,"6159":6144,"6181":6176,"6182":6176,"6183":6176,"6184":6176,"6185":6176,"6186":6176,"6187":6176,"6188":6176,"6189":6176,"6190":6176,"6191":6176,"6197":6192,"6198":6192,"6199":6192,"6205":6192,"6206":6192,"6207":6192,"6213":6208,"6214":6208,"6215":6208,"6221":6208,"6222":6208,"6223":6208,"6229":6208,"6230":6208,"6231":6208,"6237":6208,"6238":6208,"6239":6208,"6273":6248,"6275":6248,"6277":6248,"6279":6248,"6281":6248,"6283":6248,"6285":6248,"6287":6248,"6305":6304,"6306":6304,"6307":6304,"6308":6304,"6309":6304,"6310":6304,"6311":6304,"6312":6304,"6313":6304,"6314":6304,"6315":6304,"6316":6304,"6317":6304,"6318":6304,"6319":6304,"6326":6320,"6327":6320,"6334":6320,"6335":6320,"6342":6336,"6343":6336,"6350":6336,"6351":6336,"6358":6352,"6359":6352,"6366":6352,"6367":6352,"6374":6368,"6375":6368,"6382":6368,"6383":6368,"6390":6384,"6391":6384,"6398":6384,"6399":6384,"6482":6480,"6483":6480,"6484":6480,"6485":6480,"6486":6480,"6487":6480,"6488":6480,"6489":6480,"6490":6480,"6491":6480,"6492":6480,"6493":6480,"6494":6480,"6495":6480,"6498":6496,"6499":6496,"6500":6496,"6501":6496,"6502":6496,"6503":6496,"6504":6496,"6505":6496,"6506":6496,"6507":6496,"6508":6496,"6509":6496,"6510":6496,"6511":6496,"6514":6512,"6515":6512,"6516":6512,"6517":6512,"6518":6512,"6519":6512,"6520":6512,"6521":6512,"6522":6512,"6523":6512,"6524":6512,"6525":6512,"6526":6512,"6527":6512,"6530":6528,"6531":6528,"6532":6528,"6533":6528,"6534":6528,"6535":6528,"6536":6528,"6537":6528,"6538":6528,"6539":6528,"6540":6528,"6541":6528,"6542":6528,"6543":6528,"6546":6544,"6547":6544,"6548":6544,"6549":6544,"6550":6544,"6551":6544,"6552":6544,"6553":6544,"6554":6544,"6555":6544,"6556":6544,"6557":6544,"6558":6544,"6559":6544,"6564":6562,"6565":6562,"6566":6562,"6567":6562,"6568":6562,"6569":6562,"6570":6562,"6571":6562,"6572":6562,"6573":6562,"6574":6562,"6575":6562,"6584":6580,"6585":6580,"6586":6580,"6587":6580,"6588":6580,"6589":6580,"6590":6580,"6591":6580,"6657":6656,"6658":6656,"6659":6656,"6660":6656,"6661":6656,"6662":6656,"6663":6656,"6664":6656,"6665":6656,"6666":6656,"6667":6656,"6668":6656,"6669":6656,"6670":6656,"6671":6656,"6694":6688,"6695":6688,"6702":6688,"6703":6688,"6706":6704,"6707":6704,"6708":6704,"6709":6704,"6710":6704,"6711":6704,"6712":6704,"6713":6704,"6714":6704,"6715":6704,"6716":6704,"6717":6704,"6718":6704,"6719":6704,"6760":6752,"6761":6753,"6762":6754,"6763":6755,"6764":6756,"6765":6757,"6766":6758,"6767":6759,"6776":6768,"6777":6769,"6778":6770,"6779":6771,"6780":6772,"6792":6787,"6793":6787,"6794":6787,"6795":6787,"6796":6787,"6797":6787,"6798":6787,"6799":6787,"6808":6803,"6809":6803,"6810":6803,"6811":6803,"6812":6803,"6813":6803,"6814":6803,"6815":6803,"6824":6819,"6825":6819,"6826":6819,"6827":6819,"6828":6819,"6829":6819,"6830":6819,"6831":6819,"6840":6835,"6841":6835,"6842":6835,"6843":6835,"6844":6835,"6845":6835,"6846":6835,"6847":6835,"6856":6851,"6857":6851,"6858":6851,"6859":6851,"6860":6851,"6861":6851,"6862":6851,"6863":6851,"6872":6867,"6873":6867,"6874":6867,"6875":6867,"6876":6867,"6877":6867,"6878":6867,"6879":6867,"6888":6883,"6889":6883,"6890":6883,"6891":6883,"6892":6883,"6893":6883,"6894":6883,"6895":6883,"6904":6899,"6905":6899,"6906":6899,"6907":6899,"6908":6899,"6909":6899,"6910":6899,"6911":6899,"6920":6915,"6921":6915,"6922":6915,"6923":6915,"6924":6915,"6925":6915,"6926":6915,"6927":6915,"6936":6931,"6937":6931,"6938":6931,"6939":6931,"6940":6931,"6941":6931,"6942":6931,"6943":6931,"6952":6947,"6953":6947,"6954":6947,"6955":6947,"6956":6947,"6957":6947,"6958":6947,"6959":6947,"6968":6963,"6969":6963,"6970":6963,"6971":6963,"6972":6963,"6973":6963,"6974":6963,"6975":6963,"6992":6994,"6993":6994,"6998":6994,"6999":6994,"7000":6994,"7001":6994,"7002":6994,"7003":6994,"7004":6994,"7005":6994,"7006":6994,"7007":6994,"7009":7008,"7010":7008,"7011":7008,"7012":7008,"7013":7008,"7014":7008,"7015":7008,"7016":7008,"7017":7008,"7018":7008,"7019":7008,"7020":7008,"7021":7008,"7022":7008,"7023":7008,"7032":7027,"7033":7027,"7034":7027,"7035":7027,"7036":7027,"7037":7027,"7038":7027,"7039":7027,"7048":7043,"7049":7043,"7050":7043,"7051":7043,"7052":7043,"7053":7043,"7054":7043,"7055":7043,"7072":7074,"7073":7074,"7078":7074,"7079":7074,"7080":7074,"7081":7074,"7082":7074,"7083":7074,"7084":7074,"7085":7074,"7086":7074,"7087":7074,"7104":7106,"7105":7106,"7110":7106,"7111":7106,"7112":7106,"7113":7106,"7114":7106,"7115":7106,"7116":7106,"7117":7106,"7118":7106,"7119":7106,"7136":7138,"7137":7138,"7142":7138,"7143":7138,"7144":7138,"7145":7138,"7146":7138,"7147":7138,"7148":7138,"7149":7138,"7150":7138,"7151":7138,"7168":7170,"7169":7170,"7174":7170,"7175":7170,"7176":7170,"7177":7170,"7178":7170,"7179":7170,"7180":7170,"7181":7170,"7182":7170,"7183":7170,"7192":7186,"7193":7186,"7194":7186,"7195":7186,"7196":7186,"7197":7186,"7198":7186,"7199":7186,"7216":7218,"7217":7218,"7222":7218,"7223":7218,"7224":7218,"7225":7218,"7226":7218,"7227":7218,"7228":7218,"7229":7218,"7230":7218,"7231":7218,"7248":7250,"7249":7250,"7254":7250,"7255":7250,"7256":7250,"7257":7250,"7258":7250,"7259":7250,"7260":7250,"7261":7250,"7262":7250,"7263":7250,"7264":7250,"7265":7250,"7270":7250,"7271":7250,"7272":7250,"7273":7250,"7274":7250,"7275":7250,"7276":7250,"7277":7250,"7278":7250,"7279":7250,"7297":7296,"7298":7296,"7299":7296,"7300":7296,"7301":7296,"7302":7296,"7303":7296,"7304":7296,"7305":7296,"7306":7296,"7307":7296,"7308":7296,"7309":7296,"7310":7296,"7311":7296,"7334":7328,"7335":7328,"7342":7328,"7343":7328,"7348":7346,"7349":7346,"7350":7346,"7351":7346,"7352":7346,"7353":7346,"7354":7346,"7355":7346,"7356":7346,"7357":7346,"7358":7346,"7359":7346,"7396":7392,"7397":7392,"7398":7392,"7399":7392,"7400":7392,"7401":7392,"7402":7392,"7403":7392,"7404":7392,"7405":7392,"7406":7392,"7407":7392,"7410":7408,"7411":7408,"7412":7408,"7413":7408,"7414":7408,"7415":7408,"7416":7408,"7417":7408,"7418":7408,"7419":7408,"7420":7408,"7421":7408,"7422":7408,"7423":7408,"7478":7472,"7479":7472,"7486":7472,"7487":7472,"7504":7218,"7505":7218,"7510":7218,"7511":7218,"7512":7218,"7513":7218,"7514":7218,"7515":7218,"7516":7218,"7517":7218,"7518":7218,"7519":7218}} \ No newline at end of file diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index c18b94532..c50c1bd6a 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -21,6 +21,9 @@ declare(strict_types=1); +use pocketmine\block\Block; +use pocketmine\block\UnknownBlock; + require dirname(__DIR__, 3) . '/vendor/autoload.php'; /* This script needs to be re-run after any intentional blockfactory change (adding or removing a block state). */ @@ -28,7 +31,11 @@ require dirname(__DIR__, 3) . '/vendor/autoload.php'; $factory = new \pocketmine\block\BlockFactory(); $remaps = []; $new = []; -foreach($factory->getAllKnownStates() as $index => $block){ +for($index = 0; $index < 1024 << Block::INTERNAL_METADATA_BITS; $index++){ + $block = $factory->fromFullBlock($index); + if($block instanceof UnknownBlock){ + continue; + } if($block->getFullId() !== $index){ $remaps[$index] = $block->getFullId(); }else{ From e27f80fd859ca498a2bb29f77bd4889b724eb1c0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 21:06:33 +0100 Subject: [PATCH 091/692] Remove unused code --- src/data/bedrock/item/ItemSerializer.php | 30 +----------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 4f4a4e685..0e9835ef8 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -54,12 +54,6 @@ final class ItemSerializer{ */ private array $serializers = []; - /** - * @var \Closure[] - * @phpstan-var array> - */ - private array $blockItemSerializers = []; - public function __construct(){ $this->registerSerializers(); } @@ -81,20 +75,6 @@ final class ItemSerializer{ $this->serializers[$index][get_class($item)] = $serializer; } - /** - * @phpstan-param \Closure(ItemBlock) : Data $serializer - */ - public function mapBlock(Block $block, \Closure $serializer) : void{ - if(!$block->asItem() instanceof ItemBlock){ - throw new AssumptionFailedError("Mapped item must be an ItemBlock"); - } - $index = $block->getTypeId(); - if(isset($this->blockItemSerializers[$index])){ - throw new AssumptionFailedError("Registering the same item twice!"); - } - $this->blockItemSerializers[$index] = $serializer; - } - /** * @phpstan-template TItemType of Item * @phpstan-param TItemType $item @@ -104,15 +84,7 @@ final class ItemSerializer{ throw new \InvalidArgumentException("Cannot serialize a null itemstack"); } if($item instanceof ItemBlock){ - $block = $item->getBlock(); - $index = $block->getTypeId(); - $serializer = $this->blockItemSerializers[$index] ?? null; - - if($serializer !== null){ - $data = $serializer($item); - }else{ //assume that this is just a standard itemblock - $data = self::standardBlock($block); - } + $data = self::standardBlock($item->getBlock()); }else{ $index = ($item->getId() << 16) | ($item instanceof Durable ? 0 : $item->getMeta()); From 1a598bdfd82e38a13ed8f41444acaeaa37f4fcbc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 May 2022 21:20:28 +0100 Subject: [PATCH 092/692] RuntimeBlockMapping: make constructor more useful this allows providing more customisable data sources. --- .../mcpe/convert/RuntimeBlockMapping.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 2913e63c5..3fe5cea62 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -41,8 +41,6 @@ use function file_get_contents; final class RuntimeBlockMapping{ use SingletonTrait; - private BlockStateDictionary $blockStateDictionary; - private BlockStateSerializer $blockStateSerializer; /** * @var int[] * @phpstan-var array @@ -54,14 +52,18 @@ final class RuntimeBlockMapping{ private int $fallbackStateId; private static function make() : self{ - return new self(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt")); + $canonicalBlockStatesFile = Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt"); + $contents = Utils::assumeNotFalse(file_get_contents($canonicalBlockStatesFile), "Missing required resource file"); + return new self( + BlockStateDictionary::loadFromString($contents), + GlobalBlockStateHandlers::getSerializer() + ); } - public function __construct(string $canonicalBlockStatesFile){ - $contents = Utils::assumeNotFalse(file_get_contents($canonicalBlockStatesFile), "Missing required resource file"); - $this->blockStateDictionary = BlockStateDictionary::loadFromString($contents); - $this->blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); - + public function __construct( + private BlockStateDictionary $blockStateDictionary, + private BlockStateSerializer $blockStateSerializer + ){ $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData($this->fallbackStateData) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); } From 643556a3663dec34b006e992f280f7bbd4d682f0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 May 2022 13:35:58 +0100 Subject: [PATCH 093/692] Broaden scope of testing for item serializer/deserializer this change will cause failing tests; it has found a problem with coral fans of which I was previously unaware --- .../data/bedrock/item/ItemSerializerDeserializerTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index c841d72bb..c50c72315 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; use PHPUnit\Framework\TestCase; -use pocketmine\block\VanillaBlocks; -use pocketmine\item\VanillaItems; +use pocketmine\block\BlockFactory; +use pocketmine\item\ItemFactory; final class ItemSerializerDeserializerTest extends TestCase{ @@ -38,7 +38,7 @@ final class ItemSerializerDeserializerTest extends TestCase{ } public function testAllVanillaItemsSerializableAndDeserializable() : void{ - foreach(VanillaItems::getAll() as $item){ + foreach(ItemFactory::getInstance()->getAllRegistered() as $item){ if($item->isNull()){ continue; } @@ -51,7 +51,7 @@ final class ItemSerializerDeserializerTest extends TestCase{ } public function testAllVanillaBlocksSerializableAndDeserializable() : void{ - foreach(VanillaBlocks::getAll() as $block){ + foreach(BlockFactory::getInstance()->getAllKnownStates() as $block){ $item = $block->asItem(); if($item->isNull()){ continue; From a75bc5d537b73fd572d433fc4dd6ab50973c368d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 May 2022 20:50:38 +0100 Subject: [PATCH 094/692] Mojang cannot be relied on ... --- .../bedrock/blockstate/BlockStateData.php | 6 ++--- .../upgrade/BlockStateUpgradeSchema.php | 23 +++------------- .../upgrade/BlockStateUpgradeSchemaUtils.php | 11 ++++---- .../blockstate/upgrade/BlockStateUpgrader.php | 27 +++++++------------ 4 files changed, 22 insertions(+), 45 deletions(-) diff --git a/src/data/bedrock/blockstate/BlockStateData.php b/src/data/bedrock/blockstate/BlockStateData.php index 5d81152ca..355c87cd4 100644 --- a/src/data/bedrock/blockstate/BlockStateData.php +++ b/src/data/bedrock/blockstate/BlockStateData.php @@ -38,9 +38,9 @@ final class BlockStateData{ */ public const CURRENT_VERSION = (1 << 24) | //major - (16 << 16) | //minor - (210 << 8) | //patch - (3); //revision + (18 << 16) | //minor + (10 << 8) | //patch + (1); //revision public const TAG_NAME = "name"; public const TAG_STATES = "states"; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index e81d84ef5..7f7fac1ec 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -70,13 +70,16 @@ final class BlockStateUpgradeSchema{ public int $maxVersionMajor, public int $maxVersionMinor, public int $maxVersionPatch, - public int $maxVersionRevision + public int $maxVersionRevision, + private int $priority ){} public function getVersionId() : int{ return ($this->maxVersionMajor << 24) | ($this->maxVersionMinor << 16) | ($this->maxVersionPatch << 8) | $this->maxVersionRevision; } + public function getPriority() : int{ return $this->priority; } + public function isEmpty() : bool{ foreach([ $this->renamedIds, @@ -93,22 +96,4 @@ final class BlockStateUpgradeSchema{ return true; } - - public function isBackwardsCompatible() : bool{ - if($this->backwardsCompatible === null){ - $this->backwardsCompatible = true; - foreach([ - $this->renamedIds, - $this->removedProperties, - $this->remappedPropertyValues, - $this->remappedStates - ] as $bcBreakingRules){ - if(count($bcBreakingRules) !== 0){ - $this->backwardsCompatible = false; - } - } - } - //schemas which only add properties are backwards compatible - return $this->backwardsCompatible; - } } diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index 96135430b..ae5753c76 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -111,12 +111,13 @@ final class BlockStateUpgradeSchemaUtils{ }; } - public static function fromJsonModel(BlockStateUpgradeSchemaModel $model) : BlockStateUpgradeSchema{ + public static function fromJsonModel(BlockStateUpgradeSchemaModel $model, int $priority) : BlockStateUpgradeSchema{ $result = new BlockStateUpgradeSchema( $model->maxVersionMajor, $model->maxVersionMinor, $model->maxVersionPatch, - $model->maxVersionRevision + $model->maxVersionRevision, + $priority ); $result->renamedIds = $model->renamedIds ?? []; $result->renamedProperties = $model->renamedProperties ?? []; @@ -280,7 +281,7 @@ final class BlockStateUpgradeSchemaUtils{ } try{ - $schema = self::loadSchemaFromString($raw); + $schema = self::loadSchemaFromString($raw, $priority); }catch(\RuntimeException $e){ throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); } @@ -298,7 +299,7 @@ final class BlockStateUpgradeSchemaUtils{ return $result; } - public static function loadSchemaFromString(string $raw) : BlockStateUpgradeSchema{ + public static function loadSchemaFromString(string $raw, int $priority) : BlockStateUpgradeSchema{ try{ $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); }catch(\JsonException $e){ @@ -315,6 +316,6 @@ final class BlockStateUpgradeSchemaUtils{ throw new \RuntimeException($e->getMessage(), 0, $e); } - return self::fromJsonModel($model); + return self::fromJsonModel($model, $priority); } } diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index 28845d9dc..f732401c4 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -27,7 +27,6 @@ use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; -use function array_unshift; use function ksort; use const SORT_NUMERIC; @@ -46,19 +45,16 @@ final class BlockStateUpgrader{ } public function addSchema(BlockStateUpgradeSchema $schema) : void{ - if(!$schema->isBackwardsCompatible()){ - $schemaList = $this->upgradeSchemas[$schema->getVersionId()] ?? []; - foreach($schemaList as $otherSchema){ - if(!$otherSchema->isBackwardsCompatible()){ - throw new \InvalidArgumentException("Cannot add two backwards-incompatible schemas with the same version"); - } - } - array_unshift($schemaList, $schema); - $this->upgradeSchemas[$schema->getVersionId()] = $schemaList; - }else{ - //Backwards-compatible schemas can be added in any order - $this->upgradeSchemas[$schema->getVersionId()][] = $schema; + $schemaList = $this->upgradeSchemas[$schema->getVersionId()] ?? []; + + $priority = $schema->getPriority(); + if(isset($schemaList[$priority])){ + throw new \InvalidArgumentException("Cannot add two schemas to the same version with the same priority"); } + $schemaList[$priority] = $schema; + ksort($schemaList, SORT_NUMERIC); + $this->upgradeSchemas[$schema->getVersionId()] = $schemaList; + ksort($this->upgradeSchemas, SORT_NUMERIC); } @@ -71,11 +67,6 @@ final class BlockStateUpgrader{ continue; } foreach($schemas as $schema){ - if(!$schema->isBackwardsCompatible() && $resultVersion === $version){ - //backwards-compatible updates typically don't bump version and must always be applied because we - //can't tell any different, but backwards-incompatible ones SHOULD always get their own version bump - continue; - } $oldName = $blockStateData->getName(); if(isset($schema->remappedStates[$oldName])){ foreach($schema->remappedStates[$oldName] as $remap){ From 4430f6c5fd445b39e1341cf61cf99bd737dc30cc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 May 2022 20:51:23 +0100 Subject: [PATCH 095/692] Updated upgrade schemas --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 1b627715e..4157e5a86 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "90aa2b01ba9c863ecb5818210235ad304b1b13b3" + "reference": "826fb285c7e8e6fd8e0f0184b9ce37813d5102f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/90aa2b01ba9c863ecb5818210235ad304b1b13b3", - "reference": "90aa2b01ba9c863ecb5818210235ad304b1b13b3", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/826fb285c7e8e6fd8e0f0184b9ce37813d5102f4", + "reference": "826fb285c7e8e6fd8e0f0184b9ce37813d5102f4", "shasum": "" }, "default-branch": true, @@ -272,7 +272,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-04-15T17:44:42+00:00" + "time": "2022-05-13T19:44:35+00:00" }, { "name": "pocketmine/bedrock-data", From 2f2ffe0aa4a8e2fbb5cf86e32110a1f83d4fd3af Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 May 2022 21:03:49 +0100 Subject: [PATCH 096/692] fix phpstan --- .../bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php | 2 -- .../data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php | 2 +- tools/generate-blockstate-upgrade-schema.php | 3 ++- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index 7f7fac1ec..75e50a52e 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -64,8 +64,6 @@ final class BlockStateUpgradeSchema{ */ public array $remappedStates = []; - private ?bool $backwardsCompatible = null; - public function __construct( public int $maxVersionMajor, public int $maxVersionMinor, diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php index 9decc4d88..bddda744f 100644 --- a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php @@ -52,7 +52,7 @@ class BlockStateUpgraderTest extends TestCase{ } private function getNewSchemaVersion(int $versionId) : BlockStateUpgradeSchema{ - $schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff); + $schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff, 0); $this->upgrader->addSchema($schema); return $schema; } diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index 54e773e22..e8e0a7988 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -208,7 +208,8 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad ($foundVersion >> 24) & 0xff, ($foundVersion >> 16) & 0xff, ($foundVersion >> 8) & 0xff, - ($foundVersion & 0xff) + ($foundVersion & 0xff), + 0 ); foreach(Utils::stringifyKeys($upgradeTable) as $oldName => $blockStateMappings){ $newNameFound = []; From 901a51a9dd0f7ca41de592a4e56029c50167f1a5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 14:31:40 +0100 Subject: [PATCH 097/692] Added serialize/deserialize support for stonecutter --- .../convert/BlockObjectToBlockStateSerializer.php | 3 +++ .../convert/BlockStateToBlockObjectDeserializer.php | 10 ++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index 88bce58ef..e2a4ba8a7 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -108,6 +108,7 @@ use pocketmine\block\StainedHardenedGlass; use pocketmine\block\StainedHardenedGlassPane; use pocketmine\block\Stair; use pocketmine\block\StoneButton; +use pocketmine\block\Stonecutter; use pocketmine\block\StonePressurePlate; use pocketmine\block\Sugarcane; use pocketmine\block\SweetBerryBush; @@ -994,6 +995,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeColor($block->getColor()); }); $this->map(Blocks::STONE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_STONE)); + $this->map(Blocks::STONECUTTER(), fn(Stonecutter $block) => Writer::create(Ids::STONECUTTER_BLOCK) + ->writeHorizontalFacing($block->getFacing())); $this->map(Blocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); $this->map(Blocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); $this->map(Blocks::STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_BRICK_STAIRS))); diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 323cdc63d..0ad56d300 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -932,6 +932,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; }); $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); + $this->map(Ids::STONECUTTER_BLOCK, function(Reader $in) : Block{ + return Blocks::STONECUTTER() + ->setFacing($in->readHorizontalFacing()); + }); $this->map(Ids::STRIPPED_ACACIA_LOG, function(Reader $in) : Block{ return Blocks::STRIPPED_ACACIA_LOG() ->setAxis($in->readPillarAxis()); @@ -2181,12 +2185,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::STONECUTTER_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); //$this->map(Ids::STRIPPED_CRIMSON_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block From 5ce5e1d2b020e40c18499abba96ae78e4f675d61 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 14:46:18 +0100 Subject: [PATCH 098/692] Throw proper exceptions for serialize/deserialize failures this allows them to be caught and properly reported in tests. --- .../BlockObjectToBlockStateSerializer.php | 2 ++ src/data/bedrock/item/ItemDeserializer.php | 34 ++++++++++--------- src/data/bedrock/item/ItemSerializer.php | 17 +++++++--- .../item/ItemTypeDeserializeException.php | 28 +++++++++++++++ .../item/ItemTypeSerializeException.php | 28 +++++++++++++++ 5 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 src/data/bedrock/item/ItemTypeDeserializeException.php create mode 100644 src/data/bedrock/item/ItemTypeSerializeException.php diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index e2a4ba8a7..322c81221 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -188,6 +188,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $blockState + * + * @throws BlockStateSerializeException */ public function serializeBlock(Block $blockState) : BlockStateData{ $typeId = $blockState->getTypeId(); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 6ecedd614..5c91743b3 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -35,7 +35,6 @@ use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; -use pocketmine\data\SavedDataLoadingException; use pocketmine\item\Item; use pocketmine\item\PotionType; use pocketmine\item\VanillaItems as Items; @@ -64,13 +63,16 @@ final class ItemDeserializer{ $this->deserializers[$id] = $deserializer; } + /** + * @throws ItemTypeDeserializeException + */ public function deserialize(Data $data) : Item{ if(($blockData = $data->getBlock()) !== null){ //TODO: this is rough duct tape; we need a better way to deal with this try{ $block = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockData); }catch(BlockStateDeserializeException $e){ - throw new SavedDataLoadingException("Failed to deserialize item data: " . $e->getMessage(), 0, $e); + throw new ItemTypeDeserializeException("Failed to deserialize item data: " . $e->getMessage(), 0, $e); } //TODO: worth caching this or not? @@ -78,7 +80,7 @@ final class ItemDeserializer{ } $id = $data->getName(); if(!isset($this->deserializers[$id])){ - throw new SavedDataLoadingException("No deserializer found for ID $id"); + throw new ItemTypeDeserializeException("No deserializer found for ID $id"); } return ($this->deserializers[$id])($data); @@ -97,7 +99,7 @@ final class ItemDeserializer{ if($data->getMeta() === 0){ return Items::ARROW(); } - throw new SavedDataLoadingException("Tipped arrows are not implemented yet"); + throw new ItemTypeDeserializeException("Tipped arrows are not implemented yet"); }); //TODO: minecraft:axolotl_bucket //TODO: minecraft:axolotl_spawn_egg @@ -107,7 +109,7 @@ final class ItemDeserializer{ $meta = $data->getMeta(); $color = DyeColorIdMap::getInstance()->fromInvertedId($meta); if($color === null){ - throw new SavedDataLoadingException("Unknown banner meta $meta"); + throw new ItemTypeDeserializeException("Unknown banner meta $meta"); } return Items::BANNER()->setColor($color); }); @@ -117,7 +119,7 @@ final class ItemDeserializer{ $meta = $data->getMeta(); $color = DyeColorIdMap::getInstance()->fromId($meta); if($color === null){ - throw new SavedDataLoadingException("Unknown bed meta $meta"); + throw new ItemTypeDeserializeException("Unknown bed meta $meta"); } return Blocks::BED()->setColor($color)->asItem(); }); @@ -139,7 +141,7 @@ final class ItemDeserializer{ try{ $treeType = TreeType::fromMagicNumber($data->getMeta()); }catch(\InvalidArgumentException $e){ - throw new SavedDataLoadingException($e->getMessage(), 0, $e); + throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); } return match($treeType->id()){ TreeType::OAK()->id() => Items::OAK_BOAT(), @@ -229,7 +231,7 @@ final class ItemDeserializer{ CompoundTypeIds::HYDROGEN_PEROXIDE => Items::CHEMICAL_HYDROGEN_PEROXIDE(), CompoundTypeIds::AMMONIA => Items::CHEMICAL_AMMONIA(), CompoundTypeIds::SODIUM_HYPOCHLORITE => Items::CHEMICAL_SODIUM_HYPOCHLORITE(), - default => throw new SavedDataLoadingException("Unknown chemical meta " . $data->getMeta()) + default => throw new ItemTypeDeserializeException("Unknown chemical meta " . $data->getMeta()) }); $this->map(Ids::COOKED_BEEF, fn() => Items::STEAK()); $this->map(Ids::COOKED_CHICKEN, fn() => Items::COOKED_CHICKEN()); @@ -284,7 +286,7 @@ final class ItemDeserializer{ } $dyeColor = DyeColorIdMap::getInstance()->fromInvertedId($meta); if($dyeColor === null){ - throw new SavedDataLoadingException("Unknown dye meta $meta"); + throw new ItemTypeDeserializeException("Unknown dye meta $meta"); } return match($dyeColor->id()){ DyeColor::CYAN()->id() => Items::CYAN_DYE(), @@ -475,7 +477,7 @@ final class ItemDeserializer{ $meta = $data->getMeta(); $potionType = PotionTypeIdMap::getInstance()->fromId($meta); if($potionType === null){ - throw new SavedDataLoadingException("Unknown potion type ID $meta"); + throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); } return match($potionType->id()){ PotionType::WATER()->id() => Items::WATER_POTION(), @@ -520,7 +522,7 @@ final class ItemDeserializer{ PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_POTION(), PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_POTION(), PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_POTION(), - default => throw new SavedDataLoadingException("Unhandled potion type " . $potionType->getDisplayName()) + default => throw new ItemTypeDeserializeException("Unhandled potion type " . $potionType->getDisplayName()) }; }); //TODO: minecraft:powder_snow_bucket @@ -565,7 +567,7 @@ final class ItemDeserializer{ try{ $skullType = SkullType::fromMagicNumber($meta); }catch(\InvalidArgumentException $e){ - throw new SavedDataLoadingException($e->getMessage(), 0, $e); + throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); } return match($skullType->id()) { SkullType::SKELETON()->id() => Items::SKELETON_SKULL(), @@ -574,7 +576,7 @@ final class ItemDeserializer{ SkullType::CREEPER()->id() => Items::CREEPER_HEAD(), SkullType::PLAYER()->id() => Items::PLAYER_HEAD(), SkullType::DRAGON()->id() => Items::DRAGON_HEAD(), - default => throw new SavedDataLoadingException("Unexpected skull type " . $skullType->getDisplayName()) + default => throw new ItemTypeDeserializeException("Unexpected skull type " . $skullType->getDisplayName()) }; }); //TODO: minecraft:skull_banner_pattern @@ -587,7 +589,7 @@ final class ItemDeserializer{ EntityLegacyIds::ZOMBIE => Items::ZOMBIE_SPAWN_EGG(), EntityLegacyIds::SQUID => Items::SQUID_SPAWN_EGG(), EntityLegacyIds::VILLAGER => Items::VILLAGER_SPAWN_EGG(), - default => throw new SavedDataLoadingException("Unhandled spawn egg meta " . $data->getMeta()) + default => throw new ItemTypeDeserializeException("Unhandled spawn egg meta " . $data->getMeta()) }); $this->map(Ids::SPIDER_EYE, fn() => Items::SPIDER_EYE()); //TODO: minecraft:spider_spawn_egg @@ -595,7 +597,7 @@ final class ItemDeserializer{ $meta = $data->getMeta(); $potionType = PotionTypeIdMap::getInstance()->fromId($meta); if($potionType === null){ - throw new SavedDataLoadingException("Unknown potion type ID $meta"); + throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); } return match($potionType->id()){ PotionType::WATER()->id() => Items::WATER_SPLASH_POTION(), @@ -640,7 +642,7 @@ final class ItemDeserializer{ PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_SPLASH_POTION(), PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_SPLASH_POTION(), PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_SPLASH_POTION(), - default => throw new SavedDataLoadingException("Unhandled potion type " . $potionType->getDisplayName()) + default => throw new ItemTypeDeserializeException("Unhandled potion type " . $potionType->getDisplayName()) }; }); $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 0e9835ef8..d5bbcb149 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -27,6 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\data\bedrock\BlockItemIdMap; +use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\item\ItemTypeIds as Ids; @@ -78,6 +79,8 @@ final class ItemSerializer{ /** * @phpstan-template TItemType of Item * @phpstan-param TItemType $item + * + * @throws ItemTypeSerializeException */ public function serialize(Item $item) : Data{ if($item->isNull()){ @@ -102,8 +105,7 @@ final class ItemSerializer{ } if($locatedSerializer === null){ - //TODO: proper exceptions - throw new \LogicException("No serializer registered for " . get_class($item) . " " . $item->getName()); + throw new ItemTypeSerializeException("No serializer registered for " . get_class($item) . " " . $item->getName()); } /** @@ -119,15 +121,22 @@ final class ItemSerializer{ return $data; } + /** + * @throws ItemTypeSerializeException + */ private static function standardBlock(Block $block) : Data{ - $blockStateData = GlobalBlockStateHandlers::getSerializer()->serialize($block->getFullId()); + try{ + $blockStateData = GlobalBlockStateHandlers::getSerializer()->serialize($block->getFullId()); + }catch(BlockStateSerializeException $e){ + throw new ItemTypeSerializeException($e->getMessage(), 0, $e); + } $itemNameId = BlockItemIdMap::getInstance()->lookupItemId($blockStateData->getName()); if($itemNameId === null){ //TODO: this might end up being a hassle for custom blocks, since it'll force providing an item //serializer for every custom block //it would probably be better if we allow adding custom item <-> block ID mappings for this - throw new \LogicException("No blockitem serializer or blockitem ID mapping registered for block " . $blockStateData->getName()); + throw new ItemTypeSerializeException("No blockitem serializer or blockitem ID mapping registered for block " . $blockStateData->getName()); } return new Data($itemNameId, 0, $blockStateData); diff --git a/src/data/bedrock/item/ItemTypeDeserializeException.php b/src/data/bedrock/item/ItemTypeDeserializeException.php new file mode 100644 index 000000000..a55b9ab14 --- /dev/null +++ b/src/data/bedrock/item/ItemTypeDeserializeException.php @@ -0,0 +1,28 @@ + Date: Tue, 24 May 2022 14:47:46 +0100 Subject: [PATCH 099/692] Update unit tests --- .../BlockSerializerDeserializerTest.php | 14 +++++++++-- .../item/ItemSerializerDeserializerTest.php | 24 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php index 5bec77cc1..98a9e0b51 100644 --- a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php @@ -6,6 +6,8 @@ namespace pocketmine\data\bedrock\blockstate\convert; use PHPUnit\Framework\TestCase; use pocketmine\block\BlockFactory; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; final class BlockSerializerDeserializerTest extends TestCase{ private BlockStateToBlockObjectDeserializer $deserializer; @@ -18,8 +20,16 @@ final class BlockSerializerDeserializerTest extends TestCase{ public function testAllKnownBlockStatesSerializableAndDeserializable() : void{ foreach(BlockFactory::getInstance()->getAllKnownStates() as $block){ - $blockStateData = $this->serializer->serializeBlock($block); - $newBlock = $this->deserializer->deserializeBlock($blockStateData); + try{ + $blockStateData = $this->serializer->serializeBlock($block); + }catch(BlockStateSerializeException $e){ + self::fail($e->getMessage()); + } + try{ + $newBlock = $this->deserializer->deserializeBlock($blockStateData); + }catch(BlockStateDeserializeException $e){ + self::fail($e->getMessage()); + } self::assertSame($block->getFullId(), $newBlock->getFullId(), "Mismatch of blockstate for " . $block->getName()); } diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index c50c72315..d3d92744b 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -43,8 +43,16 @@ final class ItemSerializerDeserializerTest extends TestCase{ continue; } - $itemData = $this->serializer->serialize($item); - $newItem = $this->deserializer->deserialize($itemData); + try{ + $itemData = $this->serializer->serialize($item); + }catch(ItemTypeSerializeException $e){ + self::fail($e->getMessage()); + } + try{ + $newItem = $this->deserializer->deserialize($itemData); + }catch(ItemTypeDeserializeException $e){ + self::fail($e->getMessage()); + } self::assertTrue($item->equalsExact($newItem)); } @@ -57,8 +65,16 @@ final class ItemSerializerDeserializerTest extends TestCase{ continue; } - $itemData = $this->serializer->serialize($item); - $newItem = $this->deserializer->deserialize($itemData); + try{ + $itemData = $this->serializer->serialize($item); + }catch(ItemTypeSerializeException $e){ + self::fail($e->getMessage()); + } + try{ + $newItem = $this->deserializer->deserialize($itemData); + }catch(ItemTypeDeserializeException $e){ + self::fail($e->getMessage()); + } self::assertTrue($item->equalsExact($newItem)); } From 81eafde0744455e5ad7b717207d7a7a8bf3c598f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 15:07:38 +0100 Subject: [PATCH 100/692] Hacks for banners and coral fans --- src/data/bedrock/item/ItemSerializer.php | 4 +- src/item/CoralFan.php | 61 ++++++++++++++++++++++++ src/item/Item.php | 7 ++- src/item/ItemFactory.php | 21 ++------ src/item/ItemIdentifier.php | 2 +- src/item/ItemIdentifierFlattened.php | 41 ++++++++++++++++ 6 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 src/item/CoralFan.php create mode 100644 src/item/ItemIdentifierFlattened.php diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index d5bbcb149..e8d73e60f 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -68,7 +68,7 @@ final class ItemSerializer{ if($item->hasAnyDamageValue()){ throw new \InvalidArgumentException("Cannot serialize a recipe wildcard"); } - $index = ($item->getId() << 16) | $item->getMeta(); + $index = $item->getTypeId(); if(isset($this->serializers[$index])){ //TODO: REMOVE ME throw new AssumptionFailedError("Registering the same item twice!"); @@ -89,7 +89,7 @@ final class ItemSerializer{ if($item instanceof ItemBlock){ $data = self::standardBlock($item->getBlock()); }else{ - $index = ($item->getId() << 16) | ($item instanceof Durable ? 0 : $item->getMeta()); + $index = $item->getTypeId(); $locatedSerializer = $this->serializers[$index][get_class($item)] ?? null; if($locatedSerializer === null){ diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php new file mode 100644 index 000000000..7cf055823 --- /dev/null +++ b/src/item/CoralFan.php @@ -0,0 +1,61 @@ +identifierFlattened, VanillaBlocks::CORAL_FAN()->getName()); + } + + public function getId() : int{ + return $this->dead ? $this->identifierFlattened->getAdditionalIds()[0] : $this->identifierFlattened->getId(); + } + + public function getMeta() : int{ + return CoralTypeIdMap::getInstance()->toId($this->coralType); + } + + public function getBlock(?int $clickedFace = null) : Block{ + $block = $clickedFace !== null && Facing::axis($clickedFace) !== Axis::Y ? VanillaBlocks::WALL_CORAL_FAN() : VanillaBlocks::CORAL_FAN(); + + return $block->setCoralType($this->coralType)->setDead($this->dead); + } + + public function getFuelTime() : int{ + return $this->getBlock()->getFuelTime(); + } + + public function getMaxStackSize() : int{ + return $this->getBlock()->getMaxStackSize(); + } +} \ No newline at end of file diff --git a/src/item/Item.php b/src/item/Item.php index eed7b0e20..a84d2b4e6 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -439,7 +439,12 @@ class Item implements \JsonSerializable{ return VanillaBlocks::AIR(); } - final public function getId() : int{ + final public function getTypeId() : int{ + //don't use Item::getMeta(), since it might be overridden for non-type information (e.g. durability) + return ($this->identifier->getId() << 16) | $this->identifier->getMeta(); + } + + public function getId() : int{ return $this->identifier->getId(); } diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index c3e6a1cfc..3cc27ca88 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -82,23 +82,10 @@ class ItemFactory{ $this->register(new Clownfish(new ItemIdentifier(ItemIds::CLOWNFISH, 0), "Clownfish")); $this->register(new Coal(new ItemIdentifier(ItemIds::COAL, 0), "Coal")); - foreach([ - 0 => CoralType::TUBE(), - 1 => CoralType::BRAIN(), - 2 => CoralType::BUBBLE(), - 3 => CoralType::FIRE(), - 4 => CoralType::HORN() - ] as $meta => $coralType){ - $this->register(new ItemBlockWallOrFloor( - new ItemIdentifier(ItemIds::CORAL_FAN, $meta), - VanillaBlocks::CORAL_FAN()->setCoralType($coralType)->setDead(false), - VanillaBlocks::WALL_CORAL_FAN()->setCoralType($coralType)->setDead(false) - ), true); - $this->register(new ItemBlockWallOrFloor( - new ItemIdentifier(ItemIds::CORAL_FAN_DEAD, $meta), - VanillaBlocks::CORAL_FAN()->setCoralType($coralType)->setDead(true), - VanillaBlocks::WALL_CORAL_FAN()->setCoralType($coralType)->setDead(true) - ), true); + $identifier = new ItemIdentifierFlattened(ItemIds::CORAL_FAN, 0, [ItemIds::CORAL_FAN_DEAD]); + foreach(CoralType::getAll() as $coralType){ + $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(false), true); + $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(true), true); } $this->register(new Coal(new ItemIdentifier(ItemIds::COAL, 1), "Charcoal")); diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index b24c586a9..e7f440c0b 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; -final class ItemIdentifier{ +class ItemIdentifier{ private int $id; private int $meta; diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php new file mode 100644 index 000000000..0690ece14 --- /dev/null +++ b/src/item/ItemIdentifierFlattened.php @@ -0,0 +1,41 @@ +additionalIds; } + + public function getAllIds() : array{ + return [$this->getId(), ...$this->additionalIds]; + } +} \ No newline at end of file From 24bd403e23e45f4cb5dc529052443d20b59d17d1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 15:19:22 +0100 Subject: [PATCH 101/692] Updated VanillaItems --- src/item/VanillaItems.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 60694e8b5..97feea180 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -122,7 +122,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CookedRabbit COOKED_RABBIT() * @method static CookedSalmon COOKED_SALMON() * @method static Cookie COOKIE() - * @method static ItemBlockWallOrFloor CORAL_FAN() + * @method static CoralFan CORAL_FAN() * @method static Skull CREEPER_HEAD() * @method static Bed CYAN_BED() * @method static Dye CYAN_DYE() From 0fc24c94cd5a000524a49a8ce05cd48a4cd089f8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 15:20:07 +0100 Subject: [PATCH 102/692] Fix PHPStan --- src/item/ItemIdentifierFlattened.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php index 0690ece14..fd732e9db 100644 --- a/src/item/ItemIdentifierFlattened.php +++ b/src/item/ItemIdentifierFlattened.php @@ -35,6 +35,7 @@ final class ItemIdentifierFlattened extends ItemIdentifier{ /** @return int[] */ public function getAdditionalIds() : array{ return $this->additionalIds; } + /** @return int[] */ public function getAllIds() : array{ return [$this->getId(), ...$this->additionalIds]; } From d8dc32ec4b40bf2a992539a497ed74998562f149 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 15:22:23 +0100 Subject: [PATCH 103/692] PhpStorm sucks I'm very sure I enabled 'Ensure every file ends with a line break' ... --- src/data/bedrock/item/ItemSerializer.php | 1 - src/data/bedrock/item/ItemTypeDeserializeException.php | 2 +- src/data/bedrock/item/ItemTypeSerializeException.php | 2 +- src/item/CoralFan.php | 2 +- src/item/ItemIdentifierFlattened.php | 2 +- 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index e8d73e60f..c55f4174e 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -34,7 +34,6 @@ use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\item\Banner; -use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\PotionType; diff --git a/src/data/bedrock/item/ItemTypeDeserializeException.php b/src/data/bedrock/item/ItemTypeDeserializeException.php index a55b9ab14..bbcb3f37a 100644 --- a/src/data/bedrock/item/ItemTypeDeserializeException.php +++ b/src/data/bedrock/item/ItemTypeDeserializeException.php @@ -25,4 +25,4 @@ namespace pocketmine\data\bedrock\item; final class ItemTypeDeserializeException extends \RuntimeException{ -} \ No newline at end of file +} diff --git a/src/data/bedrock/item/ItemTypeSerializeException.php b/src/data/bedrock/item/ItemTypeSerializeException.php index 6174dc513..f2d12c46f 100644 --- a/src/data/bedrock/item/ItemTypeSerializeException.php +++ b/src/data/bedrock/item/ItemTypeSerializeException.php @@ -25,4 +25,4 @@ namespace pocketmine\data\bedrock\item; final class ItemTypeSerializeException extends \LogicException{ -} \ No newline at end of file +} diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index 7cf055823..e276a0e41 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -58,4 +58,4 @@ final class CoralFan extends Item{ public function getMaxStackSize() : int{ return $this->getBlock()->getMaxStackSize(); } -} \ No newline at end of file +} diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php index fd732e9db..974ff38b8 100644 --- a/src/item/ItemIdentifierFlattened.php +++ b/src/item/ItemIdentifierFlattened.php @@ -39,4 +39,4 @@ final class ItemIdentifierFlattened extends ItemIdentifier{ public function getAllIds() : array{ return [$this->getId(), ...$this->additionalIds]; } -} \ No newline at end of file +} From 81b51c07919a6801c5bb6e7e3482a7cbc588eb16 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 21:29:20 +0100 Subject: [PATCH 104/692] fixing special block serialization --- src/data/bedrock/item/ItemSerializer.php | 116 +++++++++++++++++------ 1 file changed, 89 insertions(+), 27 deletions(-) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index c55f4174e..492a967b3 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -26,6 +26,7 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; +use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\BlockItemIdMap; use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; use pocketmine\data\bedrock\CompoundTypeIds; @@ -34,6 +35,7 @@ use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\item\Banner; +use pocketmine\item\CoralFan; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\PotionType; @@ -44,7 +46,6 @@ use function class_parents; use function get_class; final class ItemSerializer{ - /** * These callables actually accept Item, but for the sake of type completeness, it has to be never, since we can't * describe the bottom type of a type hierarchy only containing Item. @@ -52,7 +53,13 @@ final class ItemSerializer{ * @var \Closure[][] * @phpstan-var array> */ - private array $serializers = []; + private array $itemSerializers = []; + + /** + * @var \Closure[][] + * @phpstan-var array> + */ + private array $blockItemSerializers = []; public function __construct(){ $this->registerSerializers(); @@ -68,11 +75,24 @@ final class ItemSerializer{ throw new \InvalidArgumentException("Cannot serialize a recipe wildcard"); } $index = $item->getTypeId(); - if(isset($this->serializers[$index])){ + if(isset($this->itemSerializers[$index])){ //TODO: REMOVE ME throw new AssumptionFailedError("Registering the same item twice!"); } - $this->serializers[$index][get_class($item)] = $serializer; + $this->itemSerializers[$index][get_class($item)] = $serializer; + } + + /** + * @phpstan-template TBlockType of Block + * @phpstan-param TBlockType $block + * @phpstan-param \Closure(TBlockType) : Data $serializer + */ + public function mapBlock(Block $block, \Closure $serializer) : void{ + $index = $block->getTypeId(); + if(isset($this->blockItemSerializers[$index])){ + throw new AssumptionFailedError("Registering the same blockitem twice!"); + } + $this->blockItemSerializers[$index][get_class($block)] = $serializer; } /** @@ -86,17 +106,17 @@ final class ItemSerializer{ throw new \InvalidArgumentException("Cannot serialize a null itemstack"); } if($item instanceof ItemBlock){ - $data = self::standardBlock($item->getBlock()); + $data = $this->serializeBlockItem($item->getBlock()); }else{ $index = $item->getTypeId(); - $locatedSerializer = $this->serializers[$index][get_class($item)] ?? null; + $locatedSerializer = $this->itemSerializers[$index][get_class($item)] ?? null; if($locatedSerializer === null){ $parents = class_parents($item); if($parents !== false){ foreach($parents as $parent){ - if(isset($this->serializers[$index][$parent])){ - $locatedSerializer = $this->serializers[$index][$parent]; + if(isset($this->itemSerializers[$index][$parent])){ + $locatedSerializer = $this->itemSerializers[$index][$parent]; break; } } @@ -120,6 +140,39 @@ final class ItemSerializer{ return $data; } + /** + * @phpstan-template TBlockType of Block + * @phpstan-param TBlockType $block + * + * @throws ItemTypeSerializeException + */ + private function serializeBlockItem(Block $block) : Data{ + $index = $block->getTypeId(); + + $locatedSerializer = $this->blockItemSerializers[$index][get_class($block)] ?? null; + if($locatedSerializer === null){ + $parents = class_parents($block); + if($parents !== false){ + foreach($parents as $parent){ + if(isset($this->blockItemSerializers[$index][$parent])){ + $locatedSerializer = $this->blockItemSerializers[$index][$parent]; + break; + } + } + } + } + + if($locatedSerializer !== null){ + /** @phpstan-var \Closure(TBlockType) : Data $serializer */ + $serializer = $locatedSerializer; + $data = $serializer($block); + }else{ + $data = self::standardBlock($block); + } + + return $data; + } + /** * @throws ItemTypeSerializeException */ @@ -130,24 +183,11 @@ final class ItemSerializer{ throw new ItemTypeSerializeException($e->getMessage(), 0, $e); } - $itemNameId = BlockItemIdMap::getInstance()->lookupItemId($blockStateData->getName()); - if($itemNameId === null){ - //TODO: this might end up being a hassle for custom blocks, since it'll force providing an item - //serializer for every custom block - //it would probably be better if we allow adding custom item <-> block ID mappings for this - throw new ItemTypeSerializeException("No blockitem serializer or blockitem ID mapping registered for block " . $blockStateData->getName()); - } + $itemNameId = BlockItemIdMap::getInstance()->lookupItemId($blockStateData->getName()) ?? $blockStateData->getName(); return new Data($itemNameId, 0, $blockStateData); } - /** - * @phpstan-return \Closure(Item) : Data - */ - private static function standardBlockWrapper() : \Closure{ - return fn(Item $item) => self::standardBlock($item->getBlock()); - } - /** * @phpstan-return \Closure() : Data */ @@ -194,12 +234,33 @@ final class ItemSerializer{ return fn() => new Data(Ids::SPLASH_POTION, $meta); } - private function registerSerializers() : void{ - //these are encoded as regular blocks, but they have to be accounted for explicitly since they don't use ItemBlock - $this->map(Items::BAMBOO(), self::standardBlockWrapper()); - $this->map(Items::CORAL_FAN(), self::standardBlockWrapper()); + private function registerSpecialBlockSerializers() : void{ + $this->mapBlock(Blocks::ACACIA_DOOR(), self::id(Ids::ACACIA_DOOR)); + $this->mapBlock(Blocks::BIRCH_DOOR(), self::id(Ids::BIRCH_DOOR)); + $this->mapBlock(Blocks::BREWING_STAND(), self::id(Ids::BREWING_STAND)); + $this->mapBlock(Blocks::CAKE(), self::id(Ids::CAKE)); + $this->mapBlock(Blocks::DARK_OAK_DOOR(), self::id(Ids::DARK_OAK_DOOR)); + $this->mapBlock(Blocks::FLOWER_POT(), self::id(Ids::FLOWER_POT)); + $this->mapBlock(Blocks::HOPPER(), self::id(Ids::HOPPER)); + $this->mapBlock(Blocks::IRON_DOOR(), self::id(Ids::IRON_DOOR)); + $this->mapBlock(Blocks::ITEM_FRAME(), self::id(Ids::FRAME)); + $this->mapBlock(Blocks::JUNGLE_DOOR(), self::id(Ids::JUNGLE_DOOR)); + $this->mapBlock(Blocks::NETHER_WART(), self::id(Ids::NETHER_WART)); + $this->mapBlock(Blocks::OAK_DOOR(), self::id(Ids::WOODEN_DOOR)); + $this->mapBlock(Blocks::REDSTONE_COMPARATOR(), self::id(Ids::COMPARATOR)); + $this->mapBlock(Blocks::REDSTONE_REPEATER(), self::id(Ids::REPEATER)); + $this->mapBlock(Blocks::SPRUCE_DOOR(), self::id(Ids::SPRUCE_DOOR)); + $this->mapBlock(Blocks::SUGARCANE(), self::id(Ids::SUGAR_CANE)); + } + + private function registerSerializers() : void{ + $this->registerSpecialBlockSerializers(); + + //these are encoded as regular blocks, but they have to be accounted for explicitly since they don't use ItemBlock + //Bamboo->getBlock() returns BambooSapling :( + $this->map(Items::BAMBOO(), fn() => self::standardBlock(Blocks::BAMBOO())); + $this->map(Items::CORAL_FAN(), fn(CoralFan $item) => self::standardBlock($item->getBlock())); - $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); $this->map(Items::APPLE(), self::id(Ids::APPLE)); @@ -207,6 +268,7 @@ final class ItemSerializer{ $this->map(Items::AWKWARD_POTION(), self::potion(PotionType::AWKWARD())); $this->map(Items::AWKWARD_SPLASH_POTION(), self::splashPotion(PotionType::AWKWARD())); $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); + $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); $this->map(Items::BEETROOT_SEEDS(), self::id(Ids::BEETROOT_SEEDS)); $this->map(Items::BEETROOT_SOUP(), self::id(Ids::BEETROOT_SOUP)); From 383be5426e46ca73a4efe5b09dde1aba65040add Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 21:44:57 +0100 Subject: [PATCH 105/692] Rewrite network item serialization to use ItemSerializer --- src/network/mcpe/convert/ItemTranslator.php | 180 ++++++-------------- src/network/mcpe/convert/TypeConverter.php | 50 ++---- 2 files changed, 64 insertions(+), 166 deletions(-) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 5dac8334a..6bd890333 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -23,145 +23,66 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\data\bedrock\LegacyItemIdToStringIdMap; +use pocketmine\data\bedrock\item\ItemDeserializer; +use pocketmine\data\bedrock\item\ItemSerializer; +use pocketmine\data\bedrock\item\ItemTypeSerializeException; +use pocketmine\data\bedrock\item\SavedItemData; +use pocketmine\item\ItemFactory; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; -use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; -use function array_key_exists; -use function file_get_contents; -use function is_array; -use function is_numeric; -use function is_string; -use function json_decode; /** * This class handles translation between network item ID+metadata to PocketMine-MP internal ID+metadata and vice versa. */ final class ItemTranslator{ + public const NO_BLOCK_RUNTIME_ID = 0; + use SingletonTrait; - /** - * @var int[] - * @phpstan-var array - */ - private array $simpleCoreToNetMapping = []; - /** - * @var int[] - * @phpstan-var array - */ - private array $simpleNetToCoreMapping = []; - - /** - * runtimeId = array[internalId][metadata] - * @var int[][] - * @phpstan-var array> - */ - private array $complexCoreToNetMapping = []; - /** - * [internalId, metadata] = array[runtimeId] - * @var int[][] - * @phpstan-var array - */ - private array $complexNetToCoreMapping = []; - private static function make() : self{ - $data = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'r16_to_current_item_map.json')), "Missing required resource file"); - $json = json_decode($data, true); - if(!is_array($json) || !isset($json["simple"], $json["complex"]) || !is_array($json["simple"]) || !is_array($json["complex"])){ - throw new AssumptionFailedError("Invalid item table format"); - } - - $legacyStringToIntMap = LegacyItemIdToStringIdMap::getInstance(); - - /** @phpstan-var array $simpleMappings */ - $simpleMappings = []; - foreach($json["simple"] as $oldId => $newId){ - if(!is_string($oldId) || !is_string($newId)){ - throw new AssumptionFailedError("Invalid item table format"); - } - $intId = $legacyStringToIntMap->stringToLegacy($oldId); - if($intId === null){ - //new item without a fixed legacy ID - we can't handle this right now - continue; - } - $simpleMappings[$newId] = $intId; - } - foreach(Utils::stringifyKeys($legacyStringToIntMap->getStringToLegacyMap()) as $stringId => $intId){ - if(isset($simpleMappings[$stringId])){ - throw new \UnexpectedValueException("Old ID $stringId collides with new ID"); - } - $simpleMappings[$stringId] = $intId; - } - - /** @phpstan-var array $complexMappings */ - $complexMappings = []; - foreach($json["complex"] as $oldId => $map){ - if(!is_string($oldId) || !is_array($map)){ - throw new AssumptionFailedError("Invalid item table format"); - } - foreach($map as $meta => $newId){ - if(!is_numeric($meta) || !is_string($newId)){ - throw new AssumptionFailedError("Invalid item table format"); - } - $intId = $legacyStringToIntMap->stringToLegacy($oldId); - if($intId === null){ - //new item without a fixed legacy ID - we can't handle this right now - continue; - } - $complexMappings[$newId] = [$intId, (int) $meta]; - } - } - - return new self(GlobalItemTypeDictionary::getInstance()->getDictionary(), $simpleMappings, $complexMappings); + return new self(GlobalItemTypeDictionary::getInstance()->getDictionary(), new ItemSerializer(), new ItemDeserializer()); } - /** - * @param int[] $simpleMappings - * @param int[][] $complexMappings - * @phpstan-param array $simpleMappings - * @phpstan-param array> $complexMappings - */ - public function __construct(ItemTypeDictionary $dictionary, array $simpleMappings, array $complexMappings){ - foreach($dictionary->getEntries() as $entry){ - $stringId = $entry->getStringId(); - $netId = $entry->getNumericId(); - if(isset($complexMappings[$stringId])){ - [$id, $meta] = $complexMappings[$stringId]; - $this->complexCoreToNetMapping[$id][$meta] = $netId; - $this->complexNetToCoreMapping[$netId] = [$id, $meta]; - }elseif(isset($simpleMappings[$stringId])){ - $this->simpleCoreToNetMapping[$simpleMappings[$stringId]] = $netId; - $this->simpleNetToCoreMapping[$netId] = $simpleMappings[$stringId]; - }else{ - //not all items have a legacy mapping - for now, we only support the ones that do - continue; - } - } - } + public function __construct( + private ItemTypeDictionary $dictionary, + private ItemSerializer $itemSerializer, + private ItemDeserializer $itemDeserializer + ){} /** * @return int[]|null - * @phpstan-return array{int, int}|null + * @phpstan-return array{int, int, int}|null */ public function toNetworkIdQuiet(int $internalId, int $internalMeta) : ?array{ - if($internalMeta === -1){ - $internalMeta = 0x7fff; - } - if(isset($this->complexCoreToNetMapping[$internalId][$internalMeta])){ - return [$this->complexCoreToNetMapping[$internalId][$internalMeta], 0]; - } - if(array_key_exists($internalId, $this->simpleCoreToNetMapping)){ - return [$this->simpleCoreToNetMapping[$internalId], $internalMeta]; + //TODO: we should probably come up with a cache for this + + try{ + $itemData = $this->itemSerializer->serialize(ItemFactory::getInstance()->get($internalId, $internalMeta)); + }catch(ItemTypeSerializeException){ + //TODO: this will swallow any serializer error; this is not ideal, but it should be OK since unit tests + //should cover this + return null; } - return null; + $numericId = $this->dictionary->fromStringId($itemData->getName()); + $blockStateData = $itemData->getBlock(); + + if($blockStateData !== null){ + $blockRuntimeId = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->lookupStateIdFromData($blockStateData); + if($blockRuntimeId === null){ + throw new AssumptionFailedError("Unmapped blockstate returned by blockstate serializer: " . $blockStateData->toNbt()); + } + }else{ + $blockRuntimeId = self::NO_BLOCK_RUNTIME_ID; //this is technically a valid block runtime ID, but is used to represent "no block" (derp mojang) + } + + return [$numericId, $itemData->getMeta(), $blockRuntimeId]; } /** * @return int[] - * @phpstan-return array{int, int} + * @phpstan-return array{int, int, int} */ public function toNetworkId(int $internalId, int $internalMeta) : array{ return $this->toNetworkIdQuiet($internalId, $internalMeta) ?? @@ -173,19 +94,15 @@ final class ItemTranslator{ * @phpstan-return array{int, int} * @throws TypeConversionException */ - public function fromNetworkId(int $networkId, int $networkMeta, ?bool &$isComplexMapping = null) : array{ - if(isset($this->complexNetToCoreMapping[$networkId])){ - if($networkMeta !== 0){ - throw new TypeConversionException("Unexpected non-zero network meta on complex item mapping"); - } - $isComplexMapping = true; - return $this->complexNetToCoreMapping[$networkId]; - } - $isComplexMapping = false; - if(isset($this->simpleNetToCoreMapping[$networkId])){ - return [$this->simpleNetToCoreMapping[$networkId], $networkMeta]; - } - throw new TypeConversionException("Unmapped network ID/metadata combination $networkId:$networkMeta"); + public function fromNetworkId(int $networkId, int $networkMeta, int $networkBlockRuntimeId) : array{ + $stringId = $this->dictionary->fromIntId($networkId); + + $blockStateData = $networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID ? + RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->getDataFromStateId($networkBlockRuntimeId) : + null; + + $item = $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); + return [$item->getId(), $item->getMeta()]; } /** @@ -194,11 +111,10 @@ final class ItemTranslator{ * @throws TypeConversionException */ public function fromNetworkIdWithWildcardHandling(int $networkId, int $networkMeta) : array{ - $isComplexMapping = false; if($networkMeta !== 0x7fff){ - return $this->fromNetworkId($networkId, $networkMeta); + return $this->fromNetworkId($networkId, $networkMeta, 0); } - [$id, $meta] = $this->fromNetworkId($networkId, 0, $isComplexMapping); - return [$id, $isComplexMapping ? $meta : -1]; + [$id, ] = $this->fromNetworkId($networkId, 0, 0); + return [$id, -1]; } } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index e010a27e9..e590ae5d8 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\block\BlockLegacyIds; use pocketmine\block\inventory\AnvilInventory; use pocketmine\block\inventory\CraftingTableInventory; use pocketmine\block\inventory\EnchantInventory; @@ -37,6 +36,7 @@ use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\ItemFactory; use pocketmine\item\ItemIds; +use pocketmine\item\VanillaItems; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; @@ -141,20 +141,18 @@ class TypeConverter{ $nbt = clone $itemStack->getNamedTag(); } - $isBlockItem = $itemStack->getId() < 256; - $idMeta = ItemTranslator::getInstance()->toNetworkIdQuiet($itemStack->getId(), $itemStack->getMeta()); if($idMeta === null){ //Display unmapped items as INFO_UPDATE, but stick something in their NBT to make sure they don't stack with //other unmapped items. - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId(ItemIds::INFO_UPDATE, 0); + [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId(ItemIds::INFO_UPDATE, 0); if($nbt === null){ $nbt = new CompoundTag(); } $nbt->setInt(self::PM_ID_TAG, $itemStack->getId()); $nbt->setInt(self::PM_META_TAG, $itemStack->getMeta()); }else{ - [$id, $meta] = $idMeta; + [$id, $meta, $blockRuntimeId] = $idMeta; if($itemStack instanceof Durable && $itemStack->getDamage() > 0){ if($nbt !== null){ @@ -166,22 +164,6 @@ class TypeConverter{ $nbt = new CompoundTag(); } $nbt->setInt(self::DAMAGE_TAG, $itemStack->getDamage()); - }elseif($isBlockItem && $itemStack->getMeta() !== 0){ - //TODO HACK: This foul-smelling code ensures that we can correctly deserialize an item when the - //client sends it back to us, because as of 1.16.220, blockitems quietly discard their metadata - //client-side. Aside from being very annoying, this also breaks various server-side behaviours. - if($nbt === null){ - $nbt = new CompoundTag(); - } - $nbt->setInt(self::PM_META_TAG, $itemStack->getMeta()); - } - } - - $blockRuntimeId = 0; - if($isBlockItem){ - $block = $itemStack->getBlock(); - if($block->getId() !== BlockLegacyIds::AIR){ - $blockRuntimeId = RuntimeBlockMapping::getInstance()->toRuntimeId($block->getFullId()); } } @@ -202,17 +184,24 @@ class TypeConverter{ */ public function netItemStackToCore(ItemStack $itemStack) : Item{ if($itemStack->getId() === 0){ - return ItemFactory::getInstance()->get(ItemIds::AIR, 0, 0); + return VanillaItems::AIR(); } $compound = $itemStack->getNbt(); - [$id, $meta] = ItemTranslator::getInstance()->fromNetworkId($itemStack->getId(), $itemStack->getMeta()); + [$id, $meta] = ItemTranslator::getInstance()->fromNetworkId($itemStack->getId(), $itemStack->getMeta(), $itemStack->getBlockRuntimeId()); if($compound !== null){ $compound = clone $compound; - if(($idTag = $compound->getTag(self::PM_ID_TAG)) instanceof IntTag){ - $id = $idTag->getValue(); - $compound->removeTag(self::PM_ID_TAG); + + if($id === ItemIds::INFO_UPDATE && $meta === 0){ + if(($idTag = $compound->getTag(self::PM_ID_TAG)) instanceof IntTag){ + $id = $idTag->getValue(); + $compound->removeTag(self::PM_ID_TAG); + } + if(($metaTag = $compound->getTag(self::PM_META_TAG)) instanceof IntTag){ + $meta = $metaTag->getValue(); + $compound->removeTag(self::PM_META_TAG); + } } if(($damageTag = $compound->getTag(self::DAMAGE_TAG)) instanceof IntTag){ $meta = $damageTag->getValue(); @@ -221,14 +210,7 @@ class TypeConverter{ $compound->removeTag(self::DAMAGE_TAG_CONFLICT_RESOLUTION); $compound->setTag(self::DAMAGE_TAG, $conflicted); } - }elseif(($metaTag = $compound->getTag(self::PM_META_TAG)) instanceof IntTag){ - //TODO HACK: This foul-smelling code ensures that we can correctly deserialize an item when the - //client sends it back to us, because as of 1.16.220, blockitems quietly discard their metadata - //client-side. Aside from being very annoying, this also breaks various server-side behaviours. - $meta = $metaTag->getValue(); - $compound->removeTag(self::PM_META_TAG); - } - if($compound->count() === 0){ + }elseif($compound->count() === 0){ $compound = null; } } From 2b27b8a2308bf87fd626d20f27e427943340579f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 May 2022 21:52:10 +0100 Subject: [PATCH 106/692] fixed fucky wucky --- src/network/mcpe/convert/TypeConverter.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index e590ae5d8..c62f95d16 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -210,7 +210,8 @@ class TypeConverter{ $compound->removeTag(self::DAMAGE_TAG_CONFLICT_RESOLUTION); $compound->setTag(self::DAMAGE_TAG, $conflicted); } - }elseif($compound->count() === 0){ + } + if($compound->count() === 0){ $compound = null; } } From 776b8d2f95a9466c522cb223ec337a3d4a038a42 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 25 May 2022 21:56:17 +0100 Subject: [PATCH 107/692] Harden BlockStateDeserializer further against bugs --- .../convert/BlockStateDeserializerHelper.php | 7 ++ .../blockstate/convert/BlockStateReader.php | 38 +++++++++ .../BlockStateToBlockObjectDeserializer.php | 80 ++++++++++++------- 3 files changed, 98 insertions(+), 27 deletions(-) diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php index 52760d47c..7b7fcb9a5 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php @@ -182,6 +182,7 @@ final class BlockStateDeserializerHelper{ /** @throws BlockStateDeserializeException */ public static function decodeStem(Stem $block, BlockStateReader $in) : Stem{ //TODO: our stems don't support facings yet (facing_direction) + $in->todo(BlockStateNames::FACING_DIRECTION); return self::decodeCrops($block, $in); } @@ -196,6 +197,12 @@ final class BlockStateDeserializerHelper{ /** @throws BlockStateDeserializeException */ public static function decodeWall(Wall $block, BlockStateReader $in) : Wall{ //TODO: our walls don't support the full range of needed states yet + $in->todo(BlockStateNames::WALL_POST_BIT); //TODO + $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_EAST); + $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_NORTH); + $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH); + $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_WEST); + return $block; } diff --git a/src/data/bedrock/blockstate/convert/BlockStateReader.php b/src/data/bedrock/blockstate/convert/BlockStateReader.php index 5ced88381..c85fc9e57 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateReader.php +++ b/src/data/bedrock/blockstate/convert/BlockStateReader.php @@ -41,6 +41,12 @@ use function get_class; final class BlockStateReader{ + /** + * @var true[] + * @phpstan-var array + */ + private array $usedStates = []; + public function __construct( private BlockStateData $data ){} @@ -58,6 +64,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readBool(string $name) : bool{ + $this->usedStates[$name] = true; $tag = $this->data->getStates()->getTag($name); if($tag instanceof ByteTag){ switch($tag->getValue()){ @@ -71,6 +78,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readInt(string $name) : int{ + $this->usedStates[$name] = true; $tag = $this->data->getStates()->getTag($name); if($tag instanceof IntTag){ return $tag->getValue(); @@ -89,6 +97,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readString(string $name) : string{ + $this->usedStates[$name] = true; //TODO: only allow a specific set of values (strings are primarily used for enums) $tag = $this->data->getStates()->getTag($name); if($tag instanceof StringTag){ @@ -286,4 +295,33 @@ final class BlockStateReader{ default => throw $this->badValueException(BlockStateNames::ATTACHMENT, $type), }; } + + /** + * Explicitly mark a property as unused, so it doesn't get flagged as an error when debug mode is enabled + */ + public function ignored(string $name) : void{ + if($this->data->getStates()->getTag($name) !== null){ + $this->usedStates[$name] = true; + }else{ + throw $this->missingOrWrongTypeException($name, null); + } + } + + /** + * Used to mark unused properties that haven't been implemented yet + */ + public function todo(string $name) : void{ + $this->ignored($name); + } + + /** + * @throws BlockStateDeserializeException + */ + public function checkUnreadProperties() : void{ + foreach($this->data->getStates() as $name => $tag){ + if(!isset($this->usedStates[$name])){ + throw new BlockStateDeserializeException("Unread property \"$name\""); + } + } + } } diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 0ad56d300..753cee806 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -112,7 +112,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); }); $this->map(Ids::BAMBOO_SAPLING, function(Reader $in) : Block{ - //TODO: sapling_type intentionally ignored (its presence is a bug) + $in->ignored(StateNames::SAPLING_TYPE); //bug in MCPE return Blocks::BAMBOO_SAPLING()->setReady($in->readBool(StateNames::AGE_BIT)); }); $this->map(Ids::BARREL, function(Reader $in) : Block{ @@ -134,7 +134,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::BEETROOT, fn(Reader $in) => Helper::decodeCrops(Blocks::BEETROOTS(), $in)); $this->map(Ids::BELL, function(Reader $in) : Block{ - //TODO: ignored toggle_bit (appears to be internally used in MCPE only, useless for us) + $in->ignored(StateNames::TOGGLE_BIT); //only useful at runtime return Blocks::BELL() ->setFacing($in->readLegacyHorizontalFacing()) ->setAttachmentType($in->readBellAttachmentType()); @@ -156,7 +156,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLUE_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ - //TODO: intentionally ignored "deprecated" blockstate (useless) + $in->ignored(StateNames::DEPRECATED); return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); }); $this->map(Ids::BOOKSHELF, fn() => Blocks::BOOKSHELF()); @@ -248,8 +248,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); $this->map(Ids::CORAL_FAN_HANG2, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); - $this->map(Ids::CORAL_FAN_HANG3, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) - ->setCoralType(CoralType::HORN())); + $this->map(Ids::CORAL_FAN_HANG3, function(Reader $in) : Block{ + if($in->readBool(StateNames::CORAL_HANG_TYPE_BIT)){ + throw $in->badValueException(StateNames::CORAL_HANG_TYPE_BIT, "1", "This should always be zero for hang3"); + } + return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType(CoralType::HORN()); + }); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::CYAN_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); @@ -294,18 +299,23 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); }); $this->map(Ids::DOUBLE_STONE_SLAB, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); }); $this->map(Ids::DOUBLE_STONE_SLAB2, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); }); $this->map(Ids::DOUBLE_STONE_SLAB3, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); }); $this->map(Ids::DOUBLE_STONE_SLAB4, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); }); $this->map(Ids::DOUBLE_WOODEN_SLAB, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); }); $this->map(Ids::DRAGON_EGG, fn() => Blocks::DRAGON_EGG()); @@ -469,14 +479,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); $this->map(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); - $this->map(Ids::FLOWER_POT, function() : Block{ - //TODO: ignored update_bit (only useful on network to make the client actually render contents, not needed on disk) + $this->map(Ids::FLOWER_POT, function(Reader $in) : Block{ + $in->ignored(StateNames::UPDATE_BIT); return Blocks::FLOWER_POT(); }); $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); $this->map(Ids::FRAME, function(Reader $in) : Block{ //TODO: in R13 this can be any side, not just horizontal + $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is return Blocks::ITEM_FRAME() ->setFacing($in->readHorizontalFacing()) ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); @@ -519,7 +530,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); $this->map(Ids::HAY_BLOCK, function(Reader $in) : Block{ - //TODO: intentionally ignored "deprecated" blockstate (useless) + $in->ignored(StateNames::DEPRECATED); return Blocks::HAY_BALE()->setAxis($in->readPillarAxis()); }); $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); @@ -724,30 +735,42 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::PRISMARINE_BRICKS_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_BRICKS_STAIRS(), $in)); $this->map(Ids::PRISMARINE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_STAIRS(), $in)); - $this->map(Ids::PUMPKIN, function() : Block{ - //TODO: intentionally ignored "direction" property (obsolete) + $this->map(Ids::PUMPKIN, function(Reader $in) : Block{ + $in->ignored(StateNames::DIRECTION); //obsolete return Blocks::PUMPKIN(); }); $this->map(Ids::PUMPKIN_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::PUMPKIN_STEM(), $in)); $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PURPLE_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::PURPUR_BLOCK, function(Reader $in) : Block{ - return match($type = $in->readString(StateNames::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE - StringValues::CHISEL_TYPE_DEFAULT => Blocks::PURPUR(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => Blocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()), - default => throw $in->badValueException(StateNames::CHISEL_TYPE, $type), - }; + $type = $in->readString(StateNames::CHISEL_TYPE); + if($type === StringValues::CHISEL_TYPE_LINES){ + return Blocks::PURPUR_PILLAR()->setAxis($in->readPillarAxis()); + }else{ + $in->ignored(StateNames::PILLAR_AXIS); //axis only applies to pillars + return match($type){ + StringValues::CHISEL_TYPE_CHISELED, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_SMOOTH, //TODO: bug in MCPE + StringValues::CHISEL_TYPE_DEFAULT => Blocks::PURPUR(), + default => throw $in->badValueException(StateNames::CHISEL_TYPE, $type), + }; + } }); $this->map(Ids::PURPUR_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PURPUR_STAIRS(), $in)); $this->map(Ids::QUARTZ_BLOCK, function(Reader $in) : Block{ - return match($type = $in->readString(StateNames::CHISEL_TYPE)){ - StringValues::CHISEL_TYPE_CHISELED => Blocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_DEFAULT => Blocks::QUARTZ(), //TODO: axis intentionally ignored (useless) - StringValues::CHISEL_TYPE_LINES => Blocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()), - StringValues::CHISEL_TYPE_SMOOTH => Blocks::SMOOTH_QUARTZ(), //TODO: axis intentionally ignored (useless) - default => throw $in->badValueException(StateNames::CHISEL_TYPE, $type), - }; + switch($type = $in->readString(StateNames::CHISEL_TYPE)){ + case StringValues::CHISEL_TYPE_CHISELED: + return Blocks::CHISELED_QUARTZ()->setAxis($in->readPillarAxis()); + case StringValues::CHISEL_TYPE_DEFAULT: + $in->ignored(StateNames::PILLAR_AXIS); + return Blocks::QUARTZ(); + case StringValues::CHISEL_TYPE_LINES: + return Blocks::QUARTZ_PILLAR()->setAxis($in->readPillarAxis()); + case StringValues::CHISEL_TYPE_SMOOTH: + $in->ignored(StateNames::PILLAR_AXIS); + return Blocks::SMOOTH_QUARTZ(); + default: + return throw $in->badValueException(StateNames::CHISEL_TYPE, $type); + } }); $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); $this->map(Ids::QUARTZ_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::QUARTZ_STAIRS(), $in)); @@ -865,7 +888,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); $this->map(Ids::SNOW, fn() => Blocks::SNOW()); $this->map(Ids::SNOW_LAYER, function(Reader $in) : Block{ - //TODO: intentionally ignored covered_bit property (appears useless and we don't track it) + $in->ignored(StateNames::COVERED_BIT); //seems to be useless return Blocks::SNOW_LAYER()->setLayers($in->readBoundedInt(StateNames::HEIGHT, 0, 7) + 1); }); $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); @@ -1032,7 +1055,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::WHITE_GLAZED_TERRACOTTA(), $in)); $this->map(Ids::WOOD, function(Reader $in) : Block{ - //TODO: our impl doesn't support axis yet + $in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet $stripped = $in->readBool(StateNames::STRIPPED_BIT); return match($woodType = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_ACACIA => $stripped ? Blocks::STRIPPED_ACACIA_WOOD() : Blocks::ACACIA_WOOD(), @@ -2513,6 +2536,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize if(!array_key_exists($id, $this->deserializeFuncs)){ throw new BlockStateDeserializeException("Unknown block ID \"$id\""); } - return $this->deserializeFuncs[$id](new Reader($blockStateData)); + $reader = new Reader($blockStateData); + $block = $this->deserializeFuncs[$id]($reader); + $reader->checkUnreadProperties(); + return $block; } } From bd8dd48deebc28346e18e51da715fd79d8b6a532 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 27 May 2022 16:51:35 +0100 Subject: [PATCH 108/692] Assign new IDs to every block --- src/block/Block.php | 20 +- src/block/BlockFactory.php | 897 ++++++++++++------------- src/block/BlockIdentifier.php | 46 +- src/block/BlockIdentifierFlattened.php | 29 +- src/block/BlockLegacyIdHelper.php | 254 ++++--- src/block/BlockTypeIds.php | 581 ++++++++++++++++ src/block/FlowerPot.php | 2 +- src/block/WallCoralFan.php | 4 +- tests/phpunit/block/BlockTest.php | 10 +- 9 files changed, 1276 insertions(+), 567 deletions(-) create mode 100644 src/block/BlockTypeIds.php diff --git a/src/block/Block.php b/src/block/Block.php index c388dd58a..0e221b2a1 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -65,8 +65,8 @@ class Block{ * @param string $name English name of the block type (TODO: implement translations) */ public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ - if(($idInfo->getVariant() & $this->getStateBitmask()) !== 0){ - throw new \InvalidArgumentException("Variant 0x" . dechex($idInfo->getVariant()) . " collides with state bitmask 0x" . dechex($this->getStateBitmask())); + if(($idInfo->getLegacyVariant() & $this->getStateBitmask()) !== 0){ + throw new \InvalidArgumentException("Variant 0x" . dechex($idInfo->getLegacyVariant()) . " collides with state bitmask 0x" . dechex($this->getStateBitmask())); } $this->idInfo = $idInfo; $this->fallbackName = $name; @@ -86,8 +86,11 @@ class Block{ return $this->fallbackName; } + /** + * @deprecated + */ public function getId() : int{ - return $this->idInfo->getBlockId(); + return $this->idInfo->getLegacyBlockId(); } /** @@ -99,15 +102,18 @@ class Block{ public function asItem() : Item{ return ItemFactory::getInstance()->get( - $this->idInfo->getItemId(), - $this->idInfo->getVariant() | $this->writeStateToItemMeta() + $this->idInfo->getLegacyItemId(), + $this->idInfo->getLegacyVariant() | $this->writeStateToItemMeta() ); } + /** + * @deprecated + */ public function getMeta() : int{ $stateMeta = $this->writeStateToMeta(); assert(($stateMeta & ~$this->getStateBitmask()) === 0); - return $this->idInfo->getVariant() | $stateMeta; + return $this->idInfo->getLegacyVariant() | $stateMeta; } protected function writeStateToItemMeta() : int{ @@ -171,7 +177,7 @@ class Block{ * powered/unpowered, etc. */ public function getTypeId() : int{ - return ($this->idInfo->getBlockId() << Block::INTERNAL_METADATA_BITS) | $this->idInfo->getVariant(); + return $this->idInfo->getBlockTypeId(); } /** diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index eca2992af..879b51217 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -26,9 +26,10 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockIdentifierFlattened as BIDFlattened; -use pocketmine\block\BlockLegacyIds as Ids; +use pocketmine\block\BlockLegacyIds as LegacyIds; use pocketmine\block\BlockLegacyMetadata as Meta; use pocketmine\block\BlockToolType as ToolType; +use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\tile\Beacon as TileBeacon; @@ -112,10 +113,10 @@ class BlockFactory{ public function __construct(){ $railBreakInfo = new BlockBreakInfo(0.7); - $this->registerAllMeta(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); - $this->registerAllMeta(new Air(new BID(Ids::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); - $this->registerAllMeta(new Anvil(new BID(Ids::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new Bamboo(new BID(Ids::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + $this->registerAllMeta(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, LegacyIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); + $this->registerAllMeta(new Air(new BID(Ids::AIR, LegacyIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); + $this->registerAllMeta(new Anvil(new BID(Ids::ANVIL, LegacyIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->registerAllMeta(new Bamboo(new BID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ return 0.0; @@ -123,235 +124,235 @@ class BlockFactory{ return parent::getBreakTime($item); } })); - $this->registerAllMeta(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); + $this->registerAllMeta(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, LegacyIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->registerAllMeta(new FloorBanner(new BID(Ids::STANDING_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); - $this->registerAllMeta(new WallBanner(new BID(Ids::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - $this->registerAllMeta(new Barrel(new BID(Ids::BARREL, 0, null, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new Transparent(new BID(Ids::BARRIER, 0), "Barrier", BreakInfo::indestructible())); - $this->registerAllMeta(new Beacon(new BID(Ids::BEACON, 0, null, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - $this->registerAllMeta(new Bed(new BID(Ids::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); - $this->registerAllMeta(new Bedrock(new BID(Ids::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); + $this->registerAllMeta(new FloorBanner(new BID(Ids::BANNER, LegacyIds::STANDING_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); + $this->registerAllMeta(new WallBanner(new BID(Ids::WALL_BANNER, LegacyIds::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); + $this->registerAllMeta(new Barrel(new BID(Ids::BARREL, LegacyIds::BARREL, 0, null, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + $this->registerAllMeta(new Transparent(new BID(Ids::BARRIER, LegacyIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); + $this->registerAllMeta(new Beacon(new BID(Ids::BEACON, LegacyIds::BEACON, 0, null, TileBeacon::class), "Beacon", new BreakInfo(3.0))); + $this->registerAllMeta(new Bed(new BID(Ids::BED, LegacyIds::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); + $this->registerAllMeta(new Bedrock(new BID(Ids::BEDROCK, LegacyIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); - $this->registerAllMeta(new Beetroot(new BID(Ids::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); - $this->registerAllMeta(new Bell(new BID(Ids::BELL, 0, null, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new BlueIce(new BID(Ids::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - $this->registerAllMeta(new BoneBlock(new BID(Ids::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Bookshelf(new BID(Ids::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - $this->registerAllMeta(new BrewingStand(new BID(Ids::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Beetroot(new BID(Ids::BEETROOTS, LegacyIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); + $this->registerAllMeta(new Bell(new BID(Ids::BELL, LegacyIds::BELL, 0, null, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new BlueIce(new BID(Ids::BLUE_ICE, LegacyIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); + $this->registerAllMeta(new BoneBlock(new BID(Ids::BONE_BLOCK, LegacyIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Bookshelf(new BID(Ids::BOOKSHELF, LegacyIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); + $this->registerAllMeta(new BrewingStand(new BID(Ids::BREWING_STAND, LegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Stair(new BID(Ids::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::BRICK_STAIRS, LegacyIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::BRICKS, LegacyIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); - $this->registerAllMeta(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); - $this->registerAllMeta(new Cactus(new BID(Ids::CACTUS, 0), "Cactus", new BreakInfo(0.4))); - $this->registerAllMeta(new Cake(new BID(Ids::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake", new BreakInfo(0.5))); - $this->registerAllMeta(new Carrot(new BID(Ids::CARROTS, 0), "Carrot Block", BreakInfo::instant())); + $this->registerAllMeta(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, LegacyIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); + $this->registerAllMeta(new Cactus(new BID(Ids::CACTUS, LegacyIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); + $this->registerAllMeta(new Cake(new BID(Ids::CAKE, LegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake", new BreakInfo(0.5))); + $this->registerAllMeta(new Carrot(new BID(Ids::CARROTS, LegacyIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); - $this->registerAllMeta(new Chest(new BID(Ids::CHEST, 0, null, TileChest::class), "Chest", $chestBreakInfo)); - $this->registerAllMeta(new Clay(new BID(Ids::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->registerAllMeta(new Coal(new BID(Ids::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new CoalOre(new BID(Ids::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Chest(new BID(Ids::CHEST, LegacyIds::CHEST, 0, null, TileChest::class), "Chest", $chestBreakInfo)); + $this->registerAllMeta(new Clay(new BID(Ids::CLAY, LegacyIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->registerAllMeta(new Coal(new BID(Ids::COAL, LegacyIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->registerAllMeta(new CoalOre(new BID(Ids::COAL_ORE, LegacyIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->registerAllMeta($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, LegacyIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, LegacyIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::COBBLESTONE_STAIRS, LegacyIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, LegacyIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Cobweb(new BID(Ids::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - $this->registerAllMeta(new CocoaBlock(new BID(Ids::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - $this->registerAllMeta(new CoralBlock(new BID(Ids::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new CraftingTable(new BID(Ids::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_DETECTOR, [Ids::DAYLIGHT_DETECTOR_INVERTED], 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); - $this->registerAllMeta(new DeadBush(new BID(Ids::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->registerAllMeta(new DetectorRail(new BID(Ids::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); + $this->registerAllMeta(new Cobweb(new BID(Ids::COBWEB, LegacyIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); + $this->registerAllMeta(new CocoaBlock(new BID(Ids::COCOA_POD, LegacyIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); + $this->registerAllMeta(new CoralBlock(new BID(Ids::CORAL_BLOCK, LegacyIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new CraftingTable(new BID(Ids::CRAFTING_TABLE, LegacyIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); + $this->registerAllMeta(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, [LegacyIds::DAYLIGHT_DETECTOR_INVERTED], 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + $this->registerAllMeta(new DeadBush(new BID(Ids::DEAD_BUSH, LegacyIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->registerAllMeta(new DetectorRail(new BID(Ids::DETECTOR_RAIL, LegacyIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new DiamondOre(new BID(Ids::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new Dirt(new BID(Ids::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->registerAllMeta(new Opaque(new BID(Ids::DIAMOND, LegacyIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->registerAllMeta(new DiamondOre(new BID(Ids::DIAMOND_ORE, LegacyIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->registerAllMeta(new Dirt(new BID(Ids::DIRT, LegacyIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); $this->registerAllMeta( - new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant()), - new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant()), - new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant()), - new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant()), - new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1)), - new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1)), + new DoublePlant(new BID(Ids::SUNFLOWER, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant()), + new DoublePlant(new BID(Ids::LILAC, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant()), + new DoublePlant(new BID(Ids::ROSE_BUSH, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant()), + new DoublePlant(new BID(Ids::PEONY, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant()), + new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1)), + new DoubleTallGrass(new BID(Ids::LARGE_FERN, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1)), ); - $this->registerAllMeta(new DragonEgg(new BID(Ids::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new DriedKelp(new BID(Ids::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - $this->registerAllMeta(new Opaque(new BID(Ids::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new EmeraldOre(new BID(Ids::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); - $this->registerAllMeta(new EndRod(new BID(Ids::END_ROD, 0), "End Rod", BreakInfo::instant())); - $this->registerAllMeta(new Opaque(new BID(Ids::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + $this->registerAllMeta(new DragonEgg(new BID(Ids::DRAGON_EGG, LegacyIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new DriedKelp(new BID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); + $this->registerAllMeta(new Opaque(new BID(Ids::EMERALD, LegacyIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->registerAllMeta(new EmeraldOre(new BID(Ids::EMERALD_ORE, LegacyIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->registerAllMeta(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, LegacyIds::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->registerAllMeta(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, LegacyIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); + $this->registerAllMeta(new EndRod(new BID(Ids::END_ROD, LegacyIds::END_ROD, 0), "End Rod", BreakInfo::instant())); + $this->registerAllMeta(new Opaque(new BID(Ids::END_STONE, LegacyIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - $this->registerAllMeta(new Opaque(new BID(Ids::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::END_STONE_BRICKS, LegacyIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, LegacyIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); - $this->registerAllMeta(new EnderChest(new BID(Ids::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); - $this->registerAllMeta(new Farmland(new BID(Ids::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->registerAllMeta(new Fire(new BID(Ids::FIRE, 0), "Fire Block", BreakInfo::instant())); - $this->registerAllMeta(new FletchingTable(new BID(Ids::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); - $this->registerAllMeta(new Flower(new BID(Ids::DANDELION, 0), "Dandelion", BreakInfo::instant())); + $this->registerAllMeta(new EnderChest(new BID(Ids::ENDER_CHEST, LegacyIds::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + $this->registerAllMeta(new Farmland(new BID(Ids::FARMLAND, LegacyIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->registerAllMeta(new Fire(new BID(Ids::FIRE, LegacyIds::FIRE, 0), "Fire Block", BreakInfo::instant())); + $this->registerAllMeta(new FletchingTable(new BID(Ids::FLETCHING_TABLE, LegacyIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + $this->registerAllMeta(new Flower(new BID(Ids::DANDELION, LegacyIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); $this->registerAllMeta( - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant()), + new Flower(new BID(Ids::POPPY, LegacyIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant()), + new Flower(new BID(Ids::ALLIUM, LegacyIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant()), + new Flower(new BID(Ids::AZURE_BLUET, LegacyIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant()), + new Flower(new BID(Ids::BLUE_ORCHID, LegacyIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant()), + new Flower(new BID(Ids::CORNFLOWER, LegacyIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant()), + new Flower(new BID(Ids::LILY_OF_THE_VALLEY, LegacyIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant()), + new Flower(new BID(Ids::ORANGE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant()), + new Flower(new BID(Ids::OXEYE_DAISY, LegacyIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant()), + new Flower(new BID(Ids::PINK_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant()), + new Flower(new BID(Ids::RED_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant()), + new Flower(new BID(Ids::WHITE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant()), ); - $this->registerAllMeta(new FlowerPot(new BID(Ids::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - $this->registerAllMeta(new FrostedIce(new BID(Ids::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::FURNACE, [Ids::LIT_FURNACE], 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::BLAST_FURNACE, [Ids::LIT_BLAST_FURNACE], 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::SMOKER, [Ids::LIT_SMOKER], 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new FlowerPot(new BID(Ids::FLOWER_POT, LegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + $this->registerAllMeta(new FrostedIce(new BID(Ids::FROSTED_ICE, LegacyIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); + $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::FURNACE, LegacyIds::FURNACE, [LegacyIds::LIT_FURNACE], 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, [LegacyIds::LIT_BLAST_FURNACE], 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::SMOKER, LegacyIds::SMOKER, [LegacyIds::LIT_SMOKER], 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); - $this->registerAllMeta(new Glass(new BID(Ids::GLASS, 0), "Glass", $glassBreakInfo)); - $this->registerAllMeta(new GlassPane(new BID(Ids::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); - $this->registerAllMeta(new GlowingObsidian(new BID(Ids::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); - $this->registerAllMeta(new Glowstone(new BID(Ids::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - $this->registerAllMeta(new Opaque(new BID(Ids::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new Opaque(new BID(Ids::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->registerAllMeta(new Glass(new BID(Ids::GLASS, LegacyIds::GLASS, 0), "Glass", $glassBreakInfo)); + $this->registerAllMeta(new GlassPane(new BID(Ids::GLASS_PANE, LegacyIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); + $this->registerAllMeta(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, LegacyIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + $this->registerAllMeta(new Glowstone(new BID(Ids::GLOWSTONE, LegacyIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); + $this->registerAllMeta(new Opaque(new BID(Ids::GOLD, LegacyIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->registerAllMeta(new Opaque(new BID(Ids::GOLD_ORE, LegacyIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); - $this->registerAllMeta(new Grass(new BID(Ids::GRASS, 0), "Grass", $grassBreakInfo)); - $this->registerAllMeta(new GrassPath(new BID(Ids::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); - $this->registerAllMeta(new Gravel(new BID(Ids::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->registerAllMeta(new Grass(new BID(Ids::GRASS, LegacyIds::GRASS, 0), "Grass", $grassBreakInfo)); + $this->registerAllMeta(new GrassPath(new BID(Ids::GRASS_PATH, LegacyIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); + $this->registerAllMeta(new Gravel(new BID(Ids::GRAVEL, LegacyIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->registerAllMeta(new HardenedClay(new BID(Ids::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); + $this->registerAllMeta(new HardenedClay(new BID(Ids::HARDENED_CLAY, LegacyIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); - $this->registerAllMeta(new HardenedGlass(new BID(Ids::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new HardenedGlassPane(new BID(Ids::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new HayBale(new BID(Ids::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); - $this->registerAllMeta(new Hopper(new BID(Ids::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - $this->registerAllMeta(new Ice(new BID(Ids::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->registerAllMeta(new HardenedGlass(new BID(Ids::HARDENED_GLASS, LegacyIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); + $this->registerAllMeta(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, LegacyIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->registerAllMeta(new HayBale(new BID(Ids::HAY_BALE, LegacyIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); + $this->registerAllMeta(new Hopper(new BID(Ids::HOPPER, LegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + $this->registerAllMeta(new Ice(new BID(Ids::ICE, LegacyIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); - $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); - $this->registerAllMeta(new Transparent(new BID(Ids::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); + $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE, LegacyIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE2, LegacyIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); + $this->registerAllMeta(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, LegacyIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Opaque(new BID(Ids::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); - $this->registerAllMeta(new Thin(new BID(Ids::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::IRON, LegacyIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); + $this->registerAllMeta(new Thin(new BID(Ids::IRON_BARS, LegacyIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); - $this->registerAllMeta(new Door(new BID(Ids::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); - $this->registerAllMeta(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new ItemFrame(new BID(Ids::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - $this->registerAllMeta(new Jukebox(new BID(Ids::JUKEBOX, 0, ItemIds::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - $this->registerAllMeta(new Ladder(new BID(Ids::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $this->registerAllMeta(new Lantern(new BID(Ids::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Opaque(new BID(Ids::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new LapisOre(new BID(Ids::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new Lava(new BIDFlattened(Ids::FLOWING_LAVA, [Ids::STILL_LAVA], 0), "Lava", BreakInfo::indestructible(500.0))); - $this->registerAllMeta(new Lectern(new BID(Ids::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); - $this->registerAllMeta(new Lever(new BID(Ids::LEVER, 0), "Lever", new BreakInfo(0.5))); - $this->registerAllMeta(new Loom(new BID(Ids::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new Magma(new BID(Ids::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Melon(new BID(Ids::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); - $this->registerAllMeta(new MelonStem(new BID(Ids::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem", BreakInfo::instant())); - $this->registerAllMeta(new MonsterSpawner(new BID(Ids::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Mycelium(new BID(Ids::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->registerAllMeta(new Door(new BID(Ids::IRON_DOOR, LegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); + $this->registerAllMeta(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, LegacyIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::IRON_ORE, LegacyIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->registerAllMeta(new ItemFrame(new BID(Ids::ITEM_FRAME, LegacyIds::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + $this->registerAllMeta(new Jukebox(new BID(Ids::JUKEBOX, LegacyIds::JUKEBOX, 0, ItemIds::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + $this->registerAllMeta(new Ladder(new BID(Ids::LADDER, LegacyIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + $this->registerAllMeta(new Lantern(new BID(Ids::LANTERN, LegacyIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Opaque(new BID(Ids::LAPIS_LAZULI, LegacyIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->registerAllMeta(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, LegacyIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->registerAllMeta(new Lava(new BIDFlattened(Ids::LAVA, LegacyIds::FLOWING_LAVA, [LegacyIds::STILL_LAVA], 0), "Lava", BreakInfo::indestructible(500.0))); + $this->registerAllMeta(new Lectern(new BID(Ids::LECTERN, LegacyIds::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + $this->registerAllMeta(new Lever(new BID(Ids::LEVER, LegacyIds::LEVER, 0), "Lever", new BreakInfo(0.5))); + $this->registerAllMeta(new Loom(new BID(Ids::LOOM, LegacyIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); + $this->registerAllMeta(new Magma(new BID(Ids::MAGMA, LegacyIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Melon(new BID(Ids::MELON, LegacyIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + $this->registerAllMeta(new MelonStem(new BID(Ids::MELON_STEM, LegacyIds::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem", BreakInfo::instant())); + $this->registerAllMeta(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, LegacyIds::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Mycelium(new BID(Ids::MYCELIUM, LegacyIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); - $this->registerAllMeta(new Fence(new BID(Ids::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - $this->registerAllMeta(new NetherPortal(new BID(Ids::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->registerAllMeta(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new NetherReactor(new BID(Ids::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - $this->registerAllMeta(new NetherWartPlant(new BID(Ids::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart", BreakInfo::instant())); - $this->registerAllMeta(new Netherrack(new BID(Ids::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Note(new BID(Ids::NOTEBLOCK, 0, null, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - $this->registerAllMeta(new Opaque(new BID(Ids::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new PackedIce(new BID(Ids::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Podzol(new BID(Ids::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Potato(new BID(Ids::POTATOES, 0), "Potato Block", BreakInfo::instant())); - $this->registerAllMeta(new PoweredRail(new BID(Ids::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_BRICKS, LegacyIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::RED_NETHER_BRICKS, LegacyIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); + $this->registerAllMeta(new Fence(new BID(Ids::NETHER_BRICK_FENCE, LegacyIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, LegacyIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, LegacyIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->registerAllMeta(new NetherPortal(new BID(Ids::NETHER_PORTAL, LegacyIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); + $this->registerAllMeta(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, LegacyIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, LegacyIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_WART_BLOCK, LegacyIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); + $this->registerAllMeta(new NetherWartPlant(new BID(Ids::NETHER_WART, LegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart", BreakInfo::instant())); + $this->registerAllMeta(new Netherrack(new BID(Ids::NETHERRACK, LegacyIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Note(new BID(Ids::NOTE_BLOCK, LegacyIds::NOTEBLOCK, 0, null, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + $this->registerAllMeta(new Opaque(new BID(Ids::OBSIDIAN, LegacyIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + $this->registerAllMeta(new PackedIce(new BID(Ids::PACKED_ICE, LegacyIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->registerAllMeta(new Podzol(new BID(Ids::PODZOL, LegacyIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->registerAllMeta(new Potato(new BID(Ids::POTATOES, LegacyIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); + $this->registerAllMeta(new PoweredRail(new BID(Ids::POWERED_RAIL, LegacyIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->registerAllMeta( - new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo), - new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo), - new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo) + new Opaque(new BID(Ids::PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo), + new Opaque(new BID(Ids::DARK_PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo), + new Opaque(new BID(Ids::PRISMARINE_BRICKS, LegacyIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo) ); - $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, LegacyIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, LegacyIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_STAIRS, LegacyIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->registerAllMeta(new Pumpkin(new BID(Ids::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); - $this->registerAllMeta(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); - $this->registerAllMeta(new LitPumpkin(new BID(Ids::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); + $this->registerAllMeta(new Pumpkin(new BID(Ids::PUMPKIN, LegacyIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); + $this->registerAllMeta(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, LegacyIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); + $this->registerAllMeta(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, LegacyIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); - $this->registerAllMeta(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem", BreakInfo::instant())); + $this->registerAllMeta(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, LegacyIds::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem", BreakInfo::instant())); $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->registerAllMeta( - new Opaque(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo), - new SimplePillar(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) + new Opaque(new BID(Ids::PURPUR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo), + new SimplePillar(new BID(Ids::PURPUR_PILLAR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) ); - $this->registerAllMeta(new Stair(new BID(Ids::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::PURPUR_STAIRS, LegacyIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->registerAllMeta( - new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo), - new SimplePillar(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo), - new SimplePillar(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo), - new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo) //TODO: we may need to account for the fact this previously incorrectly had axis + new Opaque(new BID(Ids::QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo), + new SimplePillar(new BID(Ids::CHISELED_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo), + new SimplePillar(new BID(Ids::QUARTZ_PILLAR, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo), + new Opaque(new BID(Ids::SMOOTH_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo) //TODO: we may need to account for the fact this previously incorrectly had axis ); - $this->registerAllMeta(new Stair(new BID(Ids::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::QUARTZ_STAIRS, LegacyIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, LegacyIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); - $this->registerAllMeta(new Rail(new BID(Ids::RAIL, 0), "Rail", $railBreakInfo)); - $this->registerAllMeta(new RedMushroom(new BID(Ids::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); - $this->registerAllMeta(new Redstone(new BID(Ids::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new RedstoneComparator(new BIDFlattened(Ids::UNPOWERED_COMPARATOR, [Ids::POWERED_COMPARATOR], 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, [Ids::LIT_REDSTONE_LAMP], 0), "Redstone Lamp", new BreakInfo(0.3))); - $this->registerAllMeta(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, [Ids::LIT_REDSTONE_ORE], 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new RedstoneRepeater(new BIDFlattened(Ids::UNPOWERED_REPEATER, [Ids::POWERED_REPEATER], 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, [Ids::UNLIT_REDSTONE_TORCH], 0), "Redstone Torch", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); - $this->registerAllMeta(new Reserved6(new BID(Ids::RESERVED6, 0), "reserved6", BreakInfo::instant())); + $this->registerAllMeta(new Rail(new BID(Ids::RAIL, LegacyIds::RAIL, 0), "Rail", $railBreakInfo)); + $this->registerAllMeta(new RedMushroom(new BID(Ids::RED_MUSHROOM, LegacyIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); + $this->registerAllMeta(new Redstone(new BID(Ids::REDSTONE, LegacyIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->registerAllMeta(new RedstoneComparator(new BIDFlattened(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, [LegacyIds::POWERED_COMPARATOR], 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + $this->registerAllMeta(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, [LegacyIds::LIT_REDSTONE_LAMP], 0), "Redstone Lamp", new BreakInfo(0.3))); + $this->registerAllMeta(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, [LegacyIds::LIT_REDSTONE_ORE], 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->registerAllMeta(new RedstoneRepeater(new BIDFlattened(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, [LegacyIds::POWERED_REPEATER], 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); + $this->registerAllMeta(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, [LegacyIds::UNLIT_REDSTONE_TORCH], 0), "Redstone Torch", BreakInfo::instant())); + $this->registerAllMeta(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, LegacyIds::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); + $this->registerAllMeta(new Reserved6(new BID(Ids::RESERVED6, LegacyIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); $this->registerAllMeta( - new Sand(new BID(Ids::SAND, 0), "Sand", $sandBreakInfo), - new Sand(new BID(Ids::SAND, 1), "Red Sand", $sandBreakInfo) + new Sand(new BID(Ids::SAND, LegacyIds::SAND, 0), "Sand", $sandBreakInfo), + new Sand(new BID(Ids::RED_SAND, LegacyIds::SAND, 1), "Red Sand", $sandBreakInfo) ); - $this->registerAllMeta(new SeaLantern(new BID(Ids::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); - $this->registerAllMeta(new SeaPickle(new BID(Ids::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); - $this->registerAllMeta(new Skull(new BID(Ids::MOB_HEAD_BLOCK, 0, ItemIds::SKULL, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - $this->registerAllMeta(new Slime(new BID(Ids::SLIME, 0), "Slime Block", BreakInfo::instant())); - $this->registerAllMeta(new Snow(new BID(Ids::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new SnowLayer(new BID(Ids::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new SoulSand(new BID(Ids::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Sponge(new BID(Ids::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); + $this->registerAllMeta(new SeaLantern(new BID(Ids::SEA_LANTERN, LegacyIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); + $this->registerAllMeta(new SeaPickle(new BID(Ids::SEA_PICKLE, LegacyIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); + $this->registerAllMeta(new Skull(new BID(Ids::MOB_HEAD, LegacyIds::MOB_HEAD_BLOCK, 0, ItemIds::SKULL, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + $this->registerAllMeta(new Slime(new BID(Ids::SLIME, LegacyIds::SLIME, 0), "Slime Block", BreakInfo::instant())); + $this->registerAllMeta(new Snow(new BID(Ids::SNOW, LegacyIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new SnowLayer(new BID(Ids::SNOW_LAYER, LegacyIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new SoulSand(new BID(Ids::SOUL_SAND, LegacyIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->registerAllMeta(new Sponge(new BID(Ids::SPONGE, LegacyIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - $this->registerAllMeta(new ShulkerBox(new BID(Ids::UNDYED_SHULKER_BOX, 0, null, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + $this->registerAllMeta(new ShulkerBox(new BID(Ids::SHULKER_BOX, LegacyIds::UNDYED_SHULKER_BOX, 0, null, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->registerAllMeta( - $stone = new class(new BID(Ids::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ + $stone = new class(new BID(Ids::STONE, LegacyIds::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ public function getDropsForCompatibleTool(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; } @@ -360,109 +361,109 @@ class BlockFactory{ return true; } }, - new Opaque(new BID(Ids::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo), - new Opaque(new BID(Ids::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo), - new Opaque(new BID(Ids::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo), - new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo), - new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo), - new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo) + new Opaque(new BID(Ids::ANDESITE, LegacyIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo), + new Opaque(new BID(Ids::DIORITE, LegacyIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo), + new Opaque(new BID(Ids::GRANITE, LegacyIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo), + new Opaque(new BID(Ids::POLISHED_ANDESITE, LegacyIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo), + new Opaque(new BID(Ids::POLISHED_DIORITE, LegacyIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo), + new Opaque(new BID(Ids::POLISHED_GRANITE, LegacyIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo) ); $this->registerAllMeta( - $stoneBrick = new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo), - $mossyStoneBrick = new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo), - $crackedStoneBrick = new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo), - $chiseledStoneBrick = new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo) + $stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo), + $mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo), + $crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo), + $chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo) ); $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); $this->registerAllMeta( - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone), - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick), - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone), - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick), - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick), - new InfestedStone(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick) + new InfestedStone(new BID(Ids::INFESTED_STONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone), + new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick), + new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone), + new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick), + new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick), + new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick) ); - $this->registerAllMeta(new Stair(new BID(Ids::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new StoneButton(new BID(Ids::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Stonecutter(new BID(Ids::STONECUTTER_BLOCK, 0, ItemIds::STONECUTTER_BLOCK), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - $this->registerAllMeta(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Stair(new BID(Ids::STONE_STAIRS, LegacyIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Opaque(new BID(Ids::SMOOTH_STONE, LegacyIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::ANDESITE_STAIRS, LegacyIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::DIORITE_STAIRS, LegacyIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::GRANITE_STAIRS, LegacyIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, LegacyIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, LegacyIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, LegacyIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::STONE_BRICK_STAIRS, LegacyIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, LegacyIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + $this->registerAllMeta(new StoneButton(new BID(Ids::STONE_BUTTON, LegacyIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->registerAllMeta(new Stonecutter(new BID(Ids::STONECUTTER, LegacyIds::STONECUTTER_BLOCK, 0, ItemIds::STONECUTTER_BLOCK), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); + $this->registerAllMeta(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, LegacyIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $getStoneSlabId = static fn(int $stoneSlabId, int $meta) => BlockLegacyIdHelper::getStoneSlabIdentifier($stoneSlabId, $meta); + $getStoneSlabId = static fn(int $blockTypeId, int $stoneSlabId, int $meta) => BlockLegacyIdHelper::getStoneSlabIdentifier($blockTypeId, $stoneSlabId, $meta); foreach([ - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_NETHER_BRICK), "Nether Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_QUARTZ), "Quartz", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_SANDSTONE), "Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_SMOOTH_STONE), "Smooth Stone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(1, Meta::STONE_SLAB_STONE_BRICK), "Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_DARK_PRISMARINE), "Dark Prismarine", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_MOSSY_COBBLESTONE), "Mossy Cobblestone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_PRISMARINE), "Prismarine", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_PRISMARINE_BRICKS), "Prismarine Bricks", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_PURPUR), "Purpur", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_RED_NETHER_BRICK), "Red Nether Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_RED_SANDSTONE), "Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(2, Meta::STONE_SLAB2_SMOOTH_SANDSTONE), "Smooth Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_ANDESITE), "Andesite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_DIORITE), "Diorite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_END_STONE_BRICK), "End Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_GRANITE), "Granite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_POLISHED_ANDESITE), "Polished Andesite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_POLISHED_DIORITE), "Polished Diorite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_POLISHED_GRANITE), "Polished Granite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(3, Meta::STONE_SLAB3_SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(4, Meta::STONE_SLAB4_CUT_RED_SANDSTONE), "Cut Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(4, Meta::STONE_SLAB4_CUT_SANDSTONE), "Cut Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::BRICK_SLAB, 1, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::COBBLESTONE_SLAB, 1, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::FAKE_WOODEN_SLAB, 1, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::NETHER_BRICK_SLAB, 1, Meta::STONE_SLAB_NETHER_BRICK), "Nether Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::QUARTZ_SLAB, 1, Meta::STONE_SLAB_QUARTZ), "Quartz", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::SANDSTONE_SLAB, 1, Meta::STONE_SLAB_SANDSTONE), "Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::SMOOTH_STONE_SLAB, 1, Meta::STONE_SLAB_SMOOTH_STONE), "Smooth Stone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::STONE_BRICK_SLAB, 1, Meta::STONE_SLAB_STONE_BRICK), "Stone Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::DARK_PRISMARINE_SLAB, 2, Meta::STONE_SLAB2_DARK_PRISMARINE), "Dark Prismarine", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::MOSSY_COBBLESTONE_SLAB, 2, Meta::STONE_SLAB2_MOSSY_COBBLESTONE), "Mossy Cobblestone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::PRISMARINE_SLAB, 2, Meta::STONE_SLAB2_PRISMARINE), "Prismarine", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::PRISMARINE_BRICKS_SLAB, 2, Meta::STONE_SLAB2_PRISMARINE_BRICKS), "Prismarine Bricks", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::PURPUR_SLAB, 2, Meta::STONE_SLAB2_PURPUR), "Purpur", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::RED_NETHER_BRICK_SLAB, 2, Meta::STONE_SLAB2_RED_NETHER_BRICK), "Red Nether Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::RED_SANDSTONE_SLAB, 2, Meta::STONE_SLAB2_RED_SANDSTONE), "Red Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::SMOOTH_SANDSTONE_SLAB, 2, Meta::STONE_SLAB2_SMOOTH_SANDSTONE), "Smooth Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::ANDESITE_SLAB, 3, Meta::STONE_SLAB3_ANDESITE), "Andesite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::DIORITE_SLAB, 3, Meta::STONE_SLAB3_DIORITE), "Diorite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::END_STONE_BRICK_SLAB, 3, Meta::STONE_SLAB3_END_STONE_BRICK), "End Stone Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::GRANITE_SLAB, 3, Meta::STONE_SLAB3_GRANITE), "Granite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::POLISHED_ANDESITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_ANDESITE), "Polished Andesite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::POLISHED_DIORITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_DIORITE), "Polished Diorite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::POLISHED_GRANITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_GRANITE), "Polished Granite", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::SMOOTH_RED_SANDSTONE_SLAB, 3, Meta::STONE_SLAB3_SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::CUT_RED_SANDSTONE_SLAB, 4, Meta::STONE_SLAB4_CUT_RED_SANDSTONE), "Cut Red Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::CUT_SANDSTONE_SLAB, 4, Meta::STONE_SLAB4_CUT_SANDSTONE), "Cut Sandstone", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::MOSSY_STONE_BRICK_SLAB, 4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::SMOOTH_QUARTZ_SLAB, 4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo), + new Slab($getStoneSlabId(Ids::STONE_SLAB, 4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo), ] as $slabType){ $this->registerSlabWithDoubleHighBitsRemapping($slabType); } - $this->registerAllMeta(new Opaque(new BID(Ids::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Sugarcane(new BID(Ids::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane", BreakInfo::instant())); - $this->registerAllMeta(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, 0, ItemIds::SWEET_BERRIES), "Sweet Berry Bush", BreakInfo::instant())); - $this->registerAllMeta(new TNT(new BID(Ids::TNT, 0), "TNT", BreakInfo::instant())); + $this->registerAllMeta(new Opaque(new BID(Ids::LEGACY_STONECUTTER, LegacyIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new Sugarcane(new BID(Ids::SUGARCANE, LegacyIds::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane", BreakInfo::instant())); + $this->registerAllMeta(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, LegacyIds::SWEET_BERRY_BUSH, 0, ItemIds::SWEET_BERRIES), "Sweet Berry Bush", BreakInfo::instant())); + $this->registerAllMeta(new TNT(new BID(Ids::TNT, LegacyIds::TNT, 0), "TNT", BreakInfo::instant())); $this->registerAllMeta( - new TallGrass(new BID(Ids::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1)), - new TallGrass(new BID(Ids::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1)) + new TallGrass(new BID(Ids::FERN, LegacyIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1)), + new TallGrass(new BID(Ids::TALL_GRASS, LegacyIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1)) ); $this->registerAllMeta( - new Torch(new BID(Ids::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant()), - new Torch(new BID(Ids::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant()) + new Torch(new BID(Ids::BLUE_TORCH, LegacyIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant()), + new Torch(new BID(Ids::PURPLE_TORCH, LegacyIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant()) ); $this->registerAllMeta( - new Torch(new BID(Ids::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant()), - new Torch(new BID(Ids::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant()) + new Torch(new BID(Ids::RED_TORCH, LegacyIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant()), + new Torch(new BID(Ids::GREEN_TORCH, LegacyIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant()) ); - $this->registerAllMeta(new Torch(new BID(Ids::TORCH, 0), "Torch", BreakInfo::instant())); - $this->registerAllMeta(new TrappedChest(new BID(Ids::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest", $chestBreakInfo)); - $this->registerAllMeta(new Tripwire(new BID(Ids::TRIPWIRE, 0, ItemIds::STRING), "Tripwire", BreakInfo::instant())); - $this->registerAllMeta(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); - $this->registerAllMeta(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); - $this->registerAllMeta(new Vine(new BID(Ids::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->registerAllMeta(new Water(new BIDFlattened(Ids::FLOWING_WATER, [Ids::STILL_WATER], 0), "Water", BreakInfo::indestructible(500.0))); - $this->registerAllMeta(new WaterLily(new BID(Ids::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); + $this->registerAllMeta(new Torch(new BID(Ids::TORCH, LegacyIds::TORCH, 0), "Torch", BreakInfo::instant())); + $this->registerAllMeta(new TrappedChest(new BID(Ids::TRAPPED_CHEST, LegacyIds::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest", $chestBreakInfo)); + $this->registerAllMeta(new Tripwire(new BID(Ids::TRIPWIRE, LegacyIds::TRIPWIRE, 0, ItemIds::STRING), "Tripwire", BreakInfo::instant())); + $this->registerAllMeta(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, LegacyIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); + $this->registerAllMeta(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, LegacyIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); + $this->registerAllMeta(new Vine(new BID(Ids::VINES, LegacyIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); + $this->registerAllMeta(new Water(new BIDFlattened(Ids::WATER, LegacyIds::FLOWING_WATER, [LegacyIds::STILL_WATER], 0), "Water", BreakInfo::indestructible(500.0))); + $this->registerAllMeta(new WaterLily(new BID(Ids::LILY_PAD, LegacyIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta(new WeightedPressurePlateHeavy(new BID(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); - $this->registerAllMeta(new WeightedPressurePlateLight(new BID(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - $this->registerAllMeta(new Wheat(new BID(Ids::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); + $this->registerAllMeta(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, LegacyIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); + $this->registerAllMeta(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, LegacyIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); + $this->registerAllMeta(new Wheat(new BID(Ids::WHEAT, LegacyIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ @@ -487,23 +488,23 @@ class BlockFactory{ foreach(TreeType::getAll() as $treeType){ $magicNumber = $treeType->getMagicNumber(); $name = $treeType->getDisplayName(); - $planks[] = new Planks(new BID(Ids::PLANKS, $magicNumber), $name . " Planks", $planksBreakInfo); - $saplings[] = new Sapling(new BID(Ids::SAPLING, $magicNumber), $name . " Sapling", BreakInfo::instant(), $treeType); - $fences[] = new WoodenFence(new BID(Ids::FENCE, $magicNumber), $name . " Fence", $planksBreakInfo); - $this->registerSlabWithDoubleHighBitsRemapping(new WoodenSlab(new BIDFlattened(Ids::WOODEN_SLAB, [Ids::DOUBLE_WOODEN_SLAB], $magicNumber), $name, $planksBreakInfo)); + $planks[] = new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($treeType), $name . " Planks", $planksBreakInfo); + $saplings[] = new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType); + $fences[] = new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($treeType), $name . " Fence", $planksBreakInfo); + $this->registerSlabWithDoubleHighBitsRemapping(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($treeType), $name, $planksBreakInfo)); //TODO: find a better way to deal with this split - $leaves[] = new Leaves(new BID($magicNumber >= 4 ? Ids::LEAVES2 : Ids::LEAVES, $magicNumber & 0x03), $name . " Leaves", $leavesBreakInfo, $treeType); + $leaves[] = new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType); - $this->register(new Log(new BID($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, $magicNumber & 0x03), $name . " Log", $logBreakInfo, $treeType, false)); - $wood = new Wood(new BID(Ids::WOOD, $magicNumber), $name . " Wood", $logBreakInfo, $treeType, false); - $this->remap($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, ($magicNumber & 0x03) | 0b1100, $wood); + $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType, false)); + $wood = new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType, false); + $this->remap($magicNumber >= 4 ? LegacyIds::LOG2 : LegacyIds::LOG, ($magicNumber & 0x03) | 0b1100, $wood); $allSidedLogs[] = $wood; - $allSidedLogs[] = new Wood(new BID(Ids::WOOD, $magicNumber | BlockLegacyMetadata::WOOD_FLAG_STRIPPED), "Stripped $name Wood", $logBreakInfo, $treeType, true); + $allSidedLogs[] = new Wood(BlockLegacyIdHelper::getAllSidedStrippedLogIdentifier($treeType), "Stripped $name Wood", $logBreakInfo, $treeType, true); $this->registerAllMeta(new Log(BlockLegacyIdHelper::getStrippedLogIdentifier($treeType), "Stripped " . $name . " Log", $logBreakInfo, $treeType, true)); - $this->registerAllMeta(new FenceGate(BlockLegacyIdHelper::getWoodenFenceIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); + $this->registerAllMeta(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); $this->registerAllMeta(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); $this->registerAllMeta(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($treeType), $name . " Door", $woodenDoorBreakInfo)); @@ -520,25 +521,23 @@ class BlockFactory{ $this->registerAllMeta(...$leaves); $this->registerAllMeta(...$allSidedLogs); - static $sandstoneTypes = [ - Meta::SANDSTONE_NORMAL => "", - Meta::SANDSTONE_CHISELED => "Chiseled ", - Meta::SANDSTONE_CUT => "Cut ", - Meta::SANDSTONE_SMOOTH => "Smooth " - ]; $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); - $sandstones = []; - $redSandstones = []; - foreach($sandstoneTypes as $variant => $prefix){ - $sandstones[] = new Opaque(new BID(Ids::SANDSTONE, $variant), $prefix . "Sandstone", $sandstoneBreakInfo); - $redSandstones[] = new Opaque(new BID(Ids::RED_SANDSTONE, $variant), $prefix . "Red Sandstone", $sandstoneBreakInfo); - } - $this->registerAllMeta(...$sandstones); - $this->registerAllMeta(...$redSandstones); + $this->registerAllMeta(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, LegacyIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, LegacyIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::SANDSTONE_STAIRS, LegacyIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); + $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, LegacyIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + $this->registerAllMeta( + new Opaque(new BID(Ids::SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::CHISELED_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::CUT_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::SMOOTH_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo), + ); + $this->registerAllMeta( + new Opaque(new BID(Ids::RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::CUT_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo), + new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo), + ); $glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); foreach(DyeColor::getAll() as $color){ @@ -547,16 +546,16 @@ class BlockFactory{ }; $this->registerAllMeta(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); } - $this->registerAllMeta(new DyedShulkerBox(new BID(Ids::SHULKER_BOX, 0, null, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); - $this->registerAllMeta(new StainedGlass(new BID(Ids::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); - $this->registerAllMeta(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); - $this->registerAllMeta(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); - $this->registerAllMeta(new StainedHardenedGlass(new BID(Ids::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new StainedHardenedGlassPane(new BID(Ids::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new Carpet(new BID(Ids::CARPET, 0), "Carpet", new BreakInfo(0.1))); - $this->registerAllMeta(new Concrete(new BID(Ids::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Wool(new BID(Ids::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + $this->registerAllMeta(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, LegacyIds::SHULKER_BOX, 0, null, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + $this->registerAllMeta(new StainedGlass(new BID(Ids::STAINED_GLASS, LegacyIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); + $this->registerAllMeta(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, LegacyIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); + $this->registerAllMeta(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, LegacyIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); + $this->registerAllMeta(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, LegacyIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); + $this->registerAllMeta(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, LegacyIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->registerAllMeta(new Carpet(new BID(Ids::CARPET, LegacyIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); + $this->registerAllMeta(new Concrete(new BID(Ids::CONCRETE, LegacyIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->registerAllMeta(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, LegacyIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->registerAllMeta(new Wool(new BID(Ids::WOOL, LegacyIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); if($item->getBlockToolType() === ToolType::SHEARS){ @@ -570,48 +569,48 @@ class BlockFactory{ //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->registerAllMeta( - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo), - new Wall(new BID(Ids::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo), + new Wall(new BID(Ids::ANDESITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo), + new Wall(new BID(Ids::BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::DIORITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo), + new Wall(new BID(Ids::END_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::GRANITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo), + new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo), + new Wall(new BID(Ids::NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::PRISMARINE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo), + new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo), + new Wall(new BID(Ids::RED_SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo), + new Wall(new BID(Ids::SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo), + new Wall(new BID(Ids::STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo), ); $this->registerElements(); $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->registerAllMeta( - new ChemistryTable(new BID(Ids::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo) + new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo), + new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo), + new ChemistryTable(new BID(Ids::LAB_TABLE, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo), + new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo) ); - $this->registerAllMeta(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); + $this->registerAllMeta(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, LegacyIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); $this->registerMushroomBlocks(); $this->registerAllMeta(new Coral( - new BID(Ids::CORAL, 0), + new BID(Ids::CORAL, LegacyIds::CORAL, 0), "Coral", BreakInfo::instant(), )); $this->registerAllMeta(new FloorCoralFan( - new BlockIdentifierFlattened(Ids::CORAL_FAN, [Ids::CORAL_FAN_DEAD], 0, ItemIds::CORAL_FAN), + new BlockIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, [LegacyIds::CORAL_FAN_DEAD], 0, ItemIds::CORAL_FAN), "Coral Fan", BreakInfo::instant(), )); $this->registerAllMeta(new WallCoralFan( - new BlockIdentifierFlattened(Ids::CORAL_FAN_HANG, [Ids::CORAL_FAN_HANG2, Ids::CORAL_FAN_HANG3], 0, ItemIds::CORAL_FAN), + new BlockIdentifierFlattened(Ids::WALL_CORAL_FAN, LegacyIds::CORAL_FAN_HANG, [LegacyIds::CORAL_FAN_HANG2, LegacyIds::CORAL_FAN_HANG3], 0, ItemIds::CORAL_FAN), "Wall Coral Fan", BreakInfo::instant(), )); @@ -758,8 +757,8 @@ class BlockFactory{ $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); $mushroomBlocks = [ - new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo), - new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo) + new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, LegacyIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo), + new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, LegacyIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo) ]; //caps @@ -790,136 +789,136 @@ class BlockFactory{ } //finally, the stems - $mushroomStem = new MushroomStem(new BID(Ids::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo); - $this->remap(Ids::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); - $this->remap(Ids::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); - $allSidedMushroomStem = new MushroomStem(new BID(Ids::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo); - $this->remap(Ids::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); - $this->remap(Ids::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); + $mushroomStem = new MushroomStem(new BID(Ids::MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo); + $this->remap(LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); + $this->remap(LegacyIds::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); + $allSidedMushroomStem = new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo); + $this->remap(LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); + $this->remap(LegacyIds::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); } private function registerElements() : void{ $instaBreak = BreakInfo::instant(); - $this->registerAllMeta(new Opaque(new BID(Ids::ELEMENT_0, 0), "???", $instaBreak)); + $this->registerAllMeta(new Opaque(new BID(Ids::ELEMENT_ZERO, LegacyIds::ELEMENT_0, 0), "???", $instaBreak)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HYDROGEN, LegacyIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HELIUM, LegacyIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LITHIUM, LegacyIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BERYLLIUM, LegacyIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BORON, LegacyIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CARBON, LegacyIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NITROGEN, LegacyIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OXYGEN, LegacyIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FLUORINE, LegacyIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEON, LegacyIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SODIUM, LegacyIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MAGNESIUM, LegacyIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ALUMINUM, LegacyIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SILICON, LegacyIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, LegacyIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SULFUR, LegacyIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CHLORINE, LegacyIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ARGON, LegacyIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_POTASSIUM, LegacyIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CALCIUM, LegacyIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SCANDIUM, LegacyIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TITANIUM, LegacyIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_VANADIUM, LegacyIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CHROMIUM, LegacyIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MANGANESE, LegacyIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IRON, LegacyIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COBALT, LegacyIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NICKEL, LegacyIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COPPER, LegacyIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ZINC, LegacyIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GALLIUM, LegacyIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GERMANIUM, LegacyIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ARSENIC, LegacyIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SELENIUM, LegacyIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BROMINE, LegacyIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_KRYPTON, LegacyIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUBIDIUM, LegacyIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_STRONTIUM, LegacyIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_YTTRIUM, LegacyIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, LegacyIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NIOBIUM, LegacyIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, LegacyIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TECHNETIUM, LegacyIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUTHENIUM, LegacyIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RHODIUM, LegacyIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PALLADIUM, LegacyIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SILVER, LegacyIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CADMIUM, LegacyIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_INDIUM, LegacyIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TIN, LegacyIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ANTIMONY, LegacyIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TELLURIUM, LegacyIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IODINE, LegacyIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_XENON, LegacyIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CESIUM, LegacyIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BARIUM, LegacyIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LANTHANUM, LegacyIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CERIUM, LegacyIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, LegacyIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEODYMIUM, LegacyIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PROMETHIUM, LegacyIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SAMARIUM, LegacyIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_EUROPIUM, LegacyIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GADOLINIUM, LegacyIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TERBIUM, LegacyIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, LegacyIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HOLMIUM, LegacyIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ERBIUM, LegacyIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THULIUM, LegacyIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_YTTERBIUM, LegacyIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LUTETIUM, LegacyIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HAFNIUM, LegacyIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TANTALUM, LegacyIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TUNGSTEN, LegacyIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RHENIUM, LegacyIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OSMIUM, LegacyIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IRIDIUM, LegacyIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PLATINUM, LegacyIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GOLD, LegacyIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MERCURY, LegacyIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THALLIUM, LegacyIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LEAD, LegacyIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BISMUTH, LegacyIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_POLONIUM, LegacyIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ASTATINE, LegacyIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RADON, LegacyIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FRANCIUM, LegacyIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RADIUM, LegacyIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ACTINIUM, LegacyIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THORIUM, LegacyIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, LegacyIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_URANIUM, LegacyIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, LegacyIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PLUTONIUM, LegacyIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_AMERICIUM, LegacyIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CURIUM, LegacyIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BERKELIUM, LegacyIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, LegacyIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, LegacyIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FERMIUM, LegacyIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, LegacyIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NOBELIUM, LegacyIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, LegacyIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, LegacyIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DUBNIUM, LegacyIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SEABORGIUM, LegacyIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BOHRIUM, LegacyIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HASSIUM, LegacyIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MEITNERIUM, LegacyIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, LegacyIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, LegacyIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COPERNICIUM, LegacyIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NIHONIUM, LegacyIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FLEROVIUM, LegacyIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, LegacyIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, LegacyIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TENNESSINE, LegacyIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); + $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OGANESSON, LegacyIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); } /** @@ -932,12 +931,12 @@ class BlockFactory{ private function registerAllMeta(Block $default, Block ...$additional) : void{ $ids = []; $this->register($default); - foreach($default->getIdInfo()->getAllBlockIds() as $id){ + foreach($default->getIdInfo()->getAllLegacyBlockIds() as $id){ $ids[$id] = $id; } foreach($additional as $block){ $this->register($block); - foreach($block->getIdInfo()->getAllBlockIds() as $id){ + foreach($block->getIdInfo()->getAllLegacyBlockIds() as $id){ $ids[$id] = $id; } } @@ -951,7 +950,7 @@ class BlockFactory{ $this->register($block); $identifierFlattened = $block->getIdInfo(); if($identifierFlattened instanceof BlockIdentifierFlattened){ - $this->remap($identifierFlattened->getSecondId(), $identifierFlattened->getVariant() | 0x8, $block->setSlabType(SlabType::DOUBLE())); + $this->remap($identifierFlattened->getSecondId(), $identifierFlattened->getLegacyVariant() | 0x8, $block->setSlabType(SlabType::DOUBLE())); } } @@ -968,14 +967,14 @@ class BlockFactory{ * $override parameter. */ public function register(Block $block, bool $override = false) : void{ - $variant = $block->getIdInfo()->getVariant(); + $variant = $block->getIdInfo()->getLegacyVariant(); $stateMask = $block->getStateBitmask(); if(($variant & $stateMask) !== 0){ throw new \InvalidArgumentException("Block variant collides with state bitmask"); } - foreach($block->getIdInfo()->getAllBlockIds() as $id){ + foreach($block->getIdInfo()->getAllLegacyBlockIds() as $id){ if(!$override && $this->isRegistered($id, $variant)){ throw new \InvalidArgumentException("Block registration $id:$variant conflicts with an existing block"); } @@ -1057,7 +1056,7 @@ class BlockFactory{ }elseif(($mappedIndex = $this->getMappedStateId($index)) !== $index && isset($this->fullList[$mappedIndex])){ //cold $block = clone $this->fullList[$mappedIndex]; }else{ - $block = new UnknownBlock(new BID($id, $meta), BreakInfo::instant()); + $block = new UnknownBlock(new BID($id, $id, $meta), BreakInfo::instant()); } return $block; diff --git a/src/block/BlockIdentifier.php b/src/block/BlockIdentifier.php index b99517397..f0e5fd683 100644 --- a/src/block/BlockIdentifier.php +++ b/src/block/BlockIdentifier.php @@ -31,16 +31,20 @@ class BlockIdentifier{ * @phpstan-param class-string|null $tileClass */ public function __construct( - private int $blockId, - private int $variant, - private ?int $itemId = null, + private int $blockTypeId, + private int $legacyBlockId, + private int $legacyVariant, + private ?int $legacyItemId = null, private ?string $tileClass = null ){ - if($blockId < 0){ - throw new \InvalidArgumentException("Block ID may not be negative"); + if($blockTypeId < 0){ + throw new \InvalidArgumentException("Block type ID may not be negative"); } - if($variant < 0){ - throw new \InvalidArgumentException("Block variant may not be negative"); + if($legacyBlockId < 0){ + throw new \InvalidArgumentException("Legacy block ID may not be negative"); + } + if($legacyVariant < 0){ + throw new \InvalidArgumentException("Legacy block variant may not be negative"); } if($tileClass !== null){ @@ -48,23 +52,35 @@ class BlockIdentifier{ } } - public function getBlockId() : int{ - return $this->blockId; + public function getBlockTypeId() : int{ return $this->blockTypeId; } + + /** + * @deprecated + */ + public function getLegacyBlockId() : int{ + return $this->legacyBlockId; } /** + * @deprecated * @return int[] */ - public function getAllBlockIds() : array{ - return [$this->blockId]; + public function getAllLegacyBlockIds() : array{ + return [$this->legacyBlockId]; } - public function getVariant() : int{ - return $this->variant; + /** + * @deprecated + */ + public function getLegacyVariant() : int{ + return $this->legacyVariant; } - public function getItemId() : int{ - return $this->itemId ?? ($this->blockId > 255 ? 255 - $this->blockId : $this->blockId); + /** + * @deprecated + */ + public function getLegacyItemId() : int{ + return $this->legacyItemId ?? ($this->legacyBlockId > 255 ? 255 - $this->legacyBlockId : $this->legacyBlockId); } /** diff --git a/src/block/BlockIdentifierFlattened.php b/src/block/BlockIdentifierFlattened.php index 1eca84d52..5e9b579c6 100644 --- a/src/block/BlockIdentifierFlattened.php +++ b/src/block/BlockIdentifierFlattened.php @@ -28,32 +28,41 @@ use function count; class BlockIdentifierFlattened extends BlockIdentifier{ /** @var int[] */ - private array $additionalIds; + private array $legacyAdditionalIds; /** - * @param int[] $additionalIds + * @param int[] $legacyAdditionalIds */ - public function __construct(int $blockId, array $additionalIds, int $variant, ?int $itemId = null, ?string $tileClass = null){ - if(count($additionalIds) === 0){ + public function __construct(int $blockTypeId, int $legacyBlockId, array $legacyAdditionalIds, int $legacyVariant, ?int $legacyItemId = null, ?string $tileClass = null){ + if(count($legacyAdditionalIds) === 0){ throw new \InvalidArgumentException("Expected at least 1 additional ID"); } - parent::__construct($blockId, $variant, $itemId, $tileClass); + parent::__construct($blockTypeId, $legacyBlockId, $legacyVariant, $legacyItemId, $tileClass); - $this->additionalIds = $additionalIds; + $this->legacyAdditionalIds = $legacyAdditionalIds; } + /** + * @deprecated + */ public function getAdditionalId(int $index) : int{ - if(!isset($this->additionalIds[$index])){ + if(!isset($this->legacyAdditionalIds[$index])){ throw new \InvalidArgumentException("No such ID at index $index"); } - return $this->additionalIds[$index]; + return $this->legacyAdditionalIds[$index]; } + /** + * @deprecated + */ public function getSecondId() : int{ return $this->getAdditionalId(0); } - public function getAllBlockIds() : array{ - return [$this->getBlockId(), ...$this->additionalIds]; + /** + * @deprecated + */ + public function getAllLegacyBlockIds() : array{ + return [$this->getLegacyBlockId(), ...$this->legacyAdditionalIds]; } } diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 945053824..2576d11a8 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -24,7 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockLegacyIds as Ids; +use pocketmine\block\BlockIdentifierFlattened as BIDFlattened; +use pocketmine\block\BlockLegacyIds as LegacyIds; +use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\TreeType; @@ -33,20 +35,116 @@ use pocketmine\utils\AssumptionFailedError; final class BlockLegacyIdHelper{ + public static function getWoodenPlanksIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_PLANKS, + TreeType::SPRUCE()->id() => Ids::SPRUCE_PLANKS, + TreeType::BIRCH()->id() => Ids::BIRCH_PLANKS, + TreeType::JUNGLE()->id() => Ids::JUNGLE_PLANKS, + TreeType::ACACIA()->id() => Ids::ACACIA_PLANKS, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_PLANKS, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::PLANKS, $treeType->getMagicNumber()); + } + + public static function getWoodenFenceIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_FENCE, + TreeType::SPRUCE()->id() => Ids::SPRUCE_FENCE, + TreeType::BIRCH()->id() => Ids::BIRCH_FENCE, + TreeType::JUNGLE()->id() => Ids::JUNGLE_FENCE, + TreeType::ACACIA()->id() => Ids::ACACIA_FENCE, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::FENCE, $treeType->getMagicNumber()); + } + + public static function getWoodenSlabIdentifier(TreeType $treeType) : BIDFlattened{ + return new BIDFlattened(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_SLAB, + TreeType::SPRUCE()->id() => Ids::SPRUCE_SLAB, + TreeType::BIRCH()->id() => Ids::BIRCH_SLAB, + TreeType::JUNGLE()->id() => Ids::JUNGLE_SLAB, + TreeType::ACACIA()->id() => Ids::ACACIA_SLAB, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::WOODEN_SLAB, [LegacyIds::DOUBLE_WOODEN_SLAB], $treeType->getMagicNumber()); + } + + public static function getLogIdentifier(TreeType $treeType) : BID{ + return match($treeType->id()){ + TreeType::OAK()->id() => new BID(Ids::OAK_LOG, LegacyIds::LOG, 0), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG, LegacyIds::LOG, 1), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG, LegacyIds::LOG, 2), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG, LegacyIds::LOG, 3), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG, LegacyIds::LOG2, 0), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG, LegacyIds::LOG2, 1), + default => throw new AssumptionFailedError("All tree types should be covered") + }; + } + + public static function getAllSidedLogIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_WOOD, + TreeType::SPRUCE()->id() => Ids::SPRUCE_WOOD, + TreeType::BIRCH()->id() => Ids::BIRCH_WOOD, + TreeType::JUNGLE()->id() => Ids::JUNGLE_WOOD, + TreeType::ACACIA()->id() => Ids::ACACIA_WOOD, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_WOOD, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::WOOD, $treeType->getMagicNumber()); + } + + public static function getAllSidedStrippedLogIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::STRIPPED_OAK_WOOD, + TreeType::SPRUCE()->id() => Ids::STRIPPED_SPRUCE_WOOD, + TreeType::BIRCH()->id() => Ids::STRIPPED_BIRCH_WOOD, + TreeType::JUNGLE()->id() => Ids::STRIPPED_JUNGLE_WOOD, + TreeType::ACACIA()->id() => Ids::STRIPPED_ACACIA_WOOD, + TreeType::DARK_OAK()->id() => Ids::STRIPPED_DARK_OAK_WOOD, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::WOOD, $treeType->getMagicNumber() | BlockLegacyMetadata::WOOD_FLAG_STRIPPED); + } + + public static function getLeavesIdentifier(TreeType $treeType) : BID{ + return match($treeType->id()){ + TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES, LegacyIds::LEAVES, 0), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES, LegacyIds::LEAVES, 1), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES, LegacyIds::LEAVES, 2), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES, LegacyIds::LEAVES, 3), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES, LegacyIds::LEAVES2, 0), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES, LegacyIds::LEAVES2, 1), + default => throw new AssumptionFailedError("All tree types should be covered") + }; + } + + public static function getSaplingIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_SAPLING, + TreeType::SPRUCE()->id() => Ids::SPRUCE_SAPLING, + TreeType::BIRCH()->id() => Ids::BIRCH_SAPLING, + TreeType::JUNGLE()->id() => Ids::JUNGLE_SAPLING, + TreeType::ACACIA()->id() => Ids::ACACIA_SAPLING, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SAPLING, + default => throw new AssumptionFailedError("All tree types should be covered") + }, LegacyIds::SAPLING, $treeType->getMagicNumber()); + } + public static function getWoodenFloorSignIdentifier(TreeType $treeType) : BID{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::SIGN_POST, 0, ItemIds::SIGN, TileSign::class); + return new BID(Ids::OAK_SIGN, LegacyIds::SIGN_POST, 0, ItemIds::SIGN, TileSign::class); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_STANDING_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); + return new BID(Ids::SPRUCE_SIGN, LegacyIds::SPRUCE_STANDING_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_STANDING_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); + return new BID(Ids::BIRCH_SIGN, LegacyIds::BIRCH_STANDING_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_STANDING_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); + return new BID(Ids::JUNGLE_SIGN, LegacyIds::JUNGLE_STANDING_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_STANDING_SIGN,0, ItemIds::ACACIA_SIGN, TileSign::class); + return new BID(Ids::ACACIA_SIGN, LegacyIds::ACACIA_STANDING_SIGN, 0, ItemIds::ACACIA_SIGN, TileSign::class); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARKOAK_STANDING_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); + return new BID(Ids::DARK_OAK_SIGN, LegacyIds::DARKOAK_STANDING_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -54,17 +152,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenWallSignIdentifier(TreeType $treeType) : BID{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::WALL_SIGN, 0, ItemIds::SIGN, TileSign::class); + return new BID(Ids::OAK_WALL_SIGN, LegacyIds::WALL_SIGN, 0, ItemIds::SIGN, TileSign::class); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_WALL_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); + return new BID(Ids::SPRUCE_WALL_SIGN, LegacyIds::SPRUCE_WALL_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_WALL_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); + return new BID(Ids::BIRCH_WALL_SIGN, LegacyIds::BIRCH_WALL_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_WALL_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); + return new BID(Ids::JUNGLE_WALL_SIGN, LegacyIds::JUNGLE_WALL_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_WALL_SIGN, 0, ItemIds::ACACIA_SIGN, TileSign::class); + return new BID(Ids::ACACIA_WALL_SIGN, LegacyIds::ACACIA_WALL_SIGN, 0, ItemIds::ACACIA_SIGN, TileSign::class); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARKOAK_WALL_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); + return new BID(Ids::DARK_OAK_WALL_SIGN, LegacyIds::DARKOAK_WALL_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -72,17 +170,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenTrapdoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::WOODEN_TRAPDOOR, 0); + return new BID(Ids::OAK_TRAPDOOR, LegacyIds::WOODEN_TRAPDOOR, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::SPRUCE_TRAPDOOR, 0); + return new BID(Ids::SPRUCE_TRAPDOOR, LegacyIds::SPRUCE_TRAPDOOR, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::BIRCH_TRAPDOOR, 0); + return new BID(Ids::BIRCH_TRAPDOOR, LegacyIds::BIRCH_TRAPDOOR, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::JUNGLE_TRAPDOOR, 0); + return new BID(Ids::JUNGLE_TRAPDOOR, LegacyIds::JUNGLE_TRAPDOOR, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::ACACIA_TRAPDOOR, 0); + return new BID(Ids::ACACIA_TRAPDOOR, LegacyIds::ACACIA_TRAPDOOR, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::DARK_OAK_TRAPDOOR, 0); + return new BID(Ids::DARK_OAK_TRAPDOOR, LegacyIds::DARK_OAK_TRAPDOOR, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -90,17 +188,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenButtonIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::WOODEN_BUTTON, 0); + return new BID(Ids::OAK_BUTTON, LegacyIds::WOODEN_BUTTON, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::SPRUCE_BUTTON, 0); + return new BID(Ids::SPRUCE_BUTTON, LegacyIds::SPRUCE_BUTTON, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::BIRCH_BUTTON, 0); + return new BID(Ids::BIRCH_BUTTON, LegacyIds::BIRCH_BUTTON, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::JUNGLE_BUTTON, 0); + return new BID(Ids::JUNGLE_BUTTON, LegacyIds::JUNGLE_BUTTON, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::ACACIA_BUTTON, 0); + return new BID(Ids::ACACIA_BUTTON, LegacyIds::ACACIA_BUTTON, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::DARK_OAK_BUTTON, 0); + return new BID(Ids::DARK_OAK_BUTTON, LegacyIds::DARK_OAK_BUTTON, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -108,17 +206,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenPressurePlateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::WOODEN_PRESSURE_PLATE, 0); + return new BID(Ids::OAK_PRESSURE_PLATE, LegacyIds::WOODEN_PRESSURE_PLATE, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::SPRUCE_PRESSURE_PLATE, 0); + return new BID(Ids::SPRUCE_PRESSURE_PLATE, LegacyIds::SPRUCE_PRESSURE_PLATE, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::BIRCH_PRESSURE_PLATE, 0); + return new BID(Ids::BIRCH_PRESSURE_PLATE, LegacyIds::BIRCH_PRESSURE_PLATE, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::JUNGLE_PRESSURE_PLATE, 0); + return new BID(Ids::JUNGLE_PRESSURE_PLATE, LegacyIds::JUNGLE_PRESSURE_PLATE, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::ACACIA_PRESSURE_PLATE, 0); + return new BID(Ids::ACACIA_PRESSURE_PLATE, LegacyIds::ACACIA_PRESSURE_PLATE, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::DARK_OAK_PRESSURE_PLATE, 0); + return new BID(Ids::DARK_OAK_PRESSURE_PLATE, LegacyIds::DARK_OAK_PRESSURE_PLATE, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -126,35 +224,35 @@ final class BlockLegacyIdHelper{ public static function getWoodenDoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_DOOR_BLOCK, 0, ItemIds::OAK_DOOR); + return new BID(Ids::OAK_DOOR, LegacyIds::OAK_DOOR_BLOCK, 0, ItemIds::OAK_DOOR); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_DOOR_BLOCK, 0, ItemIds::SPRUCE_DOOR); + return new BID(Ids::SPRUCE_DOOR, LegacyIds::SPRUCE_DOOR_BLOCK, 0, ItemIds::SPRUCE_DOOR); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_DOOR_BLOCK, 0, ItemIds::BIRCH_DOOR); + return new BID(Ids::BIRCH_DOOR, LegacyIds::BIRCH_DOOR_BLOCK, 0, ItemIds::BIRCH_DOOR); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_DOOR_BLOCK, 0, ItemIds::JUNGLE_DOOR); + return new BID(Ids::JUNGLE_DOOR, LegacyIds::JUNGLE_DOOR_BLOCK, 0, ItemIds::JUNGLE_DOOR); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_DOOR_BLOCK, 0, ItemIds::ACACIA_DOOR); + return new BID(Ids::ACACIA_DOOR, LegacyIds::ACACIA_DOOR_BLOCK, 0, ItemIds::ACACIA_DOOR); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_DOOR_BLOCK, 0, ItemIds::DARK_OAK_DOOR); + return new BID(Ids::DARK_OAK_DOOR, LegacyIds::DARK_OAK_DOOR_BLOCK, 0, ItemIds::DARK_OAK_DOOR); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenFenceIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenFenceGateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::OAK_FENCE_GATE, 0); + return new BID(Ids::OAK_FENCE_GATE, LegacyIds::OAK_FENCE_GATE, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::SPRUCE_FENCE_GATE, 0); + return new BID(Ids::SPRUCE_FENCE_GATE, LegacyIds::SPRUCE_FENCE_GATE, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::BIRCH_FENCE_GATE, 0); + return new BID(Ids::BIRCH_FENCE_GATE, LegacyIds::BIRCH_FENCE_GATE, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::JUNGLE_FENCE_GATE, 0); + return new BID(Ids::JUNGLE_FENCE_GATE, LegacyIds::JUNGLE_FENCE_GATE, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::ACACIA_FENCE_GATE, 0); + return new BID(Ids::ACACIA_FENCE_GATE, LegacyIds::ACACIA_FENCE_GATE, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::DARK_OAK_FENCE_GATE, 0); + return new BID(Ids::DARK_OAK_FENCE_GATE, LegacyIds::DARK_OAK_FENCE_GATE, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -162,17 +260,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenStairsIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::OAK_STAIRS, 0); + return new BID(Ids::OAK_STAIRS, LegacyIds::OAK_STAIRS, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::SPRUCE_STAIRS, 0); + return new BID(Ids::SPRUCE_STAIRS, LegacyIds::SPRUCE_STAIRS, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::BIRCH_STAIRS, 0); + return new BID(Ids::BIRCH_STAIRS, LegacyIds::BIRCH_STAIRS, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::JUNGLE_STAIRS, 0); + return new BID(Ids::JUNGLE_STAIRS, LegacyIds::JUNGLE_STAIRS, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::ACACIA_STAIRS, 0); + return new BID(Ids::ACACIA_STAIRS, LegacyIds::ACACIA_STAIRS, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::DARK_OAK_STAIRS, 0); + return new BID(Ids::DARK_OAK_STAIRS, LegacyIds::DARK_OAK_STAIRS, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -180,17 +278,17 @@ final class BlockLegacyIdHelper{ public static function getStrippedLogIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BlockIdentifier(Ids::STRIPPED_OAK_LOG, 0); + return new BID(Ids::STRIPPED_OAK_LOG, LegacyIds::STRIPPED_OAK_LOG, 0); case TreeType::SPRUCE()->id(): - return new BlockIdentifier(Ids::STRIPPED_SPRUCE_LOG, 0); + return new BID(Ids::STRIPPED_SPRUCE_LOG, LegacyIds::STRIPPED_SPRUCE_LOG, 0); case TreeType::BIRCH()->id(): - return new BlockIdentifier(Ids::STRIPPED_BIRCH_LOG, 0); + return new BID(Ids::STRIPPED_BIRCH_LOG, LegacyIds::STRIPPED_BIRCH_LOG, 0); case TreeType::JUNGLE()->id(): - return new BlockIdentifier(Ids::STRIPPED_JUNGLE_LOG, 0); + return new BID(Ids::STRIPPED_JUNGLE_LOG, LegacyIds::STRIPPED_JUNGLE_LOG, 0); case TreeType::ACACIA()->id(): - return new BlockIdentifier(Ids::STRIPPED_ACACIA_LOG, 0); + return new BID(Ids::STRIPPED_ACACIA_LOG, LegacyIds::STRIPPED_ACACIA_LOG, 0); case TreeType::DARK_OAK()->id(): - return new BlockIdentifier(Ids::STRIPPED_DARK_OAK_LOG, 0); + return new BID(Ids::STRIPPED_DARK_OAK_LOG, LegacyIds::STRIPPED_DARK_OAK_LOG, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -198,51 +296,51 @@ final class BlockLegacyIdHelper{ public static function getGlazedTerracottaIdentifier(DyeColor $color) : BlockIdentifier{ switch($color->id()){ case DyeColor::WHITE()->id(): - return new BlockIdentifier(Ids::WHITE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::WHITE_GLAZED_TERRACOTTA, LegacyIds::WHITE_GLAZED_TERRACOTTA, 0); case DyeColor::ORANGE()->id(): - return new BlockIdentifier(Ids::ORANGE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::ORANGE_GLAZED_TERRACOTTA, LegacyIds::ORANGE_GLAZED_TERRACOTTA, 0); case DyeColor::MAGENTA()->id(): - return new BlockIdentifier(Ids::MAGENTA_GLAZED_TERRACOTTA, 0); + return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA, LegacyIds::MAGENTA_GLAZED_TERRACOTTA, 0); case DyeColor::LIGHT_BLUE()->id(): - return new BlockIdentifier(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, LegacyIds::LIGHT_BLUE_GLAZED_TERRACOTTA, 0); case DyeColor::YELLOW()->id(): - return new BlockIdentifier(Ids::YELLOW_GLAZED_TERRACOTTA, 0); + return new BID(Ids::YELLOW_GLAZED_TERRACOTTA, LegacyIds::YELLOW_GLAZED_TERRACOTTA, 0); case DyeColor::LIME()->id(): - return new BlockIdentifier(Ids::LIME_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIME_GLAZED_TERRACOTTA, LegacyIds::LIME_GLAZED_TERRACOTTA, 0); case DyeColor::PINK()->id(): - return new BlockIdentifier(Ids::PINK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PINK_GLAZED_TERRACOTTA, LegacyIds::PINK_GLAZED_TERRACOTTA, 0); case DyeColor::GRAY()->id(): - return new BlockIdentifier(Ids::GRAY_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GRAY_GLAZED_TERRACOTTA, LegacyIds::GRAY_GLAZED_TERRACOTTA, 0); case DyeColor::LIGHT_GRAY()->id(): - return new BlockIdentifier(Ids::SILVER_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, LegacyIds::SILVER_GLAZED_TERRACOTTA, 0); case DyeColor::CYAN()->id(): - return new BlockIdentifier(Ids::CYAN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::CYAN_GLAZED_TERRACOTTA, LegacyIds::CYAN_GLAZED_TERRACOTTA, 0); case DyeColor::PURPLE()->id(): - return new BlockIdentifier(Ids::PURPLE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PURPLE_GLAZED_TERRACOTTA, LegacyIds::PURPLE_GLAZED_TERRACOTTA, 0); case DyeColor::BLUE()->id(): - return new BlockIdentifier(Ids::BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLUE_GLAZED_TERRACOTTA, LegacyIds::BLUE_GLAZED_TERRACOTTA, 0); case DyeColor::BROWN()->id(): - return new BlockIdentifier(Ids::BROWN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BROWN_GLAZED_TERRACOTTA, LegacyIds::BROWN_GLAZED_TERRACOTTA, 0); case DyeColor::GREEN()->id(): - return new BlockIdentifier(Ids::GREEN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GREEN_GLAZED_TERRACOTTA, LegacyIds::GREEN_GLAZED_TERRACOTTA, 0); case DyeColor::RED()->id(): - return new BlockIdentifier(Ids::RED_GLAZED_TERRACOTTA, 0); + return new BID(Ids::RED_GLAZED_TERRACOTTA, LegacyIds::RED_GLAZED_TERRACOTTA, 0); case DyeColor::BLACK()->id(): - return new BlockIdentifier(Ids::BLACK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLACK_GLAZED_TERRACOTTA, LegacyIds::BLACK_GLAZED_TERRACOTTA, 0); } throw new AssumptionFailedError("Switch should cover all colours"); } - public static function getStoneSlabIdentifier(int $stoneSlabId, int $meta) : BlockIdentifierFlattened{ + public static function getStoneSlabIdentifier(int $blockTypeId, int $stoneSlabId, int $meta) : BlockIdentifierFlattened{ $id = [ - 1 => [Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB], - 2 => [Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2], - 3 => [Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3], - 4 => [Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4] + 1 => [LegacyIds::STONE_SLAB, LegacyIds::DOUBLE_STONE_SLAB], + 2 => [LegacyIds::STONE_SLAB2, LegacyIds::DOUBLE_STONE_SLAB2], + 3 => [LegacyIds::STONE_SLAB3, LegacyIds::DOUBLE_STONE_SLAB3], + 4 => [LegacyIds::STONE_SLAB4, LegacyIds::DOUBLE_STONE_SLAB4] ][$stoneSlabId] ?? null; if($id === null){ throw new \InvalidArgumentException("Stone slab type should be 1, 2, 3 or 4"); } - return new BlockIdentifierFlattened($id[0], [$id[1]], $meta); + return new BlockIdentifierFlattened($blockTypeId, $id[0], [$id[1]], $meta); } } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php new file mode 100644 index 000000000..a4dc79718 --- /dev/null +++ b/src/block/BlockTypeIds.php @@ -0,0 +1,581 @@ +getIdInfo()->getVariant() === BlockLegacyMetadata::TALLGRASS_FERN); //TODO: clean up + ($block instanceof TallGrass && $block->getIdInfo()->getLegacyVariant() === BlockLegacyMetadata::TALLGRASS_FERN); //TODO: clean up //TODO: bamboo } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index ac158453f..88e2ef0ba 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -54,7 +54,7 @@ final class WallCoralFan extends BaseCoral{ $coralTypeFlag = $stateMeta & BlockLegacyMetadata::CORAL_FAN_HANG_TYPE_MASK; switch($id){ - case $this->idInfoFlattened->getBlockId(): + case $this->idInfoFlattened->getLegacyBlockId(): $this->coralType = $coralTypeFlag === BlockLegacyMetadata::CORAL_FAN_HANG_TUBE ? CoralType::TUBE() : CoralType::BRAIN(); break; case $this->idInfoFlattened->getAdditionalId(0): @@ -73,7 +73,7 @@ final class WallCoralFan extends BaseCoral{ public function getId() : int{ if($this->coralType->equals(CoralType::TUBE()) || $this->coralType->equals(CoralType::BRAIN())){ - return $this->idInfoFlattened->getBlockId(); + return $this->idInfoFlattened->getLegacyBlockId(); }elseif($this->coralType->equals(CoralType::BUBBLE()) || $this->coralType->equals(CoralType::FIRE())){ return $this->idInfoFlattened->getAdditionalId(0); }elseif($this->coralType->equals(CoralType::HORN())){ diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index ebcaca8dc..fad39d31b 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -41,7 +41,7 @@ class BlockTest extends TestCase{ * Test registering a block which would overwrite another block, without forcing it */ public function testAccidentalOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); $this->expectException(\InvalidArgumentException::class); $this->blockFactory->register($block); } @@ -50,7 +50,7 @@ class BlockTest extends TestCase{ * Test registering a block deliberately overwriting another block works as expected */ public function testDeliberateOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->get($block->getId(), 0)); } @@ -61,7 +61,7 @@ class BlockTest extends TestCase{ public function testRegisterNewBlock() : void{ for($i = 0; $i < 256; ++$i){ if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i, 0), "Strange New Block", BlockBreakInfo::instant()); + $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::FIRST_UNUSED_BLOCK_ID, $i, 0), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->get($b->getId(), 0)); return; @@ -76,7 +76,7 @@ class BlockTest extends TestCase{ */ public function testRegisterIdTooSmall() : void{ self::expectException(\InvalidArgumentException::class); - $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1, 0), "Out Of Bounds Block", BlockBreakInfo::instant())); + $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1, -1, 0), "Out Of Bounds Block", BlockBreakInfo::instant())); } /** @@ -119,7 +119,7 @@ class BlockTest extends TestCase{ public function testBlockIds() : void{ for($i = 0; $i < 256; ++$i){ $b = $this->blockFactory->get($i, 0); - self::assertContains($i, $b->getIdInfo()->getAllBlockIds()); + self::assertContains($i, $b->getIdInfo()->getAllLegacyBlockIds()); } } From bf199d3a740a9b8c657a741e528aa73d0ad4270e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 27 May 2022 20:40:32 +0100 Subject: [PATCH 109/692] duct tape for recipes --- src/network/mcpe/convert/ItemTranslator.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 6bd890333..94615da45 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -28,6 +28,7 @@ use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; use pocketmine\item\ItemFactory; +use pocketmine\item\ItemIds; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; @@ -86,6 +87,7 @@ final class ItemTranslator{ */ public function toNetworkId(int $internalId, int $internalMeta) : array{ return $this->toNetworkIdQuiet($internalId, $internalMeta) ?? + $this->toNetworkIdQuiet(ItemIds::INFO_UPDATE, 0) ?? //TODO: bad duct tape throw new \InvalidArgumentException("Unmapped ID/metadata combination $internalId:$internalMeta"); } From f3c9b59856b8dedc2a843c45bdc7cdfffb1008ce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 19:54:32 +0100 Subject: [PATCH 110/692] Bump version for PM5 --- src/VersionInfo.php | 4 ++-- tests/plugins/DevTools | 2 +- tests/plugins/TesterPlugin/plugin.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index f9a55d173..2ebffeca0 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,9 +31,9 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "4.6.0"; + public const BASE_VERSION = "5.0.0"; public const IS_DEVELOPMENT_BUILD = true; - public const BUILD_CHANNEL = "beta"; + public const BUILD_CHANNEL = "alpha"; private function __construct(){ //NOOP diff --git a/tests/plugins/DevTools b/tests/plugins/DevTools index e884a4c23..1b264da3d 160000 --- a/tests/plugins/DevTools +++ b/tests/plugins/DevTools @@ -1 +1 @@ -Subproject commit e884a4c234629126203e769df7c4dbbbc0dc2d49 +Subproject commit 1b264da3d244cd9b0030cbc3d584d2f685648bfe diff --git a/tests/plugins/TesterPlugin/plugin.yml b/tests/plugins/TesterPlugin/plugin.yml index dc00d97c7..5d18dff76 100644 --- a/tests/plugins/TesterPlugin/plugin.yml +++ b/tests/plugins/TesterPlugin/plugin.yml @@ -2,7 +2,7 @@ name: TesterPlugin main: pmmp\TesterPlugin\Main src-namespace-prefix: pmmp\TesterPlugin version: 0.1.0 -api: [3.2.0, 4.0.0] +api: [5.0.0] load: POSTWORLD author: pmmp description: Plugin used to run tests on PocketMine-MP From b7e2b3e94a6767d6873b6c2e76503dc688522f67 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 20:51:18 +0100 Subject: [PATCH 111/692] Entity: Require declaration of gravity and drag via abstract methods this guarantees that subclasses will actually declare them. [bc break] --- src/entity/Entity.php | 17 +++++++++++++++++ src/entity/Living.php | 7 ++++--- src/entity/object/ExperienceOrb.php | 7 ++++--- src/entity/object/FallingBlock.php | 7 ++++--- src/entity/object/ItemEntity.php | 7 ++++--- src/entity/object/Painting.php | 9 ++++----- src/entity/object/PrimedTNT.php | 7 ++++--- src/entity/projectile/Arrow.php | 7 ++++--- src/entity/projectile/ExperienceBottle.php | 2 +- src/entity/projectile/SplashPotion.php | 5 ++--- src/entity/projectile/Throwable.php | 7 ++++--- 11 files changed, 52 insertions(+), 30 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 7085a8827..960855661 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -222,6 +222,8 @@ abstract class Entity{ $this->timings = Timings::getEntityTimings($this); $this->size = $this->getInitialSizeInfo(); + $this->drag = $this->getInitialDragMultiplier(); + $this->gravity = $this->getInitialGravity(); $this->id = self::nextRuntimeId(); $this->server = $location->getWorld()->getServer(); @@ -257,6 +259,21 @@ abstract class Entity{ abstract protected function getInitialSizeInfo() : EntitySizeInfo; + /** + * Returns the percentage by which the entity's velocity is reduced per tick when moving through air. + * The entity's velocity is multiplied by 1 minus this value. + * + * @return float 0-1 + */ + abstract protected function getInitialDragMultiplier() : float; + + /** + * Returns the downwards acceleration of the entity when falling, in blocks/tick². + * + * @return float minimum 0 + */ + abstract protected function getInitialGravity() : float; + public function getNameTag() : string{ return $this->nameTag; } diff --git a/src/entity/Living.php b/src/entity/Living.php index 74d38ef41..82cef8eb1 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -76,9 +76,6 @@ use const M_PI; abstract class Living extends Entity{ protected const DEFAULT_BREATH_TICKS = 300; - protected $gravity = 0.08; - protected $drag = 0.02; - /** @var int */ protected $attackTime = 0; @@ -121,6 +118,10 @@ abstract class Living extends Entity{ /** @var bool */ protected $swimming = false; + protected function getInitialDragMultiplier() : float{ return 0.02; } + + protected function getInitialGravity() : float{ return 0.08; } + abstract public function getName() : string; protected function initEntity(CompoundTag $nbt) : void{ diff --git a/src/entity/object/ExperienceOrb.php b/src/entity/object/ExperienceOrb.php index 274abf379..fc16c50f2 100644 --- a/src/entity/object/ExperienceOrb.php +++ b/src/entity/object/ExperienceOrb.php @@ -78,9 +78,6 @@ class ExperienceOrb extends Entity{ return $result; } - public $gravity = 0.04; - public $drag = 0.02; - /** @var int */ protected $age = 0; @@ -106,6 +103,10 @@ class ExperienceOrb extends Entity{ protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.25, 0.25); } + protected function getInitialDragMultiplier() : float{ return 0.02; } + + protected function getInitialGravity() : float{ return 0.04; } + protected function initEntity(CompoundTag $nbt) : void{ parent::initEntity($nbt); diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index cb2551349..72aca10e0 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -46,9 +46,6 @@ class FallingBlock extends Entity{ public static function getNetworkTypeId() : string{ return EntityIds::FALLING_BLOCK; } - protected $gravity = 0.04; - protected $drag = 0.02; - /** @var Block */ protected $block; @@ -61,6 +58,10 @@ class FallingBlock extends Entity{ protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.98, 0.98); } + protected function getInitialDragMultiplier() : float{ return 0.02; } + + protected function getInitialGravity() : float{ return 0.04; } + public static function parseBlockNBT(BlockFactory $factory, CompoundTag $nbt) : Block{ $blockId = 0; diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index 73d67a192..df5fe4dab 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -59,9 +59,6 @@ class ItemEntity extends Entity{ /** @var Item */ protected $item; - protected $gravity = 0.04; - protected $drag = 0.02; - public $canCollide = false; /** @var int */ @@ -77,6 +74,10 @@ class ItemEntity extends Entity{ protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.25, 0.25); } + protected function getInitialDragMultiplier() : float{ return 0.02; } + + protected function getInitialGravity() : float{ return 0.04; } + protected function initEntity(CompoundTag $nbt) : void{ parent::initEntity($nbt); diff --git a/src/entity/object/Painting.php b/src/entity/object/Painting.php index ff59de043..16392dc74 100644 --- a/src/entity/object/Painting.php +++ b/src/entity/object/Painting.php @@ -56,11 +56,6 @@ class Painting extends Entity{ Facing::EAST => 3 ]; - /** @var float */ - protected $gravity = 0.0; - /** @var float */ - protected $drag = 1.0; - /** @var Vector3 */ protected $blockIn; /** @var int */ @@ -80,6 +75,10 @@ class Painting extends Entity{ return new EntitySizeInfo(0.5, 0.5); } + protected function getInitialDragMultiplier() : float{ return 1.0; } + + protected function getInitialGravity() : float{ return 0.0; } + protected function initEntity(CompoundTag $nbt) : void{ $this->setMaxHealth(1); $this->setHealth(1); diff --git a/src/entity/object/PrimedTNT.php b/src/entity/object/PrimedTNT.php index 70d58dafa..3303a45db 100644 --- a/src/entity/object/PrimedTNT.php +++ b/src/entity/object/PrimedTNT.php @@ -41,9 +41,6 @@ class PrimedTNT extends Entity implements Explosive{ public static function getNetworkTypeId() : string{ return EntityIds::TNT; } - protected $gravity = 0.04; - protected $drag = 0.02; - /** @var int */ protected $fuse; @@ -53,6 +50,10 @@ class PrimedTNT extends Entity implements Explosive{ protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.98, 0.98); } + protected function getInitialDragMultiplier() : float{ return 0.02; } + + protected function getInitialGravity() : float{ return 0.04; } + public function getFuse() : int{ return $this->fuse; } diff --git a/src/entity/projectile/Arrow.php b/src/entity/projectile/Arrow.php index 47924c8cb..73ee9599c 100644 --- a/src/entity/projectile/Arrow.php +++ b/src/entity/projectile/Arrow.php @@ -52,9 +52,6 @@ class Arrow extends Projectile{ private const TAG_PICKUP = "pickup"; //TAG_Byte public const TAG_CRIT = "crit"; //TAG_Byte - protected $gravity = 0.05; - protected $drag = 0.01; - /** @var float */ protected $damage = 2.0; @@ -77,6 +74,10 @@ class Arrow extends Projectile{ protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.25, 0.25); } + protected function getInitialDragMultiplier() : float{ return 0.01; } + + protected function getInitialGravity() : float{ return 0.05; } + protected function initEntity(CompoundTag $nbt) : void{ parent::initEntity($nbt); diff --git a/src/entity/projectile/ExperienceBottle.php b/src/entity/projectile/ExperienceBottle.php index eb69b0edf..5db238259 100644 --- a/src/entity/projectile/ExperienceBottle.php +++ b/src/entity/projectile/ExperienceBottle.php @@ -32,7 +32,7 @@ use function mt_rand; class ExperienceBottle extends Throwable{ public static function getNetworkTypeId() : string{ return EntityIds::XP_BOTTLE; } - protected $gravity = 0.07; + protected function getInitialGravity() : float{ return 0.07; } public function getResultDamage() : int{ return -1; diff --git a/src/entity/projectile/SplashPotion.php b/src/entity/projectile/SplashPotion.php index 364ded7c2..d35360f54 100644 --- a/src/entity/projectile/SplashPotion.php +++ b/src/entity/projectile/SplashPotion.php @@ -52,9 +52,6 @@ class SplashPotion extends Throwable{ public static function getNetworkTypeId() : string{ return EntityIds::SPLASH_POTION; } - protected $gravity = 0.05; - protected $drag = 0.01; - /** @var bool */ protected $linger = false; protected PotionType $potionType; @@ -64,6 +61,8 @@ class SplashPotion extends Throwable{ parent::__construct($location, $shootingEntity, $nbt); } + protected function getInitialGravity() : float{ return 0.05; } + public function saveNBT() : CompoundTag{ $nbt = parent::saveNBT(); $nbt->setShort("PotionId", PotionTypeIdMap::getInstance()->toId($this->getPotionType())); diff --git a/src/entity/projectile/Throwable.php b/src/entity/projectile/Throwable.php index 20bf86912..01bc1aff6 100644 --- a/src/entity/projectile/Throwable.php +++ b/src/entity/projectile/Throwable.php @@ -29,11 +29,12 @@ use pocketmine\math\RayTraceResult; abstract class Throwable extends Projectile{ - protected $gravity = 0.03; - protected $drag = 0.01; - protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.25, 0.25); } + protected function getInitialDragMultiplier() : float{ return 0.01; } + + protected function getInitialGravity() : float{ return 0.03; } + protected function onHitBlock(Block $blockHit, RayTraceResult $hitResult) : void{ parent::onHitBlock($blockHit, $hitResult); $this->flagForDespawn(); From 6ee551c5e1ff5e33dd02a97fbc2709ce15636af0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 21:00:54 +0100 Subject: [PATCH 112/692] Remove premature optimisation from World::getCollidingEntities() this is already covered in more fine-grained detail by canCollideWith(). [bc break] --- src/entity/Entity.php | 2 -- src/entity/object/FallingBlock.php | 2 -- src/entity/object/ItemEntity.php | 2 -- src/entity/object/PrimedTNT.php | 2 -- src/world/World.php | 8 +++----- 5 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 960855661..22c89934d 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -140,8 +140,6 @@ abstract class Entity{ public $lastUpdate; /** @var int */ protected $fireTicks = 0; - /** @var bool */ - public $canCollide = true; /** @var bool */ protected $isStatic = false; diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 72aca10e0..0dd8daebb 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -49,8 +49,6 @@ class FallingBlock extends Entity{ /** @var Block */ protected $block; - public $canCollide = false; - public function __construct(Location $location, Block $block, ?CompoundTag $nbt = null){ $this->block = $block; parent::__construct($location, $nbt); diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index df5fe4dab..14b66c7d2 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -59,8 +59,6 @@ class ItemEntity extends Entity{ /** @var Item */ protected $item; - public $canCollide = false; - /** @var int */ protected $despawnDelay = self::DEFAULT_DESPAWN_DELAY; diff --git a/src/entity/object/PrimedTNT.php b/src/entity/object/PrimedTNT.php index 3303a45db..06dbf4e16 100644 --- a/src/entity/object/PrimedTNT.php +++ b/src/entity/object/PrimedTNT.php @@ -46,8 +46,6 @@ class PrimedTNT extends Entity implements Explosive{ protected bool $worksUnderwater = false; - public $canCollide = false; - protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.98, 0.98); } protected function getInitialDragMultiplier() : float{ return 0.02; } diff --git a/src/world/World.php b/src/world/World.php index cd430bba4..196c2729c 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1904,11 +1904,9 @@ class World implements ChunkManager{ public function getCollidingEntities(AxisAlignedBB $bb, ?Entity $entity = null) : array{ $nearby = []; - if($entity === null || $entity->canCollide){ - foreach($this->getNearbyEntities($bb, $entity) as $ent){ - if($ent->canBeCollidedWith() && ($entity === null || $entity->canCollideWith($ent))){ - $nearby[] = $ent; - } + foreach($this->getNearbyEntities($bb, $entity) as $ent){ + if($ent->canBeCollidedWith() && ($entity === null || $entity->canCollideWith($ent))){ + $nearby[] = $ent; } } From 2029e3be20f2974322c28929359d9a158555f7d0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 21:01:56 +0100 Subject: [PATCH 113/692] Entity: remove dead code [bc break] --- src/entity/Entity.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 22c89934d..57669c18e 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -141,9 +141,6 @@ abstract class Entity{ /** @var int */ protected $fireTicks = 0; - /** @var bool */ - protected $isStatic = false; - private bool $savedWithChunk = true; /** @var bool */ @@ -999,9 +996,7 @@ abstract class Entity{ $this->timings->stopTiming(); - //if($this->isStatic()) return ($hasUpdate || $this->hasMovementUpdate()); - //return !($this instanceof Player); } final public function scheduleUpdate() : void{ From 7b8eeb42f638743ccdfb06a1b7e4bf8565fb9c51 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 21:19:02 +0100 Subject: [PATCH 114/692] Use typed properties in src/entity package [bc break] --- src/entity/Entity.php | 127 +++++++++---------------- src/entity/Human.php | 114 ++++++++++------------ src/entity/Living.php | 57 ++++------- src/entity/Squid.php | 6 +- src/entity/WaterAnimal.php | 3 +- src/entity/effect/EffectManager.php | 13 +-- src/entity/object/ExperienceOrb.php | 20 ++-- src/entity/object/FallingBlock.php | 3 +- src/entity/object/ItemEntity.php | 24 ++--- src/entity/object/Painting.php | 9 +- src/entity/object/PaintingMotive.php | 17 +--- src/entity/object/PrimedTNT.php | 4 +- src/entity/projectile/Arrow.php | 19 +--- src/entity/projectile/Projectile.php | 7 +- src/entity/projectile/SplashPotion.php | 3 +- src/player/Player.php | 18 ++-- 16 files changed, 160 insertions(+), 284 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 57669c18e..14a0ed730 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -90,120 +90,79 @@ abstract class Entity{ } /** @var Player[] */ - protected $hasSpawned = []; + protected array $hasSpawned = []; - /** @var int */ - protected $id; + protected int $id; private EntityMetadataCollection $networkProperties; - /** @var EntityDamageEvent|null */ - protected $lastDamageCause = null; + protected ?EntityDamageEvent $lastDamageCause = null; /** @var Block[]|null */ - protected $blocksAround; + protected ?array $blocksAround = null; - /** @var Location */ - protected $location; - /** @var Location */ - protected $lastLocation; - /** @var Vector3 */ - protected $motion; - /** @var Vector3 */ - protected $lastMotion; - /** @var bool */ - protected $forceMovementUpdate = false; + protected Location $location; + protected Location $lastLocation; + protected Vector3 $motion; + protected Vector3 $lastMotion; + protected bool $forceMovementUpdate = false; - /** @var AxisAlignedBB */ - public $boundingBox; - /** @var bool */ - public $onGround = false; + public AxisAlignedBB $boundingBox; + public bool $onGround = false; - /** @var EntitySizeInfo */ - public $size; + public EntitySizeInfo $size; private float $health = 20.0; private int $maxHealth = 20; - /** @var float */ - protected $ySize = 0.0; - /** @var float */ - protected $stepHeight = 0.0; - /** @var bool */ - public $keepMovement = false; + protected float $ySize = 0.0; + protected float $stepHeight = 0.0; + public bool $keepMovement = false; - /** @var float */ - public $fallDistance = 0.0; - /** @var int */ - public $ticksLived = 0; - /** @var int */ - public $lastUpdate; - /** @var int */ - protected $fireTicks = 0; + public float $fallDistance = 0.0; + public int $ticksLived = 0; + public int $lastUpdate; + protected int $fireTicks = 0; private bool $savedWithChunk = true; - /** @var bool */ - public $isCollided = false; - /** @var bool */ - public $isCollidedHorizontally = false; - /** @var bool */ - public $isCollidedVertically = false; + public bool $isCollided = false; + public bool $isCollidedHorizontally = false; + public bool $isCollidedVertically = false; - /** @var int */ - public $noDamageTicks = 0; - /** @var bool */ - protected $justCreated = true; + public int $noDamageTicks = 0; + protected bool $justCreated = true; - /** @var AttributeMap */ - protected $attributeMap; + protected AttributeMap $attributeMap; - /** @var float */ - protected $gravity; - /** @var float */ - protected $drag; - /** @var bool */ - protected $gravityEnabled = true; + protected float $gravity; + protected float $drag; + protected bool $gravityEnabled = true; - /** @var Server */ - protected $server; + protected Server $server; - /** @var bool */ - protected $closed = false; + protected bool $closed = false; private bool $closeInFlight = false; private bool $needsDespawn = false; - /** @var TimingsHandler */ - protected $timings; + protected TimingsHandler $timings; protected bool $networkPropertiesDirty = false; - /** @var string */ - protected $nameTag = ""; - /** @var bool */ - protected $nameTagVisible = true; - /** @var bool */ - protected $alwaysShowNameTag = false; - /** @var string */ - protected $scoreTag = ""; - /** @var float */ - protected $scale = 1.0; + protected string $nameTag = ""; + protected bool $nameTagVisible = true; + protected bool $alwaysShowNameTag = false; + protected string $scoreTag = ""; + protected float $scale = 1.0; - /** @var bool */ - protected $canClimb = false; - /** @var bool */ - protected $canClimbWalls = false; - /** @var bool */ - protected $immobile = false; - /** @var bool */ - protected $invisible = false; - /** @var bool */ - protected $silent = false; + protected bool $canClimb = false; + protected bool $canClimbWalls = false; + protected bool $immobile = false; + protected bool $invisible = false; + protected bool $silent = false; - /** @var int|null */ - protected $ownerId = null; - /** @var int|null */ - protected $targetId = null; + protected ?int $ownerId = null; + protected ?int $targetId = null; private bool $constructorCalled = false; diff --git a/src/entity/Human.php b/src/entity/Human.php index ac105df30..a486c9d99 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -74,28 +74,18 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ public static function getNetworkTypeId() : string{ return EntityIds::PLAYER; } - /** @var PlayerInventory */ - protected $inventory; + protected PlayerInventory $inventory; + protected PlayerOffHandInventory $offHandInventory; + protected PlayerEnderInventory $enderInventory; - /** @var PlayerOffHandInventory */ - protected $offHandInventory; + protected UuidInterface $uuid; - /** @var PlayerEnderInventory */ - protected $enderInventory; + protected Skin $skin; - /** @var UuidInterface */ - protected $uuid; + protected HungerManager $hungerManager; + protected ExperienceManager $xpManager; - /** @var Skin */ - protected $skin; - - /** @var HungerManager */ - protected $hungerManager; - /** @var ExperienceManager */ - protected $xpManager; - - /** @var int */ - protected $xpSeed; + protected int $xpSeed; public function __construct(Location $location, Skin $skin, ?CompoundTag $nbt = null){ $this->skin = $skin; @@ -383,9 +373,9 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ public function getDrops() : array{ return array_filter(array_merge( - $this->inventory !== null ? array_values($this->inventory->getContents()) : [], - $this->armorInventory !== null ? array_values($this->armorInventory->getContents()) : [], - $this->offHandInventory !== null ? array_values($this->offHandInventory->getContents()) : [], + array_values($this->inventory->getContents()), + array_values($this->armorInventory->getContents()), + array_values($this->offHandInventory->getContents()), ), function(Item $item) : bool{ return !$item->hasEnchantment(VanillaEnchantments::VANISHING()); }); } @@ -404,55 +394,51 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ $inventoryTag = new ListTag([], NBT::TAG_Compound); $nbt->setTag("Inventory", $inventoryTag); - if($this->inventory !== null){ - //Normal inventory - $slotCount = $this->inventory->getSize() + $this->inventory->getHotbarSize(); - for($slot = $this->inventory->getHotbarSize(); $slot < $slotCount; ++$slot){ - $item = $this->inventory->getItem($slot - 9); - if(!$item->isNull()){ - $inventoryTag->push($item->nbtSerialize($slot)); - } - } - //Armor - for($slot = 100; $slot < 104; ++$slot){ - $item = $this->armorInventory->getItem($slot - 100); - if(!$item->isNull()){ - $inventoryTag->push($item->nbtSerialize($slot)); - } + //Normal inventory + $slotCount = $this->inventory->getSize() + $this->inventory->getHotbarSize(); + for($slot = $this->inventory->getHotbarSize(); $slot < $slotCount; ++$slot){ + $item = $this->inventory->getItem($slot - 9); + if(!$item->isNull()){ + $inventoryTag->push($item->nbtSerialize($slot)); } - - $nbt->setInt("SelectedInventorySlot", $this->inventory->getHeldItemIndex()); } + + //Armor + for($slot = 100; $slot < 104; ++$slot){ + $item = $this->armorInventory->getItem($slot - 100); + if(!$item->isNull()){ + $inventoryTag->push($item->nbtSerialize($slot)); + } + } + + $nbt->setInt("SelectedInventorySlot", $this->inventory->getHeldItemIndex()); + $offHandItem = $this->offHandInventory->getItem(0); if(!$offHandItem->isNull()){ $nbt->setTag("OffHandItem", $offHandItem->nbtSerialize()); } - if($this->enderInventory !== null){ - /** @var CompoundTag[] $items */ - $items = []; + /** @var CompoundTag[] $items */ + $items = []; - $slotCount = $this->enderInventory->getSize(); - for($slot = 0; $slot < $slotCount; ++$slot){ - $item = $this->enderInventory->getItem($slot); - if(!$item->isNull()){ - $items[] = $item->nbtSerialize($slot); - } + $slotCount = $this->enderInventory->getSize(); + for($slot = 0; $slot < $slotCount; ++$slot){ + $item = $this->enderInventory->getItem($slot); + if(!$item->isNull()){ + $items[] = $item->nbtSerialize($slot); } - - $nbt->setTag("EnderChestInventory", new ListTag($items, NBT::TAG_Compound)); } - if($this->skin !== null){ - $nbt->setTag("Skin", CompoundTag::create() - ->setString("Name", $this->skin->getSkinId()) - ->setByteArray("Data", $this->skin->getSkinData()) - ->setByteArray("CapeData", $this->skin->getCapeData()) - ->setString("GeometryName", $this->skin->getGeometryName()) - ->setByteArray("GeometryData", $this->skin->getGeometryData()) - ); - } + $nbt->setTag("EnderChestInventory", new ListTag($items, NBT::TAG_Compound)); + + $nbt->setTag("Skin", CompoundTag::create() + ->setString("Name", $this->skin->getSkinId()) + ->setByteArray("Data", $this->skin->getSkinData()) + ->setByteArray("CapeData", $this->skin->getCapeData()) + ->setString("GeometryName", $this->skin->getGeometryName()) + ->setByteArray("GeometryData", $this->skin->getGeometryData()) + ); return $nbt; } @@ -512,11 +498,13 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ } protected function destroyCycles() : void{ - $this->inventory = null; - $this->offHandInventory = null; - $this->enderInventory = null; - $this->hungerManager = null; - $this->xpManager = null; + unset( + $this->inventory, + $this->offHandInventory, + $this->enderInventory, + $this->hungerManager, + $this->xpManager + ); parent::destroyCycles(); } } diff --git a/src/entity/Living.php b/src/entity/Living.php index 82cef8eb1..52dc02dbc 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -76,47 +76,30 @@ use const M_PI; abstract class Living extends Entity{ protected const DEFAULT_BREATH_TICKS = 300; - /** @var int */ - protected $attackTime = 0; + protected int $attackTime = 0; - /** @var int */ - public $deadTicks = 0; - /** @var int */ - protected $maxDeadTicks = 25; + public int $deadTicks = 0; + protected int $maxDeadTicks = 25; - /** @var float */ - protected $jumpVelocity = 0.42; + protected float $jumpVelocity = 0.42; - /** @var EffectManager */ - protected $effectManager; + protected EffectManager $effectManager; - /** @var ArmorInventory */ - protected $armorInventory; + protected ArmorInventory $armorInventory; - /** @var bool */ - protected $breathing = true; - /** @var int */ - protected $breathTicks = self::DEFAULT_BREATH_TICKS; - /** @var int */ - protected $maxBreathTicks = self::DEFAULT_BREATH_TICKS; + protected bool $breathing = true; + protected int $breathTicks = self::DEFAULT_BREATH_TICKS; + protected int $maxBreathTicks = self::DEFAULT_BREATH_TICKS; - /** @var Attribute */ - protected $healthAttr; - /** @var Attribute */ - protected $absorptionAttr; - /** @var Attribute */ - protected $knockbackResistanceAttr; - /** @var Attribute */ - protected $moveSpeedAttr; + protected Attribute $healthAttr; + protected Attribute $absorptionAttr; + protected Attribute $knockbackResistanceAttr; + protected Attribute $moveSpeedAttr; - /** @var bool */ - protected $sprinting = false; - /** @var bool */ - protected $sneaking = false; - /** @var bool */ - protected $gliding = false; - /** @var bool */ - protected $swimming = false; + protected bool $sprinting = false; + protected bool $sneaking = false; + protected bool $gliding = false; + protected bool $swimming = false; protected function getInitialDragMultiplier() : float{ return 0.02; } @@ -851,8 +834,10 @@ abstract class Living extends Entity{ } protected function destroyCycles() : void{ - $this->armorInventory = null; - $this->effectManager = null; + unset( + $this->armorInventory, + $this->effectManager + ); parent::destroyCycles(); } } diff --git a/src/entity/Squid.php b/src/entity/Squid.php index 5962ba1bb..697b4d8ee 100644 --- a/src/entity/Squid.php +++ b/src/entity/Squid.php @@ -39,10 +39,8 @@ class Squid extends WaterAnimal{ public static function getNetworkTypeId() : string{ return EntityIds::SQUID; } - /** @var Vector3|null */ - public $swimDirection = null; - /** @var float */ - public $swimSpeed = 0.1; + public ?Vector3 $swimDirection = null; + public float $swimSpeed = 0.1; private int $switchDirectionTicker = 0; diff --git a/src/entity/WaterAnimal.php b/src/entity/WaterAnimal.php index 5edae8ffd..9911e432b 100644 --- a/src/entity/WaterAnimal.php +++ b/src/entity/WaterAnimal.php @@ -28,8 +28,7 @@ use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataFlags; abstract class WaterAnimal extends Living implements Ageable{ - /** @var bool */ - protected $baby = false; + protected bool $baby = false; public function isBaby() : bool{ return $this->baby; diff --git a/src/entity/effect/EffectManager.php b/src/entity/effect/EffectManager.php index 910a88921..9eb8fc7c0 100644 --- a/src/entity/effect/EffectManager.php +++ b/src/entity/effect/EffectManager.php @@ -33,25 +33,22 @@ use function count; use function spl_object_id; class EffectManager{ - /** @var EffectInstance[] */ - protected $effects = []; + protected array $effects = []; - /** @var Color */ - protected $bubbleColor; - /** @var bool */ - protected $onlyAmbientEffects = false; + protected Color $bubbleColor; + protected bool $onlyAmbientEffects = false; /** * @var \Closure[]|ObjectSet * @phpstan-var ObjectSet<\Closure(EffectInstance, bool $replacesOldEffect) : void> */ - protected $effectAddHooks; + protected ObjectSet $effectAddHooks; /** * @var \Closure[]|ObjectSet * @phpstan-var ObjectSet<\Closure(EffectInstance) : void> */ - protected $effectRemoveHooks; + protected ObjectSet $effectRemoveHooks; public function __construct( private Living $entity diff --git a/src/entity/object/ExperienceOrb.php b/src/entity/object/ExperienceOrb.php index fc16c50f2..1c63b0ef3 100644 --- a/src/entity/object/ExperienceOrb.php +++ b/src/entity/object/ExperienceOrb.php @@ -78,23 +78,15 @@ class ExperienceOrb extends Entity{ return $result; } - /** @var int */ - protected $age = 0; + protected int $age = 0; - /** - * @var int - * Ticker used for determining interval in which to look for new target players. - */ - protected $lookForTargetTime = 0; + /** Ticker used for determining interval in which to look for new target players. */ + protected int $lookForTargetTime = 0; - /** - * @var int|null - * Runtime entity ID of the player this XP orb is targeting. - */ - protected $targetPlayerRuntimeId = null; + /** Runtime entity ID of the player this XP orb is targeting. */ + protected ?int $targetPlayerRuntimeId = null; - /** @var int */ - protected $xpValue; + protected int $xpValue; public function __construct(Location $location, int $xpValue, ?CompoundTag $nbt = null){ $this->xpValue = $xpValue; diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 0dd8daebb..1a61a2fba 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -46,8 +46,7 @@ class FallingBlock extends Entity{ public static function getNetworkTypeId() : string{ return EntityIds::FALLING_BLOCK; } - /** @var Block */ - protected $block; + protected Block $block; public function __construct(Location $location, Block $block, ?CompoundTag $nbt = null){ $this->block = $block; diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index 14b66c7d2..53b0b3383 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -50,17 +50,11 @@ class ItemEntity extends Entity{ public const NEVER_DESPAWN = -1; public const MAX_DESPAWN_DELAY = 32767 + self::DEFAULT_DESPAWN_DELAY; //max value storable by mojang NBT :( - /** @var string */ - protected $owner = ""; - /** @var string */ - protected $thrower = ""; - /** @var int */ - protected $pickupDelay = 0; - /** @var Item */ - protected $item; - - /** @var int */ - protected $despawnDelay = self::DEFAULT_DESPAWN_DELAY; + protected string $owner = ""; + protected string $thrower = ""; + protected int $pickupDelay = 0; + protected int $despawnDelay = self::DEFAULT_DESPAWN_DELAY; + protected Item $item; public function __construct(Location $location, Item $item, ?CompoundTag $nbt = null){ if($item->isNull()){ @@ -196,12 +190,8 @@ class ItemEntity extends Entity{ } $nbt->setShort("Age", $age); $nbt->setShort("PickupDelay", $this->pickupDelay); - if($this->owner !== null){ - $nbt->setString("Owner", $this->owner); - } - if($this->thrower !== null){ - $nbt->setString("Thrower", $this->thrower); - } + $nbt->setString("Owner", $this->owner); + $nbt->setString("Thrower", $this->thrower); return $nbt; } diff --git a/src/entity/object/Painting.php b/src/entity/object/Painting.php index 16392dc74..4613af96c 100644 --- a/src/entity/object/Painting.php +++ b/src/entity/object/Painting.php @@ -56,12 +56,9 @@ class Painting extends Entity{ Facing::EAST => 3 ]; - /** @var Vector3 */ - protected $blockIn; - /** @var int */ - protected $facing = Facing::NORTH; - /** @var PaintingMotive */ - protected $motive; + protected Vector3 $blockIn; + protected int $facing; + protected PaintingMotive $motive; public function __construct(Location $location, Vector3 $blockIn, int $facing, PaintingMotive $motive, ?CompoundTag $nbt = null){ $this->motive = $motive; diff --git a/src/entity/object/PaintingMotive.php b/src/entity/object/PaintingMotive.php index 28b52efe3..a2c6f221a 100644 --- a/src/entity/object/PaintingMotive.php +++ b/src/entity/object/PaintingMotive.php @@ -84,18 +84,11 @@ class PaintingMotive{ return self::$motives; } - /** @var string */ - protected $name; - /** @var int */ - protected $width; - /** @var int */ - protected $height; - - public function __construct(int $width, int $height, string $name){ - $this->name = $name; - $this->width = $width; - $this->height = $height; - } + public function __construct( + protected int $width, + protected int $height, + protected string $name + ){} public function getName() : string{ return $this->name; diff --git a/src/entity/object/PrimedTNT.php b/src/entity/object/PrimedTNT.php index 06dbf4e16..97f68e8de 100644 --- a/src/entity/object/PrimedTNT.php +++ b/src/entity/object/PrimedTNT.php @@ -41,9 +41,7 @@ class PrimedTNT extends Entity implements Explosive{ public static function getNetworkTypeId() : string{ return EntityIds::TNT; } - /** @var int */ - protected $fuse; - + protected int $fuse; protected bool $worksUnderwater = false; protected function getInitialSizeInfo() : EntitySizeInfo{ return new EntitySizeInfo(0.98, 0.98); } diff --git a/src/entity/projectile/Arrow.php b/src/entity/projectile/Arrow.php index 73ee9599c..023ea5584 100644 --- a/src/entity/projectile/Arrow.php +++ b/src/entity/projectile/Arrow.php @@ -52,20 +52,11 @@ class Arrow extends Projectile{ private const TAG_PICKUP = "pickup"; //TAG_Byte public const TAG_CRIT = "crit"; //TAG_Byte - /** @var float */ - protected $damage = 2.0; - - /** @var int */ - protected $pickupMode = self::PICKUP_ANY; - - /** @var float */ - protected $punchKnockback = 0.0; - - /** @var int */ - protected $collideTicks = 0; - - /** @var bool */ - protected $critical = false; + protected float $damage = 2.0; + protected int $pickupMode = self::PICKUP_ANY; + protected float $punchKnockback = 0.0; + protected int $collideTicks = 0; + protected bool $critical = false; public function __construct(Location $location, ?Entity $shootingEntity, bool $critical, ?CompoundTag $nbt = null){ parent::__construct($location, $shootingEntity, $nbt); diff --git a/src/entity/projectile/Projectile.php b/src/entity/projectile/Projectile.php index 1f652bda4..40e7cb45d 100644 --- a/src/entity/projectile/Projectile.php +++ b/src/entity/projectile/Projectile.php @@ -51,11 +51,8 @@ use const PHP_INT_MAX; abstract class Projectile extends Entity{ - /** @var float */ - protected $damage = 0.0; - - /** @var Block|null */ - protected $blockHit; + protected float $damage = 0.0; + protected ?Block $blockHit = null; public function __construct(Location $location, ?Entity $shootingEntity, ?CompoundTag $nbt = null){ parent::__construct($location, $nbt); diff --git a/src/entity/projectile/SplashPotion.php b/src/entity/projectile/SplashPotion.php index d35360f54..555a8d755 100644 --- a/src/entity/projectile/SplashPotion.php +++ b/src/entity/projectile/SplashPotion.php @@ -52,8 +52,7 @@ class SplashPotion extends Throwable{ public static function getNetworkTypeId() : string{ return EntityIds::SPLASH_POTION; } - /** @var bool */ - protected $linger = false; + protected bool $linger = false; protected PotionType $potionType; public function __construct(Location $location, ?Entity $shootingEntity, PotionType $potionType, ?CompoundTag $nbt = null){ diff --git a/src/player/Player.php b/src/player/Player.php index e5d87793b..a120231e1 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -241,8 +241,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ protected ?float $lastMovementProcess = null; protected int $inAirTicks = 0; - /** @var float */ - protected $stepHeight = 0.6; + + protected float $stepHeight = 0.6; protected ?Vector3 $sleeping = null; private ?Position $spawnPosition = null; @@ -2217,16 +2217,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->getWorld()->dropItem($this->location, $item); } - if($this->inventory !== null){ - $this->inventory->setHeldItemIndex(0); - $this->inventory->clearAll(); - } - if($this->armorInventory !== null){ - $this->armorInventory->clearAll(); - } - if($this->offHandInventory !== null){ - $this->offHandInventory->clearAll(); - } + $this->inventory->setHeldItemIndex(0); + $this->inventory->clearAll(); + $this->armorInventory->clearAll(); + $this->offHandInventory->clearAll(); } if(!$ev->getKeepXp()){ From 2bb99fa6771b255b7f49d00c43d840c7370203e9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Jun 2022 21:21:31 +0100 Subject: [PATCH 115/692] Modernize Position and Location [bc break] --- src/entity/Location.php | 6 ++---- src/world/Position.php | 11 ++--------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/entity/Location.php b/src/entity/Location.php index 2ebbb2661..53ccf91f2 100644 --- a/src/entity/Location.php +++ b/src/entity/Location.php @@ -29,10 +29,8 @@ use pocketmine\world\World; class Location extends Position{ - /** @var float */ - public $yaw; - /** @var float */ - public $pitch; + public float $yaw; + public float $pitch; public function __construct(float $x, float $y, float $z, ?World $world, float $yaw, float $pitch){ $this->yaw = $yaw; diff --git a/src/world/Position.php b/src/world/Position.php index 5339adbec..b7775e53d 100644 --- a/src/world/Position.php +++ b/src/world/Position.php @@ -28,16 +28,9 @@ use pocketmine\utils\AssumptionFailedError; use function assert; class Position extends Vector3{ + public ?World $world = null; - /** @var World|null */ - public $world = null; - - /** - * @param float|int $x - * @param float|int $y - * @param float|int $z - */ - public function __construct($x, $y, $z, ?World $world){ + public function __construct(float|int $x, float|int $y, float|int $z, ?World $world){ parent::__construct($x, $y, $z); if($world !== null && !$world->isLoaded()){ throw new \InvalidArgumentException("Specified world has been unloaded and cannot be used"); From 23695fb900297dc0bda76e2839bfe85065864bb0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Jun 2022 16:55:22 +0100 Subject: [PATCH 116/692] RegionLoader: remove dead static property [bc break] --- src/world/format/io/region/RegionLoader.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/world/format/io/region/RegionLoader.php b/src/world/format/io/region/RegionLoader.php index 449052454..bdd31b8dc 100644 --- a/src/world/format/io/region/RegionLoader.php +++ b/src/world/format/io/region/RegionLoader.php @@ -64,9 +64,6 @@ class RegionLoader{ public const FIRST_SECTOR = 2; //location table occupies 0 and 1 - /** @var int */ - public static $COMPRESSION_LEVEL = 7; - /** @var string */ protected $filePath; /** @var resource */ From 083a35f97023a2b844feee56c1d84864f5235e1d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Jun 2022 18:16:32 +0100 Subject: [PATCH 117/692] Modernize property type declarations --- src/block/tile/Barrel.php | 3 +- src/block/tile/Chest.php | 6 +- src/block/tile/Comparator.php | 3 +- src/block/tile/Furnace.php | 3 +- src/block/tile/ShulkerBox.php | 6 +- src/block/tile/Sign.php | 7 +- src/block/tile/Tile.php | 9 +- src/block/utils/AnyFacingTrait.php | 3 +- src/block/utils/HorizontalFacingTrait.php | 3 +- src/block/utils/PillarRotationTrait.php | 4 +- src/command/Command.php | 9 +- src/command/SimpleCommandMap.php | 2 +- src/console/ConsoleCommandSender.php | 7 +- src/crafting/CraftingManager.php | 10 +- src/crafting/FurnaceRecipeManager.php | 2 +- src/entity/Attribute.php | 31 ++--- src/entity/object/PaintingMotive.php | 2 +- src/event/Event.php | 3 +- src/event/block/BlockBreakEvent.php | 26 ++-- src/event/block/BlockEvent.php | 9 +- src/event/block/BlockPlaceEvent.php | 23 +--- .../entity/EntityCombustByBlockEvent.php | 3 +- .../entity/EntityCombustByEntityEvent.php | 3 +- src/event/entity/EntityCombustEvent.php | 3 +- src/event/entity/EntityEvent.php | 7 +- src/event/entity/EntityExplodeEvent.php | 19 +-- src/event/entity/ExplosionPrimeEvent.php | 8 +- src/event/inventory/InventoryEvent.php | 9 +- src/event/player/PlayerChatEvent.php | 21 +-- .../player/PlayerCommandPreprocessEvent.php | 9 +- src/event/player/PlayerDataSaveEvent.php | 14 +- src/event/player/PlayerDeathEvent.php | 3 +- src/event/player/PlayerEvent.php | 3 +- src/event/player/PlayerExhaustEvent.php | 8 +- .../player/PlayerExperienceChangeEvent.php | 3 - .../player/PlayerGameModeChangeEvent.php | 11 +- src/event/player/PlayerInteractEvent.php | 28 ++-- src/event/player/PlayerJoinEvent.php | 9 +- src/event/player/PlayerKickEvent.php | 14 +- src/event/player/PlayerLoginEvent.php | 9 +- src/event/player/PlayerPreLoginEvent.php | 11 +- src/event/player/PlayerQuitEvent.php | 14 +- src/event/player/PlayerRespawnEvent.php | 9 +- src/event/player/PlayerToggleFlightEvent.php | 9 +- src/event/player/PlayerToggleSneakEvent.php | 9 +- src/event/player/PlayerToggleSprintEvent.php | 9 +- src/event/player/PlayerTransferEvent.php | 17 +-- src/event/server/CommandEvent.php | 14 +- src/event/server/NetworkInterfaceEvent.php | 9 +- src/inventory/ArmorInventory.php | 8 +- src/inventory/BaseInventory.php | 7 +- src/inventory/PlayerCursorInventory.php | 13 +- src/inventory/PlayerInventory.php | 14 +- .../transaction/CraftingTransaction.php | 10 +- .../transaction/InventoryTransaction.php | 15 +-- .../transaction/action/InventoryAction.php | 13 +- .../transaction/action/SlotChangeAction.php | 14 +- src/item/Armor.php | 3 +- src/item/Durable.php | 4 +- src/item/Item.php | 32 ++--- src/item/ItemEnchantmentHandlingTrait.php | 2 +- src/item/TieredTool.php | 4 +- .../enchantment/ProtectionEnchantment.php | 5 +- src/lang/Language.php | 8 +- src/lang/Translatable.php | 12 +- src/network/mcpe/ChunkRequestTask.php | 14 +- .../mcpe/encryption/EncryptionContext.php | 3 +- .../mcpe/handler/InGamePacketHandler.php | 12 +- src/network/mcpe/raklib/RakLibServer.php | 64 ++-------- src/permission/BanEntry.php | 3 +- src/permission/PermissionManager.php | 4 +- src/player/GameMode.php | 2 +- src/plugin/PluginLoadTriage.php | 6 +- src/plugin/PluginManager.php | 6 +- src/promise/PromiseSharedData.php | 7 +- src/resourcepacks/ZippedResourcePack.php | 12 +- src/scheduler/AsyncPool.php | 9 +- src/scheduler/AsyncTask.php | 3 +- src/scheduler/TaskHandler.php | 26 ++-- src/scheduler/TaskScheduler.php | 12 +- src/stats/SendUsageTask.php | 6 +- src/thread/CommonThreadPartsTrait.php | 6 +- src/timings/Timings.php | 120 ++++++------------ src/updater/UpdateChecker.php | 10 +- src/utils/Config.php | 2 +- src/utils/Internet.php | 6 +- src/utils/MainLogger.php | 3 +- src/utils/Random.php | 3 +- src/utils/ServerKiller.php | 13 +- src/world/Explosion.php | 28 ++-- src/world/SimpleChunkManager.php | 2 +- src/world/World.php | 11 +- src/world/biome/Biome.php | 6 +- src/world/format/Chunk.php | 16 +-- src/world/format/io/BaseWorldProvider.php | 10 +- src/world/format/io/WorldProviderManager.php | 2 +- src/world/format/io/data/BaseNbtWorldData.php | 13 +- src/world/format/io/leveldb/LevelDB.php | 3 +- src/world/format/io/region/RegionLoader.php | 18 +-- .../format/io/region/RegionWorldProvider.php | 2 +- src/world/generator/Generator.php | 15 +-- src/world/generator/GeneratorRegisterTask.php | 30 ++--- .../generator/GeneratorUnregisterTask.php | 4 +- src/world/generator/noise/Noise.php | 17 +-- src/world/generator/noise/Simplex.php | 11 +- src/world/generator/object/BirchTree.php | 8 +- src/world/generator/object/Ore.php | 12 +- src/world/generator/object/Tree.php | 19 +-- src/world/light/LightPopulationTask.php | 3 +- src/world/light/LightPropagationContext.php | 18 +-- src/world/light/LightUpdate.php | 20 +-- src/world/particle/FloatingTextParticle.php | 18 +-- src/world/particle/MobSpawnParticle.php | 12 +- src/world/utils/SubChunkExplorer.php | 24 ++-- 114 files changed, 431 insertions(+), 863 deletions(-) diff --git a/src/block/tile/Barrel.php b/src/block/tile/Barrel.php index 68491cd08..e6978fca9 100644 --- a/src/block/tile/Barrel.php +++ b/src/block/tile/Barrel.php @@ -32,8 +32,7 @@ class Barrel extends Spawnable implements Container, Nameable{ use NameableTrait; use ContainerTrait; - /** @var BarrelInventory */ - protected $inventory; + protected BarrelInventory $inventory; public function __construct(World $world, Vector3 $pos){ parent::__construct($world, $pos); diff --git a/src/block/tile/Chest.php b/src/block/tile/Chest.php index 1f49a2ddb..6f68d4e71 100644 --- a/src/block/tile/Chest.php +++ b/src/block/tile/Chest.php @@ -44,10 +44,8 @@ class Chest extends Spawnable implements Container, Nameable{ public const TAG_PAIRZ = "pairz"; public const TAG_PAIR_LEAD = "pairlead"; - /** @var ChestInventory */ - protected $inventory; - /** @var DoubleChestInventory|null */ - protected $doubleInventory = null; + protected ChestInventory $inventory; + protected ?DoubleChestInventory $doubleInventory = null; private ?int $pairX = null; private ?int $pairZ = null; diff --git a/src/block/tile/Comparator.php b/src/block/tile/Comparator.php index 317a682f4..acc918b2c 100644 --- a/src/block/tile/Comparator.php +++ b/src/block/tile/Comparator.php @@ -33,8 +33,7 @@ use pocketmine\nbt\tag\CompoundTag; class Comparator extends Tile{ private const TAG_OUTPUT_SIGNAL = "OutputSignal"; //int - /** @var int */ - protected $signalStrength = 0; + protected int $signalStrength = 0; public function getSignalStrength() : int{ return $this->signalStrength; diff --git a/src/block/tile/Furnace.php b/src/block/tile/Furnace.php index 806c53a07..389e367b8 100644 --- a/src/block/tile/Furnace.php +++ b/src/block/tile/Furnace.php @@ -48,8 +48,7 @@ abstract class Furnace extends Spawnable implements Container, Nameable{ public const TAG_COOK_TIME = "CookTime"; public const TAG_MAX_TIME = "MaxTime"; - /** @var FurnaceInventory */ - protected $inventory; + protected FurnaceInventory $inventory; private int $remainingFuelTime = 0; private int $cookTime = 0; private int $maxFuelTime = 0; diff --git a/src/block/tile/ShulkerBox.php b/src/block/tile/ShulkerBox.php index fb740c566..a649875a9 100644 --- a/src/block/tile/ShulkerBox.php +++ b/src/block/tile/ShulkerBox.php @@ -38,11 +38,9 @@ class ShulkerBox extends Spawnable implements Container, Nameable{ public const TAG_FACING = "facing"; - /** @var int */ - protected $facing = Facing::NORTH; + protected int $facing = Facing::NORTH; - /** @var ShulkerBoxInventory */ - protected $inventory; + protected ShulkerBoxInventory $inventory; public function __construct(World $world, Vector3 $pos){ parent::__construct($world, $pos); diff --git a/src/block/tile/Sign.php b/src/block/tile/Sign.php index 38cad085f..34c288922 100644 --- a/src/block/tile/Sign.php +++ b/src/block/tile/Sign.php @@ -50,11 +50,8 @@ class Sign extends Spawnable{ return array_slice(array_pad(explode("\n", $blob), 4, ""), 0, 4); } - /** @var SignText */ - protected $text; - - /** @var int|null */ - protected $editorEntityRuntimeId = null; + protected SignText $text; + protected ?int $editorEntityRuntimeId = null; public function __construct(World $world, Vector3 $pos){ $this->text = new SignText(); diff --git a/src/block/tile/Tile.php b/src/block/tile/Tile.php index 00ff1bed6..cc019277d 100644 --- a/src/block/tile/Tile.php +++ b/src/block/tile/Tile.php @@ -45,12 +45,9 @@ abstract class Tile{ public const TAG_Y = "y"; public const TAG_Z = "z"; - /** @var Position */ - protected $position; - /** @var bool */ - public $closed = false; - /** @var TimingsHandler */ - protected $timings; + protected Position $position; + public bool $closed = false; + protected TimingsHandler $timings; public function __construct(World $world, Vector3 $pos){ $this->position = Position::fromObject($pos, $world); diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 751e67378..b8c5d8ec5 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -26,8 +26,7 @@ namespace pocketmine\block\utils; use pocketmine\math\Facing; trait AnyFacingTrait{ - /** @var int */ - protected $facing = Facing::DOWN; + protected int $facing = Facing::DOWN; public function getFacing() : int{ return $this->facing; } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 54cac0cda..380d1fa50 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -27,8 +27,7 @@ use pocketmine\math\Axis; use pocketmine\math\Facing; trait HorizontalFacingTrait{ - /** @var int */ - protected $facing = Facing::NORTH; + protected int $facing = Facing::NORTH; public function getFacing() : int{ return $this->facing; } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 806782db8..ec81a4a24 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -32,9 +32,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ - - /** @var int */ - protected $axis = Axis::Y; + protected int $axis = Axis::Y; /** @see Axis */ public function getAxis() : int{ return $this->axis; } diff --git a/src/command/Command.php b/src/command/Command.php index 51e3ef51c..d6395b651 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -53,17 +53,14 @@ abstract class Command{ private ?CommandMap $commandMap = null; - /** @var Translatable|string */ - protected $description = ""; + protected Translatable|string $description = ""; - /** @var Translatable|string */ - protected $usageMessage; + protected Translatable|string $usageMessage; private ?string $permission = null; private ?string $permissionMessage = null; - /** @var TimingsHandler|null */ - public $timings = null; + public ?TimingsHandler $timings = null; /** * @param string[] $aliases diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 548f16c39..bce6bc740 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -80,7 +80,7 @@ use function trim; class SimpleCommandMap implements CommandMap{ /** @var Command[] */ - protected $knownCommands = []; + protected array $knownCommands = []; public function __construct(private Server $server){ $this->setDefaultCommands(); diff --git a/src/console/ConsoleCommandSender.php b/src/console/ConsoleCommandSender.php index e08a65706..b59930da6 100644 --- a/src/console/ConsoleCommandSender.php +++ b/src/console/ConsoleCommandSender.php @@ -37,11 +37,8 @@ use const PHP_INT_MAX; class ConsoleCommandSender implements CommandSender{ use PermissibleDelegateTrait; - /** - * @var int|null - * @phpstan-var positive-int|null - */ - protected $lineHeight = null; + /** @phpstan-var positive-int|null */ + protected ?int $lineHeight = null; public function __construct( private Server $server, diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index f9d28bf28..5ff70bf64 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -35,27 +35,27 @@ class CraftingManager{ use DestructorCallbackTrait; /** @var ShapedRecipe[][] */ - protected $shapedRecipes = []; + protected array $shapedRecipes = []; /** @var ShapelessRecipe[][] */ - protected $shapelessRecipes = []; + protected array $shapelessRecipes = []; /** * @var FurnaceRecipeManager[] * @phpstan-var array */ - protected $furnaceRecipeManagers; + protected array $furnaceRecipeManagers; /** * @var PotionTypeRecipe[][] * @phpstan-var array> */ - protected $potionTypeRecipes = []; + protected array $potionTypeRecipes = []; /** * @var PotionContainerChangeRecipe[][] * @phpstan-var array> */ - protected $potionContainerChangeRecipes = []; + protected array $potionContainerChangeRecipes = []; /** @phpstan-var ObjectSet<\Closure() : void> */ private ObjectSet $recipeRegisteredCallbacks; diff --git a/src/crafting/FurnaceRecipeManager.php b/src/crafting/FurnaceRecipeManager.php index 1f16f4707..1660d0c42 100644 --- a/src/crafting/FurnaceRecipeManager.php +++ b/src/crafting/FurnaceRecipeManager.php @@ -28,7 +28,7 @@ use pocketmine\utils\ObjectSet; final class FurnaceRecipeManager{ /** @var FurnaceRecipe[] */ - protected $furnaceRecipes = []; + protected array $furnaceRecipes = []; /** @phpstan-var ObjectSet<\Closure(FurnaceRecipe) : void> */ private ObjectSet $recipeRegisteredCallbacks; diff --git a/src/entity/Attribute.php b/src/entity/Attribute.php index 3f9bc7faf..3072fc761 100644 --- a/src/entity/Attribute.php +++ b/src/entity/Attribute.php @@ -48,32 +48,19 @@ class Attribute{ public const ZOMBIE_SPAWN_REINFORCEMENTS = self::MC_PREFIX . "zombie.spawn_reinforcements"; public const LAVA_MOVEMENT = self::MC_PREFIX . "lava_movement"; - /** @var string */ - protected $id; - /** @var float */ - protected $minValue; - /** @var float */ - protected $maxValue; - /** @var float */ - protected $defaultValue; - /** @var float */ - protected $currentValue; - /** @var bool */ - protected $shouldSend; + protected float $currentValue; + protected bool $desynchronized = true; - /** @var bool */ - protected $desynchronized = true; - - public function __construct(string $id, float $minValue, float $maxValue, float $defaultValue, bool $shouldSend = true){ + public function __construct( + protected string $id, + protected float $minValue, + protected float $maxValue, + protected float $defaultValue, + protected bool $shouldSend = true + ){ if($minValue > $maxValue || $defaultValue > $maxValue || $defaultValue < $minValue){ throw new \InvalidArgumentException("Invalid ranges: min value: $minValue, max value: $maxValue, $defaultValue: $defaultValue"); } - $this->id = $id; - $this->minValue = $minValue; - $this->maxValue = $maxValue; - $this->defaultValue = $defaultValue; - $this->shouldSend = $shouldSend; - $this->currentValue = $this->defaultValue; } diff --git a/src/entity/object/PaintingMotive.php b/src/entity/object/PaintingMotive.php index a2c6f221a..dd61cf3c6 100644 --- a/src/entity/object/PaintingMotive.php +++ b/src/entity/object/PaintingMotive.php @@ -27,7 +27,7 @@ class PaintingMotive{ private static bool $initialized = false; /** @var PaintingMotive[] */ - protected static $motives = []; + protected static array $motives = []; public static function init() : void{ foreach([ diff --git a/src/event/Event.php b/src/event/Event.php index 17f0417c5..f77b54ced 100644 --- a/src/event/Event.php +++ b/src/event/Event.php @@ -33,8 +33,7 @@ abstract class Event{ private static int $eventCallDepth = 1; - /** @var string|null */ - protected $eventName = null; + protected ?string $eventName = null; final public function getEventName() : string{ return $this->eventName ?? get_class($this); diff --git a/src/event/block/BlockBreakEvent.php b/src/event/block/BlockBreakEvent.php index e11a71ebc..369dca205 100644 --- a/src/event/block/BlockBreakEvent.php +++ b/src/event/block/BlockBreakEvent.php @@ -35,30 +35,22 @@ use pocketmine\player\Player; class BlockBreakEvent extends BlockEvent implements Cancellable{ use CancellableTrait; - /** @var Player */ - protected $player; - - /** @var Item */ - protected $item; - - /** @var bool */ - protected $instaBreak = false; /** @var Item[] */ - protected $blockDrops = []; - /** @var int */ - protected $xpDrops; + protected array $blockDrops = []; /** * @param Item[] $drops */ - public function __construct(Player $player, Block $block, Item $item, bool $instaBreak = false, array $drops = [], int $xpDrops = 0){ + public function __construct( + protected Player $player, + Block $block, + protected Item $item, + protected bool $instaBreak = false, + array $drops = [], + protected int $xpDrops = 0 + ){ parent::__construct($block); - $this->item = $item; - $this->player = $player; - - $this->instaBreak = $instaBreak; $this->setDrops($drops); - $this->xpDrops = $xpDrops; } /** diff --git a/src/event/block/BlockEvent.php b/src/event/block/BlockEvent.php index d506529ba..16e5a81e9 100644 --- a/src/event/block/BlockEvent.php +++ b/src/event/block/BlockEvent.php @@ -30,12 +30,9 @@ use pocketmine\block\Block; use pocketmine\event\Event; abstract class BlockEvent extends Event{ - /** @var Block */ - protected $block; - - public function __construct(Block $block){ - $this->block = $block; - } + public function __construct( + protected Block $block + ){} public function getBlock() : Block{ return $this->block; diff --git a/src/event/block/BlockPlaceEvent.php b/src/event/block/BlockPlaceEvent.php index 955b90134..f5e9c218d 100644 --- a/src/event/block/BlockPlaceEvent.php +++ b/src/event/block/BlockPlaceEvent.php @@ -35,23 +35,14 @@ use pocketmine\player\Player; class BlockPlaceEvent extends BlockEvent implements Cancellable{ use CancellableTrait; - /** @var Player */ - protected $player; - - /** @var Item */ - protected $item; - - /** @var Block */ - protected $blockReplace; - /** @var Block */ - protected $blockAgainst; - - public function __construct(Player $player, Block $blockPlace, Block $blockReplace, Block $blockAgainst, Item $item){ + public function __construct( + protected Player $player, + Block $blockPlace, + protected Block $blockReplace, + protected Block $blockAgainst, + protected Item $item + ){ parent::__construct($blockPlace); - $this->blockReplace = $blockReplace; - $this->blockAgainst = $blockAgainst; - $this->item = $item; - $this->player = $player; } /** diff --git a/src/event/entity/EntityCombustByBlockEvent.php b/src/event/entity/EntityCombustByBlockEvent.php index 9b1d56f5a..84fc963a7 100644 --- a/src/event/entity/EntityCombustByBlockEvent.php +++ b/src/event/entity/EntityCombustByBlockEvent.php @@ -27,8 +27,7 @@ use pocketmine\block\Block; use pocketmine\entity\Entity; class EntityCombustByBlockEvent extends EntityCombustEvent{ - /** @var Block */ - protected $combuster; + protected Block $combuster; public function __construct(Block $combuster, Entity $combustee, int $duration){ parent::__construct($combustee, $duration); diff --git a/src/event/entity/EntityCombustByEntityEvent.php b/src/event/entity/EntityCombustByEntityEvent.php index 435ab670a..5abb723a2 100644 --- a/src/event/entity/EntityCombustByEntityEvent.php +++ b/src/event/entity/EntityCombustByEntityEvent.php @@ -26,8 +26,7 @@ namespace pocketmine\event\entity; use pocketmine\entity\Entity; class EntityCombustByEntityEvent extends EntityCombustEvent{ - /** @var Entity */ - protected $combuster; + protected Entity $combuster; public function __construct(Entity $combuster, Entity $combustee, int $duration){ parent::__construct($combustee, $duration); diff --git a/src/event/entity/EntityCombustEvent.php b/src/event/entity/EntityCombustEvent.php index 442c25f9b..a38d82b18 100644 --- a/src/event/entity/EntityCombustEvent.php +++ b/src/event/entity/EntityCombustEvent.php @@ -33,8 +33,7 @@ use pocketmine\event\CancellableTrait; class EntityCombustEvent extends EntityEvent implements Cancellable{ use CancellableTrait; - /** @var int */ - protected $duration; + protected int $duration; public function __construct(Entity $combustee, int $duration){ $this->entity = $combustee; diff --git a/src/event/entity/EntityEvent.php b/src/event/entity/EntityEvent.php index 0a13ff0eb..ecb234e32 100644 --- a/src/event/entity/EntityEvent.php +++ b/src/event/entity/EntityEvent.php @@ -33,11 +33,8 @@ use pocketmine\event\Event; * @phpstan-template TEntity of Entity */ abstract class EntityEvent extends Event{ - /** - * @var Entity - * @phpstan-var TEntity - */ - protected $entity; + /** @phpstan-var TEntity */ + protected Entity $entity; /** * @return Entity diff --git a/src/event/entity/EntityExplodeEvent.php b/src/event/entity/EntityExplodeEvent.php index fa69d2fbf..333f320f4 100644 --- a/src/event/entity/EntityExplodeEvent.php +++ b/src/event/entity/EntityExplodeEvent.php @@ -41,27 +41,20 @@ use pocketmine\world\Position; class EntityExplodeEvent extends EntityEvent implements Cancellable{ use CancellableTrait; - /** @var Position */ - protected $position; - - /** @var Block[] */ - protected $blocks; - - /** @var float */ - protected $yield; - /** * @param Block[] $blocks * @param float $yield 0-100 */ - public function __construct(Entity $entity, Position $position, array $blocks, float $yield){ + public function __construct( + Entity $entity, + protected Position $position, + protected array $blocks, + protected float $yield + ){ $this->entity = $entity; - $this->position = $position; - $this->blocks = $blocks; if($yield < 0.0 || $yield > 100.0){ throw new \InvalidArgumentException("Yield must be in range 0.0 - 100.0"); } - $this->yield = $yield; } public function getPosition() : Position{ diff --git a/src/event/entity/ExplosionPrimeEvent.php b/src/event/entity/ExplosionPrimeEvent.php index 50146a6dd..dbbc29c6f 100644 --- a/src/event/entity/ExplosionPrimeEvent.php +++ b/src/event/entity/ExplosionPrimeEvent.php @@ -38,16 +38,16 @@ use pocketmine\event\CancellableTrait; class ExplosionPrimeEvent extends EntityEvent implements Cancellable{ use CancellableTrait; - /** @var float */ - protected $force; private bool $blockBreaking = true; - public function __construct(Entity $entity, float $force){ + public function __construct( + Entity $entity, + protected float $force + ){ if($force <= 0){ throw new \InvalidArgumentException("Explosion radius must be positive"); } $this->entity = $entity; - $this->force = $force; } public function getForce() : float{ diff --git a/src/event/inventory/InventoryEvent.php b/src/event/inventory/InventoryEvent.php index ac19d3705..966f05800 100644 --- a/src/event/inventory/InventoryEvent.php +++ b/src/event/inventory/InventoryEvent.php @@ -31,12 +31,9 @@ use pocketmine\inventory\Inventory; use pocketmine\player\Player; abstract class InventoryEvent extends Event{ - /** @var Inventory */ - protected $inventory; - - public function __construct(Inventory $inventory){ - $this->inventory = $inventory; - } + public function __construct( + protected Inventory $inventory + ){} public function getInventory() : Inventory{ return $this->inventory; diff --git a/src/event/player/PlayerChatEvent.php b/src/event/player/PlayerChatEvent.php index 138410357..dc8259dff 100644 --- a/src/event/player/PlayerChatEvent.php +++ b/src/event/player/PlayerChatEvent.php @@ -35,25 +35,16 @@ use pocketmine\utils\Utils; class PlayerChatEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var string */ - protected $message; - - /** @var string */ - protected $format; - - /** @var CommandSender[] */ - protected $recipients = []; - /** * @param CommandSender[] $recipients */ - public function __construct(Player $player, string $message, array $recipients, string $format = "chat.type.text"){ + public function __construct( + Player $player, + protected string $message, + protected array $recipients, + protected string $format = "chat.type.text" + ){ $this->player = $player; - $this->message = $message; - - $this->format = $format; - - $this->recipients = $recipients; } public function getMessage() : string{ diff --git a/src/event/player/PlayerCommandPreprocessEvent.php b/src/event/player/PlayerCommandPreprocessEvent.php index afa45ddd0..4dcdb1e34 100644 --- a/src/event/player/PlayerCommandPreprocessEvent.php +++ b/src/event/player/PlayerCommandPreprocessEvent.php @@ -41,12 +41,11 @@ use pocketmine\player\Player; class PlayerCommandPreprocessEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var string */ - protected $message; - - public function __construct(Player $player, string $message){ + public function __construct( + Player $player, + protected string $message + ){ $this->player = $player; - $this->message = $message; } public function getMessage() : string{ diff --git a/src/event/player/PlayerDataSaveEvent.php b/src/event/player/PlayerDataSaveEvent.php index a848f5256..5e840d334 100644 --- a/src/event/player/PlayerDataSaveEvent.php +++ b/src/event/player/PlayerDataSaveEvent.php @@ -35,19 +35,11 @@ use pocketmine\player\Player; class PlayerDataSaveEvent extends Event implements Cancellable{ use CancellableTrait; - /** @var CompoundTag */ - protected $data; - /** @var string */ - protected $playerName; - public function __construct( - CompoundTag $nbt, - string $playerName, + protected CompoundTag $data, + protected string $playerName, private ?Player $player - ){ - $this->data = $nbt; - $this->playerName = $playerName; - } + ){} /** * Returns the data to be written to disk as a CompoundTag diff --git a/src/event/player/PlayerDeathEvent.php b/src/event/player/PlayerDeathEvent.php index 3c8e7ec59..01358dd87 100644 --- a/src/event/player/PlayerDeathEvent.php +++ b/src/event/player/PlayerDeathEvent.php @@ -35,8 +35,7 @@ use pocketmine\lang\Translatable; use pocketmine\player\Player; class PlayerDeathEvent extends EntityDeathEvent{ - /** @var Player */ - protected $player; + protected Player $player; private Translatable|string $deathMessage; private bool $keepInventory = false; diff --git a/src/event/player/PlayerEvent.php b/src/event/player/PlayerEvent.php index 8be23d350..2206363b0 100644 --- a/src/event/player/PlayerEvent.php +++ b/src/event/player/PlayerEvent.php @@ -30,8 +30,7 @@ use pocketmine\event\Event; use pocketmine\player\Player; abstract class PlayerEvent extends Event{ - /** @var Player */ - protected $player; + protected Player $player; public function getPlayer() : Player{ return $this->player; diff --git a/src/event/player/PlayerExhaustEvent.php b/src/event/player/PlayerExhaustEvent.php index 95e331232..ec5b1d2e9 100644 --- a/src/event/player/PlayerExhaustEvent.php +++ b/src/event/player/PlayerExhaustEvent.php @@ -46,23 +46,19 @@ class PlayerExhaustEvent extends EntityEvent implements Cancellable{ public const CAUSE_SPRINT_JUMPING = 10; public const CAUSE_CUSTOM = 11; - /** @var Human */ - protected $player; - public function __construct( - Human $human, + protected Human $human, private float $amount, private int $cause ){ $this->entity = $human; - $this->player = $human; } /** * @return Human */ public function getPlayer(){ - return $this->player; + return $this->human; } public function getAmount() : float{ diff --git a/src/event/player/PlayerExperienceChangeEvent.php b/src/event/player/PlayerExperienceChangeEvent.php index b62f82899..908686c7f 100644 --- a/src/event/player/PlayerExperienceChangeEvent.php +++ b/src/event/player/PlayerExperienceChangeEvent.php @@ -35,9 +35,6 @@ use pocketmine\event\entity\EntityEvent; class PlayerExperienceChangeEvent extends EntityEvent implements Cancellable{ use CancellableTrait; - /** @var Human */ - protected $entity; - public function __construct( Human $player, private int $oldLevel, diff --git a/src/event/player/PlayerGameModeChangeEvent.php b/src/event/player/PlayerGameModeChangeEvent.php index 926d17d2b..f1c7f7e3f 100644 --- a/src/event/player/PlayerGameModeChangeEvent.php +++ b/src/event/player/PlayerGameModeChangeEvent.php @@ -34,15 +34,14 @@ use pocketmine\player\Player; class PlayerGameModeChangeEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var GameMode */ - protected $gamemode; - - public function __construct(Player $player, GameMode $newGamemode){ + public function __construct( + Player $player, + protected GameMode $newGamemode + ){ $this->player = $player; - $this->gamemode = $newGamemode; } public function getNewGamemode() : GameMode{ - return $this->gamemode; + return $this->newGamemode; } } diff --git a/src/event/player/PlayerInteractEvent.php b/src/event/player/PlayerInteractEvent.php index b76a8226c..a46694972 100644 --- a/src/event/player/PlayerInteractEvent.php +++ b/src/event/player/PlayerInteractEvent.php @@ -40,28 +40,18 @@ class PlayerInteractEvent extends PlayerEvent implements Cancellable{ public const LEFT_CLICK_BLOCK = 0; public const RIGHT_CLICK_BLOCK = 1; - /** @var Block */ - protected $blockTouched; + protected Vector3 $touchVector; - /** @var Vector3 */ - protected $touchVector; - - /** @var int */ - protected $blockFace; - - /** @var Item */ - protected $item; - - /** @var int */ - protected $action; - - public function __construct(Player $player, Item $item, Block $block, ?Vector3 $touchVector, int $face, int $action = PlayerInteractEvent::RIGHT_CLICK_BLOCK){ + public function __construct( + Player $player, + protected Item $item, + protected Block $blockTouched, + ?Vector3 $touchVector, + protected int $blockFace, + protected int $action = PlayerInteractEvent::RIGHT_CLICK_BLOCK + ){ $this->player = $player; - $this->item = $item; - $this->blockTouched = $block; $this->touchVector = $touchVector ?? new Vector3(0, 0, 0); - $this->blockFace = $face; - $this->action = $action; } public function getAction() : int{ diff --git a/src/event/player/PlayerJoinEvent.php b/src/event/player/PlayerJoinEvent.php index e46e3fd7d..1e5e06e76 100644 --- a/src/event/player/PlayerJoinEvent.php +++ b/src/event/player/PlayerJoinEvent.php @@ -34,12 +34,11 @@ use pocketmine\player\Player; * @see PlayerLoginEvent */ class PlayerJoinEvent extends PlayerEvent{ - /** @var string|Translatable */ - protected $joinMessage; - - public function __construct(Player $player, Translatable|string $joinMessage){ + public function __construct( + Player $player, + protected Translatable|string $joinMessage + ){ $this->player = $player; - $this->joinMessage = $joinMessage; } public function setJoinMessage(Translatable|string $joinMessage) : void{ diff --git a/src/event/player/PlayerKickEvent.php b/src/event/player/PlayerKickEvent.php index 92f7c071b..e8a11acd2 100644 --- a/src/event/player/PlayerKickEvent.php +++ b/src/event/player/PlayerKickEvent.php @@ -34,16 +34,12 @@ use pocketmine\player\Player; class PlayerKickEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var Translatable|string */ - protected $quitMessage; - - /** @var string */ - protected $reason; - - public function __construct(Player $player, string $reason, Translatable|string $quitMessage){ + public function __construct( + Player $player, + protected string $reason, + protected Translatable|string $quitMessage + ){ $this->player = $player; - $this->quitMessage = $quitMessage; - $this->reason = $reason; } /** diff --git a/src/event/player/PlayerLoginEvent.php b/src/event/player/PlayerLoginEvent.php index 8c418f703..4603902c4 100644 --- a/src/event/player/PlayerLoginEvent.php +++ b/src/event/player/PlayerLoginEvent.php @@ -35,12 +35,11 @@ use pocketmine\player\Player; class PlayerLoginEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var string */ - protected $kickMessage; - - public function __construct(Player $player, string $kickMessage){ + public function __construct( + Player $player, + protected string $kickMessage + ){ $this->player = $player; - $this->kickMessage = $kickMessage; } public function setKickMessage(string $kickMessage) : void{ diff --git a/src/event/player/PlayerPreLoginEvent.php b/src/event/player/PlayerPreLoginEvent.php index b4a286779..1f13ec372 100644 --- a/src/event/player/PlayerPreLoginEvent.php +++ b/src/event/player/PlayerPreLoginEvent.php @@ -52,20 +52,15 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ self::KICK_REASON_BANNED ]; - /** @var bool */ - protected $authRequired; - /** @var string[] reason const => associated message */ - protected $kickReasons = []; + protected array $kickReasons = []; public function __construct( private PlayerInfo $playerInfo, private string $ip, private int $port, - bool $authRequired - ){ - $this->authRequired = $authRequired; - } + protected bool $authRequired + ){} /** * Returns an object containing self-proclaimed information about the connecting player. diff --git a/src/event/player/PlayerQuitEvent.php b/src/event/player/PlayerQuitEvent.php index 3e08cb315..f05434c24 100644 --- a/src/event/player/PlayerQuitEvent.php +++ b/src/event/player/PlayerQuitEvent.php @@ -37,16 +37,12 @@ use pocketmine\player\Player; * @see PlayerKickEvent */ class PlayerQuitEvent extends PlayerEvent{ - - /** @var Translatable|string */ - protected $quitMessage; - /** @var string */ - protected $quitReason; - - public function __construct(Player $player, Translatable|string $quitMessage, string $quitReason){ + public function __construct( + Player $player, + protected Translatable|string $quitMessage, + protected string $quitReason + ){ $this->player = $player; - $this->quitMessage = $quitMessage; - $this->quitReason = $quitReason; } /** diff --git a/src/event/player/PlayerRespawnEvent.php b/src/event/player/PlayerRespawnEvent.php index 1bdc2446c..4aa12e129 100644 --- a/src/event/player/PlayerRespawnEvent.php +++ b/src/event/player/PlayerRespawnEvent.php @@ -31,12 +31,11 @@ use pocketmine\world\Position; * Called when a player is respawned */ class PlayerRespawnEvent extends PlayerEvent{ - /** @var Position */ - protected $position; - - public function __construct(Player $player, Position $position){ + public function __construct( + Player $player, + protected Position $position + ){ $this->player = $player; - $this->position = $position; } public function getRespawnPosition() : Position{ diff --git a/src/event/player/PlayerToggleFlightEvent.php b/src/event/player/PlayerToggleFlightEvent.php index b8c0f93d9..fc94f101d 100644 --- a/src/event/player/PlayerToggleFlightEvent.php +++ b/src/event/player/PlayerToggleFlightEvent.php @@ -30,12 +30,11 @@ use pocketmine\player\Player; class PlayerToggleFlightEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var bool */ - protected $isFlying; - - public function __construct(Player $player, bool $isFlying){ + public function __construct( + Player $player, + protected bool $isFlying + ){ $this->player = $player; - $this->isFlying = $isFlying; } public function isFlying() : bool{ diff --git a/src/event/player/PlayerToggleSneakEvent.php b/src/event/player/PlayerToggleSneakEvent.php index 0b7538975..a8fb576ef 100644 --- a/src/event/player/PlayerToggleSneakEvent.php +++ b/src/event/player/PlayerToggleSneakEvent.php @@ -30,12 +30,11 @@ use pocketmine\player\Player; class PlayerToggleSneakEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var bool */ - protected $isSneaking; - - public function __construct(Player $player, bool $isSneaking){ + public function __construct( + Player $player, + protected bool $isSneaking + ){ $this->player = $player; - $this->isSneaking = $isSneaking; } public function isSneaking() : bool{ diff --git a/src/event/player/PlayerToggleSprintEvent.php b/src/event/player/PlayerToggleSprintEvent.php index 2da14d7b7..ae66c94bc 100644 --- a/src/event/player/PlayerToggleSprintEvent.php +++ b/src/event/player/PlayerToggleSprintEvent.php @@ -30,12 +30,11 @@ use pocketmine\player\Player; class PlayerToggleSprintEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var bool */ - protected $isSprinting; - - public function __construct(Player $player, bool $isSprinting){ + public function __construct( + Player $player, + protected bool $isSprinting + ){ $this->player = $player; - $this->isSprinting = $isSprinting; } public function isSprinting() : bool{ diff --git a/src/event/player/PlayerTransferEvent.php b/src/event/player/PlayerTransferEvent.php index adaa0ca5d..3b9f88f3f 100644 --- a/src/event/player/PlayerTransferEvent.php +++ b/src/event/player/PlayerTransferEvent.php @@ -33,18 +33,13 @@ use pocketmine\player\Player; class PlayerTransferEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; - /** @var string */ - protected $address; - /** @var int */ - protected $port = 19132; - /** @var string */ - protected $message; - - public function __construct(Player $player, string $address, int $port, string $message){ + public function __construct( + Player $player, + protected string $address, + protected int $port, + protected string $message + ){ $this->player = $player; - $this->address = $address; - $this->port = $port; - $this->message = $message; } /** diff --git a/src/event/server/CommandEvent.php b/src/event/server/CommandEvent.php index 9a982d230..9b7bce53d 100644 --- a/src/event/server/CommandEvent.php +++ b/src/event/server/CommandEvent.php @@ -44,16 +44,10 @@ use pocketmine\event\CancellableTrait; class CommandEvent extends ServerEvent implements Cancellable{ use CancellableTrait; - /** @var string */ - protected $command; - - /** @var CommandSender */ - protected $sender; - - public function __construct(CommandSender $sender, string $command){ - $this->sender = $sender; - $this->command = $command; - } + public function __construct( + protected CommandSender $sender, + protected string $command + ){} public function getSender() : CommandSender{ return $this->sender; diff --git a/src/event/server/NetworkInterfaceEvent.php b/src/event/server/NetworkInterfaceEvent.php index 98f48f07d..5c44c909e 100644 --- a/src/event/server/NetworkInterfaceEvent.php +++ b/src/event/server/NetworkInterfaceEvent.php @@ -26,12 +26,9 @@ namespace pocketmine\event\server; use pocketmine\network\NetworkInterface; class NetworkInterfaceEvent extends ServerEvent{ - /** @var NetworkInterface */ - protected $interface; - - public function __construct(NetworkInterface $interface){ - $this->interface = $interface; - } + public function __construct( + protected NetworkInterface $interface + ){} public function getInterface() : NetworkInterface{ return $this->interface; diff --git a/src/inventory/ArmorInventory.php b/src/inventory/ArmorInventory.php index 4754e3aff..cbc741b53 100644 --- a/src/inventory/ArmorInventory.php +++ b/src/inventory/ArmorInventory.php @@ -32,11 +32,9 @@ class ArmorInventory extends SimpleInventory{ public const SLOT_LEGS = 2; public const SLOT_FEET = 3; - /** @var Living */ - protected $holder; - - public function __construct(Living $holder){ - $this->holder = $holder; + public function __construct( + protected Living $holder + ){ parent::__construct(4); } diff --git a/src/inventory/BaseInventory.php b/src/inventory/BaseInventory.php index e593893ce..8343b7bbf 100644 --- a/src/inventory/BaseInventory.php +++ b/src/inventory/BaseInventory.php @@ -37,15 +37,14 @@ use function spl_object_id; * This class provides everything needed to implement an inventory, minus the underlying storage system. */ abstract class BaseInventory implements Inventory{ - /** @var int */ - protected $maxStackSize = Inventory::MAX_STACK; + protected int $maxStackSize = Inventory::MAX_STACK; /** @var Player[] */ - protected $viewers = []; + protected array $viewers = []; /** * @var InventoryListener[]|ObjectSet * @phpstan-var ObjectSet */ - protected $listeners; + protected ObjectSet $listeners; public function __construct(){ $this->listeners = new ObjectSet(); diff --git a/src/inventory/PlayerCursorInventory.php b/src/inventory/PlayerCursorInventory.php index 7c219fd00..9c83f1e8e 100644 --- a/src/inventory/PlayerCursorInventory.php +++ b/src/inventory/PlayerCursorInventory.php @@ -26,18 +26,13 @@ namespace pocketmine\inventory; use pocketmine\player\Player; class PlayerCursorInventory extends SimpleInventory implements TemporaryInventory{ - /** @var Player */ - protected $holder; - - public function __construct(Player $holder){ - $this->holder = $holder; + public function __construct( + protected Player $holder + ){ parent::__construct(1); } - /** - * @return Player - */ - public function getHolder(){ + public function getHolder() : Player{ return $this->holder; } } diff --git a/src/inventory/PlayerInventory.php b/src/inventory/PlayerInventory.php index baeecb5af..9272db832 100644 --- a/src/inventory/PlayerInventory.php +++ b/src/inventory/PlayerInventory.php @@ -30,17 +30,14 @@ use pocketmine\utils\ObjectSet; class PlayerInventory extends SimpleInventory{ - /** @var Human */ - protected $holder; - - /** @var int */ - protected $itemInHandIndex = 0; + protected Human $holder; + protected int $itemInHandIndex = 0; /** * @var \Closure[]|ObjectSet * @phpstan-var ObjectSet<\Closure(int $oldIndex) : void> */ - protected $heldItemIndexChangeListeners; + protected ObjectSet $heldItemIndexChangeListeners; public function __construct(Human $player){ $this->holder = $player; @@ -123,10 +120,7 @@ class PlayerInventory extends SimpleInventory{ return 9; } - /** - * @return Human|Player - */ - public function getHolder(){ + public function getHolder() : Human{ return $this->holder; } } diff --git a/src/inventory/transaction/CraftingTransaction.php b/src/inventory/transaction/CraftingTransaction.php index 90ee1b05d..c7f71723f 100644 --- a/src/inventory/transaction/CraftingTransaction.php +++ b/src/inventory/transaction/CraftingTransaction.php @@ -48,15 +48,13 @@ use function intdiv; * results, with no remainder. Any leftovers are expected to be emitted back to the crafting grid. */ class CraftingTransaction extends InventoryTransaction{ - /** @var CraftingRecipe|null */ - protected $recipe; - /** @var int|null */ - protected $repetitions; + protected ?CraftingRecipe $recipe; + protected ?int $repetitions; /** @var Item[] */ - protected $inputs = []; + protected array $inputs = []; /** @var Item[] */ - protected $outputs = []; + protected array $outputs = []; private CraftingManager $craftingManager; diff --git a/src/inventory/transaction/InventoryTransaction.php b/src/inventory/transaction/InventoryTransaction.php index 82e206550..c26442518 100644 --- a/src/inventory/transaction/InventoryTransaction.php +++ b/src/inventory/transaction/InventoryTransaction.php @@ -55,22 +55,21 @@ use function spl_object_id; * @see InventoryAction */ class InventoryTransaction{ - /** @var bool */ - protected $hasExecuted = false; - /** @var Player */ - protected $source; + protected bool $hasExecuted = false; /** @var Inventory[] */ - protected $inventories = []; + protected array $inventories = []; /** @var InventoryAction[] */ - protected $actions = []; + protected array $actions = []; /** * @param InventoryAction[] $actions */ - public function __construct(Player $source, array $actions = []){ - $this->source = $source; + public function __construct( + protected Player $source, + array $actions = [] + ){ foreach($actions as $action){ $this->addAction($action); } diff --git a/src/inventory/transaction/action/InventoryAction.php b/src/inventory/transaction/action/InventoryAction.php index 4fa3ac15e..b0741920b 100644 --- a/src/inventory/transaction/action/InventoryAction.php +++ b/src/inventory/transaction/action/InventoryAction.php @@ -32,15 +32,10 @@ use pocketmine\player\Player; * Represents an action involving a change that applies in some way to an inventory or other item-source. */ abstract class InventoryAction{ - /** @var Item */ - protected $sourceItem; - /** @var Item */ - protected $targetItem; - - public function __construct(Item $sourceItem, Item $targetItem){ - $this->sourceItem = $sourceItem; - $this->targetItem = $targetItem; - } + public function __construct( + protected Item $sourceItem, + protected Item $targetItem + ){} /** * Returns the item that was present before the action took place. diff --git a/src/inventory/transaction/action/SlotChangeAction.php b/src/inventory/transaction/action/SlotChangeAction.php index dd91adfb7..18eb7acbd 100644 --- a/src/inventory/transaction/action/SlotChangeAction.php +++ b/src/inventory/transaction/action/SlotChangeAction.php @@ -33,15 +33,13 @@ use pocketmine\player\Player; * Represents an action causing a change in an inventory slot. */ class SlotChangeAction extends InventoryAction{ - - /** @var Inventory */ - protected $inventory; - private int $inventorySlot; - - public function __construct(Inventory $inventory, int $inventorySlot, Item $sourceItem, Item $targetItem){ + public function __construct( + protected Inventory $inventory, + private int $inventorySlot, + Item $sourceItem, + Item $targetItem + ){ parent::__construct($sourceItem, $targetItem); - $this->inventory = $inventory; - $this->inventorySlot = $inventorySlot; } /** diff --git a/src/item/Armor.php b/src/item/Armor.php index 7cf8e646d..9c6c8cbe0 100644 --- a/src/item/Armor.php +++ b/src/item/Armor.php @@ -42,8 +42,7 @@ class Armor extends Durable{ private ArmorTypeInfo $armorInfo; - /** @var Color|null */ - protected $customColor = null; + protected ?Color $customColor = null; public function __construct(ItemIdentifier $identifier, string $name, ArmorTypeInfo $info){ parent::__construct($identifier, $name); diff --git a/src/item/Durable.php b/src/item/Durable.php index 33678be8c..f867324b2 100644 --- a/src/item/Durable.php +++ b/src/item/Durable.php @@ -29,9 +29,7 @@ use function lcg_value; use function min; abstract class Durable extends Item{ - - /** @var int */ - protected $damage = 0; + protected int $damage = 0; private bool $unbreakable = false; public function getMeta() : int{ diff --git a/src/item/Item.php b/src/item/Item.php index e4b56c895..d14e274ae 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -65,36 +65,28 @@ class Item implements \JsonSerializable{ public const TAG_DISPLAY_NAME = "Name"; public const TAG_DISPLAY_LORE = "Lore"; - private ItemIdentifier $identifier; private CompoundTag $nbt; - /** @var int */ - protected $count = 1; - /** @var string */ - protected $name; + protected int $count = 1; //TODO: this stuff should be moved to itemstack properties, not mushed in with type properties - /** @var string */ - protected $customName = ""; + protected string $customName = ""; /** @var string[] */ - protected $lore = []; - /** - * TODO: this needs to die in a fire - * @var CompoundTag|null - */ - protected $blockEntityTag = null; + protected array $lore = []; + /** TODO: this needs to die in a fire */ + protected ?CompoundTag $blockEntityTag = null; /** * @var string[] * @phpstan-var array */ - protected $canPlaceOn = []; + protected array $canPlaceOn = []; /** * @var string[] * @phpstan-var array */ - protected $canDestroy; + protected array $canDestroy = []; /** * Constructs a new Item type. This constructor should ONLY be used when constructing a new item TYPE to register @@ -103,12 +95,10 @@ class Item implements \JsonSerializable{ * NOTE: This should NOT BE USED for creating items to set into an inventory. Use {@link ItemFactory#get} for that * purpose. */ - public function __construct(ItemIdentifier $identifier, string $name = "Unknown"){ - $this->identifier = $identifier; - $this->name = $name; - - $this->canPlaceOn = []; - $this->canDestroy = []; + public function __construct( + private ItemIdentifier $identifier, + protected string $name = "Unknown" + ){ $this->nbt = new CompoundTag(); } diff --git a/src/item/ItemEnchantmentHandlingTrait.php b/src/item/ItemEnchantmentHandlingTrait.php index 9ba344139..67156ed70 100644 --- a/src/item/ItemEnchantmentHandlingTrait.php +++ b/src/item/ItemEnchantmentHandlingTrait.php @@ -34,7 +34,7 @@ use function spl_object_id; */ trait ItemEnchantmentHandlingTrait{ /** @var EnchantmentInstance[] */ - protected $enchantments = []; + protected array $enchantments = []; public function hasEnchantments() : bool{ return count($this->enchantments) > 0; diff --git a/src/item/TieredTool.php b/src/item/TieredTool.php index cf4647481..98af920ad 100644 --- a/src/item/TieredTool.php +++ b/src/item/TieredTool.php @@ -24,9 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; abstract class TieredTool extends Tool{ - - /** @var ToolTier */ - protected $tier; + protected ToolTier $tier; public function __construct(ItemIdentifier $identifier, string $name, ToolTier $tier){ parent::__construct($identifier, $name); diff --git a/src/item/enchantment/ProtectionEnchantment.php b/src/item/enchantment/ProtectionEnchantment.php index b6f6a91be..84659d22f 100644 --- a/src/item/enchantment/ProtectionEnchantment.php +++ b/src/item/enchantment/ProtectionEnchantment.php @@ -29,10 +29,9 @@ use function array_flip; use function floor; class ProtectionEnchantment extends Enchantment{ - /** @var float */ - protected $typeModifier; + protected float $typeModifier; /** @var int[]|null */ - protected $applicableDamageTypes = null; + protected ?array $applicableDamageTypes = null; /** * ProtectionEnchantment constructor. diff --git a/src/lang/Language.php b/src/lang/Language.php index bce7c5c69..adbb41eb9 100644 --- a/src/lang/Language.php +++ b/src/lang/Language.php @@ -81,19 +81,17 @@ class Language{ throw new LanguageNotFoundException("Language directory $path does not exist or is not a directory"); } - /** @var string */ - protected $langName; - + protected string $langName; /** * @var string[] * @phpstan-var array */ - protected $lang = []; + protected array $lang = []; /** * @var string[] * @phpstan-var array */ - protected $fallbackLang = []; + protected array $fallbackLang = []; /** * @throws LanguageNotFoundException diff --git a/src/lang/Translatable.php b/src/lang/Translatable.php index 43905a1b1..5cccd9bff 100644 --- a/src/lang/Translatable.php +++ b/src/lang/Translatable.php @@ -24,18 +24,16 @@ declare(strict_types=1); namespace pocketmine\lang; final class Translatable{ - - /** @var string $text */ - protected $text; /** @var string[]|Translatable[] $params */ - protected $params = []; + protected array $params = []; /** * @param (float|int|string|Translatable)[] $params */ - public function __construct(string $text, array $params = []){ - $this->text = $text; - + public function __construct( + protected string $text, + array $params = [] + ){ foreach($params as $k => $param){ if(!($param instanceof Translatable)){ $this->params[$k] = (string) $param; diff --git a/src/network/mcpe/ChunkRequestTask.php b/src/network/mcpe/ChunkRequestTask.php index 712283c3f..c16d916e0 100644 --- a/src/network/mcpe/ChunkRequestTask.php +++ b/src/network/mcpe/ChunkRequestTask.php @@ -39,16 +39,10 @@ class ChunkRequestTask extends AsyncTask{ private const TLS_KEY_PROMISE = "promise"; private const TLS_KEY_ERROR_HOOK = "errorHook"; - /** @var string */ - protected $chunk; - /** @var int */ - protected $chunkX; - /** @var int */ - protected $chunkZ; - - /** @var Compressor */ - protected $compressor; - + protected string $chunk; + protected int $chunkX; + protected int $chunkZ; + protected Compressor $compressor; private string $tiles; /** diff --git a/src/network/mcpe/encryption/EncryptionContext.php b/src/network/mcpe/encryption/EncryptionContext.php index ff11b976d..82f780a92 100644 --- a/src/network/mcpe/encryption/EncryptionContext.php +++ b/src/network/mcpe/encryption/EncryptionContext.php @@ -34,8 +34,7 @@ use function substr; class EncryptionContext{ private const CHECKSUM_ALGO = "sha256"; - /** @var bool */ - public static $ENABLED = true; + public static bool $ENABLED = true; private string $key; diff --git a/src/network/mcpe/handler/InGamePacketHandler.php b/src/network/mcpe/handler/InGamePacketHandler.php index ba8163451..446f5e2f0 100644 --- a/src/network/mcpe/handler/InGamePacketHandler.php +++ b/src/network/mcpe/handler/InGamePacketHandler.php @@ -135,16 +135,12 @@ use const JSON_THROW_ON_ERROR; class InGamePacketHandler extends PacketHandler{ private const MAX_FORM_RESPONSE_DEPTH = 2; //modal/simple will be 1, custom forms 2 - they will never contain anything other than string|int|float|bool|null - /** @var CraftingTransaction|null */ - protected $craftingTransaction = null; + protected ?CraftingTransaction $craftingTransaction = null; - /** @var float */ - protected $lastRightClickTime = 0.0; - /** @var UseItemTransactionData|null */ - protected $lastRightClickData = null; + protected float $lastRightClickTime = 0.0; + protected ?UseItemTransactionData $lastRightClickData = null; - /** @var bool */ - public $forceMoveSync = false; + public bool $forceMoveSync = false; public function __construct( private Player $player, diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 674ca9e56..6bc8a65f2 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -40,62 +40,22 @@ use function register_shutdown_function; use const PTHREADS_INHERIT_NONE; class RakLibServer extends Thread{ - private InternetAddress $address; - - /** @var \ThreadedLogger */ - protected $logger; - - /** @var bool */ - protected $cleanShutdown = false; - /** @var bool */ - protected $ready = false; - - /** @var \Threaded */ - protected $mainToThreadBuffer; - /** @var \Threaded */ - protected $threadToMainBuffer; - - /** @var string */ - protected $mainPath; - - /** @var int */ - protected $serverId; - /** @var int */ - protected $maxMtuSize; - - private int $protocolVersion; - - /** @var SleeperNotifier */ - protected $mainThreadNotifier; - - /** @var RakLibThreadCrashInfo|null */ - public $crashInfo = null; + protected bool $cleanShutdown = false; + protected bool $ready = false; + protected string $mainPath; + public ?RakLibThreadCrashInfo $crashInfo = null; public function __construct( - \ThreadedLogger $logger, - \Threaded $mainToThreadBuffer, - \Threaded $threadToMainBuffer, - InternetAddress $address, - int $serverId, - int $maxMtuSize, - int $protocolVersion, - SleeperNotifier $sleeper + protected \ThreadedLogger $logger, + protected \Threaded $mainToThreadBuffer, + protected \Threaded $threadToMainBuffer, + protected InternetAddress $address, + protected int $serverId, + protected int $maxMtuSize, + protected int $protocolVersion, + protected SleeperNotifier $mainThreadNotifier ){ - $this->address = $address; - - $this->serverId = $serverId; - $this->maxMtuSize = $maxMtuSize; - - $this->logger = $logger; - - $this->mainToThreadBuffer = $mainToThreadBuffer; - $this->threadToMainBuffer = $threadToMainBuffer; - $this->mainPath = \pocketmine\PATH; - - $this->protocolVersion = $protocolVersion; - - $this->mainThreadNotifier = $sleeper; } /** diff --git a/src/permission/BanEntry.php b/src/permission/BanEntry.php index d289cee87..e735a9e31 100644 --- a/src/permission/BanEntry.php +++ b/src/permission/BanEntry.php @@ -33,8 +33,7 @@ use function strtolower; use function trim; class BanEntry{ - /** @var string */ - public static $format = "Y-m-d H:i:s O"; + public static string $format = "Y-m-d H:i:s O"; private string $name; private \DateTime $creationDate; diff --git a/src/permission/PermissionManager.php b/src/permission/PermissionManager.php index 4123fb63d..129731533 100644 --- a/src/permission/PermissionManager.php +++ b/src/permission/PermissionManager.php @@ -38,9 +38,9 @@ class PermissionManager{ } /** @var Permission[] */ - protected $permissions = []; + protected array $permissions = []; /** @var PermissibleInternal[][] */ - protected $permSubs = []; + protected array $permSubs = []; public function getPermission(string $name) : ?Permission{ return $this->permissions[$name] ?? null; diff --git a/src/player/GameMode.php b/src/player/GameMode.php index 3ed7b42dc..184ef119f 100644 --- a/src/player/GameMode.php +++ b/src/player/GameMode.php @@ -46,7 +46,7 @@ final class GameMode{ } /** @var self[] */ - protected static $aliasMap = []; + protected static array $aliasMap = []; protected static function setup() : void{ self::registerAll( diff --git a/src/plugin/PluginLoadTriage.php b/src/plugin/PluginLoadTriage.php index c9c4fff77..d4f889117 100644 --- a/src/plugin/PluginLoadTriage.php +++ b/src/plugin/PluginLoadTriage.php @@ -28,15 +28,15 @@ final class PluginLoadTriage{ * @var PluginLoadTriageEntry[] * @phpstan-var array */ - public $plugins = []; + public array $plugins = []; /** * @var string[][] * @phpstan-var array> */ - public $dependencies = []; + public array $dependencies = []; /** * @var string[][] * @phpstan-var array> */ - public $softDependencies = []; + public array $softDependencies = []; } diff --git a/src/plugin/PluginManager.php b/src/plugin/PluginManager.php index 36dcd9195..6770c99da 100644 --- a/src/plugin/PluginManager.php +++ b/src/plugin/PluginManager.php @@ -70,10 +70,10 @@ use function strtolower; */ class PluginManager{ /** @var Plugin[] */ - protected $plugins = []; + protected array $plugins = []; /** @var Plugin[] */ - protected $enabledPlugins = []; + protected array $enabledPlugins = []; private bool $loadPluginsGuard = false; @@ -81,7 +81,7 @@ class PluginManager{ * @var PluginLoader[] * @phpstan-var array, PluginLoader> */ - protected $fileAssociations = []; + protected array $fileAssociations = []; public function __construct( private Server $server, diff --git a/src/promise/PromiseSharedData.php b/src/promise/PromiseSharedData.php index bccf56cc2..40fe69902 100644 --- a/src/promise/PromiseSharedData.php +++ b/src/promise/PromiseSharedData.php @@ -43,9 +43,6 @@ final class PromiseSharedData{ public bool $resolved = false; - /** - * @var mixed - * @phpstan-var TValue|null - */ - public $result = null; + /** @phpstan-var TValue|null */ + public mixed $result = null; } diff --git a/src/resourcepacks/ZippedResourcePack.php b/src/resourcepacks/ZippedResourcePack.php index 2ec39445b..f46f0fd62 100644 --- a/src/resourcepacks/ZippedResourcePack.php +++ b/src/resourcepacks/ZippedResourcePack.php @@ -41,15 +41,9 @@ use function preg_match; use function strlen; class ZippedResourcePack implements ResourcePack{ - - /** @var string */ - protected $path; - - /** @var Manifest */ - protected $manifest; - - /** @var string|null */ - protected $sha256 = null; + protected string $path; + protected Manifest $manifest; + protected ?string $sha256 = null; /** @var resource */ protected $fileResource; diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 184d82c8a..46c6c61db 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -42,9 +42,6 @@ use const PTHREADS_INHERIT_INI; class AsyncPool{ private const WORKER_START_OPTIONS = PTHREADS_INHERIT_INI; - /** @var int */ - protected $size; - /** * @var \SplQueue[]|AsyncTask[][] * @phpstan-var array> @@ -69,14 +66,12 @@ class AsyncPool{ private array $workerStartHooks = []; public function __construct( - int $size, + protected int $size, private int $workerMemoryLimit, private \ClassLoader $classLoader, private \ThreadedLogger $logger, private SleeperHandler $eventLoop - ){ - $this->size = $size; - } + ){} /** * Returns the maximum size of the pool. Note that there may be less active workers than this number. diff --git a/src/scheduler/AsyncTask.php b/src/scheduler/AsyncTask.php index f3f506924..1f8ea4b7f 100644 --- a/src/scheduler/AsyncTask.php +++ b/src/scheduler/AsyncTask.php @@ -59,8 +59,7 @@ abstract class AsyncTask extends \Threaded{ /** @var AsyncWorker|null $worker */ public $worker = null; - /** @var \Threaded */ - public $progressUpdates; + public \Threaded $progressUpdates; private string|int|bool|null|float $result = null; private bool $serialized = false; diff --git a/src/scheduler/TaskHandler.php b/src/scheduler/TaskHandler.php index 2d2af8624..7fbf8e1b7 100644 --- a/src/scheduler/TaskHandler.php +++ b/src/scheduler/TaskHandler.php @@ -27,34 +27,24 @@ use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; class TaskHandler{ + protected int $nextRun; - /** @var Task */ - protected $task; - - /** @var int */ - protected $delay; - - /** @var int */ - protected $period; - - /** @var int */ - protected $nextRun; - - /** @var bool */ - protected $cancelled = false; + protected bool $cancelled = false; private TimingsHandler $timings; private string $taskName; private string $ownerName; - public function __construct(Task $task, int $delay = -1, int $period = -1, ?string $ownerName = null){ + public function __construct( + protected Task $task, + protected int $delay = -1, + protected int $period = -1, + ?string $ownerName = null + ){ if($task->getHandler() !== null){ throw new \InvalidArgumentException("Cannot assign multiple handlers to the same task"); } - $this->task = $task; - $this->delay = $delay; - $this->period = $period; $this->taskName = $task->getName(); $this->ownerName = $ownerName ?? "Unknown"; $this->timings = Timings::getScheduledTaskTimings($this, $period); diff --git a/src/scheduler/TaskScheduler.php b/src/scheduler/TaskScheduler.php index 86e0bb331..e9743f375 100644 --- a/src/scheduler/TaskScheduler.php +++ b/src/scheduler/TaskScheduler.php @@ -33,20 +33,16 @@ use pocketmine\utils\ReversePriorityQueue; class TaskScheduler{ private bool $enabled = true; - /** - * @var ReversePriorityQueue - * @phpstan-var ReversePriorityQueue - */ - protected $queue; + /** @phpstan-var ReversePriorityQueue */ + protected ReversePriorityQueue $queue; /** * @var ObjectSet|TaskHandler[] * @phpstan-var ObjectSet */ - protected $tasks; + protected ObjectSet $tasks; - /** @var int */ - protected $currentTick = 0; + protected int $currentTick = 0; public function __construct( private ?string $owner = null diff --git a/src/stats/SendUsageTask.php b/src/stats/SendUsageTask.php index 2064caf08..59c56b232 100644 --- a/src/stats/SendUsageTask.php +++ b/src/stats/SendUsageTask.php @@ -49,10 +49,8 @@ class SendUsageTask extends AsyncTask{ public const TYPE_STATUS = 2; public const TYPE_CLOSE = 3; - /** @var string */ - public $endpoint; - /** @var string */ - public $data; + public string $endpoint; + public string $data; /** * @param string[] $playerList diff --git a/src/thread/CommonThreadPartsTrait.php b/src/thread/CommonThreadPartsTrait.php index 3f609d833..8085cf8d6 100644 --- a/src/thread/CommonThreadPartsTrait.php +++ b/src/thread/CommonThreadPartsTrait.php @@ -30,11 +30,9 @@ use function error_reporting; trait CommonThreadPartsTrait{ /** @var \Threaded|\ClassLoader[]|null */ private ?\Threaded $classLoaders = null; - /** @var string|null */ - protected $composerAutoloaderPath; + protected ?string $composerAutoloaderPath; - /** @var bool */ - protected $isKilled = false; + protected bool $isKilled = false; /** * @return \ClassLoader[] diff --git a/src/timings/Timings.php b/src/timings/Timings.php index d3dd85578..0fc7c52bb 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -36,96 +36,58 @@ abstract class Timings{ private static bool $initialized = false; - /** @var TimingsHandler */ - public static $fullTick; - /** @var TimingsHandler */ - public static $serverTick; - /** @var TimingsHandler */ - public static $memoryManager; - /** @var TimingsHandler */ - public static $garbageCollector; - /** @var TimingsHandler */ - public static $titleTick; - /** @var TimingsHandler */ - public static $playerNetworkSend; - /** @var TimingsHandler */ - public static $playerNetworkSendCompress; - /** @var TimingsHandler */ - public static $playerNetworkSendEncrypt; - /** @var TimingsHandler */ - public static $playerNetworkReceive; - /** @var TimingsHandler */ - public static $playerNetworkReceiveDecompress; - /** @var TimingsHandler */ - public static $playerNetworkReceiveDecrypt; - /** @var TimingsHandler */ - public static $playerChunkOrder; - /** @var TimingsHandler */ - public static $playerChunkSend; - /** @var TimingsHandler */ - public static $connection; - /** @var TimingsHandler */ - public static $scheduler; - /** @var TimingsHandler */ - public static $serverCommand; - /** @var TimingsHandler */ - public static $worldLoad; - /** @var TimingsHandler */ - public static $worldSave; - /** @var TimingsHandler */ - public static $population; - /** @var TimingsHandler */ - public static $generationCallback; - /** @var TimingsHandler */ - public static $permissibleCalculation; - /** @var TimingsHandler */ - public static $permissibleCalculationDiff; - /** @var TimingsHandler */ - public static $permissibleCalculationCallback; + public static TimingsHandler $fullTick; + public static TimingsHandler $serverTick; + public static TimingsHandler $memoryManager; + public static TimingsHandler $garbageCollector; + public static TimingsHandler $titleTick; + public static TimingsHandler $playerNetworkSend; + public static TimingsHandler $playerNetworkSendCompress; + public static TimingsHandler $playerNetworkSendEncrypt; + public static TimingsHandler $playerNetworkReceive; + public static TimingsHandler $playerNetworkReceiveDecompress; + public static TimingsHandler $playerNetworkReceiveDecrypt; + public static TimingsHandler $playerChunkOrder; + public static TimingsHandler $playerChunkSend; + public static TimingsHandler $connection; + public static TimingsHandler $scheduler; + public static TimingsHandler $serverCommand; + public static TimingsHandler $worldLoad; + public static TimingsHandler $worldSave; + public static TimingsHandler $population; + public static TimingsHandler $generationCallback; + public static TimingsHandler $permissibleCalculation; + public static TimingsHandler $permissibleCalculationDiff; + public static TimingsHandler $permissibleCalculationCallback; + public static TimingsHandler $entityMove; + public static TimingsHandler $playerCheckNearEntities; + public static TimingsHandler $tickEntity; + public static TimingsHandler $tickTileEntity; + public static TimingsHandler $entityBaseTick; + public static TimingsHandler $livingEntityBaseTick; - /** @var TimingsHandler */ - public static $entityMove; - /** @var TimingsHandler */ - public static $playerCheckNearEntities; - /** @var TimingsHandler */ - public static $tickEntity; - /** @var TimingsHandler */ - public static $tickTileEntity; + public static TimingsHandler $schedulerSync; + public static TimingsHandler $schedulerAsync; - /** @var TimingsHandler */ - public static $entityBaseTick; - /** @var TimingsHandler */ - public static $livingEntityBaseTick; + public static TimingsHandler $playerCommand; - /** @var TimingsHandler */ - public static $schedulerSync; - /** @var TimingsHandler */ - public static $schedulerAsync; + public static TimingsHandler $craftingDataCacheRebuild; - /** @var TimingsHandler */ - public static $playerCommand; - - /** @var TimingsHandler */ - public static $craftingDataCacheRebuild; - - /** @var TimingsHandler */ - public static $syncPlayerDataLoad; - /** @var TimingsHandler */ - public static $syncPlayerDataSave; + public static TimingsHandler $syncPlayerDataLoad; + public static TimingsHandler $syncPlayerDataSave; /** @var TimingsHandler[] */ - public static $entityTypeTimingMap = []; + public static array $entityTypeTimingMap = []; /** @var TimingsHandler[] */ - public static $tileEntityTypeTimingMap = []; + public static array $tileEntityTypeTimingMap = []; /** @var TimingsHandler[] */ - public static $packetReceiveTimingMap = []; + public static array $packetReceiveTimingMap = []; /** @var TimingsHandler[] */ - public static $packetSendTimingMap = []; + public static array $packetSendTimingMap = []; /** @var TimingsHandler[] */ - public static $pluginTaskTimingMap = []; + public static array $pluginTaskTimingMap = []; - /** @var TimingsHandler */ - public static $broadcastPackets; + public static TimingsHandler $broadcastPackets; public static function init() : void{ if(self::$initialized){ diff --git a/src/updater/UpdateChecker.php b/src/updater/UpdateChecker.php index 298704a5a..6eb5e7d29 100644 --- a/src/updater/UpdateChecker.php +++ b/src/updater/UpdateChecker.php @@ -33,13 +33,9 @@ use function ucfirst; class UpdateChecker{ - /** @var Server */ - protected $server; - /** @var string */ - protected $endpoint; - /** @var UpdateInfo|null */ - protected $updateInfo = null; - + protected Server $server; + protected string $endpoint; + protected ?UpdateInfo $updateInfo = null; private \Logger $logger; public function __construct(Server $server, string $endpoint){ diff --git a/src/utils/Config.php b/src/utils/Config.php index 3fa78df80..d365b1192 100644 --- a/src/utils/Config.php +++ b/src/utils/Config.php @@ -89,7 +89,7 @@ class Config{ private bool $changed = false; /** @var int[] */ - public static $formats = [ + public static array $formats = [ "properties" => Config::PROPERTIES, "cnf" => Config::CNF, "conf" => Config::CNF, diff --git a/src/utils/Internet.php b/src/utils/Internet.php index 7facf73b5..3b43f87dd 100644 --- a/src/utils/Internet.php +++ b/src/utils/Internet.php @@ -64,10 +64,8 @@ use const SOCK_DGRAM; use const SOL_UDP; class Internet{ - /** @var string|false */ - public static $ip = false; - /** @var bool */ - public static $online = true; + public static string|false $ip = false; + public static bool $online = true; /** * Gets the External IP using an external service, it is cached diff --git a/src/utils/MainLogger.php b/src/utils/MainLogger.php index 1e0c430d8..88d47c55b 100644 --- a/src/utils/MainLogger.php +++ b/src/utils/MainLogger.php @@ -32,8 +32,7 @@ use const PHP_EOL; use const PTHREADS_INHERIT_NONE; class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ - /** @var bool */ - protected $logDebug; + protected bool $logDebug; private string $format = TextFormat::AQUA . "[%s] " . TextFormat::RESET . "%s[%s/%s]: %s" . TextFormat::RESET; private bool $useFormattingCodes = false; diff --git a/src/utils/Random.php b/src/utils/Random.php index 6e932a079..e95f8c782 100644 --- a/src/utils/Random.php +++ b/src/utils/Random.php @@ -40,8 +40,7 @@ class Random{ private int $z; private int $w; - /** @var int */ - protected $seed; + protected int $seed; /** * @param int $seed Integer to be used as seed. diff --git a/src/utils/ServerKiller.php b/src/utils/ServerKiller.php index 67168fe87..05ad20034 100644 --- a/src/utils/ServerKiller.php +++ b/src/utils/ServerKiller.php @@ -27,18 +27,11 @@ use pocketmine\thread\Thread; use function time; class ServerKiller extends Thread{ - - /** @var int */ - public $time; - private bool $stopped = false; - /** - * @param int $time - */ - public function __construct($time = 15){ - $this->time = $time; - } + public function __construct( + public int $time = 15 + ){} protected function onRun() : void{ $start = time(); diff --git a/src/world/Explosion.php b/src/world/Explosion.php index 209fd3e30..48b689e56 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -48,35 +48,27 @@ use function sqrt; class Explosion{ private int $rays = 16; - /** @var World */ - public $world; - /** @var Position */ - public $source; - /** @var float */ - public $size; + public World $world; /** @var Block[] */ - public $affectedBlocks = []; - /** @var float */ - public $stepLen = 0.3; - - private Entity|Block|null $what; + public array $affectedBlocks = []; + public float $stepLen = 0.3; private SubChunkExplorer $subChunkExplorer; - public function __construct(Position $center, float $size, Entity|Block|null $what = null){ - if(!$center->isValid()){ + public function __construct( + public Position $source, + public float $size, + private Entity|Block|null $what = null + ){ + if(!$this->source->isValid()){ throw new \InvalidArgumentException("Position does not have a valid world"); } - $this->source = $center; - $this->world = $center->getWorld(); + $this->world = $this->source->getWorld(); if($size <= 0){ throw new \InvalidArgumentException("Explosion radius must be greater than 0, got $size"); } - $this->size = $size; - - $this->what = $what; $this->subChunkExplorer = new SubChunkExplorer($this->world); } diff --git a/src/world/SimpleChunkManager.php b/src/world/SimpleChunkManager.php index a56095a17..45c6e1b03 100644 --- a/src/world/SimpleChunkManager.php +++ b/src/world/SimpleChunkManager.php @@ -32,7 +32,7 @@ use pocketmine\world\format\Chunk; class SimpleChunkManager implements ChunkManager{ /** @var Chunk[] */ - protected $chunks = []; + protected array $chunks = []; public function __construct( private int $minY, diff --git a/src/world/World.php b/src/world/World.php index 196c2729c..65300005b 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -170,7 +170,7 @@ class World implements ChunkManager{ private array $entitiesByChunk = []; /** @var Entity[] */ - public $updateEntities = []; + public array $updateEntities = []; /** @var Block[][] */ private array $blockCache = []; @@ -202,8 +202,7 @@ class World implements ChunkManager{ private array $unloadQueue = []; private int $time; - /** @var bool */ - public $stopTime = false; + public bool $stopTime = false; private float $sunAnglePercentage = 0.0; private int $skyLightReduction = 0; @@ -261,11 +260,9 @@ class World implements ChunkManager{ /** @var bool[] */ private array $randomTickBlocks = []; - /** @var WorldTimings */ - public $timings; + public WorldTimings $timings; - /** @var float */ - public $tickRateTime = 0; + public float $tickRateTime = 0; private bool $doingTick = false; diff --git a/src/world/biome/Biome.php b/src/world/biome/Biome.php index 6115beabe..dd85f912f 100644 --- a/src/world/biome/Biome.php +++ b/src/world/biome/Biome.php @@ -44,10 +44,8 @@ abstract class Biome{ /** @var Block[] */ private array $groundCover = []; - /** @var float */ - protected $rainfall = 0.5; - /** @var float */ - protected $temperature = 0.5; + protected float $rainfall = 0.5; + protected float $temperature = 0.5; public function clearPopulators() : void{ $this->populators = []; diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index b3265cbdb..825d9b756 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -45,25 +45,21 @@ class Chunk{ private int $terrainDirtyFlags = 0; - /** @var bool|null */ - protected $lightPopulated = false; - /** @var bool */ - protected $terrainPopulated = false; + protected ?bool $lightPopulated = false; + protected bool $terrainPopulated = false; /** * @var \SplFixedArray|SubChunk[] * @phpstan-var \SplFixedArray */ - protected $subChunks; + protected \SplFixedArray $subChunks; /** @var Tile[] */ - protected $tiles = []; + protected array $tiles = []; - /** @var HeightArray */ - protected $heightMap; + protected HeightArray $heightMap; - /** @var BiomeArray */ - protected $biomeIds; + protected BiomeArray $biomeIds; /** * @param SubChunk[] $subChunks diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index 6404f641b..8be5a1143 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -29,17 +29,15 @@ use pocketmine\world\WorldException; use function file_exists; abstract class BaseWorldProvider implements WorldProvider{ - /** @var string */ - protected $path; - /** @var WorldData */ - protected $worldData; + protected WorldData $worldData; - public function __construct(string $path){ + public function __construct( + protected string $path + ){ if(!file_exists($path)){ throw new WorldException("World does not exist"); } - $this->path = $path; $this->worldData = $this->loadLevelData(); } diff --git a/src/world/format/io/WorldProviderManager.php b/src/world/format/io/WorldProviderManager.php index db67c6221..9f741fcb0 100644 --- a/src/world/format/io/WorldProviderManager.php +++ b/src/world/format/io/WorldProviderManager.php @@ -36,7 +36,7 @@ final class WorldProviderManager{ * @var WorldProviderManagerEntry[] * @phpstan-var array */ - protected $providers = []; + protected array $providers = []; private WritableWorldProviderManagerEntry $default; diff --git a/src/world/format/io/data/BaseNbtWorldData.php b/src/world/format/io/data/BaseNbtWorldData.php index 43016af0a..d0f8eb590 100644 --- a/src/world/format/io/data/BaseNbtWorldData.php +++ b/src/world/format/io/data/BaseNbtWorldData.php @@ -32,20 +32,15 @@ use pocketmine\world\format\io\WorldData; use function file_exists; abstract class BaseNbtWorldData implements WorldData{ - - /** @var string */ - protected $dataPath; - - /** @var CompoundTag */ - protected $compoundTag; + protected CompoundTag $compoundTag; /** * @throws CorruptedWorldException * @throws UnsupportedWorldFormatException */ - public function __construct(string $dataPath){ - $this->dataPath = $dataPath; - + public function __construct( + protected string $dataPath + ){ if(!file_exists($this->dataPath)){ throw new CorruptedWorldException("World data not found at $dataPath"); } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 671acb6d9..f8fd42f10 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -96,8 +96,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ protected const CURRENT_LEVEL_CHUNK_VERSION = ChunkVersion::v1_2_0; //yes, I know this is wrong, but it ensures vanilla auto-fixes stuff we currently don't protected const CURRENT_LEVEL_SUBCHUNK_VERSION = SubChunkVersion::PALETTED_MULTI; - /** @var \LevelDB */ - protected $db; + protected \LevelDB $db; private static function checkForLevelDBExtension() : void{ if(!extension_loaded('leveldb')){ diff --git a/src/world/format/io/region/RegionLoader.php b/src/world/format/io/region/RegionLoader.php index bdd31b8dc..71e92d477 100644 --- a/src/world/format/io/region/RegionLoader.php +++ b/src/world/format/io/region/RegionLoader.php @@ -64,24 +64,20 @@ class RegionLoader{ public const FIRST_SECTOR = 2; //location table occupies 0 and 1 - /** @var string */ - protected $filePath; /** @var resource */ protected $filePointer; - /** @var int */ - protected $nextSector = self::FIRST_SECTOR; + protected int $nextSector = self::FIRST_SECTOR; /** @var RegionLocationTableEntry[]|null[] */ - protected $locationTable = []; - /** @var RegionGarbageMap */ - protected $garbageTable; - /** @var int */ - public $lastUsed = 0; + protected array $locationTable = []; + protected RegionGarbageMap $garbageTable; + public int $lastUsed; /** * @throws CorruptedRegionException */ - private function __construct(string $filePath){ - $this->filePath = $filePath; + private function __construct( + protected string $filePath + ){ $this->garbageTable = new RegionGarbageMap([]); $this->lastUsed = time(); diff --git a/src/world/format/io/region/RegionWorldProvider.php b/src/world/format/io/region/RegionWorldProvider.php index 25fcf65b3..23bfeb31a 100644 --- a/src/world/format/io/region/RegionWorldProvider.php +++ b/src/world/format/io/region/RegionWorldProvider.php @@ -73,7 +73,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ } /** @var RegionLoader[] */ - protected $regions = []; + protected array $regions = []; protected function loadLevelData() : WorldData{ return new JavaWorldData(Path::join($this->getPath(), "level.dat")); diff --git a/src/world/generator/Generator.php b/src/world/generator/Generator.php index acc8cc88f..db58e0639 100644 --- a/src/world/generator/Generator.php +++ b/src/world/generator/Generator.php @@ -48,17 +48,12 @@ abstract class Generator{ return $convertedSeed; } - /** @var int */ - protected $seed; + protected Random $random; - protected string $preset; - - /** @var Random */ - protected $random; - - public function __construct(int $seed, string $preset){ - $this->seed = $seed; - $this->preset = $preset; + public function __construct( + protected int $seed, + protected string $preset + ){ $this->random = new Random($seed); } diff --git a/src/world/generator/GeneratorRegisterTask.php b/src/world/generator/GeneratorRegisterTask.php index b8b2ea67d..50e765c9c 100644 --- a/src/world/generator/GeneratorRegisterTask.php +++ b/src/world/generator/GeneratorRegisterTask.php @@ -27,29 +27,19 @@ use pocketmine\scheduler\AsyncTask; use pocketmine\world\World; class GeneratorRegisterTask extends AsyncTask{ - - /** - * @var string - * @phpstan-var class-string - */ - public $generatorClass; - /** @var string */ - public $settings; - /** @var int */ - public $seed; - /** @var int */ - public $worldId; - /** @var int */ - public $worldMinY; - /** @var int */ - public $worldMaxY; + public int $seed; + public int $worldId; + public int $worldMinY; + public int $worldMaxY; /** * @phpstan-param class-string $generatorClass */ - public function __construct(World $world, string $generatorClass, string $generatorSettings){ - $this->generatorClass = $generatorClass; - $this->settings = $generatorSettings; + public function __construct( + World $world, + public string $generatorClass, + public string $generatorSettings + ){ $this->seed = $world->getSeed(); $this->worldId = $world->getId(); $this->worldMinY = $world->getMinY(); @@ -61,7 +51,7 @@ class GeneratorRegisterTask extends AsyncTask{ * @var Generator $generator * @see Generator::__construct() */ - $generator = new $this->generatorClass($this->seed, $this->settings); + $generator = new $this->generatorClass($this->seed, $this->generatorSettings); ThreadLocalGeneratorContext::register(new ThreadLocalGeneratorContext($generator, $this->worldMinY, $this->worldMaxY), $this->worldId); } } diff --git a/src/world/generator/GeneratorUnregisterTask.php b/src/world/generator/GeneratorUnregisterTask.php index c9022e9e2..29ab9dc49 100644 --- a/src/world/generator/GeneratorUnregisterTask.php +++ b/src/world/generator/GeneratorUnregisterTask.php @@ -27,9 +27,7 @@ use pocketmine\scheduler\AsyncTask; use pocketmine\world\World; class GeneratorUnregisterTask extends AsyncTask{ - - /** @var int */ - public $worldId; + public int $worldId; public function __construct(World $world){ $this->worldId = $world->getId(); diff --git a/src/world/generator/noise/Noise.php b/src/world/generator/noise/Noise.php index 1d0b7b3b1..a001c1bea 100644 --- a/src/world/generator/noise/Noise.php +++ b/src/world/generator/noise/Noise.php @@ -111,18 +111,11 @@ abstract class Noise{ ); } - /** @var float */ - protected $persistence; - /** @var float */ - protected $expansion; - /** @var int */ - protected $octaves; - - public function __construct(int $octaves, float $persistence, float $expansion){ - $this->octaves = $octaves; - $this->persistence = $persistence; - $this->expansion = $expansion; - } + public function __construct( + protected int $octaves, + protected float $persistence, + protected float $expansion + ){} /** * @param float $x diff --git a/src/world/generator/noise/Simplex.php b/src/world/generator/noise/Simplex.php index 71ef32cff..7d92a08bb 100644 --- a/src/world/generator/noise/Simplex.php +++ b/src/world/generator/noise/Simplex.php @@ -46,14 +46,11 @@ class Simplex extends Noise{ protected const F3 = 1.0 / 3.0; protected const G3 = 1.0 / 6.0; - /** @var float */ - protected $offsetX; - /** @var float */ - protected $offsetZ; - /** @var float */ - protected $offsetY; + protected float $offsetX; + protected float $offsetZ; + protected float $offsetY; /** @var int[] */ - protected $perm = []; + protected array $perm = []; public function __construct(Random $random, int $octaves, float $persistence, float $expansion){ parent::__construct($octaves, $persistence, $expansion); diff --git a/src/world/generator/object/BirchTree.php b/src/world/generator/object/BirchTree.php index 5bd0b98ff..2a20ceb0d 100644 --- a/src/world/generator/object/BirchTree.php +++ b/src/world/generator/object/BirchTree.php @@ -29,12 +29,10 @@ use pocketmine\world\BlockTransaction; use pocketmine\world\ChunkManager; class BirchTree extends Tree{ - /** @var bool */ - protected $superBirch = false; - - public function __construct(bool $superBirch = false){ + public function __construct( + protected bool $superBirch = false + ){ parent::__construct(VanillaBlocks::BIRCH_LOG(), VanillaBlocks::BIRCH_LEAVES()); - $this->superBirch = $superBirch; } public function getBlockTransaction(ChunkManager $world, int $x, int $y, int $z, Random $random) : ?BlockTransaction{ diff --git a/src/world/generator/object/Ore.php b/src/world/generator/object/Ore.php index e534545c0..ce1ec3be4 100644 --- a/src/world/generator/object/Ore.php +++ b/src/world/generator/object/Ore.php @@ -30,14 +30,10 @@ use function sin; use const M_PI; class Ore{ - private Random $random; - /** @var OreType */ - public $type; - - public function __construct(Random $random, OreType $type){ - $this->type = $type; - $this->random = $random; - } + public function __construct( + private Random $random, + public OreType $type + ){} public function getType() : OreType{ return $this->type; diff --git a/src/world/generator/object/Tree.php b/src/world/generator/object/Tree.php index 9b032ad95..0a9d1e196 100644 --- a/src/world/generator/object/Tree.php +++ b/src/world/generator/object/Tree.php @@ -33,20 +33,11 @@ use pocketmine\world\ChunkManager; use function abs; abstract class Tree{ - /** @var Block */ - protected $trunkBlock; - /** @var Block */ - protected $leafBlock; - - /** @var int */ - protected $treeHeight; - - public function __construct(Block $trunkBlock, Block $leafBlock, int $treeHeight = 7){ - $this->trunkBlock = $trunkBlock; - $this->leafBlock = $leafBlock; - - $this->treeHeight = $treeHeight; - } + public function __construct( + protected Block $trunkBlock, + protected Block $leafBlock, + protected int $treeHeight = 7 + ){} public function canPlaceObject(ChunkManager $world, int $x, int $y, int $z, Random $random) : bool{ $radiusToCheck = 0; diff --git a/src/world/light/LightPopulationTask.php b/src/world/light/LightPopulationTask.php index 94c66e686..041f249b0 100644 --- a/src/world/light/LightPopulationTask.php +++ b/src/world/light/LightPopulationTask.php @@ -37,8 +37,7 @@ use function igbinary_unserialize; class LightPopulationTask extends AsyncTask{ private const TLS_KEY_COMPLETION_CALLBACK = "onCompletion"; - /** @var string */ - public $chunk; + public string $chunk; private string $resultHeightMap; private string $resultSkyLightArrays; diff --git a/src/world/light/LightPropagationContext.php b/src/world/light/LightPropagationContext.php index a13e5ae20..6a7afb1cd 100644 --- a/src/world/light/LightPropagationContext.php +++ b/src/world/light/LightPropagationContext.php @@ -25,27 +25,21 @@ namespace pocketmine\world\light; final class LightPropagationContext{ - /** - * @var \SplQueue - * @phpstan-var \SplQueue - */ - public $spreadQueue; + /** @phpstan-var \SplQueue */ + public \SplQueue $spreadQueue; /** * @var true[] * @phpstan-var array */ - public $spreadVisited = []; + public array $spreadVisited = []; - /** - * @var \SplQueue - * @phpstan-var \SplQueue - */ - public $removalQueue; + /** @phpstan-var \SplQueue */ + public \SplQueue $removalQueue; /** * @var true[] * @phpstan-var array */ - public $removalVisited = []; + public array $removalVisited = []; public function __construct(){ $this->removalQueue = new \SplQueue(); diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index 9570b8e03..a89fb29a8 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -41,30 +41,20 @@ abstract class LightUpdate{ [ 0, 0, -1] ]; - /** - * @var \SplFixedArray|int[] - * @phpstan-var \SplFixedArray - */ - protected $lightFilters; - /** * @var int[][] blockhash => [x, y, z, new light level] * @phpstan-var array */ - protected $updateNodes = []; - - /** @var SubChunkExplorer */ - protected $subChunkExplorer; + protected array $updateNodes = []; /** * @param \SplFixedArray|int[] $lightFilters * @phpstan-param \SplFixedArray $lightFilters */ - public function __construct(SubChunkExplorer $subChunkExplorer, \SplFixedArray $lightFilters){ - $this->lightFilters = $lightFilters; - - $this->subChunkExplorer = $subChunkExplorer; - } + public function __construct( + protected SubChunkExplorer $subChunkExplorer, + protected \SplFixedArray $lightFilters + ){} abstract protected function getCurrentLightArray() : LightArray; diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index a8358ce81..a3f1eafc4 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -46,19 +46,13 @@ use function str_repeat; class FloatingTextParticle implements Particle{ //TODO: HACK! - /** @var string */ - protected $text; - /** @var string */ - protected $title; - /** @var int|null */ - protected $entityId = null; - /** @var bool */ - protected $invisible = false; + protected ?int $entityId = null; + protected bool $invisible = false; - public function __construct(string $text, string $title = ""){ - $this->text = $text; - $this->title = $title; - } + public function __construct( + protected string $text, + protected string $title = "" + ){} public function getText() : string{ return $this->text; diff --git a/src/world/particle/MobSpawnParticle.php b/src/world/particle/MobSpawnParticle.php index 07706888e..6ccb4cf24 100644 --- a/src/world/particle/MobSpawnParticle.php +++ b/src/world/particle/MobSpawnParticle.php @@ -28,15 +28,11 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\types\LevelEvent; class MobSpawnParticle implements Particle{ - /** @var int */ - protected $width; - /** @var int */ - protected $height; - - public function __construct(int $width = 0, int $height = 0){ + public function __construct( + protected int $width = 0, + protected int $height = 0 + ){ //TODO: bounds checks - $this->width = $width; - $this->height = $height; } public function encode(Vector3 $pos) : array{ diff --git a/src/world/utils/SubChunkExplorer.php b/src/world/utils/SubChunkExplorer.php index 1a52dd9cb..d4275e951 100644 --- a/src/world/utils/SubChunkExplorer.php +++ b/src/world/utils/SubChunkExplorer.php @@ -28,24 +28,16 @@ use pocketmine\world\format\Chunk; use pocketmine\world\format\SubChunk; class SubChunkExplorer{ - /** @var ChunkManager */ - protected $world; + public ?Chunk $currentChunk; + public ?SubChunk $currentSubChunk; - /** @var Chunk|null */ - public $currentChunk; - /** @var SubChunk|null */ - public $currentSubChunk; + protected int $currentX; + protected int $currentY; + protected int $currentZ; - /** @var int */ - protected $currentX; - /** @var int */ - protected $currentY; - /** @var int */ - protected $currentZ; - - public function __construct(ChunkManager $world){ - $this->world = $world; - } + public function __construct( + protected ChunkManager $world + ){} /** * @phpstan-return SubChunkExplorerStatus::* From 38cf9fc6e6531ce885d8c1e43a6c32f4f6b3a2ef Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Jun 2022 18:27:22 +0100 Subject: [PATCH 118/692] Fixed some timings not being initialized in unit tests previously this error was unnoticed, since uninitialized typeless properties are populated by NULL, but now it causes an error to be thrown. --- src/timings/Timings.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 0fc7c52bb..dbad30faf 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -144,6 +144,7 @@ abstract class Timings{ } public static function getScheduledTaskTimings(TaskHandler $task, int $period) : TimingsHandler{ + self::init(); $name = "Task: " . $task->getOwnerName() . " Runnable: " . $task->getTaskName(); if($period > 0){ @@ -160,6 +161,7 @@ abstract class Timings{ } public static function getEntityTimings(Entity $entity) : TimingsHandler{ + self::init(); $entityType = (new \ReflectionClass($entity))->getShortName(); if(!isset(self::$entityTypeTimingMap[$entityType])){ if($entity instanceof Player){ @@ -173,6 +175,7 @@ abstract class Timings{ } public static function getTileEntityTimings(Tile $tile) : TimingsHandler{ + self::init(); $tileType = (new \ReflectionClass($tile))->getShortName(); if(!isset(self::$tileEntityTypeTimingMap[$tileType])){ self::$tileEntityTypeTimingMap[$tileType] = new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "tickTileEntity - " . $tileType, self::$tickTileEntity); @@ -182,6 +185,7 @@ abstract class Timings{ } public static function getReceiveDataPacketTimings(ServerboundPacket $pk) : TimingsHandler{ + self::init(); $pid = $pk->pid(); if(!isset(self::$packetReceiveTimingMap[$pid])){ $pkName = (new \ReflectionClass($pk))->getShortName(); @@ -192,6 +196,7 @@ abstract class Timings{ } public static function getSendDataPacketTimings(ClientboundPacket $pk) : TimingsHandler{ + self::init(); $pid = $pk->pid(); if(!isset(self::$packetSendTimingMap[$pid])){ $pkName = (new \ReflectionClass($pk))->getShortName(); From 5a43db1c6d8129b4658ed8335a5c21a3e915cf55 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Jun 2022 18:47:29 +0100 Subject: [PATCH 119/692] LevelDB: remove stale TODO comment this has been addressed by folding to state 0 in the legacy blockstate mapper. --- src/world/format/io/leveldb/LevelDB.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index a97fd4e19..5be930660 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -175,7 +175,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromStringIdMeta($id, $data); if($blockStateData === null){ - //TODO: this might be a slightly-invalid state that isn't in the mapping table $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); } }else{ From f2dc9187f08a2bc12431e219eccf3823957ccb8d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 5 Jun 2022 18:49:48 +0100 Subject: [PATCH 120/692] Use covariant types for InventoryHolder and Container implementors --- src/block/inventory/DoubleChestInventory.php | 2 +- src/block/tile/Barrel.php | 10 ++-------- src/block/tile/BrewingStand.php | 10 ++-------- src/block/tile/Chest.php | 10 ++-------- src/block/tile/Container.php | 5 +---- src/block/tile/ContainerTrait.php | 5 +---- src/block/tile/Furnace.php | 10 ++-------- src/block/tile/Hopper.php | 10 ++-------- src/block/tile/ShulkerBox.php | 10 ++-------- src/entity/Human.php | 5 +---- src/inventory/InventoryHolder.php | 7 +------ 11 files changed, 17 insertions(+), 67 deletions(-) diff --git a/src/block/inventory/DoubleChestInventory.php b/src/block/inventory/DoubleChestInventory.php index b26425eab..033a06548 100644 --- a/src/block/inventory/DoubleChestInventory.php +++ b/src/block/inventory/DoubleChestInventory.php @@ -41,7 +41,7 @@ class DoubleChestInventory extends BaseInventory implements BlockInventory, Inve parent::__construct(); } - public function getInventory(){ + public function getInventory() : self{ return $this; } diff --git a/src/block/tile/Barrel.php b/src/block/tile/Barrel.php index e6978fca9..8035947ed 100644 --- a/src/block/tile/Barrel.php +++ b/src/block/tile/Barrel.php @@ -56,17 +56,11 @@ class Barrel extends Spawnable implements Container, Nameable{ } } - /** - * @return BarrelInventory - */ - public function getInventory(){ + public function getInventory() : BarrelInventory{ return $this->inventory; } - /** - * @return BarrelInventory - */ - public function getRealInventory(){ + public function getRealInventory() : BarrelInventory{ return $this->inventory; } diff --git a/src/block/tile/BrewingStand.php b/src/block/tile/BrewingStand.php index a75b4d9f1..f5248b611 100644 --- a/src/block/tile/BrewingStand.php +++ b/src/block/tile/BrewingStand.php @@ -112,17 +112,11 @@ class BrewingStand extends Spawnable implements Container, Nameable{ } } - /** - * @return BrewingStandInventory - */ - public function getInventory(){ + public function getInventory() : BrewingStandInventory{ return $this->inventory; } - /** - * @return BrewingStandInventory - */ - public function getRealInventory(){ + public function getRealInventory() : BrewingStandInventory{ return $this->inventory; } diff --git a/src/block/tile/Chest.php b/src/block/tile/Chest.php index 6f68d4e71..d264e107d 100644 --- a/src/block/tile/Chest.php +++ b/src/block/tile/Chest.php @@ -114,20 +114,14 @@ class Chest extends Spawnable implements Container, Nameable{ $this->containerTraitBlockDestroyedHook(); } - /** - * @return ChestInventory|DoubleChestInventory - */ - public function getInventory(){ + public function getInventory() : ChestInventory|DoubleChestInventory{ if($this->isPaired() && $this->doubleInventory === null){ $this->checkPairing(); } return $this->doubleInventory instanceof DoubleChestInventory ? $this->doubleInventory : $this->inventory; } - /** - * @return ChestInventory - */ - public function getRealInventory(){ + public function getRealInventory() : ChestInventory{ return $this->inventory; } diff --git a/src/block/tile/Container.php b/src/block/tile/Container.php index b549ad137..267b92a8d 100644 --- a/src/block/tile/Container.php +++ b/src/block/tile/Container.php @@ -30,10 +30,7 @@ interface Container extends InventoryHolder{ public const TAG_ITEMS = "Items"; public const TAG_LOCK = "Lock"; - /** - * @return Inventory - */ - public function getRealInventory(); + public function getRealInventory() : Inventory; /** * Returns whether this container can be opened by an item with the given custom name. diff --git a/src/block/tile/ContainerTrait.php b/src/block/tile/ContainerTrait.php index ba8ab084a..49130d053 100644 --- a/src/block/tile/ContainerTrait.php +++ b/src/block/tile/ContainerTrait.php @@ -38,10 +38,7 @@ trait ContainerTrait{ /** @var string|null */ private $lock = null; - /** - * @return Inventory - */ - abstract public function getRealInventory(); + abstract public function getRealInventory() : Inventory; protected function loadItems(CompoundTag $tag) : void{ if(($inventoryTag = $tag->getTag(Container::TAG_ITEMS)) instanceof ListTag && $inventoryTag->getTagType() === NBT::TAG_Compound){ diff --git a/src/block/tile/Furnace.php b/src/block/tile/Furnace.php index 389e367b8..7252fa45e 100644 --- a/src/block/tile/Furnace.php +++ b/src/block/tile/Furnace.php @@ -104,17 +104,11 @@ abstract class Furnace extends Spawnable implements Container, Nameable{ } } - /** - * @return FurnaceInventory - */ - public function getInventory(){ + public function getInventory() : FurnaceInventory{ return $this->inventory; } - /** - * @return FurnaceInventory - */ - public function getRealInventory(){ + public function getRealInventory() : FurnaceInventory{ return $this->getInventory(); } diff --git a/src/block/tile/Hopper.php b/src/block/tile/Hopper.php index c5fe6f167..89fb3cc4d 100644 --- a/src/block/tile/Hopper.php +++ b/src/block/tile/Hopper.php @@ -69,17 +69,11 @@ class Hopper extends Spawnable implements Container, Nameable{ return "Hopper"; } - /** - * @return HopperInventory - */ - public function getInventory(){ + public function getInventory() : HopperInventory{ return $this->inventory; } - /** - * @return HopperInventory - */ - public function getRealInventory(){ + public function getRealInventory() : HopperInventory{ return $this->inventory; } } diff --git a/src/block/tile/ShulkerBox.php b/src/block/tile/ShulkerBox.php index a649875a9..845963c60 100644 --- a/src/block/tile/ShulkerBox.php +++ b/src/block/tile/ShulkerBox.php @@ -93,17 +93,11 @@ class ShulkerBox extends Spawnable implements Container, Nameable{ $this->facing = $facing; } - /** - * @return ShulkerBoxInventory - */ - public function getInventory(){ + public function getInventory() : ShulkerBoxInventory{ return $this->inventory; } - /** - * @return ShulkerBoxInventory - */ - public function getRealInventory(){ + public function getRealInventory() : ShulkerBoxInventory{ return $this->inventory; } diff --git a/src/entity/Human.php b/src/entity/Human.php index a486c9d99..3d9cdf77f 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -189,10 +189,7 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ return min(100, 7 * $this->xpManager->getXpLevel()); } - /** - * @return PlayerInventory - */ - public function getInventory(){ + public function getInventory() : PlayerInventory{ return $this->inventory; } diff --git a/src/inventory/InventoryHolder.php b/src/inventory/InventoryHolder.php index ef8f0ee3e..f1c381f1b 100644 --- a/src/inventory/InventoryHolder.php +++ b/src/inventory/InventoryHolder.php @@ -25,10 +25,5 @@ namespace pocketmine\inventory; interface InventoryHolder{ - /** - * Get the object related inventory - * - * @return Inventory - */ - public function getInventory(); + public function getInventory() : Inventory; } From 2a24982bc4e5b4fbe3c85a4a44c67427ada4ec2c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 5 Jun 2022 20:47:54 +0100 Subject: [PATCH 121/692] ParticleCommand: standardise usage, don't use legacy block/item IDs --- src/command/defaults/ParticleCommand.php | 73 ++++++++++++++---------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index 072ca9dc8..9abe965ff 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\command\defaults; -use pocketmine\block\BlockFactory; +use pocketmine\block\BlockLegacyIds; use pocketmine\color\Color; use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; -use pocketmine\item\ItemFactory; +use pocketmine\item\StringToItemParser; use pocketmine\item\VanillaItems; use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\Vector3; @@ -70,7 +70,6 @@ use function explode; use function max; use function microtime; use function mt_rand; -use function strpos; use function strtolower; class ParticleCommand extends VanillaCommand{ @@ -114,7 +113,7 @@ class ParticleCommand extends VanillaCommand{ $count = isset($args[7]) ? max(1, (int) $args[7]) : 1; - $data = isset($args[8]) ? (int) $args[8] : null; + $data = $args[8] ?? null; $particle = $this->getParticle($name, $data); @@ -138,7 +137,7 @@ class ParticleCommand extends VanillaCommand{ return true; } - private function getParticle(string $name, ?int $data = null) : ?Particle{ + private function getParticle(string $name, ?string $data = null) : ?Particle{ switch($name){ case "explode": return new ExplodeParticle(); @@ -156,7 +155,7 @@ class ParticleCommand extends VanillaCommand{ case "crit": return new CriticalParticle(); case "smoke": - return new SmokeParticle($data ?? 0); + return new SmokeParticle((int) ($data ?? 0)); case "spell": return new EnchantParticle(new Color(0, 0, 0, 255)); //TODO: colour support case "instantspell": @@ -175,25 +174,31 @@ class ParticleCommand extends VanillaCommand{ case "lava": return new LavaParticle(); case "reddust": - return new RedstoneParticle($data ?? 1); + return new RedstoneParticle((int) ($data ?? 1)); case "snowballpoof": return new ItemBreakParticle(VanillaItems::SNOWBALL()); case "slime": return new ItemBreakParticle(VanillaItems::SLIMEBALL()); case "itembreak": - if($data !== null && $data !== 0){ - return new ItemBreakParticle(ItemFactory::getInstance()->get($data)); + if($data !== null){ + $item = StringToItemParser::getInstance()->parse($data); + if($item !== null && !$item->isNull()){ + return new ItemBreakParticle($item); + } } break; case "terrain": - if($data !== null && $data !== 0){ - return new TerrainParticle(BlockFactory::getInstance()->get($data, 0)); + if($data !== null){ + $block = StringToItemParser::getInstance()->parse($data)?->getBlock(); + if($block !== null && $block->getId() !== BlockLegacyIds::AIR){ + return new TerrainParticle($block); + } } break; case "heart": - return new HeartParticle($data ?? 0); + return new HeartParticle((int) ($data ?? 0)); case "ink": - return new InkParticle($data ?? 0); + return new InkParticle((int) ($data ?? 0)); case "droplet": return new RainSplashParticle(); case "enchantmenttable": @@ -203,26 +208,32 @@ class ParticleCommand extends VanillaCommand{ case "angryvillager": return new AngryVillagerParticle(); case "forcefield": - return new BlockForceFieldParticle($data ?? 0); + return new BlockForceFieldParticle((int) ($data ?? 0)); case "mobflame": return new EntityFlameParticle(); - } - - if(strpos($name, "iconcrack_") === 0){ - $d = explode("_", $name); - if(count($d) === 3){ - return new ItemBreakParticle(ItemFactory::getInstance()->get((int) $d[1], (int) $d[2])); - } - }elseif(strpos($name, "blockcrack_") === 0){ - $d = explode("_", $name); - if(count($d) === 2){ - return new TerrainParticle(BlockFactory::getInstance()->get(((int) $d[1]) & 0xff, ((int) $d[1]) >> 12)); - } - }elseif(strpos($name, "blockdust_") === 0){ - $d = explode("_", $name); - if(count($d) >= 4){ - return new DustParticle(new Color(((int) $d[1]) & 0xff, ((int) $d[2]) & 0xff, ((int) $d[3]) & 0xff, isset($d[4]) ? ((int) $d[4]) & 0xff : 255)); - } + case "iconcrack": + if($data !== null && ($item = StringToItemParser::getInstance()->parse($data)) !== null && !$item->isNull()){ + return new ItemBreakParticle($item); + } + break; + case "blockcrack": + if($data !== null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !== null && $block->getId() !== BlockLegacyIds::AIR){ + return new TerrainParticle($block); + } + break; + case "blockdust": + if($data !== null){ + $d = explode("_", $data); + if(count($d) >= 3){ + return new DustParticle(new Color( + ((int) $d[0]) & 0xff, + ((int) $d[1]) & 0xff, + ((int) $d[2]) & 0xff, + ((int) ($d[3] ?? 255)) & 0xff + )); + } + } + break; } return null; From d2613039ed1226779282c6c12dfae19521014958 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 5 Jun 2022 21:17:10 +0100 Subject: [PATCH 122/692] Replace BlockLegacyIds usages with BlockTypeIds where possible --- src/block/BaseBanner.php | 2 +- src/block/BaseSign.php | 2 +- src/block/Cactus.php | 6 +++--- src/block/Cake.php | 4 ++-- src/block/Carpet.php | 4 ++-- src/block/Crops.php | 4 ++-- src/block/DoublePlant.php | 4 ++-- src/block/Fire.php | 2 +- src/block/Flower.php | 2 +- src/block/Grass.php | 2 +- src/block/Leaves.php | 2 +- src/block/Liquid.php | 2 +- src/block/NetherWartPlant.php | 4 ++-- src/block/Sapling.php | 2 +- src/block/Stem.php | 2 +- src/block/Sugarcane.php | 4 ++-- src/block/SweetBerryBush.php | 4 ++-- src/block/TallGrass.php | 4 ++-- src/block/Wall.php | 2 +- src/block/utils/FallableTrait.php | 4 ++-- src/command/defaults/ParticleCommand.php | 6 +++--- src/entity/Living.php | 8 ++++---- src/entity/projectile/SplashPotion.php | 6 +++--- src/event/player/PlayerDeathEvent.php | 4 ++-- src/item/FlintSteel.php | 4 ++-- src/player/Player.php | 4 ++-- src/world/World.php | 8 ++++---- src/world/generator/object/TallGrass.php | 4 ++-- src/world/generator/populator/GroundCover.php | 4 ++-- src/world/generator/populator/TallGrass.php | 11 ++++++----- src/world/generator/populator/Tree.php | 8 ++++---- 31 files changed, 65 insertions(+), 64 deletions(-) diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index 708254afd..f318c16df 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -124,7 +124,7 @@ abstract class BaseBanner extends Transparent{ abstract protected function getSupportingFace() : int; public function onNearbyBlockChange() : void{ - if($this->getSide($this->getSupportingFace())->getId() === BlockLegacyIds::AIR){ + if($this->getSide($this->getSupportingFace())->getTypeId() === BlockTypeIds::AIR){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index e201a2d72..7fcdc0e9a 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -85,7 +85,7 @@ abstract class BaseSign extends Transparent{ abstract protected function getSupportingFace() : int; public function onNearbyBlockChange() : void{ - if($this->getSide($this->getSupportingFace())->getId() === BlockLegacyIds::AIR){ + if($this->getSide($this->getSupportingFace())->getTypeId() === BlockTypeIds::AIR){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 5ed929db6..5e7cc7cbf 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -88,7 +88,7 @@ class Cactus extends Transparent{ public function onNearbyBlockChange() : void{ $down = $this->getSide(Facing::DOWN); - if($down->getId() !== BlockLegacyIds::SAND && !$down->isSameType($this)){ + if($down->getTypeId() !== BlockTypeIds::SAND && $down->getTypeId() !== BlockTypeIds::RED_SAND && !$down->isSameType($this)){ $this->position->getWorld()->useBreakOn($this->position); }else{ foreach(Facing::HORIZONTAL as $side){ @@ -113,7 +113,7 @@ class Cactus extends Transparent{ break; } $b = $this->position->getWorld()->getBlockAt($this->position->x, $this->position->y + $y, $this->position->z); - if($b->getId() === BlockLegacyIds::AIR){ + if($b->getTypeId() === BlockTypeIds::AIR){ $ev = new BlockGrowEvent($b, VanillaBlocks::CACTUS()); $ev->call(); if($ev->isCancelled()){ @@ -135,7 +135,7 @@ class Cactus extends Transparent{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() === BlockLegacyIds::SAND || $down->isSameType($this)){ + if($down->getTypeId() === BlockTypeIds::SAND || $down->getTypeId() === BlockTypeIds::RED_SAND || $down->isSameType($this)){ foreach(Facing::HORIZONTAL as $side){ if($this->getSide($side)->isSolid()){ return false; diff --git a/src/block/Cake.php b/src/block/Cake.php index ebde23012..fe341cf40 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -81,7 +81,7 @@ class Cake extends Transparent implements FoodSource{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() !== BlockLegacyIds::AIR){ + if($down->getTypeId() !== BlockTypeIds::AIR){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -89,7 +89,7 @@ class Cake extends Transparent implements FoodSource{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->getId() === BlockLegacyIds::AIR){ //Replace with common break method + if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::AIR){ //Replace with common break method $this->position->getWorld()->setBlock($this->position, VanillaBlocks::AIR()); } } diff --git a/src/block/Carpet.php b/src/block/Carpet.php index 54a1b4abe..a4e1855c0 100644 --- a/src/block/Carpet.php +++ b/src/block/Carpet.php @@ -53,7 +53,7 @@ class Carpet extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() !== BlockLegacyIds::AIR){ + if($down->getTypeId() !== BlockTypeIds::AIR){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -61,7 +61,7 @@ class Carpet extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->getId() === BlockLegacyIds::AIR){ + if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::AIR){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/Crops.php b/src/block/Crops.php index 1979ce31f..425711ce8 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -62,7 +62,7 @@ abstract class Crops extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($blockReplace->getSide(Facing::DOWN)->getId() === BlockLegacyIds::FARMLAND){ + if($blockReplace->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::FARMLAND){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -91,7 +91,7 @@ abstract class Crops extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->getId() !== BlockLegacyIds::FARMLAND){ + if($this->getSide(Facing::DOWN)->getTypeId() !== BlockTypeIds::FARMLAND){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 155a8e59d..9b5160fa0 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -54,8 +54,8 @@ class DoublePlant extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $id = $blockReplace->getSide(Facing::DOWN)->getId(); - if(($id === BlockLegacyIds::GRASS || $id === BlockLegacyIds::DIRT) && $blockReplace->getSide(Facing::UP)->canBeReplaced()){ + $id = $blockReplace->getSide(Facing::DOWN)->getTypeId(); + if(($id === BlockTypeIds::GRASS || $id === BlockTypeIds::DIRT) && $blockReplace->getSide(Facing::UP)->canBeReplaced()){ $top = clone $this; $top->top = true; $tx->addBlock($blockReplace->position, $this)->addBlock($blockReplace->position->getSide(Facing::UP), $top); diff --git a/src/block/Fire.php b/src/block/Fire.php index b31151c37..114379d8a 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -224,7 +224,7 @@ class Fire extends Flowable{ continue; } $block = $world->getBlockAt($targetX, $targetY, $targetZ); - if($block->getId() !== BlockLegacyIds::AIR){ + if($block->getTypeId() !== BlockTypeIds::AIR){ continue; } diff --git a/src/block/Flower.php b/src/block/Flower.php index ff2d0344b..e2a318863 100644 --- a/src/block/Flower.php +++ b/src/block/Flower.php @@ -33,7 +33,7 @@ class Flower extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() === BlockLegacyIds::GRASS || $down->getId() === BlockLegacyIds::DIRT || $down->getId() === BlockLegacyIds::FARMLAND){ + if($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::FARMLAND){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/Grass.php b/src/block/Grass.php index 82d42c55f..478a0755e 100644 --- a/src/block/Grass.php +++ b/src/block/Grass.php @@ -103,7 +103,7 @@ class Grass extends Opaque{ $this->position->getWorld()->setBlock($this->position, $newBlock); return true; - }elseif($item instanceof Shovel && $this->getSide(Facing::UP)->getId() === BlockLegacyIds::AIR){ + }elseif($item instanceof Shovel && $this->getSide(Facing::UP)->getTypeId() === BlockTypeIds::AIR){ $item->applyDamage(1); $newBlock = VanillaBlocks::GRASS_PATH(); $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new ItemUseOnBlockSound($newBlock)); diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 8d00611c7..b8468d0d8 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -97,7 +97,7 @@ class Leaves extends Transparent{ return true; } - if($block->getId() === $this->getId() && $distance <= 4){ + if($block instanceof Leaves && $distance <= 4){ foreach(Facing::ALL as $side){ if($this->findLog($pos->getSide($side), $visited, $distance + 1)){ return true; diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 8aed66253..eb553ff2a 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -348,7 +348,7 @@ abstract class Liquid extends Transparent{ $ev = new BlockSpreadEvent($block, $this, $new); $ev->call(); if(!$ev->isCancelled()){ - if($block->getId() !== BlockLegacyIds::AIR){ + if($block->getTypeId() !== BlockTypeIds::AIR){ $this->position->getWorld()->useBreakOn($block->position); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 0a809c950..f7d2f992d 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -62,7 +62,7 @@ class NetherWartPlant extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() === BlockLegacyIds::SOUL_SAND){ + if($down->getTypeId() === BlockTypeIds::SOUL_SAND){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -70,7 +70,7 @@ class NetherWartPlant extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->getId() !== BlockLegacyIds::SOUL_SAND){ + if($this->getSide(Facing::DOWN)->getTypeId() !== BlockTypeIds::SOUL_SAND){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 9709032c5..83dc41d19 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -68,7 +68,7 @@ class Sapling extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getId() === BlockLegacyIds::GRASS || $down->getId() === BlockLegacyIds::DIRT || $down->getId() === BlockLegacyIds::FARMLAND){ + if($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::FARMLAND){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/Stem.php b/src/block/Stem.php index c7fd444af..6ffb39604 100644 --- a/src/block/Stem.php +++ b/src/block/Stem.php @@ -53,7 +53,7 @@ abstract class Stem extends Crops{ $side = $this->getSide(Facing::HORIZONTAL[array_rand(Facing::HORIZONTAL)]); $d = $side->getSide(Facing::DOWN); - if($side->getId() === BlockLegacyIds::AIR && ($d->getId() === BlockLegacyIds::FARMLAND || $d->getId() === BlockLegacyIds::GRASS || $d->getId() === BlockLegacyIds::DIRT)){ + if($side->getTypeId() === BlockTypeIds::AIR && ($d->getTypeId() === BlockTypeIds::FARMLAND || $d->getTypeId() === BlockTypeIds::GRASS || $d->getTypeId() === BlockTypeIds::DIRT)){ $ev = new BlockGrowEvent($side, $grow); $ev->call(); if(!$ev->isCancelled()){ diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index b90efa77e..f6d42d61c 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -56,7 +56,7 @@ class Sugarcane extends Flowable{ break; } $b = $this->position->getWorld()->getBlockAt($this->position->x, $this->position->y + $y, $this->position->z); - if($b->getId() === BlockLegacyIds::AIR){ + if($b->getTypeId() === BlockTypeIds::AIR){ $ev = new BlockGrowEvent($b, VanillaBlocks::SUGARCANE()); $ev->call(); if($ev->isCancelled()){ @@ -122,7 +122,7 @@ class Sugarcane extends Flowable{ $down = $this->getSide(Facing::DOWN); if($down->isSameType($this)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); - }elseif($down->getId() === BlockLegacyIds::GRASS || $down->getId() === BlockLegacyIds::DIRT || $down->getId() === BlockLegacyIds::SAND || $down->getId() === BlockLegacyIds::PODZOL){ + }elseif($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::SAND || $down->getTypeId() === BlockTypeIds::RED_SAND || $down->getTypeId() === BlockTypeIds::PODZOL){ foreach(Facing::HORIZONTAL as $side){ if($down->getSide($side) instanceof Water){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 2de41cd11..22f510e7f 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -78,8 +78,8 @@ class SweetBerryBush extends Flowable{ } protected function canBeSupportedBy(Block $block) : bool{ - $id = $block->getId(); - return $id === BlockLegacyIds::GRASS || $id === BlockLegacyIds::DIRT || $id === BlockLegacyIds::PODZOL; + $id = $block->getTypeId(); + return $id === BlockTypeIds::GRASS || $id === BlockTypeIds::DIRT || $id === BlockTypeIds::PODZOL; } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/TallGrass.php b/src/block/TallGrass.php index b77a828fe..2fed7ca7f 100644 --- a/src/block/TallGrass.php +++ b/src/block/TallGrass.php @@ -38,8 +38,8 @@ class TallGrass extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $down = $this->getSide(Facing::DOWN)->getId(); - if($down === BlockLegacyIds::GRASS || $down === BlockLegacyIds::DIRT){ + $down = $this->getSide(Facing::DOWN)->getTypeId(); + if($down === BlockTypeIds::GRASS || $down === BlockTypeIds::DIRT){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 17af1f137..90ff17d84 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -55,7 +55,7 @@ class Wall extends Transparent{ } } - $up = $this->getSide(Facing::UP)->getId() !== BlockLegacyIds::AIR; + $up = $this->getSide(Facing::UP)->getTypeId() !== BlockTypeIds::AIR; if($up !== $this->up){ $this->up = $up; $changed++; diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index 6afcc52bf..0aa1971d2 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\Fire; use pocketmine\block\Liquid; use pocketmine\block\VanillaBlocks; @@ -50,7 +50,7 @@ trait FallableTrait{ public function onNearbyBlockChange() : void{ $pos = $this->getPosition(); $down = $pos->getWorld()->getBlock($pos->getSide(Facing::DOWN)); - if($down->getId() === BlockLegacyIds::AIR || $down instanceof Liquid || $down instanceof Fire){ + if($down->getTypeId() === BlockTypeIds::AIR || $down instanceof Liquid || $down instanceof Fire){ $pos->getWorld()->setBlock($pos, VanillaBlocks::AIR()); $block = $this; diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index 9abe965ff..a898e1939 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\command\defaults; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\color\Color; use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; @@ -190,7 +190,7 @@ class ParticleCommand extends VanillaCommand{ case "terrain": if($data !== null){ $block = StringToItemParser::getInstance()->parse($data)?->getBlock(); - if($block !== null && $block->getId() !== BlockLegacyIds::AIR){ + if($block !== null && $block->getTypeId() !== BlockTypeIds::AIR){ return new TerrainParticle($block); } } @@ -217,7 +217,7 @@ class ParticleCommand extends VanillaCommand{ } break; case "blockcrack": - if($data !== null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !== null && $block->getId() !== BlockLegacyIds::AIR){ + if($data !== null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !== null && $block->getTypeId() !== BlockTypeIds::AIR){ return new TerrainParticle($block); } break; diff --git a/src/entity/Living.php b/src/entity/Living.php index 52dc02dbc..c8010ab0f 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\entity; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\EffectIdMap; use pocketmine\entity\animation\DeathAnimation; use pocketmine\entity\animation\HurtAnimation; @@ -346,7 +346,7 @@ abstract class Living extends Entity{ new EntityLongFallSound($this) : new EntityShortFallSound($this) ); - }elseif($fallBlock->getId() !== BlockLegacyIds::AIR){ + }elseif($fallBlock->getTypeId() !== BlockTypeIds::AIR){ $this->broadcastSound(new EntityLandSound($this, $fallBlock)); } return $newVerticalVelocity; @@ -756,10 +756,10 @@ abstract class Living extends Entity{ --$nextIndex; } - $id = $block->getId(); + $id = $block->getTypeId(); if($transparent === null){ - if($id !== BlockLegacyIds::AIR){ + if($id !== BlockTypeIds::AIR){ break; } }else{ diff --git a/src/entity/projectile/SplashPotion.php b/src/entity/projectile/SplashPotion.php index 555a8d755..952f0d1f6 100644 --- a/src/entity/projectile/SplashPotion.php +++ b/src/entity/projectile/SplashPotion.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\entity\projectile; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\VanillaBlocks; use pocketmine\color\Color; use pocketmine\data\bedrock\PotionTypeIdMap; @@ -130,11 +130,11 @@ class SplashPotion extends Throwable{ }elseif($event instanceof ProjectileHitBlockEvent && $this->getPotionType()->equals(PotionType::WATER())){ $blockIn = $event->getBlockHit()->getSide($event->getRayTraceResult()->getHitFace()); - if($blockIn->getId() === BlockLegacyIds::FIRE){ + if($blockIn->getTypeId() === BlockTypeIds::FIRE){ $this->getWorld()->setBlock($blockIn->getPosition(), VanillaBlocks::AIR()); } foreach($blockIn->getHorizontalSides() as $horizontalSide){ - if($horizontalSide->getId() === BlockLegacyIds::FIRE){ + if($horizontalSide->getTypeId() === BlockTypeIds::FIRE){ $this->getWorld()->setBlock($horizontalSide->getPosition(), VanillaBlocks::AIR()); } } diff --git a/src/event/player/PlayerDeathEvent.php b/src/event/player/PlayerDeathEvent.php index 01358dd87..487be1f30 100644 --- a/src/event/player/PlayerDeathEvent.php +++ b/src/event/player/PlayerDeathEvent.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\event\player; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\entity\Living; use pocketmine\event\entity\EntityDamageByBlockEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; @@ -138,7 +138,7 @@ class PlayerDeathEvent extends EntityDeathEvent{ case EntityDamageEvent::CAUSE_CONTACT: if($deathCause instanceof EntityDamageByBlockEvent){ - if($deathCause->getDamager()->getId() === BlockLegacyIds::CACTUS){ + if($deathCause->getDamager()->getTypeId() === BlockTypeIds::CACTUS){ return KnownTranslationFactory::death_attack_cactus($name); } } diff --git a/src/item/FlintSteel.php b/src/item/FlintSteel.php index ee387f4e6..e55e48e95 100644 --- a/src/item/FlintSteel.php +++ b/src/item/FlintSteel.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\VanillaBlocks; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -33,7 +33,7 @@ use pocketmine\world\sound\FlintSteelSound; class FlintSteel extends Tool{ public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ - if($blockReplace->getId() === BlockLegacyIds::AIR){ + if($blockReplace->getTypeId() === BlockTypeIds::AIR){ $world = $player->getWorld(); $world->setBlock($blockReplace->getPosition(), VanillaBlocks::FIRE()); $world->addSound($blockReplace->getPosition()->add(0.5, 0.5, 0.5), new FlintSteelSound()); diff --git a/src/player/Player.php b/src/player/Player.php index a120231e1..da3467592 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\player; use pocketmine\block\Bed; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\UnknownBlock; use pocketmine\block\VanillaBlocks; use pocketmine\command\CommandSender; @@ -1613,7 +1613,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ } $block = $target->getSide($face); - if($block->getId() === BlockLegacyIds::FIRE){ + if($block->getTypeId() === BlockTypeIds::FIRE){ $this->getWorld()->setBlock($block->getPosition(), VanillaBlocks::AIR()); $this->getWorld()->addSound($block->getPosition()->add(0.5, 0.5, 0.5), new FireExtinguishSound()); return true; diff --git a/src/world/World.php b/src/world/World.php index 004a4fd38..4efe550f3 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -29,7 +29,7 @@ namespace pocketmine\world; use pocketmine\block\Air; use pocketmine\block\Block; use pocketmine\block\BlockFactory; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; use pocketmine\block\tile\TileFactory; @@ -444,7 +444,7 @@ class World implements ChunkManager{ continue; } - if($block->getId() !== BlockLegacyIds::AIR){ + if($block->getTypeId() !== BlockTypeIds::AIR){ $dontTickBlocks[$block->getTypeId()] = $name; } } @@ -1776,7 +1776,7 @@ class World implements ChunkManager{ return false; } - if($blockClicked->getId() === BlockLegacyIds::AIR){ + if($blockClicked->getTypeId() === BlockTypeIds::AIR){ return false; } @@ -2651,7 +2651,7 @@ class World implements ChunkManager{ $x = (int) $v->x; $z = (int) $v->z; $y = (int) min($max - 2, $v->y); - $wasAir = $this->getBlockAt($x, $y - 1, $z)->getId() === BlockLegacyIds::AIR; //TODO: bad hack, clean up + $wasAir = $this->getBlockAt($x, $y - 1, $z)->getTypeId() === BlockTypeIds::AIR; //TODO: bad hack, clean up for(; $y > $this->minY; --$y){ if($this->getBlockAt($x, $y, $z)->isFullCube()){ if($wasAir){ diff --git a/src/world/generator/object/TallGrass.php b/src/world/generator/object/TallGrass.php index 8fe70e0c8..0790f0bd8 100644 --- a/src/world/generator/object/TallGrass.php +++ b/src/world/generator/object/TallGrass.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\generator\object; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\VanillaBlocks; use pocketmine\math\Vector3; use pocketmine\utils\Random; @@ -47,7 +47,7 @@ class TallGrass{ for($c = 0; $c < $count; ++$c){ $x = $random->nextRange($pos->x - $radius, $pos->x + $radius); $z = $random->nextRange($pos->z - $radius, $pos->z + $radius); - if($world->getBlockAt($x, $pos->y + 1, $z)->getId() === BlockLegacyIds::AIR && $world->getBlockAt($x, $pos->y, $z)->getId() === BlockLegacyIds::GRASS){ + if($world->getBlockAt($x, $pos->y + 1, $z)->getTypeId() === BlockTypeIds::AIR && $world->getBlockAt($x, $pos->y, $z)->getTypeId() === BlockTypeIds::GRASS){ $world->setBlockAt($x, $pos->y + 1, $z, $arr[$random->nextRange(0, $arrC)]); } } diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 7a72e021c..d2e553bc0 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\generator\populator; use pocketmine\block\BlockFactory; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\Liquid; use pocketmine\utils\Random; use pocketmine\world\biome\BiomeRegistry; @@ -60,7 +60,7 @@ class GroundCover implements Populator{ for($y = $startY; $y > $endY && $y >= 0; --$y){ $b = $cover[$startY - $y]; $id = $factory->fromFullBlock($chunk->getFullBlock($x, $y, $z)); - if($id->getId() === BlockLegacyIds::AIR && $b->isSolid()){ + if($id->getTypeId() === BlockTypeIds::AIR && $b->isSolid()){ break; } if($b->canBeFlowedInto() && $id instanceof Liquid){ diff --git a/src/world/generator/populator/TallGrass.php b/src/world/generator/populator/TallGrass.php index de8d0b675..a441f3e5c 100644 --- a/src/world/generator/populator/TallGrass.php +++ b/src/world/generator/populator/TallGrass.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\world\generator\populator; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; +use pocketmine\block\Leaves; use pocketmine\block\VanillaBlocks; use pocketmine\utils\Random; use pocketmine\world\ChunkManager; @@ -57,14 +58,14 @@ class TallGrass implements Populator{ } private function canTallGrassStay(ChunkManager $world, int $x, int $y, int $z) : bool{ - $b = $world->getBlockAt($x, $y, $z)->getId(); - return ($b === BlockLegacyIds::AIR || $b === BlockLegacyIds::SNOW_LAYER) && $world->getBlockAt($x, $y - 1, $z)->getId() === BlockLegacyIds::GRASS; + $b = $world->getBlockAt($x, $y, $z)->getTypeId(); + return ($b === BlockTypeIds::AIR || $b === BlockTypeIds::SNOW_LAYER) && $world->getBlockAt($x, $y - 1, $z)->getTypeId() === BlockTypeIds::GRASS; } private function getHighestWorkableBlock(ChunkManager $world, int $x, int $z) : int{ for($y = 127; $y >= 0; --$y){ - $b = $world->getBlockAt($x, $y, $z)->getId(); - if($b !== BlockLegacyIds::AIR && $b !== BlockLegacyIds::LEAVES && $b !== BlockLegacyIds::LEAVES2 && $b !== BlockLegacyIds::SNOW_LAYER){ + $b = $world->getBlockAt($x, $y, $z); + if($b->getTypeId() !== BlockTypeIds::AIR && !($b instanceof Leaves) && $b->getTypeId() !== BlockTypeIds::SNOW_LAYER){ return $y + 1; } } diff --git a/src/world/generator/populator/Tree.php b/src/world/generator/populator/Tree.php index b0a2214b8..99b1171f0 100644 --- a/src/world/generator/populator/Tree.php +++ b/src/world/generator/populator/Tree.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\generator\populator; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\utils\TreeType; use pocketmine\utils\Random; use pocketmine\world\ChunkManager; @@ -67,10 +67,10 @@ class Tree implements Populator{ private function getHighestWorkableBlock(ChunkManager $world, int $x, int $z) : int{ for($y = 127; $y >= 0; --$y){ - $b = $world->getBlockAt($x, $y, $z)->getId(); - if($b === BlockLegacyIds::DIRT || $b === BlockLegacyIds::GRASS){ + $b = $world->getBlockAt($x, $y, $z)->getTypeId(); + if($b === BlockTypeIds::DIRT || $b === BlockTypeIds::GRASS){ return $y + 1; - }elseif($b !== BlockLegacyIds::AIR && $b !== BlockLegacyIds::SNOW_LAYER){ + }elseif($b !== BlockTypeIds::AIR && $b !== BlockTypeIds::SNOW_LAYER){ return -1; } } From 02568bb04947f0eee8a4ef43975e694371e5124a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 5 Jun 2022 21:19:38 +0100 Subject: [PATCH 123/692] Remove ItemFactory usage from Bucket --- src/item/Bucket.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/item/Bucket.php b/src/item/Bucket.php index 3d6c818a1..749dd8a0b 100644 --- a/src/item/Bucket.php +++ b/src/item/Bucket.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; +use pocketmine\block\BlockTypeIds; use pocketmine\block\Liquid; use pocketmine\block\VanillaBlocks; use pocketmine\event\player\PlayerBucketFillEvent; @@ -42,7 +43,15 @@ class Bucket extends Item{ $stack = clone $this; $stack->pop(); - $resultItem = ItemFactory::getInstance()->get(ItemIds::BUCKET, $blockClicked->getFlowingForm()->getId()); + $resultItem = match($blockClicked->getTypeId()){ + BlockTypeIds::LAVA => VanillaItems::LAVA_BUCKET(), + BlockTypeIds::WATER => VanillaItems::WATER_BUCKET(), + default => null + }; + if($resultItem === null){ + return ItemUseResult::FAIL(); + } + $ev = new PlayerBucketFillEvent($player, $blockReplace, $face, $this, $resultItem); $ev->call(); if(!$ev->isCancelled()){ From 5c85aa6e58ecb3f5a56adf7dcb350e81818d1564 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 5 Jun 2022 21:49:51 +0100 Subject: [PATCH 124/692] Eliminate remaining usages of legacy block ID+meta on disk flower pots loaded from vanilla worlds should now correctly display the plant inside --- src/block/tile/FlowerPot.php | 30 +++++++--- src/entity/object/FallingBlock.php | 41 +++++++++---- src/entity/projectile/Projectile.php | 59 ++++++++----------- .../format/io/GlobalBlockStateHandlers.php | 21 +++++++ src/world/format/io/leveldb/LevelDB.php | 16 +---- 5 files changed, 98 insertions(+), 69 deletions(-) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 294e4fe41..3534bedf5 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -26,9 +26,12 @@ namespace pocketmine\block\tile; use pocketmine\block\Air; use pocketmine\block\Block; use pocketmine\block\BlockFactory; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\SavedDataLoadingException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ShortTag; +use pocketmine\world\format\io\GlobalBlockStateHandlers; /** * @deprecated @@ -37,25 +40,35 @@ use pocketmine\nbt\tag\ShortTag; class FlowerPot extends Spawnable{ private const TAG_ITEM = "item"; private const TAG_ITEM_DATA = "mData"; + private const TAG_PLANT_BLOCK = "PlantBlock"; private ?Block $plant = null; public function readSaveData(CompoundTag $nbt) : void{ + $blockStateData = null; if(($itemIdTag = $nbt->getTag(self::TAG_ITEM)) instanceof ShortTag && ($itemMetaTag = $nbt->getTag(self::TAG_ITEM_DATA)) instanceof IntTag){ + $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromIntIdMeta($itemIdTag->getValue(), $itemMetaTag->getValue()); + }elseif(($plantBlockTag = $nbt->getCompoundTag(self::TAG_PLANT_BLOCK)) !== null){ try{ - $this->setPlant(BlockFactory::getInstance()->get($itemIdTag->getValue(), $itemMetaTag->getValue())); - }catch(\InvalidArgumentException $e){ - //noop + $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($plantBlockTag); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Error loading " . self::TAG_PLANT_BLOCK . " tag for flower pot: " . $e->getMessage(), 0, $e); } - }else{ - //TODO: new PlantBlock tag + } + + if($blockStateData !== null){ + try{ + $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Error deserializing plant for flower pot: " . $e->getMessage(), 0, $e); + } + $this->setPlant(BlockFactory::getInstance()->fromFullBlock($blockStateId)); } } protected function writeSaveData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setShort(self::TAG_ITEM, $this->plant->getId()); - $nbt->setInt(self::TAG_ITEM_DATA, $this->plant->getMeta()); + $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getFullId())->toNbt()); } } @@ -73,8 +86,7 @@ class FlowerPot extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setShort(self::TAG_ITEM, $this->plant->getId()); - $nbt->setInt(self::TAG_ITEM_DATA, $this->plant->getMeta()); + $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getFullId())->toNbt()); } } } diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 1a61a2fba..02c0249f8 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -26,6 +26,7 @@ namespace pocketmine\entity\object; use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\utils\Fallable; +use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\EntitySizeInfo; @@ -40,9 +41,11 @@ use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; +use pocketmine\world\format\io\GlobalBlockStateHandlers; use function abs; class FallingBlock extends Entity{ + private const TAG_FALLING_BLOCK = "FallingBlock"; //TAG_Compound public static function getNetworkTypeId() : string{ return EntityIds::FALLING_BLOCK; } @@ -60,22 +63,37 @@ class FallingBlock extends Entity{ protected function getInitialGravity() : float{ return 0.04; } public static function parseBlockNBT(BlockFactory $factory, CompoundTag $nbt) : Block{ - $blockId = 0; //TODO: 1.8+ save format - if(($tileIdTag = $nbt->getTag("TileID")) instanceof IntTag){ - $blockId = $tileIdTag->getValue(); - }elseif(($tileTag = $nbt->getTag("Tile")) instanceof ByteTag){ - $blockId = $tileTag->getValue(); + if(($fallingBlockTag = $nbt->getCompoundTag(self::TAG_FALLING_BLOCK)) !== null){ + try{ + $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($fallingBlockTag); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + }else{ + if(($tileIdTag = $nbt->getTag("TileID")) instanceof IntTag){ + $blockId = $tileIdTag->getValue(); + }elseif(($tileTag = $nbt->getTag("Tile")) instanceof ByteTag){ + $blockId = $tileTag->getValue(); + }else{ + throw new SavedDataLoadingException("Missing legacy falling block info"); + } + $damage = $nbt->getByte("Data", 0); + + $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromIntIdMeta($blockId, $damage); + if($blockStateData === null){ + throw new SavedDataLoadingException("Invalid legacy falling block"); + } } - if($blockId === 0){ - throw new SavedDataLoadingException("Missing block info from NBT"); + try{ + $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); } - $damage = $nbt->getByte("Data", 0); - - return $factory->get($blockId, $damage); + return $factory->fromFullBlock($blockStateId); } public function canCollideWith(Entity $entity) : bool{ @@ -137,8 +155,7 @@ class FallingBlock extends Entity{ public function saveNBT() : CompoundTag{ $nbt = parent::saveNBT(); - $nbt->setInt("TileID", $this->block->getId()); - $nbt->setByte("Data", $this->block->getMeta()); + $nbt->setTag(self::TAG_FALLING_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->block->getFullId())->toNbt()); return $nbt; } diff --git a/src/entity/projectile/Projectile.php b/src/entity/projectile/Projectile.php index 40e7cb45d..dd0b50c75 100644 --- a/src/entity/projectile/Projectile.php +++ b/src/entity/projectile/Projectile.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\entity\projectile; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\entity\Location; @@ -38,21 +38,24 @@ use pocketmine\event\entity\ProjectileHitEvent; use pocketmine\math\RayTraceResult; use pocketmine\math\Vector3; use pocketmine\math\VoxelRayTrace; -use pocketmine\nbt\tag\ByteTag; +use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; +use pocketmine\nbt\tag\ListTag; use pocketmine\timings\Timings; use function assert; use function atan2; use function ceil; +use function count; use function sqrt; use const M_PI; use const PHP_INT_MAX; abstract class Projectile extends Entity{ + private const TAG_STUCK_ON_BLOCK_POS = "StuckToBlockPos"; protected float $damage = 0.0; - protected ?Block $blockHit = null; + protected ?Vector3 $blockHit = null; public function __construct(Location $location, ?Entity $shootingEntity, ?CompoundTag $nbt = null){ parent::__construct($location, $nbt); @@ -74,28 +77,18 @@ abstract class Projectile extends Entity{ $this->setHealth(1); $this->damage = $nbt->getDouble("damage", $this->damage); - (function() use ($nbt) : void{ - if(($tileXTag = $nbt->getTag("tileX")) instanceof IntTag && ($tileYTag = $nbt->getTag("tileY")) instanceof IntTag && ($tileZTag = $nbt->getTag("tileZ")) instanceof IntTag){ - $blockPos = new Vector3($tileXTag->getValue(), $tileYTag->getValue(), $tileZTag->getValue()); - }else{ - return; + if(($stuckOnBlockPosTag = $nbt->getListTag(self::TAG_STUCK_ON_BLOCK_POS)) !== null){ + if($stuckOnBlockPosTag->getTagType() !== NBT::TAG_Int || count($stuckOnBlockPosTag) !== 3){ + throw new SavedDataLoadingException(self::TAG_STUCK_ON_BLOCK_POS . " tag should be a list of 3 TAG_Int"); } - if(($blockIdTag = $nbt->getTag("blockId")) instanceof IntTag){ - $blockId = $blockIdTag->getValue(); - }else{ - return; - } + /** @var IntTag[] $values */ + $values = $stuckOnBlockPosTag->getValue(); - if(($blockDataTag = $nbt->getTag("blockData")) instanceof ByteTag){ - $blockData = $blockDataTag->getValue(); - }else{ - return; - } - - $this->blockHit = BlockFactory::getInstance()->get($blockId, $blockData); - $this->blockHit->position($this->getWorld(), $blockPos->getFloorX(), $blockPos->getFloorY(), $blockPos->getFloorZ()); - })(); + $this->blockHit = new Vector3($values[0]->getValue(), $values[1]->getValue(), $values[2]->getValue()); + }elseif(($tileXTag = $nbt->getTag("tileX")) instanceof IntTag && ($tileYTag = $nbt->getTag("tileY")) instanceof IntTag && ($tileZTag = $nbt->getTag("tileZ")) instanceof IntTag){ + $this->blockHit = new Vector3($tileXTag->getValue(), $tileYTag->getValue(), $tileZTag->getValue()); + } } public function canCollideWith(Entity $entity) : bool{ @@ -134,14 +127,11 @@ abstract class Projectile extends Entity{ $nbt->setDouble("damage", $this->damage); if($this->blockHit !== null){ - $pos = $this->blockHit->getPosition(); - $nbt->setInt("tileX", $pos->x); - $nbt->setInt("tileY", $pos->y); - $nbt->setInt("tileZ", $pos->z); - - //we intentionally use different ones to PC because we don't have stringy IDs - $nbt->setInt("blockId", $this->blockHit->getId()); - $nbt->setByte("blockData", $this->blockHit->getMeta()); + $nbt->setTag(self::TAG_STUCK_ON_BLOCK_POS, new ListTag([ + new IntTag($this->blockHit->getFloorX()), + new IntTag($this->blockHit->getFloorY()), + new IntTag($this->blockHit->getFloorZ()) + ])); } return $nbt; @@ -152,8 +142,11 @@ abstract class Projectile extends Entity{ } public function onNearbyBlockChange() : void{ - if($this->blockHit !== null && $this->getWorld()->isInLoadedTerrain($this->blockHit->getPosition()) && !$this->blockHit->isSameState($this->getWorld()->getBlock($this->blockHit->getPosition()))){ - $this->blockHit = null; + if($this->blockHit !== null && $this->getWorld()->isInLoadedTerrain($this->blockHit)){ + $blockHit = $this->getWorld()->getBlock($this->blockHit); + if(!$blockHit->collidesWithBB($this->getBoundingBox()->expandedCopy(0.001, 0.001, 0.001))){ + $this->blockHit = null; + } } parent::onNearbyBlockChange(); @@ -312,6 +305,6 @@ abstract class Projectile extends Entity{ * Called when the projectile collides with a Block. */ protected function onHitBlock(Block $blockHit, RayTraceResult $hitResult) : void{ - $this->blockHit = clone $blockHit; + $this->blockHit = $blockHit->getPosition()->asVector3(); } } diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 3ea54b01c..096f116f5 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -26,6 +26,7 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\blockstate\BlockStateData; use pocketmine\data\bedrock\blockstate\BlockStateDeserializer; use pocketmine\data\bedrock\blockstate\BlockStateSerializer; +use pocketmine\data\bedrock\blockstate\BlockTypeNames; use pocketmine\data\bedrock\blockstate\CachingBlockStateDeserializer; use pocketmine\data\bedrock\blockstate\CachingBlockStateSerializer; use pocketmine\data\bedrock\blockstate\convert\BlockObjectToBlockStateSerializer; @@ -36,6 +37,7 @@ use pocketmine\data\bedrock\blockstate\upgrade\LegacyBlockStateMapper; use pocketmine\data\bedrock\blockstate\UpgradingBlockStateDeserializer; use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; use pocketmine\errorhandler\ErrorToExceptionHandler; +use pocketmine\nbt\tag\CompoundTag; use Webmozart\PathUtil\Path; use function file_get_contents; use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; @@ -79,4 +81,23 @@ final class GlobalBlockStateHandlers{ LegacyBlockIdToStringIdMap::getInstance() ); } + + public static function nbtToBlockStateData(CompoundTag $tag) : BlockStateData{ + if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ + //Legacy (pre-1.13) blockstate - upgrade it to a version we understand + $id = $tag->getString("name"); + $data = $tag->getShort("val"); + + $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromStringIdMeta($id, $data); + if($blockStateData === null){ + //unknown block, invalid ID + $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + } + }else{ + //Modern (post-1.13) blockstate + $blockStateData = BlockStateData::fromNbt($tag); + } + + return $blockStateData; + } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 5be930660..1a25be18a 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -165,23 +165,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ try{ $offset = $stream->getOffset(); - $tag = $nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag(); + $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag()); $stream->setOffset($offset); - if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ - //Legacy (pre-1.13) blockstate - upgrade it to a version we understand - $id = $tag->getString("name"); - $data = $tag->getShort("val"); - - $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromStringIdMeta($id, $data); - if($blockStateData === null){ - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); - } - }else{ - //Modern (post-1.13) blockstate - $blockStateData = BlockStateData::fromNbt($tag); - } - try{ $palette[] = $blockStateDeserializer->deserialize($blockStateData); }catch(BlockStateDeserializeException){ From b57f0a2b7e0d15474d2c0cb489c8ecc636b7ed68 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 17:23:10 +0100 Subject: [PATCH 125/692] Fixed uninitialized typed properties --- src/inventory/transaction/CraftingTransaction.php | 4 ++-- src/thread/CommonThreadPartsTrait.php | 2 +- src/world/utils/SubChunkExplorer.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/inventory/transaction/CraftingTransaction.php b/src/inventory/transaction/CraftingTransaction.php index c7f71723f..5a36061f7 100644 --- a/src/inventory/transaction/CraftingTransaction.php +++ b/src/inventory/transaction/CraftingTransaction.php @@ -48,8 +48,8 @@ use function intdiv; * results, with no remainder. Any leftovers are expected to be emitted back to the crafting grid. */ class CraftingTransaction extends InventoryTransaction{ - protected ?CraftingRecipe $recipe; - protected ?int $repetitions; + protected ?CraftingRecipe $recipe = null; + protected ?int $repetitions = null; /** @var Item[] */ protected array $inputs = []; diff --git a/src/thread/CommonThreadPartsTrait.php b/src/thread/CommonThreadPartsTrait.php index 8085cf8d6..283d4ea39 100644 --- a/src/thread/CommonThreadPartsTrait.php +++ b/src/thread/CommonThreadPartsTrait.php @@ -30,7 +30,7 @@ use function error_reporting; trait CommonThreadPartsTrait{ /** @var \Threaded|\ClassLoader[]|null */ private ?\Threaded $classLoaders = null; - protected ?string $composerAutoloaderPath; + protected ?string $composerAutoloaderPath = null; protected bool $isKilled = false; diff --git a/src/world/utils/SubChunkExplorer.php b/src/world/utils/SubChunkExplorer.php index d4275e951..97ba3cff5 100644 --- a/src/world/utils/SubChunkExplorer.php +++ b/src/world/utils/SubChunkExplorer.php @@ -28,8 +28,8 @@ use pocketmine\world\format\Chunk; use pocketmine\world\format\SubChunk; class SubChunkExplorer{ - public ?Chunk $currentChunk; - public ?SubChunk $currentSubChunk; + public ?Chunk $currentChunk = null; + public ?SubChunk $currentSubChunk = null; protected int $currentX; protected int $currentY; From 08fbf92d8de917ed0044c5f1953bfe1a01195bb9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 18:25:14 +0100 Subject: [PATCH 126/692] Filter out recipes containing unknown items --- .../CraftingManagerFromDataHelper.php | 75 +++++++++++++++---- src/network/mcpe/convert/ItemTranslator.php | 2 - 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index f38709ab5..8de00ff62 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -23,7 +23,9 @@ declare(strict_types=1); namespace pocketmine\crafting; +use pocketmine\item\Durable; use pocketmine\item\Item; +use pocketmine\item\ItemFactory; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; use function array_map; @@ -33,6 +35,24 @@ use function json_decode; final class CraftingManagerFromDataHelper{ + /** + * @param Item[] $items + */ + private static function containsUnknownItems(array $items) : bool{ + $factory = ItemFactory::getInstance(); + foreach($items as $item){ + if( + //TODO: this check is imperfect and might cause problems if meta 0 isn't used for some reason + (($item instanceof Durable || $item->hasAnyDamageValue()) && !$factory->isRegistered($item->getId())) || + !$factory->isRegistered($item->getId(), $item->getMeta()) + ){ + return true; + } + } + + return false; + } + public static function make(string $filePath) : CraftingManager{ $recipes = json_decode(Utils::assumeNotFalse(file_get_contents($filePath), "Missing required resource file"), true); if(!is_array($recipes)){ @@ -52,9 +72,14 @@ final class CraftingManagerFromDataHelper{ if($recipeType === null){ continue; } + $inputs = array_map($itemDeserializerFunc, $recipe["input"]); + $outputs = array_map($itemDeserializerFunc, $recipe["output"]); + if(self::containsUnknownItems($inputs) || self::containsUnknownItems($outputs)){ + continue; + } $result->registerShapelessRecipe(new ShapelessRecipe( - array_map($itemDeserializerFunc, $recipe["input"]), - array_map($itemDeserializerFunc, $recipe["output"]), + $inputs, + $outputs, $recipeType )); } @@ -62,10 +87,15 @@ final class CraftingManagerFromDataHelper{ if($recipe["block"] !== "crafting_table"){ //TODO: filter others out for now to avoid breaking economics continue; } + $inputs = array_map($itemDeserializerFunc, $recipe["input"]); + $outputs = array_map($itemDeserializerFunc, $recipe["output"]); + if(self::containsUnknownItems($inputs) || self::containsUnknownItems($outputs)){ + continue; + } $result->registerShapedRecipe(new ShapedRecipe( $recipe["shape"], - array_map($itemDeserializerFunc, $recipe["input"]), - array_map($itemDeserializerFunc, $recipe["output"]) + $inputs, + $outputs )); } foreach($recipes["smelting"] as $recipe){ @@ -79,23 +109,42 @@ final class CraftingManagerFromDataHelper{ if($furnaceType === null){ continue; } + $output = Item::jsonDeserialize($recipe["output"]); + $input = Item::jsonDeserialize($recipe["input"]); + if(self::containsUnknownItems([$output, $input])){ + continue; + } $result->getFurnaceRecipeManager($furnaceType)->register(new FurnaceRecipe( - Item::jsonDeserialize($recipe["output"]), - Item::jsonDeserialize($recipe["input"])) - ); + $output, + $input + )); } foreach($recipes["potion_type"] as $recipe){ + $input = Item::jsonDeserialize($recipe["input"]); + $ingredient = Item::jsonDeserialize($recipe["ingredient"]); + $output = Item::jsonDeserialize($recipe["output"]); + + if(self::containsUnknownItems([$input, $ingredient, $output])){ + continue; + } $result->registerPotionTypeRecipe(new PotionTypeRecipe( - Item::jsonDeserialize($recipe["input"]), - Item::jsonDeserialize($recipe["ingredient"]), - Item::jsonDeserialize($recipe["output"]) + $input, + $ingredient, + $output )); } foreach($recipes["potion_container_change"] as $recipe){ + $input = ItemFactory::getInstance()->get($recipe["input_item_id"], -1); + $ingredient = Item::jsonDeserialize($recipe["ingredient"]); + $output = ItemFactory::getInstance()->get($recipe["output_item_id"], -1); + + if(self::containsUnknownItems([$input, $ingredient, $output])){ + continue; + } $result->registerPotionContainerChangeRecipe(new PotionContainerChangeRecipe( - $recipe["input_item_id"], - Item::jsonDeserialize($recipe["ingredient"]), - $recipe["output_item_id"] + $input->getId(), + $ingredient, + $output->getId() )); } diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 94615da45..6bd890333 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -28,7 +28,6 @@ use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; use pocketmine\item\ItemFactory; -use pocketmine\item\ItemIds; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; @@ -87,7 +86,6 @@ final class ItemTranslator{ */ public function toNetworkId(int $internalId, int $internalMeta) : array{ return $this->toNetworkIdQuiet($internalId, $internalMeta) ?? - $this->toNetworkIdQuiet(ItemIds::INFO_UPDATE, 0) ?? //TODO: bad duct tape throw new \InvalidArgumentException("Unmapped ID/metadata combination $internalId:$internalMeta"); } From 93124c79eae6f6f7960da6d5a35cbf0401885383 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 18:50:40 +0100 Subject: [PATCH 127/692] Fixed incorrect unknown item filtering logic this caused recipes with wildcard inputs to not show up at all. --- src/crafting/CraftingManagerFromDataHelper.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 8de00ff62..30b327f1e 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -41,11 +41,12 @@ final class CraftingManagerFromDataHelper{ private static function containsUnknownItems(array $items) : bool{ $factory = ItemFactory::getInstance(); foreach($items as $item){ - if( + if($item instanceof Durable || $item->hasAnyDamageValue()){ //TODO: this check is imperfect and might cause problems if meta 0 isn't used for some reason - (($item instanceof Durable || $item->hasAnyDamageValue()) && !$factory->isRegistered($item->getId())) || - !$factory->isRegistered($item->getId(), $item->getMeta()) - ){ + if(!$factory->isRegistered($item->getId())){ + return true; + } + }elseif(!$factory->isRegistered($item->getId(), $item->getMeta())){ return true; } } From 86e7ae341ffa19e27164304d2e64e8d6ae547398 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 20:48:44 +0100 Subject: [PATCH 128/692] ItemSerializer: Prohibit serializing recipe input wildcards --- src/data/bedrock/item/ItemSerializer.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 492a967b3..0870ece62 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -105,6 +105,9 @@ final class ItemSerializer{ if($item->isNull()){ throw new \InvalidArgumentException("Cannot serialize a null itemstack"); } + if($item->hasAnyDamageValue()){ + throw new \InvalidArgumentException("Cannot serialize a recipe input as a saved itemstack"); + } if($item instanceof ItemBlock){ $data = $this->serializeBlockItem($item->getBlock()); }else{ From 13bb1c26fb8bc496d13f092393137c221ff3048f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 20:51:26 +0100 Subject: [PATCH 129/692] ItemTranslator now operates directly using Item, rather than using item ID/meta + ItemFactory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit in almost all cases where ItemTranslator is used, an Item already exists, so it doesn't make any sense to make ItemTranslator go and create another item instance just to pass to ‰ItemSerializer. --- .../animation/ConsumingItemAnimation.php | 2 +- src/network/mcpe/cache/CraftingDataCache.php | 9 +-- src/network/mcpe/convert/ItemTranslator.php | 51 ++++++---------- src/network/mcpe/convert/TypeConverter.php | 58 ++++++++++++------- 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/entity/animation/ConsumingItemAnimation.php b/src/entity/animation/ConsumingItemAnimation.php index 83ff1d5e7..60639ea6b 100644 --- a/src/entity/animation/ConsumingItemAnimation.php +++ b/src/entity/animation/ConsumingItemAnimation.php @@ -37,7 +37,7 @@ final class ConsumingItemAnimation implements Animation{ ){} public function encode() : array{ - [$netId, $netData] = ItemTranslator::getInstance()->toNetworkId($this->item->getId(), $this->item->getMeta()); + [$netId, $netData] = ItemTranslator::getInstance()->toNetworkId($this->item); return [ //TODO: need to check the data values ActorEventPacket::create($this->human->getId(), ActorEvent::EATING_ITEM, ($netId << 16) | $netData) diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 1f09525d8..a8a881cff 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -27,6 +27,7 @@ use pocketmine\crafting\CraftingManager; use pocketmine\crafting\FurnaceType; use pocketmine\crafting\ShapelessRecipeType; use pocketmine\item\Item; +use pocketmine\item\ItemFactory; use pocketmine\network\mcpe\convert\ItemTranslator; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\CraftingDataPacket; @@ -135,7 +136,7 @@ final class CraftingDataCache{ default => throw new AssumptionFailedError("Unreachable"), }; foreach($manager->getFurnaceRecipeManager($furnaceType)->getAll() as $recipe){ - $input = $converter->coreItemStackToNet($recipe->getInput()); + $input = $converter->coreItemStackToRecipeIngredient($recipe->getInput()); $recipesWithTypeIds[] = new ProtocolFurnaceRecipe( CraftingDataPacket::ENTRY_FURNACE_DATA, $input->getId(), @@ -167,9 +168,9 @@ final class CraftingDataCache{ $itemTranslator = ItemTranslator::getInstance(); foreach($manager->getPotionContainerChangeRecipes() as $recipes){ foreach($recipes as $recipe){ - $input = $itemTranslator->toNetworkId($recipe->getInputItemId(), 0); - $ingredient = $itemTranslator->toNetworkId($recipe->getIngredient()->getId(), 0); - $output = $itemTranslator->toNetworkId($recipe->getOutputItemId(), 0); + $input = $itemTranslator->toNetworkId(ItemFactory::getInstance()->get($recipe->getInputItemId(), 0)); + $ingredient = $itemTranslator->toNetworkId($recipe->getIngredient()); + $output = $itemTranslator->toNetworkId(ItemFactory::getInstance()->get($recipe->getOutputItemId(), 0)); $potionContainerChangeRecipes[] = new ProtocolPotionContainerChangeRecipe( $input[0], $ingredient[0], diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 6bd890333..09cbac106 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -27,7 +27,7 @@ use pocketmine\data\bedrock\item\ItemDeserializer; use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; -use pocketmine\item\ItemFactory; +use pocketmine\item\Item; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; @@ -54,16 +54,24 @@ final class ItemTranslator{ * @return int[]|null * @phpstan-return array{int, int, int}|null */ - public function toNetworkIdQuiet(int $internalId, int $internalMeta) : ?array{ - //TODO: we should probably come up with a cache for this - + public function toNetworkIdQuiet(Item $item) : ?array{ try{ - $itemData = $this->itemSerializer->serialize(ItemFactory::getInstance()->get($internalId, $internalMeta)); + return $this->toNetworkId($item); }catch(ItemTypeSerializeException){ - //TODO: this will swallow any serializer error; this is not ideal, but it should be OK since unit tests - //should cover this return null; } + } + + /** + * @return int[] + * @phpstan-return array{int, int, int} + * + * @throws ItemTypeSerializeException + */ + public function toNetworkId(Item $item) : array{ + //TODO: we should probably come up with a cache for this + + $itemData = $this->itemSerializer->serialize($item); $numericId = $this->dictionary->fromStringId($itemData->getName()); $blockStateData = $itemData->getBlock(); @@ -81,40 +89,15 @@ final class ItemTranslator{ } /** - * @return int[] - * @phpstan-return array{int, int, int} - */ - public function toNetworkId(int $internalId, int $internalMeta) : array{ - return $this->toNetworkIdQuiet($internalId, $internalMeta) ?? - throw new \InvalidArgumentException("Unmapped ID/metadata combination $internalId:$internalMeta"); - } - - /** - * @return int[] - * @phpstan-return array{int, int} * @throws TypeConversionException */ - public function fromNetworkId(int $networkId, int $networkMeta, int $networkBlockRuntimeId) : array{ + public function fromNetworkId(int $networkId, int $networkMeta, int $networkBlockRuntimeId) : Item{ $stringId = $this->dictionary->fromIntId($networkId); $blockStateData = $networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID ? RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->getDataFromStateId($networkBlockRuntimeId) : null; - $item = $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); - return [$item->getId(), $item->getMeta()]; - } - - /** - * @return int[] - * @phpstan-return array{int, int} - * @throws TypeConversionException - */ - public function fromNetworkIdWithWildcardHandling(int $networkId, int $networkMeta) : array{ - if($networkMeta !== 0x7fff){ - return $this->fromNetworkId($networkId, $networkMeta, 0); - } - [$id, ] = $this->fromNetworkId($networkId, 0, 0); - return [$id, -1]; + return $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); } } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 8d4fd63bd..6272ff4df 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -27,6 +27,7 @@ use pocketmine\block\inventory\CraftingTableInventory; use pocketmine\block\inventory\EnchantInventory; use pocketmine\block\inventory\LoomInventory; use pocketmine\block\inventory\StonecutterInventory; +use pocketmine\block\VanillaBlocks; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; use pocketmine\inventory\transaction\action\DropItemAction; @@ -60,6 +61,8 @@ class TypeConverter{ private const PM_ID_TAG = "___Id___"; private const PM_META_TAG = "___Meta___"; + private const RECIPE_INPUT_WILDCARD_META = 0x7fff; + private int $shieldRuntimeId; public function __construct(){ @@ -116,10 +119,10 @@ class TypeConverter{ return new RecipeIngredient(0, 0, 0); } if($itemStack->hasAnyDamageValue()){ - [$id, ] = ItemTranslator::getInstance()->toNetworkId($itemStack->getId(), 0); - $meta = 0x7fff; + [$id, ] = ItemTranslator::getInstance()->toNetworkId(ItemFactory::getInstance()->get($itemStack->getId())); + $meta = self::RECIPE_INPUT_WILDCARD_META; }else{ - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($itemStack->getId(), $itemStack->getMeta()); + [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($itemStack); } return new RecipeIngredient($id, $meta, $itemStack->getCount()); } @@ -128,8 +131,17 @@ class TypeConverter{ if($ingredient->getId() === 0){ return VanillaItems::AIR(); } - [$id, $meta] = ItemTranslator::getInstance()->fromNetworkIdWithWildcardHandling($ingredient->getId(), $ingredient->getMeta()); - return ItemFactory::getInstance()->get($id, $meta, $ingredient->getCount()); + + //TODO: this won't be handled properly for blockitems because a block runtimeID is expected rather than a meta value + + if($ingredient->getMeta() === self::RECIPE_INPUT_WILDCARD_META){ + $idItem = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), 0, 0); + $result = ItemFactory::getInstance()->get($idItem->getId(), -1); + }else{ + $result = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), $ingredient->getMeta(), 0); + } + $result->setCount($ingredient->getCount()); + return $result; } public function coreItemStackToNet(Item $itemStack) : ItemStack{ @@ -141,11 +153,11 @@ class TypeConverter{ $nbt = clone $itemStack->getNamedTag(); } - $idMeta = ItemTranslator::getInstance()->toNetworkIdQuiet($itemStack->getId(), $itemStack->getMeta()); + $idMeta = ItemTranslator::getInstance()->toNetworkIdQuiet($itemStack); if($idMeta === null){ //Display unmapped items as INFO_UPDATE, but stick something in their NBT to make sure they don't stack with //other unmapped items. - [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId(ItemIds::INFO_UPDATE, 0); + [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId(VanillaBlocks::INFO_UPDATE()->asItem()); if($nbt === null){ $nbt = new CompoundTag(); } @@ -188,12 +200,13 @@ class TypeConverter{ } $compound = $itemStack->getNbt(); - [$id, $meta] = ItemTranslator::getInstance()->fromNetworkId($itemStack->getId(), $itemStack->getMeta(), $itemStack->getBlockRuntimeId()); + $itemResult = ItemTranslator::getInstance()->fromNetworkId($itemStack->getId(), $itemStack->getMeta(), $itemStack->getBlockRuntimeId()); if($compound !== null){ $compound = clone $compound; - if($id === ItemIds::INFO_UPDATE && $meta === 0){ + $id = $meta = null; + if($itemResult->getId() === ItemIds::INFO_UPDATE && $itemResult->getMeta() === 0){ if(($idTag = $compound->getTag(self::PM_ID_TAG)) instanceof IntTag){ $id = $idTag->getValue(); $compound->removeTag(self::PM_ID_TAG); @@ -214,21 +227,24 @@ class TypeConverter{ if($compound->count() === 0){ $compound = null; } - } - if($meta < 0 || $meta >= 0x7fff){ //this meta value may have been restored from the NBT - throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7fff . " (received $meta)"); + if($meta !== null){ + if($meta < 0 || $meta >= 0x7fff){ //this meta value may have been restored from the NBT + throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7fff . " (received $meta)"); + } + $itemResult = ItemFactory::getInstance()->get($id ?? $itemResult->getId(), $meta); + } } - try{ - return ItemFactory::getInstance()->get( - $id, - $meta, - $itemStack->getCount(), - $compound - ); - }catch(NbtException $e){ - throw TypeConversionException::wrap($e, "Bad itemstack NBT data"); + $itemResult->setCount($itemStack->getCount()); + if($compound !== null){ + try{ + $itemResult->setNamedTag($compound); + }catch(NbtException $e){ + throw TypeConversionException::wrap($e, "Bad itemstack NBT data"); + } } + + return $itemResult; } /** From c89f7f8e5e4944b6740adeae676895c478f74b93 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 21:47:04 +0100 Subject: [PATCH 130/692] TypeConverter: duct tape for crafting recipe block inputs --- src/network/mcpe/convert/TypeConverter.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 6272ff4df..55c4deb1f 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -123,6 +123,11 @@ class TypeConverter{ $meta = self::RECIPE_INPUT_WILDCARD_META; }else{ [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($itemStack); + if($id < 256){ + //TODO: this is needed for block crafting recipes to work - we need to replace this with some kind of + //blockstate <-> meta mapping table so that we can remove the legacy code from the core + $meta = $itemStack->getMeta(); + } } return new RecipeIngredient($id, $meta, $itemStack->getCount()); } From 860fa719b258cee679f59e025b161a92be0850b9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 21:50:43 +0100 Subject: [PATCH 131/692] ItemTranslator: Accept dynamic BlockStateDictionary instead of using singleton this will be needed for handling protocol updates in the future --- src/network/mcpe/convert/ItemTranslator.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 09cbac106..c161e2583 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -41,11 +41,17 @@ final class ItemTranslator{ use SingletonTrait; private static function make() : self{ - return new self(GlobalItemTypeDictionary::getInstance()->getDictionary(), new ItemSerializer(), new ItemDeserializer()); + return new self( + GlobalItemTypeDictionary::getInstance()->getDictionary(), + RuntimeBlockMapping::getInstance()->getBlockStateDictionary(), + new ItemSerializer(), + new ItemDeserializer() + ); } public function __construct( - private ItemTypeDictionary $dictionary, + private ItemTypeDictionary $itemTypeDictionary, + private BlockStateDictionary $blockStateDictionary, private ItemSerializer $itemSerializer, private ItemDeserializer $itemDeserializer ){} @@ -73,11 +79,11 @@ final class ItemTranslator{ $itemData = $this->itemSerializer->serialize($item); - $numericId = $this->dictionary->fromStringId($itemData->getName()); + $numericId = $this->itemTypeDictionary->fromStringId($itemData->getName()); $blockStateData = $itemData->getBlock(); if($blockStateData !== null){ - $blockRuntimeId = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->lookupStateIdFromData($blockStateData); + $blockRuntimeId = $this->blockStateDictionary->lookupStateIdFromData($blockStateData); if($blockRuntimeId === null){ throw new AssumptionFailedError("Unmapped blockstate returned by blockstate serializer: " . $blockStateData->toNbt()); } @@ -92,10 +98,10 @@ final class ItemTranslator{ * @throws TypeConversionException */ public function fromNetworkId(int $networkId, int $networkMeta, int $networkBlockRuntimeId) : Item{ - $stringId = $this->dictionary->fromIntId($networkId); + $stringId = $this->itemTypeDictionary->fromIntId($networkId); $blockStateData = $networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID ? - RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->getDataFromStateId($networkBlockRuntimeId) : + $this->blockStateDictionary->getDataFromStateId($networkBlockRuntimeId) : null; return $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); From 57132204ec5340b52213ae088bb5f05ae82feb79 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 22:09:32 +0100 Subject: [PATCH 132/692] ItemTranslator: throw only the expected exception types --- src/network/mcpe/convert/ItemTranslator.php | 24 ++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index c161e2583..669339e30 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\item\ItemDeserializer; use pocketmine\data\bedrock\item\ItemSerializer; +use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; use pocketmine\item\Item; @@ -98,12 +99,25 @@ final class ItemTranslator{ * @throws TypeConversionException */ public function fromNetworkId(int $networkId, int $networkMeta, int $networkBlockRuntimeId) : Item{ - $stringId = $this->itemTypeDictionary->fromIntId($networkId); + try{ + $stringId = $this->itemTypeDictionary->fromIntId($networkId); + }catch(\InvalidArgumentException $e){ + //TODO: a quiet version of fromIntId() would be better than catching InvalidArgumentException + throw TypeConversionException::wrap($e, "Invalid network itemstack ID $networkId"); + } - $blockStateData = $networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID ? - $this->blockStateDictionary->getDataFromStateId($networkBlockRuntimeId) : - null; + $blockStateData = null; + if($networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID){ + $blockStateData = $this->blockStateDictionary->getDataFromStateId($networkBlockRuntimeId); + if($blockStateData === null){ + throw new TypeConversionException("Blockstate runtimeID $networkBlockRuntimeId does not correspond to any known blockstate"); + } + } - return $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); + try{ + return $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); + }catch(ItemTypeDeserializeException $e){ + throw TypeConversionException::wrap($e, "Invalid network itemstack data"); + } } } From c29e23b2f15480661fd7b26b4a520e95484642d4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Jun 2022 22:13:26 +0100 Subject: [PATCH 133/692] TypeConverter: port 5fd685e07d61ef670584ed11a52fd5f4b99a81a7 to modern-world-support --- src/network/mcpe/convert/TypeConverter.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 55c4deb1f..cef12f919 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -233,6 +233,9 @@ class TypeConverter{ $compound = null; } if($meta !== null){ + if($id !== null && ($id < -0x8000 || $id >= 0x7fff)){ + throw new TypeConversionException("Item ID must be in range " . -0x8000 . " ... " . 0x7fff . " (received $id)"); + } if($meta < 0 || $meta >= 0x7fff){ //this meta value may have been restored from the NBT throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7fff . " (received $meta)"); } From fe4ff3325b91121531eded2a8d4c7a066db50bb5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Jun 2022 19:05:49 +0100 Subject: [PATCH 134/692] Add tool to dump JSON specification for block palettes this makes for easier reading to determine available properties. --- tools/generate-block-palette-spec.php | 70 +++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tools/generate-block-palette-spec.php diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php new file mode 100644 index 000000000..f8365f86a --- /dev/null +++ b/tools/generate-block-palette-spec.php @@ -0,0 +1,70 @@ +getStates() as $state){ + $name = $state->getName(); + foreach($state->getStates() as $propertyName => $value){ + if($value instanceof IntTag || $value instanceof StringTag){ + $rawValue = $value->getValue(); + }elseif($value instanceof ByteTag){ + $rawValue = match($value->getValue()){ + 0 => false, + 1 => true, + default => throw new AssumptionFailedError("Unexpected ByteTag value for $name -> $propertyName ($value)") + }; + }else{ + throw new AssumptionFailedError("Unexpected tag type for $name -> $propertyName ($value)"); + } + $reportMap[$name][$propertyName][get_class($value) . ":" . $value->getValue()] = $rawValue; + } +} + +foreach($reportMap as $blockName => $propertyList){ + foreach($propertyList as $propertyName => $propertyValues){ + ksort($reportMap[$blockName][$propertyName]); + $reportMap[$blockName][$propertyName] = array_values($propertyValues); + } +} +ksort($reportMap, SORT_STRING); + +file_put_contents($argv[2], json_encode($reportMap, JSON_PRETTY_PRINT)); + + From 3ce1be2a23c27b79f1c7825ce4fab0ab52dbccaf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Jun 2022 19:39:06 +0100 Subject: [PATCH 135/692] Added script to generate incremental item upgrade schemas --- tools/generate-item-upgrade-schema.php | 100 +++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tools/generate-item-upgrade-schema.php diff --git a/tools/generate-item-upgrade-schema.php b/tools/generate-item-upgrade-schema.php new file mode 100644 index 000000000..5e8c9f008 --- /dev/null +++ b/tools/generate-item-upgrade-schema.php @@ -0,0 +1,100 @@ +error("Required arguments: path to mapping table, path to current schemas, path to output file"); + exit(1); +} + +[, $mappingTableFile, $upgradeSchemasDir, $outputFile] = $argv; + +$target = json_decode(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($mappingTableFile)), true, JSON_THROW_ON_ERROR); +if(!is_array($target)){ + \GlobalLogger::get()->error("Invalid mapping table file"); + exit(1); +} + +$files = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => scandir($upgradeSchemasDir, SCANDIR_SORT_ASCENDING)); + +$merged = []; +foreach($files as $file){ + if($file === "." || $file === ".."){ + continue; + } + \GlobalLogger::get()->info("Processing schema file $file"); + $data = json_decode(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join($upgradeSchemasDir, $file))), associative: true, flags: JSON_THROW_ON_ERROR); + if(!is_array($data)){ + \GlobalLogger::get()->error("Invalid schema file $file"); + exit(1); + } + foreach(($data["renamedIds"] ?? []) as $oldId => $newId){ + if(isset($merged["simple"][$oldId])){ + \GlobalLogger::get()->warning("Duplicate rename for $oldId in file $file (was " . $merged["simple"][$oldId] . ", now $newId)"); + } + $merged["simple"][$oldId] = $newId; + } + + foreach(($data["remappedMetas"] ?? []) as $oldId => $mappings){ + foreach($mappings as $meta => $newId){ + if(isset($merged["complex"][$oldId][$meta])){ + \GlobalLogger::get()->warning("Duplicate meta remap for $oldId meta $meta in file $file (was " . $merged["complex"][$oldId][$meta] . ", now $newId)"); + } + $merged["complex"][$oldId][$meta] = $newId; + } + } +} + +$newDiff = []; + +foreach($target["simple"] as $oldId => $newId){ + if(($merged["simple"][$oldId] ?? null) !== $newId){ + $newDiff["renamedIds"][$oldId] = $newId; + } +} +if(isset($newDiff["renamedIds"])){ + ksort($newDiff["renamedIds"], SORT_STRING); +} + +foreach($target["complex"] as $oldId => $mappings){ + foreach($mappings as $meta => $newId){ + if(($merged["complex"][$oldId][$meta] ?? null) !== $newId){ + if($oldId === "minecraft:spawn_egg" && $meta === 130 && ($newId === "minecraft:axolotl_bucket" || $newId === "minecraft:axolotl_spawn_egg")){ + //TODO: hack for vanilla bug workaround + continue; + } + $newDiff["remappedMetas"][$oldId][$meta] = $newId; + } + } + if(isset($newDiff["remappedMetas"][$oldId])){ + ksort($newDiff["remappedMetas"][$oldId], SORT_STRING); + } +} +if(isset($newDiff["remappedMetas"])){ + ksort($newDiff["remappedMetas"], SORT_STRING); +} +ksort($newDiff, SORT_STRING); + +\GlobalLogger::get()->info("Writing output file to $outputFile"); +file_put_contents($outputFile, json_encode($newDiff, JSON_PRETTY_PRINT | JSON_FORCE_OBJECT)); From 3a9e4bc357a27993dec66ef28d26a61926b1614b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Jun 2022 19:40:00 +0100 Subject: [PATCH 136/692] Fix CS --- tools/generate-block-palette-spec.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index f8365f86a..9f5510a02 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -28,6 +28,15 @@ use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\utils\AssumptionFailedError; +use function array_values; +use function count; +use function dirname; +use function file_get_contents; +use function file_put_contents; +use function fwrite; +use function get_class; +use function json_encode; +use function ksort; require dirname(__DIR__) . '/vendor/autoload.php'; @@ -66,5 +75,3 @@ foreach($reportMap as $blockName => $propertyList){ ksort($reportMap, SORT_STRING); file_put_contents($argv[2], json_encode($reportMap, JSON_PRETTY_PRINT)); - - From 1f8009954c50b000e264ab379ff613541bd3d414 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Jun 2022 19:52:16 +0100 Subject: [PATCH 137/692] Fix PHPStan errors --- tools/generate-block-palette-spec.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index 9f5510a02..a7b290ffc 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -23,11 +23,14 @@ declare(strict_types=1); namespace pocketmine\tools\generate_block_palette_spec; +use pocketmine\errorhandler\ErrorToExceptionHandler; +use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Utils; use function array_values; use function count; use function dirname; @@ -44,7 +47,15 @@ if(count($argv) !== 3){ fwrite(STDERR, "Required arguments: input palette file path, output JSON file path\n"); exit(1); } -$palette = BlockStateDictionary::loadFromString(file_get_contents($argv[1])); + +[, $inputFile, $outputFile] = $argv; + +try{ + $palette = BlockStateDictionary::loadFromString(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))); +}catch(NbtException){ + fwrite(STDERR, "Invalid block palette file $argv[1]\n"); + exit(1); +} $reportMap = []; @@ -66,12 +77,12 @@ foreach($palette->getStates() as $state){ } } -foreach($reportMap as $blockName => $propertyList){ - foreach($propertyList as $propertyName => $propertyValues){ +foreach(Utils::stringifyKeys($reportMap) as $blockName => $propertyList){ + foreach(Utils::stringifyKeys($propertyList) as $propertyName => $propertyValues){ ksort($reportMap[$blockName][$propertyName]); $reportMap[$blockName][$propertyName] = array_values($propertyValues); } } ksort($reportMap, SORT_STRING); -file_put_contents($argv[2], json_encode($reportMap, JSON_PRETTY_PRINT)); +file_put_contents($outputFile, json_encode($reportMap, JSON_PRETTY_PRINT)); From cf7d42b3ea40ff2e6fc74a9940b8544fdc054fa2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Jun 2022 20:02:24 +0100 Subject: [PATCH 138/692] Fix CS according to new rules --- src/VersionInfo.php | 2 +- src/block/BlockTypeIds.php | 2 +- src/data/bedrock/BlockItemIdMap.php | 2 +- .../bedrock/blockstate/BlockStateData.php | 2 +- .../BlockStateDeserializeException.php | 2 +- .../blockstate/BlockStateDeserializer.php | 2 +- .../bedrock/blockstate/BlockStateNames.php | 2 +- .../BlockStateSerializeException.php | 2 +- .../blockstate/BlockStateSerializer.php | 2 +- .../blockstate/BlockStateStringValues.php | 2 +- .../bedrock/blockstate/BlockTypeNames.php | 2 +- .../CachingBlockStateDeserializer.php | 2 +- .../CachingBlockStateSerializer.php | 2 +- .../UpgradingBlockStateDeserializer.php | 2 +- .../BlockObjectToBlockStateSerializer.php | 2 +- .../convert/BlockStateDeserializerHelper.php | 2 +- .../blockstate/convert/BlockStateReader.php | 2 +- .../convert/BlockStateSerializerHelper.php | 2 +- .../BlockStateToBlockObjectDeserializer.php | 2 +- .../blockstate/convert/BlockStateWriter.php | 2 +- .../upgrade/BlockStateUpgradeSchema.php | 2 +- .../BlockStateUpgradeSchemaBlockRemap.php | 2 +- .../upgrade/BlockStateUpgradeSchemaUtils.php | 2 +- .../BlockStateUpgradeSchemaValueRemap.php | 2 +- .../blockstate/upgrade/BlockStateUpgrader.php | 2 +- .../upgrade/LegacyBlockStateMapper.php | 2 +- .../model/BlockStateUpgradeSchemaModel.php | 2 +- ...BlockStateUpgradeSchemaModelBlockRemap.php | 2 +- .../model/BlockStateUpgradeSchemaModelTag.php | 2 +- ...BlockStateUpgradeSchemaModelValueRemap.php | 2 +- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 2 +- .../item/ItemTypeDeserializeException.php | 2 +- src/data/bedrock/item/ItemTypeIds.php | 2 +- .../item/ItemTypeSerializeException.php | 2 +- src/data/bedrock/item/SavedItemData.php | 2 +- src/item/CoralFan.php | 2 +- src/item/ItemIdentifierFlattened.php | 2 +- .../mcpe/convert/BlockStateDictionary.php | 2 +- .../mcpe/convert/BlockStateLookupCache.php | 2 +- .../format/io/GlobalBlockStateHandlers.php | 2 +- .../BlockSerializerDeserializerTest.php | 19 +++++++++++++++++++ .../upgrade/BlockStateUpgraderTest.php | 2 +- .../item/ItemSerializerDeserializerTest.php | 2 +- tools/generate-block-palette-spec.php | 2 +- tools/generate-blockstate-upgrade-schema.php | 2 +- tools/generate-item-upgrade-schema.php | 19 +++++++++++++++++++ 47 files changed, 83 insertions(+), 45 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 2ebffeca0..6c2f8f660 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index a4dc79718..ba211f59e 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/BlockItemIdMap.php b/src/data/bedrock/BlockItemIdMap.php index a345a0a32..4109ec43d 100644 --- a/src/data/bedrock/BlockItemIdMap.php +++ b/src/data/bedrock/BlockItemIdMap.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateData.php b/src/data/bedrock/blockstate/BlockStateData.php index 355c87cd4..0315a7f41 100644 --- a/src/data/bedrock/blockstate/BlockStateData.php +++ b/src/data/bedrock/blockstate/BlockStateData.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateDeserializeException.php b/src/data/bedrock/blockstate/BlockStateDeserializeException.php index 03c3b7650..2f0701b92 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializeException.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializeException.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/blockstate/BlockStateDeserializer.php index 180480bb1..a9af9c078 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/BlockStateDeserializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateNames.php b/src/data/bedrock/blockstate/BlockStateNames.php index 93d827005..2d4645ac0 100644 --- a/src/data/bedrock/blockstate/BlockStateNames.php +++ b/src/data/bedrock/blockstate/BlockStateNames.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateSerializeException.php b/src/data/bedrock/blockstate/BlockStateSerializeException.php index 96eb1d539..818b3cf6e 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializeException.php +++ b/src/data/bedrock/blockstate/BlockStateSerializeException.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/blockstate/BlockStateSerializer.php index faa5b12a1..8f979c069 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/blockstate/BlockStateSerializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockStateStringValues.php b/src/data/bedrock/blockstate/BlockStateStringValues.php index 689f22be4..334f315d0 100644 --- a/src/data/bedrock/blockstate/BlockStateStringValues.php +++ b/src/data/bedrock/blockstate/BlockStateStringValues.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/blockstate/BlockTypeNames.php index 93b637089..6bd912fbd 100644 --- a/src/data/bedrock/blockstate/BlockTypeNames.php +++ b/src/data/bedrock/blockstate/BlockTypeNames.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php b/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php index c0205eaeb..977b09320 100644 --- a/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/CachingBlockStateSerializer.php b/src/data/bedrock/blockstate/CachingBlockStateSerializer.php index eb4cc13de..b310c7bb2 100644 --- a/src/data/bedrock/blockstate/CachingBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/CachingBlockStateSerializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php b/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php index cd1c114df..50dd21d73 100644 --- a/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php +++ b/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php index 322c81221..42de62dca 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php index 7b7fcb9a5..4503edffb 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockStateReader.php b/src/data/bedrock/blockstate/convert/BlockStateReader.php index c85fc9e57..a93c1c1bd 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateReader.php +++ b/src/data/bedrock/blockstate/convert/BlockStateReader.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php index 91e4cba86..4fe10ee90 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index 753cee806..d81b7d2d6 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/convert/BlockStateWriter.php b/src/data/bedrock/blockstate/convert/BlockStateWriter.php index d05c5f6c4..527a7040e 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateWriter.php +++ b/src/data/bedrock/blockstate/convert/BlockStateWriter.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php index 75e50a52e..59c342ca2 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php index b30713771..90415bbda 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php index ae5753c76..09c215e0e 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php index 38f3b1f3f..832cff212 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php index f732401c4..85dd3cecf 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php index 843c0932e..8e5d7849f 100644 --- a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php index 824ca7a7a..d5338ba19 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php index 5404c0bdc..6f5ea8d01 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php index 2e0d24cac..95a9aae9b 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php index 84d07dd46..e163655d4 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php +++ b/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 5c91743b3..8e09cbd2e 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 0870ece62..4b6b701ff 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/ItemTypeDeserializeException.php b/src/data/bedrock/item/ItemTypeDeserializeException.php index bbcb3f37a..21ee91f13 100644 --- a/src/data/bedrock/item/ItemTypeDeserializeException.php +++ b/src/data/bedrock/item/ItemTypeDeserializeException.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/ItemTypeIds.php b/src/data/bedrock/item/ItemTypeIds.php index f51504136..8658507e1 100644 --- a/src/data/bedrock/item/ItemTypeIds.php +++ b/src/data/bedrock/item/ItemTypeIds.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/ItemTypeSerializeException.php b/src/data/bedrock/item/ItemTypeSerializeException.php index f2d12c46f..152ba0e82 100644 --- a/src/data/bedrock/item/ItemTypeSerializeException.php +++ b/src/data/bedrock/item/ItemTypeSerializeException.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/data/bedrock/item/SavedItemData.php b/src/data/bedrock/item/SavedItemData.php index 7ca1955f8..22ae550a0 100644 --- a/src/data/bedrock/item/SavedItemData.php +++ b/src/data/bedrock/item/SavedItemData.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index e276a0e41..c9937cf0d 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php index 974ff38b8..d09a7d76d 100644 --- a/src/item/ItemIdentifierFlattened.php +++ b/src/item/ItemIdentifierFlattened.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 421d2cfff..bfb18e933 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index 60ac12fc9..37d58fad6 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 096f116f5..bbf4d7bfd 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php index 98a9e0b51..2fafb8d94 100644 --- a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php @@ -1,5 +1,24 @@ Date: Tue, 7 Jun 2022 20:14:00 +0100 Subject: [PATCH 139/692] Branch-specific 1.19.0 stuff --- composer.lock | 8 ++--- .../bedrock/blockstate/BlockStateNames.php | 2 ++ .../bedrock/blockstate/BlockTypeNames.php | 35 ++++++++++++++----- .../convert/BlockStateSerializerHelper.php | 8 ++--- .../BlockStateToBlockObjectDeserializer.php | 16 ++++----- src/world/format/io/data/BedrockWorldData.php | 7 +--- 6 files changed, 45 insertions(+), 31 deletions(-) diff --git a/composer.lock b/composer.lock index b419066c8..16160f851 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "826fb285c7e8e6fd8e0f0184b9ce37813d5102f4" + "reference": "68a411921c52260248f18716a129f85126b871fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/826fb285c7e8e6fd8e0f0184b9ce37813d5102f4", - "reference": "826fb285c7e8e6fd8e0f0184b9ce37813d5102f4", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/68a411921c52260248f18716a129f85126b871fb", + "reference": "68a411921c52260248f18716a129f85126b871fb", "shasum": "" }, "default-branch": true, @@ -272,7 +272,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-05-13T19:44:35+00:00" + "time": "2022-06-07T17:46:29+00:00" }, { "name": "pocketmine/bedrock-data", diff --git a/src/data/bedrock/blockstate/BlockStateNames.php b/src/data/bedrock/blockstate/BlockStateNames.php index 2d4645ac0..e902df92d 100644 --- a/src/data/bedrock/blockstate/BlockStateNames.php +++ b/src/data/bedrock/blockstate/BlockStateNames.php @@ -42,6 +42,7 @@ final class BlockStateNames{ public const BREWING_STAND_SLOT_B_BIT = "brewing_stand_slot_b_bit"; public const BREWING_STAND_SLOT_C_BIT = "brewing_stand_slot_c_bit"; public const BUTTON_PRESSED_BIT = "button_pressed_bit"; + public const CAN_SUMMON = "can_summon"; public const CANDLES = "candles"; public const CAULDRON_LIQUID = "cauldron_liquid"; public const CHEMISTRY_TABLE_TYPE = "chemistry_table_type"; @@ -105,6 +106,7 @@ final class BlockStateNames{ public const PORTAL_AXIS = "portal_axis"; public const POWERED_BIT = "powered_bit"; public const PRISMARINE_BLOCK_TYPE = "prismarine_block_type"; + public const PROPAGULE_STAGE = "propagule_stage"; public const RAIL_DATA_BIT = "rail_data_bit"; public const RAIL_DIRECTION = "rail_direction"; public const REDSTONE_SIGNAL = "redstone_signal"; diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/blockstate/BlockTypeNames.php index 6bd912fbd..dcfb2e71f 100644 --- a/src/data/bedrock/blockstate/BlockTypeNames.php +++ b/src/data/bedrock/blockstate/BlockTypeNames.php @@ -220,10 +220,10 @@ final class BlockTypeNames{ public const DISPENSER = "minecraft:dispenser"; public const DOUBLE_CUT_COPPER_SLAB = "minecraft:double_cut_copper_slab"; public const DOUBLE_PLANT = "minecraft:double_plant"; - public const DOUBLE_STONE_SLAB = "minecraft:double_stone_slab"; - public const DOUBLE_STONE_SLAB2 = "minecraft:double_stone_slab2"; - public const DOUBLE_STONE_SLAB3 = "minecraft:double_stone_slab3"; - public const DOUBLE_STONE_SLAB4 = "minecraft:double_stone_slab4"; + public const DOUBLE_STONE_BLOCK_SLAB = "minecraft:double_stone_block_slab"; + public const DOUBLE_STONE_BLOCK_SLAB2 = "minecraft:double_stone_block_slab2"; + public const DOUBLE_STONE_BLOCK_SLAB3 = "minecraft:double_stone_block_slab3"; + public const DOUBLE_STONE_BLOCK_SLAB4 = "minecraft:double_stone_block_slab4"; public const DOUBLE_WOODEN_SLAB = "minecraft:double_wooden_slab"; public const DRAGON_EGG = "minecraft:dragon_egg"; public const DRIED_KELP_BLOCK = "minecraft:dried_kelp_block"; @@ -467,9 +467,23 @@ final class BlockTypeNames{ public const MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake"; public const MAGENTA_GLAZED_TERRACOTTA = "minecraft:magenta_glazed_terracotta"; public const MAGMA = "minecraft:magma"; + public const MANGROVE_BUTTON = "minecraft:mangrove_button"; + public const MANGROVE_DOOR = "minecraft:mangrove_door"; + public const MANGROVE_DOUBLE_SLAB = "minecraft:mangrove_double_slab"; + public const MANGROVE_FENCE = "minecraft:mangrove_fence"; + public const MANGROVE_FENCE_GATE = "minecraft:mangrove_fence_gate"; public const MANGROVE_LEAVES = "minecraft:mangrove_leaves"; + public const MANGROVE_LOG = "minecraft:mangrove_log"; + public const MANGROVE_PLANKS = "minecraft:mangrove_planks"; + public const MANGROVE_PRESSURE_PLATE = "minecraft:mangrove_pressure_plate"; public const MANGROVE_PROPAGULE = "minecraft:mangrove_propagule"; - public const MANGROVE_PROPAGULE_HANGING = "minecraft:mangrove_propagule_hanging"; + public const MANGROVE_ROOTS = "minecraft:mangrove_roots"; + public const MANGROVE_SLAB = "minecraft:mangrove_slab"; + public const MANGROVE_STAIRS = "minecraft:mangrove_stairs"; + public const MANGROVE_STANDING_SIGN = "minecraft:mangrove_standing_sign"; + public const MANGROVE_TRAPDOOR = "minecraft:mangrove_trapdoor"; + public const MANGROVE_WALL_SIGN = "minecraft:mangrove_wall_sign"; + public const MANGROVE_WOOD = "minecraft:mangrove_wood"; public const MEDIUM_AMETHYST_BUD = "minecraft:medium_amethyst_bud"; public const MELON_BLOCK = "minecraft:melon_block"; public const MELON_STEM = "minecraft:melon_stem"; @@ -487,6 +501,7 @@ final class BlockTypeNames{ public const MUD_BRICK_STAIRS = "minecraft:mud_brick_stairs"; public const MUD_BRICK_WALL = "minecraft:mud_brick_wall"; public const MUD_BRICKS = "minecraft:mud_bricks"; + public const MUDDY_MANGROVE_ROOTS = "minecraft:muddy_mangrove_roots"; public const MYCELIUM = "minecraft:mycelium"; public const NETHER_BRICK = "minecraft:nether_brick"; public const NETHER_BRICK_FENCE = "minecraft:nether_brick_fence"; @@ -640,13 +655,13 @@ final class BlockTypeNames{ public const STICKY_PISTON = "minecraft:sticky_piston"; public const STICKY_PISTON_ARM_COLLISION = "minecraft:sticky_piston_arm_collision"; public const STONE = "minecraft:stone"; + public const STONE_BLOCK_SLAB = "minecraft:stone_block_slab"; + public const STONE_BLOCK_SLAB2 = "minecraft:stone_block_slab2"; + public const STONE_BLOCK_SLAB3 = "minecraft:stone_block_slab3"; + public const STONE_BLOCK_SLAB4 = "minecraft:stone_block_slab4"; public const STONE_BRICK_STAIRS = "minecraft:stone_brick_stairs"; public const STONE_BUTTON = "minecraft:stone_button"; public const STONE_PRESSURE_PLATE = "minecraft:stone_pressure_plate"; - public const STONE_SLAB = "minecraft:stone_slab"; - public const STONE_SLAB2 = "minecraft:stone_slab2"; - public const STONE_SLAB3 = "minecraft:stone_slab3"; - public const STONE_SLAB4 = "minecraft:stone_slab4"; public const STONE_STAIRS = "minecraft:stone_stairs"; public const STONEBRICK = "minecraft:stonebrick"; public const STONECUTTER = "minecraft:stonecutter"; @@ -657,6 +672,8 @@ final class BlockTypeNames{ public const STRIPPED_CRIMSON_STEM = "minecraft:stripped_crimson_stem"; public const STRIPPED_DARK_OAK_LOG = "minecraft:stripped_dark_oak_log"; public const STRIPPED_JUNGLE_LOG = "minecraft:stripped_jungle_log"; + public const STRIPPED_MANGROVE_LOG = "minecraft:stripped_mangrove_log"; + public const STRIPPED_MANGROVE_WOOD = "minecraft:stripped_mangrove_wood"; public const STRIPPED_OAK_LOG = "minecraft:stripped_oak_log"; public const STRIPPED_SPRUCE_LOG = "minecraft:stripped_spruce_log"; public const STRIPPED_WARPED_HYPHAE = "minecraft:stripped_warped_hyphae"; diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php index 4fe10ee90..9fc53c20e 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php @@ -222,19 +222,19 @@ final class BlockStateSerializerHelper{ } public static function encodeStoneSlab1(Slab $block, string $typeValue) : BlockStateWriter{ - return self::encodeStoneSlab($block, Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, BlockStateNames::STONE_SLAB_TYPE, $typeValue); + return self::encodeStoneSlab($block, Ids::STONE_BLOCK_SLAB, Ids::DOUBLE_STONE_BLOCK_SLAB, BlockStateNames::STONE_SLAB_TYPE, $typeValue); } public static function encodeStoneSlab2(Slab $block, string $typeValue) : BlockStateWriter{ - return self::encodeStoneSlab($block, Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, BlockStateNames::STONE_SLAB_TYPE_2, $typeValue); + return self::encodeStoneSlab($block, Ids::STONE_BLOCK_SLAB2, Ids::DOUBLE_STONE_BLOCK_SLAB2, BlockStateNames::STONE_SLAB_TYPE_2, $typeValue); } public static function encodeStoneSlab3(Slab $block, string $typeValue) : BlockStateWriter{ - return self::encodeStoneSlab($block, Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, BlockStateNames::STONE_SLAB_TYPE_3, $typeValue); + return self::encodeStoneSlab($block, Ids::STONE_BLOCK_SLAB3, Ids::DOUBLE_STONE_BLOCK_SLAB3, BlockStateNames::STONE_SLAB_TYPE_3, $typeValue); } public static function encodeStoneSlab4(Slab $block, string $typeValue) : BlockStateWriter{ - return self::encodeStoneSlab($block, Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, BlockStateNames::STONE_SLAB_TYPE_4, $typeValue); + return self::encodeStoneSlab($block, Ids::STONE_BLOCK_SLAB4, Ids::DOUBLE_STONE_BLOCK_SLAB4, BlockStateNames::STONE_SLAB_TYPE_4, $typeValue); } public static function encodeTrapdoor(Trapdoor $block, BlockStateWriter $out) : BlockStateWriter{ diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php index d81b7d2d6..95f755e81 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php @@ -298,19 +298,19 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::DOUBLE_PLANT_TYPE, $type), })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); }); - $this->map(Ids::DOUBLE_STONE_SLAB, function(Reader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB, function(Reader $in) : Block{ $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB2, function(Reader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB2, function(Reader $in) : Block{ $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB3, function(Reader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB3, function(Reader $in) : Block{ $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); }); - $this->map(Ids::DOUBLE_STONE_SLAB4, function(Reader $in) : Block{ + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB4, function(Reader $in) : Block{ $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); }); @@ -939,10 +939,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::STONE_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::STONE_BRICK_STAIRS(), $in)); $this->map(Ids::STONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::STONE_BUTTON(), $in)); $this->map(Ids::STONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::STONE_PRESSURE_PLATE(), $in)); - $this->map(Ids::STONE_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_BLOCK_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_BLOCK_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_BLOCK_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); + $this->map(Ids::STONE_BLOCK_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); $this->map(Ids::STONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::COBBLESTONE_STAIRS(), $in)); $this->map(Ids::STONEBRICK, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::STONE_BRICK_TYPE)){ diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index dbe05f4e4..5378be7f2 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -48,12 +48,7 @@ use function time; class BedrockWorldData extends BaseNbtWorldData{ public const CURRENT_STORAGE_VERSION = 9; - /** - * WARNING: In the future, this should be only as high as the newest world format currently supported. We don't - * actually support worlds from 1.18.10 yet, but due to an old stupid bug, all worlds created by PM will report this - * version. - */ - public const CURRENT_STORAGE_NETWORK_VERSION = 503; // 1.18.10 + public const CURRENT_STORAGE_NETWORK_VERSION = 527; // 1.19.0 public const GENERATOR_LIMITED = 0; public const GENERATOR_INFINITE = 1; From 0a22e4606d4501558606c4d6fc711b903ea601bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 13:51:15 +0100 Subject: [PATCH 140/692] Wow, I'm really getting sloppy... --- tools/generate-item-upgrade-schema.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/generate-item-upgrade-schema.php b/tools/generate-item-upgrade-schema.php index 261ca5454..aff447020 100644 --- a/tools/generate-item-upgrade-schema.php +++ b/tools/generate-item-upgrade-schema.php @@ -40,7 +40,7 @@ use function json_encode; use function ksort; use function scandir; -require __DIR__ . '/vendor/autoload.php'; +require dirname(__DIR__) . '/vendor/autoload.php'; if(count($argv) !== 4){ \GlobalLogger::get()->error("Required arguments: path to mapping table, path to current schemas, path to output file"); From e78f20391e4ae08c2bccb49ab9a488ebb3418072 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 14:21:57 +0100 Subject: [PATCH 141/692] seriously? ... --- tools/generate-item-upgrade-schema.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/generate-item-upgrade-schema.php b/tools/generate-item-upgrade-schema.php index aff447020..59fab8026 100644 --- a/tools/generate-item-upgrade-schema.php +++ b/tools/generate-item-upgrade-schema.php @@ -32,6 +32,7 @@ namespace pocketmine\tools\generate_item_upgrade_schema; use pocketmine\errorhandler\ErrorToExceptionHandler; use Webmozart\PathUtil\Path; use function count; +use function dirname; use function file_get_contents; use function file_put_contents; use function is_array; From 831738b29cfebe57d0251de1e9f7004b92834d84 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 14:53:58 +0100 Subject: [PATCH 142/692] Added BedrockItemUpgradeSchema dependency --- composer.json | 1 + composer.lock | 32 +++++++++++++++++-- src/CoreConstants.php | 1 + .../bedrock/LegacyItemIdToStringIdMap.php | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index e19f5f1cd..bbe11059a 100644 --- a/composer.json +++ b/composer.json @@ -36,6 +36,7 @@ "netresearch/jsonmapper": "^4.0", "pocketmine/bedrock-block-upgrade-schema": "dev-master@dev", "pocketmine/bedrock-data": "dev-modern-world-support@dev", + "pocketmine/bedrock-item-upgrade-schema": "dev-master", "pocketmine/bedrock-protocol": "~10.0.0+bedrock-1.19.0", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", diff --git a/composer.lock b/composer.lock index 16160f851..88dde6bd0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1d35edfe78183512ce45be7a8a4940e7", + "content-hash": "4e3266e01983490663a0cdac7609bde0", "packages": [ { "name": "adhocore/json-comment", @@ -300,6 +300,33 @@ }, "time": "2022-06-07T16:24:29+00:00" }, + { + "name": "pocketmine/bedrock-item-upgrade-schema", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/pmmp/BedrockItemUpgradeSchema.git", + "reference": "d984d2ee7283bc52e8733e7c7da1d0f6b6dc501f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/d984d2ee7283bc52e8733e7c7da1d0f6b6dc501f", + "reference": "d984d2ee7283bc52e8733e7c7da1d0f6b6dc501f", + "shasum": "" + }, + "default-branch": true, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "CC0-1.0" + ], + "description": "JSON schemas for upgrading items found in older Minecraft: Bedrock world saves", + "support": { + "issues": "https://github.com/pmmp/BedrockItemUpgradeSchema/issues", + "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/master" + }, + "time": "2022-06-08T13:47:48+00:00" + }, { "name": "pocketmine/bedrock-protocol", "version": "10.0.0+bedrock-1.19.0", @@ -3361,7 +3388,8 @@ "minimum-stability": "stable", "stability-flags": { "pocketmine/bedrock-block-upgrade-schema": 20, - "pocketmine/bedrock-data": 20 + "pocketmine/bedrock-data": 20, + "pocketmine/bedrock-item-upgrade-schema": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/src/CoreConstants.php b/src/CoreConstants.php index 384f5d0a7..c18486237 100644 --- a/src/CoreConstants.php +++ b/src/CoreConstants.php @@ -38,4 +38,5 @@ define('pocketmine\RESOURCE_PATH', dirname(__DIR__) . '/resources/'); define('pocketmine\BEDROCK_DATA_PATH', dirname(__DIR__) . '/vendor/pocketmine/bedrock-data/'); define('pocketmine\LOCALE_DATA_PATH', dirname(__DIR__) . '/vendor/pocketmine/locale-data/'); define('pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH', dirname(__DIR__) . '/vendor/pocketmine/bedrock-block-upgrade-schema/'); +define('pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH', dirname(__DIR__) . '/vendor/pocketmine/bedrock-item-upgrade-schema/'); define('pocketmine\COMPOSER_AUTOLOADER_PATH', dirname(__DIR__) . '/vendor/autoload.php'); diff --git a/src/data/bedrock/LegacyItemIdToStringIdMap.php b/src/data/bedrock/LegacyItemIdToStringIdMap.php index 85b6ff1bf..587a09fe0 100644 --- a/src/data/bedrock/LegacyItemIdToStringIdMap.php +++ b/src/data/bedrock/LegacyItemIdToStringIdMap.php @@ -30,6 +30,6 @@ final class LegacyItemIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ use SingletonTrait; public function __construct(){ - parent::__construct(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'item_id_map.json')); + parent::__construct(Path::join(\pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'item_legacy_id_map.json')); } } From 1da6202e6e035cf52991040490050c7d9fdd1b8c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 15:28:29 +0100 Subject: [PATCH 143/692] Update composer dependencies --- composer.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/composer.lock b/composer.lock index 88dde6bd0..69e7bcf69 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "68a411921c52260248f18716a129f85126b871fb" + "reference": "c7aa3e04ae36dbb9a97905a2595f4453d914aa5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/68a411921c52260248f18716a129f85126b871fb", - "reference": "68a411921c52260248f18716a129f85126b871fb", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/c7aa3e04ae36dbb9a97905a2595f4453d914aa5c", + "reference": "c7aa3e04ae36dbb9a97905a2595f4453d914aa5c", "shasum": "" }, "default-branch": true, @@ -272,7 +272,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-06-07T17:46:29+00:00" + "time": "2022-06-08T13:20:45+00:00" }, { "name": "pocketmine/bedrock-data", @@ -280,12 +280,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "3c65a3197d8a46c424358ac983b6fc287874e649" + "reference": "6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/3c65a3197d8a46c424358ac983b6fc287874e649", - "reference": "3c65a3197d8a46c424358ac983b6fc287874e649", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75", + "reference": "6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75", "shasum": "" }, "type": "library", @@ -298,7 +298,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-06-07T16:24:29+00:00" + "time": "2022-06-08T14:00:34+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", @@ -329,16 +329,16 @@ }, { "name": "pocketmine/bedrock-protocol", - "version": "10.0.0+bedrock-1.19.0", + "version": "10.0.1+bedrock-1.19.0", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockProtocol.git", - "reference": "7c17498541bb9a375b945cb131e951674067c00e" + "reference": "331fb0eb45c26daadf8cf01a3b6f20e909d7684b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/7c17498541bb9a375b945cb131e951674067c00e", - "reference": "7c17498541bb9a375b945cb131e951674067c00e", + "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/331fb0eb45c26daadf8cf01a3b6f20e909d7684b", + "reference": "331fb0eb45c26daadf8cf01a3b6f20e909d7684b", "shasum": "" }, "require": { @@ -370,9 +370,9 @@ "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", "support": { "issues": "https://github.com/pmmp/BedrockProtocol/issues", - "source": "https://github.com/pmmp/BedrockProtocol/tree/10.0.0+bedrock-1.19.0" + "source": "https://github.com/pmmp/BedrockProtocol/tree/10.0.1+bedrock-1.19.0" }, - "time": "2022-06-07T16:31:30+00:00" + "time": "2022-06-08T01:11:15+00:00" }, { "name": "pocketmine/binaryutils", From 680615eed8440b5259d86edbf4dfc9d2b6a78919 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 15:54:45 +0100 Subject: [PATCH 144/692] Namespace rename --- src/block/tile/FlowerPot.php | 2 +- .../{blockstate => block}/BlockStateData.php | 2 +- .../BlockStateDeserializeException.php | 2 +- .../BlockStateDeserializer.php | 2 +- .../{blockstate => block}/BlockStateNames.php | 2 +- .../BlockStateSerializeException.php | 2 +- .../BlockStateSerializer.php | 2 +- .../BlockStateStringValues.php | 2 +- .../{blockstate => block}/BlockTypeNames.php | 2 +- .../CachingBlockStateDeserializer.php | 2 +- .../CachingBlockStateSerializer.php | 2 +- .../UpgradingBlockStateDeserializer.php | 4 ++-- .../BlockObjectToBlockStateSerializer.php | 18 +++++++------- .../convert/BlockStateDeserializerHelper.php | 8 +++---- .../convert/BlockStateReader.php | 10 ++++---- .../convert/BlockStateSerializerHelper.php | 8 +++---- .../BlockStateToBlockObjectDeserializer.php | 18 +++++++------- .../convert/BlockStateWriter.php | 10 ++++---- .../upgrade/BlockStateUpgradeSchema.php | 4 ++-- .../BlockStateUpgradeSchemaBlockRemap.php | 2 +- .../upgrade/BlockStateUpgradeSchemaUtils.php | 10 ++++---- .../BlockStateUpgradeSchemaValueRemap.php | 2 +- .../upgrade/BlockStateUpgrader.php | 4 ++-- .../upgrade/LegacyBlockStateMapper.php | 4 ++-- .../model/BlockStateUpgradeSchemaModel.php | 2 +- ...BlockStateUpgradeSchemaModelBlockRemap.php | 2 +- .../model/BlockStateUpgradeSchemaModelTag.php | 2 +- ...BlockStateUpgradeSchemaModelValueRemap.php | 2 +- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 2 +- src/data/bedrock/item/SavedItemData.php | 4 ++-- src/entity/object/FallingBlock.php | 2 +- .../mcpe/convert/BlockStateDictionary.php | 2 +- .../mcpe/convert/BlockStateLookupCache.php | 2 +- .../mcpe/convert/RuntimeBlockMapping.php | 8 +++---- src/world/format/io/BaseWorldProvider.php | 4 ++-- .../format/io/GlobalBlockStateHandlers.php | 24 +++++++++---------- src/world/format/io/leveldb/LevelDB.php | 6 ++--- .../BlockSerializerDeserializerTest.php | 6 ++--- .../upgrade/BlockStateUpgraderTest.php | 4 ++-- tools/generate-blockstate-upgrade-schema.php | 10 ++++---- 41 files changed, 104 insertions(+), 104 deletions(-) rename src/data/bedrock/{blockstate => block}/BlockStateData.php (98%) rename src/data/bedrock/{blockstate => block}/BlockStateDeserializeException.php (94%) rename src/data/bedrock/{blockstate => block}/BlockStateDeserializer.php (96%) rename src/data/bedrock/{blockstate => block}/BlockStateNames.php (99%) rename src/data/bedrock/{blockstate => block}/BlockStateSerializeException.php (94%) rename src/data/bedrock/{blockstate => block}/BlockStateSerializer.php (96%) rename src/data/bedrock/{blockstate => block}/BlockStateStringValues.php (99%) rename src/data/bedrock/{blockstate => block}/BlockTypeNames.php (99%) rename src/data/bedrock/{blockstate => block}/CachingBlockStateDeserializer.php (97%) rename src/data/bedrock/{blockstate => block}/CachingBlockStateSerializer.php (96%) rename src/data/bedrock/{blockstate => block}/UpgradingBlockStateDeserializer.php (91%) rename src/data/bedrock/{blockstate => block}/convert/BlockObjectToBlockStateSerializer.php (99%) rename src/data/bedrock/{blockstate => block}/convert/BlockStateDeserializerHelper.php (98%) rename src/data/bedrock/{blockstate => block}/convert/BlockStateReader.php (97%) rename src/data/bedrock/{blockstate => block}/convert/BlockStateSerializerHelper.php (98%) rename src/data/bedrock/{blockstate => block}/convert/BlockStateToBlockObjectDeserializer.php (99%) rename src/data/bedrock/{blockstate => block}/convert/BlockStateWriter.php (96%) rename src/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgradeSchema.php (93%) rename src/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgradeSchemaBlockRemap.php (96%) rename src/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgradeSchemaUtils.php (96%) rename src/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgradeSchemaValueRemap.php (94%) rename src/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgrader.php (98%) rename src/data/bedrock/{blockstate => block}/upgrade/LegacyBlockStateMapper.php (95%) rename src/data/bedrock/{blockstate => block}/upgrade/model/BlockStateUpgradeSchemaModel.php (97%) rename src/data/bedrock/{blockstate => block}/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php (96%) rename src/data/bedrock/{blockstate => block}/upgrade/model/BlockStateUpgradeSchemaModelTag.php (93%) rename src/data/bedrock/{blockstate => block}/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php (94%) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 4a8920ade..499101bb1 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -26,7 +26,7 @@ namespace pocketmine\block\tile; use pocketmine\block\Air; use pocketmine\block\Block; use pocketmine\block\BlockFactory; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; diff --git a/src/data/bedrock/blockstate/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php similarity index 98% rename from src/data/bedrock/blockstate/BlockStateData.php rename to src/data/bedrock/block/BlockStateData.php index 0315a7f41..a5d066298 100644 --- a/src/data/bedrock/blockstate/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; diff --git a/src/data/bedrock/blockstate/BlockStateDeserializeException.php b/src/data/bedrock/block/BlockStateDeserializeException.php similarity index 94% rename from src/data/bedrock/blockstate/BlockStateDeserializeException.php rename to src/data/bedrock/block/BlockStateDeserializeException.php index 2f0701b92..fbe0186ef 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializeException.php +++ b/src/data/bedrock/block/BlockStateDeserializeException.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class BlockStateDeserializeException extends \RuntimeException{ diff --git a/src/data/bedrock/blockstate/BlockStateDeserializer.php b/src/data/bedrock/block/BlockStateDeserializer.php similarity index 96% rename from src/data/bedrock/blockstate/BlockStateDeserializer.php rename to src/data/bedrock/block/BlockStateDeserializer.php index a9af9c078..48bc5ce9f 100644 --- a/src/data/bedrock/blockstate/BlockStateDeserializer.php +++ b/src/data/bedrock/block/BlockStateDeserializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; /** * Implementors of this interface decide how a block should be deserialized and represented at runtime. This is used by diff --git a/src/data/bedrock/blockstate/BlockStateNames.php b/src/data/bedrock/block/BlockStateNames.php similarity index 99% rename from src/data/bedrock/blockstate/BlockStateNames.php rename to src/data/bedrock/block/BlockStateNames.php index e902df92d..cfd90f1c3 100644 --- a/src/data/bedrock/blockstate/BlockStateNames.php +++ b/src/data/bedrock/block/BlockStateNames.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class BlockStateNames{ diff --git a/src/data/bedrock/blockstate/BlockStateSerializeException.php b/src/data/bedrock/block/BlockStateSerializeException.php similarity index 94% rename from src/data/bedrock/blockstate/BlockStateSerializeException.php rename to src/data/bedrock/block/BlockStateSerializeException.php index 818b3cf6e..8ae1385ac 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializeException.php +++ b/src/data/bedrock/block/BlockStateSerializeException.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class BlockStateSerializeException extends \LogicException{ diff --git a/src/data/bedrock/blockstate/BlockStateSerializer.php b/src/data/bedrock/block/BlockStateSerializer.php similarity index 96% rename from src/data/bedrock/blockstate/BlockStateSerializer.php rename to src/data/bedrock/block/BlockStateSerializer.php index 8f979c069..226c11794 100644 --- a/src/data/bedrock/blockstate/BlockStateSerializer.php +++ b/src/data/bedrock/block/BlockStateSerializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; /** * Implementors of this interface decide how blockstate IDs will be represented as NBT. diff --git a/src/data/bedrock/blockstate/BlockStateStringValues.php b/src/data/bedrock/block/BlockStateStringValues.php similarity index 99% rename from src/data/bedrock/blockstate/BlockStateStringValues.php rename to src/data/bedrock/block/BlockStateStringValues.php index 334f315d0..711bd58fa 100644 --- a/src/data/bedrock/blockstate/BlockStateStringValues.php +++ b/src/data/bedrock/block/BlockStateStringValues.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class BlockStateStringValues{ diff --git a/src/data/bedrock/blockstate/BlockTypeNames.php b/src/data/bedrock/block/BlockTypeNames.php similarity index 99% rename from src/data/bedrock/blockstate/BlockTypeNames.php rename to src/data/bedrock/block/BlockTypeNames.php index dcfb2e71f..9eee5d134 100644 --- a/src/data/bedrock/blockstate/BlockTypeNames.php +++ b/src/data/bedrock/block/BlockTypeNames.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; /** * This class is generated automatically from the block palette for the current version. Do not edit it manually. diff --git a/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php b/src/data/bedrock/block/CachingBlockStateDeserializer.php similarity index 97% rename from src/data/bedrock/blockstate/CachingBlockStateDeserializer.php rename to src/data/bedrock/block/CachingBlockStateDeserializer.php index 977b09320..84edcff2f 100644 --- a/src/data/bedrock/blockstate/CachingBlockStateDeserializer.php +++ b/src/data/bedrock/block/CachingBlockStateDeserializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class CachingBlockStateDeserializer implements BlockStateDeserializer{ diff --git a/src/data/bedrock/blockstate/CachingBlockStateSerializer.php b/src/data/bedrock/block/CachingBlockStateSerializer.php similarity index 96% rename from src/data/bedrock/blockstate/CachingBlockStateSerializer.php rename to src/data/bedrock/block/CachingBlockStateSerializer.php index b310c7bb2..18003b086 100644 --- a/src/data/bedrock/blockstate/CachingBlockStateSerializer.php +++ b/src/data/bedrock/block/CachingBlockStateSerializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; final class CachingBlockStateSerializer implements BlockStateSerializer{ diff --git a/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php b/src/data/bedrock/block/UpgradingBlockStateDeserializer.php similarity index 91% rename from src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php rename to src/data/bedrock/block/UpgradingBlockStateDeserializer.php index 50dd21d73..273669b46 100644 --- a/src/data/bedrock/blockstate/UpgradingBlockStateDeserializer.php +++ b/src/data/bedrock/block/UpgradingBlockStateDeserializer.php @@ -21,9 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate; +namespace pocketmine\data\bedrock\block; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgrader; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; final class UpgradingBlockStateDeserializer implements BlockStateDeserializer{ diff --git a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php similarity index 99% rename from src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php rename to src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 42de62dca..c70b61d59 100644 --- a/src/data/bedrock/blockstate/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\ActivatorRail; use pocketmine\block\Anvil; @@ -139,14 +139,14 @@ use pocketmine\block\WoodenPressurePlate; use pocketmine\block\WoodenStairs; use pocketmine\block\WoodenTrapdoor; use pocketmine\block\Wool; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; -use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; -use pocketmine\data\bedrock\blockstate\BlockStateSerializer; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; -use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; -use pocketmine\data\bedrock\blockstate\convert\BlockStateSerializerHelper as Helper; -use pocketmine\data\bedrock\blockstate\convert\BlockStateWriter as Writer; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateNames as StateNames; +use pocketmine\data\bedrock\block\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateSerializer; +use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\block\BlockTypeNames as Ids; +use pocketmine\data\bedrock\block\convert\BlockStateSerializerHelper as Helper; +use pocketmine\data\bedrock\block\convert\BlockStateWriter as Writer; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; diff --git a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php similarity index 98% rename from src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php rename to src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index 4503edffb..b5a76394d 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Block; use pocketmine\block\BlockLegacyMetadata; @@ -47,9 +47,9 @@ use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; use pocketmine\block\WeightedPressurePlate; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/data/bedrock/blockstate/convert/BlockStateReader.php b/src/data/bedrock/block/convert/BlockStateReader.php similarity index 97% rename from src/data/bedrock/blockstate/convert/BlockStateReader.php rename to src/data/bedrock/block/convert/BlockStateReader.php index a93c1c1bd..3380721f5 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateReader.php +++ b/src/data/bedrock/block/convert/BlockStateReader.php @@ -21,16 +21,16 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\ByteTag; diff --git a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php similarity index 98% rename from src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php rename to src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 9fc53c20e..1abe7059a 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Button; use pocketmine\block\ChemistryTable; @@ -47,9 +47,9 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\Wall; use pocketmine\block\WallSign; use pocketmine\block\Wood; -use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues; -use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; +use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateStringValues; +use pocketmine\data\bedrock\block\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php similarity index 99% rename from src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php rename to src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 95f755e81..967a71412 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; @@ -32,14 +32,14 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializer; -use pocketmine\data\bedrock\blockstate\BlockStateNames as StateNames; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; -use pocketmine\data\bedrock\blockstate\BlockTypeNames as Ids; -use pocketmine\data\bedrock\blockstate\convert\BlockStateDeserializerHelper as Helper; -use pocketmine\data\bedrock\blockstate\convert\BlockStateReader as Reader; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializer; +use pocketmine\data\bedrock\block\BlockStateNames as StateNames; +use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\block\BlockTypeNames as Ids; +use pocketmine\data\bedrock\block\convert\BlockStateDeserializerHelper as Helper; +use pocketmine\data\bedrock\block\convert\BlockStateReader as Reader; use pocketmine\math\Axis; use pocketmine\math\Facing; use function array_key_exists; diff --git a/src/data/bedrock/blockstate/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php similarity index 96% rename from src/data/bedrock/blockstate/convert/BlockStateWriter.php rename to src/data/bedrock/block/convert/BlockStateWriter.php index 527a7040e..294c0c015 100644 --- a/src/data/bedrock/blockstate/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -21,17 +21,17 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\TreeType; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateNames; -use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; -use pocketmine\data\bedrock\blockstate\BlockStateStringValues as StringValues; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\nbt\tag\CompoundTag; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php similarity index 93% rename from src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php rename to src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php index 59c342ca2..44c56e6ca 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php @@ -21,9 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaValueRemap as ValueRemap; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaValueRemap as ValueRemap; use pocketmine\nbt\tag\Tag; use function count; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php similarity index 96% rename from src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php rename to src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php index 90415bbda..f3ef4ec92 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaBlockRemap.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php similarity index 96% rename from src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php rename to src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 09c215e0e..525c1c3bf 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -21,12 +21,12 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModel; -use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelBlockRemap; -use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelTag; -use pocketmine\data\bedrock\blockstate\upgrade\model\BlockStateUpgradeSchemaModelValueRemap; +use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModel; +use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelBlockRemap; +use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelTag; +use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelValueRemap; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaValueRemap.php similarity index 94% rename from src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php rename to src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaValueRemap.php index 832cff212..80e451de9 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgradeSchemaValueRemap.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaValueRemap.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\nbt\tag\Tag; diff --git a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php similarity index 98% rename from src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php rename to src/data/bedrock/block/upgrade/BlockStateUpgrader.php index 85dd3cecf..89a6d7b85 100644 --- a/src/data/bedrock/blockstate/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -21,9 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; diff --git a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php similarity index 95% rename from src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php rename to src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index 8e5d7849f..f13bd1426 100644 --- a/src/data/bedrock/blockstate/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -21,9 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\BinaryStream; diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModel.php similarity index 97% rename from src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php rename to src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModel.php index d5338ba19..1a4a14c87 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModel.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModel.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade\model; +namespace pocketmine\data\bedrock\block\upgrade\model; use function count; use function is_array; diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php similarity index 96% rename from src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php rename to src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php index 6f5ea8d01..be601d51b 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade\model; +namespace pocketmine\data\bedrock\block\upgrade\model; final class BlockStateUpgradeSchemaModelBlockRemap{ diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelTag.php similarity index 93% rename from src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php rename to src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelTag.php index 95a9aae9b..f7eaa9d8a 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelTag.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelTag.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade\model; +namespace pocketmine\data\bedrock\block\upgrade\model; final class BlockStateUpgradeSchemaModelTag{ public int $byte; diff --git a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php similarity index 94% rename from src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php rename to src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php index e163655d4..eeda33509 100644 --- a/src/data/bedrock/blockstate/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelValueRemap.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade\model; +namespace pocketmine\data\bedrock\block\upgrade\model; final class BlockStateUpgradeSchemaModelValueRemap{ /** @required */ diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 8e09cbd2e..6bbef3246 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -28,7 +28,7 @@ use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 4b6b701ff..e90b8849e 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -28,7 +28,7 @@ use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\BlockItemIdMap; -use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\item\ItemTypeIds as Ids; diff --git a/src/data/bedrock/item/SavedItemData.php b/src/data/bedrock/item/SavedItemData.php index 22ae550a0..031c5e242 100644 --- a/src/data/bedrock/item/SavedItemData.php +++ b/src/data/bedrock/item/SavedItemData.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index ccd293121..5642889b9 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -26,7 +26,7 @@ namespace pocketmine\entity\object; use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\utils\Fallable; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\EntitySizeInfo; diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index bfb18e933..48b31e67f 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use function array_map; diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index 37d58fad6..2bc5744fb 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\utils\Utils; use function array_key_first; use function count; diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index e30499968..c0373de11 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; -use pocketmine\data\bedrock\blockstate\BlockStateSerializer; -use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateSerializer; +use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index af0fe0e54..17c6a6ac7 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\world\format\io; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index bbf4d7bfd..c1bd76d56 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -23,18 +23,18 @@ declare(strict_types=1); namespace pocketmine\world\format\io; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializer; -use pocketmine\data\bedrock\blockstate\BlockStateSerializer; -use pocketmine\data\bedrock\blockstate\BlockTypeNames; -use pocketmine\data\bedrock\blockstate\CachingBlockStateDeserializer; -use pocketmine\data\bedrock\blockstate\CachingBlockStateSerializer; -use pocketmine\data\bedrock\blockstate\convert\BlockObjectToBlockStateSerializer; -use pocketmine\data\bedrock\blockstate\convert\BlockStateToBlockObjectDeserializer; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgrader; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaUtils; -use pocketmine\data\bedrock\blockstate\upgrade\LegacyBlockStateMapper; -use pocketmine\data\bedrock\blockstate\UpgradingBlockStateDeserializer; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializer; +use pocketmine\data\bedrock\block\BlockStateSerializer; +use pocketmine\data\bedrock\block\BlockTypeNames; +use pocketmine\data\bedrock\block\CachingBlockStateDeserializer; +use pocketmine\data\bedrock\block\CachingBlockStateSerializer; +use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; +use pocketmine\data\bedrock\block\convert\BlockStateToBlockObjectDeserializer; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; +use pocketmine\data\bedrock\block\upgrade\LegacyBlockStateMapper; +use pocketmine\data\bedrock\block\UpgradingBlockStateDeserializer; use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\CompoundTag; diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 3e3095518..0814655fb 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -26,9 +26,9 @@ namespace pocketmine\world\format\io\leveldb; use pocketmine\block\Block; use pocketmine\block\BlockLegacyIds; use pocketmine\data\bedrock\BiomeIds; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\BlockTypeNames; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php index 2fafb8d94..3d171bd04 100644 --- a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php @@ -21,12 +21,12 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\convert; +namespace pocketmine\data\bedrock\block\convert; use PHPUnit\Framework\TestCase; use pocketmine\block\BlockFactory; -use pocketmine\data\bedrock\blockstate\BlockStateDeserializeException; -use pocketmine\data\bedrock\blockstate\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateSerializeException; final class BlockSerializerDeserializerTest extends TestCase{ private BlockStateToBlockObjectDeserializer $deserializer; diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php index 79b08895d..14d3994e3 100644 --- a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php @@ -21,10 +21,10 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock\blockstate\upgrade; +namespace pocketmine\data\bedrock\block\upgrade; use PHPUnit\Framework\TestCase; -use pocketmine\data\bedrock\blockstate\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use const PHP_INT_MAX; diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index b6075abfd..03b768323 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\tools\generate_blockstate_upgrade_schema; -use pocketmine\data\bedrock\blockstate\BlockStateData; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchema; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaBlockRemap; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaUtils; -use pocketmine\data\bedrock\blockstate\upgrade\BlockStateUpgradeSchemaValueRemap; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchema; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaBlockRemap; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; +use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaValueRemap; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\Tag; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; From 4aa1a3da8b887ad04b07abb0304a52f562b1996d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 15:57:02 +0100 Subject: [PATCH 145/692] Moving more stuff around --- .../bedrock/{ => block/upgrade}/LegacyBlockIdToStringIdMap.php | 3 ++- src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php | 2 +- src/data/bedrock/{ => item}/BlockItemIdMap.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 2 +- src/world/format/io/GlobalBlockStateHandlers.php | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) rename src/data/bedrock/{ => block/upgrade}/LegacyBlockIdToStringIdMap.php (90%) rename src/data/bedrock/{ => item}/BlockItemIdMap.php (98%) diff --git a/src/data/bedrock/LegacyBlockIdToStringIdMap.php b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php similarity index 90% rename from src/data/bedrock/LegacyBlockIdToStringIdMap.php rename to src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php index 1c7bba7c5..0ced6361f 100644 --- a/src/data/bedrock/LegacyBlockIdToStringIdMap.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php @@ -21,8 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock; +namespace pocketmine\data\bedrock\block\upgrade; +use pocketmine\data\bedrock\LegacyToStringBidirectionalIdMap; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index f13bd1426..28b77c563 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; +use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\BinaryStream; diff --git a/src/data/bedrock/BlockItemIdMap.php b/src/data/bedrock/item/BlockItemIdMap.php similarity index 98% rename from src/data/bedrock/BlockItemIdMap.php rename to src/data/bedrock/item/BlockItemIdMap.php index 4109ec43d..5d1376aef 100644 --- a/src/data/bedrock/BlockItemIdMap.php +++ b/src/data/bedrock/item/BlockItemIdMap.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock; +namespace pocketmine\data\bedrock\item; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index e90b8849e..d5b87e110 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -27,7 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\BlockItemIdMap; +use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index c1bd76d56..3f49336fd 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -35,7 +35,7 @@ use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\LegacyBlockStateMapper; use pocketmine\data\bedrock\block\UpgradingBlockStateDeserializer; -use pocketmine\data\bedrock\LegacyBlockIdToStringIdMap; +use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\CompoundTag; use Webmozart\PathUtil\Path; From c8e318df8c8421114b42600b7a869d74c374f541 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 16:21:32 +0100 Subject: [PATCH 146/692] phpstorm stoobid --- .../convert/BlockSerializerDeserializerTest.php | 0 .../{blockstate => block}/upgrade/BlockStateUpgraderTest.php | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename tests/phpunit/data/bedrock/{blockstate => block}/convert/BlockSerializerDeserializerTest.php (100%) rename tests/phpunit/data/bedrock/{blockstate => block}/upgrade/BlockStateUpgraderTest.php (100%) diff --git a/tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php similarity index 100% rename from tests/phpunit/data/bedrock/blockstate/convert/BlockSerializerDeserializerTest.php rename to tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php diff --git a/tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php similarity index 100% rename from tests/phpunit/data/bedrock/blockstate/upgrade/BlockStateUpgraderTest.php rename to tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php From 301b0aba825e4e7979b2582b3c967db43abdd50c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Jun 2022 16:22:35 +0100 Subject: [PATCH 147/692] Allow Item (de)serializer to accept dynamic BlockState(De)Serializer --- src/data/bedrock/item/ItemDeserializer.php | 10 +++++----- src/data/bedrock/item/ItemSerializer.php | 15 +++++++++------ src/network/mcpe/convert/ItemTranslator.php | 5 +++-- .../item/ItemSerializerDeserializerTest.php | 5 +++-- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 6bbef3246..42a42ce94 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -29,6 +29,7 @@ use pocketmine\block\utils\SkullType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; @@ -43,16 +44,15 @@ use pocketmine\utils\SingletonTrait; use pocketmine\world\format\io\GlobalBlockStateHandlers; final class ItemDeserializer{ - - use SingletonTrait; - /** * @var \Closure[] * @phpstan-var array */ private array $deserializers = []; - public function __construct(){ + public function __construct( + private BlockStateDeserializer $blockStateDeserializer + ){ $this->registerDeserializers(); } @@ -70,7 +70,7 @@ final class ItemDeserializer{ if(($blockData = $data->getBlock()) !== null){ //TODO: this is rough duct tape; we need a better way to deal with this try{ - $block = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockData); + $block = $this->blockStateDeserializer->deserialize($blockData); }catch(BlockStateDeserializeException $e){ throw new ItemTypeDeserializeException("Failed to deserialize item data: " . $e->getMessage(), 0, $e); } diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index d5b87e110..49cf012fc 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -27,6 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\VanillaBlocks as Blocks; +use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\CompoundTypeIds; @@ -61,7 +62,9 @@ final class ItemSerializer{ */ private array $blockItemSerializers = []; - public function __construct(){ + public function __construct( + private BlockStateSerializer $blockStateSerializer + ){ $this->registerSerializers(); } @@ -170,7 +173,7 @@ final class ItemSerializer{ $serializer = $locatedSerializer; $data = $serializer($block); }else{ - $data = self::standardBlock($block); + $data = $this->standardBlock($block); } return $data; @@ -179,9 +182,9 @@ final class ItemSerializer{ /** * @throws ItemTypeSerializeException */ - private static function standardBlock(Block $block) : Data{ + private function standardBlock(Block $block) : Data{ try{ - $blockStateData = GlobalBlockStateHandlers::getSerializer()->serialize($block->getFullId()); + $blockStateData = $this->blockStateSerializer->serialize($block->getFullId()); }catch(BlockStateSerializeException $e){ throw new ItemTypeSerializeException($e->getMessage(), 0, $e); } @@ -261,8 +264,8 @@ final class ItemSerializer{ //these are encoded as regular blocks, but they have to be accounted for explicitly since they don't use ItemBlock //Bamboo->getBlock() returns BambooSapling :( - $this->map(Items::BAMBOO(), fn() => self::standardBlock(Blocks::BAMBOO())); - $this->map(Items::CORAL_FAN(), fn(CoralFan $item) => self::standardBlock($item->getBlock())); + $this->map(Items::BAMBOO(), fn() => $this->standardBlock(Blocks::BAMBOO())); + $this->map(Items::CORAL_FAN(), fn(CoralFan $item) => $this->standardBlock($item->getBlock())); $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 4243971c8..6ada7f372 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -32,6 +32,7 @@ use pocketmine\item\Item; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; +use pocketmine\world\format\io\GlobalBlockStateHandlers; /** * This class handles translation between network item ID+metadata to PocketMine-MP internal ID+metadata and vice versa. @@ -45,8 +46,8 @@ final class ItemTranslator{ return new self( GlobalItemTypeDictionary::getInstance()->getDictionary(), RuntimeBlockMapping::getInstance()->getBlockStateDictionary(), - new ItemSerializer(), - new ItemDeserializer() + new ItemSerializer(GlobalBlockStateHandlers::getSerializer()), + new ItemDeserializer(GlobalBlockStateHandlers::getDeserializer()) ); } diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index cc73321e7..ebc7dafc8 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -26,6 +26,7 @@ namespace pocketmine\data\bedrock\item; use PHPUnit\Framework\TestCase; use pocketmine\block\BlockFactory; use pocketmine\item\ItemFactory; +use pocketmine\world\format\io\GlobalBlockStateHandlers; final class ItemSerializerDeserializerTest extends TestCase{ @@ -33,8 +34,8 @@ final class ItemSerializerDeserializerTest extends TestCase{ private ItemSerializer $serializer; public function setUp() : void{ - $this->deserializer = new ItemDeserializer(); - $this->serializer = new ItemSerializer(); + $this->deserializer = new ItemDeserializer(GlobalBlockStateHandlers::getDeserializer()); + $this->serializer = new ItemSerializer(GlobalBlockStateHandlers::getSerializer()); } public function testAllVanillaItemsSerializableAndDeserializable() : void{ From 1533fcf8f6dc6b8d84796b52c80d1b32a89cf7e6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 16:45:02 +0100 Subject: [PATCH 148/692] Separate block legacy data upgrading from block deserialization this commit provides a central place where all block data can go to be upgraded to the latest version (currently 1.19), irrespective of how old it is. Previously I had issues during debugging, because it wasn't possible to just upgrade a block without deserializing it into a Block object, which isn't currently supported for many blocks. This commit solves that problem by separating the upgrading from the deserialization. --- src/block/tile/FlowerPot.php | 6 +- .../block/UpgradingBlockStateDeserializer.php | 40 ------------- src/entity/object/FallingBlock.php | 15 ++--- src/world/format/io/BaseWorldProvider.php | 4 +- .../format/io/GlobalBlockStateHandlers.php | 57 ++++++------------- src/world/format/io/leveldb/LevelDB.php | 12 +++- 6 files changed, 38 insertions(+), 96 deletions(-) delete mode 100644 src/data/bedrock/block/UpgradingBlockStateDeserializer.php diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 499101bb1..2b39731ed 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -46,11 +46,13 @@ class FlowerPot extends Spawnable{ public function readSaveData(CompoundTag $nbt) : void{ $blockStateData = null; + + $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); if(($itemIdTag = $nbt->getTag(self::TAG_ITEM)) instanceof ShortTag && ($itemMetaTag = $nbt->getTag(self::TAG_ITEM_DATA)) instanceof IntTag){ - $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromIntIdMeta($itemIdTag->getValue(), $itemMetaTag->getValue()); + $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($itemIdTag->getValue(), $itemMetaTag->getValue()); }elseif(($plantBlockTag = $nbt->getCompoundTag(self::TAG_PLANT_BLOCK)) !== null){ try{ - $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($plantBlockTag); + $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($plantBlockTag); }catch(BlockStateDeserializeException $e){ throw new SavedDataLoadingException("Error loading " . self::TAG_PLANT_BLOCK . " tag for flower pot: " . $e->getMessage(), 0, $e); } diff --git a/src/data/bedrock/block/UpgradingBlockStateDeserializer.php b/src/data/bedrock/block/UpgradingBlockStateDeserializer.php deleted file mode 100644 index 273669b46..000000000 --- a/src/data/bedrock/block/UpgradingBlockStateDeserializer.php +++ /dev/null @@ -1,40 +0,0 @@ -realDeserializer->deserialize($this->blockStateUpgrader->upgrade($stateData)); - } - - public function getRealDeserializer() : BlockStateDeserializer{ return $this->realDeserializer; } -} diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 5642889b9..22f198167 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -65,12 +65,9 @@ class FallingBlock extends Entity{ public static function parseBlockNBT(BlockFactory $factory, CompoundTag $nbt) : Block{ //TODO: 1.8+ save format + $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); if(($fallingBlockTag = $nbt->getCompoundTag(self::TAG_FALLING_BLOCK)) !== null){ - try{ - $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($fallingBlockTag); - }catch(BlockStateDeserializeException $e){ - throw new SavedDataLoadingException($e->getMessage(), 0, $e); - } + $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($fallingBlockTag); }else{ if(($tileIdTag = $nbt->getTag("TileID")) instanceof IntTag){ $blockId = $tileIdTag->getValue(); @@ -81,10 +78,10 @@ class FallingBlock extends Entity{ } $damage = $nbt->getByte("Data", 0); - $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromIntIdMeta($blockId, $damage); - if($blockStateData === null){ - throw new SavedDataLoadingException("Invalid legacy falling block"); - } + $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($blockId, $damage); + } + if($blockStateData === null){ + throw new SavedDataLoadingException("Invalid legacy falling block"); } try{ diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index 17c6a6ac7..23d1ba269 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -56,11 +56,11 @@ abstract class BaseWorldProvider implements WorldProvider{ //TODO: this should be dependency-injected so it can be replaced, but that would break BC //also, we want it to be lazy-loaded ... - $legacyBlockStateMapper = GlobalBlockStateHandlers::getLegacyBlockStateMapper(); + $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); $newPalette = []; foreach($palette as $k => $legacyIdMeta){ - $newStateData = $legacyBlockStateMapper->fromIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); + $newStateData = $blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); if($newStateData === null){ //TODO: remember data for unknown states so we can implement them later $newStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 3f49336fd..42e4b9c26 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -26,18 +26,16 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\block\BlockStateSerializer; -use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\data\bedrock\block\CachingBlockStateDeserializer; use pocketmine\data\bedrock\block\CachingBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockStateToBlockObjectDeserializer; +use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; -use pocketmine\data\bedrock\block\upgrade\LegacyBlockStateMapper; -use pocketmine\data\bedrock\block\UpgradingBlockStateDeserializer; use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; +use pocketmine\data\bedrock\block\upgrade\LegacyBlockStateMapper; use pocketmine\errorhandler\ErrorToExceptionHandler; -use pocketmine\nbt\tag\CompoundTag; use Webmozart\PathUtil\Path; use function file_get_contents; use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; @@ -54,50 +52,29 @@ final class GlobalBlockStateHandlers{ private static ?BlockStateDeserializer $blockStateDeserializer; - private static ?LegacyBlockStateMapper $legacyBlockStateMapper; + private static ?BlockDataUpgrader $blockDataUpgrader; public static function getDeserializer() : BlockStateDeserializer{ - return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer( - new UpgradingBlockStateDeserializer( - new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( - Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), - BlockStateData::CURRENT_VERSION - )), - new BlockStateToBlockObjectDeserializer() - ) - ); + return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer(new BlockStateToBlockObjectDeserializer()); } public static function getSerializer() : BlockStateSerializer{ return self::$blockStateSerializer ??= new CachingBlockStateSerializer(new BlockObjectToBlockStateSerializer()); } - public static function getLegacyBlockStateMapper() : LegacyBlockStateMapper{ - return self::$legacyBlockStateMapper ??= LegacyBlockStateMapper::loadFromString( - ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( - BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, - '1.12.0_to_1.18.10_blockstate_map.bin' - ))), - LegacyBlockIdToStringIdMap::getInstance() + public static function getUpgrader() : BlockDataUpgrader{ + return self::$blockDataUpgrader ??= new BlockDataUpgrader( + LegacyBlockStateMapper::loadFromString( + ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( + BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, + '1.12.0_to_1.18.10_blockstate_map.bin' + ))), + LegacyBlockIdToStringIdMap::getInstance() + ), + new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( + Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), + BlockStateData::CURRENT_VERSION + )) ); } - - public static function nbtToBlockStateData(CompoundTag $tag) : BlockStateData{ - if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ - //Legacy (pre-1.13) blockstate - upgrade it to a version we understand - $id = $tag->getString("name"); - $data = $tag->getShort("val"); - - $blockStateData = GlobalBlockStateHandlers::getLegacyBlockStateMapper()->fromStringIdMeta($id, $data); - if($blockStateData === null){ - //unknown block, invalid ID - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); - } - }else{ - //Modern (post-1.13) blockstate - $blockStateData = BlockStateData::fromNbt($tag); - } - - return $blockStateData; - } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 0814655fb..263311413 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -160,12 +160,18 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $paletteSize = $bitsPerBlock === 0 ? 1 : $stream->getLInt(); + $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); for($i = 0; $i < $paletteSize; ++$i){ try{ $offset = $stream->getOffset(); - $blockStateData = GlobalBlockStateHandlers::nbtToBlockStateData($nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag()); + $blockStateNbt = $nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag(); + $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + if($blockStateData === null){ + //upgrading blockstates should always succeed, regardless of whether they've been implemented or not + throw new BlockStateDeserializeException("Invalid or improperly mapped legacy blockstate: " . $blockStateNbt->toString()); + } $stream->setOffset($offset); try{ @@ -210,7 +216,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $binaryStream = new BinaryStream($extraRawData); $count = $binaryStream->getLInt(); - $legacyMapper = GlobalBlockStateHandlers::getLegacyBlockStateMapper(); + $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); for($i = 0; $i < $count; ++$i){ $key = $binaryStream->getLInt(); @@ -223,7 +229,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockId = $value & 0xff; $blockData = ($value >> 8) & 0xf; - $blockStateData = $legacyMapper->fromIntIdMeta($blockId, $blockData); + $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($blockId, $blockData); if($blockStateData === null){ //TODO: we could preserve this in case it's supported in the future, but this was historically only //used for grass anyway, so we probably don't need to care From 0da174842e87501968a4f45500634f0412f2141f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 16:46:09 +0100 Subject: [PATCH 149/692] Fix build --- src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php | 1 - src/data/bedrock/item/ItemDeserializer.php | 2 -- src/data/bedrock/item/ItemSerializer.php | 4 +--- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index 28b77c563..fc015b358 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\BinaryStream; diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 42a42ce94..8abfb24dc 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -40,8 +40,6 @@ use pocketmine\item\Item; use pocketmine\item\PotionType; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; -use pocketmine\utils\SingletonTrait; -use pocketmine\world\format\io\GlobalBlockStateHandlers; final class ItemDeserializer{ /** diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 49cf012fc..97910abc0 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -27,9 +27,8 @@ use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\block\BlockStateSerializer; -use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\data\bedrock\block\BlockStateSerializeException; +use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\item\ItemTypeIds as Ids; @@ -42,7 +41,6 @@ use pocketmine\item\ItemBlock; use pocketmine\item\PotionType; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; -use pocketmine\world\format\io\GlobalBlockStateHandlers; use function class_parents; use function get_class; From d8bba6ed3decc7388c0fad650164716368511259 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 16:55:50 +0100 Subject: [PATCH 150/692] git add -p bites again --- .../block/upgrade/BlockDataUpgrader.php | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/data/bedrock/block/upgrade/BlockDataUpgrader.php diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php new file mode 100644 index 000000000..63faa3532 --- /dev/null +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -0,0 +1,63 @@ +legacyBlockStateMapper->fromIntIdMeta($id, $meta); + } + + public function upgradeStringIdMeta(string $id, int $meta) : ?BlockStateData{ + return $this->legacyBlockStateMapper->fromStringIdMeta($id, $meta); + } + + public function upgradeBlockStateNbt(CompoundTag $tag) : ?BlockStateData{ + if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ + //Legacy (pre-1.13) blockstate - upgrade it to a version we understand + $id = $tag->getString("name"); + $data = $tag->getShort("val"); + + $blockStateData = $this->upgradeStringIdMeta($id, $data); + if($blockStateData === null){ + //unknown block, invalid ID + $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + } + }else{ + //Modern (post-1.13) blockstate + $blockStateData = BlockStateData::fromNbt($tag); + } + + return $this->blockStateUpgrader->upgrade($blockStateData); + } +} From 5ed75731f2c28c5c119ffd7b31b85d46f9656908 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 19:02:16 +0100 Subject: [PATCH 151/692] First (untested) look at hooking all the itemstack serializer/deserializer stuff together this should address #5063 and related issues, if it works correctly. --- src/data/bedrock/item/SavedItemData.php | 47 +---- src/data/bedrock/item/SavedItemStackData.php | 87 +++++++++ .../bedrock/item/upgrade/ItemDataUpgrader.php | 174 ++++++++++++++++++ .../item/upgrade/ItemIdMetaUpgradeSchema.php | 49 +++++ .../upgrade/ItemIdMetaUpgradeSchemaUtils.php | 98 ++++++++++ .../upgrade}/LegacyItemIdToStringIdMap.php | 3 +- .../item/upgrade/R12ItemIdToBlockIdMap.php | 87 +++++++++ .../model/ItemIdMetaUpgradeSchemaModel.php | 39 ++++ src/item/Item.php | 56 ++---- .../format/io/GlobalItemDataHandlers.php | 59 ++++++ 10 files changed, 613 insertions(+), 86 deletions(-) create mode 100644 src/data/bedrock/item/SavedItemStackData.php create mode 100644 src/data/bedrock/item/upgrade/ItemDataUpgrader.php create mode 100644 src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php create mode 100644 src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php rename src/data/bedrock/{ => item/upgrade}/LegacyItemIdToStringIdMap.php (90%) create mode 100644 src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php create mode 100644 src/data/bedrock/item/upgrade/model/ItemIdMetaUpgradeSchemaModel.php create mode 100644 src/world/format/io/GlobalItemDataHandlers.php diff --git a/src/data/bedrock/item/SavedItemData.php b/src/data/bedrock/item/SavedItemData.php index 031c5e242..fa631e4e7 100644 --- a/src/data/bedrock/item/SavedItemData.php +++ b/src/data/bedrock/item/SavedItemData.php @@ -24,20 +24,14 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\block\BlockStateDeserializeException; -use pocketmine\data\SavedDataLoadingException; -use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\nbt\tag\StringTag; -use function str_starts_with; final class SavedItemData{ public const TAG_NAME = "Name"; - private const TAG_DAMAGE = "Damage"; + public const TAG_DAMAGE = "Damage"; public const TAG_BLOCK = "Block"; - private const TAG_TAG = "tag"; - private const TAG_ITEM_IDENTIFIER = "ItemIdentifier"; + public const TAG_TAG = "tag"; public function __construct( private string $name, @@ -54,43 +48,6 @@ final class SavedItemData{ public function getTag() : ?CompoundTag{ return $this->tag; } - public static function fromNbt(CompoundTag $tag) : self{ - try{ - //required - $name = $tag->getString(self::TAG_NAME); - $damage = $tag->getShort(self::TAG_DAMAGE); - - //optional - $blockStateNbt = $tag->getCompoundTag(self::TAG_BLOCK); - $extraData = $tag->getCompoundTag(self::TAG_TAG); - }catch(NbtException $e){ - throw new SavedDataLoadingException($e->getMessage(), 0, $e); - } - - //TODO: this hack probably doesn't belong here; it's necessary to deal with spawn eggs from before 1.16.100 - if( - $name === ItemTypeIds::SPAWN_EGG && - ($itemIdentifierTag = $tag->getTag(self::TAG_ITEM_IDENTIFIER)) instanceof StringTag && - str_starts_with($itemIdentifierTag->getValue(), "minecraft:") - ){ - \GlobalLogger::get()->debug("Handling legacy spawn egg for " . $itemIdentifierTag->getValue()); - $name = $itemIdentifierTag->getValue() . "_spawn_egg"; - } - - try{ - $blockStateData = $blockStateNbt !== null ? BlockStateData::fromNbt($blockStateNbt) : null; - }catch(BlockStateDeserializeException $e){ - throw new SavedDataLoadingException("Failed to load item saved data: " . $e->getMessage(), 0, $e); - } - - return new self( - $name, - $damage, - $blockStateData, - $extraData - ); - } - public function toNbt() : CompoundTag{ $result = CompoundTag::create(); $result->setString(self::TAG_NAME, $this->name); diff --git a/src/data/bedrock/item/SavedItemStackData.php b/src/data/bedrock/item/SavedItemStackData.php new file mode 100644 index 000000000..b8ad648f0 --- /dev/null +++ b/src/data/bedrock/item/SavedItemStackData.php @@ -0,0 +1,87 @@ +typeData; } + + public function getCount() : int{ return $this->count; } + + public function getSlot() : ?int{ return $this->slot; } + + public function getWasPickedUp() : ?bool{ return $this->wasPickedUp; } + + /** @return string[] */ + public function getCanPlaceOn() : array{ return $this->canPlaceOn; } + + /** @return string[] */ + public function getCanDestroy() : array{ return $this->canDestroy; } + + public function toNbt() : CompoundTag{ + $result = CompoundTag::create(); + $result->setByte(self::TAG_COUNT, Binary::signByte($this->count)); + + if($this->slot !== null){ + $result->setByte(self::TAG_SLOT, Binary::signByte($this->slot)); + } + if($this->wasPickedUp !== null){ + $result->setByte(self::TAG_WAS_PICKED_UP, $this->wasPickedUp ? 1 : 0); + } + if(count($this->canPlaceOn) !== 0){ + $result->setTag(self::TAG_CAN_PLACE_ON, new ListTag(array_map(fn(string $s) => new StringTag($s), $this->canPlaceOn))); + } + if(count($this->canDestroy) !== 0){ + $result->setTag(self::TAG_CAN_DESTROY, new ListTag(array_map(fn(string $s) => new StringTag($s), $this->canDestroy))); + } + + return $result->merge($this->typeData->toNbt()); + } +} diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php new file mode 100644 index 000000000..e55513c9a --- /dev/null +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -0,0 +1,174 @@ + + */ + private array $idMetaUpgradeSchemas = []; + + /** + * @param ItemIdMetaUpgradeSchema[] $idMetaUpgradeSchemas + * @phpstan-param array $idMetaUpgradeSchemas + */ + public function __construct( + private LegacyItemIdToStringIdMap $legacyIntToStringIdMap, + private R12ItemIdToBlockIdMap $r12ItemIdToBlockIdMap, + private BlockDataUpgrader $blockDataUpgrader, + array $idMetaUpgradeSchemas + ){ + foreach($idMetaUpgradeSchemas as $schema){ + $this->addIdMetaUpgradeSchema($schema); + } + } + + public function addIdMetaUpgradeSchema(ItemIdMetaUpgradeSchema $schema) : void{ + if(isset($this->idMetaUpgradeSchemas[$schema->getPriority()])){ + throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getPriority()); + } + $this->idMetaUpgradeSchemas[$schema->getPriority()] = $schema; + ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); + } + + private function upgradeItemTypeNbt(CompoundTag $tag) : SavedItemData{ + if(($nameIdTag = $tag->getTag(SavedItemData::TAG_NAME)) instanceof StringTag){ + //Bedrock 1.6+ + + $rawNameId = $nameIdTag->getValue(); + }elseif(($idTag = $tag->getTag(self::TAG_LEGACY_ID)) instanceof ShortTag){ + //Bedrock <= 1.5, PM <= 1.12 + + $rawNameId = $this->legacyIntToStringIdMap->legacyToString($idTag->getValue()); + if($rawNameId === null){ + throw new SavedDataLoadingException("Legacy item ID " . $idTag->getValue() . " doesn't map to any modern string ID"); + } + }elseif($idTag instanceof StringTag){ + //PC item save format - best we can do here is hope the string IDs match + + $rawNameId = $idTag->getValue(); + }else{ + throw new SavedDataLoadingException("Item stack data should have either a name ID or a legacy ID"); + } + + $meta = $tag->getShort(SavedItemData::TAG_DAMAGE, 0); + + $blockStateNbt = $tag->getCompoundTag(SavedItemData::TAG_BLOCK); + if($blockStateNbt !== null){ + $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + }elseif(($r12BlockId = $this->r12ItemIdToBlockIdMap->itemIdToBlockId($rawNameId)) !== null){ + //this is a legacy blockitem represented by ID + meta + $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + }else{ + //probably a standard item + $blockStateData = null; + } + + [$newNameId, $newMeta] = $this->upgradeItemStringIdMeta($rawNameId, $meta); + + //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? + + return new SavedItemData($newNameId, $newMeta, $blockStateData, $tag->getCompoundTag(SavedItemData::TAG_TAG)); + } + + /** + * @return string[] + */ + private static function deserializeListOfStrings(?ListTag $list, string $tagName) : array{ + if($list === null){ + return []; + } + if($list->getTagType() !== NBT::TAG_String){ + throw new SavedDataLoadingException("Unexpected type of list for tag '$tagName', expected TAG_String"); + } + $result = []; + foreach($list as $item){ + assert($item instanceof StringTag); + $result[] = $item->getValue(); + } + + return $result; + } + + public function upgradeItemStackNbt(CompoundTag $tag) : SavedItemStackData{ + $savedItemData = $this->upgradeItemTypeNbt($tag); + try{ + //required + $count = Binary::unsignByte($tag->getByte(SavedItemStackData::TAG_COUNT)); + + //optional + $slot = ($slotTag = $tag->getTag(SavedItemStackData::TAG_SLOT)) instanceof ByteTag ? Binary::unsignByte($slotTag->getValue()) : null; + $wasPickedUp = ($wasPickedUpTag = $tag->getTag(SavedItemStackData::TAG_WAS_PICKED_UP)) instanceof ByteTag ? $wasPickedUpTag->getValue() : null; + $canPlaceOnList = $tag->getListTag(SavedItemStackData::TAG_CAN_PLACE_ON); + $canDestroyList = $tag->getListTag(SavedItemStackData::TAG_CAN_DESTROY); + }catch(NbtException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + + return new SavedItemStackData( + $savedItemData, + $count, + $slot, + $wasPickedUp !== 0, + self::deserializeListOfStrings($canPlaceOnList, SavedItemStackData::TAG_CAN_PLACE_ON), + self::deserializeListOfStrings($canDestroyList, SavedItemStackData::TAG_CAN_DESTROY) + ); + } + + /** + * @phpstan-return array{string, int} + */ + public function upgradeItemStringIdMeta(string $id, int $meta) : array{ + $newId = $id; + $newMeta = $meta; + foreach($this->idMetaUpgradeSchemas as $schema){ + if(($remappedMetaId = $schema->remapMeta($newId, $newMeta)) !== null){ + $newId = $remappedMetaId; + $newMeta = 0; + }elseif(($renamedId = $schema->renameId($newId)) !== null){ + $newId = $renamedId; + } + } + + return [$id, $meta]; + } +} diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php new file mode 100644 index 000000000..f0b398acb --- /dev/null +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php @@ -0,0 +1,49 @@ + $renamedIds + * @phpstan-param array> $remappedMetas + */ + public function __construct( + private array $renamedIds, + private array $remappedMetas, + private int $priority + ){} + + public function getPriority() : int{ return $this->priority; } + + public function renameId(string $id) : ?string{ + return $this->renamedIds[$id] ?? null; + } + + public function remapMeta(string $id, int $meta) : ?string{ + return $this->remappedMetas[$id][$meta] ?? null; + } +} diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php new file mode 100644 index 000000000..9e95bf4a2 --- /dev/null +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php @@ -0,0 +1,98 @@ + + */ + public static function loadSchemas(string $path) : array{ + $iterator = new \RegexIterator( + new \FilesystemIterator( + $path, + \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS + ), + '/\/(\d{4}).*\.json$/', + \RegexIterator::GET_MATCH + ); + + $result = []; + + /** @var string[] $matches */ + foreach($iterator as $matches){ + $filename = $matches[0]; + $priority = (int) $matches[1]; + + $fullPath = Path::join($path, $filename); + + try{ + $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); + }catch(\ErrorException $e){ + throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); + } + + try{ + $schema = self::loadSchemaFromString($raw, $priority); + }catch(\RuntimeException $e){ + throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); + } + + $result[$priority] = $schema; + } + + ksort($result, SORT_NUMERIC); + return $result; + } + + public static function loadSchemaFromString(string $raw, int $priority) : ItemIdMetaUpgradeSchema{ + try{ + $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); + }catch(\JsonException $e){ + throw new \RuntimeException($e->getMessage(), 0, $e); + } + if(!is_object($json)){ + throw new \RuntimeException("Unexpected root type of schema file " . gettype($json) . ", expected object"); + } + + $jsonMapper = new \JsonMapper(); + try{ + $model = $jsonMapper->map($json, new ItemIdMetaUpgradeSchemaModel()); + }catch(\JsonMapper_Exception $e){ + throw new \RuntimeException($e->getMessage(), 0, $e); + } + + return new ItemIdMetaUpgradeSchema($model->renamedIds, $model->remappedMetas, $priority); + } +} diff --git a/src/data/bedrock/LegacyItemIdToStringIdMap.php b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php similarity index 90% rename from src/data/bedrock/LegacyItemIdToStringIdMap.php rename to src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php index 587a09fe0..49b1a2271 100644 --- a/src/data/bedrock/LegacyItemIdToStringIdMap.php +++ b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php @@ -21,8 +21,9 @@ declare(strict_types=1); -namespace pocketmine\data\bedrock; +namespace pocketmine\data\bedrock\item\upgrade; +use pocketmine\data\bedrock\LegacyToStringBidirectionalIdMap; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php new file mode 100644 index 000000000..723e8d993 --- /dev/null +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -0,0 +1,87 @@ + $blockId){ + if(!is_string($itemId)){ + throw new AssumptionFailedError("Invalid blockitem ID mapping table, expected string as key"); + } + if(!is_string($blockId)){ + throw new AssumptionFailedError("Invalid blockitem ID mapping table, expected string as value"); + } + $builtMap[$itemId] = $blockId; + } + + return new self($builtMap); + } + + /** + * @param string[] $itemToBlock + * @phpstan-param array $itemToBlock + */ + public function __construct(private array $itemToBlock){} + + public function itemIdToBlockId(string $itemId) : ?string{ + return $this->itemToBlock[$itemId] ?? null; + } + + public function blockIdToItemId(string $blockId) : ?string{ + //we don't need this for any functionality, so we're not concerned about performance here + //however, it might be nice to have for debugging + $itemId = array_search($blockId, $this->itemToBlock, true); + return $itemId !== false ? $itemId : null; + } +} diff --git a/src/data/bedrock/item/upgrade/model/ItemIdMetaUpgradeSchemaModel.php b/src/data/bedrock/item/upgrade/model/ItemIdMetaUpgradeSchemaModel.php new file mode 100644 index 000000000..5765c5acf --- /dev/null +++ b/src/data/bedrock/item/upgrade/model/ItemIdMetaUpgradeSchemaModel.php @@ -0,0 +1,39 @@ + + */ + public array $renamedIds = []; + + /** + * @var string[][] + * @phpstan-var array> + */ + public array $remappedMetas = []; +} diff --git a/src/item/Item.php b/src/item/Item.php index 775ae3eb0..dd5e088fb 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -31,6 +31,7 @@ use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; +use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\item\enchantment\EnchantmentInstance; @@ -41,16 +42,14 @@ use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; -use pocketmine\nbt\tag\ShortTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\player\Player; -use pocketmine\utils\Binary; use pocketmine\utils\Utils; +use pocketmine\world\format\io\GlobalItemDataHandlers; use function base64_decode; use function base64_encode; use function count; -use function get_class; use function gettype; use function hex2bin; use function is_string; @@ -648,21 +647,16 @@ class Item implements \JsonSerializable{ * @param int $slot optional, the inventory slot of the item */ public function nbtSerialize(int $slot = -1) : CompoundTag{ - $result = CompoundTag::create() - ->setShort("id", $this->getId()) - ->setByte("Count", Binary::signByte($this->count)) - ->setShort("Damage", $this->getMeta()); + $typeData = GlobalItemDataHandlers::getSerializer()->serialize($this); - $tag = $this->getNamedTag(); - if($tag->count() > 0){ - $result->setTag("tag", $tag); - } - - if($slot !== -1){ - $result->setByte("Slot", $slot); - } - - return $result; + return (new SavedItemStackData( + $typeData, + $this->count, + $slot !== -1 ? $slot : null, + null, + [], //we currently represent canDestroy and canPlaceOn via NBT, like PC + [] + ))->toNbt(); } /** @@ -671,31 +665,13 @@ class Item implements \JsonSerializable{ * @throws SavedDataLoadingException */ public static function nbtDeserialize(CompoundTag $tag) : Item{ - if($tag->getTag("id") === null || $tag->getTag("Count") === null){ - return VanillaItems::AIR(); - } + $itemData = GlobalItemDataHandlers::getUpgrader()->upgradeItemStackNbt($tag); - $count = Binary::unsignByte($tag->getByte("Count")); - $meta = $tag->getShort("Damage", 0); + $item = GlobalItemDataHandlers::getDeserializer()->deserialize($itemData->getTypeData()); - $idTag = $tag->getTag("id"); - if($idTag instanceof ShortTag){ - $item = ItemFactory::getInstance()->get($idTag->getValue(), $meta, $count); - }elseif($idTag instanceof StringTag){ //PC item save format - try{ - $item = LegacyStringToItemParser::getInstance()->parse($idTag->getValue() . ":$meta"); - }catch(LegacyStringToItemParserException $e){ - //TODO: improve error handling - return VanillaItems::AIR(); - } - $item->setCount($count); - }else{ - throw new SavedDataLoadingException("Item CompoundTag ID must be an instance of StringTag or ShortTag, " . get_class($idTag) . " given"); - } - - $itemNBT = $tag->getCompoundTag("tag"); - if($itemNBT !== null){ - $item->setNamedTag(clone $itemNBT); + $item->setCount($itemData->getCount()); + if(($tagTag = $itemData->getTypeData()->getTag()) !== null){ + $item->setNamedTag(clone $tagTag); } return $item; diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php new file mode 100644 index 000000000..850a679a1 --- /dev/null +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -0,0 +1,59 @@ + Date: Thu, 23 Jun 2022 19:34:08 +0100 Subject: [PATCH 152/692] fix a bunch of bugs --- src/block/tile/ContainerTrait.php | 9 ++++++- .../block/upgrade/BlockDataUpgrader.php | 2 ++ .../bedrock/item/upgrade/ItemDataUpgrader.php | 14 +++++++++- .../item/upgrade/ItemIdMetaUpgradeSchema.php | 4 +-- .../item/upgrade/R12ItemIdToBlockIdMap.php | 26 ++++++++++++++----- src/item/Item.php | 8 ++++-- 6 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/block/tile/ContainerTrait.php b/src/block/tile/ContainerTrait.php index 1274614d0..cbbc98843 100644 --- a/src/block/tile/ContainerTrait.php +++ b/src/block/tile/ContainerTrait.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\tile; +use pocketmine\data\SavedDataLoadingException; use pocketmine\inventory\Inventory; use pocketmine\item\Item; use pocketmine\nbt\NBT; @@ -49,7 +50,13 @@ trait ContainerTrait{ $newContents = []; /** @var CompoundTag $itemNBT */ foreach($inventoryTag as $itemNBT){ - $newContents[$itemNBT->getByte("Slot")] = Item::nbtDeserialize($itemNBT); + try{ + $newContents[$itemNBT->getByte("Slot")] = Item::nbtDeserialize($itemNBT); + }catch(SavedDataLoadingException $e){ + //TODO: not the best solution + \GlobalLogger::get()->logException($e); + continue; + } } $inventory->setContents($newContents); diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index 63faa3532..a10c30d7e 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -60,4 +60,6 @@ final class BlockDataUpgrader{ return $this->blockStateUpgrader->upgrade($blockStateData); } + + public function getBlockStateUpgrader() : BlockStateUpgrader{ return $this->blockStateUpgrader; } } diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index e55513c9a..ba42e4039 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -70,6 +70,9 @@ final class ItemDataUpgrader{ ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); } + /** + * @throws SavedDataLoadingException + */ private function upgradeItemTypeNbt(CompoundTag $tag) : SavedItemData{ if(($nameIdTag = $tag->getTag(SavedItemData::TAG_NAME)) instanceof StringTag){ //Bedrock 1.6+ @@ -98,6 +101,11 @@ final class ItemDataUpgrader{ }elseif(($r12BlockId = $this->r12ItemIdToBlockIdMap->itemIdToBlockId($rawNameId)) !== null){ //this is a legacy blockitem represented by ID + meta $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + if($blockStateData === null){ + throw new SavedDataLoadingException("Expected a blockstate to be associated with this block"); + } + //the block data upgrader returns states from 1.18.10, which need to be updated to the current version the usual way + $blockStateData = $this->blockDataUpgrader->getBlockStateUpgrader()->upgrade($blockStateData); }else{ //probably a standard item $blockStateData = null; @@ -112,6 +120,7 @@ final class ItemDataUpgrader{ /** * @return string[] + * @throws SavedDataLoadingException */ private static function deserializeListOfStrings(?ListTag $list, string $tagName) : array{ if($list === null){ @@ -129,6 +138,9 @@ final class ItemDataUpgrader{ return $result; } + /** + * @throws SavedDataLoadingException + */ public function upgradeItemStackNbt(CompoundTag $tag) : SavedItemStackData{ $savedItemData = $this->upgradeItemTypeNbt($tag); try{ @@ -169,6 +181,6 @@ final class ItemDataUpgrader{ } } - return [$id, $meta]; + return [$newId, $newMeta]; } } diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php index f0b398acb..74175c560 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php @@ -40,10 +40,10 @@ final class ItemIdMetaUpgradeSchema{ public function getPriority() : int{ return $this->priority; } public function renameId(string $id) : ?string{ - return $this->renamedIds[$id] ?? null; + return $this->renamedIds[mb_strtolower($id, 'US-ASCII')] ?? null; } public function remapMeta(string $id, int $meta) : ?string{ - return $this->remappedMetas[$id][$meta] ?? null; + return $this->remappedMetas[mb_strtolower($id, 'US-ASCII')][$meta] ?? null; } } diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php index 723e8d993..bd4866f97 100644 --- a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -68,20 +68,34 @@ final class R12ItemIdToBlockIdMap{ return new self($builtMap); } + /** + * @var string[] + * @phpstan-var array + */ + private array $itemToBlock = []; + /** + * @var string[] + * @phpstan-var array + */ + private array $blockToItem = []; + /** * @param string[] $itemToBlock * @phpstan-param array $itemToBlock */ - public function __construct(private array $itemToBlock){} + public function __construct(array $itemToBlock){ + foreach($itemToBlock as $itemId => $blockId){ + $this->itemToBlock[mb_strtolower($itemId, 'US-ASCII')] = $blockId; + $this->blockToItem[mb_strtolower($blockId, 'US-ASCII')] = $itemId; + } + } public function itemIdToBlockId(string $itemId) : ?string{ - return $this->itemToBlock[$itemId] ?? null; + return $this->itemToBlock[mb_strtolower($itemId, 'US-ASCII')] ?? null; } public function blockIdToItemId(string $blockId) : ?string{ - //we don't need this for any functionality, so we're not concerned about performance here - //however, it might be nice to have for debugging - $itemId = array_search($blockId, $this->itemToBlock, true); - return $itemId !== false ? $itemId : null; + //we don't need this for any functionality, but it might be nice to have for debugging + return $this->blockToItem[mb_strtolower($blockId, 'US-ASCII')] ?? null; } } diff --git a/src/item/Item.php b/src/item/Item.php index dd5e088fb..6aabbf313 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -31,6 +31,7 @@ use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; +use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; @@ -661,13 +662,16 @@ class Item implements \JsonSerializable{ /** * Deserializes an Item from an NBT CompoundTag - * @throws NbtException * @throws SavedDataLoadingException */ public static function nbtDeserialize(CompoundTag $tag) : Item{ $itemData = GlobalItemDataHandlers::getUpgrader()->upgradeItemStackNbt($tag); - $item = GlobalItemDataHandlers::getDeserializer()->deserialize($itemData->getTypeData()); + try{ + $item = GlobalItemDataHandlers::getDeserializer()->deserialize($itemData->getTypeData()); + }catch(ItemTypeDeserializeException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } $item->setCount($itemData->getCount()); if(($tagTag = $itemData->getTypeData()->getTag()) !== null){ From adf8a61814e1cb93b7e843ce3eb8ee366b01f95d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 19:40:11 +0100 Subject: [PATCH 153/692] BlockStateToBlockObjectDeserializer: make map() public this allows plugins to implement their own blocks using this deserializer. --- .../block/convert/BlockStateToBlockObjectDeserializer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 967a71412..8c3110355 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -62,7 +62,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize } /** @phpstan-param \Closure(Reader) : Block $c */ - private function map(string $id, \Closure $c) : void{ + public function map(string $id, \Closure $c) : void{ if(array_key_exists($id, $this->deserializeFuncs)){ throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); } From 21cf3813bef9fa0aa975e00072c2210cf38af547 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 20:01:19 +0100 Subject: [PATCH 154/692] Add extra interfaces to make it easier to get at the actual blockstate serializer/deserializer this still is a pain the ass, but it's much less so than before. --- .../block/CachingBlockStateDeserializer.php | 2 +- .../block/CachingBlockStateSerializer.php | 2 +- .../DelegatingBlockStateDeserializer.php | 29 +++++++++++++++++++ .../block/DelegatingBlockStateSerializer.php | 29 +++++++++++++++++++ 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/data/bedrock/block/DelegatingBlockStateDeserializer.php create mode 100644 src/data/bedrock/block/DelegatingBlockStateSerializer.php diff --git a/src/data/bedrock/block/CachingBlockStateDeserializer.php b/src/data/bedrock/block/CachingBlockStateDeserializer.php index 84edcff2f..3071a9eb1 100644 --- a/src/data/bedrock/block/CachingBlockStateDeserializer.php +++ b/src/data/bedrock/block/CachingBlockStateDeserializer.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; -final class CachingBlockStateDeserializer implements BlockStateDeserializer{ +final class CachingBlockStateDeserializer implements DelegatingBlockStateDeserializer{ /** * @var int[] diff --git a/src/data/bedrock/block/CachingBlockStateSerializer.php b/src/data/bedrock/block/CachingBlockStateSerializer.php index 18003b086..f6129622d 100644 --- a/src/data/bedrock/block/CachingBlockStateSerializer.php +++ b/src/data/bedrock/block/CachingBlockStateSerializer.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; -final class CachingBlockStateSerializer implements BlockStateSerializer{ +final class CachingBlockStateSerializer implements DelegatingBlockStateSerializer{ /** * @var BlockStateData[] diff --git a/src/data/bedrock/block/DelegatingBlockStateDeserializer.php b/src/data/bedrock/block/DelegatingBlockStateDeserializer.php new file mode 100644 index 000000000..2c89ec03b --- /dev/null +++ b/src/data/bedrock/block/DelegatingBlockStateDeserializer.php @@ -0,0 +1,29 @@ + Date: Thu, 23 Jun 2022 21:22:52 +0100 Subject: [PATCH 155/692] Fix CS --- src/data/bedrock/block/DelegatingBlockStateDeserializer.php | 2 +- src/data/bedrock/block/DelegatingBlockStateSerializer.php | 2 +- src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php | 2 ++ src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/block/DelegatingBlockStateDeserializer.php b/src/data/bedrock/block/DelegatingBlockStateDeserializer.php index 2c89ec03b..1844d44fc 100644 --- a/src/data/bedrock/block/DelegatingBlockStateDeserializer.php +++ b/src/data/bedrock/block/DelegatingBlockStateDeserializer.php @@ -26,4 +26,4 @@ namespace pocketmine\data\bedrock\block; interface DelegatingBlockStateDeserializer extends BlockStateDeserializer{ public function getRealDeserializer() : BlockStateDeserializer; -} \ No newline at end of file +} diff --git a/src/data/bedrock/block/DelegatingBlockStateSerializer.php b/src/data/bedrock/block/DelegatingBlockStateSerializer.php index fc0788d54..8c5333606 100644 --- a/src/data/bedrock/block/DelegatingBlockStateSerializer.php +++ b/src/data/bedrock/block/DelegatingBlockStateSerializer.php @@ -26,4 +26,4 @@ namespace pocketmine\data\bedrock\block; interface DelegatingBlockStateSerializer extends BlockStateSerializer{ public function getRealSerializer() : BlockStateSerializer; -} \ No newline at end of file +} diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php index 74175c560..a977f4ad2 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item\upgrade; +use function mb_strtolower; + final class ItemIdMetaUpgradeSchema{ /** diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php index bd4866f97..e3476c9c4 100644 --- a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -27,11 +27,11 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; -use function array_search; use function file_get_contents; use function is_array; use function is_string; use function json_decode; +use function mb_strtolower; use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH; /** From 82f9a25d88f1c4ad1e25e09d7a19409c668d1263 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 21:24:09 +0100 Subject: [PATCH 156/692] Fix PHPStan --- src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php index e3476c9c4..6c0cf5cd3 100644 --- a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -84,7 +84,7 @@ final class R12ItemIdToBlockIdMap{ * @phpstan-param array $itemToBlock */ public function __construct(array $itemToBlock){ - foreach($itemToBlock as $itemId => $blockId){ + foreach(Utils::stringifyKeys($itemToBlock) as $itemId => $blockId){ $this->itemToBlock[mb_strtolower($itemId, 'US-ASCII')] = $blockId; $this->blockToItem[mb_strtolower($blockId, 'US-ASCII')] = $itemId; } From 1c689b10b9c8230640ba5b20eae5d17ce649878d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Jun 2022 21:29:48 +0100 Subject: [PATCH 157/692] ItemSerializer: fixed item NBT being discarded I'm still not sure on the wisdom of allowing NBT usage in here ... --- src/data/bedrock/item/ItemSerializer.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 97910abc0..5613f85ec 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -141,6 +141,15 @@ final class ItemSerializer{ $data = $serializer($item); } + if($item->hasNamedTag()){ + $resultTag = $item->getNamedTag(); + $extraTag = $data->getTag(); + if($extraTag !== null){ + $resultTag = $resultTag->merge($extraTag); + } + $data = new Data($data->getName(), $data->getMeta(), $data->getBlock(), $resultTag); + } + return $data; } From be2fe160b330af23d60763118470f0158bbd31ff Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 22:52:28 +0100 Subject: [PATCH 158/692] Throw a more specific exception on unknown block IDs --- .../block/BlockStateDeserializeException.php | 2 +- .../BlockStateToBlockObjectDeserializer.php | 2 +- .../UnsupportedBlockStateException.php | 30 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/data/bedrock/block/convert/UnsupportedBlockStateException.php diff --git a/src/data/bedrock/block/BlockStateDeserializeException.php b/src/data/bedrock/block/BlockStateDeserializeException.php index fbe0186ef..fe6b42a7f 100644 --- a/src/data/bedrock/block/BlockStateDeserializeException.php +++ b/src/data/bedrock/block/BlockStateDeserializeException.php @@ -23,6 +23,6 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; -final class BlockStateDeserializeException extends \RuntimeException{ +class BlockStateDeserializeException extends \RuntimeException{ } diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8c3110355..1cece6403 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -2534,7 +2534,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize public function deserializeBlock(BlockStateData $blockStateData) : Block{ $id = $blockStateData->getName(); if(!array_key_exists($id, $this->deserializeFuncs)){ - throw new BlockStateDeserializeException("Unknown block ID \"$id\""); + throw new UnsupportedBlockStateException("Unknown block ID \"$id\""); } $reader = new Reader($blockStateData); $block = $this->deserializeFuncs[$id]($reader); diff --git a/src/data/bedrock/block/convert/UnsupportedBlockStateException.php b/src/data/bedrock/block/convert/UnsupportedBlockStateException.php new file mode 100644 index 000000000..5350f45cf --- /dev/null +++ b/src/data/bedrock/block/convert/UnsupportedBlockStateException.php @@ -0,0 +1,30 @@ + Date: Fri, 24 Jun 2022 23:19:37 +0100 Subject: [PATCH 159/692] Hit block legacy metadata with the biggest nuke you've ever seen This commit completely revamps the way that blocks are represented in memory at runtime. Instead of being represented by legacy Mojang block IDs and metadata, which are dated, limited and unchangeable, we now use custom PM block IDs, which are generated from VanillaBlocks. This means we have full control of how they are assigned, which opens the doors to finally addressing inconsistencies like glazed terracotta, stripped logs handling, etc. To represent state, BlockDataReader and BlockDataWriter have been introduced, and are used by blocks with state information to pack said information into a binary form that can be stored on a chunk at runtime. Conceptually it's pretty similar to legacy metadata, but the actual format shares no resemblance whatsoever to legacy metadata, and is fully controlled by PM. This means that the 'state data' may change in serialization format at any time, so it should **NOT** be stored on disk or in a config. In the future, this will be improved using more auto-generated code and attributes, instead of hand-baked decodeState() and encodeState(). For now, this opens the gateway to a significant expansion of features. It's not ideal, but it's a big step forwards. --- src/block/Anvil.php | 26 +- src/block/Bamboo.php | 21 +- src/block/BambooSapling.php | 13 +- src/block/Barrel.php | 18 +- src/block/BaseBanner.php | 10 + src/block/Bed.php | 30 +- src/block/Bedrock.php | 16 +- src/block/Bell.php | 41 +- src/block/Block.php | 60 +- src/block/BlockFactory.php | 1085 +++++++---------- src/block/BoneBlock.php | 4 +- src/block/BrewingStand.php | 33 +- src/block/Button.php | 19 +- src/block/Cactus.php | 15 +- src/block/Cake.php | 15 +- src/block/Carpet.php | 4 +- src/block/CarvedPumpkin.php | 13 - src/block/ChemistryTable.php | 14 - src/block/Chest.php | 4 +- src/block/CocoaBlock.php | 18 +- src/block/Concrete.php | 4 +- src/block/ConcretePowder.php | 4 +- src/block/Coral.php | 19 +- src/block/CoralBlock.php | 20 +- src/block/Crops.php | 15 +- src/block/DaylightSensor.php | 29 +- src/block/DetectorRail.php | 27 +- src/block/Dirt.php | 17 +- src/block/Door.php | 32 +- src/block/DoublePlant.php | 15 +- src/block/DyedShulkerBox.php | 4 +- src/block/EndPortalFrame.php | 18 +- src/block/EndRod.php | 22 - src/block/EnderChest.php | 4 +- src/block/Farmland.php | 15 +- src/block/FenceGate.php | 23 +- src/block/Fire.php | 15 +- src/block/FloorBanner.php | 19 +- src/block/FloorCoralFan.php | 40 +- src/block/FloorSign.php | 12 - src/block/FlowerPot.php | 9 - src/block/FrostedIce.php | 15 +- src/block/Furnace.php | 32 +- src/block/GlazedTerracotta.php | 4 +- src/block/HayBale.php | 4 +- src/block/Hopper.php | 18 +- src/block/InfestedStone.php | 2 +- src/block/ItemFrame.php | 18 +- src/block/Ladder.php | 4 +- src/block/Lantern.php | 15 +- src/block/Leaves.php | 18 +- src/block/Lectern.php | 19 +- src/block/Lever.php | 42 +- src/block/Liquid.php | 32 +- src/block/Log.php | 4 +- src/block/Loom.php | 13 - src/block/NetherPortal.php | 14 +- src/block/NetherWartPlant.php | 15 +- src/block/Rail.php | 20 +- src/block/RedMushroomBlock.php | 23 +- src/block/RedstoneComparator.php | 35 +- src/block/RedstoneLamp.php | 17 +- src/block/RedstoneOre.php | 18 +- src/block/RedstoneRepeater.php | 32 +- src/block/RedstoneTorch.php | 22 +- src/block/RedstoneWire.php | 13 - src/block/Sapling.php | 15 +- src/block/SeaPickle.php | 17 +- src/block/ShulkerBox.php | 10 + src/block/SimplePillar.php | 4 +- src/block/SimplePressurePlate.php | 16 +- src/block/Skull.php | 32 +- src/block/Slab.php | 33 +- src/block/SnowLayer.php | 15 +- src/block/Sponge.php | 18 +- src/block/StainedGlass.php | 4 +- src/block/StainedGlassPane.php | 4 +- src/block/StainedHardenedClay.php | 4 +- src/block/StainedHardenedGlass.php | 4 +- src/block/StainedHardenedGlassPane.php | 4 +- src/block/Stair.php | 18 +- src/block/Stonecutter.php | 13 - src/block/StraightOnlyRail.php | 17 +- src/block/Sugarcane.php | 15 +- src/block/SweetBerryBush.php | 15 +- src/block/TNT.php | 22 +- src/block/Torch.php | 21 +- src/block/Trapdoor.php | 23 +- src/block/Tripwire.php | 28 +- src/block/TripwireHook.php | 23 +- src/block/VanillaBlocks.php | 806 ++++++------ src/block/Vine.php | 29 +- src/block/WallBanner.php | 19 +- src/block/WallCoralFan.php | 71 +- src/block/WallSign.php | 4 +- src/block/WeightedPressurePlate.php | 13 - src/block/Wool.php | 4 +- src/block/tile/Bell.php | 10 +- src/block/tile/FlowerPot.php | 4 +- .../AnalogRedstoneSignalEmitterTrait.php | 8 + src/block/utils/AnyFacingTrait.php | 8 + src/block/utils/BlockDataReader.php | 100 ++ src/block/utils/BlockDataReaderHelper.php | 164 +++ src/block/utils/BlockDataSerializer.php | 158 --- src/block/utils/BlockDataWriter.php | 101 ++ src/block/utils/BlockDataWriterHelper.php | 160 +++ src/block/utils/ColorInMetadataTrait.php | 63 - src/block/utils/ColoredTrait.php | 20 + src/block/utils/CoralTypeTrait.php | 11 +- src/block/utils/FallableTrait.php | 4 - src/block/utils/HorizontalFacingTrait.php | 8 + .../NormalHorizontalFacingInMetadataTrait.php | 40 - .../utils/PillarRotationInMetadataTrait.php | 76 -- src/block/utils/PillarRotationTrait.php | 8 + .../utils/RailPoweredByRedstoneTrait.php | 18 +- src/block/utils/SignLikeRotationTrait.php | 8 + .../BlockStateToBlockObjectDeserializer.php | 2 +- .../block/upgrade/LegacyBlockStateMapper.php | 4 +- src/data/bedrock/item/ItemSerializer.php | 2 +- .../bedrock/item/upgrade/ItemDataUpgrader.php | 2 - src/entity/object/FallingBlock.php | 4 +- src/item/ItemBlock.php | 2 +- src/item/ItemBlockWallOrFloor.php | 4 +- src/item/ItemFactory.php | 13 +- src/world/SimpleChunkManager.php | 2 +- src/world/World.php | 36 +- src/world/format/Chunk.php | 6 +- .../format/io/GlobalBlockStateHandlers.php | 34 +- src/world/format/io/leveldb/LevelDB.php | 12 +- src/world/format/io/region/Anvil.php | 4 +- src/world/format/io/region/McRegion.php | 4 +- src/world/format/io/region/PMAnvil.php | 4 +- src/world/generator/FlatGeneratorOptions.php | 2 +- src/world/generator/hell/Nether.php | 6 +- src/world/generator/normal/Normal.php | 6 +- src/world/generator/populator/GroundCover.php | 2 +- src/world/particle/BlockBreakParticle.php | 2 +- src/world/particle/BlockPunchParticle.php | 2 +- src/world/particle/TerrainParticle.php | 2 +- src/world/sound/BlockBreakSound.php | 2 +- src/world/sound/BlockPlaceSound.php | 2 +- src/world/sound/BlockPunchSound.php | 2 +- src/world/sound/EntityLandSound.php | 2 +- src/world/sound/ItemUseOnBlockSound.php | 2 +- tests/phpunit/block/BlockTest.php | 67 +- .../block_factory_consistency_check.json | 2 +- .../block/regenerate_consistency_check.php | 82 +- .../BlockSerializerDeserializerTest.php | 3 +- .../mcpe/convert/RuntimeBlockMappingTest.php | 2 +- 149 files changed, 2234 insertions(+), 2650 deletions(-) create mode 100644 src/block/utils/BlockDataReader.php create mode 100644 src/block/utils/BlockDataReaderHelper.php delete mode 100644 src/block/utils/BlockDataSerializer.php create mode 100644 src/block/utils/BlockDataWriter.php create mode 100644 src/block/utils/BlockDataWriterHelper.php delete mode 100644 src/block/utils/ColorInMetadataTrait.php delete mode 100644 src/block/utils/NormalHorizontalFacingInMetadataTrait.php delete mode 100644 src/block/utils/PillarRotationInMetadataTrait.php diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 785d59afd..25e48ac60 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\inventory\AnvilInventory; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\HorizontalFacingTrait; @@ -46,23 +47,20 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->damage << 2); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x3); - $this->damage = BlockDataSerializer::readBoundedInt("damage", $stateMeta >> 2, self::UNDAMAGED, self::VERY_DAMAGED); - } - - public function getStateBitmask() : int{ - return 0b1111; - } - protected function writeStateToItemMeta() : int{ return $this->damage << 2; } + protected function decodeState(BlockDataReader $r) : void{ + $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); + $this->setFacing($r->readHorizontalFacing()); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->getDamage()); + $w->writeHorizontalFacing($this->getFacing()); + } + public function getDamage() : int{ return $this->damage; } /** @return $this */ diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 427b0b8e7..a5b2e35e8 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; @@ -54,18 +55,16 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->thick = ($stateMeta & BlockLegacyMetadata::BAMBOO_FLAG_THICK) !== 0; - $this->leafSize = BlockDataSerializer::readBoundedInt("leafSize", ($stateMeta >> BlockLegacyMetadata::BAMBOO_LEAF_SIZE_SHIFT) & BlockLegacyMetadata::BAMBOO_LEAF_SIZE_MASK, self::NO_LEAVES, self::LARGE_LEAVES); - $this->ready = ($stateMeta & BlockLegacyMetadata::BAMBOO_FLAG_READY) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->setLeafSize($r->readBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES)); + $this->setThick($r->readBool()); + $this->setReady($r->readBool()); } - public function writeStateToMeta() : int{ - return ($this->thick ? BlockLegacyMetadata::BAMBOO_FLAG_THICK : 0) | ($this->leafSize << BlockLegacyMetadata::BAMBOO_LEAF_SIZE_SHIFT) | ($this->ready ? BlockLegacyMetadata::BAMBOO_FLAG_READY : 0); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->getLeafSize()); + $w->writeBool($this->isThick()); + $w->writeBool($this->isReady()); } public function isThick() : bool{ return $this->thick; } diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index a00361416..5d476ff8f 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; @@ -32,19 +34,16 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ - private bool $ready = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->ready = ($stateMeta & BlockLegacyMetadata::BAMBOO_SAPLING_FLAG_READY) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->setReady($r->readBool()); } - protected function writeStateToMeta() : int{ - return $this->ready ? BlockLegacyMetadata::BAMBOO_SAPLING_FLAG_READY : 0; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->isReady()); } - public function getStateBitmask() : int{ return 0b1; } - public function isReady() : bool{ return $this->ready; } /** @return $this */ diff --git a/src/block/Barrel.php b/src/block/Barrel.php index bcd8621ad..8979622ba 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -25,7 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -38,17 +39,14 @@ class Barrel extends Opaque{ protected bool $open = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeFacing($this->facing) | ($this->open ? BlockLegacyMetadata::BARREL_FLAG_OPEN : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->setFacing($r->readFacing()); + $this->setOpen($r->readBool()); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readFacing($stateMeta & 0x07); - $this->open = ($stateMeta & BlockLegacyMetadata::BARREL_FLAG_OPEN) === BlockLegacyMetadata::BARREL_FLAG_OPEN; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->getFacing()); + $w->writeBool($this->isOpen()); } public function isOpen() : bool{ diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index 3cc59ae78..d785bca1c 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -25,6 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\utils\BannerPatternLayer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SupportType; @@ -53,6 +55,14 @@ abstract class BaseBanner extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } + protected function decodeState(BlockDataReader $r) : void{ + //TODO: we currently purposely don't read or write colour (it's stored on the tile) + } + + protected function encodeState(BlockDataWriter $w) : void{ + //TODO: we currently purposely don't read or write colour (it's stored on the tile) + } + public function readStateFromWorld() : void{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/Bed.php b/src/block/Bed.php index 7ce2fa70b..80851c131 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Bed as TileBed; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; @@ -54,20 +54,18 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | - ($this->occupied ? BlockLegacyMetadata::BED_FLAG_OCCUPIED : 0) | - ($this->head ? BlockLegacyMetadata::BED_FLAG_HEAD : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->occupied = $r->readBool(); + $this->head = $r->readBool(); + //TODO: we currently purposely don't read or write colour (it's stored on the tile) } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->occupied = ($stateMeta & BlockLegacyMetadata::BED_FLAG_OCCUPIED) !== 0; - $this->head = ($stateMeta & BlockLegacyMetadata::BED_FLAG_HEAD) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->occupied); + $w->writeBool($this->head); + //TODO: we currently purposely don't read or write colour (it's stored on the tile) } public function readStateFromWorld() : void{ @@ -209,10 +207,6 @@ class Bed extends Transparent{ return []; } - protected function writeStateToItemMeta() : int{ - return DyeColorIdMap::getInstance()->toId($this->color); - } - public function getAffectedBlocks() : array{ if(($other = $this->getOtherHalf()) !== null){ return [$this, $other]; diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 3bb42560f..ed77833bb 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -23,20 +23,18 @@ declare(strict_types=1); namespace pocketmine\block; -class Bedrock extends Opaque{ +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +class Bedrock extends Opaque{ private bool $burnsForever = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->burnsForever = ($stateMeta & BlockLegacyMetadata::BEDROCK_FLAG_INFINIBURN) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->burnsForever = $r->readBool(); } - protected function writeStateToMeta() : int{ - return $this->burnsForever ? BlockLegacyMetadata::BEDROCK_FLAG_INFINIBURN : 0; - } - - public function getStateBitmask() : int{ - return 0b1; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->burnsForever); } public function burnsForever() : bool{ diff --git a/src/block/Bell.php b/src/block/Bell.php index c75d7d785..9a9fad9d9 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -25,16 +25,17 @@ namespace pocketmine\block; use pocketmine\block\tile\Bell as TileBell; use pocketmine\block\utils\BellAttachmentType; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; -use pocketmine\utils\AssumptionFailedError; use pocketmine\world\BlockTransaction; use pocketmine\world\sound\BellRingSound; @@ -48,36 +49,14 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->setFacing(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03)); - - $attachmentType = [ - BlockLegacyMetadata::BELL_ATTACHMENT_FLOOR => BellAttachmentType::FLOOR(), - BlockLegacyMetadata::BELL_ATTACHMENT_CEILING => BellAttachmentType::CEILING(), - BlockLegacyMetadata::BELL_ATTACHMENT_ONE_WALL => BellAttachmentType::ONE_WALL(), - BlockLegacyMetadata::BELL_ATTACHMENT_TWO_WALLS => BellAttachmentType::TWO_WALLS() - ][($stateMeta >> 2) & 0b11] ?? null; - if($attachmentType === null){ - throw new InvalidBlockStateException("No such attachment type"); - } - $this->setAttachmentType($attachmentType); + protected function decodeState(BlockDataReader $r) : void{ + $this->attachmentType = BlockDataReaderHelper::readBellAttachmentType($r); + $this->facing = $r->readHorizontalFacing(); } - public function writeStateToMeta() : int{ - $attachmentTypeMeta = [ - BellAttachmentType::FLOOR()->id() => BlockLegacyMetadata::BELL_ATTACHMENT_FLOOR, - BellAttachmentType::CEILING()->id() => BlockLegacyMetadata::BELL_ATTACHMENT_CEILING, - BellAttachmentType::ONE_WALL()->id() => BlockLegacyMetadata::BELL_ATTACHMENT_ONE_WALL, - BellAttachmentType::TWO_WALLS()->id() => BlockLegacyMetadata::BELL_ATTACHMENT_TWO_WALLS - ][$this->getAttachmentType()->id()] ?? null; - if($attachmentTypeMeta === null){ - throw new AssumptionFailedError("Mapping should cover all cases"); - } - return BlockDataSerializer::writeLegacyHorizontalFacing($this->getFacing()) | ($attachmentTypeMeta << 2); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeBellAttachmentType($w, $this->attachmentType); + $w->writeHorizontalFacing($this->facing); } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Block.php b/src/block/Block.php index 89aa0221d..5bf58b47c 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -28,7 +28,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; -use pocketmine\block\utils\InvalidBlockStateException; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\item\enchantment\VanillaEnchantments; @@ -44,14 +45,12 @@ use pocketmine\world\BlockTransaction; use pocketmine\world\format\Chunk; use pocketmine\world\Position; use pocketmine\world\World; -use function assert; use function count; -use function dechex; use const PHP_INT_MAX; class Block{ - public const INTERNAL_METADATA_BITS = 4; - public const INTERNAL_METADATA_MASK = ~(~0 << self::INTERNAL_METADATA_BITS); + public const INTERNAL_STATE_DATA_BITS = 6; + public const INTERNAL_STATE_DATA_MASK = ~(~0 << self::INTERNAL_STATE_DATA_BITS); protected BlockIdentifier $idInfo; protected string $fallbackName; @@ -65,9 +64,6 @@ class Block{ * @param string $name English name of the block type (TODO: implement translations) */ public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ - if(($idInfo->getLegacyVariant() & $this->getStateBitmask()) !== 0){ - throw new \InvalidArgumentException("Variant 0x" . dechex($idInfo->getLegacyVariant()) . " collides with state bitmask 0x" . dechex($this->getStateBitmask())); - } $this->idInfo = $idInfo; $this->fallbackName = $name; $this->breakInfo = $breakInfo; @@ -86,18 +82,11 @@ class Block{ return $this->fallbackName; } - /** - * @deprecated - */ - public function getId() : int{ - return $this->idInfo->getLegacyBlockId(); - } - /** * @internal */ - public function getFullId() : int{ - return ($this->getId() << self::INTERNAL_METADATA_BITS) | $this->getMeta(); + public function getStateId() : int{ + return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeStateData(); } public function asItem() : Item{ @@ -107,34 +96,29 @@ class Block{ ); } - /** - * @deprecated - */ - public function getMeta() : int{ - $stateMeta = $this->writeStateToMeta(); - assert(($stateMeta & ~$this->getStateBitmask()) === 0); - return $this->idInfo->getLegacyVariant() | $stateMeta; - } - protected function writeStateToItemMeta() : int{ return 0; } - /** - * Returns a bitmask used to extract state bits from block metadata. - */ - public function getStateBitmask() : int{ - return 0; + public function decodeStateData(int $data) : void{ + $reader = new BlockDataReader(self::INTERNAL_STATE_DATA_BITS, $data); + $this->decodeState($reader); } - protected function writeStateToMeta() : int{ - return 0; + protected function decodeState(BlockDataReader $r) : void{ + //NOOP } /** - * @throws InvalidBlockStateException + * @internal */ - public function readStateFromData(int $id, int $stateMeta) : void{ + public function computeStateData() : int{ + $writer = new BlockDataWriter(self::INTERNAL_STATE_DATA_BITS); + $this->encodeState($writer); + return $writer->getValue(); + } + + protected function encodeState(BlockDataWriter $w) : void{ //NOOP } @@ -150,7 +134,7 @@ class Block{ } public function writeStateToWorld() : void{ - $this->position->getWorld()->getOrLoadChunkAtPosition($this->position)->setFullBlock($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getFullId()); + $this->position->getWorld()->getOrLoadChunkAtPosition($this->position)->setFullBlock($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getStateId()); $tileType = $this->idInfo->getTileClass(); $oldTile = $this->position->getWorld()->getTile($this->position); @@ -194,7 +178,7 @@ class Block{ * Returns whether the given block has the same type and properties as this block. */ public function isSameState(Block $other) : bool{ - return $this->getFullId() === $other->getFullId(); + return $this->getStateId() === $other->getStateId(); } /** @@ -551,7 +535,7 @@ class Block{ * @return string */ public function __toString(){ - return "Block[" . $this->getName() . "] (" . $this->getId() . ":" . $this->getMeta() . ")"; + return "Block[" . $this->getName() . "] (" . $this->getTypeId() . ":" . $this->computeStateData() . ")"; } /** diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index ec45b6ab7..f71d4bbb1 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -55,14 +55,13 @@ use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\InvalidBlockStateException; -use pocketmine\block\utils\SlabType; use pocketmine\block\utils\TreeType; use pocketmine\item\Item; use pocketmine\item\ItemIds; use pocketmine\item\ToolTier; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\light\LightUpdate; -use function get_class; use function min; /** @@ -79,16 +78,11 @@ class BlockFactory{ private array $fullList = []; /** - * @var int[] - * @phpstan-var array + * Index of default states for every block type + * @var Block[] + * @phpstan-var array */ - private array $defaultStateIndexes = []; - - /** - * @var int[] - * @phpstan-var array - */ - private array $mappedStateIndexes = []; + private array $typeIndex = []; /** * @var int[] @@ -113,10 +107,10 @@ class BlockFactory{ public function __construct(){ $railBreakInfo = new BlockBreakInfo(0.7); - $this->registerAllMeta(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, LegacyIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); - $this->registerAllMeta(new Air(new BID(Ids::AIR, LegacyIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); - $this->registerAllMeta(new Anvil(new BID(Ids::ANVIL, LegacyIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new Bamboo(new BID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, LegacyIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); + $this->register(new Air(new BID(Ids::AIR, LegacyIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); + $this->register(new Anvil(new BID(Ids::ANVIL, LegacyIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new Bamboo(new BID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ return 0.0; @@ -124,234 +118,224 @@ class BlockFactory{ return parent::getBreakTime($item); } })); - $this->registerAllMeta(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, LegacyIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); + $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, LegacyIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->registerAllMeta(new FloorBanner(new BID(Ids::BANNER, LegacyIds::STANDING_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); - $this->registerAllMeta(new WallBanner(new BID(Ids::WALL_BANNER, LegacyIds::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - $this->registerAllMeta(new Barrel(new BID(Ids::BARREL, LegacyIds::BARREL, 0, null, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new Transparent(new BID(Ids::BARRIER, LegacyIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); - $this->registerAllMeta(new Beacon(new BID(Ids::BEACON, LegacyIds::BEACON, 0, null, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - $this->registerAllMeta(new Bed(new BID(Ids::BED, LegacyIds::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); - $this->registerAllMeta(new Bedrock(new BID(Ids::BEDROCK, LegacyIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); + $this->register(new FloorBanner(new BID(Ids::BANNER, LegacyIds::STANDING_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); + $this->register(new WallBanner(new BID(Ids::WALL_BANNER, LegacyIds::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); + $this->register(new Barrel(new BID(Ids::BARREL, LegacyIds::BARREL, 0, null, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Transparent(new BID(Ids::BARRIER, LegacyIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); + $this->register(new Beacon(new BID(Ids::BEACON, LegacyIds::BEACON, 0, null, TileBeacon::class), "Beacon", new BreakInfo(3.0))); + $this->register(new Bed(new BID(Ids::BED, LegacyIds::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); + $this->register(new Bedrock(new BID(Ids::BEDROCK, LegacyIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); - $this->registerAllMeta(new Beetroot(new BID(Ids::BEETROOTS, LegacyIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); - $this->registerAllMeta(new Bell(new BID(Ids::BELL, LegacyIds::BELL, 0, null, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new BlueIce(new BID(Ids::BLUE_ICE, LegacyIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - $this->registerAllMeta(new BoneBlock(new BID(Ids::BONE_BLOCK, LegacyIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Bookshelf(new BID(Ids::BOOKSHELF, LegacyIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - $this->registerAllMeta(new BrewingStand(new BID(Ids::BREWING_STAND, LegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Beetroot(new BID(Ids::BEETROOTS, LegacyIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); + $this->register(new Bell(new BID(Ids::BELL, LegacyIds::BELL, 0, null, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new BlueIce(new BID(Ids::BLUE_ICE, LegacyIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); + $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK, LegacyIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Bookshelf(new BID(Ids::BOOKSHELF, LegacyIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); + $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, LegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Stair(new BID(Ids::BRICK_STAIRS, LegacyIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::BRICKS, LegacyIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); + $this->register(new Stair(new BID(Ids::BRICK_STAIRS, LegacyIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); + $this->register(new Opaque(new BID(Ids::BRICKS, LegacyIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); - $this->registerAllMeta(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, LegacyIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); - $this->registerAllMeta(new Cactus(new BID(Ids::CACTUS, LegacyIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); - $this->registerAllMeta(new Cake(new BID(Ids::CAKE, LegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake", new BreakInfo(0.5))); - $this->registerAllMeta(new Carrot(new BID(Ids::CARROTS, LegacyIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); + $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, LegacyIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); + $this->register(new Cactus(new BID(Ids::CACTUS, LegacyIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); + $this->register(new Cake(new BID(Ids::CAKE, LegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake", new BreakInfo(0.5))); + $this->register(new Carrot(new BID(Ids::CARROTS, LegacyIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); - $this->registerAllMeta(new Chest(new BID(Ids::CHEST, LegacyIds::CHEST, 0, null, TileChest::class), "Chest", $chestBreakInfo)); - $this->registerAllMeta(new Clay(new BID(Ids::CLAY, LegacyIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->registerAllMeta(new Coal(new BID(Ids::COAL, LegacyIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new CoalOre(new BID(Ids::COAL_ORE, LegacyIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Chest(new BID(Ids::CHEST, LegacyIds::CHEST, 0, null, TileChest::class), "Chest", $chestBreakInfo)); + $this->register(new Clay(new BID(Ids::CLAY, LegacyIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Coal(new BID(Ids::COAL, LegacyIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new CoalOre(new BID(Ids::COAL_ORE, LegacyIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, LegacyIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, LegacyIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::COBBLESTONE_STAIRS, LegacyIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, LegacyIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, LegacyIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, LegacyIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS, LegacyIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, LegacyIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->registerAllMeta(new Cobweb(new BID(Ids::COBWEB, LegacyIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - $this->registerAllMeta(new CocoaBlock(new BID(Ids::COCOA_POD, LegacyIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - $this->registerAllMeta(new CoralBlock(new BID(Ids::CORAL_BLOCK, LegacyIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new CraftingTable(new BID(Ids::CRAFTING_TABLE, LegacyIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, [LegacyIds::DAYLIGHT_DETECTOR_INVERTED], 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); - $this->registerAllMeta(new DeadBush(new BID(Ids::DEAD_BUSH, LegacyIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->registerAllMeta(new DetectorRail(new BID(Ids::DETECTOR_RAIL, LegacyIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); + $this->register(new Cobweb(new BID(Ids::COBWEB, LegacyIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); + $this->register(new CocoaBlock(new BID(Ids::COCOA_POD, LegacyIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); + $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK, LegacyIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE, LegacyIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, [LegacyIds::DAYLIGHT_DETECTOR_INVERTED], 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new DeadBush(new BID(Ids::DEAD_BUSH, LegacyIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL, LegacyIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::DIAMOND, LegacyIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new DiamondOre(new BID(Ids::DIAMOND_ORE, LegacyIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new Dirt(new BID(Ids::DIRT, LegacyIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta( - new DoublePlant(new BID(Ids::SUNFLOWER, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant()), - new DoublePlant(new BID(Ids::LILAC, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant()), - new DoublePlant(new BID(Ids::ROSE_BUSH, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant()), - new DoublePlant(new BID(Ids::PEONY, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant()), - new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1)), - new DoubleTallGrass(new BID(Ids::LARGE_FERN, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1)), - ); - $this->registerAllMeta(new DragonEgg(new BID(Ids::DRAGON_EGG, LegacyIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new DriedKelp(new BID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - $this->registerAllMeta(new Opaque(new BID(Ids::EMERALD, LegacyIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new EmeraldOre(new BID(Ids::EMERALD_ORE, LegacyIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, LegacyIds::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, LegacyIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); - $this->registerAllMeta(new EndRod(new BID(Ids::END_ROD, LegacyIds::END_ROD, 0), "End Rod", BreakInfo::instant())); - $this->registerAllMeta(new Opaque(new BID(Ids::END_STONE, LegacyIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + $this->register(new Opaque(new BID(Ids::DIAMOND, LegacyIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE, LegacyIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Dirt(new BID(Ids::DIRT, LegacyIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new DoublePlant(new BID(Ids::SUNFLOWER, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::LILAC, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::PEONY, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant())); + $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG, LegacyIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new DriedKelp(new BID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); + $this->register(new Opaque(new BID(Ids::EMERALD, LegacyIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE, LegacyIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, LegacyIds::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, LegacyIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); + $this->register(new EndRod(new BID(Ids::END_ROD, LegacyIds::END_ROD, 0), "End Rod", BreakInfo::instant())); + $this->register(new Opaque(new BID(Ids::END_STONE, LegacyIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - $this->registerAllMeta(new Opaque(new BID(Ids::END_STONE_BRICKS, LegacyIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, LegacyIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS, LegacyIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, LegacyIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); - $this->registerAllMeta(new EnderChest(new BID(Ids::ENDER_CHEST, LegacyIds::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); - $this->registerAllMeta(new Farmland(new BID(Ids::FARMLAND, LegacyIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->registerAllMeta(new Fire(new BID(Ids::FIRE, LegacyIds::FIRE, 0), "Fire Block", BreakInfo::instant())); - $this->registerAllMeta(new FletchingTable(new BID(Ids::FLETCHING_TABLE, LegacyIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); - $this->registerAllMeta(new Flower(new BID(Ids::DANDELION, LegacyIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); - $this->registerAllMeta( - new Flower(new BID(Ids::POPPY, LegacyIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant()), - new Flower(new BID(Ids::ALLIUM, LegacyIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant()), - new Flower(new BID(Ids::AZURE_BLUET, LegacyIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant()), - new Flower(new BID(Ids::BLUE_ORCHID, LegacyIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant()), - new Flower(new BID(Ids::CORNFLOWER, LegacyIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant()), - new Flower(new BID(Ids::LILY_OF_THE_VALLEY, LegacyIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant()), - new Flower(new BID(Ids::ORANGE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::OXEYE_DAISY, LegacyIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant()), - new Flower(new BID(Ids::PINK_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::RED_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant()), - new Flower(new BID(Ids::WHITE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant()), - ); - $this->registerAllMeta(new FlowerPot(new BID(Ids::FLOWER_POT, LegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - $this->registerAllMeta(new FrostedIce(new BID(Ids::FROSTED_ICE, LegacyIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::FURNACE, LegacyIds::FURNACE, [LegacyIds::LIT_FURNACE], 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, [LegacyIds::LIT_BLAST_FURNACE], 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Furnace(new BIDFlattened(Ids::SMOKER, LegacyIds::SMOKER, [LegacyIds::LIT_SMOKER], 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, LegacyIds::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + $this->register(new Farmland(new BID(Ids::FARMLAND, LegacyIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Fire(new BID(Ids::FIRE, LegacyIds::FIRE, 0), "Fire Block", BreakInfo::instant())); + $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE, LegacyIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + $this->register(new Flower(new BID(Ids::DANDELION, LegacyIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::POPPY, LegacyIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ALLIUM, LegacyIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::AZURE_BLUET, LegacyIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::BLUE_ORCHID, LegacyIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::CORNFLOWER, LegacyIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY, LegacyIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ORANGE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::OXEYE_DAISY, LegacyIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::PINK_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::RED_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::WHITE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant())); + $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, LegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE, LegacyIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); + $this->register(new Furnace(new BIDFlattened(Ids::FURNACE, LegacyIds::FURNACE, [LegacyIds::LIT_FURNACE], 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BIDFlattened(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, [LegacyIds::LIT_BLAST_FURNACE], 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BIDFlattened(Ids::SMOKER, LegacyIds::SMOKER, [LegacyIds::LIT_SMOKER], 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); - $this->registerAllMeta(new Glass(new BID(Ids::GLASS, LegacyIds::GLASS, 0), "Glass", $glassBreakInfo)); - $this->registerAllMeta(new GlassPane(new BID(Ids::GLASS_PANE, LegacyIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); - $this->registerAllMeta(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, LegacyIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); - $this->registerAllMeta(new Glowstone(new BID(Ids::GLOWSTONE, LegacyIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - $this->registerAllMeta(new Opaque(new BID(Ids::GOLD, LegacyIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new Opaque(new BID(Ids::GOLD_ORE, LegacyIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Glass(new BID(Ids::GLASS, LegacyIds::GLASS, 0), "Glass", $glassBreakInfo)); + $this->register(new GlassPane(new BID(Ids::GLASS_PANE, LegacyIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); + $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, LegacyIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + $this->register(new Glowstone(new BID(Ids::GLOWSTONE, LegacyIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); + $this->register(new Opaque(new BID(Ids::GOLD, LegacyIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::GOLD_ORE, LegacyIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); - $this->registerAllMeta(new Grass(new BID(Ids::GRASS, LegacyIds::GRASS, 0), "Grass", $grassBreakInfo)); - $this->registerAllMeta(new GrassPath(new BID(Ids::GRASS_PATH, LegacyIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); - $this->registerAllMeta(new Gravel(new BID(Ids::GRAVEL, LegacyIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Grass(new BID(Ids::GRASS, LegacyIds::GRASS, 0), "Grass", $grassBreakInfo)); + $this->register(new GrassPath(new BID(Ids::GRASS_PATH, LegacyIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); + $this->register(new Gravel(new BID(Ids::GRAVEL, LegacyIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->registerAllMeta(new HardenedClay(new BID(Ids::HARDENED_CLAY, LegacyIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); + $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY, LegacyIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); - $this->registerAllMeta(new HardenedGlass(new BID(Ids::HARDENED_GLASS, LegacyIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, LegacyIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new HayBale(new BID(Ids::HAY_BALE, LegacyIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); - $this->registerAllMeta(new Hopper(new BID(Ids::HOPPER, LegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - $this->registerAllMeta(new Ice(new BID(Ids::ICE, LegacyIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS, LegacyIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, LegacyIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new HayBale(new BID(Ids::HAY_BALE, LegacyIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); + $this->register(new Hopper(new BID(Ids::HOPPER, LegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + $this->register(new Ice(new BID(Ids::ICE, LegacyIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); - $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE, LegacyIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::INFO_UPDATE2, LegacyIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); - $this->registerAllMeta(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, LegacyIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE, LegacyIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE2, LegacyIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); + $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, LegacyIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Opaque(new BID(Ids::IRON, LegacyIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); - $this->registerAllMeta(new Thin(new BID(Ids::IRON_BARS, LegacyIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON, LegacyIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); + $this->register(new Thin(new BID(Ids::IRON_BARS, LegacyIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); - $this->registerAllMeta(new Door(new BID(Ids::IRON_DOOR, LegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); - $this->registerAllMeta(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, LegacyIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::IRON_ORE, LegacyIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new ItemFrame(new BID(Ids::ITEM_FRAME, LegacyIds::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - $this->registerAllMeta(new Jukebox(new BID(Ids::JUKEBOX, LegacyIds::JUKEBOX, 0, ItemIds::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - $this->registerAllMeta(new Ladder(new BID(Ids::LADDER, LegacyIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $this->registerAllMeta(new Lantern(new BID(Ids::LANTERN, LegacyIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Opaque(new BID(Ids::LAPIS_LAZULI, LegacyIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, LegacyIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->registerAllMeta(new Lava(new BIDFlattened(Ids::LAVA, LegacyIds::FLOWING_LAVA, [LegacyIds::STILL_LAVA], 0), "Lava", BreakInfo::indestructible(500.0))); - $this->registerAllMeta(new Lectern(new BID(Ids::LECTERN, LegacyIds::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); - $this->registerAllMeta(new Lever(new BID(Ids::LEVER, LegacyIds::LEVER, 0), "Lever", new BreakInfo(0.5))); - $this->registerAllMeta(new Loom(new BID(Ids::LOOM, LegacyIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); - $this->registerAllMeta(new Magma(new BID(Ids::MAGMA, LegacyIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Melon(new BID(Ids::MELON, LegacyIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); - $this->registerAllMeta(new MelonStem(new BID(Ids::MELON_STEM, LegacyIds::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem", BreakInfo::instant())); - $this->registerAllMeta(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, LegacyIds::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Mycelium(new BID(Ids::MYCELIUM, LegacyIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Door(new BID(Ids::IRON_DOOR, LegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); + $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, LegacyIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON_ORE, LegacyIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, LegacyIds::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + $this->register(new Jukebox(new BID(Ids::JUKEBOX, LegacyIds::JUKEBOX, 0, ItemIds::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + $this->register(new Ladder(new BID(Ids::LADDER, LegacyIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + $this->register(new Lantern(new BID(Ids::LANTERN, LegacyIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI, LegacyIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, LegacyIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Lava(new BIDFlattened(Ids::LAVA, LegacyIds::FLOWING_LAVA, [LegacyIds::STILL_LAVA], 0), "Lava", BreakInfo::indestructible(500.0))); + $this->register(new Lectern(new BID(Ids::LECTERN, LegacyIds::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + $this->register(new Lever(new BID(Ids::LEVER, LegacyIds::LEVER, 0), "Lever", new BreakInfo(0.5))); + $this->register(new Loom(new BID(Ids::LOOM, LegacyIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Magma(new BID(Ids::MAGMA, LegacyIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Melon(new BID(Ids::MELON, LegacyIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + $this->register(new MelonStem(new BID(Ids::MELON_STEM, LegacyIds::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem", BreakInfo::instant())); + $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, LegacyIds::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Mycelium(new BID(Ids::MYCELIUM, LegacyIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_BRICKS, LegacyIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::RED_NETHER_BRICKS, LegacyIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); - $this->registerAllMeta(new Fence(new BID(Ids::NETHER_BRICK_FENCE, LegacyIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, LegacyIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, LegacyIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - $this->registerAllMeta(new NetherPortal(new BID(Ids::NETHER_PORTAL, LegacyIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->registerAllMeta(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, LegacyIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, LegacyIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Opaque(new BID(Ids::NETHER_WART_BLOCK, LegacyIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - $this->registerAllMeta(new NetherWartPlant(new BID(Ids::NETHER_WART, LegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart", BreakInfo::instant())); - $this->registerAllMeta(new Netherrack(new BID(Ids::NETHERRACK, LegacyIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Note(new BID(Ids::NOTE_BLOCK, LegacyIds::NOTEBLOCK, 0, null, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - $this->registerAllMeta(new Opaque(new BID(Ids::OBSIDIAN, LegacyIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - $this->registerAllMeta(new PackedIce(new BID(Ids::PACKED_ICE, LegacyIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Podzol(new BID(Ids::PODZOL, LegacyIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Potato(new BID(Ids::POTATOES, LegacyIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); - $this->registerAllMeta(new PoweredRail(new BID(Ids::POWERED_RAIL, LegacyIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); + $this->register(new Opaque(new BID(Ids::NETHER_BRICKS, LegacyIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS, LegacyIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE, LegacyIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, LegacyIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, LegacyIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL, LegacyIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); + $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, LegacyIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, LegacyIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK, LegacyIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); + $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART, LegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart", BreakInfo::instant())); + $this->register(new Netherrack(new BID(Ids::NETHERRACK, LegacyIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Note(new BID(Ids::NOTE_BLOCK, LegacyIds::NOTEBLOCK, 0, null, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + $this->register(new Opaque(new BID(Ids::OBSIDIAN, LegacyIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + $this->register(new PackedIce(new BID(Ids::PACKED_ICE, LegacyIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Podzol(new BID(Ids::PODZOL, LegacyIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Potato(new BID(Ids::POTATOES, LegacyIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); + $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL, LegacyIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta( - new Opaque(new BID(Ids::PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo), - new Opaque(new BID(Ids::DARK_PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo), - new Opaque(new BID(Ids::PRISMARINE_BRICKS, LegacyIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo) - ); - $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, LegacyIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, LegacyIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::PRISMARINE_STAIRS, LegacyIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS, LegacyIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, LegacyIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, LegacyIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS, LegacyIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->registerAllMeta(new Pumpkin(new BID(Ids::PUMPKIN, LegacyIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); - $this->registerAllMeta(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, LegacyIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); - $this->registerAllMeta(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, LegacyIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); + $this->register(new Pumpkin(new BID(Ids::PUMPKIN, LegacyIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); + $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, LegacyIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); + $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, LegacyIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); - $this->registerAllMeta(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, LegacyIds::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem", BreakInfo::instant())); + $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, LegacyIds::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem", BreakInfo::instant())); $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta( - new Opaque(new BID(Ids::PURPUR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo), - new SimplePillar(new BID(Ids::PURPUR_PILLAR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) - ); - $this->registerAllMeta(new Stair(new BID(Ids::PURPUR_STAIRS, LegacyIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); + $this->register(new Opaque(new BID(Ids::PURPUR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); + $this->register(new Stair(new BID(Ids::PURPUR_STAIRS, LegacyIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta( - new Opaque(new BID(Ids::QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo), - new SimplePillar(new BID(Ids::CHISELED_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo), - new SimplePillar(new BID(Ids::QUARTZ_PILLAR, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo), - new Opaque(new BID(Ids::SMOOTH_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo) //TODO: we may need to account for the fact this previously incorrectly had axis - ); - $this->registerAllMeta(new Stair(new BID(Ids::QUARTZ_STAIRS, LegacyIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, LegacyIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); - $this->registerAllMeta(new Rail(new BID(Ids::RAIL, LegacyIds::RAIL, 0), "Rail", $railBreakInfo)); - $this->registerAllMeta(new RedMushroom(new BID(Ids::RED_MUSHROOM, LegacyIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); - $this->registerAllMeta(new Redstone(new BID(Ids::REDSTONE, LegacyIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->registerAllMeta(new RedstoneComparator(new BIDFlattened(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, [LegacyIds::POWERED_COMPARATOR], 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, [LegacyIds::LIT_REDSTONE_LAMP], 0), "Redstone Lamp", new BreakInfo(0.3))); - $this->registerAllMeta(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, [LegacyIds::LIT_REDSTONE_ORE], 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->registerAllMeta(new RedstoneRepeater(new BIDFlattened(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, [LegacyIds::POWERED_REPEATER], 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, [LegacyIds::UNLIT_REDSTONE_TORCH], 0), "Redstone Torch", BreakInfo::instant())); - $this->registerAllMeta(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, LegacyIds::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); - $this->registerAllMeta(new Reserved6(new BID(Ids::RESERVED6, LegacyIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); + $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS, LegacyIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, LegacyIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); + + $this->register(new Rail(new BID(Ids::RAIL, LegacyIds::RAIL, 0), "Rail", $railBreakInfo)); + $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM, LegacyIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); + $this->register(new Redstone(new BID(Ids::REDSTONE, LegacyIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new RedstoneComparator(new BIDFlattened(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, [LegacyIds::POWERED_COMPARATOR], 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + $this->register(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, [LegacyIds::LIT_REDSTONE_LAMP], 0), "Redstone Lamp", new BreakInfo(0.3))); + $this->register(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, [LegacyIds::LIT_REDSTONE_ORE], 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new RedstoneRepeater(new BIDFlattened(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, [LegacyIds::POWERED_REPEATER], 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); + $this->register(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, [LegacyIds::UNLIT_REDSTONE_TORCH], 0), "Redstone Torch", BreakInfo::instant())); + $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, LegacyIds::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); + $this->register(new Reserved6(new BID(Ids::RESERVED6, LegacyIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); - $this->registerAllMeta( - new Sand(new BID(Ids::SAND, LegacyIds::SAND, 0), "Sand", $sandBreakInfo), - new Sand(new BID(Ids::RED_SAND, LegacyIds::SAND, 1), "Red Sand", $sandBreakInfo) - ); - $this->registerAllMeta(new SeaLantern(new BID(Ids::SEA_LANTERN, LegacyIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); - $this->registerAllMeta(new SeaPickle(new BID(Ids::SEA_PICKLE, LegacyIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); - $this->registerAllMeta(new Skull(new BID(Ids::MOB_HEAD, LegacyIds::MOB_HEAD_BLOCK, 0, ItemIds::SKULL, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - $this->registerAllMeta(new Slime(new BID(Ids::SLIME, LegacyIds::SLIME, 0), "Slime Block", BreakInfo::instant())); - $this->registerAllMeta(new Snow(new BID(Ids::SNOW, LegacyIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new SnowLayer(new BID(Ids::SNOW_LAYER, LegacyIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new SoulSand(new BID(Ids::SOUL_SAND, LegacyIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Sponge(new BID(Ids::SPONGE, LegacyIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); + $this->register(new Sand(new BID(Ids::SAND, LegacyIds::SAND, 0), "Sand", $sandBreakInfo)); + $this->register(new Sand(new BID(Ids::RED_SAND, LegacyIds::SAND, 1), "Red Sand", $sandBreakInfo)); + + $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN, LegacyIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); + $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE, LegacyIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); + $this->register(new Skull(new BID(Ids::MOB_HEAD, LegacyIds::MOB_HEAD_BLOCK, 0, ItemIds::SKULL, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + $this->register(new Slime(new BID(Ids::SLIME, LegacyIds::SLIME, 0), "Slime Block", BreakInfo::instant())); + $this->register(new Snow(new BID(Ids::SNOW, LegacyIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER, LegacyIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SoulSand(new BID(Ids::SOUL_SAND, LegacyIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Sponge(new BID(Ids::SPONGE, LegacyIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - $this->registerAllMeta(new ShulkerBox(new BID(Ids::SHULKER_BOX, LegacyIds::UNDYED_SHULKER_BOX, 0, null, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, LegacyIds::UNDYED_SHULKER_BOX, 0, null, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta( + $this->register( $stone = new class(new BID(Ids::STONE, LegacyIds::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ public function getDropsForCompatibleTool(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; @@ -360,42 +344,41 @@ class BlockFactory{ public function isAffectedBySilkTouch() : bool{ return true; } - }, - new Opaque(new BID(Ids::ANDESITE, LegacyIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo), - new Opaque(new BID(Ids::DIORITE, LegacyIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo), - new Opaque(new BID(Ids::GRANITE, LegacyIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo), - new Opaque(new BID(Ids::POLISHED_ANDESITE, LegacyIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo), - new Opaque(new BID(Ids::POLISHED_DIORITE, LegacyIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo), - new Opaque(new BID(Ids::POLISHED_GRANITE, LegacyIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo) - ); - $this->registerAllMeta( - $stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo), - $mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo), - $crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo), - $chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo) + } ); + $this->register(new Opaque(new BID(Ids::ANDESITE, LegacyIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::DIORITE, LegacyIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::GRANITE, LegacyIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE, LegacyIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE, LegacyIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE, LegacyIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); + + $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); + $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); + $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); + $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); + $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); - $this->registerAllMeta( - new InfestedStone(new BID(Ids::INFESTED_STONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone), - new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick), - new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone), - new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick), - new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick), - new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick) - ); - $this->registerAllMeta(new Stair(new BID(Ids::STONE_STAIRS, LegacyIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Opaque(new BID(Ids::SMOOTH_STONE, LegacyIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::ANDESITE_STAIRS, LegacyIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::DIORITE_STAIRS, LegacyIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::GRANITE_STAIRS, LegacyIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, LegacyIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, LegacyIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, LegacyIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::STONE_BRICK_STAIRS, LegacyIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, LegacyIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - $this->registerAllMeta(new StoneButton(new BID(Ids::STONE_BUTTON, LegacyIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->registerAllMeta(new Stonecutter(new BID(Ids::STONECUTTER, LegacyIds::STONECUTTER_BLOCK, 0, ItemIds::STONECUTTER_BLOCK), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - $this->registerAllMeta(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, LegacyIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); + + $this->register(new Stair(new BID(Ids::STONE_STAIRS, LegacyIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_STONE, LegacyIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS, LegacyIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::DIORITE_STAIRS, LegacyIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::GRANITE_STAIRS, LegacyIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, LegacyIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, LegacyIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, LegacyIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS, LegacyIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, LegacyIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new StoneButton(new BID(Ids::STONE_BUTTON, LegacyIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Stonecutter(new BID(Ids::STONECUTTER, LegacyIds::STONECUTTER_BLOCK, 0, ItemIds::STONECUTTER_BLOCK), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); + $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, LegacyIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); @@ -432,38 +415,34 @@ class BlockFactory{ new Slab($getStoneSlabId(Ids::SMOOTH_QUARTZ_SLAB, 4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo), new Slab($getStoneSlabId(Ids::STONE_SLAB, 4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo), ] as $slabType){ - $this->registerSlabWithDoubleHighBitsRemapping($slabType); + $this->register($slabType); } - $this->registerAllMeta(new Opaque(new BID(Ids::LEGACY_STONECUTTER, LegacyIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new Sugarcane(new BID(Ids::SUGARCANE, LegacyIds::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane", BreakInfo::instant())); - $this->registerAllMeta(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, LegacyIds::SWEET_BERRY_BUSH, 0, ItemIds::SWEET_BERRIES), "Sweet Berry Bush", BreakInfo::instant())); - $this->registerAllMeta(new TNT(new BID(Ids::TNT, LegacyIds::TNT, 0), "TNT", BreakInfo::instant())); - $this->registerAllMeta( - new TallGrass(new BID(Ids::FERN, LegacyIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1)), - new TallGrass(new BID(Ids::TALL_GRASS, LegacyIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1)) - ); - $this->registerAllMeta( - new Torch(new BID(Ids::BLUE_TORCH, LegacyIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant()), - new Torch(new BID(Ids::PURPLE_TORCH, LegacyIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant()) - ); - $this->registerAllMeta( - new Torch(new BID(Ids::RED_TORCH, LegacyIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant()), - new Torch(new BID(Ids::GREEN_TORCH, LegacyIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant()) - ); - $this->registerAllMeta(new Torch(new BID(Ids::TORCH, LegacyIds::TORCH, 0), "Torch", BreakInfo::instant())); - $this->registerAllMeta(new TrappedChest(new BID(Ids::TRAPPED_CHEST, LegacyIds::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest", $chestBreakInfo)); - $this->registerAllMeta(new Tripwire(new BID(Ids::TRIPWIRE, LegacyIds::TRIPWIRE, 0, ItemIds::STRING), "Tripwire", BreakInfo::instant())); - $this->registerAllMeta(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, LegacyIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); - $this->registerAllMeta(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, LegacyIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); - $this->registerAllMeta(new Vine(new BID(Ids::VINES, LegacyIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->registerAllMeta(new Water(new BIDFlattened(Ids::WATER, LegacyIds::FLOWING_WATER, [LegacyIds::STILL_WATER], 0), "Water", BreakInfo::indestructible(500.0))); - $this->registerAllMeta(new WaterLily(new BID(Ids::LILY_PAD, LegacyIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); + $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER, LegacyIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Sugarcane(new BID(Ids::SUGARCANE, LegacyIds::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane", BreakInfo::instant())); + $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, LegacyIds::SWEET_BERRY_BUSH, 0, ItemIds::SWEET_BERRIES), "Sweet Berry Bush", BreakInfo::instant())); + $this->register(new TNT(new BID(Ids::TNT, LegacyIds::TNT, 0), "TNT", BreakInfo::instant())); + $this->register(new TallGrass(new BID(Ids::FERN, LegacyIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new TallGrass(new BID(Ids::TALL_GRASS, LegacyIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); + + $this->register(new Torch(new BID(Ids::BLUE_TORCH, LegacyIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::PURPLE_TORCH, LegacyIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::RED_TORCH, LegacyIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::GREEN_TORCH, LegacyIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::TORCH, LegacyIds::TORCH, 0), "Torch", BreakInfo::instant())); + + $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, LegacyIds::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest", $chestBreakInfo)); + $this->register(new Tripwire(new BID(Ids::TRIPWIRE, LegacyIds::TRIPWIRE, 0, ItemIds::STRING), "Tripwire", BreakInfo::instant())); + $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, LegacyIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); + $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, LegacyIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); + $this->register(new Vine(new BID(Ids::VINES, LegacyIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new Water(new BIDFlattened(Ids::WATER, LegacyIds::FLOWING_WATER, [LegacyIds::STILL_WATER], 0), "Water", BreakInfo::indestructible(500.0))); + $this->register(new WaterLily(new BID(Ids::LILY_PAD, LegacyIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, LegacyIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); - $this->registerAllMeta(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, LegacyIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - $this->registerAllMeta(new Wheat(new BID(Ids::WHEAT, LegacyIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); + $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, LegacyIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); + $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, LegacyIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); + $this->register(new Wheat(new BID(Ids::WHEAT, LegacyIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ @@ -480,82 +459,65 @@ class BlockFactory{ $woodenButtonBreakInfo = new BreakInfo(0.5, ToolType::AXE); $woodenPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::AXE); - $planks = []; - $saplings = []; - $fences = []; - $leaves = []; - $allSidedLogs = []; foreach(TreeType::getAll() as $treeType){ - $magicNumber = $treeType->getMagicNumber(); $name = $treeType->getDisplayName(); - $planks[] = new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($treeType), $name . " Planks", $planksBreakInfo); - $saplings[] = new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType); - $fences[] = new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($treeType), $name . " Fence", $planksBreakInfo); - $this->registerSlabWithDoubleHighBitsRemapping(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($treeType), $name, $planksBreakInfo)); + $this->register(new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($treeType), $name . " Planks", $planksBreakInfo)); + $this->register(new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); + $this->register(new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($treeType), $name . " Fence", $planksBreakInfo)); + $this->register(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($treeType), $name, $planksBreakInfo)); - //TODO: find a better way to deal with this split - $leaves[] = new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType); + $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType, false)); - $wood = new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType, false); - $this->remap($magicNumber >= 4 ? LegacyIds::LOG2 : LegacyIds::LOG, ($magicNumber & 0x03) | 0b1100, $wood); + $this->register(new Log(BlockLegacyIdHelper::getStrippedLogIdentifier($treeType), "Stripped " . $name . " Log", $logBreakInfo, $treeType, true)); - $allSidedLogs[] = $wood; - $allSidedLogs[] = new Wood(BlockLegacyIdHelper::getAllSidedStrippedLogIdentifier($treeType), "Stripped $name Wood", $logBreakInfo, $treeType, true); + $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType, false)); + $this->register(new Wood(BlockLegacyIdHelper::getAllSidedStrippedLogIdentifier($treeType), "Stripped $name Wood", $logBreakInfo, $treeType, true)); - $this->registerAllMeta(new Log(BlockLegacyIdHelper::getStrippedLogIdentifier($treeType), "Stripped " . $name . " Log", $logBreakInfo, $treeType, true)); - $this->registerAllMeta(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); - $this->registerAllMeta(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); - $this->registerAllMeta(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($treeType), $name . " Door", $woodenDoorBreakInfo)); + $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); + $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); + $this->register(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($treeType), $name . " Door", $woodenDoorBreakInfo)); - $this->registerAllMeta(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($treeType), $name . " Button", $woodenButtonBreakInfo)); - $this->registerAllMeta(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($treeType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo)); - $this->registerAllMeta(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($treeType), $name . " Trapdoor", $woodenDoorBreakInfo)); + $this->register(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($treeType), $name . " Button", $woodenButtonBreakInfo)); + $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($treeType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo)); + $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($treeType), $name . " Trapdoor", $woodenDoorBreakInfo)); - $this->registerAllMeta(new FloorSign(BlockLegacyIdHelper::getWoodenFloorSignIdentifier($treeType), $name . " Sign", $signBreakInfo)); - $this->registerAllMeta(new WallSign(BlockLegacyIdHelper::getWoodenWallSignIdentifier($treeType), $name . " Wall Sign", $signBreakInfo)); + $this->register(new FloorSign(BlockLegacyIdHelper::getWoodenFloorSignIdentifier($treeType), $name . " Sign", $signBreakInfo)); + $this->register(new WallSign(BlockLegacyIdHelper::getWoodenWallSignIdentifier($treeType), $name . " Wall Sign", $signBreakInfo)); } - $this->registerAllMeta(...$planks); - $this->registerAllMeta(...$saplings); - $this->registerAllMeta(...$fences); - $this->registerAllMeta(...$leaves); - $this->registerAllMeta(...$allSidedLogs); $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, LegacyIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, LegacyIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SANDSTONE_STAIRS, LegacyIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, LegacyIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); - $this->registerAllMeta( - new Opaque(new BID(Ids::SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::CHISELED_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::CUT_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::SMOOTH_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo), - ); - $this->registerAllMeta( - new Opaque(new BID(Ids::RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::CUT_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo), - new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo), - ); + $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, LegacyIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, LegacyIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo)); + + $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS, LegacyIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, LegacyIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo)); $glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); foreach(DyeColor::getAll() as $color){ $coloredName = function(string $name) use($color) : string{ return $color->getDisplayName() . " " . $name; }; - $this->registerAllMeta(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); + $this->register(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); } - $this->registerAllMeta(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, LegacyIds::SHULKER_BOX, 0, null, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); - $this->registerAllMeta(new StainedGlass(new BID(Ids::STAINED_GLASS, LegacyIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); - $this->registerAllMeta(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, LegacyIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); - $this->registerAllMeta(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, LegacyIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); - $this->registerAllMeta(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, LegacyIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, LegacyIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->registerAllMeta(new Carpet(new BID(Ids::CARPET, LegacyIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); - $this->registerAllMeta(new Concrete(new BID(Ids::CONCRETE, LegacyIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->registerAllMeta(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, LegacyIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->registerAllMeta(new Wool(new BID(Ids::WOOL, LegacyIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, LegacyIds::SHULKER_BOX, 0, null, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS, LegacyIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); + $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, LegacyIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); + $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, LegacyIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); + $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, LegacyIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, LegacyIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new Carpet(new BID(Ids::CARPET, LegacyIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); + $this->register(new Concrete(new BID(Ids::CONCRETE, LegacyIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, LegacyIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Wool(new BID(Ids::WOOL, LegacyIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); if($item->getBlockToolType() === ToolType::SHEARS){ @@ -568,48 +530,44 @@ class BlockFactory{ //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->registerAllMeta( - new Wall(new BID(Ids::COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo), - new Wall(new BID(Ids::ANDESITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo), - new Wall(new BID(Ids::BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::DIORITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo), - new Wall(new BID(Ids::END_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::GRANITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo), - new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo), - new Wall(new BID(Ids::NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::PRISMARINE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo), - new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo), - new Wall(new BID(Ids::RED_SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo), - new Wall(new BID(Ids::SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo), - new Wall(new BID(Ids::STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo), - ); + $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::ANDESITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::DIORITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::GRANITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::PRISMARINE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo)); $this->registerElements(); $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->registerAllMeta( - new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::LAB_TABLE, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo), - new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo) - ); + $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); - $this->registerAllMeta(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, LegacyIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); + $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, LegacyIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); $this->registerMushroomBlocks(); - $this->registerAllMeta(new Coral( + $this->register(new Coral( new BID(Ids::CORAL, LegacyIds::CORAL, 0), "Coral", BreakInfo::instant(), )); - $this->registerAllMeta(new FloorCoralFan( + $this->register(new FloorCoralFan( new BlockIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, [LegacyIds::CORAL_FAN_DEAD], 0, ItemIds::CORAL_FAN), "Coral Fan", BreakInfo::instant(), )); - $this->registerAllMeta(new WallCoralFan( + $this->register(new WallCoralFan( new BlockIdentifierFlattened(Ids::WALL_CORAL_FAN, LegacyIds::CORAL_FAN_HANG, [LegacyIds::CORAL_FAN_HANG2, LegacyIds::CORAL_FAN_HANG3], 0, ItemIds::CORAL_FAN), "Wall Coral Fan", BreakInfo::instant(), @@ -751,279 +709,183 @@ class BlockFactory{ } private function registerMushroomBlocks() : void{ - //shrooms have to be handled one by one because some metas are variants and others aren't, and they can't be - //separated by a bitmask - $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); - $mushroomBlocks = [ - new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, LegacyIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo), - new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, LegacyIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo) - ]; - - //caps - foreach([ - Meta::MUSHROOM_BLOCK_ALL_PORES, - Meta::MUSHROOM_BLOCK_CAP_NORTHWEST_CORNER, - Meta::MUSHROOM_BLOCK_CAP_NORTH_SIDE, - Meta::MUSHROOM_BLOCK_CAP_NORTHEAST_CORNER, - Meta::MUSHROOM_BLOCK_CAP_WEST_SIDE, - Meta::MUSHROOM_BLOCK_CAP_TOP_ONLY, - Meta::MUSHROOM_BLOCK_CAP_EAST_SIDE, - Meta::MUSHROOM_BLOCK_CAP_SOUTHWEST_CORNER, - Meta::MUSHROOM_BLOCK_CAP_SOUTH_SIDE, - Meta::MUSHROOM_BLOCK_CAP_SOUTHEAST_CORNER, - Meta::MUSHROOM_BLOCK_ALL_CAP, - ] as $meta){ - foreach($mushroomBlocks as $block){ - $block->readStateFromData($block->getId(), $meta); - $this->remap($block->getId(), $meta, clone $block); - } - } - - //and the invalid states - for($meta = 11; $meta <= 13; ++$meta){ - foreach($mushroomBlocks as $block){ - $this->remap($block->getId(), $meta, clone $block); - } - } + $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, LegacyIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo)); + $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, LegacyIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo)); //finally, the stems - $mushroomStem = new MushroomStem(new BID(Ids::MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo); - $this->remap(LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); - $this->remap(LegacyIds::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM, $mushroomStem); - $allSidedMushroomStem = new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo); - $this->remap(LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); - $this->remap(LegacyIds::RED_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM, $allSidedMushroomStem); + $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); + $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); } private function registerElements() : void{ $instaBreak = BreakInfo::instant(); - $this->registerAllMeta(new Opaque(new BID(Ids::ELEMENT_ZERO, LegacyIds::ELEMENT_0, 0), "???", $instaBreak)); + $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO, LegacyIds::ELEMENT_0, 0), "???", $instaBreak)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HYDROGEN, LegacyIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HELIUM, LegacyIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LITHIUM, LegacyIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BERYLLIUM, LegacyIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BORON, LegacyIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CARBON, LegacyIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NITROGEN, LegacyIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OXYGEN, LegacyIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FLUORINE, LegacyIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEON, LegacyIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SODIUM, LegacyIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MAGNESIUM, LegacyIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ALUMINUM, LegacyIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SILICON, LegacyIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, LegacyIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SULFUR, LegacyIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CHLORINE, LegacyIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ARGON, LegacyIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_POTASSIUM, LegacyIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CALCIUM, LegacyIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SCANDIUM, LegacyIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TITANIUM, LegacyIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_VANADIUM, LegacyIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CHROMIUM, LegacyIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MANGANESE, LegacyIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IRON, LegacyIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COBALT, LegacyIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NICKEL, LegacyIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COPPER, LegacyIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ZINC, LegacyIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GALLIUM, LegacyIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GERMANIUM, LegacyIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ARSENIC, LegacyIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SELENIUM, LegacyIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BROMINE, LegacyIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_KRYPTON, LegacyIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUBIDIUM, LegacyIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_STRONTIUM, LegacyIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_YTTRIUM, LegacyIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, LegacyIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NIOBIUM, LegacyIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, LegacyIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TECHNETIUM, LegacyIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUTHENIUM, LegacyIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RHODIUM, LegacyIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PALLADIUM, LegacyIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SILVER, LegacyIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CADMIUM, LegacyIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_INDIUM, LegacyIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TIN, LegacyIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ANTIMONY, LegacyIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TELLURIUM, LegacyIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IODINE, LegacyIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_XENON, LegacyIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CESIUM, LegacyIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BARIUM, LegacyIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LANTHANUM, LegacyIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CERIUM, LegacyIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, LegacyIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEODYMIUM, LegacyIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PROMETHIUM, LegacyIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SAMARIUM, LegacyIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_EUROPIUM, LegacyIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GADOLINIUM, LegacyIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TERBIUM, LegacyIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, LegacyIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HOLMIUM, LegacyIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ERBIUM, LegacyIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THULIUM, LegacyIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_YTTERBIUM, LegacyIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LUTETIUM, LegacyIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HAFNIUM, LegacyIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TANTALUM, LegacyIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TUNGSTEN, LegacyIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RHENIUM, LegacyIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OSMIUM, LegacyIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_IRIDIUM, LegacyIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PLATINUM, LegacyIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_GOLD, LegacyIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MERCURY, LegacyIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THALLIUM, LegacyIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LEAD, LegacyIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BISMUTH, LegacyIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_POLONIUM, LegacyIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ASTATINE, LegacyIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RADON, LegacyIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FRANCIUM, LegacyIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RADIUM, LegacyIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ACTINIUM, LegacyIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_THORIUM, LegacyIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, LegacyIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_URANIUM, LegacyIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, LegacyIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_PLUTONIUM, LegacyIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_AMERICIUM, LegacyIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CURIUM, LegacyIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BERKELIUM, LegacyIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, LegacyIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, LegacyIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FERMIUM, LegacyIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, LegacyIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NOBELIUM, LegacyIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, LegacyIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, LegacyIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DUBNIUM, LegacyIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_SEABORGIUM, LegacyIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_BOHRIUM, LegacyIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_HASSIUM, LegacyIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MEITNERIUM, LegacyIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, LegacyIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, LegacyIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_COPERNICIUM, LegacyIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_NIHONIUM, LegacyIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_FLEROVIUM, LegacyIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, LegacyIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, LegacyIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_TENNESSINE, LegacyIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); - $this->registerAllMeta(new Element(new BID(Ids::ELEMENT_OGANESSON, LegacyIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN, LegacyIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_HELIUM, LegacyIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM, LegacyIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM, LegacyIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_BORON, LegacyIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_CARBON, LegacyIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN, LegacyIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN, LegacyIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE, LegacyIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_NEON, LegacyIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_SODIUM, LegacyIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM, LegacyIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM, LegacyIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_SILICON, LegacyIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, LegacyIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_SULFUR, LegacyIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE, LegacyIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_ARGON, LegacyIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM, LegacyIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM, LegacyIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM, LegacyIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM, LegacyIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM, LegacyIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM, LegacyIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE, LegacyIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRON, LegacyIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COBALT, LegacyIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NICKEL, LegacyIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPPER, LegacyIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZINC, LegacyIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM, LegacyIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM, LegacyIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC, LegacyIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM, LegacyIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_BROMINE, LegacyIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON, LegacyIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM, LegacyIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM, LegacyIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM, LegacyIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, LegacyIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM, LegacyIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, LegacyIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM, LegacyIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM, LegacyIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM, LegacyIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM, LegacyIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SILVER, LegacyIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM, LegacyIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_INDIUM, LegacyIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TIN, LegacyIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY, LegacyIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM, LegacyIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_IODINE, LegacyIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_XENON, LegacyIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_CESIUM, LegacyIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BARIUM, LegacyIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM, LegacyIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_CERIUM, LegacyIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, LegacyIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM, LegacyIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM, LegacyIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM, LegacyIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM, LegacyIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM, LegacyIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM, LegacyIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, LegacyIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM, LegacyIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM, LegacyIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_THULIUM, LegacyIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM, LegacyIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM, LegacyIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM, LegacyIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM, LegacyIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN, LegacyIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM, LegacyIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM, LegacyIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM, LegacyIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM, LegacyIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GOLD, LegacyIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MERCURY, LegacyIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM, LegacyIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LEAD, LegacyIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH, LegacyIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM, LegacyIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE, LegacyIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_RADON, LegacyIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM, LegacyIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_RADIUM, LegacyIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM, LegacyIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_THORIUM, LegacyIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, LegacyIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_URANIUM, LegacyIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, LegacyIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM, LegacyIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM, LegacyIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CURIUM, LegacyIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM, LegacyIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, LegacyIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, LegacyIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM, LegacyIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, LegacyIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM, LegacyIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, LegacyIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, LegacyIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM, LegacyIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM, LegacyIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM, LegacyIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM, LegacyIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM, LegacyIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, LegacyIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, LegacyIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM, LegacyIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM, LegacyIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM, LegacyIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, LegacyIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, LegacyIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE, LegacyIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON, LegacyIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); } /** - * Claims the whole metadata range (0-15) for all IDs associated with this block. Any unregistered states will be - * mapped to the default (provided) state. - * - * This should only be used when this block type has sole ownership of an ID. For IDs which contain multiple block - * types (variants), the regular register() method should be used instead. - */ - private function registerAllMeta(Block $default, Block ...$additional) : void{ - $ids = []; - $this->register($default); - foreach($default->getIdInfo()->getAllLegacyBlockIds() as $id){ - $ids[$id] = $id; - } - foreach($additional as $block){ - $this->register($block); - foreach($block->getIdInfo()->getAllLegacyBlockIds() as $id){ - $ids[$id] = $id; - } - } - - foreach($ids as $id){ - $this->defaultStateIndexes[$id] = $default->getFullId(); - } - } - - private function registerSlabWithDoubleHighBitsRemapping(Slab $block) : void{ - $this->register($block); - $identifierFlattened = $block->getIdInfo(); - if($identifierFlattened instanceof BlockIdentifierFlattened){ - $this->remap($identifierFlattened->getSecondId(), $identifierFlattened->getLegacyVariant() | 0x8, $block->setSlabType(SlabType::DOUBLE())); - } - } - - /** - * Maps a block type to its corresponding ID. This is necessary to ensure that the block is correctly loaded when - * reading from disk storage. + * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading + * from disk, and also when being read at runtime. * * NOTE: If you are registering a new block type, you will need to add it to the creative inventory yourself - it * will not automatically appear there. * * @param bool $override Whether to override existing registrations * - * @throws \RuntimeException if something attempted to override an already-registered block without specifying the + * @throws \InvalidArgumentException if something attempted to override an already-registered block without specifying the * $override parameter. */ public function register(Block $block, bool $override = false) : void{ - $variant = $block->getIdInfo()->getLegacyVariant(); + $typeId = $block->getTypeId(); - $stateMask = $block->getStateBitmask(); - if(($variant & $stateMask) !== 0){ - throw new \InvalidArgumentException("Block variant collides with state bitmask"); + if(!$override && isset($this->typeIndex[$typeId])){ + throw new \InvalidArgumentException("Block ID $typeId is already used by another block, and override was not requested"); } - foreach($block->getIdInfo()->getAllLegacyBlockIds() as $id){ - if(!$override && $this->isRegistered($id, $variant)){ - throw new \InvalidArgumentException("Block registration $id:$variant conflicts with an existing block"); + $this->typeIndex[$typeId] = clone $block; + + //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes + //at some point we'll need to find a better way to do this + for($stateData = 0; $stateData < (1 << Block::INTERNAL_STATE_DATA_BITS); ++$stateData){ + $v = clone $block; + try{ + $v->decodeStateData($stateData); + if($v->computeStateData() !== $stateData){ + //if the fullID comes back different, this is a broken state that we can't rely on; map it to default + throw new InvalidBlockStateException("Corrupted state"); + } + }catch(InvalidBlockStateException $e){ //invalid property combination, leave it + continue; } - for($m = $variant; $m <= ($variant | $stateMask); ++$m){ - if(($m & ~$stateMask) !== $variant){ - continue; - } - - if(!$override && $this->isRegistered($id, $m)){ - throw new \InvalidArgumentException("Block registration " . get_class($block) . " has states which conflict with other blocks"); - } - - $index = ($id << Block::INTERNAL_METADATA_BITS) | $m; - - $v = clone $block; - try{ - $v->readStateFromData($id, $m); - if($v->getFullId() !== $index){ - //if the fullID comes back different, this is a broken state that we can't rely on; map it to default - throw new InvalidBlockStateException("Corrupted state"); - } - }catch(InvalidBlockStateException $e){ //invalid property combination, fill the default state - $this->fillStaticArrays($index, $block); - continue; - } - - $this->fillStaticArrays($index, $v); - } + $this->fillStaticArrays($v->getStateId(), $v); } } - public function remap(int $id, int $meta, Block $block) : void{ - $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; - if($this->isRegistered($id, $meta)){ - $existing = $this->fullList[$index] ?? null; - if($existing !== null && $existing->getFullId() === $index){ - throw new \InvalidArgumentException("$id:$meta is already mapped"); - }else{ - //if it's not a match, this was already remapped for some reason; remapping overwrites are OK - } - } - $this->fillStaticArrays(($id << Block::INTERNAL_METADATA_BITS) | $meta, $block); - } - private function fillStaticArrays(int $index, Block $block) : void{ - $fullId = $block->getFullId(); + $fullId = $block->getStateId(); if($index !== $fullId){ - $this->mappedStateIndexes[$index] = $fullId; + throw new AssumptionFailedError("Cannot fill static arrays for an invalid blockstate"); }else{ $this->fullList[$index] = $block; $this->blastResistance[$index] = $block->getBreakInfo()->getBlastResistance(); @@ -1036,67 +898,54 @@ class BlockFactory{ } /** - * @deprecated This method should ONLY be used for deserializing data, e.g. from a config or database. For all other - * purposes, use VanillaBlocks. + * @internal * @see VanillaBlocks * - * Deserializes a block from the provided legacy ID and legacy meta. + * Deserializes a block from the provided type ID and internal state data. */ - public function get(int $id, int $meta) : Block{ - if($meta < 0 || $meta >= (1 << Block::INTERNAL_METADATA_BITS)){ - throw new \InvalidArgumentException("Block meta value $meta is out of bounds"); + public function get(int $typeId, int $stateData) : Block{ + if($stateData < 0 || $stateData >= (1 << Block::INTERNAL_STATE_DATA_BITS)){ + throw new \InvalidArgumentException("Block meta value $stateData is out of bounds"); } - $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; + $index = ($typeId << Block::INTERNAL_STATE_DATA_BITS) | $stateData; if($index < 0){ - throw new \InvalidArgumentException("Block ID $id is out of bounds"); + throw new \InvalidArgumentException("Block ID $typeId is out of bounds"); } - if(isset($this->fullList[$index])){ //hot + if(isset($this->fullList[$index])) { //hot $block = clone $this->fullList[$index]; - }elseif(($mappedIndex = $this->getMappedStateId($index)) !== $index && isset($this->fullList[$mappedIndex])){ //cold - $block = clone $this->fullList[$mappedIndex]; }else{ - $block = new UnknownBlock(new BID($id, $id, $meta), BreakInfo::instant()); + $block = new UnknownBlock(new BID($typeId, $typeId, $stateData), BreakInfo::instant()); } return $block; } public function fromFullBlock(int $fullState) : Block{ - return $this->get($fullState >> Block::INTERNAL_METADATA_BITS, $fullState & Block::INTERNAL_METADATA_MASK); + return $this->get($fullState >> Block::INTERNAL_STATE_DATA_BITS, $fullState & Block::INTERNAL_STATE_DATA_MASK); } /** * Returns whether a specified block state is already registered in the block factory. */ - public function isRegistered(int $id, int $meta = 0) : bool{ - $index = ($id << Block::INTERNAL_METADATA_BITS) | $meta; + public function isRegistered(int $typeId, int $stateData = 0) : bool{ + $index = ($typeId << Block::INTERNAL_STATE_DATA_BITS) | $stateData; $b = $this->fullList[$index] ?? null; - if($b === null){ - $mappedIndex = $this->mappedStateIndexes[$index] ?? $this->defaultStateIndexes[$id] ?? null; - if($mappedIndex === null){ - return false; - } - $b = $this->fullList[$mappedIndex] ?? null; - } return $b !== null && !($b instanceof UnknownBlock); } + /** + * @return Block[] + * @phpstan-return array + */ + public function getAllKnownTypes() : array{ + return $this->typeIndex; + } + /** * @return Block[] */ public function getAllKnownStates() : array{ return $this->fullList; } - - /** - * Returns the ID of the state mapped to the given state ID. - * Used to correct invalid blockstates found in loaded chunks. - */ - public function getMappedStateId(int $fullState) : int{ - if(isset($this->fullList[$fullState])){ - return $fullState; - } - return $this->mappedStateIndexes[$fullState] ?? $this->defaultStateIndexes[$fullState >> Block::INTERNAL_METADATA_BITS] ?? $fullState; - } } diff --git a/src/block/BoneBlock.php b/src/block/BoneBlock.php index 4c69e535f..247bdb748 100644 --- a/src/block/BoneBlock.php +++ b/src/block/BoneBlock.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\PillarRotationInMetadataTrait; +use pocketmine\block\utils\PillarRotationTrait; class BoneBlock extends Opaque{ - use PillarRotationInMetadataTrait; + use PillarRotationTrait; } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index c1840502e..20b1d802e 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -24,6 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\BrewingStand as TileBrewingStand; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; @@ -42,33 +46,12 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; - protected function writeStateToMeta() : int{ - $flags = 0; - foreach([ - BlockLegacyMetadata::BREWING_STAND_FLAG_EAST => BrewingStandSlot::EAST(), - BlockLegacyMetadata::BREWING_STAND_FLAG_NORTHWEST => BrewingStandSlot::NORTHWEST(), - BlockLegacyMetadata::BREWING_STAND_FLAG_SOUTHWEST => BrewingStandSlot::SOUTHWEST(), - ] as $flag => $slot){ - $flags |= (array_key_exists($slot->id(), $this->slots) ? $flag : 0); - } - return $flags; + protected function decodeState(BlockDataReader $r) : void{ + $this->setSlots(BlockDataReaderHelper::readBrewingStandSlotKeySet($r)); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->slots = []; - foreach([ - BlockLegacyMetadata::BREWING_STAND_FLAG_EAST => BrewingStandSlot::EAST(), - BlockLegacyMetadata::BREWING_STAND_FLAG_NORTHWEST => BrewingStandSlot::NORTHWEST(), - BlockLegacyMetadata::BREWING_STAND_FLAG_SOUTHWEST => BrewingStandSlot::SOUTHWEST(), - ] as $flag => $slot){ - if(($stateMeta & $flag) !== 0){ - $this->slots[$slot->id()] = $slot; - } - } - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeBrewingStandSlotKeySet($w, $this->slots); } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Button.php b/src/block/Button.php index 967e0d4f0..6e45df559 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -38,18 +39,14 @@ abstract class Button extends Flowable{ protected bool $pressed = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeFacing($this->facing) | ($this->pressed ? BlockLegacyMetadata::BUTTON_FLAG_POWERED : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readFacing(); + $this->pressed = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - //TODO: in PC it's (6 - facing) for every meta except 0 (down) - $this->facing = BlockDataSerializer::readFacing($stateMeta & 0x07); - $this->pressed = ($stateMeta & BlockLegacyMetadata::BUTTON_FLAG_POWERED) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->facing); + $w->writeBool($this->pressed); } public function isPressed() : bool{ return $this->pressed; } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index ad79d35ca..56b9129a3 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\event\block\BlockGrowEvent; @@ -41,16 +42,12 @@ class Cactus extends Transparent{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Cake.php b/src/block/Cake.php index f35684c1b..770b8fcfe 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\FoodSource; @@ -40,16 +41,12 @@ class Cake extends Transparent implements FoodSource{ protected int $bites = 0; - protected function writeStateToMeta() : int{ - return $this->bites; + protected function decodeState(BlockDataReader $r) : void{ + $this->bites = $r->readBoundedInt(3, 0, self::MAX_BITES); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->bites = BlockDataSerializer::readBoundedInt("bites", $stateMeta, 0, self::MAX_BITES); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->bites); } /** diff --git a/src/block/Carpet.php b/src/block/Carpet.php index a0dde73c8..75b9220b9 100644 --- a/src/block/Carpet.php +++ b/src/block/Carpet.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -33,7 +33,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class Carpet extends Flowable{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/CarvedPumpkin.php b/src/block/CarvedPumpkin.php index 7c99c1531..5fc73d088 100644 --- a/src/block/CarvedPumpkin.php +++ b/src/block/CarvedPumpkin.php @@ -23,23 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; class CarvedPumpkin extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - } - - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing); - } - - public function getStateBitmask() : int{ - return 0b11; - } } diff --git a/src/block/ChemistryTable.php b/src/block/ChemistryTable.php index fb2310dcd..d1e008d0e 100644 --- a/src/block/ChemistryTable.php +++ b/src/block/ChemistryTable.php @@ -23,11 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; -use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -35,18 +33,6 @@ final class ChemistryTable extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = Facing::opposite(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x3)); - } - - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::opposite($this->facing)); - } - - public function getStateBitmask() : int{ - return 0b0011; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ //TODO return false; diff --git a/src/block/Chest.php b/src/block/Chest.php index 59c21e1b6..55a0591ca 100644 --- a/src/block/Chest.php +++ b/src/block/Chest.php @@ -25,7 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Chest as TileChest; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\event\block\ChestPairEvent; use pocketmine\item\Item; @@ -36,7 +36,7 @@ use pocketmine\player\Player; class Chest extends Transparent{ use FacesOppositePlacingPlayerTrait; - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait; /** * @return AxisAlignedBB[] diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 8c01c29cc..b21af5e63 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; @@ -46,17 +47,14 @@ class CocoaBlock extends Transparent{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::opposite($this->facing)) | ($this->age << 2); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = Facing::opposite(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03)); - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta >> 2, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeInt(2, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Concrete.php b/src/block/Concrete.php index 7e16ee4f6..7f07be308 100644 --- a/src/block/Concrete.php +++ b/src/block/Concrete.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; class Concrete extends Opaque{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/ConcretePowder.php b/src/block/ConcretePowder.php index 340c610b1..b70532c3f 100644 --- a/src/block/ConcretePowder.php +++ b/src/block/ConcretePowder.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; @@ -31,7 +31,7 @@ use pocketmine\event\block\BlockFormEvent; use pocketmine\math\Facing; class ConcretePowder extends Opaque implements Fallable{ - use ColorInMetadataTrait; + use ColoredTrait; use FallableTrait { onNearbyBlockChange as protected startFalling; } diff --git a/src/block/Coral.php b/src/block/Coral.php index 6bbd50b73..7cb301b2c 100644 --- a/src/block/Coral.php +++ b/src/block/Coral.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -33,24 +32,8 @@ use pocketmine\world\BlockTransaction; final class Coral extends BaseCoral{ - public function readStateFromData(int $id, int $stateMeta) : void{ - $coralType = CoralTypeIdMap::getInstance()->fromId($stateMeta); - if($coralType === null){ - throw new InvalidBlockStateException("No such coral type"); - } - $this->coralType = $coralType; - } - - public function writeStateToMeta() : int{ - return CoralTypeIdMap::getInstance()->toId($this->coralType); - } - protected function writeStateToItemMeta() : int{ - return $this->writeStateToMeta(); - } - - public function getStateBitmask() : int{ - return 0b0111; + return CoralTypeIdMap::getInstance()->toId($this->coralType); } public function readStateFromWorld() : void{ diff --git a/src/block/CoralBlock.php b/src/block/CoralBlock.php index e29591b3d..2075af358 100644 --- a/src/block/CoralBlock.php +++ b/src/block/CoralBlock.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use function mt_rand; @@ -38,25 +37,8 @@ final class CoralBlock extends Opaque{ parent::__construct($idInfo, $name, $breakInfo); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $coralType = CoralTypeIdMap::getInstance()->fromId($stateMeta & 0x7); - if($coralType === null){ - throw new InvalidBlockStateException("No such coral type"); - } - $this->coralType = $coralType; - $this->dead = ($stateMeta & BlockLegacyMetadata::CORAL_BLOCK_FLAG_DEAD) !== 0; - } - - protected function writeStateToMeta() : int{ - return ($this->dead ? BlockLegacyMetadata::CORAL_BLOCK_FLAG_DEAD : 0) | CoralTypeIdMap::getInstance()->toId($this->coralType); - } - protected function writeStateToItemMeta() : int{ - return $this->writeStateToMeta(); - } - - public function getStateBitmask() : int{ - return 0b1111; + return ($this->dead ? BlockLegacyMetadata::CORAL_BLOCK_FLAG_DEAD : 0) | CoralTypeIdMap::getInstance()->toId($this->coralType); } public function onNearbyBlockChange() : void{ diff --git a/src/block/Crops.php b/src/block/Crops.php index c2f01c92c..f7823a8eb 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -38,16 +39,12 @@ abstract class Crops extends Flowable{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(3, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index c13df4b6a..01c7040a4 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -39,30 +40,16 @@ use const M_PI; class DaylightSensor extends Transparent{ use AnalogRedstoneSignalEmitterTrait; - protected BlockIdentifierFlattened $idInfoFlattened; - protected bool $inverted = false; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->signalStrength = $r->readBoundedInt(4, 0, 15); + $this->inverted = $r->readBool(); } - public function getId() : int{ - return $this->inverted ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - protected function writeStateToMeta() : int{ - return $this->signalStrength; - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->signalStrength = BlockDataSerializer::readBoundedInt("signalStrength", $stateMeta, 0, 15); - $this->inverted = $id === $this->idInfoFlattened->getSecondId(); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->signalStrength); + $w->writeBool($this->inverted); } public function isInverted() : bool{ diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index e3eb0a486..ad4d95810 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -23,9 +23,22 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; + class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->activated = $r->readBool(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $w->writeBool($this->activated); + } + public function isActivated() : bool{ return $this->activated; } /** @return $this */ @@ -33,19 +46,5 @@ class DetectorRail extends StraightOnlyRail{ $this->activated = $activated; return $this; } - - public function readStateFromData(int $id, int $stateMeta) : void{ - parent::readStateFromData($id, $stateMeta & ~BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED); - $this->activated = ($stateMeta & BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED) !== 0; - } - - protected function writeStateToMeta() : int{ - return parent::writeStateToMeta() | ($this->activated ? BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED : 0); - } - - public function getStateBitmask() : int{ - return 0b1111; - } - //TODO } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 8197f1415..d926000aa 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Hoe; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -31,23 +33,18 @@ use pocketmine\player\Player; use pocketmine\world\sound\ItemUseOnBlockSound; class Dirt extends Opaque{ - protected bool $coarse = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->coarse = ($stateMeta & BlockLegacyMetadata::DIRT_FLAG_COARSE) !== 0; - } - - protected function writeStateToMeta() : int{ + protected function writeStateToItemMeta() : int{ return $this->coarse ? BlockLegacyMetadata::DIRT_FLAG_COARSE : 0; } - protected function writeStateToItemMeta() : int{ - return $this->writeStateToMeta(); + protected function decodeState(BlockDataReader $r) : void{ + $this->coarse = $r->readBool(); } - public function getStateBitmask() : int{ - return 0b1; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->coarse); } public function isCoarse() : bool{ return $this->coarse; } diff --git a/src/block/Door.php b/src/block/Door.php index 0c4afdb65..6f3654ca5 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; @@ -41,27 +42,18 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - protected function writeStateToMeta() : int{ - if($this->top){ - return BlockLegacyMetadata::DOOR_FLAG_TOP | - ($this->hingeRight ? BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT : 0); - } - - return BlockDataSerializer::writeLegacyHorizontalFacing(Facing::rotateY($this->facing, true)) | ($this->open ? BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->top = $r->readBool(); + $this->hingeRight = $r->readBool(); + $this->open = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->top = ($stateMeta & BlockLegacyMetadata::DOOR_FLAG_TOP) !== 0; - if($this->top){ - $this->hingeRight = ($stateMeta & BlockLegacyMetadata::DOOR_TOP_FLAG_RIGHT) !== 0; - }else{ - $this->facing = Facing::rotateY(BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03), false); - $this->open = ($stateMeta & BlockLegacyMetadata::DOOR_BOTTOM_FLAG_OPEN) !== 0; - } - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->top); + $w->writeBool($this->hingeRight); + $w->writeBool($this->open); } public function readStateFromWorld() : void{ diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 517e77e58..14d363794 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -30,19 +32,14 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ - protected bool $top = false; - protected function writeStateToMeta() : int{ - return ($this->top ? BlockLegacyMetadata::DOUBLE_PLANT_FLAG_TOP : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->top = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->top = ($stateMeta & BlockLegacyMetadata::DOUBLE_PLANT_FLAG_TOP) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1000; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->top); } public function isTop() : bool{ return $this->top; } diff --git a/src/block/DyedShulkerBox.php b/src/block/DyedShulkerBox.php index 1e950c791..ffe5e5f16 100644 --- a/src/block/DyedShulkerBox.php +++ b/src/block/DyedShulkerBox.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class DyedShulkerBox extends ShulkerBox{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 4f957da72..e9c69b1fc 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\math\AxisAlignedBB; @@ -35,17 +36,14 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->eye ? BlockLegacyMetadata::END_PORTAL_FRAME_FLAG_EYE : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->eye = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->eye = ($stateMeta & BlockLegacyMetadata::END_PORTAL_FRAME_FLAG_EYE) !== 0; - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->eye); } public function hasEye() : bool{ return $this->eye; } diff --git a/src/block/EndRod.php b/src/block/EndRod.php index d980b63af..f0b28c26d 100644 --- a/src/block/EndRod.php +++ b/src/block/EndRod.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -36,27 +35,6 @@ use pocketmine\world\BlockTransaction; class EndRod extends Flowable{ use AnyFacingTrait; - protected function writeStateToMeta() : int{ - $result = BlockDataSerializer::writeFacing($this->facing); - if(Facing::axis($this->facing) !== Axis::Y){ - $result ^= 1; //TODO: in PC this is always the same as facing, just PE is stupid - } - - return $result; - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - if($stateMeta !== 0 && $stateMeta !== 1){ - $stateMeta ^= 1; - } - - $this->facing = BlockDataSerializer::readFacing($stateMeta); - } - - public function getStateBitmask() : int{ - return 0b111; - } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $this->facing = $face; if($blockClicked instanceof EndRod && $blockClicked->facing === $this->facing){ diff --git a/src/block/EnderChest.php b/src/block/EnderChest.php index cf1ec0039..e71206b56 100644 --- a/src/block/EnderChest.php +++ b/src/block/EnderChest.php @@ -26,7 +26,7 @@ namespace pocketmine\block; use pocketmine\block\inventory\EnderChestInventory; use pocketmine\block\tile\EnderChest as TileEnderChest; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -36,7 +36,7 @@ use pocketmine\player\Player; class EnderChest extends Transparent{ use FacesOppositePlacingPlayerTrait; - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait; public function getLightLevel() : int{ return 7; diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 6e1ad13f0..8dfb3f6f7 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\entity\EntityTrampleFarmlandEvent; @@ -37,16 +38,12 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC - protected function writeStateToMeta() : int{ - return $this->wetness; + protected function decodeState(BlockDataReader $r) : void{ + $this->wetness = $r->readBoundedInt(3, 0, self::MAX_WETNESS); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->wetness = BlockDataSerializer::readBoundedInt("wetness", $stateMeta, 0, self::MAX_WETNESS); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->wetness); } public function getWetness() : int{ return $this->wetness; } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index fefd49b6c..0cec6374e 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; @@ -40,20 +41,16 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | - ($this->open ? BlockLegacyMetadata::FENCE_GATE_FLAG_OPEN : 0) | - ($this->inWall ? BlockLegacyMetadata::FENCE_GATE_FLAG_IN_WALL : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->open = $r->readBool(); + $this->inWall = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->open = ($stateMeta & BlockLegacyMetadata::FENCE_GATE_FLAG_OPEN) !== 0; - $this->inWall = ($stateMeta & BlockLegacyMetadata::FENCE_GATE_FLAG_IN_WALL) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->open); + $w->writeBool($this->inWall); } public function isOpen() : bool{ return $this->open; } diff --git a/src/block/Fire.php b/src/block/Fire.php index ba8f31463..b9da2f33a 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\projectile\Arrow; use pocketmine\event\block\BlockBurnEvent; @@ -45,16 +46,12 @@ class Fire extends Flowable{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/FloorBanner.php b/src/block/FloorBanner.php index d2ac152af..5e0074477 100644 --- a/src/block/FloorBanner.php +++ b/src/block/FloorBanner.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SignLikeRotationTrait; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -31,18 +33,19 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class FloorBanner extends BaseBanner{ - use SignLikeRotationTrait; - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->rotation = $stateMeta; + use SignLikeRotationTrait { + decodeState as decodeRotation; + encodeState as encodeRotation; } - protected function writeStateToMeta() : int{ - return $this->rotation; + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->decodeRotation($r); } - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $this->encodeRotation($w); } protected function getSupportingFace() : int{ diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 8572adf73..d1515eef9 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use pocketmine\item\ItemFactory; @@ -37,30 +38,8 @@ use function atan2; use function rad2deg; final class FloorCoralFan extends BaseCoral{ - - protected BlockIdentifierFlattened $idInfoFlattened; - private int $axis = Axis::X; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->dead = $id === $this->idInfoFlattened->getSecondId(); - $this->axis = ($stateMeta >> 3) === BlockLegacyMetadata::CORAL_FAN_EAST_WEST ? Axis::X : Axis::Z; - $coralType = CoralTypeIdMap::getInstance()->fromId($stateMeta & BlockLegacyMetadata::CORAL_FAN_TYPE_MASK); - if($coralType === null){ - throw new InvalidBlockStateException("No such coral type"); - } - $this->coralType = $coralType; - } - - public function getId() : int{ - return $this->dead ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - public function asItem() : Item{ //TODO: HACK! workaround dead flag being lost when broken / blockpicked (original impl only uses first ID) return ItemFactory::getInstance()->get( @@ -69,17 +48,18 @@ final class FloorCoralFan extends BaseCoral{ ); } - protected function writeStateToMeta() : int{ - return (($this->axis === Axis::X ? BlockLegacyMetadata::CORAL_FAN_EAST_WEST : BlockLegacyMetadata::CORAL_FAN_NORTH_SOUTH) << 3) | - CoralTypeIdMap::getInstance()->toId($this->coralType); - } - protected function writeStateToItemMeta() : int{ return CoralTypeIdMap::getInstance()->toId($this->coralType); } - public function getStateBitmask() : int{ - return 0b1111; + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->axis = $r->readHorizontalAxis(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $w->writeHorizontalAxis($this->axis); } public function getAxis() : int{ return $this->axis; } diff --git a/src/block/FloorSign.php b/src/block/FloorSign.php index 13e4a6c9d..5615d15d8 100644 --- a/src/block/FloorSign.php +++ b/src/block/FloorSign.php @@ -33,18 +33,6 @@ use pocketmine\world\BlockTransaction; final class FloorSign extends BaseSign{ use SignLikeRotationTrait; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->rotation = $stateMeta; - } - - protected function writeStateToMeta() : int{ - return $this->rotation; - } - - public function getStateBitmask() : int{ - return 0b1111; - } - protected function getSupportingFace() : int{ return Facing::DOWN; } diff --git a/src/block/FlowerPot.php b/src/block/FlowerPot.php index 69764b900..fd25284cd 100644 --- a/src/block/FlowerPot.php +++ b/src/block/FlowerPot.php @@ -36,15 +36,6 @@ class FlowerPot extends Flowable{ protected ?Block $plant = null; - protected function writeStateToMeta() : int{ - //TODO: HACK! this is just to make the client actually render the plant - we purposely don't read the flag back - return $this->plant !== null ? BlockLegacyMetadata::FLOWER_POT_FLAG_OCCUPIED : 0; - } - - public function getStateBitmask() : int{ - return 0b1; - } - public function readStateFromWorld() : void{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 065caf589..e6addea5c 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\event\block\BlockMeltEvent; use function mt_rand; @@ -32,16 +33,12 @@ class FrostedIce extends Ice{ protected int $age = 0; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - protected function writeStateToMeta() : int{ - return $this->age; - } - - public function getStateBitmask() : int{ - return 0b11; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index f5a81c524..1bb6191aa 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -24,8 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Furnace as TileFurnace; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -33,26 +35,18 @@ use function mt_rand; class Furnace extends Opaque{ use FacesOppositePlacingPlayerTrait; - use NormalHorizontalFacingInMetadataTrait { - readStateFromData as readFacingStateFromData; + use HorizontalFacingTrait; + + protected bool $lit = false; + + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->lit = $r->readBool(); } - protected BlockIdentifierFlattened $idInfoFlattened; - - protected bool $lit = false; //this is set based on the blockID - - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); - } - - public function getId() : int{ - return $this->lit ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->readFacingStateFromData($id, $stateMeta); - $this->lit = $id === $this->idInfoFlattened->getSecondId(); + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->lit); } public function getLightLevel() : int{ diff --git a/src/block/GlazedTerracotta.php b/src/block/GlazedTerracotta.php index 1787e51ae..b782d5dbb 100644 --- a/src/block/GlazedTerracotta.php +++ b/src/block/GlazedTerracotta.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; class GlazedTerracotta extends Opaque{ use FacesOppositePlacingPlayerTrait; - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait; } diff --git a/src/block/HayBale.php b/src/block/HayBale.php index e47598ac5..6fdd2cb63 100644 --- a/src/block/HayBale.php +++ b/src/block/HayBale.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\PillarRotationInMetadataTrait; +use pocketmine\block\utils\PillarRotationTrait; use pocketmine\entity\Entity; class HayBale extends Opaque{ - use PillarRotationInMetadataTrait; + use PillarRotationTrait; public function getFlameEncouragement() : int{ return 60; diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 618862b9b..320fd1ce7 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; @@ -40,21 +41,18 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; - public function readStateFromData(int $id, int $stateMeta) : void{ - $facing = BlockDataSerializer::readFacing($stateMeta & 0x07); + protected function decodeState(BlockDataReader $r) : void{ + $facing = $r->readFacing(); if($facing === Facing::UP){ throw new InvalidBlockStateException("Hopper may not face upward"); } $this->facing = $facing; - $this->powered = ($stateMeta & BlockLegacyMetadata::HOPPER_FLAG_POWERED) !== 0; + $this->powered = $r->readBool(); } - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeFacing($this->facing) | ($this->powered ? BlockLegacyMetadata::HOPPER_FLAG_POWERED : 0); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->facing); + $w->writeBool($this->powered); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/InfestedStone.php b/src/block/InfestedStone.php index 93e0aa3d6..6fbda8eea 100644 --- a/src/block/InfestedStone.php +++ b/src/block/InfestedStone.php @@ -31,7 +31,7 @@ final class InfestedStone extends Opaque{ public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, Block $imitated){ parent::__construct($idInfo, $name, $breakInfo); - $this->imitated = $imitated->getFullId(); + $this->imitated = $imitated->getStateId(); } public function getImitatedBlock() : Block{ diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 3e7a7378a..1f77323a0 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -46,13 +47,14 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->hasMap ? BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->hasMap = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); - $this->hasMap = ($stateMeta & BlockLegacyMetadata::ITEM_FRAME_FLAG_HAS_MAP) !== 0; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->hasMap); } public function readStateFromWorld() : void{ @@ -78,10 +80,6 @@ class ItemFrame extends Flowable{ } } - public function getStateBitmask() : int{ - return 0b111; - } - public function getFramedItem() : ?Item{ return $this->framedItem !== null ? clone $this->framedItem : null; } diff --git a/src/block/Ladder.php b/src/block/Ladder.php index fcf2be061..ad70405ad 100644 --- a/src/block/Ladder.php +++ b/src/block/Ladder.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\entity\Living; @@ -36,7 +36,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class Ladder extends Transparent{ - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait; public function hasEntityCollision() : bool{ return true; diff --git a/src/block/Lantern.php b/src/block/Lantern.php index 0c2fb31ef..ec54070f3 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -33,19 +35,14 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class Lantern extends Transparent{ - protected bool $hanging = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->hanging = ($stateMeta & BlockLegacyMetadata::LANTERN_FLAG_HANGING) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->hanging = $r->readBool(); } - protected function writeStateToMeta() : int{ - return $this->hanging ? BlockLegacyMetadata::LANTERN_FLAG_HANGING : 0; - } - - public function getStateBitmask() : int{ - return 0b1; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->hanging); } public function isHanging() : bool{ return $this->hanging; } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 58a0f7304..4a753db52 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; use pocketmine\event\block\LeavesDecayEvent; @@ -38,7 +40,6 @@ use pocketmine\world\World; use function mt_rand; class Leaves extends Transparent{ - protected TreeType $treeType; protected bool $noDecay = false; protected bool $checkDecay = false; @@ -48,17 +49,14 @@ class Leaves extends Transparent{ $this->treeType = $treeType; } - protected function writeStateToMeta() : int{ - return ($this->noDecay ? BlockLegacyMetadata::LEAVES_FLAG_NO_DECAY : 0) | ($this->checkDecay ? BlockLegacyMetadata::LEAVES_FLAG_CHECK_DECAY : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->noDecay = $r->readBool(); + $this->checkDecay = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->noDecay = ($stateMeta & BlockLegacyMetadata::LEAVES_FLAG_NO_DECAY) !== 0; - $this->checkDecay = ($stateMeta & BlockLegacyMetadata::LEAVES_FLAG_CHECK_DECAY) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1100; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->noDecay); + $w->writeBool($this->checkDecay); } public function isNoDecay() : bool{ return $this->noDecay; } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index e94c5c706..7f8e73105 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Lectern as TileLectern; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; @@ -43,15 +44,17 @@ class Lectern extends Transparent{ protected int $viewedPage = 0; protected ?WritableBookBase $book = null; + protected bool $producingSignal = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->producingSignal = ($stateMeta & BlockLegacyMetadata::LECTERN_FLAG_POWERED) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->producingSignal = $r->readBool(); } - public function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | ($this->producingSignal ? BlockLegacyMetadata::LECTERN_FLAG_POWERED : 0); + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->producingSignal); } public function readStateFromWorld() : void{ @@ -72,10 +75,6 @@ class Lectern extends Transparent{ } } - public function getStateBitmask() : int{ - return 0b111; - } - public function getFlammability() : int{ return 30; } diff --git a/src/block/Lever.php b/src/block/Lever.php index c9dfe76bb..bf006d30e 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -23,6 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\LeverFacing; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -43,36 +47,14 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToMeta() : int{ - $rotationMeta = match($this->facing->id()){ - LeverFacing::DOWN_AXIS_X()->id() => 0, - LeverFacing::EAST()->id() => 1, - LeverFacing::WEST()->id() => 2, - LeverFacing::SOUTH()->id() => 3, - LeverFacing::NORTH()->id() => 4, - LeverFacing::UP_AXIS_Z()->id() => 5, - LeverFacing::UP_AXIS_X()->id() => 6, - LeverFacing::DOWN_AXIS_Z()->id() => 7, - default => throw new AssumptionFailedError(), - }; - return $rotationMeta | ($this->activated ? BlockLegacyMetadata::LEVER_FLAG_POWERED : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = BlockDataReaderHelper::readLeverFacing($r); + $this->activated = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $rotationMeta = $stateMeta & 0x07; - $this->facing = match($rotationMeta){ - 0 => LeverFacing::DOWN_AXIS_X(), - 1 => LeverFacing::EAST(), - 2 => LeverFacing::WEST(), - 3 => LeverFacing::SOUTH(), - 4 => LeverFacing::NORTH(), - 5 => LeverFacing::UP_AXIS_Z(), - 6 => LeverFacing::UP_AXIS_X(), - 7 => LeverFacing::DOWN_AXIS_Z(), - default => throw new AssumptionFailedError("0x07 mask should make this impossible"), //phpstan doesn't understand :( - }; - - $this->activated = ($stateMeta & BlockLegacyMetadata::LEVER_FLAG_POWERED) !== 0; + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeLeverFacing($w, $this->facing); + $w->writeBool($this->activated); } public function getFacing() : LeverFacing{ return $this->facing; } @@ -91,10 +73,6 @@ class Lever extends Flowable{ return $this; } - public function getStateBitmask() : int{ - return 0b1111; - } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if(!$this->canBeSupportedBy($blockClicked, $face)){ return false; diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 7087df5d4..e3aca2a52 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\MinimumCostFlowCalculator; use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; @@ -40,8 +41,6 @@ use function lcg_value; abstract class Liquid extends Transparent{ public const MAX_DECAY = 7; - protected BlockIdentifierFlattened $idInfoFlattened; - public int $adjacentSources = 0; protected ?Vector3 $flowVector = null; @@ -50,27 +49,16 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->decay = $r->readBoundedInt(3, 0, self::MAX_DECAY); + $this->falling = $r->readBool(); + $this->still = $r->readBool(); } - public function getId() : int{ - return $this->still ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - protected function writeStateToMeta() : int{ - return $this->decay | ($this->falling ? BlockLegacyMetadata::LIQUID_FLAG_FALLING : 0); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->decay = BlockDataSerializer::readBoundedInt("decay", $stateMeta & 0x07, 0, self::MAX_DECAY); - $this->falling = ($stateMeta & BlockLegacyMetadata::LIQUID_FLAG_FALLING) !== 0; - $this->still = $id === $this->idInfoFlattened->getSecondId(); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->decay); + $w->writeBool($this->falling); + $w->writeBool($this->still); } public function isFalling() : bool{ return $this->falling; } diff --git a/src/block/Log.php b/src/block/Log.php index b96a0d380..88314eaf0 100644 --- a/src/block/Log.php +++ b/src/block/Log.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\PillarRotationInMetadataTrait; +use pocketmine\block\utils\PillarRotationTrait; class Log extends Wood{ - use PillarRotationInMetadataTrait; + use PillarRotationTrait; protected function getAxisMetaShift() : int{ return $this->isStripped() ? 0 : 2; diff --git a/src/block/Loom.php b/src/block/Loom.php index 9c5f830f7..e75594ece 100644 --- a/src/block/Loom.php +++ b/src/block/Loom.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\inventory\LoomInventory; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; @@ -35,18 +34,6 @@ final class Loom extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x3); - } - - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing); - } - - public function getStateBitmask() : int{ - return 0b11; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if($player !== null){ $player->setCurrentWindow(new LoomInventory($this->position)); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 398b4c468..0d94449e0 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\item\Item; @@ -33,16 +35,12 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->axis = $stateMeta === BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z ? Axis::Z : Axis::X; //mojang u dumb + protected function decodeState(BlockDataReader $r) : void{ + $this->axis = $r->readHorizontalAxis(); } - protected function writeStateToMeta() : int{ - return $this->axis === Axis::Z ? BlockLegacyMetadata::NETHER_PORTAL_AXIS_Z : BlockLegacyMetadata::NETHER_PORTAL_AXIS_X; - } - - public function getStateBitmask() : int{ - return 0b11; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalAxis($this->axis); } public function getAxis() : int{ diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 0a30d35f4..b07644fa5 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -37,16 +38,12 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b11; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Rail.php b/src/block/Rail.php index ea3feba48..4b5ae94d6 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\math\Facing; @@ -33,20 +35,16 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function readStateFromData(int $id, int $stateMeta) : void{ - if(!isset(RailConnectionInfo::CONNECTIONS[$stateMeta]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$stateMeta])){ - throw new InvalidBlockStateException("No rail shape matches metadata $stateMeta"); + protected function decodeState(BlockDataReader $r) : void{ + $railShape = $r->readInt(4); + if(!isset(RailConnectionInfo::CONNECTIONS[$railShape]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$railShape])){ + throw new InvalidBlockStateException("Invalid rail shape $railShape"); } - $this->railShape = $stateMeta; + $this->railShape = $railShape; } - protected function writeStateToMeta() : int{ - //TODO: railShape won't be plain metadata in future - return $this->railShape; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->railShape); } protected function setShapeFromConnections(array $connections) : void{ diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 820a0e5f8..f2a22a744 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -23,14 +23,15 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\MushroomBlockType; -use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\item\Item; use function mt_rand; class RedMushroomBlock extends Opaque{ - protected MushroomBlockType $mushroomBlockType; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ @@ -38,20 +39,12 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToMeta() : int{ - return MushroomBlockTypeIdMap::getInstance()->toId($this->mushroomBlockType); + protected function decodeState(BlockDataReader $r) : void{ + $this->mushroomBlockType = BlockDataReaderHelper::readMushroomBlockType($r); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $type = MushroomBlockTypeIdMap::getInstance()->fromId($stateMeta); - if($type === null){ - throw new InvalidBlockStateException("No such mushroom variant $stateMeta"); - } - $this->mushroomBlockType = $type; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeMushroomBlockType($w, $this->mushroomBlockType); } public function getMushroomBlockType() : MushroomBlockType{ return $this->mushroomBlockType; } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index c7396d119..8abb70a21 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -25,7 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Comparator; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; @@ -42,33 +43,19 @@ class RedstoneComparator extends Flowable{ use AnalogRedstoneSignalEmitterTrait; use PoweredByRedstoneTrait; - protected BlockIdentifierFlattened $idInfoFlattened; - protected bool $isSubtractMode = false; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->isSubtractMode = $r->readBool(); + $this->powered = $r->readBool(); + //TODO: this doesn't call the decoder from AnalogRedstoneSignalEmitter } - public function getId() : int{ - return $this->powered ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->isSubtractMode = ($stateMeta & BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_SUBTRACT) !== 0; - $this->powered = ($id === $this->idInfoFlattened->getSecondId() || ($stateMeta & BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_POWERED) !== 0); - } - - public function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | - ($this->isSubtractMode ? BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_SUBTRACT : 0) | - ($this->powered ? BlockLegacyMetadata::REDSTONE_COMPARATOR_FLAG_POWERED : 0); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->isSubtractMode); + $w->writeBool($this->powered); } public function readStateFromWorld() : void{ diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 5507881f5..de84d7445 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -23,24 +23,19 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\PoweredByRedstoneTrait; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; - protected BlockIdentifierFlattened $idInfoFlattened; - - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->powered = $r->readBool(); } - public function getId() : int{ - return $this->powered ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->powered = $id === $this->idInfoFlattened->getSecondId(); + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->powered); } public function getLightLevel() : int{ diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 1557634a8..29946ee47 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; @@ -30,22 +32,14 @@ use pocketmine\player\Player; use function mt_rand; class RedstoneOre extends Opaque{ - - protected BlockIdentifierFlattened $idInfoFlattened; - protected bool $lit = false; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->lit = $r->readBool(); } - public function getId() : int{ - return $this->lit ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->lit = $id === $this->idInfoFlattened->getSecondId(); + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->lit); } public function isLit() : bool{ diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 2fbd0b259..ed6fe01a6 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; @@ -41,31 +42,18 @@ class RedstoneRepeater extends Flowable{ public const MIN_DELAY = 1; public const MAX_DELAY = 4; - protected BlockIdentifierFlattened $idInfoFlattened; - protected int $delay = self::MIN_DELAY; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->delay = $r->readBoundedInt(2, self::MIN_DELAY - 1, self::MAX_DELAY - 1) + 1; + $this->powered = $r->readBool(); } - public function getId() : int{ - return $this->powered ? $this->idInfoFlattened->getSecondId() : parent::getId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->delay = BlockDataSerializer::readBoundedInt("delay", ($stateMeta >> 2) + 1, self::MIN_DELAY, self::MAX_DELAY); - $this->powered = $id === $this->idInfoFlattened->getSecondId(); - } - - public function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | (($this->delay - 1) << 2); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeInt(2, $this->delay - 1); + $w->writeBool($this->powered); } public function getDelay() : int{ return $this->delay; } diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index b5de4898b..78d5d282c 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -23,24 +23,20 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; + class RedstoneTorch extends Torch{ - - protected BlockIdentifierFlattened $idInfoFlattened; - protected bool $lit = true; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->lit = $r->readBool(); } - public function getId() : int{ - return $this->lit ? parent::getId() : $this->idInfoFlattened->getSecondId(); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - parent::readStateFromData($id, $stateMeta); - $this->lit = $id !== $this->idInfoFlattened->getSecondId(); + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $w->writeBool($this->lit); } public function isLit() : bool{ diff --git a/src/block/RedstoneWire.php b/src/block/RedstoneWire.php index e744c1849..aff8ec32e 100644 --- a/src/block/RedstoneWire.php +++ b/src/block/RedstoneWire.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -41,18 +40,6 @@ class RedstoneWire extends Flowable{ return false; } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->signalStrength = BlockDataSerializer::readBoundedInt("signalStrength", $stateMeta, 0, 15); - } - - protected function writeStateToMeta() : int{ - return $this->signalStrength; - } - - public function getStateBitmask() : int{ - return 0b1111; - } - public function readStateFromWorld() : void{ parent::readStateFromWorld(); //TODO: check connections to nearby redstone components diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 9b5c8671d..1c4e87b59 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\TreeType; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; @@ -36,7 +38,6 @@ use pocketmine\world\generator\object\TreeFactory; use function mt_rand; class Sapling extends Flowable{ - protected bool $ready = false; private TreeType $treeType; @@ -46,16 +47,12 @@ class Sapling extends Flowable{ $this->treeType = $treeType; } - protected function writeStateToMeta() : int{ - return ($this->ready ? BlockLegacyMetadata::SAPLING_FLAG_READY : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->ready = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->ready = ($stateMeta & BlockLegacyMetadata::SAPLING_FLAG_READY) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1000; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->ready); } public function isReady() : bool{ return $this->ready; } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index 39917aded..b2e304765 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -37,17 +39,14 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->count = ($stateMeta & 0x03) + 1; - $this->underwater = ($stateMeta & BlockLegacyMetadata::SEA_PICKLE_FLAG_NOT_UNDERWATER) === 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->count = $r->readBoundedInt(2, self::MIN_COUNT - 1, self::MAX_COUNT - 1) + 1; + $this->underwater = $r->readBool(); } - protected function writeStateToMeta() : int{ - return ($this->count - 1) | ($this->underwater ? 0 : BlockLegacyMetadata::SEA_PICKLE_FLAG_NOT_UNDERWATER); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->count - 1); + $w->writeBool($this->underwater); } public function getCount() : int{ return $this->count; } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index de8cefeb8..b602555ac 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -25,6 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\utils\AnyFacingTrait; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -33,6 +35,14 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; + protected function decodeState(BlockDataReader $r) : void{ + //NOOP - we don't read or write facing here, because the tile persists it + } + + protected function encodeState(BlockDataWriter $w) : void{ + //NOOP - we don't read or write facing here, because the tile persists it + } + public function writeStateToWorld() : void{ parent::writeStateToWorld(); $shulker = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/SimplePillar.php b/src/block/SimplePillar.php index 72750e000..98c89f89c 100644 --- a/src/block/SimplePillar.php +++ b/src/block/SimplePillar.php @@ -23,12 +23,12 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\PillarRotationInMetadataTrait; +use pocketmine\block\utils\PillarRotationTrait; /** * @internal This class provides a general base for pillar-like blocks. It **should not** be used for contract binding * in APIs, because not all pillar-like blocks extend this class. */ class SimplePillar extends Opaque{ - use PillarRotationInMetadataTrait; + use PillarRotationTrait; } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index 4ad9c5ce4..205583b41 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -23,20 +23,18 @@ declare(strict_types=1); namespace pocketmine\block; -abstract class SimplePressurePlate extends PressurePlate{ +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; - protected function writeStateToMeta() : int{ - return $this->pressed ? BlockLegacyMetadata::PRESSURE_PLATE_FLAG_POWERED : 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->pressed = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->pressed = ($stateMeta & BlockLegacyMetadata::PRESSURE_PLATE_FLAG_POWERED) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->pressed); } public function isPressed() : bool{ return $this->pressed; } diff --git a/src/block/Skull.php b/src/block/Skull.php index b96a29850..3495027af 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -24,7 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SkullType; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -42,7 +44,6 @@ class Skull extends Flowable{ protected SkullType $skullType; protected int $facing = Facing::NORTH; - protected bool $noDrops = false; protected int $rotation = self::MIN_ROTATION; //TODO: split this into floor skull and wall skull handling public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ @@ -50,19 +51,16 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToMeta() : int{ - return ($this->facing === Facing::UP ? 1 : BlockDataSerializer::writeHorizontalFacing($this->facing)) | - ($this->noDrops ? BlockLegacyMetadata::SKULL_FLAG_NO_DROPS : 0); + protected function decodeState(BlockDataReader $r) : void{ + $facing = $r->readFacing(); + if($facing === Facing::DOWN){ + throw new InvalidBlockStateException("Skull may not face down"); + } + $this->facing = $facing; } - public function readStateFromData(int $id, int $stateMeta) : void{ - $facingMeta = $stateMeta & 0x7; - $this->facing = $facingMeta === 1 ? Facing::UP : BlockDataSerializer::readHorizontalFacing($facingMeta); - $this->noDrops = ($stateMeta & BlockLegacyMetadata::SKULL_FLAG_NO_DROPS) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->facing); } public function readStateFromWorld() : void{ @@ -115,14 +113,6 @@ class Skull extends Flowable{ return $this; } - public function isNoDrops() : bool{ return $this->noDrops; } - - /** @return $this */ - public function setNoDrops(bool $noDrops) : self{ - $this->noDrops = $noDrops; - return $this; - } - /** * @return AxisAlignedBB[] */ diff --git a/src/block/Slab.php b/src/block/Slab.php index f3b21a5b8..c39e0de84 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -23,6 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; @@ -33,38 +37,19 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class Slab extends Transparent{ - - protected BlockIdentifierFlattened $idInfoFlattened; - protected SlabType $slabType; - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ parent::__construct($idInfo, $name . " Slab", $breakInfo); $this->slabType = SlabType::BOTTOM(); } - public function getId() : int{ - return $this->slabType->equals(SlabType::DOUBLE()) ? $this->idInfoFlattened->getSecondId() : parent::getId(); + protected function decodeState(BlockDataReader $r) : void{ + $this->slabType = BlockDataReaderHelper::readSlabType($r); } - protected function writeStateToMeta() : int{ - if(!$this->slabType->equals(SlabType::DOUBLE())){ - return ($this->slabType->equals(SlabType::TOP()) ? BlockLegacyMetadata::SLAB_FLAG_UPPER : 0); - } - return 0; - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - if($id === $this->idInfoFlattened->getSecondId()){ - $this->slabType = SlabType::DOUBLE(); - }else{ - $this->slabType = ($stateMeta & BlockLegacyMetadata::SLAB_FLAG_UPPER) !== 0 ? SlabType::TOP() : SlabType::BOTTOM(); - } - } - - public function getStateBitmask() : int{ - return 0b1000; + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeSlabType($w, $this->slabType); } public function isTransparent() : bool{ diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 4e65b5eeb..193d17799 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\SupportType; @@ -46,16 +47,12 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; - protected function writeStateToMeta() : int{ - return $this->layers - 1; + protected function decodeState(BlockDataReader $r) : void{ + $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS - 1, self::MAX_LAYERS - 1) + 1; } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->layers = BlockDataSerializer::readBoundedInt("layers", $stateMeta + 1, self::MIN_LAYERS, self::MAX_LAYERS); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->layers - 1); } public function getLayers() : int{ return $this->layers; } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index eb69c64c0..f5ee824bb 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,24 +23,22 @@ declare(strict_types=1); namespace pocketmine\block; -class Sponge extends Opaque{ +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +class Sponge extends Opaque{ protected bool $wet = false; - protected function writeStateToMeta() : int{ + protected function writeStateToItemMeta() : int{ return $this->wet ? BlockLegacyMetadata::SPONGE_FLAG_WET : 0; } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->wet = ($stateMeta & BlockLegacyMetadata::SPONGE_FLAG_WET) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->wet = $r->readBool(); } - protected function writeStateToItemMeta() : int{ - return $this->writeStateToMeta(); - } - - public function getStateBitmask() : int{ - return 0b1; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->wet); } public function isWet() : bool{ return $this->wet; } diff --git a/src/block/StainedGlass.php b/src/block/StainedGlass.php index 422d38dde..ad9ed24af 100644 --- a/src/block/StainedGlass.php +++ b/src/block/StainedGlass.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class StainedGlass extends Glass{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/StainedGlassPane.php b/src/block/StainedGlassPane.php index 4514991db..38c43f79b 100644 --- a/src/block/StainedGlassPane.php +++ b/src/block/StainedGlassPane.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class StainedGlassPane extends GlassPane{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/StainedHardenedClay.php b/src/block/StainedHardenedClay.php index 8d07bc0a3..e805e91cf 100644 --- a/src/block/StainedHardenedClay.php +++ b/src/block/StainedHardenedClay.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class StainedHardenedClay extends HardenedClay{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/StainedHardenedGlass.php b/src/block/StainedHardenedGlass.php index 591384182..e3915807d 100644 --- a/src/block/StainedHardenedGlass.php +++ b/src/block/StainedHardenedGlass.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class StainedHardenedGlass extends HardenedGlass{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/StainedHardenedGlassPane.php b/src/block/StainedHardenedGlassPane.php index ea9f213d3..805473087 100644 --- a/src/block/StainedHardenedGlassPane.php +++ b/src/block/StainedHardenedGlassPane.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; final class StainedHardenedGlassPane extends HardenedGlassPane{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/Stair.php b/src/block/Stair.php index 6ffc68be0..ab188c53a 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\StairShape; use pocketmine\block\utils\SupportType; @@ -46,17 +47,14 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToMeta() : int{ - return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->upsideDown ? BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->upsideDown = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); - $this->upsideDown = ($stateMeta & BlockLegacyMetadata::STAIR_FLAG_UPSIDE_DOWN) !== 0; - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->upsideDown); } public function readStateFromWorld() : void{ diff --git a/src/block/Stonecutter.php b/src/block/Stonecutter.php index e16b00236..f31e95d2c 100644 --- a/src/block/Stonecutter.php +++ b/src/block/Stonecutter.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\inventory\StonecutterInventory; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; @@ -38,18 +37,6 @@ class Stonecutter extends Transparent{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function writeStateToMeta() : int{ - return BlockDataSerializer::writeHorizontalFacing($this->facing); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); - } - - public function getStateBitmask() : int{ - return 0b111; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if($player !== null){ $player->setCurrentWindow(new StonecutterInventory($this->position)); diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 37c88012f..8d9642987 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; use function array_keys; @@ -35,21 +37,16 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function readStateFromData(int $id, int $stateMeta) : void{ - $railShape = $stateMeta & ~BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED; + protected function decodeState(BlockDataReader $r) : void{ + $railShape = $r->readInt(3); if(!isset(RailConnectionInfo::CONNECTIONS[$railShape])){ - throw new InvalidBlockStateException("No rail shape matches meta $stateMeta"); + throw new InvalidBlockStateException("No rail shape matches meta $railShape"); } $this->railShape = $railShape; } - protected function writeStateToMeta() : int{ - //TODO: railShape won't be plain metadata in the future - return $this->railShape; - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->railShape); } protected function setShapeFromConnections(array $connections) : void{ diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 18c840b52..51726bcff 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -37,16 +38,12 @@ class Sugarcane extends Flowable{ protected int $age = 0; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("age", $stateMeta, 0, self::MAX_AGE); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->age); } private function grow() : bool{ diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 308f354a3..3fdfc9a4d 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\block\BlockGrowEvent; @@ -45,16 +46,12 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; - protected function writeStateToMeta() : int{ - return $this->age; + protected function decodeState(BlockDataReader $r) : void{ + $this->age = $r->readBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->age = BlockDataSerializer::readBoundedInt("stage", $stateMeta, self::STAGE_SAPLING, self::STAGE_MATURE); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(3, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/TNT.php b/src/block/TNT.php index 561e36e37..18dea8793 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; @@ -40,25 +42,21 @@ use function sin; use const M_PI; class TNT extends Opaque{ - protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->unstable = ($stateMeta & BlockLegacyMetadata::TNT_FLAG_UNSTABLE) !== 0; - $this->worksUnderwater = ($stateMeta & BlockLegacyMetadata::TNT_FLAG_UNDERWATER) !== 0; - } - - protected function writeStateToMeta() : int{ - return ($this->unstable ? BlockLegacyMetadata::TNT_FLAG_UNSTABLE : 0) | ($this->worksUnderwater ? BlockLegacyMetadata::TNT_FLAG_UNDERWATER : 0); - } - protected function writeStateToItemMeta() : int{ return $this->worksUnderwater ? BlockLegacyMetadata::TNT_FLAG_UNDERWATER : 0; } - public function getStateBitmask() : int{ - return 0b11; + protected function decodeState(BlockDataReader $r) : void{ + $this->unstable = $r->readBool(); + $this->worksUnderwater = $r->readBool(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->unstable); + $w->writeBool($this->worksUnderwater); } public function isUnstable() : bool{ return $this->unstable; } diff --git a/src/block/Torch.php b/src/block/Torch.php index ded081bcc..d9e3ed95d 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -23,7 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -36,17 +38,16 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; - protected function writeStateToMeta() : int{ - return $this->facing === Facing::UP ? 5 : 6 - BlockDataSerializer::writeHorizontalFacing($this->facing); + protected function decodeState(BlockDataReader $r) : void{ + $facing = $r->readFacing(); + if($facing === Facing::DOWN){ + throw new InvalidBlockStateException("Torch cannot have a DOWN facing"); + } + $this->facing = $facing; } - public function readStateFromData(int $id, int $stateMeta) : void{ - $facingMeta = $stateMeta & 0x7; - $this->facing = $facingMeta === 5 ? Facing::UP : BlockDataSerializer::readHorizontalFacing(6 - $facingMeta); - } - - public function getStateBitmask() : int{ - return 0b111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->facing); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 054737d74..61d4d58c9 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; @@ -40,20 +41,16 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::write5MinusHorizontalFacing($this->facing) | ($this->top ? BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER : 0) | ($this->open ? BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->top = $r->readBool(); + $this->open = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - //TODO: in PC the values are reversed (facing - 2) - - $this->facing = BlockDataSerializer::read5MinusHorizontalFacing($stateMeta); - $this->top = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_UPPER) !== 0; - $this->open = ($stateMeta & BlockLegacyMetadata::TRAPDOOR_FLAG_OPEN) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->top); + $w->writeBool($this->open); } public function isOpen() : bool{ return $this->open; } diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 504ae68eb..bb045c782 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -23,29 +23,27 @@ declare(strict_types=1); namespace pocketmine\block; -class Tripwire extends Flowable{ +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +class Tripwire extends Flowable{ protected bool $triggered = false; protected bool $suspended = false; //unclear usage, makes hitbox bigger if set protected bool $connected = false; protected bool $disarmed = false; - protected function writeStateToMeta() : int{ - return ($this->triggered ? BlockLegacyMetadata::TRIPWIRE_FLAG_TRIGGERED : 0) | - ($this->suspended ? BlockLegacyMetadata::TRIPWIRE_FLAG_SUSPENDED : 0) | - ($this->connected ? BlockLegacyMetadata::TRIPWIRE_FLAG_CONNECTED : 0) | - ($this->disarmed ? BlockLegacyMetadata::TRIPWIRE_FLAG_DISARMED : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->triggered = $r->readBool(); + $this->suspended = $r->readBool(); + $this->connected = $r->readBool(); + $this->disarmed = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->triggered = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_FLAG_TRIGGERED) !== 0; - $this->suspended = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_FLAG_SUSPENDED) !== 0; - $this->connected = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_FLAG_CONNECTED) !== 0; - $this->disarmed = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_FLAG_DISARMED) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeBool($this->triggered); + $w->writeBool($this->suspended); + $w->writeBool($this->connected); + $w->writeBool($this->disarmed); } public function isTriggered() : bool{ return $this->triggered; } diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 87490d732..b0fc4876f 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -38,20 +39,16 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; - protected function writeStateToMeta() : int{ - return BlockDataSerializer::writeLegacyHorizontalFacing($this->facing) | - ($this->connected ? BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_CONNECTED : 0) | - ($this->powered ? BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_POWERED : 0); + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + $this->connected = $r->readBool(); + $this->powered = $r->readBool(); } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readLegacyHorizontalFacing($stateMeta & 0x03); - $this->connected = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_CONNECTED) !== 0; - $this->powered = ($stateMeta & BlockLegacyMetadata::TRIPWIRE_HOOK_FLAG_POWERED) !== 0; - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + $w->writeBool($this->connected); + $w->writeBool($this->powered); } public function isConnected() : bool{ return $this->connected; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index ec3c5a494..f5edfd905 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\BlockLegacyIds as Ids; +use pocketmine\block\BlockTypeIds as Ids; use pocketmine\utils\CloningRegistryTrait; /** @@ -596,543 +596,543 @@ final class VanillaBlocks{ protected static function setup() : void{ $factory = BlockFactory::getInstance(); self::register("acacia_button", $factory->get(Ids::ACACIA_BUTTON, 0)); - self::register("acacia_door", $factory->get(Ids::ACACIA_DOOR_BLOCK, 0)); - self::register("acacia_fence", $factory->get(Ids::FENCE, 4)); + self::register("acacia_door", $factory->get(Ids::ACACIA_DOOR, 0)); + self::register("acacia_fence", $factory->get(Ids::ACACIA_FENCE, 0)); self::register("acacia_fence_gate", $factory->get(Ids::ACACIA_FENCE_GATE, 0)); - self::register("acacia_leaves", $factory->get(Ids::LEAVES2, 0)); - self::register("acacia_log", $factory->get(Ids::LOG2, 0)); - self::register("acacia_planks", $factory->get(Ids::PLANKS, 4)); + self::register("acacia_leaves", $factory->get(Ids::ACACIA_LEAVES, 0)); + self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 0)); + self::register("acacia_planks", $factory->get(Ids::ACACIA_PLANKS, 0)); self::register("acacia_pressure_plate", $factory->get(Ids::ACACIA_PRESSURE_PLATE, 0)); - self::register("acacia_sapling", $factory->get(Ids::SAPLING, 4)); - self::register("acacia_sign", $factory->get(Ids::ACACIA_STANDING_SIGN, 0)); - self::register("acacia_slab", $factory->get(Ids::WOODEN_SLAB, 4)); - self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 0)); - self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 0)); + self::register("acacia_sapling", $factory->get(Ids::ACACIA_SAPLING, 0)); + self::register("acacia_sign", $factory->get(Ids::ACACIA_SIGN, 0)); + self::register("acacia_slab", $factory->get(Ids::ACACIA_SLAB, 0)); + self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 3)); + self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 3)); self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 2)); - self::register("acacia_wood", $factory->get(Ids::WOOD, 4)); + self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 0)); self::register("activator_rail", $factory->get(Ids::ACTIVATOR_RAIL, 0)); self::register("air", $factory->get(Ids::AIR, 0)); - self::register("all_sided_mushroom_stem", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 15)); - self::register("allium", $factory->get(Ids::POPPY, 2)); - self::register("andesite", $factory->get(Ids::STONE, 5)); - self::register("andesite_slab", $factory->get(Ids::STONE_SLAB3, 3)); - self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 0)); - self::register("andesite_wall", $factory->get(Ids::COBBLESTONE_WALL, 4)); + self::register("all_sided_mushroom_stem", $factory->get(Ids::ALL_SIDED_MUSHROOM_STEM, 0)); + self::register("allium", $factory->get(Ids::ALLIUM, 0)); + self::register("andesite", $factory->get(Ids::ANDESITE, 0)); + self::register("andesite_slab", $factory->get(Ids::ANDESITE_SLAB, 0)); + self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 3)); + self::register("andesite_wall", $factory->get(Ids::ANDESITE_WALL, 0)); self::register("anvil", $factory->get(Ids::ANVIL, 0)); - self::register("azure_bluet", $factory->get(Ids::POPPY, 3)); + self::register("azure_bluet", $factory->get(Ids::AZURE_BLUET, 0)); self::register("bamboo", $factory->get(Ids::BAMBOO, 0)); self::register("bamboo_sapling", $factory->get(Ids::BAMBOO_SAPLING, 0)); - self::register("banner", $factory->get(Ids::STANDING_BANNER, 0)); + self::register("banner", $factory->get(Ids::BANNER, 0)); self::register("barrel", $factory->get(Ids::BARREL, 0)); self::register("barrier", $factory->get(Ids::BARRIER, 0)); self::register("beacon", $factory->get(Ids::BEACON, 0)); - self::register("bed", $factory->get(Ids::BED_BLOCK, 0)); + self::register("bed", $factory->get(Ids::BED, 0)); self::register("bedrock", $factory->get(Ids::BEDROCK, 0)); - self::register("beetroots", $factory->get(Ids::BEETROOT_BLOCK, 0)); - self::register("bell", $factory->get(Ids::BELL, 0)); + self::register("beetroots", $factory->get(Ids::BEETROOTS, 0)); + self::register("bell", $factory->get(Ids::BELL, 1)); self::register("birch_button", $factory->get(Ids::BIRCH_BUTTON, 0)); - self::register("birch_door", $factory->get(Ids::BIRCH_DOOR_BLOCK, 0)); - self::register("birch_fence", $factory->get(Ids::FENCE, 2)); + self::register("birch_door", $factory->get(Ids::BIRCH_DOOR, 0)); + self::register("birch_fence", $factory->get(Ids::BIRCH_FENCE, 0)); self::register("birch_fence_gate", $factory->get(Ids::BIRCH_FENCE_GATE, 0)); - self::register("birch_leaves", $factory->get(Ids::LEAVES, 2)); - self::register("birch_log", $factory->get(Ids::LOG, 2)); - self::register("birch_planks", $factory->get(Ids::PLANKS, 2)); + self::register("birch_leaves", $factory->get(Ids::BIRCH_LEAVES, 0)); + self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 0)); + self::register("birch_planks", $factory->get(Ids::BIRCH_PLANKS, 0)); self::register("birch_pressure_plate", $factory->get(Ids::BIRCH_PRESSURE_PLATE, 0)); - self::register("birch_sapling", $factory->get(Ids::SAPLING, 2)); - self::register("birch_sign", $factory->get(Ids::BIRCH_STANDING_SIGN, 0)); - self::register("birch_slab", $factory->get(Ids::WOODEN_SLAB, 2)); - self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 0)); - self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); + self::register("birch_sapling", $factory->get(Ids::BIRCH_SAPLING, 0)); + self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN, 0)); + self::register("birch_slab", $factory->get(Ids::BIRCH_SLAB, 0)); + self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 3)); + self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 3)); self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 2)); - self::register("birch_wood", $factory->get(Ids::WOOD, 2)); + self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0)); self::register("black_glazed_terracotta", $factory->get(Ids::BLACK_GLAZED_TERRACOTTA, 2)); - self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 2)); + self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0)); self::register("blue_glazed_terracotta", $factory->get(Ids::BLUE_GLAZED_TERRACOTTA, 2)); self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0)); - self::register("blue_orchid", $factory->get(Ids::POPPY, 1)); - self::register("blue_torch", $factory->get(Ids::COLORED_TORCH_BP, 5)); + self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0)); + self::register("blue_torch", $factory->get(Ids::BLUE_TORCH, 1)); self::register("bone_block", $factory->get(Ids::BONE_BLOCK, 0)); self::register("bookshelf", $factory->get(Ids::BOOKSHELF, 0)); - self::register("brewing_stand", $factory->get(Ids::BREWING_STAND_BLOCK, 0)); - self::register("brick_slab", $factory->get(Ids::STONE_SLAB, 4)); - self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 0)); - self::register("brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 6)); - self::register("bricks", $factory->get(Ids::BRICK_BLOCK, 0)); + self::register("brewing_stand", $factory->get(Ids::BREWING_STAND, 0)); + self::register("brick_slab", $factory->get(Ids::BRICK_SLAB, 0)); + self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 3)); + self::register("brick_wall", $factory->get(Ids::BRICK_WALL, 0)); + self::register("bricks", $factory->get(Ids::BRICKS, 0)); self::register("brown_glazed_terracotta", $factory->get(Ids::BROWN_GLAZED_TERRACOTTA, 2)); self::register("brown_mushroom", $factory->get(Ids::BROWN_MUSHROOM, 0)); self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 0)); self::register("cactus", $factory->get(Ids::CACTUS, 0)); - self::register("cake", $factory->get(Ids::CAKE_BLOCK, 0)); - self::register("carpet", $factory->get(Ids::CARPET, 0)); + self::register("cake", $factory->get(Ids::CAKE, 0)); + self::register("carpet", $factory->get(Ids::CARPET, 14)); self::register("carrots", $factory->get(Ids::CARROTS, 0)); self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); self::register("chemical_heat", $factory->get(Ids::CHEMICAL_HEAT, 0)); self::register("chest", $factory->get(Ids::CHEST, 2)); - self::register("chiseled_quartz", $factory->get(Ids::QUARTZ_BLOCK, 1)); - self::register("chiseled_red_sandstone", $factory->get(Ids::RED_SANDSTONE, 1)); - self::register("chiseled_sandstone", $factory->get(Ids::SANDSTONE, 1)); - self::register("chiseled_stone_bricks", $factory->get(Ids::STONEBRICK, 3)); - self::register("clay", $factory->get(Ids::CLAY_BLOCK, 0)); - self::register("coal", $factory->get(Ids::COAL_BLOCK, 0)); + self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 0)); + self::register("chiseled_red_sandstone", $factory->get(Ids::CHISELED_RED_SANDSTONE, 0)); + self::register("chiseled_sandstone", $factory->get(Ids::CHISELED_SANDSTONE, 0)); + self::register("chiseled_stone_bricks", $factory->get(Ids::CHISELED_STONE_BRICKS, 0)); + self::register("clay", $factory->get(Ids::CLAY, 0)); + self::register("coal", $factory->get(Ids::COAL, 0)); self::register("coal_ore", $factory->get(Ids::COAL_ORE, 0)); self::register("cobblestone", $factory->get(Ids::COBBLESTONE, 0)); - self::register("cobblestone_slab", $factory->get(Ids::STONE_SLAB, 3)); - self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 0)); + self::register("cobblestone_slab", $factory->get(Ids::COBBLESTONE_SLAB, 0)); + self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 3)); self::register("cobblestone_wall", $factory->get(Ids::COBBLESTONE_WALL, 0)); self::register("cobweb", $factory->get(Ids::COBWEB, 0)); - self::register("cocoa_pod", $factory->get(Ids::COCOA, 0)); - self::register("compound_creator", $factory->get(Ids::CHEMISTRY_TABLE, 0)); - self::register("concrete", $factory->get(Ids::CONCRETE, 0)); - self::register("concrete_powder", $factory->get(Ids::CONCRETEPOWDER, 0)); - self::register("coral", $factory->get(Ids::CORAL, 0)); - self::register("coral_block", $factory->get(Ids::CORAL_BLOCK, 0)); - self::register("coral_fan", $factory->get(Ids::CORAL_FAN, 0)); - self::register("cornflower", $factory->get(Ids::POPPY, 9)); - self::register("cracked_stone_bricks", $factory->get(Ids::STONEBRICK, 2)); + self::register("cocoa_pod", $factory->get(Ids::COCOA_POD, 0)); + self::register("compound_creator", $factory->get(Ids::COMPOUND_CREATOR, 0)); + self::register("concrete", $factory->get(Ids::CONCRETE, 14)); + self::register("concrete_powder", $factory->get(Ids::CONCRETE_POWDER, 14)); + self::register("coral", $factory->get(Ids::CORAL, 4)); + self::register("coral_block", $factory->get(Ids::CORAL_BLOCK, 4)); + self::register("coral_fan", $factory->get(Ids::CORAL_FAN, 4)); + self::register("cornflower", $factory->get(Ids::CORNFLOWER, 0)); + self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); - self::register("cut_red_sandstone", $factory->get(Ids::RED_SANDSTONE, 2)); - self::register("cut_red_sandstone_slab", $factory->get(Ids::STONE_SLAB4, 4)); - self::register("cut_sandstone", $factory->get(Ids::SANDSTONE, 2)); - self::register("cut_sandstone_slab", $factory->get(Ids::STONE_SLAB4, 3)); + self::register("cut_red_sandstone", $factory->get(Ids::CUT_RED_SANDSTONE, 0)); + self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0)); + self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0)); + self::register("cut_sandstone_slab", $factory->get(Ids::CUT_SANDSTONE_SLAB, 0)); self::register("cyan_glazed_terracotta", $factory->get(Ids::CYAN_GLAZED_TERRACOTTA, 2)); self::register("dandelion", $factory->get(Ids::DANDELION, 0)); self::register("dark_oak_button", $factory->get(Ids::DARK_OAK_BUTTON, 0)); - self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR_BLOCK, 0)); - self::register("dark_oak_fence", $factory->get(Ids::FENCE, 5)); + self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR, 0)); + self::register("dark_oak_fence", $factory->get(Ids::DARK_OAK_FENCE, 0)); self::register("dark_oak_fence_gate", $factory->get(Ids::DARK_OAK_FENCE_GATE, 0)); - self::register("dark_oak_leaves", $factory->get(Ids::LEAVES2, 1)); - self::register("dark_oak_log", $factory->get(Ids::LOG2, 1)); - self::register("dark_oak_planks", $factory->get(Ids::PLANKS, 5)); + self::register("dark_oak_leaves", $factory->get(Ids::DARK_OAK_LEAVES, 0)); + self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 0)); + self::register("dark_oak_planks", $factory->get(Ids::DARK_OAK_PLANKS, 0)); self::register("dark_oak_pressure_plate", $factory->get(Ids::DARK_OAK_PRESSURE_PLATE, 0)); - self::register("dark_oak_sapling", $factory->get(Ids::SAPLING, 5)); - self::register("dark_oak_sign", $factory->get(Ids::DARKOAK_STANDING_SIGN, 0)); - self::register("dark_oak_slab", $factory->get(Ids::WOODEN_SLAB, 5)); - self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 0)); - self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 0)); - self::register("dark_oak_wall_sign", $factory->get(Ids::DARKOAK_WALL_SIGN, 2)); - self::register("dark_oak_wood", $factory->get(Ids::WOOD, 5)); - self::register("dark_prismarine", $factory->get(Ids::PRISMARINE, 1)); - self::register("dark_prismarine_slab", $factory->get(Ids::STONE_SLAB2, 3)); - self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0)); - self::register("daylight_sensor", $factory->get(Ids::DAYLIGHT_DETECTOR, 0)); - self::register("dead_bush", $factory->get(Ids::DEADBUSH, 0)); + self::register("dark_oak_sapling", $factory->get(Ids::DARK_OAK_SAPLING, 0)); + self::register("dark_oak_sign", $factory->get(Ids::DARK_OAK_SIGN, 0)); + self::register("dark_oak_slab", $factory->get(Ids::DARK_OAK_SLAB, 0)); + self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 3)); + self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 3)); + self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 2)); + self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 0)); + self::register("dark_prismarine", $factory->get(Ids::DARK_PRISMARINE, 0)); + self::register("dark_prismarine_slab", $factory->get(Ids::DARK_PRISMARINE_SLAB, 0)); + self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 3)); + self::register("daylight_sensor", $factory->get(Ids::DAYLIGHT_SENSOR, 0)); + self::register("dead_bush", $factory->get(Ids::DEAD_BUSH, 0)); self::register("detector_rail", $factory->get(Ids::DETECTOR_RAIL, 0)); - self::register("diamond", $factory->get(Ids::DIAMOND_BLOCK, 0)); + self::register("diamond", $factory->get(Ids::DIAMOND, 0)); self::register("diamond_ore", $factory->get(Ids::DIAMOND_ORE, 0)); - self::register("diorite", $factory->get(Ids::STONE, 3)); - self::register("diorite_slab", $factory->get(Ids::STONE_SLAB3, 4)); - self::register("diorite_stairs", $factory->get(Ids::DIORITE_STAIRS, 0)); - self::register("diorite_wall", $factory->get(Ids::COBBLESTONE_WALL, 3)); + self::register("diorite", $factory->get(Ids::DIORITE, 0)); + self::register("diorite_slab", $factory->get(Ids::DIORITE_SLAB, 0)); + self::register("diorite_stairs", $factory->get(Ids::DIORITE_STAIRS, 3)); + self::register("diorite_wall", $factory->get(Ids::DIORITE_WALL, 0)); self::register("dirt", $factory->get(Ids::DIRT, 0)); - self::register("double_tallgrass", $factory->get(Ids::DOUBLE_PLANT, 2)); + self::register("double_tallgrass", $factory->get(Ids::DOUBLE_TALLGRASS, 0)); self::register("dragon_egg", $factory->get(Ids::DRAGON_EGG, 0)); - self::register("dried_kelp", $factory->get(Ids::DRIED_KELP_BLOCK, 0)); - self::register("dyed_shulker_box", $factory->get(Ids::SHULKER_BOX, 0)); - self::register("element_actinium", $factory->get(Ids::ELEMENT_89, 0)); - self::register("element_aluminum", $factory->get(Ids::ELEMENT_13, 0)); - self::register("element_americium", $factory->get(Ids::ELEMENT_95, 0)); - self::register("element_antimony", $factory->get(Ids::ELEMENT_51, 0)); - self::register("element_argon", $factory->get(Ids::ELEMENT_18, 0)); - self::register("element_arsenic", $factory->get(Ids::ELEMENT_33, 0)); - self::register("element_astatine", $factory->get(Ids::ELEMENT_85, 0)); - self::register("element_barium", $factory->get(Ids::ELEMENT_56, 0)); - self::register("element_berkelium", $factory->get(Ids::ELEMENT_97, 0)); - self::register("element_beryllium", $factory->get(Ids::ELEMENT_4, 0)); - self::register("element_bismuth", $factory->get(Ids::ELEMENT_83, 0)); - self::register("element_bohrium", $factory->get(Ids::ELEMENT_107, 0)); - self::register("element_boron", $factory->get(Ids::ELEMENT_5, 0)); - self::register("element_bromine", $factory->get(Ids::ELEMENT_35, 0)); - self::register("element_cadmium", $factory->get(Ids::ELEMENT_48, 0)); - self::register("element_calcium", $factory->get(Ids::ELEMENT_20, 0)); - self::register("element_californium", $factory->get(Ids::ELEMENT_98, 0)); - self::register("element_carbon", $factory->get(Ids::ELEMENT_6, 0)); - self::register("element_cerium", $factory->get(Ids::ELEMENT_58, 0)); - self::register("element_cesium", $factory->get(Ids::ELEMENT_55, 0)); - self::register("element_chlorine", $factory->get(Ids::ELEMENT_17, 0)); - self::register("element_chromium", $factory->get(Ids::ELEMENT_24, 0)); - self::register("element_cobalt", $factory->get(Ids::ELEMENT_27, 0)); - self::register("element_constructor", $factory->get(Ids::CHEMISTRY_TABLE, 8)); - self::register("element_copernicium", $factory->get(Ids::ELEMENT_112, 0)); - self::register("element_copper", $factory->get(Ids::ELEMENT_29, 0)); - self::register("element_curium", $factory->get(Ids::ELEMENT_96, 0)); - self::register("element_darmstadtium", $factory->get(Ids::ELEMENT_110, 0)); - self::register("element_dubnium", $factory->get(Ids::ELEMENT_105, 0)); - self::register("element_dysprosium", $factory->get(Ids::ELEMENT_66, 0)); - self::register("element_einsteinium", $factory->get(Ids::ELEMENT_99, 0)); - self::register("element_erbium", $factory->get(Ids::ELEMENT_68, 0)); - self::register("element_europium", $factory->get(Ids::ELEMENT_63, 0)); - self::register("element_fermium", $factory->get(Ids::ELEMENT_100, 0)); - self::register("element_flerovium", $factory->get(Ids::ELEMENT_114, 0)); - self::register("element_fluorine", $factory->get(Ids::ELEMENT_9, 0)); - self::register("element_francium", $factory->get(Ids::ELEMENT_87, 0)); - self::register("element_gadolinium", $factory->get(Ids::ELEMENT_64, 0)); - self::register("element_gallium", $factory->get(Ids::ELEMENT_31, 0)); - self::register("element_germanium", $factory->get(Ids::ELEMENT_32, 0)); - self::register("element_gold", $factory->get(Ids::ELEMENT_79, 0)); - self::register("element_hafnium", $factory->get(Ids::ELEMENT_72, 0)); - self::register("element_hassium", $factory->get(Ids::ELEMENT_108, 0)); - self::register("element_helium", $factory->get(Ids::ELEMENT_2, 0)); - self::register("element_holmium", $factory->get(Ids::ELEMENT_67, 0)); - self::register("element_hydrogen", $factory->get(Ids::ELEMENT_1, 0)); - self::register("element_indium", $factory->get(Ids::ELEMENT_49, 0)); - self::register("element_iodine", $factory->get(Ids::ELEMENT_53, 0)); - self::register("element_iridium", $factory->get(Ids::ELEMENT_77, 0)); - self::register("element_iron", $factory->get(Ids::ELEMENT_26, 0)); - self::register("element_krypton", $factory->get(Ids::ELEMENT_36, 0)); - self::register("element_lanthanum", $factory->get(Ids::ELEMENT_57, 0)); - self::register("element_lawrencium", $factory->get(Ids::ELEMENT_103, 0)); - self::register("element_lead", $factory->get(Ids::ELEMENT_82, 0)); - self::register("element_lithium", $factory->get(Ids::ELEMENT_3, 0)); - self::register("element_livermorium", $factory->get(Ids::ELEMENT_116, 0)); - self::register("element_lutetium", $factory->get(Ids::ELEMENT_71, 0)); - self::register("element_magnesium", $factory->get(Ids::ELEMENT_12, 0)); - self::register("element_manganese", $factory->get(Ids::ELEMENT_25, 0)); - self::register("element_meitnerium", $factory->get(Ids::ELEMENT_109, 0)); - self::register("element_mendelevium", $factory->get(Ids::ELEMENT_101, 0)); - self::register("element_mercury", $factory->get(Ids::ELEMENT_80, 0)); - self::register("element_molybdenum", $factory->get(Ids::ELEMENT_42, 0)); - self::register("element_moscovium", $factory->get(Ids::ELEMENT_115, 0)); - self::register("element_neodymium", $factory->get(Ids::ELEMENT_60, 0)); - self::register("element_neon", $factory->get(Ids::ELEMENT_10, 0)); - self::register("element_neptunium", $factory->get(Ids::ELEMENT_93, 0)); - self::register("element_nickel", $factory->get(Ids::ELEMENT_28, 0)); - self::register("element_nihonium", $factory->get(Ids::ELEMENT_113, 0)); - self::register("element_niobium", $factory->get(Ids::ELEMENT_41, 0)); - self::register("element_nitrogen", $factory->get(Ids::ELEMENT_7, 0)); - self::register("element_nobelium", $factory->get(Ids::ELEMENT_102, 0)); - self::register("element_oganesson", $factory->get(Ids::ELEMENT_118, 0)); - self::register("element_osmium", $factory->get(Ids::ELEMENT_76, 0)); - self::register("element_oxygen", $factory->get(Ids::ELEMENT_8, 0)); - self::register("element_palladium", $factory->get(Ids::ELEMENT_46, 0)); - self::register("element_phosphorus", $factory->get(Ids::ELEMENT_15, 0)); - self::register("element_platinum", $factory->get(Ids::ELEMENT_78, 0)); - self::register("element_plutonium", $factory->get(Ids::ELEMENT_94, 0)); - self::register("element_polonium", $factory->get(Ids::ELEMENT_84, 0)); - self::register("element_potassium", $factory->get(Ids::ELEMENT_19, 0)); - self::register("element_praseodymium", $factory->get(Ids::ELEMENT_59, 0)); - self::register("element_promethium", $factory->get(Ids::ELEMENT_61, 0)); - self::register("element_protactinium", $factory->get(Ids::ELEMENT_91, 0)); - self::register("element_radium", $factory->get(Ids::ELEMENT_88, 0)); - self::register("element_radon", $factory->get(Ids::ELEMENT_86, 0)); - self::register("element_rhenium", $factory->get(Ids::ELEMENT_75, 0)); - self::register("element_rhodium", $factory->get(Ids::ELEMENT_45, 0)); - self::register("element_roentgenium", $factory->get(Ids::ELEMENT_111, 0)); - self::register("element_rubidium", $factory->get(Ids::ELEMENT_37, 0)); - self::register("element_ruthenium", $factory->get(Ids::ELEMENT_44, 0)); - self::register("element_rutherfordium", $factory->get(Ids::ELEMENT_104, 0)); - self::register("element_samarium", $factory->get(Ids::ELEMENT_62, 0)); - self::register("element_scandium", $factory->get(Ids::ELEMENT_21, 0)); - self::register("element_seaborgium", $factory->get(Ids::ELEMENT_106, 0)); - self::register("element_selenium", $factory->get(Ids::ELEMENT_34, 0)); - self::register("element_silicon", $factory->get(Ids::ELEMENT_14, 0)); - self::register("element_silver", $factory->get(Ids::ELEMENT_47, 0)); - self::register("element_sodium", $factory->get(Ids::ELEMENT_11, 0)); - self::register("element_strontium", $factory->get(Ids::ELEMENT_38, 0)); - self::register("element_sulfur", $factory->get(Ids::ELEMENT_16, 0)); - self::register("element_tantalum", $factory->get(Ids::ELEMENT_73, 0)); - self::register("element_technetium", $factory->get(Ids::ELEMENT_43, 0)); - self::register("element_tellurium", $factory->get(Ids::ELEMENT_52, 0)); - self::register("element_tennessine", $factory->get(Ids::ELEMENT_117, 0)); - self::register("element_terbium", $factory->get(Ids::ELEMENT_65, 0)); - self::register("element_thallium", $factory->get(Ids::ELEMENT_81, 0)); - self::register("element_thorium", $factory->get(Ids::ELEMENT_90, 0)); - self::register("element_thulium", $factory->get(Ids::ELEMENT_69, 0)); - self::register("element_tin", $factory->get(Ids::ELEMENT_50, 0)); - self::register("element_titanium", $factory->get(Ids::ELEMENT_22, 0)); - self::register("element_tungsten", $factory->get(Ids::ELEMENT_74, 0)); - self::register("element_uranium", $factory->get(Ids::ELEMENT_92, 0)); - self::register("element_vanadium", $factory->get(Ids::ELEMENT_23, 0)); - self::register("element_xenon", $factory->get(Ids::ELEMENT_54, 0)); - self::register("element_ytterbium", $factory->get(Ids::ELEMENT_70, 0)); - self::register("element_yttrium", $factory->get(Ids::ELEMENT_39, 0)); - self::register("element_zero", $factory->get(Ids::ELEMENT_0, 0)); - self::register("element_zinc", $factory->get(Ids::ELEMENT_30, 0)); - self::register("element_zirconium", $factory->get(Ids::ELEMENT_40, 0)); - self::register("emerald", $factory->get(Ids::EMERALD_BLOCK, 0)); + self::register("dried_kelp", $factory->get(Ids::DRIED_KELP, 0)); + self::register("dyed_shulker_box", $factory->get(Ids::DYED_SHULKER_BOX, 14)); + self::register("element_actinium", $factory->get(Ids::ELEMENT_ACTINIUM, 0)); + self::register("element_aluminum", $factory->get(Ids::ELEMENT_ALUMINUM, 0)); + self::register("element_americium", $factory->get(Ids::ELEMENT_AMERICIUM, 0)); + self::register("element_antimony", $factory->get(Ids::ELEMENT_ANTIMONY, 0)); + self::register("element_argon", $factory->get(Ids::ELEMENT_ARGON, 0)); + self::register("element_arsenic", $factory->get(Ids::ELEMENT_ARSENIC, 0)); + self::register("element_astatine", $factory->get(Ids::ELEMENT_ASTATINE, 0)); + self::register("element_barium", $factory->get(Ids::ELEMENT_BARIUM, 0)); + self::register("element_berkelium", $factory->get(Ids::ELEMENT_BERKELIUM, 0)); + self::register("element_beryllium", $factory->get(Ids::ELEMENT_BERYLLIUM, 0)); + self::register("element_bismuth", $factory->get(Ids::ELEMENT_BISMUTH, 0)); + self::register("element_bohrium", $factory->get(Ids::ELEMENT_BOHRIUM, 0)); + self::register("element_boron", $factory->get(Ids::ELEMENT_BORON, 0)); + self::register("element_bromine", $factory->get(Ids::ELEMENT_BROMINE, 0)); + self::register("element_cadmium", $factory->get(Ids::ELEMENT_CADMIUM, 0)); + self::register("element_calcium", $factory->get(Ids::ELEMENT_CALCIUM, 0)); + self::register("element_californium", $factory->get(Ids::ELEMENT_CALIFORNIUM, 0)); + self::register("element_carbon", $factory->get(Ids::ELEMENT_CARBON, 0)); + self::register("element_cerium", $factory->get(Ids::ELEMENT_CERIUM, 0)); + self::register("element_cesium", $factory->get(Ids::ELEMENT_CESIUM, 0)); + self::register("element_chlorine", $factory->get(Ids::ELEMENT_CHLORINE, 0)); + self::register("element_chromium", $factory->get(Ids::ELEMENT_CHROMIUM, 0)); + self::register("element_cobalt", $factory->get(Ids::ELEMENT_COBALT, 0)); + self::register("element_constructor", $factory->get(Ids::ELEMENT_CONSTRUCTOR, 0)); + self::register("element_copernicium", $factory->get(Ids::ELEMENT_COPERNICIUM, 0)); + self::register("element_copper", $factory->get(Ids::ELEMENT_COPPER, 0)); + self::register("element_curium", $factory->get(Ids::ELEMENT_CURIUM, 0)); + self::register("element_darmstadtium", $factory->get(Ids::ELEMENT_DARMSTADTIUM, 0)); + self::register("element_dubnium", $factory->get(Ids::ELEMENT_DUBNIUM, 0)); + self::register("element_dysprosium", $factory->get(Ids::ELEMENT_DYSPROSIUM, 0)); + self::register("element_einsteinium", $factory->get(Ids::ELEMENT_EINSTEINIUM, 0)); + self::register("element_erbium", $factory->get(Ids::ELEMENT_ERBIUM, 0)); + self::register("element_europium", $factory->get(Ids::ELEMENT_EUROPIUM, 0)); + self::register("element_fermium", $factory->get(Ids::ELEMENT_FERMIUM, 0)); + self::register("element_flerovium", $factory->get(Ids::ELEMENT_FLEROVIUM, 0)); + self::register("element_fluorine", $factory->get(Ids::ELEMENT_FLUORINE, 0)); + self::register("element_francium", $factory->get(Ids::ELEMENT_FRANCIUM, 0)); + self::register("element_gadolinium", $factory->get(Ids::ELEMENT_GADOLINIUM, 0)); + self::register("element_gallium", $factory->get(Ids::ELEMENT_GALLIUM, 0)); + self::register("element_germanium", $factory->get(Ids::ELEMENT_GERMANIUM, 0)); + self::register("element_gold", $factory->get(Ids::ELEMENT_GOLD, 0)); + self::register("element_hafnium", $factory->get(Ids::ELEMENT_HAFNIUM, 0)); + self::register("element_hassium", $factory->get(Ids::ELEMENT_HASSIUM, 0)); + self::register("element_helium", $factory->get(Ids::ELEMENT_HELIUM, 0)); + self::register("element_holmium", $factory->get(Ids::ELEMENT_HOLMIUM, 0)); + self::register("element_hydrogen", $factory->get(Ids::ELEMENT_HYDROGEN, 0)); + self::register("element_indium", $factory->get(Ids::ELEMENT_INDIUM, 0)); + self::register("element_iodine", $factory->get(Ids::ELEMENT_IODINE, 0)); + self::register("element_iridium", $factory->get(Ids::ELEMENT_IRIDIUM, 0)); + self::register("element_iron", $factory->get(Ids::ELEMENT_IRON, 0)); + self::register("element_krypton", $factory->get(Ids::ELEMENT_KRYPTON, 0)); + self::register("element_lanthanum", $factory->get(Ids::ELEMENT_LANTHANUM, 0)); + self::register("element_lawrencium", $factory->get(Ids::ELEMENT_LAWRENCIUM, 0)); + self::register("element_lead", $factory->get(Ids::ELEMENT_LEAD, 0)); + self::register("element_lithium", $factory->get(Ids::ELEMENT_LITHIUM, 0)); + self::register("element_livermorium", $factory->get(Ids::ELEMENT_LIVERMORIUM, 0)); + self::register("element_lutetium", $factory->get(Ids::ELEMENT_LUTETIUM, 0)); + self::register("element_magnesium", $factory->get(Ids::ELEMENT_MAGNESIUM, 0)); + self::register("element_manganese", $factory->get(Ids::ELEMENT_MANGANESE, 0)); + self::register("element_meitnerium", $factory->get(Ids::ELEMENT_MEITNERIUM, 0)); + self::register("element_mendelevium", $factory->get(Ids::ELEMENT_MENDELEVIUM, 0)); + self::register("element_mercury", $factory->get(Ids::ELEMENT_MERCURY, 0)); + self::register("element_molybdenum", $factory->get(Ids::ELEMENT_MOLYBDENUM, 0)); + self::register("element_moscovium", $factory->get(Ids::ELEMENT_MOSCOVIUM, 0)); + self::register("element_neodymium", $factory->get(Ids::ELEMENT_NEODYMIUM, 0)); + self::register("element_neon", $factory->get(Ids::ELEMENT_NEON, 0)); + self::register("element_neptunium", $factory->get(Ids::ELEMENT_NEPTUNIUM, 0)); + self::register("element_nickel", $factory->get(Ids::ELEMENT_NICKEL, 0)); + self::register("element_nihonium", $factory->get(Ids::ELEMENT_NIHONIUM, 0)); + self::register("element_niobium", $factory->get(Ids::ELEMENT_NIOBIUM, 0)); + self::register("element_nitrogen", $factory->get(Ids::ELEMENT_NITROGEN, 0)); + self::register("element_nobelium", $factory->get(Ids::ELEMENT_NOBELIUM, 0)); + self::register("element_oganesson", $factory->get(Ids::ELEMENT_OGANESSON, 0)); + self::register("element_osmium", $factory->get(Ids::ELEMENT_OSMIUM, 0)); + self::register("element_oxygen", $factory->get(Ids::ELEMENT_OXYGEN, 0)); + self::register("element_palladium", $factory->get(Ids::ELEMENT_PALLADIUM, 0)); + self::register("element_phosphorus", $factory->get(Ids::ELEMENT_PHOSPHORUS, 0)); + self::register("element_platinum", $factory->get(Ids::ELEMENT_PLATINUM, 0)); + self::register("element_plutonium", $factory->get(Ids::ELEMENT_PLUTONIUM, 0)); + self::register("element_polonium", $factory->get(Ids::ELEMENT_POLONIUM, 0)); + self::register("element_potassium", $factory->get(Ids::ELEMENT_POTASSIUM, 0)); + self::register("element_praseodymium", $factory->get(Ids::ELEMENT_PRASEODYMIUM, 0)); + self::register("element_promethium", $factory->get(Ids::ELEMENT_PROMETHIUM, 0)); + self::register("element_protactinium", $factory->get(Ids::ELEMENT_PROTACTINIUM, 0)); + self::register("element_radium", $factory->get(Ids::ELEMENT_RADIUM, 0)); + self::register("element_radon", $factory->get(Ids::ELEMENT_RADON, 0)); + self::register("element_rhenium", $factory->get(Ids::ELEMENT_RHENIUM, 0)); + self::register("element_rhodium", $factory->get(Ids::ELEMENT_RHODIUM, 0)); + self::register("element_roentgenium", $factory->get(Ids::ELEMENT_ROENTGENIUM, 0)); + self::register("element_rubidium", $factory->get(Ids::ELEMENT_RUBIDIUM, 0)); + self::register("element_ruthenium", $factory->get(Ids::ELEMENT_RUTHENIUM, 0)); + self::register("element_rutherfordium", $factory->get(Ids::ELEMENT_RUTHERFORDIUM, 0)); + self::register("element_samarium", $factory->get(Ids::ELEMENT_SAMARIUM, 0)); + self::register("element_scandium", $factory->get(Ids::ELEMENT_SCANDIUM, 0)); + self::register("element_seaborgium", $factory->get(Ids::ELEMENT_SEABORGIUM, 0)); + self::register("element_selenium", $factory->get(Ids::ELEMENT_SELENIUM, 0)); + self::register("element_silicon", $factory->get(Ids::ELEMENT_SILICON, 0)); + self::register("element_silver", $factory->get(Ids::ELEMENT_SILVER, 0)); + self::register("element_sodium", $factory->get(Ids::ELEMENT_SODIUM, 0)); + self::register("element_strontium", $factory->get(Ids::ELEMENT_STRONTIUM, 0)); + self::register("element_sulfur", $factory->get(Ids::ELEMENT_SULFUR, 0)); + self::register("element_tantalum", $factory->get(Ids::ELEMENT_TANTALUM, 0)); + self::register("element_technetium", $factory->get(Ids::ELEMENT_TECHNETIUM, 0)); + self::register("element_tellurium", $factory->get(Ids::ELEMENT_TELLURIUM, 0)); + self::register("element_tennessine", $factory->get(Ids::ELEMENT_TENNESSINE, 0)); + self::register("element_terbium", $factory->get(Ids::ELEMENT_TERBIUM, 0)); + self::register("element_thallium", $factory->get(Ids::ELEMENT_THALLIUM, 0)); + self::register("element_thorium", $factory->get(Ids::ELEMENT_THORIUM, 0)); + self::register("element_thulium", $factory->get(Ids::ELEMENT_THULIUM, 0)); + self::register("element_tin", $factory->get(Ids::ELEMENT_TIN, 0)); + self::register("element_titanium", $factory->get(Ids::ELEMENT_TITANIUM, 0)); + self::register("element_tungsten", $factory->get(Ids::ELEMENT_TUNGSTEN, 0)); + self::register("element_uranium", $factory->get(Ids::ELEMENT_URANIUM, 0)); + self::register("element_vanadium", $factory->get(Ids::ELEMENT_VANADIUM, 0)); + self::register("element_xenon", $factory->get(Ids::ELEMENT_XENON, 0)); + self::register("element_ytterbium", $factory->get(Ids::ELEMENT_YTTERBIUM, 0)); + self::register("element_yttrium", $factory->get(Ids::ELEMENT_YTTRIUM, 0)); + self::register("element_zero", $factory->get(Ids::ELEMENT_ZERO, 0)); + self::register("element_zinc", $factory->get(Ids::ELEMENT_ZINC, 0)); + self::register("element_zirconium", $factory->get(Ids::ELEMENT_ZIRCONIUM, 0)); + self::register("emerald", $factory->get(Ids::EMERALD, 0)); self::register("emerald_ore", $factory->get(Ids::EMERALD_ORE, 0)); self::register("enchanting_table", $factory->get(Ids::ENCHANTING_TABLE, 0)); self::register("end_portal_frame", $factory->get(Ids::END_PORTAL_FRAME, 0)); self::register("end_rod", $factory->get(Ids::END_ROD, 0)); self::register("end_stone", $factory->get(Ids::END_STONE, 0)); - self::register("end_stone_brick_slab", $factory->get(Ids::STONE_SLAB3, 0)); - self::register("end_stone_brick_stairs", $factory->get(Ids::END_BRICK_STAIRS, 0)); - self::register("end_stone_brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 10)); - self::register("end_stone_bricks", $factory->get(Ids::END_BRICKS, 0)); + self::register("end_stone_brick_slab", $factory->get(Ids::END_STONE_BRICK_SLAB, 0)); + self::register("end_stone_brick_stairs", $factory->get(Ids::END_STONE_BRICK_STAIRS, 3)); + self::register("end_stone_brick_wall", $factory->get(Ids::END_STONE_BRICK_WALL, 0)); + self::register("end_stone_bricks", $factory->get(Ids::END_STONE_BRICKS, 0)); self::register("ender_chest", $factory->get(Ids::ENDER_CHEST, 2)); - self::register("fake_wooden_slab", $factory->get(Ids::STONE_SLAB, 2)); + self::register("fake_wooden_slab", $factory->get(Ids::FAKE_WOODEN_SLAB, 0)); self::register("farmland", $factory->get(Ids::FARMLAND, 0)); - self::register("fern", $factory->get(Ids::TALLGRASS, 2)); + self::register("fern", $factory->get(Ids::FERN, 0)); self::register("fire", $factory->get(Ids::FIRE, 0)); self::register("fletching_table", $factory->get(Ids::FLETCHING_TABLE, 0)); - self::register("flower_pot", $factory->get(Ids::FLOWER_POT_BLOCK, 0)); + self::register("flower_pot", $factory->get(Ids::FLOWER_POT, 0)); self::register("frosted_ice", $factory->get(Ids::FROSTED_ICE, 0)); - self::register("furnace", $factory->get(Ids::FURNACE, 2)); + self::register("furnace", $factory->get(Ids::FURNACE, 0)); self::register("glass", $factory->get(Ids::GLASS, 0)); self::register("glass_pane", $factory->get(Ids::GLASS_PANE, 0)); - self::register("glowing_obsidian", $factory->get(Ids::GLOWINGOBSIDIAN, 0)); + self::register("glowing_obsidian", $factory->get(Ids::GLOWING_OBSIDIAN, 0)); self::register("glowstone", $factory->get(Ids::GLOWSTONE, 0)); - self::register("gold", $factory->get(Ids::GOLD_BLOCK, 0)); + self::register("gold", $factory->get(Ids::GOLD, 0)); self::register("gold_ore", $factory->get(Ids::GOLD_ORE, 0)); - self::register("granite", $factory->get(Ids::STONE, 1)); - self::register("granite_slab", $factory->get(Ids::STONE_SLAB3, 6)); - self::register("granite_stairs", $factory->get(Ids::GRANITE_STAIRS, 0)); - self::register("granite_wall", $factory->get(Ids::COBBLESTONE_WALL, 2)); + self::register("granite", $factory->get(Ids::GRANITE, 0)); + self::register("granite_slab", $factory->get(Ids::GRANITE_SLAB, 0)); + self::register("granite_stairs", $factory->get(Ids::GRANITE_STAIRS, 3)); + self::register("granite_wall", $factory->get(Ids::GRANITE_WALL, 0)); self::register("grass", $factory->get(Ids::GRASS, 0)); self::register("grass_path", $factory->get(Ids::GRASS_PATH, 0)); self::register("gravel", $factory->get(Ids::GRAVEL, 0)); self::register("gray_glazed_terracotta", $factory->get(Ids::GRAY_GLAZED_TERRACOTTA, 2)); self::register("green_glazed_terracotta", $factory->get(Ids::GREEN_GLAZED_TERRACOTTA, 2)); - self::register("green_torch", $factory->get(Ids::COLORED_TORCH_RG, 13)); + self::register("green_torch", $factory->get(Ids::GREEN_TORCH, 1)); self::register("hardened_clay", $factory->get(Ids::HARDENED_CLAY, 0)); - self::register("hardened_glass", $factory->get(Ids::HARD_GLASS, 0)); - self::register("hardened_glass_pane", $factory->get(Ids::HARD_GLASS_PANE, 0)); + self::register("hardened_glass", $factory->get(Ids::HARDENED_GLASS, 0)); + self::register("hardened_glass_pane", $factory->get(Ids::HARDENED_GLASS_PANE, 0)); self::register("hay_bale", $factory->get(Ids::HAY_BALE, 0)); - self::register("hopper", $factory->get(Ids::HOPPER_BLOCK, 0)); + self::register("hopper", $factory->get(Ids::HOPPER, 0)); self::register("ice", $factory->get(Ids::ICE, 0)); - self::register("infested_chiseled_stone_brick", $factory->get(Ids::MONSTER_EGG, 5)); - self::register("infested_cobblestone", $factory->get(Ids::MONSTER_EGG, 1)); - self::register("infested_cracked_stone_brick", $factory->get(Ids::MONSTER_EGG, 4)); - self::register("infested_mossy_stone_brick", $factory->get(Ids::MONSTER_EGG, 3)); - self::register("infested_stone", $factory->get(Ids::MONSTER_EGG, 0)); - self::register("infested_stone_brick", $factory->get(Ids::MONSTER_EGG, 2)); + self::register("infested_chiseled_stone_brick", $factory->get(Ids::INFESTED_CHISELED_STONE_BRICK, 0)); + self::register("infested_cobblestone", $factory->get(Ids::INFESTED_COBBLESTONE, 0)); + self::register("infested_cracked_stone_brick", $factory->get(Ids::INFESTED_CRACKED_STONE_BRICK, 0)); + self::register("infested_mossy_stone_brick", $factory->get(Ids::INFESTED_MOSSY_STONE_BRICK, 0)); + self::register("infested_stone", $factory->get(Ids::INFESTED_STONE, 0)); + self::register("infested_stone_brick", $factory->get(Ids::INFESTED_STONE_BRICK, 0)); self::register("info_update", $factory->get(Ids::INFO_UPDATE, 0)); self::register("info_update2", $factory->get(Ids::INFO_UPDATE2, 0)); - self::register("invisible_bedrock", $factory->get(Ids::INVISIBLEBEDROCK, 0)); - self::register("iron", $factory->get(Ids::IRON_BLOCK, 0)); + self::register("invisible_bedrock", $factory->get(Ids::INVISIBLE_BEDROCK, 0)); + self::register("iron", $factory->get(Ids::IRON, 0)); self::register("iron_bars", $factory->get(Ids::IRON_BARS, 0)); - self::register("iron_door", $factory->get(Ids::IRON_DOOR_BLOCK, 0)); + self::register("iron_door", $factory->get(Ids::IRON_DOOR, 0)); self::register("iron_ore", $factory->get(Ids::IRON_ORE, 0)); - self::register("iron_trapdoor", $factory->get(Ids::IRON_TRAPDOOR, 0)); - self::register("item_frame", $factory->get(Ids::FRAME_BLOCK, 0)); + self::register("iron_trapdoor", $factory->get(Ids::IRON_TRAPDOOR, 3)); + self::register("item_frame", $factory->get(Ids::ITEM_FRAME, 3)); self::register("jukebox", $factory->get(Ids::JUKEBOX, 0)); self::register("jungle_button", $factory->get(Ids::JUNGLE_BUTTON, 0)); - self::register("jungle_door", $factory->get(Ids::JUNGLE_DOOR_BLOCK, 0)); - self::register("jungle_fence", $factory->get(Ids::FENCE, 3)); + self::register("jungle_door", $factory->get(Ids::JUNGLE_DOOR, 0)); + self::register("jungle_fence", $factory->get(Ids::JUNGLE_FENCE, 0)); self::register("jungle_fence_gate", $factory->get(Ids::JUNGLE_FENCE_GATE, 0)); - self::register("jungle_leaves", $factory->get(Ids::LEAVES, 3)); - self::register("jungle_log", $factory->get(Ids::LOG, 3)); - self::register("jungle_planks", $factory->get(Ids::PLANKS, 3)); + self::register("jungle_leaves", $factory->get(Ids::JUNGLE_LEAVES, 0)); + self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 0)); + self::register("jungle_planks", $factory->get(Ids::JUNGLE_PLANKS, 0)); self::register("jungle_pressure_plate", $factory->get(Ids::JUNGLE_PRESSURE_PLATE, 0)); - self::register("jungle_sapling", $factory->get(Ids::SAPLING, 3)); - self::register("jungle_sign", $factory->get(Ids::JUNGLE_STANDING_SIGN, 0)); - self::register("jungle_slab", $factory->get(Ids::WOODEN_SLAB, 3)); - self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 0)); - self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 0)); + self::register("jungle_sapling", $factory->get(Ids::JUNGLE_SAPLING, 0)); + self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN, 0)); + self::register("jungle_slab", $factory->get(Ids::JUNGLE_SLAB, 0)); + self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 3)); + self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 3)); self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 2)); - self::register("jungle_wood", $factory->get(Ids::WOOD, 3)); - self::register("lab_table", $factory->get(Ids::CHEMISTRY_TABLE, 12)); + self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 0)); + self::register("lab_table", $factory->get(Ids::LAB_TABLE, 0)); self::register("ladder", $factory->get(Ids::LADDER, 2)); self::register("lantern", $factory->get(Ids::LANTERN, 0)); - self::register("lapis_lazuli", $factory->get(Ids::LAPIS_BLOCK, 0)); - self::register("lapis_lazuli_ore", $factory->get(Ids::LAPIS_ORE, 0)); - self::register("large_fern", $factory->get(Ids::DOUBLE_PLANT, 3)); - self::register("lava", $factory->get(Ids::FLOWING_LAVA, 0)); - self::register("lectern", $factory->get(Ids::LECTERN, 0)); - self::register("legacy_stonecutter", $factory->get(Ids::STONECUTTER, 0)); - self::register("lever", $factory->get(Ids::LEVER, 0)); + self::register("lapis_lazuli", $factory->get(Ids::LAPIS_LAZULI, 0)); + self::register("lapis_lazuli_ore", $factory->get(Ids::LAPIS_LAZULI_ORE, 0)); + self::register("large_fern", $factory->get(Ids::LARGE_FERN, 0)); + self::register("lava", $factory->get(Ids::LAVA, 0)); + self::register("lectern", $factory->get(Ids::LECTERN, 2)); + self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0)); + self::register("lever", $factory->get(Ids::LEVER, 6)); self::register("light_blue_glazed_terracotta", $factory->get(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 2)); - self::register("light_gray_glazed_terracotta", $factory->get(Ids::SILVER_GLAZED_TERRACOTTA, 2)); - self::register("lilac", $factory->get(Ids::DOUBLE_PLANT, 1)); - self::register("lily_of_the_valley", $factory->get(Ids::POPPY, 10)); + self::register("light_gray_glazed_terracotta", $factory->get(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, 2)); + self::register("lilac", $factory->get(Ids::LILAC, 0)); + self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0)); self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0)); self::register("lime_glazed_terracotta", $factory->get(Ids::LIME_GLAZED_TERRACOTTA, 2)); - self::register("lit_pumpkin", $factory->get(Ids::JACK_O_LANTERN, 0)); - self::register("loom", $factory->get(Ids::LOOM, 0)); + self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0)); + self::register("loom", $factory->get(Ids::LOOM, 2)); self::register("magenta_glazed_terracotta", $factory->get(Ids::MAGENTA_GLAZED_TERRACOTTA, 2)); self::register("magma", $factory->get(Ids::MAGMA, 0)); - self::register("material_reducer", $factory->get(Ids::CHEMISTRY_TABLE, 4)); - self::register("melon", $factory->get(Ids::MELON_BLOCK, 0)); + self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); + self::register("melon", $factory->get(Ids::MELON, 0)); self::register("melon_stem", $factory->get(Ids::MELON_STEM, 0)); - self::register("mob_head", $factory->get(Ids::MOB_HEAD_BLOCK, 2)); - self::register("monster_spawner", $factory->get(Ids::MOB_SPAWNER, 0)); + self::register("mob_head", $factory->get(Ids::MOB_HEAD, 2)); + self::register("monster_spawner", $factory->get(Ids::MONSTER_SPAWNER, 0)); self::register("mossy_cobblestone", $factory->get(Ids::MOSSY_COBBLESTONE, 0)); - self::register("mossy_cobblestone_slab", $factory->get(Ids::STONE_SLAB2, 5)); - self::register("mossy_cobblestone_stairs", $factory->get(Ids::MOSSY_COBBLESTONE_STAIRS, 0)); - self::register("mossy_cobblestone_wall", $factory->get(Ids::COBBLESTONE_WALL, 1)); - self::register("mossy_stone_brick_slab", $factory->get(Ids::STONE_SLAB4, 0)); - self::register("mossy_stone_brick_stairs", $factory->get(Ids::MOSSY_STONE_BRICK_STAIRS, 0)); - self::register("mossy_stone_brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 8)); - self::register("mossy_stone_bricks", $factory->get(Ids::STONEBRICK, 1)); - self::register("mushroom_stem", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10)); + self::register("mossy_cobblestone_slab", $factory->get(Ids::MOSSY_COBBLESTONE_SLAB, 0)); + self::register("mossy_cobblestone_stairs", $factory->get(Ids::MOSSY_COBBLESTONE_STAIRS, 3)); + self::register("mossy_cobblestone_wall", $factory->get(Ids::MOSSY_COBBLESTONE_WALL, 0)); + self::register("mossy_stone_brick_slab", $factory->get(Ids::MOSSY_STONE_BRICK_SLAB, 0)); + self::register("mossy_stone_brick_stairs", $factory->get(Ids::MOSSY_STONE_BRICK_STAIRS, 3)); + self::register("mossy_stone_brick_wall", $factory->get(Ids::MOSSY_STONE_BRICK_WALL, 0)); + self::register("mossy_stone_bricks", $factory->get(Ids::MOSSY_STONE_BRICKS, 0)); + self::register("mushroom_stem", $factory->get(Ids::MUSHROOM_STEM, 0)); self::register("mycelium", $factory->get(Ids::MYCELIUM, 0)); self::register("nether_brick_fence", $factory->get(Ids::NETHER_BRICK_FENCE, 0)); - self::register("nether_brick_slab", $factory->get(Ids::STONE_SLAB, 7)); - self::register("nether_brick_stairs", $factory->get(Ids::NETHER_BRICK_STAIRS, 0)); - self::register("nether_brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 9)); - self::register("nether_bricks", $factory->get(Ids::NETHER_BRICK_BLOCK, 0)); - self::register("nether_portal", $factory->get(Ids::PORTAL, 1)); + self::register("nether_brick_slab", $factory->get(Ids::NETHER_BRICK_SLAB, 0)); + self::register("nether_brick_stairs", $factory->get(Ids::NETHER_BRICK_STAIRS, 3)); + self::register("nether_brick_wall", $factory->get(Ids::NETHER_BRICK_WALL, 0)); + self::register("nether_bricks", $factory->get(Ids::NETHER_BRICKS, 0)); + self::register("nether_portal", $factory->get(Ids::NETHER_PORTAL, 1)); self::register("nether_quartz_ore", $factory->get(Ids::NETHER_QUARTZ_ORE, 0)); - self::register("nether_reactor_core", $factory->get(Ids::NETHERREACTOR, 0)); - self::register("nether_wart", $factory->get(Ids::NETHER_WART_PLANT, 0)); + self::register("nether_reactor_core", $factory->get(Ids::NETHER_REACTOR_CORE, 0)); + self::register("nether_wart", $factory->get(Ids::NETHER_WART, 0)); self::register("nether_wart_block", $factory->get(Ids::NETHER_WART_BLOCK, 0)); self::register("netherrack", $factory->get(Ids::NETHERRACK, 0)); - self::register("note_block", $factory->get(Ids::NOTEBLOCK, 0)); - self::register("oak_button", $factory->get(Ids::WOODEN_BUTTON, 0)); - self::register("oak_door", $factory->get(Ids::OAK_DOOR_BLOCK, 0)); - self::register("oak_fence", $factory->get(Ids::FENCE, 0)); - self::register("oak_fence_gate", $factory->get(Ids::FENCE_GATE, 0)); - self::register("oak_leaves", $factory->get(Ids::LEAVES, 0)); - self::register("oak_log", $factory->get(Ids::LOG, 0)); - self::register("oak_planks", $factory->get(Ids::PLANKS, 0)); - self::register("oak_pressure_plate", $factory->get(Ids::WOODEN_PRESSURE_PLATE, 0)); - self::register("oak_sapling", $factory->get(Ids::SAPLING, 0)); - self::register("oak_sign", $factory->get(Ids::SIGN_POST, 0)); - self::register("oak_slab", $factory->get(Ids::WOODEN_SLAB, 0)); - self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 0)); - self::register("oak_trapdoor", $factory->get(Ids::TRAPDOOR, 0)); - self::register("oak_wall_sign", $factory->get(Ids::WALL_SIGN, 2)); - self::register("oak_wood", $factory->get(Ids::WOOD, 0)); + self::register("note_block", $factory->get(Ids::NOTE_BLOCK, 0)); + self::register("oak_button", $factory->get(Ids::OAK_BUTTON, 0)); + self::register("oak_door", $factory->get(Ids::OAK_DOOR, 0)); + self::register("oak_fence", $factory->get(Ids::OAK_FENCE, 0)); + self::register("oak_fence_gate", $factory->get(Ids::OAK_FENCE_GATE, 0)); + self::register("oak_leaves", $factory->get(Ids::OAK_LEAVES, 0)); + self::register("oak_log", $factory->get(Ids::OAK_LOG, 0)); + self::register("oak_planks", $factory->get(Ids::OAK_PLANKS, 0)); + self::register("oak_pressure_plate", $factory->get(Ids::OAK_PRESSURE_PLATE, 0)); + self::register("oak_sapling", $factory->get(Ids::OAK_SAPLING, 0)); + self::register("oak_sign", $factory->get(Ids::OAK_SIGN, 0)); + self::register("oak_slab", $factory->get(Ids::OAK_SLAB, 0)); + self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 3)); + self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 3)); + self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 2)); + self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0)); self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0)); self::register("orange_glazed_terracotta", $factory->get(Ids::ORANGE_GLAZED_TERRACOTTA, 2)); - self::register("orange_tulip", $factory->get(Ids::POPPY, 5)); - self::register("oxeye_daisy", $factory->get(Ids::POPPY, 8)); + self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0)); + self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0)); self::register("packed_ice", $factory->get(Ids::PACKED_ICE, 0)); - self::register("peony", $factory->get(Ids::DOUBLE_PLANT, 5)); + self::register("peony", $factory->get(Ids::PEONY, 0)); self::register("pink_glazed_terracotta", $factory->get(Ids::PINK_GLAZED_TERRACOTTA, 2)); - self::register("pink_tulip", $factory->get(Ids::POPPY, 7)); + self::register("pink_tulip", $factory->get(Ids::PINK_TULIP, 0)); self::register("podzol", $factory->get(Ids::PODZOL, 0)); - self::register("polished_andesite", $factory->get(Ids::STONE, 6)); - self::register("polished_andesite_slab", $factory->get(Ids::STONE_SLAB3, 2)); - self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 0)); - self::register("polished_diorite", $factory->get(Ids::STONE, 4)); - self::register("polished_diorite_slab", $factory->get(Ids::STONE_SLAB3, 5)); - self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 0)); - self::register("polished_granite", $factory->get(Ids::STONE, 2)); - self::register("polished_granite_slab", $factory->get(Ids::STONE_SLAB3, 7)); - self::register("polished_granite_stairs", $factory->get(Ids::POLISHED_GRANITE_STAIRS, 0)); + self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0)); + self::register("polished_andesite_slab", $factory->get(Ids::POLISHED_ANDESITE_SLAB, 0)); + self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 3)); + self::register("polished_diorite", $factory->get(Ids::POLISHED_DIORITE, 0)); + self::register("polished_diorite_slab", $factory->get(Ids::POLISHED_DIORITE_SLAB, 0)); + self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 3)); + self::register("polished_granite", $factory->get(Ids::POLISHED_GRANITE, 0)); + self::register("polished_granite_slab", $factory->get(Ids::POLISHED_GRANITE_SLAB, 0)); + self::register("polished_granite_stairs", $factory->get(Ids::POLISHED_GRANITE_STAIRS, 3)); self::register("poppy", $factory->get(Ids::POPPY, 0)); self::register("potatoes", $factory->get(Ids::POTATOES, 0)); - self::register("powered_rail", $factory->get(Ids::GOLDEN_RAIL, 0)); + self::register("powered_rail", $factory->get(Ids::POWERED_RAIL, 0)); self::register("prismarine", $factory->get(Ids::PRISMARINE, 0)); - self::register("prismarine_bricks", $factory->get(Ids::PRISMARINE, 2)); - self::register("prismarine_bricks_slab", $factory->get(Ids::STONE_SLAB2, 4)); - self::register("prismarine_bricks_stairs", $factory->get(Ids::PRISMARINE_BRICKS_STAIRS, 0)); - self::register("prismarine_slab", $factory->get(Ids::STONE_SLAB2, 2)); - self::register("prismarine_stairs", $factory->get(Ids::PRISMARINE_STAIRS, 0)); - self::register("prismarine_wall", $factory->get(Ids::COBBLESTONE_WALL, 11)); + self::register("prismarine_bricks", $factory->get(Ids::PRISMARINE_BRICKS, 0)); + self::register("prismarine_bricks_slab", $factory->get(Ids::PRISMARINE_BRICKS_SLAB, 0)); + self::register("prismarine_bricks_stairs", $factory->get(Ids::PRISMARINE_BRICKS_STAIRS, 3)); + self::register("prismarine_slab", $factory->get(Ids::PRISMARINE_SLAB, 0)); + self::register("prismarine_stairs", $factory->get(Ids::PRISMARINE_STAIRS, 3)); + self::register("prismarine_wall", $factory->get(Ids::PRISMARINE_WALL, 0)); self::register("pumpkin", $factory->get(Ids::PUMPKIN, 0)); self::register("pumpkin_stem", $factory->get(Ids::PUMPKIN_STEM, 0)); self::register("purple_glazed_terracotta", $factory->get(Ids::PURPLE_GLAZED_TERRACOTTA, 2)); - self::register("purple_torch", $factory->get(Ids::COLORED_TORCH_BP, 13)); - self::register("purpur", $factory->get(Ids::PURPUR_BLOCK, 0)); - self::register("purpur_pillar", $factory->get(Ids::PURPUR_BLOCK, 2)); - self::register("purpur_slab", $factory->get(Ids::STONE_SLAB2, 1)); - self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 0)); - self::register("quartz", $factory->get(Ids::QUARTZ_BLOCK, 0)); - self::register("quartz_pillar", $factory->get(Ids::QUARTZ_BLOCK, 2)); - self::register("quartz_slab", $factory->get(Ids::STONE_SLAB, 6)); - self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); + self::register("purple_torch", $factory->get(Ids::PURPLE_TORCH, 1)); + self::register("purpur", $factory->get(Ids::PURPUR, 0)); + self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 0)); + self::register("purpur_slab", $factory->get(Ids::PURPUR_SLAB, 0)); + self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 3)); + self::register("quartz", $factory->get(Ids::QUARTZ, 0)); + self::register("quartz_pillar", $factory->get(Ids::QUARTZ_PILLAR, 0)); + self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); + self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 3)); self::register("rail", $factory->get(Ids::RAIL, 0)); self::register("red_glazed_terracotta", $factory->get(Ids::RED_GLAZED_TERRACOTTA, 2)); self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0)); self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 0)); - self::register("red_nether_brick_slab", $factory->get(Ids::STONE_SLAB2, 7)); - self::register("red_nether_brick_stairs", $factory->get(Ids::RED_NETHER_BRICK_STAIRS, 0)); - self::register("red_nether_brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 13)); - self::register("red_nether_bricks", $factory->get(Ids::RED_NETHER_BRICK, 0)); - self::register("red_sand", $factory->get(Ids::SAND, 1)); + self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0)); + self::register("red_nether_brick_stairs", $factory->get(Ids::RED_NETHER_BRICK_STAIRS, 3)); + self::register("red_nether_brick_wall", $factory->get(Ids::RED_NETHER_BRICK_WALL, 0)); + self::register("red_nether_bricks", $factory->get(Ids::RED_NETHER_BRICKS, 0)); + self::register("red_sand", $factory->get(Ids::RED_SAND, 0)); self::register("red_sandstone", $factory->get(Ids::RED_SANDSTONE, 0)); - self::register("red_sandstone_slab", $factory->get(Ids::STONE_SLAB2, 0)); - self::register("red_sandstone_stairs", $factory->get(Ids::RED_SANDSTONE_STAIRS, 0)); - self::register("red_sandstone_wall", $factory->get(Ids::COBBLESTONE_WALL, 12)); - self::register("red_torch", $factory->get(Ids::COLORED_TORCH_RG, 5)); - self::register("red_tulip", $factory->get(Ids::POPPY, 4)); - self::register("redstone", $factory->get(Ids::REDSTONE_BLOCK, 0)); - self::register("redstone_comparator", $factory->get(Ids::COMPARATOR_BLOCK, 0)); + self::register("red_sandstone_slab", $factory->get(Ids::RED_SANDSTONE_SLAB, 0)); + self::register("red_sandstone_stairs", $factory->get(Ids::RED_SANDSTONE_STAIRS, 3)); + self::register("red_sandstone_wall", $factory->get(Ids::RED_SANDSTONE_WALL, 0)); + self::register("red_torch", $factory->get(Ids::RED_TORCH, 1)); + self::register("red_tulip", $factory->get(Ids::RED_TULIP, 0)); + self::register("redstone", $factory->get(Ids::REDSTONE, 0)); + self::register("redstone_comparator", $factory->get(Ids::REDSTONE_COMPARATOR, 2)); self::register("redstone_lamp", $factory->get(Ids::REDSTONE_LAMP, 0)); self::register("redstone_ore", $factory->get(Ids::REDSTONE_ORE, 0)); - self::register("redstone_repeater", $factory->get(Ids::REPEATER_BLOCK, 0)); - self::register("redstone_torch", $factory->get(Ids::LIT_REDSTONE_TORCH, 5)); + self::register("redstone_repeater", $factory->get(Ids::REDSTONE_REPEATER, 0)); + self::register("redstone_torch", $factory->get(Ids::REDSTONE_TORCH, 9)); self::register("redstone_wire", $factory->get(Ids::REDSTONE_WIRE, 0)); self::register("reserved6", $factory->get(Ids::RESERVED6, 0)); - self::register("rose_bush", $factory->get(Ids::DOUBLE_PLANT, 4)); + self::register("rose_bush", $factory->get(Ids::ROSE_BUSH, 0)); self::register("sand", $factory->get(Ids::SAND, 0)); self::register("sandstone", $factory->get(Ids::SANDSTONE, 0)); - self::register("sandstone_slab", $factory->get(Ids::STONE_SLAB, 1)); - self::register("sandstone_stairs", $factory->get(Ids::SANDSTONE_STAIRS, 0)); - self::register("sandstone_wall", $factory->get(Ids::COBBLESTONE_WALL, 5)); - self::register("sea_lantern", $factory->get(Ids::SEALANTERN, 0)); - self::register("sea_pickle", $factory->get(Ids::SEA_PICKLE, 0)); - self::register("shulker_box", $factory->get(Ids::UNDYED_SHULKER_BOX, 0)); + self::register("sandstone_slab", $factory->get(Ids::SANDSTONE_SLAB, 0)); + self::register("sandstone_stairs", $factory->get(Ids::SANDSTONE_STAIRS, 3)); + self::register("sandstone_wall", $factory->get(Ids::SANDSTONE_WALL, 0)); + self::register("sea_lantern", $factory->get(Ids::SEA_LANTERN, 0)); + self::register("sea_pickle", $factory->get(Ids::SEA_PICKLE, 4)); + self::register("shulker_box", $factory->get(Ids::SHULKER_BOX, 0)); self::register("slime", $factory->get(Ids::SLIME, 0)); - self::register("smoker", $factory->get(Ids::SMOKER, 2)); - self::register("smooth_quartz", $factory->get(Ids::QUARTZ_BLOCK, 3)); - self::register("smooth_quartz_slab", $factory->get(Ids::STONE_SLAB4, 1)); - self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 0)); - self::register("smooth_red_sandstone", $factory->get(Ids::RED_SANDSTONE, 3)); - self::register("smooth_red_sandstone_slab", $factory->get(Ids::STONE_SLAB3, 1)); - self::register("smooth_red_sandstone_stairs", $factory->get(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 0)); - self::register("smooth_sandstone", $factory->get(Ids::SANDSTONE, 3)); - self::register("smooth_sandstone_slab", $factory->get(Ids::STONE_SLAB2, 6)); - self::register("smooth_sandstone_stairs", $factory->get(Ids::SMOOTH_SANDSTONE_STAIRS, 0)); + self::register("smoker", $factory->get(Ids::SMOKER, 0)); + self::register("smooth_quartz", $factory->get(Ids::SMOOTH_QUARTZ, 0)); + self::register("smooth_quartz_slab", $factory->get(Ids::SMOOTH_QUARTZ_SLAB, 0)); + self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 3)); + self::register("smooth_red_sandstone", $factory->get(Ids::SMOOTH_RED_SANDSTONE, 0)); + self::register("smooth_red_sandstone_slab", $factory->get(Ids::SMOOTH_RED_SANDSTONE_SLAB, 0)); + self::register("smooth_red_sandstone_stairs", $factory->get(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 3)); + self::register("smooth_sandstone", $factory->get(Ids::SMOOTH_SANDSTONE, 0)); + self::register("smooth_sandstone_slab", $factory->get(Ids::SMOOTH_SANDSTONE_SLAB, 0)); + self::register("smooth_sandstone_stairs", $factory->get(Ids::SMOOTH_SANDSTONE_STAIRS, 3)); self::register("smooth_stone", $factory->get(Ids::SMOOTH_STONE, 0)); - self::register("smooth_stone_slab", $factory->get(Ids::STONE_SLAB, 0)); + self::register("smooth_stone_slab", $factory->get(Ids::SMOOTH_STONE_SLAB, 0)); self::register("snow", $factory->get(Ids::SNOW, 0)); self::register("snow_layer", $factory->get(Ids::SNOW_LAYER, 0)); self::register("soul_sand", $factory->get(Ids::SOUL_SAND, 0)); self::register("sponge", $factory->get(Ids::SPONGE, 0)); self::register("spruce_button", $factory->get(Ids::SPRUCE_BUTTON, 0)); - self::register("spruce_door", $factory->get(Ids::SPRUCE_DOOR_BLOCK, 0)); - self::register("spruce_fence", $factory->get(Ids::FENCE, 1)); + self::register("spruce_door", $factory->get(Ids::SPRUCE_DOOR, 0)); + self::register("spruce_fence", $factory->get(Ids::SPRUCE_FENCE, 0)); self::register("spruce_fence_gate", $factory->get(Ids::SPRUCE_FENCE_GATE, 0)); - self::register("spruce_leaves", $factory->get(Ids::LEAVES, 1)); - self::register("spruce_log", $factory->get(Ids::LOG, 1)); - self::register("spruce_planks", $factory->get(Ids::PLANKS, 1)); + self::register("spruce_leaves", $factory->get(Ids::SPRUCE_LEAVES, 0)); + self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 0)); + self::register("spruce_planks", $factory->get(Ids::SPRUCE_PLANKS, 0)); self::register("spruce_pressure_plate", $factory->get(Ids::SPRUCE_PRESSURE_PLATE, 0)); - self::register("spruce_sapling", $factory->get(Ids::SAPLING, 1)); - self::register("spruce_sign", $factory->get(Ids::SPRUCE_STANDING_SIGN, 0)); - self::register("spruce_slab", $factory->get(Ids::WOODEN_SLAB, 1)); - self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 0)); - self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 0)); + self::register("spruce_sapling", $factory->get(Ids::SPRUCE_SAPLING, 0)); + self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN, 0)); + self::register("spruce_slab", $factory->get(Ids::SPRUCE_SLAB, 0)); + self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 3)); + self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 3)); self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 2)); - self::register("spruce_wood", $factory->get(Ids::WOOD, 1)); - self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 0)); - self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 0)); - self::register("stained_glass_pane", $factory->get(Ids::STAINED_GLASS_PANE, 0)); - self::register("stained_hardened_glass", $factory->get(Ids::HARD_STAINED_GLASS, 0)); - self::register("stained_hardened_glass_pane", $factory->get(Ids::HARD_STAINED_GLASS_PANE, 0)); + self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 0)); + self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 14)); + self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 14)); + self::register("stained_glass_pane", $factory->get(Ids::STAINED_GLASS_PANE, 14)); + self::register("stained_hardened_glass", $factory->get(Ids::STAINED_HARDENED_GLASS, 14)); + self::register("stained_hardened_glass_pane", $factory->get(Ids::STAINED_HARDENED_GLASS_PANE, 14)); self::register("stone", $factory->get(Ids::STONE, 0)); - self::register("stone_brick_slab", $factory->get(Ids::STONE_SLAB, 5)); - self::register("stone_brick_stairs", $factory->get(Ids::STONE_BRICK_STAIRS, 0)); - self::register("stone_brick_wall", $factory->get(Ids::COBBLESTONE_WALL, 7)); - self::register("stone_bricks", $factory->get(Ids::STONEBRICK, 0)); + self::register("stone_brick_slab", $factory->get(Ids::STONE_BRICK_SLAB, 0)); + self::register("stone_brick_stairs", $factory->get(Ids::STONE_BRICK_STAIRS, 3)); + self::register("stone_brick_wall", $factory->get(Ids::STONE_BRICK_WALL, 0)); + self::register("stone_bricks", $factory->get(Ids::STONE_BRICKS, 0)); self::register("stone_button", $factory->get(Ids::STONE_BUTTON, 0)); self::register("stone_pressure_plate", $factory->get(Ids::STONE_PRESSURE_PLATE, 0)); - self::register("stone_slab", $factory->get(Ids::STONE_SLAB4, 2)); - self::register("stone_stairs", $factory->get(Ids::NORMAL_STONE_STAIRS, 0)); - self::register("stonecutter", $factory->get(Ids::STONECUTTER_BLOCK, 2)); + self::register("stone_slab", $factory->get(Ids::STONE_SLAB, 0)); + self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 3)); + self::register("stonecutter", $factory->get(Ids::STONECUTTER, 2)); self::register("stripped_acacia_log", $factory->get(Ids::STRIPPED_ACACIA_LOG, 0)); - self::register("stripped_acacia_wood", $factory->get(Ids::WOOD, 12)); + self::register("stripped_acacia_wood", $factory->get(Ids::STRIPPED_ACACIA_WOOD, 0)); self::register("stripped_birch_log", $factory->get(Ids::STRIPPED_BIRCH_LOG, 0)); - self::register("stripped_birch_wood", $factory->get(Ids::WOOD, 10)); + self::register("stripped_birch_wood", $factory->get(Ids::STRIPPED_BIRCH_WOOD, 0)); self::register("stripped_dark_oak_log", $factory->get(Ids::STRIPPED_DARK_OAK_LOG, 0)); - self::register("stripped_dark_oak_wood", $factory->get(Ids::WOOD, 13)); + self::register("stripped_dark_oak_wood", $factory->get(Ids::STRIPPED_DARK_OAK_WOOD, 0)); self::register("stripped_jungle_log", $factory->get(Ids::STRIPPED_JUNGLE_LOG, 0)); - self::register("stripped_jungle_wood", $factory->get(Ids::WOOD, 11)); + self::register("stripped_jungle_wood", $factory->get(Ids::STRIPPED_JUNGLE_WOOD, 0)); self::register("stripped_oak_log", $factory->get(Ids::STRIPPED_OAK_LOG, 0)); - self::register("stripped_oak_wood", $factory->get(Ids::WOOD, 8)); + self::register("stripped_oak_wood", $factory->get(Ids::STRIPPED_OAK_WOOD, 0)); self::register("stripped_spruce_log", $factory->get(Ids::STRIPPED_SPRUCE_LOG, 0)); - self::register("stripped_spruce_wood", $factory->get(Ids::WOOD, 9)); - self::register("sugarcane", $factory->get(Ids::REEDS_BLOCK, 0)); - self::register("sunflower", $factory->get(Ids::DOUBLE_PLANT, 0)); + self::register("stripped_spruce_wood", $factory->get(Ids::STRIPPED_SPRUCE_WOOD, 0)); + self::register("sugarcane", $factory->get(Ids::SUGARCANE, 0)); + self::register("sunflower", $factory->get(Ids::SUNFLOWER, 0)); self::register("sweet_berry_bush", $factory->get(Ids::SWEET_BERRY_BUSH, 0)); - self::register("tall_grass", $factory->get(Ids::TALLGRASS, 1)); + self::register("tall_grass", $factory->get(Ids::TALL_GRASS, 0)); self::register("tnt", $factory->get(Ids::TNT, 0)); - self::register("torch", $factory->get(Ids::TORCH, 5)); + self::register("torch", $factory->get(Ids::TORCH, 1)); self::register("trapped_chest", $factory->get(Ids::TRAPPED_CHEST, 2)); self::register("tripwire", $factory->get(Ids::TRIPWIRE, 0)); - self::register("tripwire_hook", $factory->get(Ids::TRIPWIRE_HOOK, 0)); - self::register("underwater_torch", $factory->get(Ids::UNDERWATER_TORCH, 5)); - self::register("vines", $factory->get(Ids::VINE, 0)); + self::register("tripwire_hook", $factory->get(Ids::TRIPWIRE_HOOK, 2)); + self::register("underwater_torch", $factory->get(Ids::UNDERWATER_TORCH, 1)); + self::register("vines", $factory->get(Ids::VINES, 0)); self::register("wall_banner", $factory->get(Ids::WALL_BANNER, 2)); - self::register("wall_coral_fan", $factory->get(Ids::CORAL_FAN_HANG, 0)); - self::register("water", $factory->get(Ids::FLOWING_WATER, 0)); - self::register("weighted_pressure_plate_heavy", $factory->get(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, 0)); - self::register("weighted_pressure_plate_light", $factory->get(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, 0)); - self::register("wheat", $factory->get(Ids::WHEAT_BLOCK, 0)); + self::register("wall_coral_fan", $factory->get(Ids::WALL_CORAL_FAN, 4)); + self::register("water", $factory->get(Ids::WATER, 0)); + self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0)); + self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0)); + self::register("wheat", $factory->get(Ids::WHEAT, 0)); self::register("white_glazed_terracotta", $factory->get(Ids::WHITE_GLAZED_TERRACOTTA, 2)); - self::register("white_tulip", $factory->get(Ids::POPPY, 6)); - self::register("wool", $factory->get(Ids::WOOL, 0)); + self::register("white_tulip", $factory->get(Ids::WHITE_TULIP, 0)); + self::register("wool", $factory->get(Ids::WOOL, 14)); self::register("yellow_glazed_terracotta", $factory->get(Ids::YELLOW_GLAZED_TERRACOTTA, 2)); } } diff --git a/src/block/Vine.php b/src/block/Vine.php index 921f96e22..4505bb366 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -38,27 +40,16 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; - protected function writeStateToMeta() : int{ - return - (isset($this->faces[Facing::SOUTH]) ? BlockLegacyMetadata::VINE_FLAG_SOUTH : 0) | - (isset($this->faces[Facing::WEST]) ? BlockLegacyMetadata::VINE_FLAG_WEST : 0) | - (isset($this->faces[Facing::NORTH]) ? BlockLegacyMetadata::VINE_FLAG_NORTH : 0) | - (isset($this->faces[Facing::EAST]) ? BlockLegacyMetadata::VINE_FLAG_EAST : 0); + protected function decodeState(BlockDataReader $r) : void{ + foreach(Facing::HORIZONTAL as $facing){ + $this->setFace($facing, $r->readBool()); + } } - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->setFaceFromMeta($stateMeta, BlockLegacyMetadata::VINE_FLAG_SOUTH, Facing::SOUTH); - $this->setFaceFromMeta($stateMeta, BlockLegacyMetadata::VINE_FLAG_WEST, Facing::WEST); - $this->setFaceFromMeta($stateMeta, BlockLegacyMetadata::VINE_FLAG_NORTH, Facing::NORTH); - $this->setFaceFromMeta($stateMeta, BlockLegacyMetadata::VINE_FLAG_EAST, Facing::EAST); - } - - public function getStateBitmask() : int{ - return 0b1111; - } - - private function setFaceFromMeta(int $meta, int $flag, int $face) : void{ - $this->setFace($face, ($meta & $flag) !== 0); + protected function encodeState(BlockDataWriter $w) : void{ + foreach(Facing::HORIZONTAL as $facing){ + $w->writeBool($this->hasFace($facing)); + } } /** @return int[] */ diff --git a/src/block/WallBanner.php b/src/block/WallBanner.php index c8c218256..f3e3b251d 100644 --- a/src/block/WallBanner.php +++ b/src/block/WallBanner.php @@ -23,7 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -32,7 +34,20 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class WallBanner extends BaseBanner{ - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait { + decodeState as decodeFacing; + encodeState as encodeFacing; + } + + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->decodeFacing($r); + } + + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $this->encodeFacing($w); + } protected function getSupportingFace() : int{ return Facing::opposite($this->facing); diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 67dd94714..5e95803e7 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataSerializer; -use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use pocketmine\item\ItemFactory; @@ -35,73 +34,23 @@ use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; -use pocketmine\utils\AssumptionFailedError; use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - protected BlockIdentifierFlattened $idInfoFlattened; - - public function __construct(BlockIdentifierFlattened $idInfo, string $name, BlockBreakInfo $breakInfo){ - $this->idInfoFlattened = $idInfo; - parent::__construct($idInfo, $name, $breakInfo); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readCoralFacing($stateMeta >> 2); - $this->dead = ($stateMeta & BlockLegacyMetadata::CORAL_FAN_HANG_FLAG_DEAD) !== 0; - - $coralTypeFlag = $stateMeta & BlockLegacyMetadata::CORAL_FAN_HANG_TYPE_MASK; - switch($id){ - case $this->idInfoFlattened->getLegacyBlockId(): - $this->coralType = $coralTypeFlag === BlockLegacyMetadata::CORAL_FAN_HANG_TUBE ? CoralType::TUBE() : CoralType::BRAIN(); - break; - case $this->idInfoFlattened->getAdditionalId(0): - $this->coralType = $coralTypeFlag === BlockLegacyMetadata::CORAL_FAN_HANG2_BUBBLE ? CoralType::BUBBLE() : CoralType::FIRE(); - break; - case $this->idInfoFlattened->getAdditionalId(1): - if($coralTypeFlag !== BlockLegacyMetadata::CORAL_FAN_HANG3_HORN){ - throw new InvalidBlockStateException("Invalid CORAL_FAN_HANG3 type"); - } - $this->coralType = CoralType::HORN(); - break; - default: - throw new \LogicException("ID/meta doesn't match any CORAL_FAN_HANG type"); - } - } - - public function getId() : int{ - if($this->coralType->equals(CoralType::TUBE()) || $this->coralType->equals(CoralType::BRAIN())){ - return $this->idInfoFlattened->getLegacyBlockId(); - }elseif($this->coralType->equals(CoralType::BUBBLE()) || $this->coralType->equals(CoralType::FIRE())){ - return $this->idInfoFlattened->getAdditionalId(0); - }elseif($this->coralType->equals(CoralType::HORN())){ - return $this->idInfoFlattened->getAdditionalId(1); - } - throw new AssumptionFailedError("All types of coral should be covered"); - } - - public function writeStateToMeta() : int{ - $coralTypeFlag = (function() : int{ - switch($this->coralType->id()){ - case CoralType::TUBE()->id(): return BlockLegacyMetadata::CORAL_FAN_HANG_TUBE; - case CoralType::BRAIN()->id(): return BlockLegacyMetadata::CORAL_FAN_HANG_BRAIN; - case CoralType::BUBBLE()->id(): return BlockLegacyMetadata::CORAL_FAN_HANG2_BUBBLE; - case CoralType::FIRE()->id(): return BlockLegacyMetadata::CORAL_FAN_HANG2_FIRE; - case CoralType::HORN()->id(): return BlockLegacyMetadata::CORAL_FAN_HANG3_HORN; - default: throw new AssumptionFailedError("All types of coral should be covered"); - } - })(); - return (BlockDataSerializer::writeCoralFacing($this->facing) << 2) | ($this->dead ? BlockLegacyMetadata::CORAL_FAN_HANG_FLAG_DEAD : 0) | $coralTypeFlag; - } - protected function writeStateToItemMeta() : int{ return CoralTypeIdMap::getInstance()->toId($this->coralType); } - public function getStateBitmask() : int{ - return 0b1111; + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->facing = $r->readHorizontalFacing(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $w->writeHorizontalFacing($this->facing); } public function asItem() : Item{ diff --git a/src/block/WallSign.php b/src/block/WallSign.php index 014ad4db0..07826eae7 100644 --- a/src/block/WallSign.php +++ b/src/block/WallSign.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\NormalHorizontalFacingInMetadataTrait; +use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -32,7 +32,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class WallSign extends BaseSign{ - use NormalHorizontalFacingInMetadataTrait; + use HorizontalFacingTrait; protected function getSupportingFace() : int{ return Facing::opposite($this->facing); diff --git a/src/block/WeightedPressurePlate.php b/src/block/WeightedPressurePlate.php index 3fce83b1c..bdfae5082 100644 --- a/src/block/WeightedPressurePlate.php +++ b/src/block/WeightedPressurePlate.php @@ -24,20 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataSerializer; abstract class WeightedPressurePlate extends PressurePlate{ use AnalogRedstoneSignalEmitterTrait; - - protected function writeStateToMeta() : int{ - return $this->signalStrength; - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->signalStrength = BlockDataSerializer::readBoundedInt("signalStrength", $stateMeta, 0, 15); - } - - public function getStateBitmask() : int{ - return 0b1111; - } } diff --git a/src/block/Wool.php b/src/block/Wool.php index 993f0a038..b3a563a2e 100644 --- a/src/block/Wool.php +++ b/src/block/Wool.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\ColorInMetadataTrait; +use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; class Wool extends Opaque{ - use ColorInMetadataTrait; + use ColoredTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ $this->color = DyeColor::WHITE(); diff --git a/src/block/tile/Bell.php b/src/block/tile/Bell.php index 64707c02d..7a1e784e3 100644 --- a/src/block/tile/Bell.php +++ b/src/block/tile/Bell.php @@ -23,12 +23,12 @@ declare(strict_types=1); namespace pocketmine\block\tile; -use pocketmine\block\utils\BlockDataSerializer; use pocketmine\math\Facing; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\protocol\BlockActorDataPacket; use pocketmine\network\mcpe\protocol\types\BlockPosition; use pocketmine\network\mcpe\protocol\types\CacheableNbt; +use pocketmine\utils\AssumptionFailedError; final class Bell extends Spawnable{ public const TAG_DIRECTION = "Direction"; //TAG_Int @@ -80,7 +80,13 @@ final class Bell extends Spawnable{ public function createFakeUpdatePacket(int $bellHitFace) : BlockActorDataPacket{ $nbt = $this->getSpawnCompound(); $nbt->setByte(self::TAG_RINGING, 1); - $nbt->setInt(self::TAG_DIRECTION, BlockDataSerializer::writeLegacyHorizontalFacing($bellHitFace)); + $nbt->setInt(self::TAG_DIRECTION, match($bellHitFace){ + Facing::SOUTH => 0, + Facing::WEST => 1, + Facing::NORTH => 2, + Facing::EAST => 3, + default => throw new AssumptionFailedError("Unreachable") + }); $nbt->setInt(self::TAG_TICKS, 0); return BlockActorDataPacket::create(BlockPosition::fromVector3($this->position), new CacheableNbt($nbt)); } diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 2b39731ed..ec5987346 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -70,7 +70,7 @@ class FlowerPot extends Spawnable{ protected function writeSaveData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getFullId())->toNbt()); + $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getStateId())->toNbt()); } } @@ -88,7 +88,7 @@ class FlowerPot extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getFullId())->toNbt()); + $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getStateId())->toNbt()); } } } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 5fb4a3da1..0089e5a02 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -26,6 +26,14 @@ namespace pocketmine\block\utils; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->signalStrength = $r->readBoundedInt(4, 0, 15); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->signalStrength); + } + public function getOutputSignalStrength() : int{ return $this->signalStrength; } /** @return $this */ diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 0358d2683..0394d60a4 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -28,6 +28,14 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readFacing(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeFacing($this->facing); + } + public function getFacing() : int{ return $this->facing; } /** @return $this */ diff --git a/src/block/utils/BlockDataReader.php b/src/block/utils/BlockDataReader.php new file mode 100644 index 000000000..e1e7bb689 --- /dev/null +++ b/src/block/utils/BlockDataReader.php @@ -0,0 +1,100 @@ +maxBits - $this->offset; + if($bits > $bitsLeft){ + throw new \InvalidArgumentException("No bits left in buffer (need $bits, have $bitsLeft"); + } + + $value = ($this->value >> $this->offset) & ~(~0 << $bits); + $this->offset += $bits; + return $value; + } + + public function readBoundedInt(int $bits, int $min, int $max) : int{ + $result = $this->readInt($bits); + if($result < $min || $result > $max){ + throw new InvalidBlockStateException("Value is outside the range $min - $max"); + } + return $result; + } + + public function readBool() : bool{ + return $this->readInt(1) === 1; + } + + public function readHorizontalFacing() : int{ + return match($this->readInt(2)){ + 0 => Facing::NORTH, + 1 => Facing::EAST, + 2 => Facing::SOUTH, + 3 => Facing::WEST, + default => throw new AssumptionFailedError("Unreachable") + }; + } + + public function readFacing() : int{ + return match($this->readInt(3)){ + 0 => Facing::DOWN, + 1 => Facing::UP, + 2 => Facing::NORTH, + 3 => Facing::SOUTH, + 4 => Facing::WEST, + 5 => Facing::EAST, + default => throw new InvalidBlockStateException("Invalid facing value") + }; + } + + public function readAxis() : int{ + return match($this->readInt(2)){ + 0 => Axis::X, + 1 => Axis::Z, + 2 => Axis::Y, + default => throw new InvalidBlockStateException("Invalid axis value") + }; + } + + public function readHorizontalAxis() : int{ + return match($this->readInt(1)){ + 0 => Axis::X, + 1 => Axis::Z, + default => throw new AssumptionFailedError("Unreachable") + }; + } +} diff --git a/src/block/utils/BlockDataReaderHelper.php b/src/block/utils/BlockDataReaderHelper.php new file mode 100644 index 000000000..c0dba20ef --- /dev/null +++ b/src/block/utils/BlockDataReaderHelper.php @@ -0,0 +1,164 @@ +readInt(2)){ + 0 => \pocketmine\block\utils\BellAttachmentType::CEILING(), + 1 => \pocketmine\block\utils\BellAttachmentType::FLOOR(), + 2 => \pocketmine\block\utils\BellAttachmentType::ONE_WALL(), + 3 => \pocketmine\block\utils\BellAttachmentType::TWO_WALLS(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for BellAttachmentType") + }; + } + + /** + * @return \pocketmine\block\utils\BrewingStandSlot[] + * @phpstan-return array + */ + public static function readBrewingStandSlotKeySet(BlockDataReader $r) : array{ + $result = []; + foreach([ + \pocketmine\block\utils\BrewingStandSlot::EAST(), + \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), + \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), + ] as $member){ + if($r->readBool()){ + $result[$member->id()] = $member; + } + } + return $result; + } + + public static function readCoralType(BlockDataReader $r) : CoralType{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\CoralType::BRAIN(), + 1 => \pocketmine\block\utils\CoralType::BUBBLE(), + 2 => \pocketmine\block\utils\CoralType::FIRE(), + 3 => \pocketmine\block\utils\CoralType::HORN(), + 4 => \pocketmine\block\utils\CoralType::TUBE(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for CoralType") + }; + } + + public static function readDyeColor(BlockDataReader $r) : DyeColor{ + return match($r->readInt(4)){ + 0 => \pocketmine\block\utils\DyeColor::BLACK(), + 1 => \pocketmine\block\utils\DyeColor::BLUE(), + 2 => \pocketmine\block\utils\DyeColor::BROWN(), + 3 => \pocketmine\block\utils\DyeColor::CYAN(), + 4 => \pocketmine\block\utils\DyeColor::GRAY(), + 5 => \pocketmine\block\utils\DyeColor::GREEN(), + 6 => \pocketmine\block\utils\DyeColor::LIGHT_BLUE(), + 7 => \pocketmine\block\utils\DyeColor::LIGHT_GRAY(), + 8 => \pocketmine\block\utils\DyeColor::LIME(), + 9 => \pocketmine\block\utils\DyeColor::MAGENTA(), + 10 => \pocketmine\block\utils\DyeColor::ORANGE(), + 11 => \pocketmine\block\utils\DyeColor::PINK(), + 12 => \pocketmine\block\utils\DyeColor::PURPLE(), + 13 => \pocketmine\block\utils\DyeColor::RED(), + 14 => \pocketmine\block\utils\DyeColor::WHITE(), + 15 => \pocketmine\block\utils\DyeColor::YELLOW(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for DyeColor") + }; + } + + public static function readLeverFacing(BlockDataReader $r) : LeverFacing{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), + 1 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z(), + 2 => \pocketmine\block\utils\LeverFacing::EAST(), + 3 => \pocketmine\block\utils\LeverFacing::NORTH(), + 4 => \pocketmine\block\utils\LeverFacing::SOUTH(), + 5 => \pocketmine\block\utils\LeverFacing::UP_AXIS_X(), + 6 => \pocketmine\block\utils\LeverFacing::UP_AXIS_Z(), + 7 => \pocketmine\block\utils\LeverFacing::WEST(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for LeverFacing") + }; + } + + public static function readMushroomBlockType(BlockDataReader $r) : MushroomBlockType{ + return match($r->readInt(4)){ + 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), + 1 => \pocketmine\block\utils\MushroomBlockType::CAP_EAST(), + 2 => \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE(), + 3 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTH(), + 4 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHEAST(), + 5 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHWEST(), + 6 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTH(), + 7 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHEAST(), + 8 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHWEST(), + 9 => \pocketmine\block\utils\MushroomBlockType::CAP_WEST(), + 10 => \pocketmine\block\utils\MushroomBlockType::PORES(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for MushroomBlockType") + }; + } + + public static function readSkullType(BlockDataReader $r) : SkullType{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\SkullType::CREEPER(), + 1 => \pocketmine\block\utils\SkullType::DRAGON(), + 2 => \pocketmine\block\utils\SkullType::PLAYER(), + 3 => \pocketmine\block\utils\SkullType::SKELETON(), + 4 => \pocketmine\block\utils\SkullType::WITHER_SKELETON(), + 5 => \pocketmine\block\utils\SkullType::ZOMBIE(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for SkullType") + }; + } + + public static function readSlabType(BlockDataReader $r) : SlabType{ + return match($r->readInt(2)){ + 0 => \pocketmine\block\utils\SlabType::BOTTOM(), + 1 => \pocketmine\block\utils\SlabType::DOUBLE(), + 2 => \pocketmine\block\utils\SlabType::TOP(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for SlabType") + }; + } + + public static function readStairShape(BlockDataReader $r) : StairShape{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\StairShape::INNER_LEFT(), + 1 => \pocketmine\block\utils\StairShape::INNER_RIGHT(), + 2 => \pocketmine\block\utils\StairShape::OUTER_LEFT(), + 3 => \pocketmine\block\utils\StairShape::OUTER_RIGHT(), + 4 => \pocketmine\block\utils\StairShape::STRAIGHT(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for StairShape") + }; + } + + public static function readTreeType(BlockDataReader $r) : TreeType{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\TreeType::ACACIA(), + 1 => \pocketmine\block\utils\TreeType::BIRCH(), + 2 => \pocketmine\block\utils\TreeType::DARK_OAK(), + 3 => \pocketmine\block\utils\TreeType::JUNGLE(), + 4 => \pocketmine\block\utils\TreeType::OAK(), + 5 => \pocketmine\block\utils\TreeType::SPRUCE(), + default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for TreeType") + }; + } + +} diff --git a/src/block/utils/BlockDataSerializer.php b/src/block/utils/BlockDataSerializer.php deleted file mode 100644 index 1d7ae28fa..000000000 --- a/src/block/utils/BlockDataSerializer.php +++ /dev/null @@ -1,158 +0,0 @@ - Facing::DOWN, - 1 => Facing::UP, - 2 => Facing::NORTH, - 3 => Facing::SOUTH, - 4 => Facing::WEST, - 5 => Facing::EAST - ][$raw] ?? null; - if($result === null){ - throw new InvalidBlockStateException("Invalid facing $raw"); - } - return $result; - } - - public static function writeFacing(int $facing) : int{ - $result = [ //again, for redundancy - Facing::DOWN => 0, - Facing::UP => 1, - Facing::NORTH => 2, - Facing::SOUTH => 3, - Facing::WEST => 4, - Facing::EAST => 5 - ][$facing] ?? null; - if($result === null){ - throw new \InvalidArgumentException("Invalid facing $facing"); - } - return $result; - } - - /** - * @throws InvalidBlockStateException - */ - public static function readHorizontalFacing(int $facing) : int{ - $facing = self::readFacing($facing); - if(Facing::axis($facing) === Axis::Y){ - throw new InvalidBlockStateException("Invalid Y-axis facing $facing"); - } - return $facing; - } - - public static function writeHorizontalFacing(int $facing) : int{ - if(Facing::axis($facing) === Axis::Y){ - throw new \InvalidArgumentException("Invalid Y-axis facing"); - } - return self::writeFacing($facing); - } - - /** - * @throws InvalidBlockStateException - */ - public static function readLegacyHorizontalFacing(int $raw) : int{ - $result = [ //again, for redundancy - 0 => Facing::SOUTH, - 1 => Facing::WEST, - 2 => Facing::NORTH, - 3 => Facing::EAST - ][$raw] ?? null; - if($result === null){ - throw new InvalidBlockStateException("Invalid legacy facing $raw"); - } - return $result; - } - - public static function writeLegacyHorizontalFacing(int $facing) : int{ - $result = [ - Facing::SOUTH => 0, - Facing::WEST => 1, - Facing::NORTH => 2, - Facing::EAST => 3 - ][$facing] ?? null; - if($result === null){ - throw new \InvalidArgumentException("Invalid Y-axis facing"); - } - return $result; - } - - /** - * @throws InvalidBlockStateException - */ - public static function read5MinusHorizontalFacing(int $value) : int{ - return self::readHorizontalFacing(5 - ($value & 0x03)); - } - - public static function write5MinusHorizontalFacing(int $value) : int{ - return 5 - self::writeHorizontalFacing($value); - } - - public static function readCoralFacing(int $value) : int{ - $result = [ - 0 => Facing::WEST, - 1 => Facing::EAST, - 2 => Facing::NORTH, - 3 => Facing::SOUTH - ][$value] ?? null; - if($result === null){ - throw new InvalidBlockStateException("Invalid coral facing $value"); - } - return $result; - } - - public static function writeCoralFacing(int $value) : int{ - $result = [ - Facing::WEST => 0, - Facing::EAST => 1, - Facing::NORTH => 2, - Facing::SOUTH => 3 - ][$value] ?? null; - if($result === null){ - throw new \InvalidArgumentException("Invalid Y-axis facing $value"); - } - return $result; - } - - public static function readBoundedInt(string $name, int $v, int $min, int $max) : int{ - if($v < $min || $v > $max){ - throw new InvalidBlockStateException("$name should be in range $min - $max, got $v"); - } - return $v; - } -} diff --git a/src/block/utils/BlockDataWriter.php b/src/block/utils/BlockDataWriter.php new file mode 100644 index 000000000..9b37a8153 --- /dev/null +++ b/src/block/utils/BlockDataWriter.php @@ -0,0 +1,101 @@ +offset + $bits > $this->maxBits){ + throw new \InvalidArgumentException("Bit buffer cannot be larger than $this->maxBits bits (already have $this->offset bits)"); + } + if(($value & (~0 << $bits)) !== 0){ + throw new \InvalidArgumentException("Value $value does not fit into $bits bits"); + } + + $this->value |= ($value << $this->offset); + $this->offset += $bits; + + return $this; + } + + /** @return $this */ + public function writeBool(bool $value) : self{ + return $this->writeInt(1, $value ? 1 : 0); + } + + /** @return $this */ + public function writeHorizontalFacing(int $facing) : self{ + return $this->writeInt(2, match($facing){ + Facing::NORTH => 0, + Facing::EAST => 1, + Facing::SOUTH => 2, + Facing::WEST => 3, + default => throw new \InvalidArgumentException("Invalid horizontal facing $facing") + }); + } + + public function writeFacing(int $facing) : self{ + return $this->writeInt(3, match($facing){ + 0 => Facing::DOWN, + 1 => Facing::UP, + 2 => Facing::NORTH, + 3 => Facing::SOUTH, + 4 => Facing::WEST, + 5 => Facing::EAST, + default => throw new \InvalidArgumentException("Invalid facing $facing") + }); + } + + public function writeAxis(int $axis) : self{ + return $this->writeInt(2, match($axis){ + Axis::X => 0, + Axis::Z => 1, + Axis::Y => 2, + default => throw new \InvalidArgumentException("Invalid axis $axis") + }); + } + + public function writeHorizontalAxis(int $axis) : self{ + return $this->writeInt(1, match($axis){ + Axis::X => 0, + Axis::Z => 1, + default => throw new \InvalidArgumentException("Invalid horizontal axis $axis") + }); + } + + public function getValue() : int{ return $this->value; } + + public function getOffset() : int{ return $this->offset; } +} diff --git a/src/block/utils/BlockDataWriterHelper.php b/src/block/utils/BlockDataWriterHelper.php new file mode 100644 index 000000000..f8f00060d --- /dev/null +++ b/src/block/utils/BlockDataWriterHelper.php @@ -0,0 +1,160 @@ +writeInt(2, match($value){ + \pocketmine\block\utils\BellAttachmentType::CEILING() => 0, + \pocketmine\block\utils\BellAttachmentType::FLOOR() => 1, + \pocketmine\block\utils\BellAttachmentType::ONE_WALL() => 2, + \pocketmine\block\utils\BellAttachmentType::TWO_WALLS() => 3, + default => throw new \pocketmine\utils\AssumptionFailedError("All BellAttachmentType cases should be covered") + }); + } + + /** + * @param \pocketmine\block\utils\BrewingStandSlot[] $value + * @phpstan-param array $value + */ + public static function writeBrewingStandSlotKeySet(BlockDataWriter $w, array $value) : void{ + foreach([ + \pocketmine\block\utils\BrewingStandSlot::EAST(), + \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), + \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), + ] as $member){ + $w->writeBool(isset($value[$member->id()])); + } + } + + public static function writeCoralType(BlockDataWriter $w, CoralType $value) : void{ + $w->writeInt(3, match($value){ + \pocketmine\block\utils\CoralType::BRAIN() => 0, + \pocketmine\block\utils\CoralType::BUBBLE() => 1, + \pocketmine\block\utils\CoralType::FIRE() => 2, + \pocketmine\block\utils\CoralType::HORN() => 3, + \pocketmine\block\utils\CoralType::TUBE() => 4, + default => throw new \pocketmine\utils\AssumptionFailedError("All CoralType cases should be covered") + }); + } + + public static function writeDyeColor(BlockDataWriter $w, DyeColor $value) : void{ + $w->writeInt(4, match($value){ + \pocketmine\block\utils\DyeColor::BLACK() => 0, + \pocketmine\block\utils\DyeColor::BLUE() => 1, + \pocketmine\block\utils\DyeColor::BROWN() => 2, + \pocketmine\block\utils\DyeColor::CYAN() => 3, + \pocketmine\block\utils\DyeColor::GRAY() => 4, + \pocketmine\block\utils\DyeColor::GREEN() => 5, + \pocketmine\block\utils\DyeColor::LIGHT_BLUE() => 6, + \pocketmine\block\utils\DyeColor::LIGHT_GRAY() => 7, + \pocketmine\block\utils\DyeColor::LIME() => 8, + \pocketmine\block\utils\DyeColor::MAGENTA() => 9, + \pocketmine\block\utils\DyeColor::ORANGE() => 10, + \pocketmine\block\utils\DyeColor::PINK() => 11, + \pocketmine\block\utils\DyeColor::PURPLE() => 12, + \pocketmine\block\utils\DyeColor::RED() => 13, + \pocketmine\block\utils\DyeColor::WHITE() => 14, + \pocketmine\block\utils\DyeColor::YELLOW() => 15, + default => throw new \pocketmine\utils\AssumptionFailedError("All DyeColor cases should be covered") + }); + } + + public static function writeLeverFacing(BlockDataWriter $w, LeverFacing $value) : void{ + $w->writeInt(3, match($value){ + \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, + \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z() => 1, + \pocketmine\block\utils\LeverFacing::EAST() => 2, + \pocketmine\block\utils\LeverFacing::NORTH() => 3, + \pocketmine\block\utils\LeverFacing::SOUTH() => 4, + \pocketmine\block\utils\LeverFacing::UP_AXIS_X() => 5, + \pocketmine\block\utils\LeverFacing::UP_AXIS_Z() => 6, + \pocketmine\block\utils\LeverFacing::WEST() => 7, + default => throw new \pocketmine\utils\AssumptionFailedError("All LeverFacing cases should be covered") + }); + } + + public static function writeMushroomBlockType(BlockDataWriter $w, MushroomBlockType $value) : void{ + $w->writeInt(4, match($value){ + \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, + \pocketmine\block\utils\MushroomBlockType::CAP_EAST() => 1, + \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE() => 2, + \pocketmine\block\utils\MushroomBlockType::CAP_NORTH() => 3, + \pocketmine\block\utils\MushroomBlockType::CAP_NORTHEAST() => 4, + \pocketmine\block\utils\MushroomBlockType::CAP_NORTHWEST() => 5, + \pocketmine\block\utils\MushroomBlockType::CAP_SOUTH() => 6, + \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHEAST() => 7, + \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHWEST() => 8, + \pocketmine\block\utils\MushroomBlockType::CAP_WEST() => 9, + \pocketmine\block\utils\MushroomBlockType::PORES() => 10, + default => throw new \pocketmine\utils\AssumptionFailedError("All MushroomBlockType cases should be covered") + }); + } + + public static function writeSkullType(BlockDataWriter $w, SkullType $value) : void{ + $w->writeInt(3, match($value){ + \pocketmine\block\utils\SkullType::CREEPER() => 0, + \pocketmine\block\utils\SkullType::DRAGON() => 1, + \pocketmine\block\utils\SkullType::PLAYER() => 2, + \pocketmine\block\utils\SkullType::SKELETON() => 3, + \pocketmine\block\utils\SkullType::WITHER_SKELETON() => 4, + \pocketmine\block\utils\SkullType::ZOMBIE() => 5, + default => throw new \pocketmine\utils\AssumptionFailedError("All SkullType cases should be covered") + }); + } + + public static function writeSlabType(BlockDataWriter $w, SlabType $value) : void{ + $w->writeInt(2, match($value){ + \pocketmine\block\utils\SlabType::BOTTOM() => 0, + \pocketmine\block\utils\SlabType::DOUBLE() => 1, + \pocketmine\block\utils\SlabType::TOP() => 2, + default => throw new \pocketmine\utils\AssumptionFailedError("All SlabType cases should be covered") + }); + } + + public static function writeStairShape(BlockDataWriter $w, StairShape $value) : void{ + $w->writeInt(3, match($value){ + \pocketmine\block\utils\StairShape::INNER_LEFT() => 0, + \pocketmine\block\utils\StairShape::INNER_RIGHT() => 1, + \pocketmine\block\utils\StairShape::OUTER_LEFT() => 2, + \pocketmine\block\utils\StairShape::OUTER_RIGHT() => 3, + \pocketmine\block\utils\StairShape::STRAIGHT() => 4, + default => throw new \pocketmine\utils\AssumptionFailedError("All StairShape cases should be covered") + }); + } + + public static function writeTreeType(BlockDataWriter $w, TreeType $value) : void{ + $w->writeInt(3, match($value){ + \pocketmine\block\utils\TreeType::ACACIA() => 0, + \pocketmine\block\utils\TreeType::BIRCH() => 1, + \pocketmine\block\utils\TreeType::DARK_OAK() => 2, + \pocketmine\block\utils\TreeType::JUNGLE() => 3, + \pocketmine\block\utils\TreeType::OAK() => 4, + \pocketmine\block\utils\TreeType::SPRUCE() => 5, + default => throw new \pocketmine\utils\AssumptionFailedError("All TreeType cases should be covered") + }); + } + +} diff --git a/src/block/utils/ColorInMetadataTrait.php b/src/block/utils/ColorInMetadataTrait.php deleted file mode 100644 index 232db837f..000000000 --- a/src/block/utils/ColorInMetadataTrait.php +++ /dev/null @@ -1,63 +0,0 @@ -fromId($stateMeta); - if($color === null){ - throw new InvalidBlockStateException("No dye colour corresponds to ID $stateMeta"); - } - $this->color = $color; - } - - /** - * @see Block::writeStateToMeta() - */ - protected function writeStateToMeta() : int{ - return DyeColorIdMap::getInstance()->toId($this->color); - } - - /** - * @see Block::writeStateToItemMeta() - */ - protected function writeStateToItemMeta() : int{ - return DyeColorIdMap::getInstance()->toId($this->color); - } - - /** - * @see Block::getStateBitmask() - */ - public function getStateBitmask() : int{ - return 0b1111; - } -} diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 3ed323ca3..908f1bf6a 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -23,10 +23,30 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\block\Block; +use pocketmine\data\bedrock\DyeColorIdMap; + trait ColoredTrait{ /** @var DyeColor */ private $color; + /** + * @see Block::writeStateToItemMeta() + */ + protected function writeStateToItemMeta() : int{ + return DyeColorIdMap::getInstance()->toId($this->color); + } + + /** @see Block::decodeState() */ + protected function decodeState(BlockDataReader $r) : void{ + $this->color = BlockDataReaderHelper::readDyeColor($r); + } + + /** @see Block::encodeState() */ + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeDyeColor($w, $this->color); + } + public function getColor() : DyeColor{ return $this->color; } /** @return $this */ diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index afeac309c..7f7f5be8f 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -24,10 +24,19 @@ declare(strict_types=1); namespace pocketmine\block\utils; trait CoralTypeTrait{ - protected CoralType $coralType; protected bool $dead = false; + protected function decodeState(BlockDataReader $r) : void{ + $this->coralType = BlockDataReaderHelper::readCoralType($r); + $this->dead = $r->readBool(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeCoralType($w, $this->coralType); + $w->writeBool($this->dead); + } + public function getCoralType() : CoralType{ return $this->coralType; } /** @return $this */ diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index 2e5941f9c..446157739 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -43,10 +43,6 @@ trait FallableTrait{ abstract protected function getPosition() : Position; - abstract protected function getId() : int; - - abstract protected function getMeta() : int; - public function onNearbyBlockChange() : void{ $pos = $this->getPosition(); $down = $pos->getWorld()->getBlock($pos->getSide(Facing::DOWN)); diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index eefc3f427..13a3d913c 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -29,6 +29,14 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; + protected function decodeState(BlockDataReader $r) : void{ + $this->facing = $r->readHorizontalFacing(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeHorizontalFacing($this->facing); + } + public function getFacing() : int{ return $this->facing; } /** @return $this */ diff --git a/src/block/utils/NormalHorizontalFacingInMetadataTrait.php b/src/block/utils/NormalHorizontalFacingInMetadataTrait.php deleted file mode 100644 index f41efd98a..000000000 --- a/src/block/utils/NormalHorizontalFacingInMetadataTrait.php +++ /dev/null @@ -1,40 +0,0 @@ -facing); - } - - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->facing = BlockDataSerializer::readHorizontalFacing($stateMeta); - } - - public function getStateBitmask() : int{ - return 0b111; - } -} diff --git a/src/block/utils/PillarRotationInMetadataTrait.php b/src/block/utils/PillarRotationInMetadataTrait.php deleted file mode 100644 index 229ed9d0b..000000000 --- a/src/block/utils/PillarRotationInMetadataTrait.php +++ /dev/null @@ -1,76 +0,0 @@ -writeAxisToMeta(); - } - - /** - * @see Block::readStateFromData() - */ - public function readStateFromData(int $id, int $stateMeta) : void{ - $this->readAxisFromMeta($stateMeta); - } - - /** - * @see Block::getStateBitmask() - */ - public function getStateBitmask() : int{ - return 0b11 << $this->getAxisMetaShift(); - } - - protected function readAxisFromMeta(int $meta) : void{ - $axis = $meta >> $this->getAxisMetaShift(); - $mapped = [ - 0 => Axis::Y, - 1 => Axis::X, - 2 => Axis::Z - ][$axis] ?? null; - if($mapped === null){ - throw new InvalidBlockStateException("Invalid axis meta $axis"); - } - $this->axis = $mapped; - } - - protected function writeAxisToMeta() : int{ - return [ - Axis::Y => 0, - Axis::Z => 2, - Axis::X => 1 - ][$this->axis] << $this->getAxisMetaShift(); - } -} diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index b38c0ffe5..3da41373c 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -34,6 +34,14 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; + protected function decodeState(BlockDataReader $r) : void{ + $this->axis = $r->readAxis(); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeAxis($this->axis); + } + /** @see Axis */ public function getAxis() : int{ return $this->axis; } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 044dd7a49..c65f0c8b9 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -23,22 +23,16 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\block\BlockLegacyMetadata; - trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; - public function readStateFromData(int $id, int $stateMeta) : void{ - parent::readStateFromData($id, $stateMeta & ~BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED); - $this->powered = ($stateMeta & BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED) !== 0; + protected function decodeState(BlockDataReader $r) : void{ + parent::decodeState($r); + $this->powered = $r->readBool(); } - protected function writeStateToMeta() : int{ - //TODO: railShape won't be plain metadata in the future - return parent::writeStateToMeta() | ($this->powered ? BlockLegacyMetadata::REDSTONE_RAIL_FLAG_POWERED : 0); - } - - public function getStateBitmask() : int{ - return 0b1111; + protected function encodeState(BlockDataWriter $w) : void{ + parent::encodeState($w); + $w->writeBool($this->powered); } } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index d9b156895..e35bf3574 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -29,6 +29,14 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; + protected function decodeState(BlockDataReader $r) : void{ + $this->rotation = $r->readBoundedInt(4, 0, 15); + } + + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->rotation); + } + public function getRotation() : int{ return $this->rotation; } /** @return $this */ diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 1cece6403..f210726c4 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -58,7 +58,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize } public function deserialize(BlockStateData $stateData) : int{ - return $this->deserializeBlock($stateData)->getFullId(); + return $this->deserializeBlock($stateData)->getStateId(); } /** @phpstan-param \Closure(Reader) : Block $c */ diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index fc015b358..0822fe817 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -52,7 +52,7 @@ final class LegacyBlockStateMapper{ return $this->fromStringIdMeta($stringId, $meta); } - public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap) : self{ + public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap, BlockStateUpgrader $blockStateUpgrader) : self{ $mappingTable = []; $legacyStateMapReader = new BinaryStream($data); @@ -64,7 +64,7 @@ final class LegacyBlockStateMapper{ $offset = $legacyStateMapReader->getOffset(); $state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag(); $legacyStateMapReader->setOffset($offset); - $mappingTable[$id][$meta] = BlockStateData::fromNbt($state); + $mappingTable[$id][$meta] = $blockStateUpgrader->upgrade(BlockStateData::fromNbt($state)); } return new self($mappingTable, $idMap); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 5613f85ec..0c704fe00 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -191,7 +191,7 @@ final class ItemSerializer{ */ private function standardBlock(Block $block) : Data{ try{ - $blockStateData = $this->blockStateSerializer->serialize($block->getFullId()); + $blockStateData = $this->blockStateSerializer->serialize($block->getStateId()); }catch(BlockStateSerializeException $e){ throw new ItemTypeSerializeException($e->getMessage(), 0, $e); } diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index ba42e4039..905abb208 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -104,8 +104,6 @@ final class ItemDataUpgrader{ if($blockStateData === null){ throw new SavedDataLoadingException("Expected a blockstate to be associated with this block"); } - //the block data upgrader returns states from 1.18.10, which need to be updated to the current version the usual way - $blockStateData = $this->blockDataUpgrader->getBlockStateUpgrader()->upgrade($blockStateData); }else{ //probably a standard item $blockStateData = null; diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 22f198167..a7e495a24 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -152,7 +152,7 @@ class FallingBlock extends Entity{ public function saveNBT() : CompoundTag{ $nbt = parent::saveNBT(); - $nbt->setTag(self::TAG_FALLING_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->block->getFullId())->toNbt()); + $nbt->setTag(self::TAG_FALLING_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->block->getStateId())->toNbt()); return $nbt; } @@ -160,7 +160,7 @@ class FallingBlock extends Entity{ protected function syncNetworkData(EntityMetadataCollection $properties) : void{ parent::syncNetworkData($properties); - $properties->setInt(EntityMetadataProperties::VARIANT, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId())); + $properties->setInt(EntityMetadataProperties::VARIANT, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId())); } public function getOffsetPosition(Vector3 $vector3) : Vector3{ diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 9df23067a..7bb358fec 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -37,7 +37,7 @@ final class ItemBlock extends Item{ public function __construct(ItemIdentifier $identifier, Block $block){ parent::__construct($identifier, $block->getName()); - $this->blockFullId = $block->getFullId(); + $this->blockFullId = $block->getStateId(); } public function getBlock(?int $clickedFace = null) : Block{ diff --git a/src/item/ItemBlockWallOrFloor.php b/src/item/ItemBlockWallOrFloor.php index 4151d1d2f..cb706965a 100644 --- a/src/item/ItemBlockWallOrFloor.php +++ b/src/item/ItemBlockWallOrFloor.php @@ -34,8 +34,8 @@ class ItemBlockWallOrFloor extends Item{ public function __construct(ItemIdentifier $identifier, Block $floorVariant, Block $wallVariant){ parent::__construct($identifier, $floorVariant->getName()); - $this->floorVariant = $floorVariant->getFullId(); - $this->wallVariant = $wallVariant->getFullId(); + $this->floorVariant = $floorVariant->getStateId(); + $this->wallVariant = $wallVariant->getStateId(); } public function getBlock(?int $clickedFace = null) : Block{ diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 678067c03..ed992133a 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -31,6 +31,7 @@ use pocketmine\block\utils\RecordType; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; @@ -47,6 +48,7 @@ use pocketmine\math\Vector3; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\SingletonTrait; +use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\World; /** @@ -467,7 +469,16 @@ class ItemFactory{ } }elseif($id < 256){ //intentionally includes negatives, for extended block IDs //TODO: do not assume that item IDs and block IDs are the same or related - $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->get(self::itemToBlockId($id), $meta & 0xf)); + $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $meta & 0xf); + if($blockStateData !== null){ + try{ + $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); + $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->fromFullBlock($blockStateId)); + }catch(BlockStateDeserializeException $e){ + \GlobalLogger::get()->logException($e); + //fallthru + } + } } } diff --git a/src/world/SimpleChunkManager.php b/src/world/SimpleChunkManager.php index d883a7cf3..e2ed3138e 100644 --- a/src/world/SimpleChunkManager.php +++ b/src/world/SimpleChunkManager.php @@ -48,7 +48,7 @@ class SimpleChunkManager implements ChunkManager{ public function setBlockAt(int $x, int $y, int $z, Block $block) : void{ if(($chunk = $this->getChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null){ - $chunk->setFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK, $block->getFullId()); + $chunk->setFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK, $block->getStateId()); }else{ throw new \InvalidArgumentException("Cannot set block at coordinates x=$x,y=$y,z=$z, terrain is not loaded or out of bounds"); } diff --git a/src/world/World.php b/src/world/World.php index 9b1143c95..2dfb00497 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -81,6 +81,7 @@ use pocketmine\world\biome\BiomeRegistry; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\format\LightArray; use pocketmine\world\format\SubChunk; @@ -438,7 +439,12 @@ class World implements ChunkManager{ if($item !== null){ $block = $item->getBlock(); }elseif(preg_match("/^-?\d+$/", $name) === 1){ - $block = BlockFactory::getInstance()->get((int) $name, 0); + //TODO: this may throw if the ID/meta was invalid + $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta((int) $name, 0); + if($blockStateData === null){ + continue; + } + $block = BlockFactory::getInstance()->fromFullBlock(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); }else{ //TODO: we probably ought to log an error here continue; @@ -452,7 +458,7 @@ class World implements ChunkManager{ foreach(BlockFactory::getInstance()->getAllKnownStates() as $state){ $dontTickName = $dontTickBlocks[$state->getTypeId()] ?? null; if($dontTickName === null && $state->ticksRandomly()){ - $this->randomTickBlocks[$state->getFullId()] = true; + $this->randomTickBlocks[$state->getStateId()] = true; } } } @@ -940,7 +946,7 @@ class World implements ChunkManager{ $blockPosition = BlockPosition::fromVector3($b); $packets[] = UpdateBlockPacket::create( $blockPosition, - $blockMapping->toRuntimeId($fullBlock->getFullId()), + $blockMapping->toRuntimeId($fullBlock->getStateId()), UpdateBlockPacket::FLAG_NETWORK, UpdateBlockPacket::DATA_LAYER_NORMAL ); @@ -980,11 +986,11 @@ class World implements ChunkManager{ if($block instanceof UnknownBlock){ throw new \InvalidArgumentException("Cannot do random-tick on unknown block"); } - $this->randomTickBlocks[$block->getFullId()] = true; + $this->randomTickBlocks[$block->getStateId()] = true; } public function removeRandomTickedBlock(Block $block) : void{ - unset($this->randomTickBlocks[$block->getFullId()]); + unset($this->randomTickBlocks[$block->getStateId()]); } private function tickChunks() : void{ @@ -2455,26 +2461,6 @@ class World implements ChunkManager{ private function initChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void{ $logger = new \PrefixedLogger($this->logger, "Loading chunk $chunkX $chunkZ"); - $this->timings->syncChunkLoadFixInvalidBlocks->startTiming(); - $blockFactory = BlockFactory::getInstance(); - $invalidBlocks = 0; - foreach($chunkData->getChunk()->getSubChunks() as $subChunk){ - foreach($subChunk->getBlockLayers() as $blockLayer){ - foreach($blockLayer->getPalette() as $blockStateId){ - $mappedStateId = $blockFactory->getMappedStateId($blockStateId); - if($mappedStateId !== $blockStateId){ - $blockLayer->replaceAll($blockStateId, $mappedStateId); - $invalidBlocks++; - } - } - } - } - if($invalidBlocks > 0){ - $logger->debug("Fixed $invalidBlocks invalid blockstates"); - $chunkData->getChunk()->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS, true); - } - $this->timings->syncChunkLoadFixInvalidBlocks->stopTiming(); - if(count($chunkData->getEntityNBT()) !== 0){ $this->timings->syncChunkLoadEntities->startTiming(); $entityFactory = EntityFactory::getInstance(); diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index f3367c885..423fe0bef 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -27,7 +27,7 @@ declare(strict_types=1); namespace pocketmine\world\format; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\block\tile\Tile; use function array_map; @@ -68,7 +68,7 @@ class Chunk{ $this->subChunks = new \SplFixedArray(Chunk::MAX_SUBCHUNKS); foreach($this->subChunks as $y => $null){ - $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, []); + $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, []); } $val = (self::MAX_SUBCHUNK_INDEX + 1) * SubChunk::EDGE_LENGTH; @@ -291,7 +291,7 @@ class Chunk{ throw new \InvalidArgumentException("Invalid subchunk Y coordinate $y"); } - $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, []); + $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, []); $this->setTerrainDirtyFlag(self::DIRTY_FLAG_BLOCKS, true); } diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 42e4b9c26..4cbf645d6 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -48,11 +48,11 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; */ final class GlobalBlockStateHandlers{ - private static ?BlockStateSerializer $blockStateSerializer; + private static ?BlockStateSerializer $blockStateSerializer = null; - private static ?BlockStateDeserializer $blockStateDeserializer; + private static ?BlockStateDeserializer $blockStateDeserializer = null; - private static ?BlockDataUpgrader $blockDataUpgrader; + private static ?BlockDataUpgrader $blockDataUpgrader = null; public static function getDeserializer() : BlockStateDeserializer{ return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer(new BlockStateToBlockObjectDeserializer()); @@ -63,18 +63,24 @@ final class GlobalBlockStateHandlers{ } public static function getUpgrader() : BlockDataUpgrader{ - return self::$blockDataUpgrader ??= new BlockDataUpgrader( - LegacyBlockStateMapper::loadFromString( - ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( - BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, - '1.12.0_to_1.18.10_blockstate_map.bin' - ))), - LegacyBlockIdToStringIdMap::getInstance() - ), - new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( + if(self::$blockDataUpgrader === null){ + $blockStateUpgrader = new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), BlockStateData::CURRENT_VERSION - )) - ); + )); + self::$blockDataUpgrader = new BlockDataUpgrader( + LegacyBlockStateMapper::loadFromString( + ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( + BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, + '1.12.0_to_1.18.10_blockstate_map.bin' + ))), + LegacyBlockIdToStringIdMap::getInstance(), + $blockStateUpgrader + ), + $blockStateUpgrader + ); + } + + return self::$blockDataUpgrader; } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 263311413..421f657b3 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io\leveldb; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializeException; @@ -238,7 +238,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockStateId = $blockStateDeserializer->deserialize($blockStateData); if(!isset($extraDataLayers[$ySub])){ - $extraDataLayers[$ySub] = new PalettedBlockArray(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS); + $extraDataLayers[$ySub] = new PalettedBlockArray(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS); } $extraDataLayers[$ySub]->set($x, $y, $z, $blockStateId); } @@ -367,14 +367,14 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $storages[] = $convertedLegacyExtraData[$y]; } - $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); break; case SubChunkVersion::PALETTED_SINGLE: $storages = [$this->deserializePaletted($binaryStream)]; if(isset($convertedLegacyExtraData[$y])){ $storages[] = $convertedLegacyExtraData[$y]; } - $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); break; case SubChunkVersion::PALETTED_MULTI: case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: @@ -390,7 +390,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ for($k = 0; $k < $storageCount; ++$k){ $storages[] = $this->deserializePaletted($binaryStream); } - $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); } break; default: @@ -433,7 +433,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ if(isset($convertedLegacyExtraData[$yy])){ $storages[] = $convertedLegacyExtraData[$yy]; } - $subChunks[$yy] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, $storages); + $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); } try{ diff --git a/src/world/format/io/region/Anvil.php b/src/world/format/io/region/Anvil.php index 5bf1cb487..8012facd9 100644 --- a/src/world/format/io/region/Anvil.php +++ b/src/world/format/io/region/Anvil.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\SubChunk; @@ -32,7 +32,7 @@ class Anvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ - return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkYZX( + return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkYZX( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )]); diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index 5a46cf589..98e9f703e 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\nbt\BigEndianNbtSerializer; use pocketmine\nbt\NbtDataException; @@ -74,7 +74,7 @@ class McRegion extends RegionWorldProvider{ $fullData = self::readFixedSizeByteArray($chunk, "Data", 16384); for($y = 0; $y < 8; ++$y){ - $subChunks[$y] = new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)]); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)]); } $makeBiomeArray = function(string $biomeIds) : BiomeArray{ diff --git a/src/world/format/io/region/PMAnvil.php b/src/world/format/io/region/PMAnvil.php index 813550d4a..29b47b352 100644 --- a/src/world/format/io/region/PMAnvil.php +++ b/src/world/format/io/region/PMAnvil.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyIds; +use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\SubChunk; @@ -36,7 +36,7 @@ class PMAnvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ - return new SubChunk(BlockLegacyIds::AIR << Block::INTERNAL_METADATA_BITS, [$this->palettizeLegacySubChunkXZY( + return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkXZY( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )]); diff --git a/src/world/generator/FlatGeneratorOptions.php b/src/world/generator/FlatGeneratorOptions.php index b5b39a4b7..3cda876cd 100644 --- a/src/world/generator/FlatGeneratorOptions.php +++ b/src/world/generator/FlatGeneratorOptions.php @@ -87,7 +87,7 @@ final class FlatGeneratorOptions{ throw new InvalidGeneratorOptionsException("Invalid preset layer \"$line\": " . $e->getMessage(), 0, $e); } for($cY = $y, $y += $cnt; $cY < $y; ++$cY){ - $result[$cY] = $b->getFullId(); + $result[$cY] = $b->getStateId(); } } diff --git a/src/world/generator/hell/Nether.php b/src/world/generator/hell/Nether.php index 8e75b0d3b..61c8624a0 100644 --- a/src/world/generator/hell/Nether.php +++ b/src/world/generator/hell/Nether.php @@ -72,9 +72,9 @@ class Nether extends Generator{ $chunk = $world->getChunk($chunkX, $chunkZ); - $bedrock = VanillaBlocks::BEDROCK()->getFullId(); - $netherrack = VanillaBlocks::NETHERRACK()->getFullId(); - $stillLava = VanillaBlocks::LAVA()->getFullId(); + $bedrock = VanillaBlocks::BEDROCK()->getStateId(); + $netherrack = VanillaBlocks::NETHERRACK()->getStateId(); + $stillLava = VanillaBlocks::LAVA()->getStateId(); for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < Chunk::EDGE_LENGTH; ++$z){ diff --git a/src/world/generator/normal/Normal.php b/src/world/generator/normal/Normal.php index 2a89d1e61..f48f8f4fa 100644 --- a/src/world/generator/normal/Normal.php +++ b/src/world/generator/normal/Normal.php @@ -144,9 +144,9 @@ class Normal extends Generator{ $biomeCache = []; - $bedrock = VanillaBlocks::BEDROCK()->getFullId(); - $stillWater = VanillaBlocks::WATER()->getFullId(); - $stone = VanillaBlocks::STONE()->getFullId(); + $bedrock = VanillaBlocks::BEDROCK()->getStateId(); + $stillWater = VanillaBlocks::WATER()->getStateId(); + $stone = VanillaBlocks::STONE()->getStateId(); $baseX = $chunkX * Chunk::EDGE_LENGTH; $baseZ = $chunkZ * Chunk::EDGE_LENGTH; diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 8fe9c099f..193905cce 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -67,7 +67,7 @@ class GroundCover implements Populator{ continue; } - $chunk->setFullBlock($x, $y, $z, $b->getFullId()); + $chunk->setFullBlock($x, $y, $z, $b->getStateId()); } } } diff --git a/src/world/particle/BlockBreakParticle.php b/src/world/particle/BlockBreakParticle.php index 8801686e2..98b2eb9c8 100644 --- a/src/world/particle/BlockBreakParticle.php +++ b/src/world/particle/BlockBreakParticle.php @@ -34,6 +34,6 @@ class BlockBreakParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getFullId()), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/particle/BlockPunchParticle.php b/src/world/particle/BlockPunchParticle.php index d9ddad209..fe754dc56 100644 --- a/src/world/particle/BlockPunchParticle.php +++ b/src/world/particle/BlockPunchParticle.php @@ -39,6 +39,6 @@ class BlockPunchParticle implements Particle{ ){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()) | ($this->face << 24), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) | ($this->face << 24), $pos)]; } } diff --git a/src/world/particle/TerrainParticle.php b/src/world/particle/TerrainParticle.php index 863b84401..27de04b14 100644 --- a/src/world/particle/TerrainParticle.php +++ b/src/world/particle/TerrainParticle.php @@ -33,6 +33,6 @@ class TerrainParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getFullId()), $pos)]; + return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/sound/BlockBreakSound.php b/src/world/sound/BlockBreakSound.php index 2075518e0..4f919a396 100644 --- a/src/world/sound/BlockBreakSound.php +++ b/src/world/sound/BlockBreakSound.php @@ -33,6 +33,6 @@ class BlockBreakSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPlaceSound.php b/src/world/sound/BlockPlaceSound.php index 000dadd67..8440dbd47 100644 --- a/src/world/sound/BlockPlaceSound.php +++ b/src/world/sound/BlockPlaceSound.php @@ -33,6 +33,6 @@ class BlockPlaceSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPunchSound.php b/src/world/sound/BlockPunchSound.php index 28ab73c94..d3898b734 100644 --- a/src/world/sound/BlockPunchSound.php +++ b/src/world/sound/BlockPunchSound.php @@ -40,7 +40,7 @@ class BlockPunchSound implements Sound{ LevelSoundEvent::HIT, $pos, false, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()) + RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) )]; } } diff --git a/src/world/sound/EntityLandSound.php b/src/world/sound/EntityLandSound.php index 6412e6ab0..545753367 100644 --- a/src/world/sound/EntityLandSound.php +++ b/src/world/sound/EntityLandSound.php @@ -43,7 +43,7 @@ class EntityLandSound implements Sound{ return [LevelSoundEventPacket::create( LevelSoundEvent::LAND, $pos, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->blockLandedOn->getFullId()), + RuntimeBlockMapping::getInstance()->toRuntimeId($this->blockLandedOn->getStateId()), $this->entity::getNetworkTypeId(), false, //TODO: does isBaby have any relevance here? false diff --git a/src/world/sound/ItemUseOnBlockSound.php b/src/world/sound/ItemUseOnBlockSound.php index 3e090a905..d3483d36b 100644 --- a/src/world/sound/ItemUseOnBlockSound.php +++ b/src/world/sound/ItemUseOnBlockSound.php @@ -42,7 +42,7 @@ final class ItemUseOnBlockSound implements Sound{ LevelSoundEvent::ITEM_USE_ON, $pos, false, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()) + RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) )]; } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 0286788c2..d9bbbfae2 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -24,9 +24,11 @@ declare(strict_types=1); namespace pocketmine\block; use PHPUnit\Framework\TestCase; +use function asort; use function file_get_contents; use function is_array; use function json_decode; +use function print_r; class BlockTest extends TestCase{ @@ -52,7 +54,7 @@ class BlockTest extends TestCase{ public function testDeliberateOverrideBlock() : void{ $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); - self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->get($block->getId(), 0)); + self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->get($block->getTypeId(), 0)); } /** @@ -63,7 +65,7 @@ class BlockTest extends TestCase{ if(!$this->blockFactory->isRegistered($i)){ $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::FIRST_UNUSED_BLOCK_ID, $i, 0), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->get($b->getId(), 0)); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->get($b->getTypeId(), 0)); return; } } @@ -92,37 +94,6 @@ class BlockTest extends TestCase{ } } - /** - * @return int[][] - * @phpstan-return list - */ - public function blockGetProvider() : array{ - return [ - [BlockLegacyIds::STONE, 5], - [BlockLegacyIds::GOLD_BLOCK, 0], - [BlockLegacyIds::WOODEN_PLANKS, 5], - [BlockLegacyIds::SAND, 0], - [BlockLegacyIds::GOLD_BLOCK, 0] - ]; - } - - /** - * @dataProvider blockGetProvider - */ - public function testBlockGet(int $id, int $meta) : void{ - $block = $this->blockFactory->get($id, $meta); - - self::assertEquals($id, $block->getId()); - self::assertEquals($meta, $block->getMeta()); - } - - public function testBlockIds() : void{ - for($i = 0; $i < 256; ++$i){ - $b = $this->blockFactory->get($i, 0); - self::assertContains($i, $b->getIdInfo()->getAllLegacyBlockIds()); - } - } - /** * Test that light filters in the static arrays have valid values. Wrong values can cause lots of unpleasant bugs * (like freezes) when doing light population. @@ -137,33 +108,21 @@ class BlockTest extends TestCase{ public function testConsistency() : void{ $list = json_decode(file_get_contents(__DIR__ . '/block_factory_consistency_check.json'), true); if(!is_array($list)){ - throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, remaps: array}"); + throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, stateDataBits: int}"); } $knownStates = $list["knownStates"]; - $remaps = $list["remaps"]; + $oldStateDataSize = $list["stateDataBits"]; + self::assertSame($oldStateDataSize, Block::INTERNAL_STATE_DATA_BITS, "Changed number of state data bits - consistency check probably need regenerating"); - $states = []; - for($k = 0; $k < 1024 << Block::INTERNAL_METADATA_BITS; $k++){ - $state = $this->blockFactory->fromFullBlock($k); - if($state instanceof UnknownBlock){ - continue; - } - $states[$k] = $state; - if($state->getFullId() !== $k){ - self::assertArrayHasKey($k, $remaps, "New remap of state $k (" . $state->getName() . ") - consistency check may need regenerating"); - self::assertSame($state->getFullId(), $remaps[$k], "Mismatched full IDs of remapped state $k"); - }else{ - self::assertArrayHasKey($k, $knownStates, "New block state $k (" . $state->getName() . ") - consistency check may need regenerating"); - self::assertSame($knownStates[$k], $state->getName()); - } + $states = BlockFactory::getInstance()->getAllKnownStates(); + foreach(BlockFactory::getInstance()->getAllKnownStates() as $stateId => $state){ + self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . $state->getTypeId() . ":" . $state->computeStateData() . ", " . print_r($state, true) . ") - consistency check may need regenerating"); + self::assertSame($knownStates[$stateId], $state->getName()); } + asort($knownStates, SORT_STRING); foreach($knownStates as $k => $name){ - self::assertArrayHasKey($k, $states, "Missing previously-known block state $k ($name)"); + self::assertArrayHasKey($k, $states, "Missing previously-known block state $k " . ($k >> Block::INTERNAL_STATE_DATA_BITS) . ":" . ($k & Block::INTERNAL_STATE_DATA_MASK) . " ($name)"); self::assertSame($name, $states[$k]->getName()); } - foreach($remaps as $origin => $destination){ - self::assertArrayHasKey($origin, $states, "Missing previously-remapped state $origin"); - self::assertSame($destination, $states[$origin]->getFullId()); - } } } diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index f94081f22..a2dda4822 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"0":"Air","16":"Stone","17":"Granite","18":"Polished Granite","19":"Diorite","20":"Polished Diorite","21":"Andesite","22":"Polished Andesite","32":"Grass","48":"Dirt","49":"Dirt","64":"Cobblestone","80":"Oak Planks","81":"Spruce Planks","82":"Birch Planks","83":"Jungle Planks","84":"Acacia Planks","85":"Dark Oak Planks","96":"Oak Sapling","97":"Spruce Sapling","98":"Birch Sapling","99":"Jungle Sapling","100":"Acacia Sapling","101":"Dark Oak Sapling","104":"Oak Sapling","105":"Spruce Sapling","106":"Birch Sapling","107":"Jungle Sapling","108":"Acacia Sapling","109":"Dark Oak Sapling","112":"Bedrock","113":"Bedrock","128":"Water","129":"Water","130":"Water","131":"Water","132":"Water","133":"Water","134":"Water","135":"Water","136":"Water","137":"Water","138":"Water","139":"Water","140":"Water","141":"Water","142":"Water","143":"Water","144":"Water","145":"Water","146":"Water","147":"Water","148":"Water","149":"Water","150":"Water","151":"Water","152":"Water","153":"Water","154":"Water","155":"Water","156":"Water","157":"Water","158":"Water","159":"Water","160":"Lava","161":"Lava","162":"Lava","163":"Lava","164":"Lava","165":"Lava","166":"Lava","167":"Lava","168":"Lava","169":"Lava","170":"Lava","171":"Lava","172":"Lava","173":"Lava","174":"Lava","175":"Lava","176":"Lava","177":"Lava","178":"Lava","179":"Lava","180":"Lava","181":"Lava","182":"Lava","183":"Lava","184":"Lava","185":"Lava","186":"Lava","187":"Lava","188":"Lava","189":"Lava","190":"Lava","191":"Lava","192":"Sand","193":"Red Sand","208":"Gravel","224":"Gold Ore","240":"Iron Ore","256":"Coal Ore","272":"Oak Log","273":"Spruce Log","274":"Birch Log","275":"Jungle Log","276":"Oak Log","277":"Spruce Log","278":"Birch Log","279":"Jungle Log","280":"Oak Log","281":"Spruce Log","282":"Birch Log","283":"Jungle Log","288":"Oak Leaves","289":"Spruce Leaves","290":"Birch Leaves","291":"Jungle Leaves","292":"Oak Leaves","293":"Spruce Leaves","294":"Birch Leaves","295":"Jungle Leaves","296":"Oak Leaves","297":"Spruce Leaves","298":"Birch Leaves","299":"Jungle Leaves","300":"Oak Leaves","301":"Spruce Leaves","302":"Birch Leaves","303":"Jungle Leaves","304":"Sponge","305":"Sponge","320":"Glass","336":"Lapis Lazuli Ore","352":"Lapis Lazuli Block","384":"Sandstone","385":"Chiseled Sandstone","386":"Cut Sandstone","387":"Smooth Sandstone","400":"Note Block","416":"Bed Block","417":"Bed Block","418":"Bed Block","419":"Bed Block","420":"Bed Block","421":"Bed Block","422":"Bed Block","423":"Bed Block","424":"Bed Block","425":"Bed Block","426":"Bed Block","427":"Bed Block","428":"Bed Block","429":"Bed Block","430":"Bed Block","431":"Bed Block","432":"Powered Rail","433":"Powered Rail","434":"Powered Rail","435":"Powered Rail","436":"Powered Rail","437":"Powered Rail","440":"Powered Rail","441":"Powered Rail","442":"Powered Rail","443":"Powered Rail","444":"Powered Rail","445":"Powered Rail","448":"Detector Rail","449":"Detector Rail","450":"Detector Rail","451":"Detector Rail","452":"Detector Rail","453":"Detector Rail","456":"Detector Rail","457":"Detector Rail","458":"Detector Rail","459":"Detector Rail","460":"Detector Rail","461":"Detector Rail","480":"Cobweb","497":"Tall Grass","498":"Fern","512":"Dead Bush","560":"Wool","561":"Wool","562":"Wool","563":"Wool","564":"Wool","565":"Wool","566":"Wool","567":"Wool","568":"Wool","569":"Wool","570":"Wool","571":"Wool","572":"Wool","573":"Wool","574":"Wool","575":"Wool","576":"???","592":"Dandelion","608":"Poppy","609":"Blue Orchid","610":"Allium","611":"Azure Bluet","612":"Red Tulip","613":"Orange Tulip","614":"White Tulip","615":"Pink Tulip","616":"Oxeye Daisy","617":"Cornflower","618":"Lily of the Valley","624":"Brown Mushroom","640":"Red Mushroom","656":"Gold Block","672":"Iron Block","688":"Smooth Stone Slab","689":"Sandstone Slab","690":"Fake Wooden Slab","691":"Cobblestone Slab","692":"Brick Slab","693":"Stone Brick Slab","694":"Quartz Slab","695":"Nether Brick Slab","704":"Smooth Stone Slab","705":"Sandstone Slab","706":"Fake Wooden Slab","707":"Cobblestone Slab","708":"Brick Slab","709":"Stone Brick Slab","710":"Quartz Slab","711":"Nether Brick Slab","712":"Smooth Stone Slab","713":"Sandstone Slab","714":"Fake Wooden Slab","715":"Cobblestone Slab","716":"Brick Slab","717":"Stone Brick Slab","718":"Quartz Slab","719":"Nether Brick Slab","720":"Bricks","736":"TNT","737":"TNT","738":"TNT","739":"TNT","752":"Bookshelf","768":"Mossy Cobblestone","784":"Obsidian","801":"Torch","802":"Torch","803":"Torch","804":"Torch","805":"Torch","816":"Fire Block","817":"Fire Block","818":"Fire Block","819":"Fire Block","820":"Fire Block","821":"Fire Block","822":"Fire Block","823":"Fire Block","824":"Fire Block","825":"Fire Block","826":"Fire Block","827":"Fire Block","828":"Fire Block","829":"Fire Block","830":"Fire Block","831":"Fire Block","832":"Monster Spawner","848":"Oak Stairs","849":"Oak Stairs","850":"Oak Stairs","851":"Oak Stairs","852":"Oak Stairs","853":"Oak Stairs","854":"Oak Stairs","855":"Oak Stairs","866":"Chest","867":"Chest","868":"Chest","869":"Chest","880":"Redstone","881":"Redstone","882":"Redstone","883":"Redstone","884":"Redstone","885":"Redstone","886":"Redstone","887":"Redstone","888":"Redstone","889":"Redstone","890":"Redstone","891":"Redstone","892":"Redstone","893":"Redstone","894":"Redstone","895":"Redstone","896":"Diamond Ore","912":"Diamond Block","928":"Crafting Table","944":"Wheat Block","945":"Wheat Block","946":"Wheat Block","947":"Wheat Block","948":"Wheat Block","949":"Wheat Block","950":"Wheat Block","951":"Wheat Block","960":"Farmland","961":"Farmland","962":"Farmland","963":"Farmland","964":"Farmland","965":"Farmland","966":"Farmland","967":"Farmland","978":"Furnace","979":"Furnace","980":"Furnace","981":"Furnace","994":"Furnace","995":"Furnace","996":"Furnace","997":"Furnace","1008":"Oak Sign","1009":"Oak Sign","1010":"Oak Sign","1011":"Oak Sign","1012":"Oak Sign","1013":"Oak Sign","1014":"Oak Sign","1015":"Oak Sign","1016":"Oak Sign","1017":"Oak Sign","1018":"Oak Sign","1019":"Oak Sign","1020":"Oak Sign","1021":"Oak Sign","1022":"Oak Sign","1023":"Oak Sign","1024":"Oak Door","1025":"Oak Door","1026":"Oak Door","1027":"Oak Door","1028":"Oak Door","1029":"Oak Door","1030":"Oak Door","1031":"Oak Door","1032":"Oak Door","1033":"Oak Door","1042":"Ladder","1043":"Ladder","1044":"Ladder","1045":"Ladder","1056":"Rail","1057":"Rail","1058":"Rail","1059":"Rail","1060":"Rail","1061":"Rail","1062":"Rail","1063":"Rail","1064":"Rail","1065":"Rail","1072":"Cobblestone Stairs","1073":"Cobblestone Stairs","1074":"Cobblestone Stairs","1075":"Cobblestone Stairs","1076":"Cobblestone Stairs","1077":"Cobblestone Stairs","1078":"Cobblestone Stairs","1079":"Cobblestone Stairs","1090":"Oak Wall Sign","1091":"Oak Wall Sign","1092":"Oak Wall Sign","1093":"Oak Wall Sign","1104":"Lever","1105":"Lever","1106":"Lever","1107":"Lever","1108":"Lever","1109":"Lever","1110":"Lever","1111":"Lever","1112":"Lever","1113":"Lever","1114":"Lever","1115":"Lever","1116":"Lever","1117":"Lever","1118":"Lever","1119":"Lever","1120":"Stone Pressure Plate","1121":"Stone Pressure Plate","1136":"Iron Door","1137":"Iron Door","1138":"Iron Door","1139":"Iron Door","1140":"Iron Door","1141":"Iron Door","1142":"Iron Door","1143":"Iron Door","1144":"Iron Door","1145":"Iron Door","1152":"Oak Pressure Plate","1153":"Oak Pressure Plate","1168":"Redstone Ore","1184":"Redstone Ore","1201":"Redstone Torch","1202":"Redstone Torch","1203":"Redstone Torch","1204":"Redstone Torch","1205":"Redstone Torch","1217":"Redstone Torch","1218":"Redstone Torch","1219":"Redstone Torch","1220":"Redstone Torch","1221":"Redstone Torch","1232":"Stone Button","1233":"Stone Button","1234":"Stone Button","1235":"Stone Button","1236":"Stone Button","1237":"Stone Button","1240":"Stone Button","1241":"Stone Button","1242":"Stone Button","1243":"Stone Button","1244":"Stone Button","1245":"Stone Button","1248":"Snow Layer","1249":"Snow Layer","1250":"Snow Layer","1251":"Snow Layer","1252":"Snow Layer","1253":"Snow Layer","1254":"Snow Layer","1255":"Snow Layer","1264":"Ice","1280":"Snow Block","1296":"Cactus","1297":"Cactus","1298":"Cactus","1299":"Cactus","1300":"Cactus","1301":"Cactus","1302":"Cactus","1303":"Cactus","1304":"Cactus","1305":"Cactus","1306":"Cactus","1307":"Cactus","1308":"Cactus","1309":"Cactus","1310":"Cactus","1311":"Cactus","1312":"Clay Block","1328":"Sugarcane","1329":"Sugarcane","1330":"Sugarcane","1331":"Sugarcane","1332":"Sugarcane","1333":"Sugarcane","1334":"Sugarcane","1335":"Sugarcane","1336":"Sugarcane","1337":"Sugarcane","1338":"Sugarcane","1339":"Sugarcane","1340":"Sugarcane","1341":"Sugarcane","1342":"Sugarcane","1343":"Sugarcane","1344":"Jukebox","1360":"Oak Fence","1361":"Spruce Fence","1362":"Birch Fence","1363":"Jungle Fence","1364":"Acacia Fence","1365":"Dark Oak Fence","1376":"Pumpkin","1392":"Netherrack","1408":"Soul Sand","1424":"Glowstone","1441":"Nether Portal","1442":"Nether Portal","1456":"Jack o'Lantern","1457":"Jack o'Lantern","1458":"Jack o'Lantern","1459":"Jack o'Lantern","1472":"Cake","1473":"Cake","1474":"Cake","1475":"Cake","1476":"Cake","1477":"Cake","1478":"Cake","1488":"Redstone Repeater","1489":"Redstone Repeater","1490":"Redstone Repeater","1491":"Redstone Repeater","1492":"Redstone Repeater","1493":"Redstone Repeater","1494":"Redstone Repeater","1495":"Redstone Repeater","1496":"Redstone Repeater","1497":"Redstone Repeater","1498":"Redstone Repeater","1499":"Redstone Repeater","1500":"Redstone Repeater","1501":"Redstone Repeater","1502":"Redstone Repeater","1503":"Redstone Repeater","1504":"Redstone Repeater","1505":"Redstone Repeater","1506":"Redstone Repeater","1507":"Redstone Repeater","1508":"Redstone Repeater","1509":"Redstone Repeater","1510":"Redstone Repeater","1511":"Redstone Repeater","1512":"Redstone Repeater","1513":"Redstone Repeater","1514":"Redstone Repeater","1515":"Redstone Repeater","1516":"Redstone Repeater","1517":"Redstone Repeater","1518":"Redstone Repeater","1519":"Redstone Repeater","1520":"Invisible Bedrock","1536":"Oak Trapdoor","1537":"Oak Trapdoor","1538":"Oak Trapdoor","1539":"Oak Trapdoor","1540":"Oak Trapdoor","1541":"Oak Trapdoor","1542":"Oak Trapdoor","1543":"Oak Trapdoor","1544":"Oak Trapdoor","1545":"Oak Trapdoor","1546":"Oak Trapdoor","1547":"Oak Trapdoor","1548":"Oak Trapdoor","1549":"Oak Trapdoor","1550":"Oak Trapdoor","1551":"Oak Trapdoor","1552":"Infested Stone","1553":"Infested Cobblestone","1554":"Infested Stone Brick","1555":"Infested Mossy Stone Brick","1556":"Infested Cracked Stone Brick","1557":"Infested Chiseled Stone Brick","1568":"Stone Bricks","1569":"Mossy Stone Bricks","1570":"Cracked Stone Bricks","1571":"Chiseled Stone Bricks","1584":"Brown Mushroom Block","1585":"Brown Mushroom Block","1586":"Brown Mushroom Block","1587":"Brown Mushroom Block","1588":"Brown Mushroom Block","1589":"Brown Mushroom Block","1590":"Brown Mushroom Block","1591":"Brown Mushroom Block","1592":"Brown Mushroom Block","1593":"Brown Mushroom Block","1594":"Mushroom Stem","1598":"Brown Mushroom Block","1599":"All Sided Mushroom Stem","1600":"Red Mushroom Block","1601":"Red Mushroom Block","1602":"Red Mushroom Block","1603":"Red Mushroom Block","1604":"Red Mushroom Block","1605":"Red Mushroom Block","1606":"Red Mushroom Block","1607":"Red Mushroom Block","1608":"Red Mushroom Block","1609":"Red Mushroom Block","1614":"Red Mushroom Block","1616":"Iron Bars","1632":"Glass Pane","1648":"Melon Block","1664":"Pumpkin Stem","1665":"Pumpkin Stem","1666":"Pumpkin Stem","1667":"Pumpkin Stem","1668":"Pumpkin Stem","1669":"Pumpkin Stem","1670":"Pumpkin Stem","1671":"Pumpkin Stem","1680":"Melon Stem","1681":"Melon Stem","1682":"Melon Stem","1683":"Melon Stem","1684":"Melon Stem","1685":"Melon Stem","1686":"Melon Stem","1687":"Melon Stem","1696":"Vines","1697":"Vines","1698":"Vines","1699":"Vines","1700":"Vines","1701":"Vines","1702":"Vines","1703":"Vines","1704":"Vines","1705":"Vines","1706":"Vines","1707":"Vines","1708":"Vines","1709":"Vines","1710":"Vines","1711":"Vines","1712":"Oak Fence Gate","1713":"Oak Fence Gate","1714":"Oak Fence Gate","1715":"Oak Fence Gate","1716":"Oak Fence Gate","1717":"Oak Fence Gate","1718":"Oak Fence Gate","1719":"Oak Fence Gate","1720":"Oak Fence Gate","1721":"Oak Fence Gate","1722":"Oak Fence Gate","1723":"Oak Fence Gate","1724":"Oak Fence Gate","1725":"Oak Fence Gate","1726":"Oak Fence Gate","1727":"Oak Fence Gate","1728":"Brick Stairs","1729":"Brick Stairs","1730":"Brick Stairs","1731":"Brick Stairs","1732":"Brick Stairs","1733":"Brick Stairs","1734":"Brick Stairs","1735":"Brick Stairs","1744":"Stone Brick Stairs","1745":"Stone Brick Stairs","1746":"Stone Brick Stairs","1747":"Stone Brick Stairs","1748":"Stone Brick Stairs","1749":"Stone Brick Stairs","1750":"Stone Brick Stairs","1751":"Stone Brick Stairs","1760":"Mycelium","1776":"Lily Pad","1792":"Nether Bricks","1808":"Nether Brick Fence","1824":"Nether Brick Stairs","1825":"Nether Brick Stairs","1826":"Nether Brick Stairs","1827":"Nether Brick Stairs","1828":"Nether Brick Stairs","1829":"Nether Brick Stairs","1830":"Nether Brick Stairs","1831":"Nether Brick Stairs","1840":"Nether Wart","1841":"Nether Wart","1842":"Nether Wart","1843":"Nether Wart","1856":"Enchanting Table","1872":"Brewing Stand","1873":"Brewing Stand","1874":"Brewing Stand","1875":"Brewing Stand","1876":"Brewing Stand","1877":"Brewing Stand","1878":"Brewing Stand","1879":"Brewing Stand","1920":"End Portal Frame","1921":"End Portal Frame","1922":"End Portal Frame","1923":"End Portal Frame","1924":"End Portal Frame","1925":"End Portal Frame","1926":"End Portal Frame","1927":"End Portal Frame","1936":"End Stone","1952":"Dragon Egg","1968":"Redstone Lamp","1984":"Redstone Lamp","2016":"Activator Rail","2017":"Activator Rail","2018":"Activator Rail","2019":"Activator Rail","2020":"Activator Rail","2021":"Activator Rail","2024":"Activator Rail","2025":"Activator Rail","2026":"Activator Rail","2027":"Activator Rail","2028":"Activator Rail","2029":"Activator Rail","2032":"Cocoa Block","2033":"Cocoa Block","2034":"Cocoa Block","2035":"Cocoa Block","2036":"Cocoa Block","2037":"Cocoa Block","2038":"Cocoa Block","2039":"Cocoa Block","2040":"Cocoa Block","2041":"Cocoa Block","2042":"Cocoa Block","2043":"Cocoa Block","2048":"Sandstone Stairs","2049":"Sandstone Stairs","2050":"Sandstone Stairs","2051":"Sandstone Stairs","2052":"Sandstone Stairs","2053":"Sandstone Stairs","2054":"Sandstone Stairs","2055":"Sandstone Stairs","2064":"Emerald Ore","2082":"Ender Chest","2083":"Ender Chest","2084":"Ender Chest","2085":"Ender Chest","2096":"Tripwire Hook","2097":"Tripwire Hook","2098":"Tripwire Hook","2099":"Tripwire Hook","2100":"Tripwire Hook","2101":"Tripwire Hook","2102":"Tripwire Hook","2103":"Tripwire Hook","2104":"Tripwire Hook","2105":"Tripwire Hook","2106":"Tripwire Hook","2107":"Tripwire Hook","2108":"Tripwire Hook","2109":"Tripwire Hook","2110":"Tripwire Hook","2111":"Tripwire Hook","2112":"Tripwire","2113":"Tripwire","2114":"Tripwire","2115":"Tripwire","2116":"Tripwire","2117":"Tripwire","2118":"Tripwire","2119":"Tripwire","2120":"Tripwire","2121":"Tripwire","2122":"Tripwire","2123":"Tripwire","2124":"Tripwire","2125":"Tripwire","2126":"Tripwire","2127":"Tripwire","2128":"Emerald Block","2144":"Spruce Stairs","2145":"Spruce Stairs","2146":"Spruce Stairs","2147":"Spruce Stairs","2148":"Spruce Stairs","2149":"Spruce Stairs","2150":"Spruce Stairs","2151":"Spruce Stairs","2160":"Birch Stairs","2161":"Birch Stairs","2162":"Birch Stairs","2163":"Birch Stairs","2164":"Birch Stairs","2165":"Birch Stairs","2166":"Birch Stairs","2167":"Birch Stairs","2176":"Jungle Stairs","2177":"Jungle Stairs","2178":"Jungle Stairs","2179":"Jungle Stairs","2180":"Jungle Stairs","2181":"Jungle Stairs","2182":"Jungle Stairs","2183":"Jungle Stairs","2208":"Beacon","2224":"Cobblestone Wall","2225":"Mossy Cobblestone Wall","2226":"Granite Wall","2227":"Diorite Wall","2228":"Andesite Wall","2229":"Sandstone Wall","2230":"Brick Wall","2231":"Stone Brick Wall","2232":"Mossy Stone Brick Wall","2233":"Nether Brick Wall","2234":"End Stone Brick Wall","2235":"Prismarine Wall","2236":"Red Sandstone Wall","2237":"Red Nether Brick Wall","2240":"Flower Pot","2256":"Carrot Block","2257":"Carrot Block","2258":"Carrot Block","2259":"Carrot Block","2260":"Carrot Block","2261":"Carrot Block","2262":"Carrot Block","2263":"Carrot Block","2272":"Potato Block","2273":"Potato Block","2274":"Potato Block","2275":"Potato Block","2276":"Potato Block","2277":"Potato Block","2278":"Potato Block","2279":"Potato Block","2288":"Oak Button","2289":"Oak Button","2290":"Oak Button","2291":"Oak Button","2292":"Oak Button","2293":"Oak Button","2296":"Oak Button","2297":"Oak Button","2298":"Oak Button","2299":"Oak Button","2300":"Oak Button","2301":"Oak Button","2305":"Mob Head","2306":"Mob Head","2307":"Mob Head","2308":"Mob Head","2309":"Mob Head","2313":"Mob Head","2314":"Mob Head","2315":"Mob Head","2316":"Mob Head","2317":"Mob Head","2320":"Anvil","2321":"Anvil","2322":"Anvil","2323":"Anvil","2324":"Anvil","2325":"Anvil","2326":"Anvil","2327":"Anvil","2328":"Anvil","2329":"Anvil","2330":"Anvil","2331":"Anvil","2338":"Trapped Chest","2339":"Trapped Chest","2340":"Trapped Chest","2341":"Trapped Chest","2352":"Weighted Pressure Plate Light","2353":"Weighted Pressure Plate Light","2354":"Weighted Pressure Plate Light","2355":"Weighted Pressure Plate Light","2356":"Weighted Pressure Plate Light","2357":"Weighted Pressure Plate Light","2358":"Weighted Pressure Plate Light","2359":"Weighted Pressure Plate Light","2360":"Weighted Pressure Plate Light","2361":"Weighted Pressure Plate Light","2362":"Weighted Pressure Plate Light","2363":"Weighted Pressure Plate Light","2364":"Weighted Pressure Plate Light","2365":"Weighted Pressure Plate Light","2366":"Weighted Pressure Plate Light","2367":"Weighted Pressure Plate Light","2368":"Weighted Pressure Plate Heavy","2369":"Weighted Pressure Plate Heavy","2370":"Weighted Pressure Plate Heavy","2371":"Weighted Pressure Plate Heavy","2372":"Weighted Pressure Plate Heavy","2373":"Weighted Pressure Plate Heavy","2374":"Weighted Pressure Plate Heavy","2375":"Weighted Pressure Plate Heavy","2376":"Weighted Pressure Plate Heavy","2377":"Weighted Pressure Plate Heavy","2378":"Weighted Pressure Plate Heavy","2379":"Weighted Pressure Plate Heavy","2380":"Weighted Pressure Plate Heavy","2381":"Weighted Pressure Plate Heavy","2382":"Weighted Pressure Plate Heavy","2383":"Weighted Pressure Plate Heavy","2384":"Redstone Comparator","2385":"Redstone Comparator","2386":"Redstone Comparator","2387":"Redstone Comparator","2388":"Redstone Comparator","2389":"Redstone Comparator","2390":"Redstone Comparator","2391":"Redstone Comparator","2408":"Redstone Comparator","2409":"Redstone Comparator","2410":"Redstone Comparator","2411":"Redstone Comparator","2412":"Redstone Comparator","2413":"Redstone Comparator","2414":"Redstone Comparator","2415":"Redstone Comparator","2416":"Daylight Sensor","2417":"Daylight Sensor","2418":"Daylight Sensor","2419":"Daylight Sensor","2420":"Daylight Sensor","2421":"Daylight Sensor","2422":"Daylight Sensor","2423":"Daylight Sensor","2424":"Daylight Sensor","2425":"Daylight Sensor","2426":"Daylight Sensor","2427":"Daylight Sensor","2428":"Daylight Sensor","2429":"Daylight Sensor","2430":"Daylight Sensor","2431":"Daylight Sensor","2432":"Redstone Block","2448":"Nether Quartz Ore","2464":"Hopper","2466":"Hopper","2467":"Hopper","2468":"Hopper","2469":"Hopper","2472":"Hopper","2474":"Hopper","2475":"Hopper","2476":"Hopper","2477":"Hopper","2480":"Quartz Block","2481":"Chiseled Quartz Block","2482":"Quartz Pillar","2483":"Smooth Quartz Block","2485":"Chiseled Quartz Block","2486":"Quartz Pillar","2489":"Chiseled Quartz Block","2490":"Quartz Pillar","2496":"Quartz Stairs","2497":"Quartz Stairs","2498":"Quartz Stairs","2499":"Quartz Stairs","2500":"Quartz Stairs","2501":"Quartz Stairs","2502":"Quartz Stairs","2503":"Quartz Stairs","2512":"Oak Slab","2513":"Spruce Slab","2514":"Birch Slab","2515":"Jungle Slab","2516":"Acacia Slab","2517":"Dark Oak Slab","2528":"Oak Slab","2529":"Spruce Slab","2530":"Birch Slab","2531":"Jungle Slab","2532":"Acacia Slab","2533":"Dark Oak Slab","2536":"Oak Slab","2537":"Spruce Slab","2538":"Birch Slab","2539":"Jungle Slab","2540":"Acacia Slab","2541":"Dark Oak Slab","2544":"Stained Clay","2545":"Stained Clay","2546":"Stained Clay","2547":"Stained Clay","2548":"Stained Clay","2549":"Stained Clay","2550":"Stained Clay","2551":"Stained Clay","2552":"Stained Clay","2553":"Stained Clay","2554":"Stained Clay","2555":"Stained Clay","2556":"Stained Clay","2557":"Stained Clay","2558":"Stained Clay","2559":"Stained Clay","2560":"Stained Glass Pane","2561":"Stained Glass Pane","2562":"Stained Glass Pane","2563":"Stained Glass Pane","2564":"Stained Glass Pane","2565":"Stained Glass Pane","2566":"Stained Glass Pane","2567":"Stained Glass Pane","2568":"Stained Glass Pane","2569":"Stained Glass Pane","2570":"Stained Glass Pane","2571":"Stained Glass Pane","2572":"Stained Glass Pane","2573":"Stained Glass Pane","2574":"Stained Glass Pane","2575":"Stained Glass Pane","2576":"Acacia Leaves","2577":"Dark Oak Leaves","2580":"Acacia Leaves","2581":"Dark Oak Leaves","2584":"Acacia Leaves","2585":"Dark Oak Leaves","2588":"Acacia Leaves","2589":"Dark Oak Leaves","2592":"Acacia Log","2593":"Dark Oak Log","2596":"Acacia Log","2597":"Dark Oak Log","2600":"Acacia Log","2601":"Dark Oak Log","2608":"Acacia Stairs","2609":"Acacia Stairs","2610":"Acacia Stairs","2611":"Acacia Stairs","2612":"Acacia Stairs","2613":"Acacia Stairs","2614":"Acacia Stairs","2615":"Acacia Stairs","2624":"Dark Oak Stairs","2625":"Dark Oak Stairs","2626":"Dark Oak Stairs","2627":"Dark Oak Stairs","2628":"Dark Oak Stairs","2629":"Dark Oak Stairs","2630":"Dark Oak Stairs","2631":"Dark Oak Stairs","2640":"Slime Block","2672":"Iron Trapdoor","2673":"Iron Trapdoor","2674":"Iron Trapdoor","2675":"Iron Trapdoor","2676":"Iron Trapdoor","2677":"Iron Trapdoor","2678":"Iron Trapdoor","2679":"Iron Trapdoor","2680":"Iron Trapdoor","2681":"Iron Trapdoor","2682":"Iron Trapdoor","2683":"Iron Trapdoor","2684":"Iron Trapdoor","2685":"Iron Trapdoor","2686":"Iron Trapdoor","2687":"Iron Trapdoor","2688":"Prismarine","2689":"Dark Prismarine","2690":"Prismarine Bricks","2704":"Sea Lantern","2720":"Hay Bale","2724":"Hay Bale","2728":"Hay Bale","2736":"Carpet","2737":"Carpet","2738":"Carpet","2739":"Carpet","2740":"Carpet","2741":"Carpet","2742":"Carpet","2743":"Carpet","2744":"Carpet","2745":"Carpet","2746":"Carpet","2747":"Carpet","2748":"Carpet","2749":"Carpet","2750":"Carpet","2751":"Carpet","2752":"Hardened Clay","2768":"Coal Block","2784":"Packed Ice","2800":"Sunflower","2801":"Lilac","2802":"Double Tallgrass","2803":"Large Fern","2804":"Rose Bush","2805":"Peony","2808":"Sunflower","2809":"Lilac","2810":"Double Tallgrass","2811":"Large Fern","2812":"Rose Bush","2813":"Peony","2816":"Banner","2817":"Banner","2818":"Banner","2819":"Banner","2820":"Banner","2821":"Banner","2822":"Banner","2823":"Banner","2824":"Banner","2825":"Banner","2826":"Banner","2827":"Banner","2828":"Banner","2829":"Banner","2830":"Banner","2831":"Banner","2834":"Wall Banner","2835":"Wall Banner","2836":"Wall Banner","2837":"Wall Banner","2848":"Daylight Sensor","2849":"Daylight Sensor","2850":"Daylight Sensor","2851":"Daylight Sensor","2852":"Daylight Sensor","2853":"Daylight Sensor","2854":"Daylight Sensor","2855":"Daylight Sensor","2856":"Daylight Sensor","2857":"Daylight Sensor","2858":"Daylight Sensor","2859":"Daylight Sensor","2860":"Daylight Sensor","2861":"Daylight Sensor","2862":"Daylight Sensor","2863":"Daylight Sensor","2864":"Red Sandstone","2865":"Chiseled Red Sandstone","2866":"Cut Red Sandstone","2867":"Smooth Red Sandstone","2880":"Red Sandstone Stairs","2881":"Red Sandstone Stairs","2882":"Red Sandstone Stairs","2883":"Red Sandstone Stairs","2884":"Red Sandstone Stairs","2885":"Red Sandstone Stairs","2886":"Red Sandstone Stairs","2887":"Red Sandstone Stairs","2896":"Red Sandstone Slab","2897":"Purpur Slab","2898":"Prismarine Slab","2899":"Dark Prismarine Slab","2900":"Prismarine Bricks Slab","2901":"Mossy Cobblestone Slab","2902":"Smooth Sandstone Slab","2903":"Red Nether Brick Slab","2912":"Red Sandstone Slab","2913":"Purpur Slab","2914":"Prismarine Slab","2915":"Dark Prismarine Slab","2916":"Prismarine Bricks Slab","2917":"Mossy Cobblestone Slab","2918":"Smooth Sandstone Slab","2919":"Red Nether Brick Slab","2920":"Red Sandstone Slab","2921":"Purpur Slab","2922":"Prismarine Slab","2923":"Dark Prismarine Slab","2924":"Prismarine Bricks Slab","2925":"Mossy Cobblestone Slab","2926":"Smooth Sandstone Slab","2927":"Red Nether Brick Slab","2928":"Spruce Fence Gate","2929":"Spruce Fence Gate","2930":"Spruce Fence Gate","2931":"Spruce Fence Gate","2932":"Spruce Fence Gate","2933":"Spruce Fence Gate","2934":"Spruce Fence Gate","2935":"Spruce Fence Gate","2936":"Spruce Fence Gate","2937":"Spruce Fence Gate","2938":"Spruce Fence Gate","2939":"Spruce Fence Gate","2940":"Spruce Fence Gate","2941":"Spruce Fence Gate","2942":"Spruce Fence Gate","2943":"Spruce Fence Gate","2944":"Birch Fence Gate","2945":"Birch Fence Gate","2946":"Birch Fence Gate","2947":"Birch Fence Gate","2948":"Birch Fence Gate","2949":"Birch Fence Gate","2950":"Birch Fence Gate","2951":"Birch Fence Gate","2952":"Birch Fence Gate","2953":"Birch Fence Gate","2954":"Birch Fence Gate","2955":"Birch Fence Gate","2956":"Birch Fence Gate","2957":"Birch Fence Gate","2958":"Birch Fence Gate","2959":"Birch Fence Gate","2960":"Jungle Fence Gate","2961":"Jungle Fence Gate","2962":"Jungle Fence Gate","2963":"Jungle Fence Gate","2964":"Jungle Fence Gate","2965":"Jungle Fence Gate","2966":"Jungle Fence Gate","2967":"Jungle Fence Gate","2968":"Jungle Fence Gate","2969":"Jungle Fence Gate","2970":"Jungle Fence Gate","2971":"Jungle Fence Gate","2972":"Jungle Fence Gate","2973":"Jungle Fence Gate","2974":"Jungle Fence Gate","2975":"Jungle Fence Gate","2976":"Dark Oak Fence Gate","2977":"Dark Oak Fence Gate","2978":"Dark Oak Fence Gate","2979":"Dark Oak Fence Gate","2980":"Dark Oak Fence Gate","2981":"Dark Oak Fence Gate","2982":"Dark Oak Fence Gate","2983":"Dark Oak Fence Gate","2984":"Dark Oak Fence Gate","2985":"Dark Oak Fence Gate","2986":"Dark Oak Fence Gate","2987":"Dark Oak Fence Gate","2988":"Dark Oak Fence Gate","2989":"Dark Oak Fence Gate","2990":"Dark Oak Fence Gate","2991":"Dark Oak Fence Gate","2992":"Acacia Fence Gate","2993":"Acacia Fence Gate","2994":"Acacia Fence Gate","2995":"Acacia Fence Gate","2996":"Acacia Fence Gate","2997":"Acacia Fence Gate","2998":"Acacia Fence Gate","2999":"Acacia Fence Gate","3000":"Acacia Fence Gate","3001":"Acacia Fence Gate","3002":"Acacia Fence Gate","3003":"Acacia Fence Gate","3004":"Acacia Fence Gate","3005":"Acacia Fence Gate","3006":"Acacia Fence Gate","3007":"Acacia Fence Gate","3040":"Hardened Glass Pane","3056":"Stained Hardened Glass Pane","3057":"Stained Hardened Glass Pane","3058":"Stained Hardened Glass Pane","3059":"Stained Hardened Glass Pane","3060":"Stained Hardened Glass Pane","3061":"Stained Hardened Glass Pane","3062":"Stained Hardened Glass Pane","3063":"Stained Hardened Glass Pane","3064":"Stained Hardened Glass Pane","3065":"Stained Hardened Glass Pane","3066":"Stained Hardened Glass Pane","3067":"Stained Hardened Glass Pane","3068":"Stained Hardened Glass Pane","3069":"Stained Hardened Glass Pane","3070":"Stained Hardened Glass Pane","3071":"Stained Hardened Glass Pane","3072":"Heat Block","3088":"Spruce Door","3089":"Spruce Door","3090":"Spruce Door","3091":"Spruce Door","3092":"Spruce Door","3093":"Spruce Door","3094":"Spruce Door","3095":"Spruce Door","3096":"Spruce Door","3097":"Spruce Door","3104":"Birch Door","3105":"Birch Door","3106":"Birch Door","3107":"Birch Door","3108":"Birch Door","3109":"Birch Door","3110":"Birch Door","3111":"Birch Door","3112":"Birch Door","3113":"Birch Door","3120":"Jungle Door","3121":"Jungle Door","3122":"Jungle Door","3123":"Jungle Door","3124":"Jungle Door","3125":"Jungle Door","3126":"Jungle Door","3127":"Jungle Door","3128":"Jungle Door","3129":"Jungle Door","3136":"Acacia Door","3137":"Acacia Door","3138":"Acacia Door","3139":"Acacia Door","3140":"Acacia Door","3141":"Acacia Door","3142":"Acacia Door","3143":"Acacia Door","3144":"Acacia Door","3145":"Acacia Door","3152":"Dark Oak Door","3153":"Dark Oak Door","3154":"Dark Oak Door","3155":"Dark Oak Door","3156":"Dark Oak Door","3157":"Dark Oak Door","3158":"Dark Oak Door","3159":"Dark Oak Door","3160":"Dark Oak Door","3161":"Dark Oak Door","3168":"Grass Path","3184":"Item Frame","3185":"Item Frame","3186":"Item Frame","3187":"Item Frame","3188":"Item Frame","3189":"Item Frame","3190":"Item Frame","3191":"Item Frame","3216":"Purpur Block","3218":"Purpur Pillar","3222":"Purpur Pillar","3226":"Purpur Pillar","3233":"Red Torch","3234":"Red Torch","3235":"Red Torch","3236":"Red Torch","3237":"Red Torch","3241":"Green Torch","3242":"Green Torch","3243":"Green Torch","3244":"Green Torch","3245":"Green Torch","3248":"Purpur Stairs","3249":"Purpur Stairs","3250":"Purpur Stairs","3251":"Purpur Stairs","3252":"Purpur Stairs","3253":"Purpur Stairs","3254":"Purpur Stairs","3255":"Purpur Stairs","3265":"Blue Torch","3266":"Blue Torch","3267":"Blue Torch","3268":"Blue Torch","3269":"Blue Torch","3273":"Purple Torch","3274":"Purple Torch","3275":"Purple Torch","3276":"Purple Torch","3277":"Purple Torch","3280":"Shulker Box","3296":"End Stone Bricks","3312":"Frosted Ice","3313":"Frosted Ice","3314":"Frosted Ice","3315":"Frosted Ice","3328":"End Rod","3329":"End Rod","3330":"End Rod","3331":"End Rod","3332":"End Rod","3333":"End Rod","3408":"Magma Block","3424":"Nether Wart Block","3440":"Red Nether Bricks","3456":"Bone Block","3460":"Bone Block","3464":"Bone Block","3488":"Dyed Shulker Box","3489":"Dyed Shulker Box","3490":"Dyed Shulker Box","3491":"Dyed Shulker Box","3492":"Dyed Shulker Box","3493":"Dyed Shulker Box","3494":"Dyed Shulker Box","3495":"Dyed Shulker Box","3496":"Dyed Shulker Box","3497":"Dyed Shulker Box","3498":"Dyed Shulker Box","3499":"Dyed Shulker Box","3500":"Dyed Shulker Box","3501":"Dyed Shulker Box","3502":"Dyed Shulker Box","3503":"Dyed Shulker Box","3506":"Purple Glazed Terracotta","3507":"Purple Glazed Terracotta","3508":"Purple Glazed Terracotta","3509":"Purple Glazed Terracotta","3522":"White Glazed Terracotta","3523":"White Glazed Terracotta","3524":"White Glazed Terracotta","3525":"White Glazed Terracotta","3538":"Orange Glazed Terracotta","3539":"Orange Glazed Terracotta","3540":"Orange Glazed Terracotta","3541":"Orange Glazed Terracotta","3554":"Magenta Glazed Terracotta","3555":"Magenta Glazed Terracotta","3556":"Magenta Glazed Terracotta","3557":"Magenta Glazed Terracotta","3570":"Light Blue Glazed Terracotta","3571":"Light Blue Glazed Terracotta","3572":"Light Blue Glazed Terracotta","3573":"Light Blue Glazed Terracotta","3586":"Yellow Glazed Terracotta","3587":"Yellow Glazed Terracotta","3588":"Yellow Glazed Terracotta","3589":"Yellow Glazed Terracotta","3602":"Lime Glazed Terracotta","3603":"Lime Glazed Terracotta","3604":"Lime Glazed Terracotta","3605":"Lime Glazed Terracotta","3618":"Pink Glazed Terracotta","3619":"Pink Glazed Terracotta","3620":"Pink Glazed Terracotta","3621":"Pink Glazed Terracotta","3634":"Gray Glazed Terracotta","3635":"Gray Glazed Terracotta","3636":"Gray Glazed Terracotta","3637":"Gray Glazed Terracotta","3650":"Light Gray Glazed Terracotta","3651":"Light Gray Glazed Terracotta","3652":"Light Gray Glazed Terracotta","3653":"Light Gray Glazed Terracotta","3666":"Cyan Glazed Terracotta","3667":"Cyan Glazed Terracotta","3668":"Cyan Glazed Terracotta","3669":"Cyan Glazed Terracotta","3698":"Blue Glazed Terracotta","3699":"Blue Glazed Terracotta","3700":"Blue Glazed Terracotta","3701":"Blue Glazed Terracotta","3714":"Brown Glazed Terracotta","3715":"Brown Glazed Terracotta","3716":"Brown Glazed Terracotta","3717":"Brown Glazed Terracotta","3730":"Green Glazed Terracotta","3731":"Green Glazed Terracotta","3732":"Green Glazed Terracotta","3733":"Green Glazed Terracotta","3746":"Red Glazed Terracotta","3747":"Red Glazed Terracotta","3748":"Red Glazed Terracotta","3749":"Red Glazed Terracotta","3762":"Black Glazed Terracotta","3763":"Black Glazed Terracotta","3764":"Black Glazed Terracotta","3765":"Black Glazed Terracotta","3776":"Concrete","3777":"Concrete","3778":"Concrete","3779":"Concrete","3780":"Concrete","3781":"Concrete","3782":"Concrete","3783":"Concrete","3784":"Concrete","3785":"Concrete","3786":"Concrete","3787":"Concrete","3788":"Concrete","3789":"Concrete","3790":"Concrete","3791":"Concrete","3792":"Concrete Powder","3793":"Concrete Powder","3794":"Concrete Powder","3795":"Concrete Powder","3796":"Concrete Powder","3797":"Concrete Powder","3798":"Concrete Powder","3799":"Concrete Powder","3800":"Concrete Powder","3801":"Concrete Powder","3802":"Concrete Powder","3803":"Concrete Powder","3804":"Concrete Powder","3805":"Concrete Powder","3806":"Concrete Powder","3807":"Concrete Powder","3808":"Compound Creator","3809":"Compound Creator","3810":"Compound Creator","3811":"Compound Creator","3812":"Material Reducer","3813":"Material Reducer","3814":"Material Reducer","3815":"Material Reducer","3816":"Element Constructor","3817":"Element Constructor","3818":"Element Constructor","3819":"Element Constructor","3820":"Lab Table","3821":"Lab Table","3822":"Lab Table","3823":"Lab Table","3825":"Underwater Torch","3826":"Underwater Torch","3827":"Underwater Torch","3828":"Underwater Torch","3829":"Underwater Torch","3856":"Stained Glass","3857":"Stained Glass","3858":"Stained Glass","3859":"Stained Glass","3860":"Stained Glass","3861":"Stained Glass","3862":"Stained Glass","3863":"Stained Glass","3864":"Stained Glass","3865":"Stained Glass","3866":"Stained Glass","3867":"Stained Glass","3868":"Stained Glass","3869":"Stained Glass","3870":"Stained Glass","3871":"Stained Glass","3888":"Podzol","3904":"Beetroot Block","3905":"Beetroot Block","3906":"Beetroot Block","3907":"Beetroot Block","3908":"Beetroot Block","3909":"Beetroot Block","3910":"Beetroot Block","3911":"Beetroot Block","3920":"Legacy Stonecutter","3936":"Glowing Obsidian","3952":"Nether Reactor Core","3968":"update!","3984":"ate!upd","4048":"Hardened Glass","4064":"Stained Hardened Glass","4065":"Stained Hardened Glass","4066":"Stained Hardened Glass","4067":"Stained Hardened Glass","4068":"Stained Hardened Glass","4069":"Stained Hardened Glass","4070":"Stained Hardened Glass","4071":"Stained Hardened Glass","4072":"Stained Hardened Glass","4073":"Stained Hardened Glass","4074":"Stained Hardened Glass","4075":"Stained Hardened Glass","4076":"Stained Hardened Glass","4077":"Stained Hardened Glass","4078":"Stained Hardened Glass","4079":"Stained Hardened Glass","4080":"reserved6","4112":"Prismarine Stairs","4113":"Prismarine Stairs","4114":"Prismarine Stairs","4115":"Prismarine Stairs","4116":"Prismarine Stairs","4117":"Prismarine Stairs","4118":"Prismarine Stairs","4119":"Prismarine Stairs","4128":"Dark Prismarine Stairs","4129":"Dark Prismarine Stairs","4130":"Dark Prismarine Stairs","4131":"Dark Prismarine Stairs","4132":"Dark Prismarine Stairs","4133":"Dark Prismarine Stairs","4134":"Dark Prismarine Stairs","4135":"Dark Prismarine Stairs","4144":"Prismarine Bricks Stairs","4145":"Prismarine Bricks Stairs","4146":"Prismarine Bricks Stairs","4147":"Prismarine Bricks Stairs","4148":"Prismarine Bricks Stairs","4149":"Prismarine Bricks Stairs","4150":"Prismarine Bricks Stairs","4151":"Prismarine Bricks Stairs","4160":"Stripped Spruce Log","4161":"Stripped Spruce Log","4162":"Stripped Spruce Log","4176":"Stripped Birch Log","4177":"Stripped Birch Log","4178":"Stripped Birch Log","4192":"Stripped Jungle Log","4193":"Stripped Jungle Log","4194":"Stripped Jungle Log","4208":"Stripped Acacia Log","4209":"Stripped Acacia Log","4210":"Stripped Acacia Log","4224":"Stripped Dark Oak Log","4225":"Stripped Dark Oak Log","4226":"Stripped Dark Oak Log","4240":"Stripped Oak Log","4241":"Stripped Oak Log","4242":"Stripped Oak Log","4256":"Blue Ice","4272":"Hydrogen","4288":"Helium","4304":"Lithium","4320":"Beryllium","4336":"Boron","4352":"Carbon","4368":"Nitrogen","4384":"Oxygen","4400":"Fluorine","4416":"Neon","4432":"Sodium","4448":"Magnesium","4464":"Aluminum","4480":"Silicon","4496":"Phosphorus","4512":"Sulfur","4528":"Chlorine","4544":"Argon","4560":"Potassium","4576":"Calcium","4592":"Scandium","4608":"Titanium","4624":"Vanadium","4640":"Chromium","4656":"Manganese","4672":"Iron","4688":"Cobalt","4704":"Nickel","4720":"Copper","4736":"Zinc","4752":"Gallium","4768":"Germanium","4784":"Arsenic","4800":"Selenium","4816":"Bromine","4832":"Krypton","4848":"Rubidium","4864":"Strontium","4880":"Yttrium","4896":"Zirconium","4912":"Niobium","4928":"Molybdenum","4944":"Technetium","4960":"Ruthenium","4976":"Rhodium","4992":"Palladium","5008":"Silver","5024":"Cadmium","5040":"Indium","5056":"Tin","5072":"Antimony","5088":"Tellurium","5104":"Iodine","5120":"Xenon","5136":"Cesium","5152":"Barium","5168":"Lanthanum","5184":"Cerium","5200":"Praseodymium","5216":"Neodymium","5232":"Promethium","5248":"Samarium","5264":"Europium","5280":"Gadolinium","5296":"Terbium","5312":"Dysprosium","5328":"Holmium","5344":"Erbium","5360":"Thulium","5376":"Ytterbium","5392":"Lutetium","5408":"Hafnium","5424":"Tantalum","5440":"Tungsten","5456":"Rhenium","5472":"Osmium","5488":"Iridium","5504":"Platinum","5520":"Gold","5536":"Mercury","5552":"Thallium","5568":"Lead","5584":"Bismuth","5600":"Polonium","5616":"Astatine","5632":"Radon","5648":"Francium","5664":"Radium","5680":"Actinium","5696":"Thorium","5712":"Protactinium","5728":"Uranium","5744":"Neptunium","5760":"Plutonium","5776":"Americium","5792":"Curium","5808":"Berkelium","5824":"Californium","5840":"Einsteinium","5856":"Fermium","5872":"Mendelevium","5888":"Nobelium","5904":"Lawrencium","5920":"Rutherfordium","5936":"Dubnium","5952":"Seaborgium","5968":"Bohrium","5984":"Hassium","6000":"Meitnerium","6016":"Darmstadtium","6032":"Roentgenium","6048":"Copernicium","6064":"Nihonium","6080":"Flerovium","6096":"Moscovium","6112":"Livermorium","6128":"Tennessine","6144":"Oganesson","6176":"Coral","6177":"Coral","6178":"Coral","6179":"Coral","6180":"Coral","6192":"Coral Block","6193":"Coral Block","6194":"Coral Block","6195":"Coral Block","6196":"Coral Block","6200":"Coral Block","6201":"Coral Block","6202":"Coral Block","6203":"Coral Block","6204":"Coral Block","6208":"Coral Fan","6209":"Coral Fan","6210":"Coral Fan","6211":"Coral Fan","6212":"Coral Fan","6216":"Coral Fan","6217":"Coral Fan","6218":"Coral Fan","6219":"Coral Fan","6220":"Coral Fan","6224":"Coral Fan","6225":"Coral Fan","6226":"Coral Fan","6227":"Coral Fan","6228":"Coral Fan","6232":"Coral Fan","6233":"Coral Fan","6234":"Coral Fan","6235":"Coral Fan","6236":"Coral Fan","6240":"Wall Coral Fan","6241":"Wall Coral Fan","6242":"Wall Coral Fan","6243":"Wall Coral Fan","6244":"Wall Coral Fan","6245":"Wall Coral Fan","6246":"Wall Coral Fan","6247":"Wall Coral Fan","6248":"Wall Coral Fan","6249":"Wall Coral Fan","6250":"Wall Coral Fan","6251":"Wall Coral Fan","6252":"Wall Coral Fan","6253":"Wall Coral Fan","6254":"Wall Coral Fan","6255":"Wall Coral Fan","6256":"Wall Coral Fan","6257":"Wall Coral Fan","6258":"Wall Coral Fan","6259":"Wall Coral Fan","6260":"Wall Coral Fan","6261":"Wall Coral Fan","6262":"Wall Coral Fan","6263":"Wall Coral Fan","6264":"Wall Coral Fan","6265":"Wall Coral Fan","6266":"Wall Coral Fan","6267":"Wall Coral Fan","6268":"Wall Coral Fan","6269":"Wall Coral Fan","6270":"Wall Coral Fan","6271":"Wall Coral Fan","6272":"Wall Coral Fan","6274":"Wall Coral Fan","6276":"Wall Coral Fan","6278":"Wall Coral Fan","6280":"Wall Coral Fan","6282":"Wall Coral Fan","6284":"Wall Coral Fan","6286":"Wall Coral Fan","6304":"Dried Kelp Block","6320":"Acacia Button","6321":"Acacia Button","6322":"Acacia Button","6323":"Acacia Button","6324":"Acacia Button","6325":"Acacia Button","6328":"Acacia Button","6329":"Acacia Button","6330":"Acacia Button","6331":"Acacia Button","6332":"Acacia Button","6333":"Acacia Button","6336":"Birch Button","6337":"Birch Button","6338":"Birch Button","6339":"Birch Button","6340":"Birch Button","6341":"Birch Button","6344":"Birch Button","6345":"Birch Button","6346":"Birch Button","6347":"Birch Button","6348":"Birch Button","6349":"Birch Button","6352":"Dark Oak Button","6353":"Dark Oak Button","6354":"Dark Oak Button","6355":"Dark Oak Button","6356":"Dark Oak Button","6357":"Dark Oak Button","6360":"Dark Oak Button","6361":"Dark Oak Button","6362":"Dark Oak Button","6363":"Dark Oak Button","6364":"Dark Oak Button","6365":"Dark Oak Button","6368":"Jungle Button","6369":"Jungle Button","6370":"Jungle Button","6371":"Jungle Button","6372":"Jungle Button","6373":"Jungle Button","6376":"Jungle Button","6377":"Jungle Button","6378":"Jungle Button","6379":"Jungle Button","6380":"Jungle Button","6381":"Jungle Button","6384":"Spruce Button","6385":"Spruce Button","6386":"Spruce Button","6387":"Spruce Button","6388":"Spruce Button","6389":"Spruce Button","6392":"Spruce Button","6393":"Spruce Button","6394":"Spruce Button","6395":"Spruce Button","6396":"Spruce Button","6397":"Spruce Button","6400":"Acacia Trapdoor","6401":"Acacia Trapdoor","6402":"Acacia Trapdoor","6403":"Acacia Trapdoor","6404":"Acacia Trapdoor","6405":"Acacia Trapdoor","6406":"Acacia Trapdoor","6407":"Acacia Trapdoor","6408":"Acacia Trapdoor","6409":"Acacia Trapdoor","6410":"Acacia Trapdoor","6411":"Acacia Trapdoor","6412":"Acacia Trapdoor","6413":"Acacia Trapdoor","6414":"Acacia Trapdoor","6415":"Acacia Trapdoor","6416":"Birch Trapdoor","6417":"Birch Trapdoor","6418":"Birch Trapdoor","6419":"Birch Trapdoor","6420":"Birch Trapdoor","6421":"Birch Trapdoor","6422":"Birch Trapdoor","6423":"Birch Trapdoor","6424":"Birch Trapdoor","6425":"Birch Trapdoor","6426":"Birch Trapdoor","6427":"Birch Trapdoor","6428":"Birch Trapdoor","6429":"Birch Trapdoor","6430":"Birch Trapdoor","6431":"Birch Trapdoor","6432":"Dark Oak Trapdoor","6433":"Dark Oak Trapdoor","6434":"Dark Oak Trapdoor","6435":"Dark Oak Trapdoor","6436":"Dark Oak Trapdoor","6437":"Dark Oak Trapdoor","6438":"Dark Oak Trapdoor","6439":"Dark Oak Trapdoor","6440":"Dark Oak Trapdoor","6441":"Dark Oak Trapdoor","6442":"Dark Oak Trapdoor","6443":"Dark Oak Trapdoor","6444":"Dark Oak Trapdoor","6445":"Dark Oak Trapdoor","6446":"Dark Oak Trapdoor","6447":"Dark Oak Trapdoor","6448":"Jungle Trapdoor","6449":"Jungle Trapdoor","6450":"Jungle Trapdoor","6451":"Jungle Trapdoor","6452":"Jungle Trapdoor","6453":"Jungle Trapdoor","6454":"Jungle Trapdoor","6455":"Jungle Trapdoor","6456":"Jungle Trapdoor","6457":"Jungle Trapdoor","6458":"Jungle Trapdoor","6459":"Jungle Trapdoor","6460":"Jungle Trapdoor","6461":"Jungle Trapdoor","6462":"Jungle Trapdoor","6463":"Jungle Trapdoor","6464":"Spruce Trapdoor","6465":"Spruce Trapdoor","6466":"Spruce Trapdoor","6467":"Spruce Trapdoor","6468":"Spruce Trapdoor","6469":"Spruce Trapdoor","6470":"Spruce Trapdoor","6471":"Spruce Trapdoor","6472":"Spruce Trapdoor","6473":"Spruce Trapdoor","6474":"Spruce Trapdoor","6475":"Spruce Trapdoor","6476":"Spruce Trapdoor","6477":"Spruce Trapdoor","6478":"Spruce Trapdoor","6479":"Spruce Trapdoor","6480":"Acacia Pressure Plate","6481":"Acacia Pressure Plate","6496":"Birch Pressure Plate","6497":"Birch Pressure Plate","6512":"Dark Oak Pressure Plate","6513":"Dark Oak Pressure Plate","6528":"Jungle Pressure Plate","6529":"Jungle Pressure Plate","6544":"Spruce Pressure Plate","6545":"Spruce Pressure Plate","6560":"Carved Pumpkin","6561":"Carved Pumpkin","6562":"Carved Pumpkin","6563":"Carved Pumpkin","6576":"Sea Pickle","6577":"Sea Pickle","6578":"Sea Pickle","6579":"Sea Pickle","6580":"Sea Pickle","6581":"Sea Pickle","6582":"Sea Pickle","6583":"Sea Pickle","6656":"Barrier","6672":"End Stone Brick Slab","6673":"Smooth Red Sandstone Slab","6674":"Polished Andesite Slab","6675":"Andesite Slab","6676":"Diorite Slab","6677":"Polished Diorite Slab","6678":"Granite Slab","6679":"Polished Granite Slab","6680":"End Stone Brick Slab","6681":"Smooth Red Sandstone Slab","6682":"Polished Andesite Slab","6683":"Andesite Slab","6684":"Diorite Slab","6685":"Polished Diorite Slab","6686":"Granite Slab","6687":"Polished Granite Slab","6688":"Bamboo","6689":"Bamboo","6690":"Bamboo","6691":"Bamboo","6692":"Bamboo","6693":"Bamboo","6696":"Bamboo","6697":"Bamboo","6698":"Bamboo","6699":"Bamboo","6700":"Bamboo","6701":"Bamboo","6704":"Bamboo Sapling","6705":"Bamboo Sapling","6736":"Mossy Stone Brick Slab","6737":"Smooth Quartz Slab","6738":"Stone Slab","6739":"Cut Sandstone Slab","6740":"Cut Red Sandstone Slab","6744":"Mossy Stone Brick Slab","6745":"Smooth Quartz Slab","6746":"Stone Slab","6747":"Cut Sandstone Slab","6748":"Cut Red Sandstone Slab","6752":"End Stone Brick Slab","6753":"Smooth Red Sandstone Slab","6754":"Polished Andesite Slab","6755":"Andesite Slab","6756":"Diorite Slab","6757":"Polished Diorite Slab","6758":"Granite Slab","6759":"Polished Granite Slab","6768":"Mossy Stone Brick Slab","6769":"Smooth Quartz Slab","6770":"Stone Slab","6771":"Cut Sandstone Slab","6772":"Cut Red Sandstone Slab","6784":"Granite Stairs","6785":"Granite Stairs","6786":"Granite Stairs","6787":"Granite Stairs","6788":"Granite Stairs","6789":"Granite Stairs","6790":"Granite Stairs","6791":"Granite Stairs","6800":"Diorite Stairs","6801":"Diorite Stairs","6802":"Diorite Stairs","6803":"Diorite Stairs","6804":"Diorite Stairs","6805":"Diorite Stairs","6806":"Diorite Stairs","6807":"Diorite Stairs","6816":"Andesite Stairs","6817":"Andesite Stairs","6818":"Andesite Stairs","6819":"Andesite Stairs","6820":"Andesite Stairs","6821":"Andesite Stairs","6822":"Andesite Stairs","6823":"Andesite Stairs","6832":"Polished Granite Stairs","6833":"Polished Granite Stairs","6834":"Polished Granite Stairs","6835":"Polished Granite Stairs","6836":"Polished Granite Stairs","6837":"Polished Granite Stairs","6838":"Polished Granite Stairs","6839":"Polished Granite Stairs","6848":"Polished Diorite Stairs","6849":"Polished Diorite Stairs","6850":"Polished Diorite Stairs","6851":"Polished Diorite Stairs","6852":"Polished Diorite Stairs","6853":"Polished Diorite Stairs","6854":"Polished Diorite Stairs","6855":"Polished Diorite Stairs","6864":"Polished Andesite Stairs","6865":"Polished Andesite Stairs","6866":"Polished Andesite Stairs","6867":"Polished Andesite Stairs","6868":"Polished Andesite Stairs","6869":"Polished Andesite Stairs","6870":"Polished Andesite Stairs","6871":"Polished Andesite Stairs","6880":"Mossy Stone Brick Stairs","6881":"Mossy Stone Brick Stairs","6882":"Mossy Stone Brick Stairs","6883":"Mossy Stone Brick Stairs","6884":"Mossy Stone Brick Stairs","6885":"Mossy Stone Brick Stairs","6886":"Mossy Stone Brick Stairs","6887":"Mossy Stone Brick Stairs","6896":"Smooth Red Sandstone Stairs","6897":"Smooth Red Sandstone Stairs","6898":"Smooth Red Sandstone Stairs","6899":"Smooth Red Sandstone Stairs","6900":"Smooth Red Sandstone Stairs","6901":"Smooth Red Sandstone Stairs","6902":"Smooth Red Sandstone Stairs","6903":"Smooth Red Sandstone Stairs","6912":"Smooth Sandstone Stairs","6913":"Smooth Sandstone Stairs","6914":"Smooth Sandstone Stairs","6915":"Smooth Sandstone Stairs","6916":"Smooth Sandstone Stairs","6917":"Smooth Sandstone Stairs","6918":"Smooth Sandstone Stairs","6919":"Smooth Sandstone Stairs","6928":"End Stone Brick Stairs","6929":"End Stone Brick Stairs","6930":"End Stone Brick Stairs","6931":"End Stone Brick Stairs","6932":"End Stone Brick Stairs","6933":"End Stone Brick Stairs","6934":"End Stone Brick Stairs","6935":"End Stone Brick Stairs","6944":"Mossy Cobblestone Stairs","6945":"Mossy Cobblestone Stairs","6946":"Mossy Cobblestone Stairs","6947":"Mossy Cobblestone Stairs","6948":"Mossy Cobblestone Stairs","6949":"Mossy Cobblestone Stairs","6950":"Mossy Cobblestone Stairs","6951":"Mossy Cobblestone Stairs","6960":"Stone Stairs","6961":"Stone Stairs","6962":"Stone Stairs","6963":"Stone Stairs","6964":"Stone Stairs","6965":"Stone Stairs","6966":"Stone Stairs","6967":"Stone Stairs","6976":"Spruce Sign","6977":"Spruce Sign","6978":"Spruce Sign","6979":"Spruce Sign","6980":"Spruce Sign","6981":"Spruce Sign","6982":"Spruce Sign","6983":"Spruce Sign","6984":"Spruce Sign","6985":"Spruce Sign","6986":"Spruce Sign","6987":"Spruce Sign","6988":"Spruce Sign","6989":"Spruce Sign","6990":"Spruce Sign","6991":"Spruce Sign","6994":"Spruce Wall Sign","6995":"Spruce Wall Sign","6996":"Spruce Wall Sign","6997":"Spruce Wall Sign","7008":"Smooth Stone","7024":"Red Nether Brick Stairs","7025":"Red Nether Brick Stairs","7026":"Red Nether Brick Stairs","7027":"Red Nether Brick Stairs","7028":"Red Nether Brick Stairs","7029":"Red Nether Brick Stairs","7030":"Red Nether Brick Stairs","7031":"Red Nether Brick Stairs","7040":"Smooth Quartz Stairs","7041":"Smooth Quartz Stairs","7042":"Smooth Quartz Stairs","7043":"Smooth Quartz Stairs","7044":"Smooth Quartz Stairs","7045":"Smooth Quartz Stairs","7046":"Smooth Quartz Stairs","7047":"Smooth Quartz Stairs","7056":"Birch Sign","7057":"Birch Sign","7058":"Birch Sign","7059":"Birch Sign","7060":"Birch Sign","7061":"Birch Sign","7062":"Birch Sign","7063":"Birch Sign","7064":"Birch Sign","7065":"Birch Sign","7066":"Birch Sign","7067":"Birch Sign","7068":"Birch Sign","7069":"Birch Sign","7070":"Birch Sign","7071":"Birch Sign","7074":"Birch Wall Sign","7075":"Birch Wall Sign","7076":"Birch Wall Sign","7077":"Birch Wall Sign","7088":"Jungle Sign","7089":"Jungle Sign","7090":"Jungle Sign","7091":"Jungle Sign","7092":"Jungle Sign","7093":"Jungle Sign","7094":"Jungle Sign","7095":"Jungle Sign","7096":"Jungle Sign","7097":"Jungle Sign","7098":"Jungle Sign","7099":"Jungle Sign","7100":"Jungle Sign","7101":"Jungle Sign","7102":"Jungle Sign","7103":"Jungle Sign","7106":"Jungle Wall Sign","7107":"Jungle Wall Sign","7108":"Jungle Wall Sign","7109":"Jungle Wall Sign","7120":"Acacia Sign","7121":"Acacia Sign","7122":"Acacia Sign","7123":"Acacia Sign","7124":"Acacia Sign","7125":"Acacia Sign","7126":"Acacia Sign","7127":"Acacia Sign","7128":"Acacia Sign","7129":"Acacia Sign","7130":"Acacia Sign","7131":"Acacia Sign","7132":"Acacia Sign","7133":"Acacia Sign","7134":"Acacia Sign","7135":"Acacia Sign","7138":"Acacia Wall Sign","7139":"Acacia Wall Sign","7140":"Acacia Wall Sign","7141":"Acacia Wall Sign","7152":"Dark Oak Sign","7153":"Dark Oak Sign","7154":"Dark Oak Sign","7155":"Dark Oak Sign","7156":"Dark Oak Sign","7157":"Dark Oak Sign","7158":"Dark Oak Sign","7159":"Dark Oak Sign","7160":"Dark Oak Sign","7161":"Dark Oak Sign","7162":"Dark Oak Sign","7163":"Dark Oak Sign","7164":"Dark Oak Sign","7165":"Dark Oak Sign","7166":"Dark Oak Sign","7167":"Dark Oak Sign","7170":"Dark Oak Wall Sign","7171":"Dark Oak Wall Sign","7172":"Dark Oak Wall Sign","7173":"Dark Oak Wall Sign","7184":"Lectern","7185":"Lectern","7186":"Lectern","7187":"Lectern","7188":"Lectern","7189":"Lectern","7190":"Lectern","7191":"Lectern","7218":"Blast Furnace","7219":"Blast Furnace","7220":"Blast Furnace","7221":"Blast Furnace","7234":"Stonecutter","7235":"Stonecutter","7236":"Stonecutter","7237":"Stonecutter","7250":"Smoker","7251":"Smoker","7252":"Smoker","7253":"Smoker","7266":"Smoker","7267":"Smoker","7268":"Smoker","7269":"Smoker","7296":"Fletching Table","7328":"Barrel","7329":"Barrel","7330":"Barrel","7331":"Barrel","7332":"Barrel","7333":"Barrel","7336":"Barrel","7337":"Barrel","7338":"Barrel","7339":"Barrel","7340":"Barrel","7341":"Barrel","7344":"Loom","7345":"Loom","7346":"Loom","7347":"Loom","7376":"Bell","7377":"Bell","7378":"Bell","7379":"Bell","7380":"Bell","7381":"Bell","7382":"Bell","7383":"Bell","7384":"Bell","7385":"Bell","7386":"Bell","7387":"Bell","7388":"Bell","7389":"Bell","7390":"Bell","7391":"Bell","7392":"Sweet Berry Bush","7393":"Sweet Berry Bush","7394":"Sweet Berry Bush","7395":"Sweet Berry Bush","7408":"Lantern","7409":"Lantern","7472":"Oak Wood","7473":"Spruce Wood","7474":"Birch Wood","7475":"Jungle Wood","7476":"Acacia Wood","7477":"Dark Oak Wood","7480":"Stripped Oak Wood","7481":"Stripped Spruce Wood","7482":"Stripped Birch Wood","7483":"Stripped Jungle Wood","7484":"Stripped Acacia Wood","7485":"Stripped Dark Oak Wood","7506":"Blast Furnace","7507":"Blast Furnace","7508":"Blast Furnace","7509":"Blast Furnace"},"remaps":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"23":16,"24":16,"25":16,"26":16,"27":16,"28":16,"29":16,"30":16,"31":16,"33":32,"34":32,"35":32,"36":32,"37":32,"38":32,"39":32,"40":32,"41":32,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"50":48,"51":48,"52":48,"53":48,"54":48,"55":48,"56":48,"57":48,"58":48,"59":48,"60":48,"61":48,"62":48,"63":48,"65":64,"66":64,"67":64,"68":64,"69":64,"70":64,"71":64,"72":64,"73":64,"74":64,"75":64,"76":64,"77":64,"78":64,"79":64,"86":80,"87":80,"88":80,"89":80,"90":80,"91":80,"92":80,"93":80,"94":80,"95":80,"102":96,"103":96,"110":96,"111":96,"114":112,"115":112,"116":112,"117":112,"118":112,"119":112,"120":112,"121":112,"122":112,"123":112,"124":112,"125":112,"126":112,"127":112,"194":192,"195":192,"196":192,"197":192,"198":192,"199":192,"200":192,"201":192,"202":192,"203":192,"204":192,"205":192,"206":192,"207":192,"209":208,"210":208,"211":208,"212":208,"213":208,"214":208,"215":208,"216":208,"217":208,"218":208,"219":208,"220":208,"221":208,"222":208,"223":208,"225":224,"226":224,"227":224,"228":224,"229":224,"230":224,"231":224,"232":224,"233":224,"234":224,"235":224,"236":224,"237":224,"238":224,"239":224,"241":240,"242":240,"243":240,"244":240,"245":240,"246":240,"247":240,"248":240,"249":240,"250":240,"251":240,"252":240,"253":240,"254":240,"255":240,"257":256,"258":256,"259":256,"260":256,"261":256,"262":256,"263":256,"264":256,"265":256,"266":256,"267":256,"268":256,"269":256,"270":256,"271":256,"284":7472,"285":7473,"286":7474,"287":7475,"306":304,"307":304,"308":304,"309":304,"310":304,"311":304,"312":304,"313":304,"314":304,"315":304,"316":304,"317":304,"318":304,"319":304,"321":320,"322":320,"323":320,"324":320,"325":320,"326":320,"327":320,"328":320,"329":320,"330":320,"331":320,"332":320,"333":320,"334":320,"335":320,"337":336,"338":336,"339":336,"340":336,"341":336,"342":336,"343":336,"344":336,"345":336,"346":336,"347":336,"348":336,"349":336,"350":336,"351":336,"353":352,"354":352,"355":352,"356":352,"357":352,"358":352,"359":352,"360":352,"361":352,"362":352,"363":352,"364":352,"365":352,"366":352,"367":352,"388":384,"389":384,"390":384,"391":384,"392":384,"393":384,"394":384,"395":384,"396":384,"397":384,"398":384,"399":384,"401":400,"402":400,"403":400,"404":400,"405":400,"406":400,"407":400,"408":400,"409":400,"410":400,"411":400,"412":400,"413":400,"414":400,"415":400,"438":432,"439":432,"446":432,"447":432,"454":448,"455":448,"462":448,"463":448,"481":480,"482":480,"483":480,"484":480,"485":480,"486":480,"487":480,"488":480,"489":480,"490":480,"491":480,"492":480,"493":480,"494":480,"495":480,"496":498,"499":498,"500":498,"501":498,"502":498,"503":498,"504":498,"505":498,"506":498,"507":498,"508":498,"509":498,"510":498,"511":498,"513":512,"514":512,"515":512,"516":512,"517":512,"518":512,"519":512,"520":512,"521":512,"522":512,"523":512,"524":512,"525":512,"526":512,"527":512,"577":576,"578":576,"579":576,"580":576,"581":576,"582":576,"583":576,"584":576,"585":576,"586":576,"587":576,"588":576,"589":576,"590":576,"591":576,"593":592,"594":592,"595":592,"596":592,"597":592,"598":592,"599":592,"600":592,"601":592,"602":592,"603":592,"604":592,"605":592,"606":592,"607":592,"619":608,"620":608,"621":608,"622":608,"623":608,"625":624,"626":624,"627":624,"628":624,"629":624,"630":624,"631":624,"632":624,"633":624,"634":624,"635":624,"636":624,"637":624,"638":624,"639":624,"641":640,"642":640,"643":640,"644":640,"645":640,"646":640,"647":640,"648":640,"649":640,"650":640,"651":640,"652":640,"653":640,"654":640,"655":640,"657":656,"658":656,"659":656,"660":656,"661":656,"662":656,"663":656,"664":656,"665":656,"666":656,"667":656,"668":656,"669":656,"670":656,"671":656,"673":672,"674":672,"675":672,"676":672,"677":672,"678":672,"679":672,"680":672,"681":672,"682":672,"683":672,"684":672,"685":672,"686":672,"687":672,"696":688,"697":689,"698":690,"699":691,"700":692,"701":693,"702":694,"703":695,"721":720,"722":720,"723":720,"724":720,"725":720,"726":720,"727":720,"728":720,"729":720,"730":720,"731":720,"732":720,"733":720,"734":720,"735":720,"740":736,"741":736,"742":736,"743":736,"744":736,"745":736,"746":736,"747":736,"748":736,"749":736,"750":736,"751":736,"753":752,"754":752,"755":752,"756":752,"757":752,"758":752,"759":752,"760":752,"761":752,"762":752,"763":752,"764":752,"765":752,"766":752,"767":752,"769":768,"770":768,"771":768,"772":768,"773":768,"774":768,"775":768,"776":768,"777":768,"778":768,"779":768,"780":768,"781":768,"782":768,"783":768,"785":784,"786":784,"787":784,"788":784,"789":784,"790":784,"791":784,"792":784,"793":784,"794":784,"795":784,"796":784,"797":784,"798":784,"799":784,"800":805,"806":805,"807":805,"808":805,"809":805,"810":805,"811":805,"812":805,"813":805,"814":805,"815":805,"833":832,"834":832,"835":832,"836":832,"837":832,"838":832,"839":832,"840":832,"841":832,"842":832,"843":832,"844":832,"845":832,"846":832,"847":832,"856":851,"857":851,"858":851,"859":851,"860":851,"861":851,"862":851,"863":851,"864":866,"865":866,"870":866,"871":866,"872":866,"873":866,"874":866,"875":866,"876":866,"877":866,"878":866,"879":866,"897":896,"898":896,"899":896,"900":896,"901":896,"902":896,"903":896,"904":896,"905":896,"906":896,"907":896,"908":896,"909":896,"910":896,"911":896,"913":912,"914":912,"915":912,"916":912,"917":912,"918":912,"919":912,"920":912,"921":912,"922":912,"923":912,"924":912,"925":912,"926":912,"927":912,"929":928,"930":928,"931":928,"932":928,"933":928,"934":928,"935":928,"936":928,"937":928,"938":928,"939":928,"940":928,"941":928,"942":928,"943":928,"952":944,"953":944,"954":944,"955":944,"956":944,"957":944,"958":944,"959":944,"968":960,"969":960,"970":960,"971":960,"972":960,"973":960,"974":960,"975":960,"976":978,"977":978,"982":978,"983":978,"984":978,"985":978,"986":978,"987":978,"988":978,"989":978,"990":978,"991":978,"992":978,"993":978,"998":978,"999":978,"1000":978,"1001":978,"1002":978,"1003":978,"1004":978,"1005":978,"1006":978,"1007":978,"1034":1027,"1035":1027,"1036":1027,"1037":1027,"1038":1027,"1039":1027,"1040":1042,"1041":1042,"1046":1042,"1047":1042,"1048":1042,"1049":1042,"1050":1042,"1051":1042,"1052":1042,"1053":1042,"1054":1042,"1055":1042,"1066":1056,"1067":1056,"1068":1056,"1069":1056,"1070":1056,"1071":1056,"1080":1075,"1081":1075,"1082":1075,"1083":1075,"1084":1075,"1085":1075,"1086":1075,"1087":1075,"1088":1090,"1089":1090,"1094":1090,"1095":1090,"1096":1090,"1097":1090,"1098":1090,"1099":1090,"1100":1090,"1101":1090,"1102":1090,"1103":1090,"1122":1120,"1123":1120,"1124":1120,"1125":1120,"1126":1120,"1127":1120,"1128":1120,"1129":1120,"1130":1120,"1131":1120,"1132":1120,"1133":1120,"1134":1120,"1135":1120,"1146":1139,"1147":1139,"1148":1139,"1149":1139,"1150":1139,"1151":1139,"1154":1152,"1155":1152,"1156":1152,"1157":1152,"1158":1152,"1159":1152,"1160":1152,"1161":1152,"1162":1152,"1163":1152,"1164":1152,"1165":1152,"1166":1152,"1167":1152,"1169":1168,"1170":1168,"1171":1168,"1172":1168,"1173":1168,"1174":1168,"1175":1168,"1176":1168,"1177":1168,"1178":1168,"1179":1168,"1180":1168,"1181":1168,"1182":1168,"1183":1168,"1185":1168,"1186":1168,"1187":1168,"1188":1168,"1189":1168,"1190":1168,"1191":1168,"1192":1168,"1193":1168,"1194":1168,"1195":1168,"1196":1168,"1197":1168,"1198":1168,"1199":1168,"1200":1221,"1206":1221,"1207":1221,"1208":1221,"1209":1221,"1210":1221,"1211":1221,"1212":1221,"1213":1221,"1214":1221,"1215":1221,"1216":1221,"1222":1221,"1223":1221,"1224":1221,"1225":1221,"1226":1221,"1227":1221,"1228":1221,"1229":1221,"1230":1221,"1231":1221,"1238":1232,"1239":1232,"1246":1232,"1247":1232,"1256":1248,"1257":1248,"1258":1248,"1259":1248,"1260":1248,"1261":1248,"1262":1248,"1263":1248,"1265":1264,"1266":1264,"1267":1264,"1268":1264,"1269":1264,"1270":1264,"1271":1264,"1272":1264,"1273":1264,"1274":1264,"1275":1264,"1276":1264,"1277":1264,"1278":1264,"1279":1264,"1281":1280,"1282":1280,"1283":1280,"1284":1280,"1285":1280,"1286":1280,"1287":1280,"1288":1280,"1289":1280,"1290":1280,"1291":1280,"1292":1280,"1293":1280,"1294":1280,"1295":1280,"1313":1312,"1314":1312,"1315":1312,"1316":1312,"1317":1312,"1318":1312,"1319":1312,"1320":1312,"1321":1312,"1322":1312,"1323":1312,"1324":1312,"1325":1312,"1326":1312,"1327":1312,"1345":1344,"1346":1344,"1347":1344,"1348":1344,"1349":1344,"1350":1344,"1351":1344,"1352":1344,"1353":1344,"1354":1344,"1355":1344,"1356":1344,"1357":1344,"1358":1344,"1359":1344,"1366":1360,"1367":1360,"1368":1360,"1369":1360,"1370":1360,"1371":1360,"1372":1360,"1373":1360,"1374":1360,"1375":1360,"1377":1376,"1378":1376,"1379":1376,"1380":1376,"1381":1376,"1382":1376,"1383":1376,"1384":1376,"1385":1376,"1386":1376,"1387":1376,"1388":1376,"1389":1376,"1390":1376,"1391":1376,"1393":1392,"1394":1392,"1395":1392,"1396":1392,"1397":1392,"1398":1392,"1399":1392,"1400":1392,"1401":1392,"1402":1392,"1403":1392,"1404":1392,"1405":1392,"1406":1392,"1407":1392,"1409":1408,"1410":1408,"1411":1408,"1412":1408,"1413":1408,"1414":1408,"1415":1408,"1416":1408,"1417":1408,"1418":1408,"1419":1408,"1420":1408,"1421":1408,"1422":1408,"1423":1408,"1425":1424,"1426":1424,"1427":1424,"1428":1424,"1429":1424,"1430":1424,"1431":1424,"1432":1424,"1433":1424,"1434":1424,"1435":1424,"1436":1424,"1437":1424,"1438":1424,"1439":1424,"1440":1441,"1443":1441,"1444":1441,"1445":1441,"1446":1441,"1447":1441,"1448":1441,"1449":1441,"1450":1441,"1451":1441,"1452":1441,"1453":1441,"1454":1441,"1455":1441,"1460":1458,"1461":1458,"1462":1458,"1463":1458,"1464":1458,"1465":1458,"1466":1458,"1467":1458,"1468":1458,"1469":1458,"1470":1458,"1471":1458,"1479":1472,"1480":1472,"1481":1472,"1482":1472,"1483":1472,"1484":1472,"1485":1472,"1486":1472,"1487":1472,"1521":1520,"1522":1520,"1523":1520,"1524":1520,"1525":1520,"1526":1520,"1527":1520,"1528":1520,"1529":1520,"1530":1520,"1531":1520,"1532":1520,"1533":1520,"1534":1520,"1535":1520,"1558":1552,"1559":1552,"1560":1552,"1561":1552,"1562":1552,"1563":1552,"1564":1552,"1565":1552,"1566":1552,"1567":1552,"1572":1568,"1573":1568,"1574":1568,"1575":1568,"1576":1568,"1577":1568,"1578":1568,"1579":1568,"1580":1568,"1581":1568,"1582":1568,"1583":1568,"1595":1598,"1596":1598,"1597":1598,"1610":1594,"1611":1614,"1612":1614,"1613":1614,"1615":1599,"1617":1616,"1618":1616,"1619":1616,"1620":1616,"1621":1616,"1622":1616,"1623":1616,"1624":1616,"1625":1616,"1626":1616,"1627":1616,"1628":1616,"1629":1616,"1630":1616,"1631":1616,"1633":1632,"1634":1632,"1635":1632,"1636":1632,"1637":1632,"1638":1632,"1639":1632,"1640":1632,"1641":1632,"1642":1632,"1643":1632,"1644":1632,"1645":1632,"1646":1632,"1647":1632,"1649":1648,"1650":1648,"1651":1648,"1652":1648,"1653":1648,"1654":1648,"1655":1648,"1656":1648,"1657":1648,"1658":1648,"1659":1648,"1660":1648,"1661":1648,"1662":1648,"1663":1648,"1672":1664,"1673":1664,"1674":1664,"1675":1664,"1676":1664,"1677":1664,"1678":1664,"1679":1664,"1688":1680,"1689":1680,"1690":1680,"1691":1680,"1692":1680,"1693":1680,"1694":1680,"1695":1680,"1736":1731,"1737":1731,"1738":1731,"1739":1731,"1740":1731,"1741":1731,"1742":1731,"1743":1731,"1752":1747,"1753":1747,"1754":1747,"1755":1747,"1756":1747,"1757":1747,"1758":1747,"1759":1747,"1761":1760,"1762":1760,"1763":1760,"1764":1760,"1765":1760,"1766":1760,"1767":1760,"1768":1760,"1769":1760,"1770":1760,"1771":1760,"1772":1760,"1773":1760,"1774":1760,"1775":1760,"1777":1776,"1778":1776,"1779":1776,"1780":1776,"1781":1776,"1782":1776,"1783":1776,"1784":1776,"1785":1776,"1786":1776,"1787":1776,"1788":1776,"1789":1776,"1790":1776,"1791":1776,"1793":1792,"1794":1792,"1795":1792,"1796":1792,"1797":1792,"1798":1792,"1799":1792,"1800":1792,"1801":1792,"1802":1792,"1803":1792,"1804":1792,"1805":1792,"1806":1792,"1807":1792,"1809":1808,"1810":1808,"1811":1808,"1812":1808,"1813":1808,"1814":1808,"1815":1808,"1816":1808,"1817":1808,"1818":1808,"1819":1808,"1820":1808,"1821":1808,"1822":1808,"1823":1808,"1832":1827,"1833":1827,"1834":1827,"1835":1827,"1836":1827,"1837":1827,"1838":1827,"1839":1827,"1844":1840,"1845":1840,"1846":1840,"1847":1840,"1848":1840,"1849":1840,"1850":1840,"1851":1840,"1852":1840,"1853":1840,"1854":1840,"1855":1840,"1857":1856,"1858":1856,"1859":1856,"1860":1856,"1861":1856,"1862":1856,"1863":1856,"1864":1856,"1865":1856,"1866":1856,"1867":1856,"1868":1856,"1869":1856,"1870":1856,"1871":1856,"1880":1872,"1881":1872,"1882":1872,"1883":1872,"1884":1872,"1885":1872,"1886":1872,"1887":1872,"1928":1922,"1929":1922,"1930":1922,"1931":1922,"1932":1922,"1933":1922,"1934":1922,"1935":1922,"1937":1936,"1938":1936,"1939":1936,"1940":1936,"1941":1936,"1942":1936,"1943":1936,"1944":1936,"1945":1936,"1946":1936,"1947":1936,"1948":1936,"1949":1936,"1950":1936,"1951":1936,"1953":1952,"1954":1952,"1955":1952,"1956":1952,"1957":1952,"1958":1952,"1959":1952,"1960":1952,"1961":1952,"1962":1952,"1963":1952,"1964":1952,"1965":1952,"1966":1952,"1967":1952,"1969":1968,"1970":1968,"1971":1968,"1972":1968,"1973":1968,"1974":1968,"1975":1968,"1976":1968,"1977":1968,"1978":1968,"1979":1968,"1980":1968,"1981":1968,"1982":1968,"1983":1968,"1985":1968,"1986":1968,"1987":1968,"1988":1968,"1989":1968,"1990":1968,"1991":1968,"1992":1968,"1993":1968,"1994":1968,"1995":1968,"1996":1968,"1997":1968,"1998":1968,"1999":1968,"2022":2016,"2023":2016,"2030":2016,"2031":2016,"2044":2032,"2045":2032,"2046":2032,"2047":2032,"2056":2051,"2057":2051,"2058":2051,"2059":2051,"2060":2051,"2061":2051,"2062":2051,"2063":2051,"2065":2064,"2066":2064,"2067":2064,"2068":2064,"2069":2064,"2070":2064,"2071":2064,"2072":2064,"2073":2064,"2074":2064,"2075":2064,"2076":2064,"2077":2064,"2078":2064,"2079":2064,"2080":2082,"2081":2082,"2086":2082,"2087":2082,"2088":2082,"2089":2082,"2090":2082,"2091":2082,"2092":2082,"2093":2082,"2094":2082,"2095":2082,"2129":2128,"2130":2128,"2131":2128,"2132":2128,"2133":2128,"2134":2128,"2135":2128,"2136":2128,"2137":2128,"2138":2128,"2139":2128,"2140":2128,"2141":2128,"2142":2128,"2143":2128,"2152":2147,"2153":2147,"2154":2147,"2155":2147,"2156":2147,"2157":2147,"2158":2147,"2159":2147,"2168":2163,"2169":2163,"2170":2163,"2171":2163,"2172":2163,"2173":2163,"2174":2163,"2175":2163,"2184":2179,"2185":2179,"2186":2179,"2187":2179,"2188":2179,"2189":2179,"2190":2179,"2191":2179,"2209":2208,"2210":2208,"2211":2208,"2212":2208,"2213":2208,"2214":2208,"2215":2208,"2216":2208,"2217":2208,"2218":2208,"2219":2208,"2220":2208,"2221":2208,"2222":2208,"2223":2208,"2238":2224,"2239":2224,"2241":2240,"2242":2240,"2243":2240,"2244":2240,"2245":2240,"2246":2240,"2247":2240,"2248":2240,"2249":2240,"2250":2240,"2251":2240,"2252":2240,"2253":2240,"2254":2240,"2255":2240,"2264":2256,"2265":2256,"2266":2256,"2267":2256,"2268":2256,"2269":2256,"2270":2256,"2271":2256,"2280":2272,"2281":2272,"2282":2272,"2283":2272,"2284":2272,"2285":2272,"2286":2272,"2287":2272,"2294":2288,"2295":2288,"2302":2288,"2303":2288,"2304":2306,"2310":2306,"2311":2306,"2312":2306,"2318":2306,"2319":2306,"2332":2322,"2333":2322,"2334":2322,"2335":2322,"2336":2338,"2337":2338,"2342":2338,"2343":2338,"2344":2338,"2345":2338,"2346":2338,"2347":2338,"2348":2338,"2349":2338,"2350":2338,"2351":2338,"2392":2386,"2393":2386,"2394":2386,"2395":2386,"2396":2386,"2397":2386,"2398":2386,"2399":2386,"2400":2386,"2401":2386,"2402":2386,"2403":2386,"2404":2386,"2405":2386,"2406":2386,"2407":2386,"2433":2432,"2434":2432,"2435":2432,"2436":2432,"2437":2432,"2438":2432,"2439":2432,"2440":2432,"2441":2432,"2442":2432,"2443":2432,"2444":2432,"2445":2432,"2446":2432,"2447":2432,"2449":2448,"2450":2448,"2451":2448,"2452":2448,"2453":2448,"2454":2448,"2455":2448,"2456":2448,"2457":2448,"2458":2448,"2459":2448,"2460":2448,"2461":2448,"2462":2448,"2463":2448,"2465":2464,"2470":2464,"2471":2464,"2473":2464,"2478":2464,"2479":2464,"2484":2480,"2487":2480,"2488":2480,"2491":2480,"2492":2480,"2493":2481,"2494":2482,"2495":2480,"2504":2499,"2505":2499,"2506":2499,"2507":2499,"2508":2499,"2509":2499,"2510":2499,"2511":2499,"2520":2512,"2521":2513,"2522":2514,"2523":2515,"2524":2516,"2525":2517,"2578":288,"2579":288,"2582":288,"2583":288,"2586":288,"2587":288,"2590":288,"2591":288,"2604":7476,"2605":7477,"2616":2611,"2617":2611,"2618":2611,"2619":2611,"2620":2611,"2621":2611,"2622":2611,"2623":2611,"2632":2627,"2633":2627,"2634":2627,"2635":2627,"2636":2627,"2637":2627,"2638":2627,"2639":2627,"2641":2640,"2642":2640,"2643":2640,"2644":2640,"2645":2640,"2646":2640,"2647":2640,"2648":2640,"2649":2640,"2650":2640,"2651":2640,"2652":2640,"2653":2640,"2654":2640,"2655":2640,"2691":2688,"2692":2688,"2693":2688,"2694":2688,"2695":2688,"2696":2688,"2697":2688,"2698":2688,"2699":2688,"2700":2688,"2701":2688,"2702":2688,"2703":2688,"2705":2704,"2706":2704,"2707":2704,"2708":2704,"2709":2704,"2710":2704,"2711":2704,"2712":2704,"2713":2704,"2714":2704,"2715":2704,"2716":2704,"2717":2704,"2718":2704,"2719":2704,"2721":2720,"2722":2720,"2723":2720,"2725":2720,"2726":2720,"2727":2720,"2729":2720,"2730":2720,"2731":2720,"2732":2720,"2733":2720,"2734":2720,"2735":2720,"2753":2752,"2754":2752,"2755":2752,"2756":2752,"2757":2752,"2758":2752,"2759":2752,"2760":2752,"2761":2752,"2762":2752,"2763":2752,"2764":2752,"2765":2752,"2766":2752,"2767":2752,"2769":2768,"2770":2768,"2771":2768,"2772":2768,"2773":2768,"2774":2768,"2775":2768,"2776":2768,"2777":2768,"2778":2768,"2779":2768,"2780":2768,"2781":2768,"2782":2768,"2783":2768,"2785":2784,"2786":2784,"2787":2784,"2788":2784,"2789":2784,"2790":2784,"2791":2784,"2792":2784,"2793":2784,"2794":2784,"2795":2784,"2796":2784,"2797":2784,"2798":2784,"2799":2784,"2806":2800,"2807":2800,"2814":2800,"2815":2800,"2832":2834,"2833":2834,"2838":2834,"2839":2834,"2840":2834,"2841":2834,"2842":2834,"2843":2834,"2844":2834,"2845":2834,"2846":2834,"2847":2834,"2868":2864,"2869":2864,"2870":2864,"2871":2864,"2872":2864,"2873":2864,"2874":2864,"2875":2864,"2876":2864,"2877":2864,"2878":2864,"2879":2864,"2888":2883,"2889":2883,"2890":2883,"2891":2883,"2892":2883,"2893":2883,"2894":2883,"2895":2883,"2904":2896,"2905":2897,"2906":2898,"2907":2899,"2908":2900,"2909":2901,"2910":2902,"2911":2903,"3041":3040,"3042":3040,"3043":3040,"3044":3040,"3045":3040,"3046":3040,"3047":3040,"3048":3040,"3049":3040,"3050":3040,"3051":3040,"3052":3040,"3053":3040,"3054":3040,"3055":3040,"3073":3072,"3074":3072,"3075":3072,"3076":3072,"3077":3072,"3078":3072,"3079":3072,"3080":3072,"3081":3072,"3082":3072,"3083":3072,"3084":3072,"3085":3072,"3086":3072,"3087":3072,"3098":3091,"3099":3091,"3100":3091,"3101":3091,"3102":3091,"3103":3091,"3114":3107,"3115":3107,"3116":3107,"3117":3107,"3118":3107,"3119":3107,"3130":3123,"3131":3123,"3132":3123,"3133":3123,"3134":3123,"3135":3123,"3146":3139,"3147":3139,"3148":3139,"3149":3139,"3150":3139,"3151":3139,"3162":3155,"3163":3155,"3164":3155,"3165":3155,"3166":3155,"3167":3155,"3169":3168,"3170":3168,"3171":3168,"3172":3168,"3173":3168,"3174":3168,"3175":3168,"3176":3168,"3177":3168,"3178":3168,"3179":3168,"3180":3168,"3181":3168,"3182":3168,"3183":3168,"3192":3187,"3193":3187,"3194":3187,"3195":3187,"3196":3187,"3197":3187,"3198":3187,"3199":3187,"3217":3216,"3219":3216,"3220":3216,"3221":3216,"3223":3216,"3224":3216,"3225":3216,"3227":3216,"3228":3216,"3229":3216,"3230":3218,"3231":3216,"3232":3237,"3238":3237,"3239":3237,"3240":3245,"3246":3245,"3247":3245,"3256":3251,"3257":3251,"3258":3251,"3259":3251,"3260":3251,"3261":3251,"3262":3251,"3263":3251,"3264":3269,"3270":3269,"3271":3269,"3272":3277,"3278":3277,"3279":3277,"3281":3280,"3282":3280,"3283":3280,"3284":3280,"3285":3280,"3286":3280,"3287":3280,"3288":3280,"3289":3280,"3290":3280,"3291":3280,"3292":3280,"3293":3280,"3294":3280,"3295":3280,"3297":3296,"3298":3296,"3299":3296,"3300":3296,"3301":3296,"3302":3296,"3303":3296,"3304":3296,"3305":3296,"3306":3296,"3307":3296,"3308":3296,"3309":3296,"3310":3296,"3311":3296,"3316":3312,"3317":3312,"3318":3312,"3319":3312,"3320":3312,"3321":3312,"3322":3312,"3323":3312,"3324":3312,"3325":3312,"3326":3312,"3327":3312,"3334":3328,"3335":3328,"3336":3328,"3337":3328,"3338":3328,"3339":3328,"3340":3328,"3341":3328,"3342":3328,"3343":3328,"3409":3408,"3410":3408,"3411":3408,"3412":3408,"3413":3408,"3414":3408,"3415":3408,"3416":3408,"3417":3408,"3418":3408,"3419":3408,"3420":3408,"3421":3408,"3422":3408,"3423":3408,"3425":3424,"3426":3424,"3427":3424,"3428":3424,"3429":3424,"3430":3424,"3431":3424,"3432":3424,"3433":3424,"3434":3424,"3435":3424,"3436":3424,"3437":3424,"3438":3424,"3439":3424,"3441":3440,"3442":3440,"3443":3440,"3444":3440,"3445":3440,"3446":3440,"3447":3440,"3448":3440,"3449":3440,"3450":3440,"3451":3440,"3452":3440,"3453":3440,"3454":3440,"3455":3440,"3457":3456,"3458":3456,"3459":3456,"3461":3456,"3462":3456,"3463":3456,"3465":3456,"3466":3456,"3467":3456,"3468":3456,"3469":3456,"3470":3456,"3471":3456,"3504":3506,"3505":3506,"3510":3506,"3511":3506,"3512":3506,"3513":3506,"3514":3506,"3515":3506,"3516":3506,"3517":3506,"3518":3506,"3519":3506,"3520":3522,"3521":3522,"3526":3522,"3527":3522,"3528":3522,"3529":3522,"3530":3522,"3531":3522,"3532":3522,"3533":3522,"3534":3522,"3535":3522,"3536":3538,"3537":3538,"3542":3538,"3543":3538,"3544":3538,"3545":3538,"3546":3538,"3547":3538,"3548":3538,"3549":3538,"3550":3538,"3551":3538,"3552":3554,"3553":3554,"3558":3554,"3559":3554,"3560":3554,"3561":3554,"3562":3554,"3563":3554,"3564":3554,"3565":3554,"3566":3554,"3567":3554,"3568":3570,"3569":3570,"3574":3570,"3575":3570,"3576":3570,"3577":3570,"3578":3570,"3579":3570,"3580":3570,"3581":3570,"3582":3570,"3583":3570,"3584":3586,"3585":3586,"3590":3586,"3591":3586,"3592":3586,"3593":3586,"3594":3586,"3595":3586,"3596":3586,"3597":3586,"3598":3586,"3599":3586,"3600":3602,"3601":3602,"3606":3602,"3607":3602,"3608":3602,"3609":3602,"3610":3602,"3611":3602,"3612":3602,"3613":3602,"3614":3602,"3615":3602,"3616":3618,"3617":3618,"3622":3618,"3623":3618,"3624":3618,"3625":3618,"3626":3618,"3627":3618,"3628":3618,"3629":3618,"3630":3618,"3631":3618,"3632":3634,"3633":3634,"3638":3634,"3639":3634,"3640":3634,"3641":3634,"3642":3634,"3643":3634,"3644":3634,"3645":3634,"3646":3634,"3647":3634,"3648":3650,"3649":3650,"3654":3650,"3655":3650,"3656":3650,"3657":3650,"3658":3650,"3659":3650,"3660":3650,"3661":3650,"3662":3650,"3663":3650,"3664":3666,"3665":3666,"3670":3666,"3671":3666,"3672":3666,"3673":3666,"3674":3666,"3675":3666,"3676":3666,"3677":3666,"3678":3666,"3679":3666,"3696":3698,"3697":3698,"3702":3698,"3703":3698,"3704":3698,"3705":3698,"3706":3698,"3707":3698,"3708":3698,"3709":3698,"3710":3698,"3711":3698,"3712":3714,"3713":3714,"3718":3714,"3719":3714,"3720":3714,"3721":3714,"3722":3714,"3723":3714,"3724":3714,"3725":3714,"3726":3714,"3727":3714,"3728":3730,"3729":3730,"3734":3730,"3735":3730,"3736":3730,"3737":3730,"3738":3730,"3739":3730,"3740":3730,"3741":3730,"3742":3730,"3743":3730,"3744":3746,"3745":3746,"3750":3746,"3751":3746,"3752":3746,"3753":3746,"3754":3746,"3755":3746,"3756":3746,"3757":3746,"3758":3746,"3759":3746,"3760":3762,"3761":3762,"3766":3762,"3767":3762,"3768":3762,"3769":3762,"3770":3762,"3771":3762,"3772":3762,"3773":3762,"3774":3762,"3775":3762,"3824":3829,"3830":3829,"3831":3829,"3832":3829,"3833":3829,"3834":3829,"3835":3829,"3836":3829,"3837":3829,"3838":3829,"3839":3829,"3889":3888,"3890":3888,"3891":3888,"3892":3888,"3893":3888,"3894":3888,"3895":3888,"3896":3888,"3897":3888,"3898":3888,"3899":3888,"3900":3888,"3901":3888,"3902":3888,"3903":3888,"3912":3904,"3913":3904,"3914":3904,"3915":3904,"3916":3904,"3917":3904,"3918":3904,"3919":3904,"3921":3920,"3922":3920,"3923":3920,"3924":3920,"3925":3920,"3926":3920,"3927":3920,"3928":3920,"3929":3920,"3930":3920,"3931":3920,"3932":3920,"3933":3920,"3934":3920,"3935":3920,"3937":3936,"3938":3936,"3939":3936,"3940":3936,"3941":3936,"3942":3936,"3943":3936,"3944":3936,"3945":3936,"3946":3936,"3947":3936,"3948":3936,"3949":3936,"3950":3936,"3951":3936,"3953":3952,"3954":3952,"3955":3952,"3956":3952,"3957":3952,"3958":3952,"3959":3952,"3960":3952,"3961":3952,"3962":3952,"3963":3952,"3964":3952,"3965":3952,"3966":3952,"3967":3952,"3969":3968,"3970":3968,"3971":3968,"3972":3968,"3973":3968,"3974":3968,"3975":3968,"3976":3968,"3977":3968,"3978":3968,"3979":3968,"3980":3968,"3981":3968,"3982":3968,"3983":3968,"3985":3984,"3986":3984,"3987":3984,"3988":3984,"3989":3984,"3990":3984,"3991":3984,"3992":3984,"3993":3984,"3994":3984,"3995":3984,"3996":3984,"3997":3984,"3998":3984,"3999":3984,"4049":4048,"4050":4048,"4051":4048,"4052":4048,"4053":4048,"4054":4048,"4055":4048,"4056":4048,"4057":4048,"4058":4048,"4059":4048,"4060":4048,"4061":4048,"4062":4048,"4063":4048,"4081":4080,"4082":4080,"4083":4080,"4084":4080,"4085":4080,"4086":4080,"4087":4080,"4088":4080,"4089":4080,"4090":4080,"4091":4080,"4092":4080,"4093":4080,"4094":4080,"4095":4080,"4120":4115,"4121":4115,"4122":4115,"4123":4115,"4124":4115,"4125":4115,"4126":4115,"4127":4115,"4136":4131,"4137":4131,"4138":4131,"4139":4131,"4140":4131,"4141":4131,"4142":4131,"4143":4131,"4152":4147,"4153":4147,"4154":4147,"4155":4147,"4156":4147,"4157":4147,"4158":4147,"4159":4147,"4163":4160,"4164":4160,"4165":4160,"4166":4160,"4167":4160,"4168":4160,"4169":4160,"4170":4160,"4171":4160,"4172":4160,"4173":4160,"4174":4160,"4175":4160,"4179":4176,"4180":4176,"4181":4176,"4182":4176,"4183":4176,"4184":4176,"4185":4176,"4186":4176,"4187":4176,"4188":4176,"4189":4176,"4190":4176,"4191":4176,"4195":4192,"4196":4192,"4197":4192,"4198":4192,"4199":4192,"4200":4192,"4201":4192,"4202":4192,"4203":4192,"4204":4192,"4205":4192,"4206":4192,"4207":4192,"4211":4208,"4212":4208,"4213":4208,"4214":4208,"4215":4208,"4216":4208,"4217":4208,"4218":4208,"4219":4208,"4220":4208,"4221":4208,"4222":4208,"4223":4208,"4227":4224,"4228":4224,"4229":4224,"4230":4224,"4231":4224,"4232":4224,"4233":4224,"4234":4224,"4235":4224,"4236":4224,"4237":4224,"4238":4224,"4239":4224,"4243":4240,"4244":4240,"4245":4240,"4246":4240,"4247":4240,"4248":4240,"4249":4240,"4250":4240,"4251":4240,"4252":4240,"4253":4240,"4254":4240,"4255":4240,"4257":4256,"4258":4256,"4259":4256,"4260":4256,"4261":4256,"4262":4256,"4263":4256,"4264":4256,"4265":4256,"4266":4256,"4267":4256,"4268":4256,"4269":4256,"4270":4256,"4271":4256,"4273":4272,"4274":4272,"4275":4272,"4276":4272,"4277":4272,"4278":4272,"4279":4272,"4280":4272,"4281":4272,"4282":4272,"4283":4272,"4284":4272,"4285":4272,"4286":4272,"4287":4272,"4289":4288,"4290":4288,"4291":4288,"4292":4288,"4293":4288,"4294":4288,"4295":4288,"4296":4288,"4297":4288,"4298":4288,"4299":4288,"4300":4288,"4301":4288,"4302":4288,"4303":4288,"4305":4304,"4306":4304,"4307":4304,"4308":4304,"4309":4304,"4310":4304,"4311":4304,"4312":4304,"4313":4304,"4314":4304,"4315":4304,"4316":4304,"4317":4304,"4318":4304,"4319":4304,"4321":4320,"4322":4320,"4323":4320,"4324":4320,"4325":4320,"4326":4320,"4327":4320,"4328":4320,"4329":4320,"4330":4320,"4331":4320,"4332":4320,"4333":4320,"4334":4320,"4335":4320,"4337":4336,"4338":4336,"4339":4336,"4340":4336,"4341":4336,"4342":4336,"4343":4336,"4344":4336,"4345":4336,"4346":4336,"4347":4336,"4348":4336,"4349":4336,"4350":4336,"4351":4336,"4353":4352,"4354":4352,"4355":4352,"4356":4352,"4357":4352,"4358":4352,"4359":4352,"4360":4352,"4361":4352,"4362":4352,"4363":4352,"4364":4352,"4365":4352,"4366":4352,"4367":4352,"4369":4368,"4370":4368,"4371":4368,"4372":4368,"4373":4368,"4374":4368,"4375":4368,"4376":4368,"4377":4368,"4378":4368,"4379":4368,"4380":4368,"4381":4368,"4382":4368,"4383":4368,"4385":4384,"4386":4384,"4387":4384,"4388":4384,"4389":4384,"4390":4384,"4391":4384,"4392":4384,"4393":4384,"4394":4384,"4395":4384,"4396":4384,"4397":4384,"4398":4384,"4399":4384,"4401":4400,"4402":4400,"4403":4400,"4404":4400,"4405":4400,"4406":4400,"4407":4400,"4408":4400,"4409":4400,"4410":4400,"4411":4400,"4412":4400,"4413":4400,"4414":4400,"4415":4400,"4417":4416,"4418":4416,"4419":4416,"4420":4416,"4421":4416,"4422":4416,"4423":4416,"4424":4416,"4425":4416,"4426":4416,"4427":4416,"4428":4416,"4429":4416,"4430":4416,"4431":4416,"4433":4432,"4434":4432,"4435":4432,"4436":4432,"4437":4432,"4438":4432,"4439":4432,"4440":4432,"4441":4432,"4442":4432,"4443":4432,"4444":4432,"4445":4432,"4446":4432,"4447":4432,"4449":4448,"4450":4448,"4451":4448,"4452":4448,"4453":4448,"4454":4448,"4455":4448,"4456":4448,"4457":4448,"4458":4448,"4459":4448,"4460":4448,"4461":4448,"4462":4448,"4463":4448,"4465":4464,"4466":4464,"4467":4464,"4468":4464,"4469":4464,"4470":4464,"4471":4464,"4472":4464,"4473":4464,"4474":4464,"4475":4464,"4476":4464,"4477":4464,"4478":4464,"4479":4464,"4481":4480,"4482":4480,"4483":4480,"4484":4480,"4485":4480,"4486":4480,"4487":4480,"4488":4480,"4489":4480,"4490":4480,"4491":4480,"4492":4480,"4493":4480,"4494":4480,"4495":4480,"4497":4496,"4498":4496,"4499":4496,"4500":4496,"4501":4496,"4502":4496,"4503":4496,"4504":4496,"4505":4496,"4506":4496,"4507":4496,"4508":4496,"4509":4496,"4510":4496,"4511":4496,"4513":4512,"4514":4512,"4515":4512,"4516":4512,"4517":4512,"4518":4512,"4519":4512,"4520":4512,"4521":4512,"4522":4512,"4523":4512,"4524":4512,"4525":4512,"4526":4512,"4527":4512,"4529":4528,"4530":4528,"4531":4528,"4532":4528,"4533":4528,"4534":4528,"4535":4528,"4536":4528,"4537":4528,"4538":4528,"4539":4528,"4540":4528,"4541":4528,"4542":4528,"4543":4528,"4545":4544,"4546":4544,"4547":4544,"4548":4544,"4549":4544,"4550":4544,"4551":4544,"4552":4544,"4553":4544,"4554":4544,"4555":4544,"4556":4544,"4557":4544,"4558":4544,"4559":4544,"4561":4560,"4562":4560,"4563":4560,"4564":4560,"4565":4560,"4566":4560,"4567":4560,"4568":4560,"4569":4560,"4570":4560,"4571":4560,"4572":4560,"4573":4560,"4574":4560,"4575":4560,"4577":4576,"4578":4576,"4579":4576,"4580":4576,"4581":4576,"4582":4576,"4583":4576,"4584":4576,"4585":4576,"4586":4576,"4587":4576,"4588":4576,"4589":4576,"4590":4576,"4591":4576,"4593":4592,"4594":4592,"4595":4592,"4596":4592,"4597":4592,"4598":4592,"4599":4592,"4600":4592,"4601":4592,"4602":4592,"4603":4592,"4604":4592,"4605":4592,"4606":4592,"4607":4592,"4609":4608,"4610":4608,"4611":4608,"4612":4608,"4613":4608,"4614":4608,"4615":4608,"4616":4608,"4617":4608,"4618":4608,"4619":4608,"4620":4608,"4621":4608,"4622":4608,"4623":4608,"4625":4624,"4626":4624,"4627":4624,"4628":4624,"4629":4624,"4630":4624,"4631":4624,"4632":4624,"4633":4624,"4634":4624,"4635":4624,"4636":4624,"4637":4624,"4638":4624,"4639":4624,"4641":4640,"4642":4640,"4643":4640,"4644":4640,"4645":4640,"4646":4640,"4647":4640,"4648":4640,"4649":4640,"4650":4640,"4651":4640,"4652":4640,"4653":4640,"4654":4640,"4655":4640,"4657":4656,"4658":4656,"4659":4656,"4660":4656,"4661":4656,"4662":4656,"4663":4656,"4664":4656,"4665":4656,"4666":4656,"4667":4656,"4668":4656,"4669":4656,"4670":4656,"4671":4656,"4673":4672,"4674":4672,"4675":4672,"4676":4672,"4677":4672,"4678":4672,"4679":4672,"4680":4672,"4681":4672,"4682":4672,"4683":4672,"4684":4672,"4685":4672,"4686":4672,"4687":4672,"4689":4688,"4690":4688,"4691":4688,"4692":4688,"4693":4688,"4694":4688,"4695":4688,"4696":4688,"4697":4688,"4698":4688,"4699":4688,"4700":4688,"4701":4688,"4702":4688,"4703":4688,"4705":4704,"4706":4704,"4707":4704,"4708":4704,"4709":4704,"4710":4704,"4711":4704,"4712":4704,"4713":4704,"4714":4704,"4715":4704,"4716":4704,"4717":4704,"4718":4704,"4719":4704,"4721":4720,"4722":4720,"4723":4720,"4724":4720,"4725":4720,"4726":4720,"4727":4720,"4728":4720,"4729":4720,"4730":4720,"4731":4720,"4732":4720,"4733":4720,"4734":4720,"4735":4720,"4737":4736,"4738":4736,"4739":4736,"4740":4736,"4741":4736,"4742":4736,"4743":4736,"4744":4736,"4745":4736,"4746":4736,"4747":4736,"4748":4736,"4749":4736,"4750":4736,"4751":4736,"4753":4752,"4754":4752,"4755":4752,"4756":4752,"4757":4752,"4758":4752,"4759":4752,"4760":4752,"4761":4752,"4762":4752,"4763":4752,"4764":4752,"4765":4752,"4766":4752,"4767":4752,"4769":4768,"4770":4768,"4771":4768,"4772":4768,"4773":4768,"4774":4768,"4775":4768,"4776":4768,"4777":4768,"4778":4768,"4779":4768,"4780":4768,"4781":4768,"4782":4768,"4783":4768,"4785":4784,"4786":4784,"4787":4784,"4788":4784,"4789":4784,"4790":4784,"4791":4784,"4792":4784,"4793":4784,"4794":4784,"4795":4784,"4796":4784,"4797":4784,"4798":4784,"4799":4784,"4801":4800,"4802":4800,"4803":4800,"4804":4800,"4805":4800,"4806":4800,"4807":4800,"4808":4800,"4809":4800,"4810":4800,"4811":4800,"4812":4800,"4813":4800,"4814":4800,"4815":4800,"4817":4816,"4818":4816,"4819":4816,"4820":4816,"4821":4816,"4822":4816,"4823":4816,"4824":4816,"4825":4816,"4826":4816,"4827":4816,"4828":4816,"4829":4816,"4830":4816,"4831":4816,"4833":4832,"4834":4832,"4835":4832,"4836":4832,"4837":4832,"4838":4832,"4839":4832,"4840":4832,"4841":4832,"4842":4832,"4843":4832,"4844":4832,"4845":4832,"4846":4832,"4847":4832,"4849":4848,"4850":4848,"4851":4848,"4852":4848,"4853":4848,"4854":4848,"4855":4848,"4856":4848,"4857":4848,"4858":4848,"4859":4848,"4860":4848,"4861":4848,"4862":4848,"4863":4848,"4865":4864,"4866":4864,"4867":4864,"4868":4864,"4869":4864,"4870":4864,"4871":4864,"4872":4864,"4873":4864,"4874":4864,"4875":4864,"4876":4864,"4877":4864,"4878":4864,"4879":4864,"4881":4880,"4882":4880,"4883":4880,"4884":4880,"4885":4880,"4886":4880,"4887":4880,"4888":4880,"4889":4880,"4890":4880,"4891":4880,"4892":4880,"4893":4880,"4894":4880,"4895":4880,"4897":4896,"4898":4896,"4899":4896,"4900":4896,"4901":4896,"4902":4896,"4903":4896,"4904":4896,"4905":4896,"4906":4896,"4907":4896,"4908":4896,"4909":4896,"4910":4896,"4911":4896,"4913":4912,"4914":4912,"4915":4912,"4916":4912,"4917":4912,"4918":4912,"4919":4912,"4920":4912,"4921":4912,"4922":4912,"4923":4912,"4924":4912,"4925":4912,"4926":4912,"4927":4912,"4929":4928,"4930":4928,"4931":4928,"4932":4928,"4933":4928,"4934":4928,"4935":4928,"4936":4928,"4937":4928,"4938":4928,"4939":4928,"4940":4928,"4941":4928,"4942":4928,"4943":4928,"4945":4944,"4946":4944,"4947":4944,"4948":4944,"4949":4944,"4950":4944,"4951":4944,"4952":4944,"4953":4944,"4954":4944,"4955":4944,"4956":4944,"4957":4944,"4958":4944,"4959":4944,"4961":4960,"4962":4960,"4963":4960,"4964":4960,"4965":4960,"4966":4960,"4967":4960,"4968":4960,"4969":4960,"4970":4960,"4971":4960,"4972":4960,"4973":4960,"4974":4960,"4975":4960,"4977":4976,"4978":4976,"4979":4976,"4980":4976,"4981":4976,"4982":4976,"4983":4976,"4984":4976,"4985":4976,"4986":4976,"4987":4976,"4988":4976,"4989":4976,"4990":4976,"4991":4976,"4993":4992,"4994":4992,"4995":4992,"4996":4992,"4997":4992,"4998":4992,"4999":4992,"5000":4992,"5001":4992,"5002":4992,"5003":4992,"5004":4992,"5005":4992,"5006":4992,"5007":4992,"5009":5008,"5010":5008,"5011":5008,"5012":5008,"5013":5008,"5014":5008,"5015":5008,"5016":5008,"5017":5008,"5018":5008,"5019":5008,"5020":5008,"5021":5008,"5022":5008,"5023":5008,"5025":5024,"5026":5024,"5027":5024,"5028":5024,"5029":5024,"5030":5024,"5031":5024,"5032":5024,"5033":5024,"5034":5024,"5035":5024,"5036":5024,"5037":5024,"5038":5024,"5039":5024,"5041":5040,"5042":5040,"5043":5040,"5044":5040,"5045":5040,"5046":5040,"5047":5040,"5048":5040,"5049":5040,"5050":5040,"5051":5040,"5052":5040,"5053":5040,"5054":5040,"5055":5040,"5057":5056,"5058":5056,"5059":5056,"5060":5056,"5061":5056,"5062":5056,"5063":5056,"5064":5056,"5065":5056,"5066":5056,"5067":5056,"5068":5056,"5069":5056,"5070":5056,"5071":5056,"5073":5072,"5074":5072,"5075":5072,"5076":5072,"5077":5072,"5078":5072,"5079":5072,"5080":5072,"5081":5072,"5082":5072,"5083":5072,"5084":5072,"5085":5072,"5086":5072,"5087":5072,"5089":5088,"5090":5088,"5091":5088,"5092":5088,"5093":5088,"5094":5088,"5095":5088,"5096":5088,"5097":5088,"5098":5088,"5099":5088,"5100":5088,"5101":5088,"5102":5088,"5103":5088,"5105":5104,"5106":5104,"5107":5104,"5108":5104,"5109":5104,"5110":5104,"5111":5104,"5112":5104,"5113":5104,"5114":5104,"5115":5104,"5116":5104,"5117":5104,"5118":5104,"5119":5104,"5121":5120,"5122":5120,"5123":5120,"5124":5120,"5125":5120,"5126":5120,"5127":5120,"5128":5120,"5129":5120,"5130":5120,"5131":5120,"5132":5120,"5133":5120,"5134":5120,"5135":5120,"5137":5136,"5138":5136,"5139":5136,"5140":5136,"5141":5136,"5142":5136,"5143":5136,"5144":5136,"5145":5136,"5146":5136,"5147":5136,"5148":5136,"5149":5136,"5150":5136,"5151":5136,"5153":5152,"5154":5152,"5155":5152,"5156":5152,"5157":5152,"5158":5152,"5159":5152,"5160":5152,"5161":5152,"5162":5152,"5163":5152,"5164":5152,"5165":5152,"5166":5152,"5167":5152,"5169":5168,"5170":5168,"5171":5168,"5172":5168,"5173":5168,"5174":5168,"5175":5168,"5176":5168,"5177":5168,"5178":5168,"5179":5168,"5180":5168,"5181":5168,"5182":5168,"5183":5168,"5185":5184,"5186":5184,"5187":5184,"5188":5184,"5189":5184,"5190":5184,"5191":5184,"5192":5184,"5193":5184,"5194":5184,"5195":5184,"5196":5184,"5197":5184,"5198":5184,"5199":5184,"5201":5200,"5202":5200,"5203":5200,"5204":5200,"5205":5200,"5206":5200,"5207":5200,"5208":5200,"5209":5200,"5210":5200,"5211":5200,"5212":5200,"5213":5200,"5214":5200,"5215":5200,"5217":5216,"5218":5216,"5219":5216,"5220":5216,"5221":5216,"5222":5216,"5223":5216,"5224":5216,"5225":5216,"5226":5216,"5227":5216,"5228":5216,"5229":5216,"5230":5216,"5231":5216,"5233":5232,"5234":5232,"5235":5232,"5236":5232,"5237":5232,"5238":5232,"5239":5232,"5240":5232,"5241":5232,"5242":5232,"5243":5232,"5244":5232,"5245":5232,"5246":5232,"5247":5232,"5249":5248,"5250":5248,"5251":5248,"5252":5248,"5253":5248,"5254":5248,"5255":5248,"5256":5248,"5257":5248,"5258":5248,"5259":5248,"5260":5248,"5261":5248,"5262":5248,"5263":5248,"5265":5264,"5266":5264,"5267":5264,"5268":5264,"5269":5264,"5270":5264,"5271":5264,"5272":5264,"5273":5264,"5274":5264,"5275":5264,"5276":5264,"5277":5264,"5278":5264,"5279":5264,"5281":5280,"5282":5280,"5283":5280,"5284":5280,"5285":5280,"5286":5280,"5287":5280,"5288":5280,"5289":5280,"5290":5280,"5291":5280,"5292":5280,"5293":5280,"5294":5280,"5295":5280,"5297":5296,"5298":5296,"5299":5296,"5300":5296,"5301":5296,"5302":5296,"5303":5296,"5304":5296,"5305":5296,"5306":5296,"5307":5296,"5308":5296,"5309":5296,"5310":5296,"5311":5296,"5313":5312,"5314":5312,"5315":5312,"5316":5312,"5317":5312,"5318":5312,"5319":5312,"5320":5312,"5321":5312,"5322":5312,"5323":5312,"5324":5312,"5325":5312,"5326":5312,"5327":5312,"5329":5328,"5330":5328,"5331":5328,"5332":5328,"5333":5328,"5334":5328,"5335":5328,"5336":5328,"5337":5328,"5338":5328,"5339":5328,"5340":5328,"5341":5328,"5342":5328,"5343":5328,"5345":5344,"5346":5344,"5347":5344,"5348":5344,"5349":5344,"5350":5344,"5351":5344,"5352":5344,"5353":5344,"5354":5344,"5355":5344,"5356":5344,"5357":5344,"5358":5344,"5359":5344,"5361":5360,"5362":5360,"5363":5360,"5364":5360,"5365":5360,"5366":5360,"5367":5360,"5368":5360,"5369":5360,"5370":5360,"5371":5360,"5372":5360,"5373":5360,"5374":5360,"5375":5360,"5377":5376,"5378":5376,"5379":5376,"5380":5376,"5381":5376,"5382":5376,"5383":5376,"5384":5376,"5385":5376,"5386":5376,"5387":5376,"5388":5376,"5389":5376,"5390":5376,"5391":5376,"5393":5392,"5394":5392,"5395":5392,"5396":5392,"5397":5392,"5398":5392,"5399":5392,"5400":5392,"5401":5392,"5402":5392,"5403":5392,"5404":5392,"5405":5392,"5406":5392,"5407":5392,"5409":5408,"5410":5408,"5411":5408,"5412":5408,"5413":5408,"5414":5408,"5415":5408,"5416":5408,"5417":5408,"5418":5408,"5419":5408,"5420":5408,"5421":5408,"5422":5408,"5423":5408,"5425":5424,"5426":5424,"5427":5424,"5428":5424,"5429":5424,"5430":5424,"5431":5424,"5432":5424,"5433":5424,"5434":5424,"5435":5424,"5436":5424,"5437":5424,"5438":5424,"5439":5424,"5441":5440,"5442":5440,"5443":5440,"5444":5440,"5445":5440,"5446":5440,"5447":5440,"5448":5440,"5449":5440,"5450":5440,"5451":5440,"5452":5440,"5453":5440,"5454":5440,"5455":5440,"5457":5456,"5458":5456,"5459":5456,"5460":5456,"5461":5456,"5462":5456,"5463":5456,"5464":5456,"5465":5456,"5466":5456,"5467":5456,"5468":5456,"5469":5456,"5470":5456,"5471":5456,"5473":5472,"5474":5472,"5475":5472,"5476":5472,"5477":5472,"5478":5472,"5479":5472,"5480":5472,"5481":5472,"5482":5472,"5483":5472,"5484":5472,"5485":5472,"5486":5472,"5487":5472,"5489":5488,"5490":5488,"5491":5488,"5492":5488,"5493":5488,"5494":5488,"5495":5488,"5496":5488,"5497":5488,"5498":5488,"5499":5488,"5500":5488,"5501":5488,"5502":5488,"5503":5488,"5505":5504,"5506":5504,"5507":5504,"5508":5504,"5509":5504,"5510":5504,"5511":5504,"5512":5504,"5513":5504,"5514":5504,"5515":5504,"5516":5504,"5517":5504,"5518":5504,"5519":5504,"5521":5520,"5522":5520,"5523":5520,"5524":5520,"5525":5520,"5526":5520,"5527":5520,"5528":5520,"5529":5520,"5530":5520,"5531":5520,"5532":5520,"5533":5520,"5534":5520,"5535":5520,"5537":5536,"5538":5536,"5539":5536,"5540":5536,"5541":5536,"5542":5536,"5543":5536,"5544":5536,"5545":5536,"5546":5536,"5547":5536,"5548":5536,"5549":5536,"5550":5536,"5551":5536,"5553":5552,"5554":5552,"5555":5552,"5556":5552,"5557":5552,"5558":5552,"5559":5552,"5560":5552,"5561":5552,"5562":5552,"5563":5552,"5564":5552,"5565":5552,"5566":5552,"5567":5552,"5569":5568,"5570":5568,"5571":5568,"5572":5568,"5573":5568,"5574":5568,"5575":5568,"5576":5568,"5577":5568,"5578":5568,"5579":5568,"5580":5568,"5581":5568,"5582":5568,"5583":5568,"5585":5584,"5586":5584,"5587":5584,"5588":5584,"5589":5584,"5590":5584,"5591":5584,"5592":5584,"5593":5584,"5594":5584,"5595":5584,"5596":5584,"5597":5584,"5598":5584,"5599":5584,"5601":5600,"5602":5600,"5603":5600,"5604":5600,"5605":5600,"5606":5600,"5607":5600,"5608":5600,"5609":5600,"5610":5600,"5611":5600,"5612":5600,"5613":5600,"5614":5600,"5615":5600,"5617":5616,"5618":5616,"5619":5616,"5620":5616,"5621":5616,"5622":5616,"5623":5616,"5624":5616,"5625":5616,"5626":5616,"5627":5616,"5628":5616,"5629":5616,"5630":5616,"5631":5616,"5633":5632,"5634":5632,"5635":5632,"5636":5632,"5637":5632,"5638":5632,"5639":5632,"5640":5632,"5641":5632,"5642":5632,"5643":5632,"5644":5632,"5645":5632,"5646":5632,"5647":5632,"5649":5648,"5650":5648,"5651":5648,"5652":5648,"5653":5648,"5654":5648,"5655":5648,"5656":5648,"5657":5648,"5658":5648,"5659":5648,"5660":5648,"5661":5648,"5662":5648,"5663":5648,"5665":5664,"5666":5664,"5667":5664,"5668":5664,"5669":5664,"5670":5664,"5671":5664,"5672":5664,"5673":5664,"5674":5664,"5675":5664,"5676":5664,"5677":5664,"5678":5664,"5679":5664,"5681":5680,"5682":5680,"5683":5680,"5684":5680,"5685":5680,"5686":5680,"5687":5680,"5688":5680,"5689":5680,"5690":5680,"5691":5680,"5692":5680,"5693":5680,"5694":5680,"5695":5680,"5697":5696,"5698":5696,"5699":5696,"5700":5696,"5701":5696,"5702":5696,"5703":5696,"5704":5696,"5705":5696,"5706":5696,"5707":5696,"5708":5696,"5709":5696,"5710":5696,"5711":5696,"5713":5712,"5714":5712,"5715":5712,"5716":5712,"5717":5712,"5718":5712,"5719":5712,"5720":5712,"5721":5712,"5722":5712,"5723":5712,"5724":5712,"5725":5712,"5726":5712,"5727":5712,"5729":5728,"5730":5728,"5731":5728,"5732":5728,"5733":5728,"5734":5728,"5735":5728,"5736":5728,"5737":5728,"5738":5728,"5739":5728,"5740":5728,"5741":5728,"5742":5728,"5743":5728,"5745":5744,"5746":5744,"5747":5744,"5748":5744,"5749":5744,"5750":5744,"5751":5744,"5752":5744,"5753":5744,"5754":5744,"5755":5744,"5756":5744,"5757":5744,"5758":5744,"5759":5744,"5761":5760,"5762":5760,"5763":5760,"5764":5760,"5765":5760,"5766":5760,"5767":5760,"5768":5760,"5769":5760,"5770":5760,"5771":5760,"5772":5760,"5773":5760,"5774":5760,"5775":5760,"5777":5776,"5778":5776,"5779":5776,"5780":5776,"5781":5776,"5782":5776,"5783":5776,"5784":5776,"5785":5776,"5786":5776,"5787":5776,"5788":5776,"5789":5776,"5790":5776,"5791":5776,"5793":5792,"5794":5792,"5795":5792,"5796":5792,"5797":5792,"5798":5792,"5799":5792,"5800":5792,"5801":5792,"5802":5792,"5803":5792,"5804":5792,"5805":5792,"5806":5792,"5807":5792,"5809":5808,"5810":5808,"5811":5808,"5812":5808,"5813":5808,"5814":5808,"5815":5808,"5816":5808,"5817":5808,"5818":5808,"5819":5808,"5820":5808,"5821":5808,"5822":5808,"5823":5808,"5825":5824,"5826":5824,"5827":5824,"5828":5824,"5829":5824,"5830":5824,"5831":5824,"5832":5824,"5833":5824,"5834":5824,"5835":5824,"5836":5824,"5837":5824,"5838":5824,"5839":5824,"5841":5840,"5842":5840,"5843":5840,"5844":5840,"5845":5840,"5846":5840,"5847":5840,"5848":5840,"5849":5840,"5850":5840,"5851":5840,"5852":5840,"5853":5840,"5854":5840,"5855":5840,"5857":5856,"5858":5856,"5859":5856,"5860":5856,"5861":5856,"5862":5856,"5863":5856,"5864":5856,"5865":5856,"5866":5856,"5867":5856,"5868":5856,"5869":5856,"5870":5856,"5871":5856,"5873":5872,"5874":5872,"5875":5872,"5876":5872,"5877":5872,"5878":5872,"5879":5872,"5880":5872,"5881":5872,"5882":5872,"5883":5872,"5884":5872,"5885":5872,"5886":5872,"5887":5872,"5889":5888,"5890":5888,"5891":5888,"5892":5888,"5893":5888,"5894":5888,"5895":5888,"5896":5888,"5897":5888,"5898":5888,"5899":5888,"5900":5888,"5901":5888,"5902":5888,"5903":5888,"5905":5904,"5906":5904,"5907":5904,"5908":5904,"5909":5904,"5910":5904,"5911":5904,"5912":5904,"5913":5904,"5914":5904,"5915":5904,"5916":5904,"5917":5904,"5918":5904,"5919":5904,"5921":5920,"5922":5920,"5923":5920,"5924":5920,"5925":5920,"5926":5920,"5927":5920,"5928":5920,"5929":5920,"5930":5920,"5931":5920,"5932":5920,"5933":5920,"5934":5920,"5935":5920,"5937":5936,"5938":5936,"5939":5936,"5940":5936,"5941":5936,"5942":5936,"5943":5936,"5944":5936,"5945":5936,"5946":5936,"5947":5936,"5948":5936,"5949":5936,"5950":5936,"5951":5936,"5953":5952,"5954":5952,"5955":5952,"5956":5952,"5957":5952,"5958":5952,"5959":5952,"5960":5952,"5961":5952,"5962":5952,"5963":5952,"5964":5952,"5965":5952,"5966":5952,"5967":5952,"5969":5968,"5970":5968,"5971":5968,"5972":5968,"5973":5968,"5974":5968,"5975":5968,"5976":5968,"5977":5968,"5978":5968,"5979":5968,"5980":5968,"5981":5968,"5982":5968,"5983":5968,"5985":5984,"5986":5984,"5987":5984,"5988":5984,"5989":5984,"5990":5984,"5991":5984,"5992":5984,"5993":5984,"5994":5984,"5995":5984,"5996":5984,"5997":5984,"5998":5984,"5999":5984,"6001":6000,"6002":6000,"6003":6000,"6004":6000,"6005":6000,"6006":6000,"6007":6000,"6008":6000,"6009":6000,"6010":6000,"6011":6000,"6012":6000,"6013":6000,"6014":6000,"6015":6000,"6017":6016,"6018":6016,"6019":6016,"6020":6016,"6021":6016,"6022":6016,"6023":6016,"6024":6016,"6025":6016,"6026":6016,"6027":6016,"6028":6016,"6029":6016,"6030":6016,"6031":6016,"6033":6032,"6034":6032,"6035":6032,"6036":6032,"6037":6032,"6038":6032,"6039":6032,"6040":6032,"6041":6032,"6042":6032,"6043":6032,"6044":6032,"6045":6032,"6046":6032,"6047":6032,"6049":6048,"6050":6048,"6051":6048,"6052":6048,"6053":6048,"6054":6048,"6055":6048,"6056":6048,"6057":6048,"6058":6048,"6059":6048,"6060":6048,"6061":6048,"6062":6048,"6063":6048,"6065":6064,"6066":6064,"6067":6064,"6068":6064,"6069":6064,"6070":6064,"6071":6064,"6072":6064,"6073":6064,"6074":6064,"6075":6064,"6076":6064,"6077":6064,"6078":6064,"6079":6064,"6081":6080,"6082":6080,"6083":6080,"6084":6080,"6085":6080,"6086":6080,"6087":6080,"6088":6080,"6089":6080,"6090":6080,"6091":6080,"6092":6080,"6093":6080,"6094":6080,"6095":6080,"6097":6096,"6098":6096,"6099":6096,"6100":6096,"6101":6096,"6102":6096,"6103":6096,"6104":6096,"6105":6096,"6106":6096,"6107":6096,"6108":6096,"6109":6096,"6110":6096,"6111":6096,"6113":6112,"6114":6112,"6115":6112,"6116":6112,"6117":6112,"6118":6112,"6119":6112,"6120":6112,"6121":6112,"6122":6112,"6123":6112,"6124":6112,"6125":6112,"6126":6112,"6127":6112,"6129":6128,"6130":6128,"6131":6128,"6132":6128,"6133":6128,"6134":6128,"6135":6128,"6136":6128,"6137":6128,"6138":6128,"6139":6128,"6140":6128,"6141":6128,"6142":6128,"6143":6128,"6145":6144,"6146":6144,"6147":6144,"6148":6144,"6149":6144,"6150":6144,"6151":6144,"6152":6144,"6153":6144,"6154":6144,"6155":6144,"6156":6144,"6157":6144,"6158":6144,"6159":6144,"6181":6176,"6182":6176,"6183":6176,"6184":6176,"6185":6176,"6186":6176,"6187":6176,"6188":6176,"6189":6176,"6190":6176,"6191":6176,"6197":6192,"6198":6192,"6199":6192,"6205":6192,"6206":6192,"6207":6192,"6213":6208,"6214":6208,"6215":6208,"6221":6208,"6222":6208,"6223":6208,"6229":6208,"6230":6208,"6231":6208,"6237":6208,"6238":6208,"6239":6208,"6273":6248,"6275":6248,"6277":6248,"6279":6248,"6281":6248,"6283":6248,"6285":6248,"6287":6248,"6305":6304,"6306":6304,"6307":6304,"6308":6304,"6309":6304,"6310":6304,"6311":6304,"6312":6304,"6313":6304,"6314":6304,"6315":6304,"6316":6304,"6317":6304,"6318":6304,"6319":6304,"6326":6320,"6327":6320,"6334":6320,"6335":6320,"6342":6336,"6343":6336,"6350":6336,"6351":6336,"6358":6352,"6359":6352,"6366":6352,"6367":6352,"6374":6368,"6375":6368,"6382":6368,"6383":6368,"6390":6384,"6391":6384,"6398":6384,"6399":6384,"6482":6480,"6483":6480,"6484":6480,"6485":6480,"6486":6480,"6487":6480,"6488":6480,"6489":6480,"6490":6480,"6491":6480,"6492":6480,"6493":6480,"6494":6480,"6495":6480,"6498":6496,"6499":6496,"6500":6496,"6501":6496,"6502":6496,"6503":6496,"6504":6496,"6505":6496,"6506":6496,"6507":6496,"6508":6496,"6509":6496,"6510":6496,"6511":6496,"6514":6512,"6515":6512,"6516":6512,"6517":6512,"6518":6512,"6519":6512,"6520":6512,"6521":6512,"6522":6512,"6523":6512,"6524":6512,"6525":6512,"6526":6512,"6527":6512,"6530":6528,"6531":6528,"6532":6528,"6533":6528,"6534":6528,"6535":6528,"6536":6528,"6537":6528,"6538":6528,"6539":6528,"6540":6528,"6541":6528,"6542":6528,"6543":6528,"6546":6544,"6547":6544,"6548":6544,"6549":6544,"6550":6544,"6551":6544,"6552":6544,"6553":6544,"6554":6544,"6555":6544,"6556":6544,"6557":6544,"6558":6544,"6559":6544,"6564":6562,"6565":6562,"6566":6562,"6567":6562,"6568":6562,"6569":6562,"6570":6562,"6571":6562,"6572":6562,"6573":6562,"6574":6562,"6575":6562,"6584":6580,"6585":6580,"6586":6580,"6587":6580,"6588":6580,"6589":6580,"6590":6580,"6591":6580,"6657":6656,"6658":6656,"6659":6656,"6660":6656,"6661":6656,"6662":6656,"6663":6656,"6664":6656,"6665":6656,"6666":6656,"6667":6656,"6668":6656,"6669":6656,"6670":6656,"6671":6656,"6694":6688,"6695":6688,"6702":6688,"6703":6688,"6706":6704,"6707":6704,"6708":6704,"6709":6704,"6710":6704,"6711":6704,"6712":6704,"6713":6704,"6714":6704,"6715":6704,"6716":6704,"6717":6704,"6718":6704,"6719":6704,"6760":6752,"6761":6753,"6762":6754,"6763":6755,"6764":6756,"6765":6757,"6766":6758,"6767":6759,"6776":6768,"6777":6769,"6778":6770,"6779":6771,"6780":6772,"6792":6787,"6793":6787,"6794":6787,"6795":6787,"6796":6787,"6797":6787,"6798":6787,"6799":6787,"6808":6803,"6809":6803,"6810":6803,"6811":6803,"6812":6803,"6813":6803,"6814":6803,"6815":6803,"6824":6819,"6825":6819,"6826":6819,"6827":6819,"6828":6819,"6829":6819,"6830":6819,"6831":6819,"6840":6835,"6841":6835,"6842":6835,"6843":6835,"6844":6835,"6845":6835,"6846":6835,"6847":6835,"6856":6851,"6857":6851,"6858":6851,"6859":6851,"6860":6851,"6861":6851,"6862":6851,"6863":6851,"6872":6867,"6873":6867,"6874":6867,"6875":6867,"6876":6867,"6877":6867,"6878":6867,"6879":6867,"6888":6883,"6889":6883,"6890":6883,"6891":6883,"6892":6883,"6893":6883,"6894":6883,"6895":6883,"6904":6899,"6905":6899,"6906":6899,"6907":6899,"6908":6899,"6909":6899,"6910":6899,"6911":6899,"6920":6915,"6921":6915,"6922":6915,"6923":6915,"6924":6915,"6925":6915,"6926":6915,"6927":6915,"6936":6931,"6937":6931,"6938":6931,"6939":6931,"6940":6931,"6941":6931,"6942":6931,"6943":6931,"6952":6947,"6953":6947,"6954":6947,"6955":6947,"6956":6947,"6957":6947,"6958":6947,"6959":6947,"6968":6963,"6969":6963,"6970":6963,"6971":6963,"6972":6963,"6973":6963,"6974":6963,"6975":6963,"6992":6994,"6993":6994,"6998":6994,"6999":6994,"7000":6994,"7001":6994,"7002":6994,"7003":6994,"7004":6994,"7005":6994,"7006":6994,"7007":6994,"7009":7008,"7010":7008,"7011":7008,"7012":7008,"7013":7008,"7014":7008,"7015":7008,"7016":7008,"7017":7008,"7018":7008,"7019":7008,"7020":7008,"7021":7008,"7022":7008,"7023":7008,"7032":7027,"7033":7027,"7034":7027,"7035":7027,"7036":7027,"7037":7027,"7038":7027,"7039":7027,"7048":7043,"7049":7043,"7050":7043,"7051":7043,"7052":7043,"7053":7043,"7054":7043,"7055":7043,"7072":7074,"7073":7074,"7078":7074,"7079":7074,"7080":7074,"7081":7074,"7082":7074,"7083":7074,"7084":7074,"7085":7074,"7086":7074,"7087":7074,"7104":7106,"7105":7106,"7110":7106,"7111":7106,"7112":7106,"7113":7106,"7114":7106,"7115":7106,"7116":7106,"7117":7106,"7118":7106,"7119":7106,"7136":7138,"7137":7138,"7142":7138,"7143":7138,"7144":7138,"7145":7138,"7146":7138,"7147":7138,"7148":7138,"7149":7138,"7150":7138,"7151":7138,"7168":7170,"7169":7170,"7174":7170,"7175":7170,"7176":7170,"7177":7170,"7178":7170,"7179":7170,"7180":7170,"7181":7170,"7182":7170,"7183":7170,"7192":7186,"7193":7186,"7194":7186,"7195":7186,"7196":7186,"7197":7186,"7198":7186,"7199":7186,"7216":7218,"7217":7218,"7222":7218,"7223":7218,"7224":7218,"7225":7218,"7226":7218,"7227":7218,"7228":7218,"7229":7218,"7230":7218,"7231":7218,"7232":7234,"7233":7234,"7238":7234,"7239":7234,"7240":7234,"7241":7234,"7242":7234,"7243":7234,"7244":7234,"7245":7234,"7246":7234,"7247":7234,"7248":7250,"7249":7250,"7254":7250,"7255":7250,"7256":7250,"7257":7250,"7258":7250,"7259":7250,"7260":7250,"7261":7250,"7262":7250,"7263":7250,"7264":7250,"7265":7250,"7270":7250,"7271":7250,"7272":7250,"7273":7250,"7274":7250,"7275":7250,"7276":7250,"7277":7250,"7278":7250,"7279":7250,"7297":7296,"7298":7296,"7299":7296,"7300":7296,"7301":7296,"7302":7296,"7303":7296,"7304":7296,"7305":7296,"7306":7296,"7307":7296,"7308":7296,"7309":7296,"7310":7296,"7311":7296,"7334":7328,"7335":7328,"7342":7328,"7343":7328,"7348":7346,"7349":7346,"7350":7346,"7351":7346,"7352":7346,"7353":7346,"7354":7346,"7355":7346,"7356":7346,"7357":7346,"7358":7346,"7359":7346,"7396":7392,"7397":7392,"7398":7392,"7399":7392,"7400":7392,"7401":7392,"7402":7392,"7403":7392,"7404":7392,"7405":7392,"7406":7392,"7407":7392,"7410":7408,"7411":7408,"7412":7408,"7413":7408,"7414":7408,"7415":7408,"7416":7408,"7417":7408,"7418":7408,"7419":7408,"7420":7408,"7421":7408,"7422":7408,"7423":7408,"7478":7472,"7479":7472,"7486":7472,"7487":7472,"7504":7218,"7505":7218,"7510":7218,"7511":7218,"7512":7218,"7513":7218,"7514":7218,"7515":7218,"7516":7218,"7517":7218,"7518":7218,"7519":7218}} \ No newline at end of file +{"knownStates":{"2564096":"Activator Rail","2564097":"Activator Rail","2564098":"Activator Rail","2564099":"Activator Rail","2564100":"Activator Rail","2564101":"Activator Rail","2564104":"Activator Rail","2564105":"Activator Rail","2564106":"Activator Rail","2564107":"Activator Rail","2564108":"Activator Rail","2564109":"Activator Rail","2560000":"Air","2565888":"Anvil","2565889":"Anvil","2565890":"Anvil","2565892":"Anvil","2565893":"Anvil","2565894":"Anvil","2565896":"Anvil","2565897":"Anvil","2565898":"Anvil","2565900":"Anvil","2565901":"Anvil","2565902":"Anvil","2566400":"Bamboo","2566401":"Bamboo","2566402":"Bamboo","2566404":"Bamboo","2566405":"Bamboo","2566406":"Bamboo","2566408":"Bamboo","2566409":"Bamboo","2566410":"Bamboo","2566412":"Bamboo","2566413":"Bamboo","2566414":"Bamboo","2566656":"Bamboo Sapling","2566657":"Bamboo Sapling","2566912":"Banner","2566913":"Banner","2566914":"Banner","2566915":"Banner","2566916":"Banner","2566917":"Banner","2566918":"Banner","2566919":"Banner","2566920":"Banner","2566921":"Banner","2566922":"Banner","2566923":"Banner","2566924":"Banner","2566925":"Banner","2566926":"Banner","2566927":"Banner","2695424":"Wall Banner","2695425":"Wall Banner","2695426":"Wall Banner","2695427":"Wall Banner","2567168":"Barrel","2567169":"Barrel","2567170":"Barrel","2567171":"Barrel","2567172":"Barrel","2567173":"Barrel","2567176":"Barrel","2567177":"Barrel","2567178":"Barrel","2567179":"Barrel","2567180":"Barrel","2567181":"Barrel","2567424":"Barrier","2567680":"Beacon","2567936":"Bed Block","2567937":"Bed Block","2567938":"Bed Block","2567939":"Bed Block","2567940":"Bed Block","2567941":"Bed Block","2567942":"Bed Block","2567943":"Bed Block","2567944":"Bed Block","2567945":"Bed Block","2567946":"Bed Block","2567947":"Bed Block","2567948":"Bed Block","2567949":"Bed Block","2567950":"Bed Block","2567951":"Bed Block","2568192":"Bedrock","2568193":"Bedrock","2568448":"Beetroot Block","2568449":"Beetroot Block","2568450":"Beetroot Block","2568451":"Beetroot Block","2568452":"Beetroot Block","2568453":"Beetroot Block","2568454":"Beetroot Block","2568455":"Beetroot Block","2568704":"Bell","2568705":"Bell","2568706":"Bell","2568707":"Bell","2568708":"Bell","2568709":"Bell","2568710":"Bell","2568711":"Bell","2568712":"Bell","2568713":"Bell","2568714":"Bell","2568715":"Bell","2568716":"Bell","2568717":"Bell","2568718":"Bell","2568719":"Bell","2573568":"Blue Ice","2574336":"Bone Block","2574337":"Bone Block","2574338":"Bone Block","2574592":"Bookshelf","2574848":"Brewing Stand","2574849":"Brewing Stand","2574850":"Brewing Stand","2574851":"Brewing Stand","2574852":"Brewing Stand","2574853":"Brewing Stand","2574854":"Brewing Stand","2574855":"Brewing Stand","2575360":"Brick Stairs","2575361":"Brick Stairs","2575362":"Brick Stairs","2575363":"Brick Stairs","2575364":"Brick Stairs","2575365":"Brick Stairs","2575366":"Brick Stairs","2575367":"Brick Stairs","2575872":"Bricks","2576384":"Brown Mushroom","2576896":"Cactus","2576897":"Cactus","2576898":"Cactus","2576899":"Cactus","2576900":"Cactus","2576901":"Cactus","2576902":"Cactus","2576903":"Cactus","2576904":"Cactus","2576905":"Cactus","2576906":"Cactus","2576907":"Cactus","2576908":"Cactus","2576909":"Cactus","2576910":"Cactus","2576911":"Cactus","2577152":"Cake","2577153":"Cake","2577154":"Cake","2577155":"Cake","2577156":"Cake","2577157":"Cake","2577158":"Cake","2577664":"Carrot Block","2577665":"Carrot Block","2577666":"Carrot Block","2577667":"Carrot Block","2577668":"Carrot Block","2577669":"Carrot Block","2577670":"Carrot Block","2577671":"Carrot Block","2578432":"Chest","2578433":"Chest","2578434":"Chest","2578435":"Chest","2579712":"Clay Block","2579968":"Coal Block","2580224":"Coal Ore","2580480":"Cobblestone","2649600":"Mossy Cobblestone","2580992":"Cobblestone Stairs","2580993":"Cobblestone Stairs","2580994":"Cobblestone Stairs","2580995":"Cobblestone Stairs","2580996":"Cobblestone Stairs","2580997":"Cobblestone Stairs","2580998":"Cobblestone Stairs","2580999":"Cobblestone Stairs","2650112":"Mossy Cobblestone Stairs","2650113":"Mossy Cobblestone Stairs","2650114":"Mossy Cobblestone Stairs","2650115":"Mossy Cobblestone Stairs","2650116":"Mossy Cobblestone Stairs","2650117":"Mossy Cobblestone Stairs","2650118":"Mossy Cobblestone Stairs","2650119":"Mossy Cobblestone Stairs","2581504":"Cobweb","2581760":"Cocoa Block","2581761":"Cocoa Block","2581762":"Cocoa Block","2581763":"Cocoa Block","2581764":"Cocoa Block","2581765":"Cocoa Block","2581766":"Cocoa Block","2581767":"Cocoa Block","2581768":"Cocoa Block","2581769":"Cocoa Block","2581770":"Cocoa Block","2581771":"Cocoa Block","2583040":"Coral Block","2583041":"Coral Block","2583042":"Coral Block","2583043":"Coral Block","2583044":"Coral Block","2583048":"Coral Block","2583049":"Coral Block","2583050":"Coral Block","2583051":"Coral Block","2583052":"Coral Block","2584064":"Crafting Table","2590464":"Daylight Sensor","2590465":"Daylight Sensor","2590466":"Daylight Sensor","2590467":"Daylight Sensor","2590468":"Daylight Sensor","2590469":"Daylight Sensor","2590470":"Daylight Sensor","2590471":"Daylight Sensor","2590472":"Daylight Sensor","2590473":"Daylight Sensor","2590474":"Daylight Sensor","2590475":"Daylight Sensor","2590476":"Daylight Sensor","2590477":"Daylight Sensor","2590478":"Daylight Sensor","2590479":"Daylight Sensor","2590480":"Daylight Sensor","2590481":"Daylight Sensor","2590482":"Daylight Sensor","2590483":"Daylight Sensor","2590484":"Daylight Sensor","2590485":"Daylight Sensor","2590486":"Daylight Sensor","2590487":"Daylight Sensor","2590488":"Daylight Sensor","2590489":"Daylight Sensor","2590490":"Daylight Sensor","2590491":"Daylight Sensor","2590492":"Daylight Sensor","2590493":"Daylight Sensor","2590494":"Daylight Sensor","2590495":"Daylight Sensor","2590720":"Dead Bush","2590976":"Detector Rail","2590977":"Detector Rail","2590978":"Detector Rail","2590979":"Detector Rail","2590980":"Detector Rail","2590981":"Detector Rail","2590984":"Detector Rail","2590985":"Detector Rail","2590986":"Detector Rail","2590987":"Detector Rail","2590988":"Detector Rail","2590989":"Detector Rail","2591232":"Diamond Block","2591488":"Diamond Ore","2592768":"Dirt","2592769":"Dirt","2692864":"Sunflower","2692865":"Sunflower","2646272":"Lilac","2646273":"Lilac","2675200":"Rose Bush","2675201":"Rose Bush","2660352":"Peony","2660353":"Peony","2593024":"Double Tallgrass","2593025":"Double Tallgrass","2644480":"Large Fern","2644481":"Large Fern","2593280":"Dragon Egg","2593536":"Dried Kelp Block","2624768":"Emerald Block","2625024":"Emerald Ore","2625280":"Enchanting Table","2625536":"End Portal Frame","2625537":"End Portal Frame","2625538":"End Portal Frame","2625539":"End Portal Frame","2625540":"End Portal Frame","2625541":"End Portal Frame","2625542":"End Portal Frame","2625543":"End Portal Frame","2625792":"End Rod","2625793":"End Rod","2625794":"End Rod","2625795":"End Rod","2625796":"End Rod","2625797":"End Rod","2626048":"End Stone","2627072":"End Stone Bricks","2626560":"End Stone Brick Stairs","2626561":"End Stone Brick Stairs","2626562":"End Stone Brick Stairs","2626563":"End Stone Brick Stairs","2626564":"End Stone Brick Stairs","2626565":"End Stone Brick Stairs","2626566":"End Stone Brick Stairs","2626567":"End Stone Brick Stairs","2627328":"Ender Chest","2627329":"Ender Chest","2627330":"Ender Chest","2627331":"Ender Chest","2627840":"Farmland","2627841":"Farmland","2627842":"Farmland","2627843":"Farmland","2627844":"Farmland","2627845":"Farmland","2627846":"Farmland","2627847":"Farmland","2628352":"Fire Block","2628353":"Fire Block","2628354":"Fire Block","2628355":"Fire Block","2628356":"Fire Block","2628357":"Fire Block","2628358":"Fire Block","2628359":"Fire Block","2628360":"Fire Block","2628361":"Fire Block","2628362":"Fire Block","2628363":"Fire Block","2628364":"Fire Block","2628365":"Fire Block","2628366":"Fire Block","2628367":"Fire Block","2628608":"Fletching Table","2585600":"Dandelion","2663680":"Poppy","2564608":"Allium","2566144":"Azure Bluet","2573824":"Blue Orchid","2583552":"Cornflower","2646528":"Lily of the Valley","2659584":"Orange Tulip","2659840":"Oxeye Daisy","2660864":"Pink Tulip","2672896":"Red Tulip","2697216":"White Tulip","2628864":"Flower Pot","2629120":"Frosted Ice","2629121":"Frosted Ice","2629122":"Frosted Ice","2629123":"Frosted Ice","2629376":"Furnace","2629377":"Furnace","2629378":"Furnace","2629379":"Furnace","2629380":"Furnace","2629381":"Furnace","2629382":"Furnace","2629383":"Furnace","2573056":"Blast Furnace","2573057":"Blast Furnace","2573058":"Blast Furnace","2573059":"Blast Furnace","2573060":"Blast Furnace","2573061":"Blast Furnace","2573062":"Blast Furnace","2573063":"Blast Furnace","2677760":"Smoker","2677761":"Smoker","2677762":"Smoker","2677763":"Smoker","2677764":"Smoker","2677765":"Smoker","2677766":"Smoker","2677767":"Smoker","2629632":"Glass","2629888":"Glass Pane","2630144":"Glowing Obsidian","2630400":"Glowstone","2630656":"Gold Block","2630912":"Gold Ore","2632192":"Grass","2632448":"Grass Path","2632704":"Gravel","2633728":"Hardened Clay","2633984":"Hardened Glass","2634240":"Hardened Glass Pane","2634496":"Hay Bale","2634497":"Hay Bale","2634498":"Hay Bale","2634752":"Hopper","2634754":"Hopper","2634755":"Hopper","2634756":"Hopper","2634757":"Hopper","2634760":"Hopper","2634762":"Hopper","2634763":"Hopper","2634764":"Hopper","2634765":"Hopper","2635008":"Ice","2636800":"update!","2637056":"ate!upd","2637312":"Invisible Bedrock","2637568":"Iron Block","2637824":"Iron Bars","2638080":"Iron Door","2638081":"Iron Door","2638082":"Iron Door","2638083":"Iron Door","2638084":"Iron Door","2638085":"Iron Door","2638086":"Iron Door","2638087":"Iron Door","2638088":"Iron Door","2638089":"Iron Door","2638090":"Iron Door","2638091":"Iron Door","2638092":"Iron Door","2638093":"Iron Door","2638094":"Iron Door","2638095":"Iron Door","2638096":"Iron Door","2638097":"Iron Door","2638098":"Iron Door","2638099":"Iron Door","2638100":"Iron Door","2638101":"Iron Door","2638102":"Iron Door","2638103":"Iron Door","2638104":"Iron Door","2638105":"Iron Door","2638106":"Iron Door","2638107":"Iron Door","2638108":"Iron Door","2638109":"Iron Door","2638110":"Iron Door","2638111":"Iron Door","2638592":"Iron Trapdoor","2638593":"Iron Trapdoor","2638594":"Iron Trapdoor","2638595":"Iron Trapdoor","2638596":"Iron Trapdoor","2638597":"Iron Trapdoor","2638598":"Iron Trapdoor","2638599":"Iron Trapdoor","2638600":"Iron Trapdoor","2638601":"Iron Trapdoor","2638602":"Iron Trapdoor","2638603":"Iron Trapdoor","2638604":"Iron Trapdoor","2638605":"Iron Trapdoor","2638606":"Iron Trapdoor","2638607":"Iron Trapdoor","2638336":"Iron Ore","2638848":"Item Frame","2638849":"Item Frame","2638850":"Item Frame","2638851":"Item Frame","2638852":"Item Frame","2638853":"Item Frame","2638854":"Item Frame","2638855":"Item Frame","2639104":"Jukebox","2643456":"Ladder","2643457":"Ladder","2643458":"Ladder","2643459":"Ladder","2643712":"Lantern","2643713":"Lantern","2643968":"Lapis Lazuli Block","2644224":"Lapis Lazuli Ore","2644736":"Lava","2644737":"Lava","2644738":"Lava","2644739":"Lava","2644740":"Lava","2644741":"Lava","2644742":"Lava","2644743":"Lava","2644744":"Lava","2644745":"Lava","2644746":"Lava","2644747":"Lava","2644748":"Lava","2644749":"Lava","2644750":"Lava","2644751":"Lava","2644752":"Lava","2644753":"Lava","2644754":"Lava","2644755":"Lava","2644756":"Lava","2644757":"Lava","2644758":"Lava","2644759":"Lava","2644760":"Lava","2644761":"Lava","2644762":"Lava","2644763":"Lava","2644764":"Lava","2644765":"Lava","2644766":"Lava","2644767":"Lava","2644992":"Lectern","2644993":"Lectern","2644994":"Lectern","2644995":"Lectern","2644996":"Lectern","2644997":"Lectern","2644998":"Lectern","2644999":"Lectern","2645504":"Lever","2645505":"Lever","2645506":"Lever","2645507":"Lever","2645508":"Lever","2645509":"Lever","2645510":"Lever","2645511":"Lever","2645512":"Lever","2645513":"Lever","2645514":"Lever","2645515":"Lever","2645516":"Lever","2645517":"Lever","2645518":"Lever","2645519":"Lever","2647552":"Loom","2647553":"Loom","2647554":"Loom","2647555":"Loom","2648064":"Magma Block","2648576":"Melon Block","2648832":"Melon Stem","2648833":"Melon Stem","2648834":"Melon Stem","2648835":"Melon Stem","2648836":"Melon Stem","2648837":"Melon Stem","2648838":"Melon Stem","2648839":"Melon Stem","2649344":"Monster Spawner","2651904":"Mycelium","2653184":"Nether Bricks","2671104":"Red Nether Bricks","2652160":"Nether Brick Fence","2652672":"Nether Brick Stairs","2652673":"Nether Brick Stairs","2652674":"Nether Brick Stairs","2652675":"Nether Brick Stairs","2652676":"Nether Brick Stairs","2652677":"Nether Brick Stairs","2652678":"Nether Brick Stairs","2652679":"Nether Brick Stairs","2670592":"Red Nether Brick Stairs","2670593":"Red Nether Brick Stairs","2670594":"Red Nether Brick Stairs","2670595":"Red Nether Brick Stairs","2670596":"Red Nether Brick Stairs","2670597":"Red Nether Brick Stairs","2670598":"Red Nether Brick Stairs","2670599":"Red Nether Brick Stairs","2653440":"Nether Portal","2653441":"Nether Portal","2653696":"Nether Quartz Ore","2653952":"Nether Reactor Core","2654464":"Nether Wart Block","2654208":"Nether Wart","2654209":"Nether Wart","2654210":"Nether Wart","2654211":"Nether Wart","2654720":"Netherrack","2654976":"Note Block","2659072":"Obsidian","2660096":"Packed Ice","2661120":"Podzol","2663936":"Potato Block","2663937":"Potato Block","2663938":"Potato Block","2663939":"Potato Block","2663940":"Potato Block","2663941":"Potato Block","2663942":"Potato Block","2663943":"Potato Block","2664192":"Powered Rail","2664193":"Powered Rail","2664194":"Powered Rail","2664195":"Powered Rail","2664196":"Powered Rail","2664197":"Powered Rail","2664200":"Powered Rail","2664201":"Powered Rail","2664202":"Powered Rail","2664203":"Powered Rail","2664204":"Powered Rail","2664205":"Powered Rail","2664448":"Prismarine","2589696":"Dark Prismarine","2664704":"Prismarine Bricks","2665216":"Prismarine Bricks Stairs","2665217":"Prismarine Bricks Stairs","2665218":"Prismarine Bricks Stairs","2665219":"Prismarine Bricks Stairs","2665220":"Prismarine Bricks Stairs","2665221":"Prismarine Bricks Stairs","2665222":"Prismarine Bricks Stairs","2665223":"Prismarine Bricks Stairs","2590208":"Dark Prismarine Stairs","2590209":"Dark Prismarine Stairs","2590210":"Dark Prismarine Stairs","2590211":"Dark Prismarine Stairs","2590212":"Dark Prismarine Stairs","2590213":"Dark Prismarine Stairs","2590214":"Dark Prismarine Stairs","2590215":"Dark Prismarine Stairs","2665728":"Prismarine Stairs","2665729":"Prismarine Stairs","2665730":"Prismarine Stairs","2665731":"Prismarine Stairs","2665732":"Prismarine Stairs","2665733":"Prismarine Stairs","2665734":"Prismarine Stairs","2665735":"Prismarine Stairs","2666240":"Pumpkin","2577920":"Carved Pumpkin","2577921":"Carved Pumpkin","2577922":"Carved Pumpkin","2577923":"Carved Pumpkin","2647296":"Jack o'Lantern","2647297":"Jack o'Lantern","2647298":"Jack o'Lantern","2647299":"Jack o'Lantern","2666496":"Pumpkin Stem","2666497":"Pumpkin Stem","2666498":"Pumpkin Stem","2666499":"Pumpkin Stem","2666500":"Pumpkin Stem","2666501":"Pumpkin Stem","2666502":"Pumpkin Stem","2666503":"Pumpkin Stem","2667264":"Purpur Block","2667520":"Purpur Pillar","2667521":"Purpur Pillar","2667522":"Purpur Pillar","2668032":"Purpur Stairs","2668033":"Purpur Stairs","2668034":"Purpur Stairs","2668035":"Purpur Stairs","2668036":"Purpur Stairs","2668037":"Purpur Stairs","2668038":"Purpur Stairs","2668039":"Purpur Stairs","2668288":"Quartz Block","2578688":"Chiseled Quartz Block","2578689":"Chiseled Quartz Block","2578690":"Chiseled Quartz Block","2668544":"Quartz Pillar","2668545":"Quartz Pillar","2668546":"Quartz Pillar","2678016":"Smooth Quartz Block","2669056":"Quartz Stairs","2669057":"Quartz Stairs","2669058":"Quartz Stairs","2669059":"Quartz Stairs","2669060":"Quartz Stairs","2669061":"Quartz Stairs","2669062":"Quartz Stairs","2669063":"Quartz Stairs","2678528":"Smooth Quartz Stairs","2678529":"Smooth Quartz Stairs","2678530":"Smooth Quartz Stairs","2678531":"Smooth Quartz Stairs","2678532":"Smooth Quartz Stairs","2678533":"Smooth Quartz Stairs","2678534":"Smooth Quartz Stairs","2678535":"Smooth Quartz Stairs","2669312":"Rail","2669313":"Rail","2669314":"Rail","2669315":"Rail","2669316":"Rail","2669317":"Rail","2669318":"Rail","2669319":"Rail","2669320":"Rail","2669321":"Rail","2669824":"Red Mushroom","2673152":"Redstone Block","2673408":"Redstone Comparator","2673409":"Redstone Comparator","2673410":"Redstone Comparator","2673411":"Redstone Comparator","2673412":"Redstone Comparator","2673413":"Redstone Comparator","2673414":"Redstone Comparator","2673415":"Redstone Comparator","2673416":"Redstone Comparator","2673417":"Redstone Comparator","2673418":"Redstone Comparator","2673419":"Redstone Comparator","2673420":"Redstone Comparator","2673421":"Redstone Comparator","2673422":"Redstone Comparator","2673423":"Redstone Comparator","2673664":"Redstone Lamp","2673665":"Redstone Lamp","2673920":"Redstone Ore","2673921":"Redstone Ore","2674176":"Redstone Repeater","2674177":"Redstone Repeater","2674178":"Redstone Repeater","2674179":"Redstone Repeater","2674180":"Redstone Repeater","2674181":"Redstone Repeater","2674182":"Redstone Repeater","2674183":"Redstone Repeater","2674184":"Redstone Repeater","2674185":"Redstone Repeater","2674186":"Redstone Repeater","2674187":"Redstone Repeater","2674188":"Redstone Repeater","2674189":"Redstone Repeater","2674190":"Redstone Repeater","2674191":"Redstone Repeater","2674192":"Redstone Repeater","2674193":"Redstone Repeater","2674194":"Redstone Repeater","2674195":"Redstone Repeater","2674196":"Redstone Repeater","2674197":"Redstone Repeater","2674198":"Redstone Repeater","2674199":"Redstone Repeater","2674200":"Redstone Repeater","2674201":"Redstone Repeater","2674202":"Redstone Repeater","2674203":"Redstone Repeater","2674204":"Redstone Repeater","2674205":"Redstone Repeater","2674206":"Redstone Repeater","2674207":"Redstone Repeater","2674433":"Redstone Torch","2674434":"Redstone Torch","2674435":"Redstone Torch","2674436":"Redstone Torch","2674437":"Redstone Torch","2674441":"Redstone Torch","2674442":"Redstone Torch","2674443":"Redstone Torch","2674444":"Redstone Torch","2674445":"Redstone Torch","2674688":"Redstone","2674689":"Redstone","2674690":"Redstone","2674691":"Redstone","2674692":"Redstone","2674693":"Redstone","2674694":"Redstone","2674695":"Redstone","2674696":"Redstone","2674697":"Redstone","2674698":"Redstone","2674699":"Redstone","2674700":"Redstone","2674701":"Redstone","2674702":"Redstone","2674703":"Redstone","2674944":"reserved6","2675456":"Sand","2671360":"Red Sand","2676736":"Sea Lantern","2676992":"Sea Pickle","2676993":"Sea Pickle","2676994":"Sea Pickle","2676995":"Sea Pickle","2676996":"Sea Pickle","2676997":"Sea Pickle","2676998":"Sea Pickle","2676999":"Sea Pickle","2649089":"Mob Head","2649090":"Mob Head","2649091":"Mob Head","2649092":"Mob Head","2649093":"Mob Head","2677504":"Slime Block","2680832":"Snow Block","2681088":"Snow Layer","2681089":"Snow Layer","2681090":"Snow Layer","2681091":"Snow Layer","2681092":"Snow Layer","2681093":"Snow Layer","2681094":"Snow Layer","2681095":"Snow Layer","2681344":"Soul Sand","2681600":"Sponge","2681601":"Sponge","2677248":"Shulker Box","2686976":"Stone","2564864":"Andesite","2591744":"Diorite","2631168":"Granite","2661376":"Polished Andesite","2662144":"Polished Diorite","2662912":"Polished Granite","2688000":"Stone Bricks","2651392":"Mossy Stone Bricks","2583808":"Cracked Stone Bricks","2579456":"Chiseled Stone Bricks","2636288":"Infested Stone","2636544":"Infested Stone Brick","2635520":"Infested Cobblestone","2636032":"Infested Mossy Stone Brick","2635776":"Infested Cracked Stone Brick","2635264":"Infested Chiseled Stone Brick","2689024":"Stone Stairs","2689025":"Stone Stairs","2689026":"Stone Stairs","2689027":"Stone Stairs","2689028":"Stone Stairs","2689029":"Stone Stairs","2689030":"Stone Stairs","2689031":"Stone Stairs","2680320":"Smooth Stone","2565376":"Andesite Stairs","2565377":"Andesite Stairs","2565378":"Andesite Stairs","2565379":"Andesite Stairs","2565380":"Andesite Stairs","2565381":"Andesite Stairs","2565382":"Andesite Stairs","2565383":"Andesite Stairs","2592256":"Diorite Stairs","2592257":"Diorite Stairs","2592258":"Diorite Stairs","2592259":"Diorite Stairs","2592260":"Diorite Stairs","2592261":"Diorite Stairs","2592262":"Diorite Stairs","2592263":"Diorite Stairs","2631680":"Granite Stairs","2631681":"Granite Stairs","2631682":"Granite Stairs","2631683":"Granite Stairs","2631684":"Granite Stairs","2631685":"Granite Stairs","2631686":"Granite Stairs","2631687":"Granite Stairs","2661888":"Polished Andesite Stairs","2661889":"Polished Andesite Stairs","2661890":"Polished Andesite Stairs","2661891":"Polished Andesite Stairs","2661892":"Polished Andesite Stairs","2661893":"Polished Andesite Stairs","2661894":"Polished Andesite Stairs","2661895":"Polished Andesite Stairs","2662656":"Polished Diorite Stairs","2662657":"Polished Diorite Stairs","2662658":"Polished Diorite Stairs","2662659":"Polished Diorite Stairs","2662660":"Polished Diorite Stairs","2662661":"Polished Diorite Stairs","2662662":"Polished Diorite Stairs","2662663":"Polished Diorite Stairs","2663424":"Polished Granite Stairs","2663425":"Polished Granite Stairs","2663426":"Polished Granite Stairs","2663427":"Polished Granite Stairs","2663428":"Polished Granite Stairs","2663429":"Polished Granite Stairs","2663430":"Polished Granite Stairs","2663431":"Polished Granite Stairs","2687488":"Stone Brick Stairs","2687489":"Stone Brick Stairs","2687490":"Stone Brick Stairs","2687491":"Stone Brick Stairs","2687492":"Stone Brick Stairs","2687493":"Stone Brick Stairs","2687494":"Stone Brick Stairs","2687495":"Stone Brick Stairs","2650880":"Mossy Stone Brick Stairs","2650881":"Mossy Stone Brick Stairs","2650882":"Mossy Stone Brick Stairs","2650883":"Mossy Stone Brick Stairs","2650884":"Mossy Stone Brick Stairs","2650885":"Mossy Stone Brick Stairs","2650886":"Mossy Stone Brick Stairs","2650887":"Mossy Stone Brick Stairs","2688256":"Stone Button","2688257":"Stone Button","2688258":"Stone Button","2688259":"Stone Button","2688260":"Stone Button","2688261":"Stone Button","2688264":"Stone Button","2688265":"Stone Button","2688266":"Stone Button","2688267":"Stone Button","2688268":"Stone Button","2688269":"Stone Button","2689280":"Stonecutter","2689281":"Stonecutter","2689282":"Stonecutter","2689283":"Stonecutter","2688512":"Stone Pressure Plate","2688513":"Stone Pressure Plate","2575104":"Brick Slab","2575105":"Brick Slab","2575106":"Brick Slab","2580736":"Cobblestone Slab","2580737":"Cobblestone Slab","2580738":"Cobblestone Slab","2627584":"Fake Wooden Slab","2627585":"Fake Wooden Slab","2627586":"Fake Wooden Slab","2652416":"Nether Brick Slab","2652417":"Nether Brick Slab","2652418":"Nether Brick Slab","2668800":"Quartz Slab","2668801":"Quartz Slab","2668802":"Quartz Slab","2675968":"Sandstone Slab","2675969":"Sandstone Slab","2675970":"Sandstone Slab","2680576":"Smooth Stone Slab","2680577":"Smooth Stone Slab","2680578":"Smooth Stone Slab","2687232":"Stone Brick Slab","2687233":"Stone Brick Slab","2687234":"Stone Brick Slab","2589952":"Dark Prismarine Slab","2589953":"Dark Prismarine Slab","2589954":"Dark Prismarine Slab","2649856":"Mossy Cobblestone Slab","2649857":"Mossy Cobblestone Slab","2649858":"Mossy Cobblestone Slab","2665472":"Prismarine Slab","2665473":"Prismarine Slab","2665474":"Prismarine Slab","2664960":"Prismarine Bricks Slab","2664961":"Prismarine Bricks Slab","2664962":"Prismarine Bricks Slab","2667776":"Purpur Slab","2667777":"Purpur Slab","2667778":"Purpur Slab","2670336":"Red Nether Brick Slab","2670337":"Red Nether Brick Slab","2670338":"Red Nether Brick Slab","2671872":"Red Sandstone Slab","2671873":"Red Sandstone Slab","2671874":"Red Sandstone Slab","2679808":"Smooth Sandstone Slab","2679809":"Smooth Sandstone Slab","2679810":"Smooth Sandstone Slab","2565120":"Andesite Slab","2565121":"Andesite Slab","2565122":"Andesite Slab","2592000":"Diorite Slab","2592001":"Diorite Slab","2592002":"Diorite Slab","2626304":"End Stone Brick Slab","2626305":"End Stone Brick Slab","2626306":"End Stone Brick Slab","2631424":"Granite Slab","2631425":"Granite Slab","2631426":"Granite Slab","2661632":"Polished Andesite Slab","2661633":"Polished Andesite Slab","2661634":"Polished Andesite Slab","2662400":"Polished Diorite Slab","2662401":"Polished Diorite Slab","2662402":"Polished Diorite Slab","2663168":"Polished Granite Slab","2663169":"Polished Granite Slab","2663170":"Polished Granite Slab","2679040":"Smooth Red Sandstone Slab","2679041":"Smooth Red Sandstone Slab","2679042":"Smooth Red Sandstone Slab","2584576":"Cut Red Sandstone Slab","2584577":"Cut Red Sandstone Slab","2584578":"Cut Red Sandstone Slab","2585088":"Cut Sandstone Slab","2585089":"Cut Sandstone Slab","2585090":"Cut Sandstone Slab","2650624":"Mossy Stone Brick Slab","2650625":"Mossy Stone Brick Slab","2650626":"Mossy Stone Brick Slab","2678272":"Smooth Quartz Slab","2678273":"Smooth Quartz Slab","2678274":"Smooth Quartz Slab","2688768":"Stone Slab","2688769":"Stone Slab","2688770":"Stone Slab","2645248":"Legacy Stonecutter","2692608":"Sugarcane","2692609":"Sugarcane","2692610":"Sugarcane","2692611":"Sugarcane","2692612":"Sugarcane","2692613":"Sugarcane","2692614":"Sugarcane","2692615":"Sugarcane","2692616":"Sugarcane","2692617":"Sugarcane","2692618":"Sugarcane","2692619":"Sugarcane","2692620":"Sugarcane","2692621":"Sugarcane","2692622":"Sugarcane","2692623":"Sugarcane","2693120":"Sweet Berry Bush","2693121":"Sweet Berry Bush","2693122":"Sweet Berry Bush","2693123":"Sweet Berry Bush","2693632":"TNT","2693633":"TNT","2693634":"TNT","2693635":"TNT","2628096":"Fern","2693376":"Tall Grass","2574081":"Blue Torch","2574082":"Blue Torch","2574083":"Blue Torch","2574084":"Blue Torch","2574085":"Blue Torch","2667009":"Purple Torch","2667010":"Purple Torch","2667011":"Purple Torch","2667012":"Purple Torch","2667013":"Purple Torch","2672641":"Red Torch","2672642":"Red Torch","2672643":"Red Torch","2672644":"Red Torch","2672645":"Red Torch","2633473":"Green Torch","2633474":"Green Torch","2633475":"Green Torch","2633476":"Green Torch","2633477":"Green Torch","2693889":"Torch","2693890":"Torch","2693891":"Torch","2693892":"Torch","2693893":"Torch","2694144":"Trapped Chest","2694145":"Trapped Chest","2694146":"Trapped Chest","2694147":"Trapped Chest","2694400":"Tripwire","2694401":"Tripwire","2694402":"Tripwire","2694403":"Tripwire","2694404":"Tripwire","2694405":"Tripwire","2694406":"Tripwire","2694407":"Tripwire","2694408":"Tripwire","2694409":"Tripwire","2694410":"Tripwire","2694411":"Tripwire","2694412":"Tripwire","2694413":"Tripwire","2694414":"Tripwire","2694415":"Tripwire","2694656":"Tripwire Hook","2694657":"Tripwire Hook","2694658":"Tripwire Hook","2694659":"Tripwire Hook","2694660":"Tripwire Hook","2694661":"Tripwire Hook","2694662":"Tripwire Hook","2694663":"Tripwire Hook","2694664":"Tripwire Hook","2694665":"Tripwire Hook","2694666":"Tripwire Hook","2694667":"Tripwire Hook","2694668":"Tripwire Hook","2694669":"Tripwire Hook","2694670":"Tripwire Hook","2694671":"Tripwire Hook","2694913":"Underwater Torch","2694914":"Underwater Torch","2694915":"Underwater Torch","2694916":"Underwater Torch","2694917":"Underwater Torch","2695168":"Vines","2695169":"Vines","2695170":"Vines","2695171":"Vines","2695172":"Vines","2695173":"Vines","2695174":"Vines","2695175":"Vines","2695176":"Vines","2695177":"Vines","2695178":"Vines","2695179":"Vines","2695180":"Vines","2695181":"Vines","2695182":"Vines","2695183":"Vines","2695936":"Water","2695937":"Water","2695938":"Water","2695939":"Water","2695940":"Water","2695941":"Water","2695942":"Water","2695943":"Water","2695944":"Water","2695945":"Water","2695946":"Water","2695947":"Water","2695948":"Water","2695949":"Water","2695950":"Water","2695951":"Water","2695952":"Water","2695953":"Water","2695954":"Water","2695955":"Water","2695956":"Water","2695957":"Water","2695958":"Water","2695959":"Water","2695960":"Water","2695961":"Water","2695962":"Water","2695963":"Water","2695964":"Water","2695965":"Water","2695966":"Water","2695967":"Water","2646784":"Lily Pad","2696192":"Weighted Pressure Plate Heavy","2696193":"Weighted Pressure Plate Heavy","2696194":"Weighted Pressure Plate Heavy","2696195":"Weighted Pressure Plate Heavy","2696196":"Weighted Pressure Plate Heavy","2696197":"Weighted Pressure Plate Heavy","2696198":"Weighted Pressure Plate Heavy","2696199":"Weighted Pressure Plate Heavy","2696200":"Weighted Pressure Plate Heavy","2696201":"Weighted Pressure Plate Heavy","2696202":"Weighted Pressure Plate Heavy","2696203":"Weighted Pressure Plate Heavy","2696204":"Weighted Pressure Plate Heavy","2696205":"Weighted Pressure Plate Heavy","2696206":"Weighted Pressure Plate Heavy","2696207":"Weighted Pressure Plate Heavy","2696448":"Weighted Pressure Plate Light","2696449":"Weighted Pressure Plate Light","2696450":"Weighted Pressure Plate Light","2696451":"Weighted Pressure Plate Light","2696452":"Weighted Pressure Plate Light","2696453":"Weighted Pressure Plate Light","2696454":"Weighted Pressure Plate Light","2696455":"Weighted Pressure Plate Light","2696456":"Weighted Pressure Plate Light","2696457":"Weighted Pressure Plate Light","2696458":"Weighted Pressure Plate Light","2696459":"Weighted Pressure Plate Light","2696460":"Weighted Pressure Plate Light","2696461":"Weighted Pressure Plate Light","2696462":"Weighted Pressure Plate Light","2696463":"Weighted Pressure Plate Light","2696704":"Wheat Block","2696705":"Wheat Block","2696706":"Wheat Block","2696707":"Wheat Block","2696708":"Wheat Block","2696709":"Wheat Block","2696710":"Wheat Block","2696711":"Wheat Block","2656768":"Oak Planks","2657280":"Oak Sapling","2657281":"Oak Sapling","2655744":"Oak Fence","2657792":"Oak Slab","2657793":"Oak Slab","2657794":"Oak Slab","2656256":"Oak Leaves","2656257":"Oak Leaves","2656258":"Oak Leaves","2656259":"Oak Leaves","2656512":"Oak Log","2656513":"Oak Log","2656514":"Oak Log","2691584":"Stripped Oak Log","2691585":"Stripped Oak Log","2691586":"Stripped Oak Log","2658816":"Oak Wood","2691840":"Stripped Oak Wood","2656000":"Oak Fence Gate","2656001":"Oak Fence Gate","2656002":"Oak Fence Gate","2656003":"Oak Fence Gate","2656004":"Oak Fence Gate","2656005":"Oak Fence Gate","2656006":"Oak Fence Gate","2656007":"Oak Fence Gate","2656008":"Oak Fence Gate","2656009":"Oak Fence Gate","2656010":"Oak Fence Gate","2656011":"Oak Fence Gate","2656012":"Oak Fence Gate","2656013":"Oak Fence Gate","2656014":"Oak Fence Gate","2656015":"Oak Fence Gate","2658048":"Oak Stairs","2658049":"Oak Stairs","2658050":"Oak Stairs","2658051":"Oak Stairs","2658052":"Oak Stairs","2658053":"Oak Stairs","2658054":"Oak Stairs","2658055":"Oak Stairs","2655488":"Oak Door","2655489":"Oak Door","2655490":"Oak Door","2655491":"Oak Door","2655492":"Oak Door","2655493":"Oak Door","2655494":"Oak Door","2655495":"Oak Door","2655496":"Oak Door","2655497":"Oak Door","2655498":"Oak Door","2655499":"Oak Door","2655500":"Oak Door","2655501":"Oak Door","2655502":"Oak Door","2655503":"Oak Door","2655504":"Oak Door","2655505":"Oak Door","2655506":"Oak Door","2655507":"Oak Door","2655508":"Oak Door","2655509":"Oak Door","2655510":"Oak Door","2655511":"Oak Door","2655512":"Oak Door","2655513":"Oak Door","2655514":"Oak Door","2655515":"Oak Door","2655516":"Oak Door","2655517":"Oak Door","2655518":"Oak Door","2655519":"Oak Door","2655232":"Oak Button","2655233":"Oak Button","2655234":"Oak Button","2655235":"Oak Button","2655236":"Oak Button","2655237":"Oak Button","2655240":"Oak Button","2655241":"Oak Button","2655242":"Oak Button","2655243":"Oak Button","2655244":"Oak Button","2655245":"Oak Button","2657024":"Oak Pressure Plate","2657025":"Oak Pressure Plate","2658304":"Oak Trapdoor","2658305":"Oak Trapdoor","2658306":"Oak Trapdoor","2658307":"Oak Trapdoor","2658308":"Oak Trapdoor","2658309":"Oak Trapdoor","2658310":"Oak Trapdoor","2658311":"Oak Trapdoor","2658312":"Oak Trapdoor","2658313":"Oak Trapdoor","2658314":"Oak Trapdoor","2658315":"Oak Trapdoor","2658316":"Oak Trapdoor","2658317":"Oak Trapdoor","2658318":"Oak Trapdoor","2658319":"Oak Trapdoor","2657536":"Oak Sign","2657537":"Oak Sign","2657538":"Oak Sign","2657539":"Oak Sign","2657540":"Oak Sign","2657541":"Oak Sign","2657542":"Oak Sign","2657543":"Oak Sign","2657544":"Oak Sign","2657545":"Oak Sign","2657546":"Oak Sign","2657547":"Oak Sign","2657548":"Oak Sign","2657549":"Oak Sign","2657550":"Oak Sign","2657551":"Oak Sign","2658560":"Oak Wall Sign","2658561":"Oak Wall Sign","2658562":"Oak Wall Sign","2658563":"Oak Wall Sign","2683392":"Spruce Planks","2683904":"Spruce Sapling","2683905":"Spruce Sapling","2682368":"Spruce Fence","2684416":"Spruce Slab","2684417":"Spruce Slab","2684418":"Spruce Slab","2682880":"Spruce Leaves","2682881":"Spruce Leaves","2682882":"Spruce Leaves","2682883":"Spruce Leaves","2683136":"Spruce Log","2683137":"Spruce Log","2683138":"Spruce Log","2692096":"Stripped Spruce Log","2692097":"Stripped Spruce Log","2692098":"Stripped Spruce Log","2685440":"Spruce Wood","2692352":"Stripped Spruce Wood","2682624":"Spruce Fence Gate","2682625":"Spruce Fence Gate","2682626":"Spruce Fence Gate","2682627":"Spruce Fence Gate","2682628":"Spruce Fence Gate","2682629":"Spruce Fence Gate","2682630":"Spruce Fence Gate","2682631":"Spruce Fence Gate","2682632":"Spruce Fence Gate","2682633":"Spruce Fence Gate","2682634":"Spruce Fence Gate","2682635":"Spruce Fence Gate","2682636":"Spruce Fence Gate","2682637":"Spruce Fence Gate","2682638":"Spruce Fence Gate","2682639":"Spruce Fence Gate","2684672":"Spruce Stairs","2684673":"Spruce Stairs","2684674":"Spruce Stairs","2684675":"Spruce Stairs","2684676":"Spruce Stairs","2684677":"Spruce Stairs","2684678":"Spruce Stairs","2684679":"Spruce Stairs","2682112":"Spruce Door","2682113":"Spruce Door","2682114":"Spruce Door","2682115":"Spruce Door","2682116":"Spruce Door","2682117":"Spruce Door","2682118":"Spruce Door","2682119":"Spruce Door","2682120":"Spruce Door","2682121":"Spruce Door","2682122":"Spruce Door","2682123":"Spruce Door","2682124":"Spruce Door","2682125":"Spruce Door","2682126":"Spruce Door","2682127":"Spruce Door","2682128":"Spruce Door","2682129":"Spruce Door","2682130":"Spruce Door","2682131":"Spruce Door","2682132":"Spruce Door","2682133":"Spruce Door","2682134":"Spruce Door","2682135":"Spruce Door","2682136":"Spruce Door","2682137":"Spruce Door","2682138":"Spruce Door","2682139":"Spruce Door","2682140":"Spruce Door","2682141":"Spruce Door","2682142":"Spruce Door","2682143":"Spruce Door","2681856":"Spruce Button","2681857":"Spruce Button","2681858":"Spruce Button","2681859":"Spruce Button","2681860":"Spruce Button","2681861":"Spruce Button","2681864":"Spruce Button","2681865":"Spruce Button","2681866":"Spruce Button","2681867":"Spruce Button","2681868":"Spruce Button","2681869":"Spruce Button","2683648":"Spruce Pressure Plate","2683649":"Spruce Pressure Plate","2684928":"Spruce Trapdoor","2684929":"Spruce Trapdoor","2684930":"Spruce Trapdoor","2684931":"Spruce Trapdoor","2684932":"Spruce Trapdoor","2684933":"Spruce Trapdoor","2684934":"Spruce Trapdoor","2684935":"Spruce Trapdoor","2684936":"Spruce Trapdoor","2684937":"Spruce Trapdoor","2684938":"Spruce Trapdoor","2684939":"Spruce Trapdoor","2684940":"Spruce Trapdoor","2684941":"Spruce Trapdoor","2684942":"Spruce Trapdoor","2684943":"Spruce Trapdoor","2684160":"Spruce Sign","2684161":"Spruce Sign","2684162":"Spruce Sign","2684163":"Spruce Sign","2684164":"Spruce Sign","2684165":"Spruce Sign","2684166":"Spruce Sign","2684167":"Spruce Sign","2684168":"Spruce Sign","2684169":"Spruce Sign","2684170":"Spruce Sign","2684171":"Spruce Sign","2684172":"Spruce Sign","2684173":"Spruce Sign","2684174":"Spruce Sign","2684175":"Spruce Sign","2685184":"Spruce Wall Sign","2685185":"Spruce Wall Sign","2685186":"Spruce Wall Sign","2685187":"Spruce Wall Sign","2570496":"Birch Planks","2571008":"Birch Sapling","2571009":"Birch Sapling","2569472":"Birch Fence","2571520":"Birch Slab","2571521":"Birch Slab","2571522":"Birch Slab","2569984":"Birch Leaves","2569985":"Birch Leaves","2569986":"Birch Leaves","2569987":"Birch Leaves","2570240":"Birch Log","2570241":"Birch Log","2570242":"Birch Log","2690048":"Stripped Birch Log","2690049":"Stripped Birch Log","2690050":"Stripped Birch Log","2572544":"Birch Wood","2690304":"Stripped Birch Wood","2569728":"Birch Fence Gate","2569729":"Birch Fence Gate","2569730":"Birch Fence Gate","2569731":"Birch Fence Gate","2569732":"Birch Fence Gate","2569733":"Birch Fence Gate","2569734":"Birch Fence Gate","2569735":"Birch Fence Gate","2569736":"Birch Fence Gate","2569737":"Birch Fence Gate","2569738":"Birch Fence Gate","2569739":"Birch Fence Gate","2569740":"Birch Fence Gate","2569741":"Birch Fence Gate","2569742":"Birch Fence Gate","2569743":"Birch Fence Gate","2571776":"Birch Stairs","2571777":"Birch Stairs","2571778":"Birch Stairs","2571779":"Birch Stairs","2571780":"Birch Stairs","2571781":"Birch Stairs","2571782":"Birch Stairs","2571783":"Birch Stairs","2569216":"Birch Door","2569217":"Birch Door","2569218":"Birch Door","2569219":"Birch Door","2569220":"Birch Door","2569221":"Birch Door","2569222":"Birch Door","2569223":"Birch Door","2569224":"Birch Door","2569225":"Birch Door","2569226":"Birch Door","2569227":"Birch Door","2569228":"Birch Door","2569229":"Birch Door","2569230":"Birch Door","2569231":"Birch Door","2569232":"Birch Door","2569233":"Birch Door","2569234":"Birch Door","2569235":"Birch Door","2569236":"Birch Door","2569237":"Birch Door","2569238":"Birch Door","2569239":"Birch Door","2569240":"Birch Door","2569241":"Birch Door","2569242":"Birch Door","2569243":"Birch Door","2569244":"Birch Door","2569245":"Birch Door","2569246":"Birch Door","2569247":"Birch Door","2568960":"Birch Button","2568961":"Birch Button","2568962":"Birch Button","2568963":"Birch Button","2568964":"Birch Button","2568965":"Birch Button","2568968":"Birch Button","2568969":"Birch Button","2568970":"Birch Button","2568971":"Birch Button","2568972":"Birch Button","2568973":"Birch Button","2570752":"Birch Pressure Plate","2570753":"Birch Pressure Plate","2572032":"Birch Trapdoor","2572033":"Birch Trapdoor","2572034":"Birch Trapdoor","2572035":"Birch Trapdoor","2572036":"Birch Trapdoor","2572037":"Birch Trapdoor","2572038":"Birch Trapdoor","2572039":"Birch Trapdoor","2572040":"Birch Trapdoor","2572041":"Birch Trapdoor","2572042":"Birch Trapdoor","2572043":"Birch Trapdoor","2572044":"Birch Trapdoor","2572045":"Birch Trapdoor","2572046":"Birch Trapdoor","2572047":"Birch Trapdoor","2571264":"Birch Sign","2571265":"Birch Sign","2571266":"Birch Sign","2571267":"Birch Sign","2571268":"Birch Sign","2571269":"Birch Sign","2571270":"Birch Sign","2571271":"Birch Sign","2571272":"Birch Sign","2571273":"Birch Sign","2571274":"Birch Sign","2571275":"Birch Sign","2571276":"Birch Sign","2571277":"Birch Sign","2571278":"Birch Sign","2571279":"Birch Sign","2572288":"Birch Wall Sign","2572289":"Birch Wall Sign","2572290":"Birch Wall Sign","2572291":"Birch Wall Sign","2640896":"Jungle Planks","2641408":"Jungle Sapling","2641409":"Jungle Sapling","2639872":"Jungle Fence","2641920":"Jungle Slab","2641921":"Jungle Slab","2641922":"Jungle Slab","2640384":"Jungle Leaves","2640385":"Jungle Leaves","2640386":"Jungle Leaves","2640387":"Jungle Leaves","2640640":"Jungle Log","2640641":"Jungle Log","2640642":"Jungle Log","2691072":"Stripped Jungle Log","2691073":"Stripped Jungle Log","2691074":"Stripped Jungle Log","2642944":"Jungle Wood","2691328":"Stripped Jungle Wood","2640128":"Jungle Fence Gate","2640129":"Jungle Fence Gate","2640130":"Jungle Fence Gate","2640131":"Jungle Fence Gate","2640132":"Jungle Fence Gate","2640133":"Jungle Fence Gate","2640134":"Jungle Fence Gate","2640135":"Jungle Fence Gate","2640136":"Jungle Fence Gate","2640137":"Jungle Fence Gate","2640138":"Jungle Fence Gate","2640139":"Jungle Fence Gate","2640140":"Jungle Fence Gate","2640141":"Jungle Fence Gate","2640142":"Jungle Fence Gate","2640143":"Jungle Fence Gate","2642176":"Jungle Stairs","2642177":"Jungle Stairs","2642178":"Jungle Stairs","2642179":"Jungle Stairs","2642180":"Jungle Stairs","2642181":"Jungle Stairs","2642182":"Jungle Stairs","2642183":"Jungle Stairs","2639616":"Jungle Door","2639617":"Jungle Door","2639618":"Jungle Door","2639619":"Jungle Door","2639620":"Jungle Door","2639621":"Jungle Door","2639622":"Jungle Door","2639623":"Jungle Door","2639624":"Jungle Door","2639625":"Jungle Door","2639626":"Jungle Door","2639627":"Jungle Door","2639628":"Jungle Door","2639629":"Jungle Door","2639630":"Jungle Door","2639631":"Jungle Door","2639632":"Jungle Door","2639633":"Jungle Door","2639634":"Jungle Door","2639635":"Jungle Door","2639636":"Jungle Door","2639637":"Jungle Door","2639638":"Jungle Door","2639639":"Jungle Door","2639640":"Jungle Door","2639641":"Jungle Door","2639642":"Jungle Door","2639643":"Jungle Door","2639644":"Jungle Door","2639645":"Jungle Door","2639646":"Jungle Door","2639647":"Jungle Door","2639360":"Jungle Button","2639361":"Jungle Button","2639362":"Jungle Button","2639363":"Jungle Button","2639364":"Jungle Button","2639365":"Jungle Button","2639368":"Jungle Button","2639369":"Jungle Button","2639370":"Jungle Button","2639371":"Jungle Button","2639372":"Jungle Button","2639373":"Jungle Button","2641152":"Jungle Pressure Plate","2641153":"Jungle Pressure Plate","2642432":"Jungle Trapdoor","2642433":"Jungle Trapdoor","2642434":"Jungle Trapdoor","2642435":"Jungle Trapdoor","2642436":"Jungle Trapdoor","2642437":"Jungle Trapdoor","2642438":"Jungle Trapdoor","2642439":"Jungle Trapdoor","2642440":"Jungle Trapdoor","2642441":"Jungle Trapdoor","2642442":"Jungle Trapdoor","2642443":"Jungle Trapdoor","2642444":"Jungle Trapdoor","2642445":"Jungle Trapdoor","2642446":"Jungle Trapdoor","2642447":"Jungle Trapdoor","2641664":"Jungle Sign","2641665":"Jungle Sign","2641666":"Jungle Sign","2641667":"Jungle Sign","2641668":"Jungle Sign","2641669":"Jungle Sign","2641670":"Jungle Sign","2641671":"Jungle Sign","2641672":"Jungle Sign","2641673":"Jungle Sign","2641674":"Jungle Sign","2641675":"Jungle Sign","2641676":"Jungle Sign","2641677":"Jungle Sign","2641678":"Jungle Sign","2641679":"Jungle Sign","2642688":"Jungle Wall Sign","2642689":"Jungle Wall Sign","2642690":"Jungle Wall Sign","2642691":"Jungle Wall Sign","2561792":"Acacia Planks","2562304":"Acacia Sapling","2562305":"Acacia Sapling","2560768":"Acacia Fence","2562816":"Acacia Slab","2562817":"Acacia Slab","2562818":"Acacia Slab","2561280":"Acacia Leaves","2561281":"Acacia Leaves","2561282":"Acacia Leaves","2561283":"Acacia Leaves","2561536":"Acacia Log","2561537":"Acacia Log","2561538":"Acacia Log","2689536":"Stripped Acacia Log","2689537":"Stripped Acacia Log","2689538":"Stripped Acacia Log","2563840":"Acacia Wood","2689792":"Stripped Acacia Wood","2561024":"Acacia Fence Gate","2561025":"Acacia Fence Gate","2561026":"Acacia Fence Gate","2561027":"Acacia Fence Gate","2561028":"Acacia Fence Gate","2561029":"Acacia Fence Gate","2561030":"Acacia Fence Gate","2561031":"Acacia Fence Gate","2561032":"Acacia Fence Gate","2561033":"Acacia Fence Gate","2561034":"Acacia Fence Gate","2561035":"Acacia Fence Gate","2561036":"Acacia Fence Gate","2561037":"Acacia Fence Gate","2561038":"Acacia Fence Gate","2561039":"Acacia Fence Gate","2563072":"Acacia Stairs","2563073":"Acacia Stairs","2563074":"Acacia Stairs","2563075":"Acacia Stairs","2563076":"Acacia Stairs","2563077":"Acacia Stairs","2563078":"Acacia Stairs","2563079":"Acacia Stairs","2560512":"Acacia Door","2560513":"Acacia Door","2560514":"Acacia Door","2560515":"Acacia Door","2560516":"Acacia Door","2560517":"Acacia Door","2560518":"Acacia Door","2560519":"Acacia Door","2560520":"Acacia Door","2560521":"Acacia Door","2560522":"Acacia Door","2560523":"Acacia Door","2560524":"Acacia Door","2560525":"Acacia Door","2560526":"Acacia Door","2560527":"Acacia Door","2560528":"Acacia Door","2560529":"Acacia Door","2560530":"Acacia Door","2560531":"Acacia Door","2560532":"Acacia Door","2560533":"Acacia Door","2560534":"Acacia Door","2560535":"Acacia Door","2560536":"Acacia Door","2560537":"Acacia Door","2560538":"Acacia Door","2560539":"Acacia Door","2560540":"Acacia Door","2560541":"Acacia Door","2560542":"Acacia Door","2560543":"Acacia Door","2560256":"Acacia Button","2560257":"Acacia Button","2560258":"Acacia Button","2560259":"Acacia Button","2560260":"Acacia Button","2560261":"Acacia Button","2560264":"Acacia Button","2560265":"Acacia Button","2560266":"Acacia Button","2560267":"Acacia Button","2560268":"Acacia Button","2560269":"Acacia Button","2562048":"Acacia Pressure Plate","2562049":"Acacia Pressure Plate","2563328":"Acacia Trapdoor","2563329":"Acacia Trapdoor","2563330":"Acacia Trapdoor","2563331":"Acacia Trapdoor","2563332":"Acacia Trapdoor","2563333":"Acacia Trapdoor","2563334":"Acacia Trapdoor","2563335":"Acacia Trapdoor","2563336":"Acacia Trapdoor","2563337":"Acacia Trapdoor","2563338":"Acacia Trapdoor","2563339":"Acacia Trapdoor","2563340":"Acacia Trapdoor","2563341":"Acacia Trapdoor","2563342":"Acacia Trapdoor","2563343":"Acacia Trapdoor","2562560":"Acacia Sign","2562561":"Acacia Sign","2562562":"Acacia Sign","2562563":"Acacia Sign","2562564":"Acacia Sign","2562565":"Acacia Sign","2562566":"Acacia Sign","2562567":"Acacia Sign","2562568":"Acacia Sign","2562569":"Acacia Sign","2562570":"Acacia Sign","2562571":"Acacia Sign","2562572":"Acacia Sign","2562573":"Acacia Sign","2562574":"Acacia Sign","2562575":"Acacia Sign","2563584":"Acacia Wall Sign","2563585":"Acacia Wall Sign","2563586":"Acacia Wall Sign","2563587":"Acacia Wall Sign","2587392":"Dark Oak Planks","2587904":"Dark Oak Sapling","2587905":"Dark Oak Sapling","2586368":"Dark Oak Fence","2588416":"Dark Oak Slab","2588417":"Dark Oak Slab","2588418":"Dark Oak Slab","2586880":"Dark Oak Leaves","2586881":"Dark Oak Leaves","2586882":"Dark Oak Leaves","2586883":"Dark Oak Leaves","2587136":"Dark Oak Log","2587137":"Dark Oak Log","2587138":"Dark Oak Log","2690560":"Stripped Dark Oak Log","2690561":"Stripped Dark Oak Log","2690562":"Stripped Dark Oak Log","2589440":"Dark Oak Wood","2690816":"Stripped Dark Oak Wood","2586624":"Dark Oak Fence Gate","2586625":"Dark Oak Fence Gate","2586626":"Dark Oak Fence Gate","2586627":"Dark Oak Fence Gate","2586628":"Dark Oak Fence Gate","2586629":"Dark Oak Fence Gate","2586630":"Dark Oak Fence Gate","2586631":"Dark Oak Fence Gate","2586632":"Dark Oak Fence Gate","2586633":"Dark Oak Fence Gate","2586634":"Dark Oak Fence Gate","2586635":"Dark Oak Fence Gate","2586636":"Dark Oak Fence Gate","2586637":"Dark Oak Fence Gate","2586638":"Dark Oak Fence Gate","2586639":"Dark Oak Fence Gate","2588672":"Dark Oak Stairs","2588673":"Dark Oak Stairs","2588674":"Dark Oak Stairs","2588675":"Dark Oak Stairs","2588676":"Dark Oak Stairs","2588677":"Dark Oak Stairs","2588678":"Dark Oak Stairs","2588679":"Dark Oak Stairs","2586112":"Dark Oak Door","2586113":"Dark Oak Door","2586114":"Dark Oak Door","2586115":"Dark Oak Door","2586116":"Dark Oak Door","2586117":"Dark Oak Door","2586118":"Dark Oak Door","2586119":"Dark Oak Door","2586120":"Dark Oak Door","2586121":"Dark Oak Door","2586122":"Dark Oak Door","2586123":"Dark Oak Door","2586124":"Dark Oak Door","2586125":"Dark Oak Door","2586126":"Dark Oak Door","2586127":"Dark Oak Door","2586128":"Dark Oak Door","2586129":"Dark Oak Door","2586130":"Dark Oak Door","2586131":"Dark Oak Door","2586132":"Dark Oak Door","2586133":"Dark Oak Door","2586134":"Dark Oak Door","2586135":"Dark Oak Door","2586136":"Dark Oak Door","2586137":"Dark Oak Door","2586138":"Dark Oak Door","2586139":"Dark Oak Door","2586140":"Dark Oak Door","2586141":"Dark Oak Door","2586142":"Dark Oak Door","2586143":"Dark Oak Door","2585856":"Dark Oak Button","2585857":"Dark Oak Button","2585858":"Dark Oak Button","2585859":"Dark Oak Button","2585860":"Dark Oak Button","2585861":"Dark Oak Button","2585864":"Dark Oak Button","2585865":"Dark Oak Button","2585866":"Dark Oak Button","2585867":"Dark Oak Button","2585868":"Dark Oak Button","2585869":"Dark Oak Button","2587648":"Dark Oak Pressure Plate","2587649":"Dark Oak Pressure Plate","2588928":"Dark Oak Trapdoor","2588929":"Dark Oak Trapdoor","2588930":"Dark Oak Trapdoor","2588931":"Dark Oak Trapdoor","2588932":"Dark Oak Trapdoor","2588933":"Dark Oak Trapdoor","2588934":"Dark Oak Trapdoor","2588935":"Dark Oak Trapdoor","2588936":"Dark Oak Trapdoor","2588937":"Dark Oak Trapdoor","2588938":"Dark Oak Trapdoor","2588939":"Dark Oak Trapdoor","2588940":"Dark Oak Trapdoor","2588941":"Dark Oak Trapdoor","2588942":"Dark Oak Trapdoor","2588943":"Dark Oak Trapdoor","2588160":"Dark Oak Sign","2588161":"Dark Oak Sign","2588162":"Dark Oak Sign","2588163":"Dark Oak Sign","2588164":"Dark Oak Sign","2588165":"Dark Oak Sign","2588166":"Dark Oak Sign","2588167":"Dark Oak Sign","2588168":"Dark Oak Sign","2588169":"Dark Oak Sign","2588170":"Dark Oak Sign","2588171":"Dark Oak Sign","2588172":"Dark Oak Sign","2588173":"Dark Oak Sign","2588174":"Dark Oak Sign","2588175":"Dark Oak Sign","2589184":"Dark Oak Wall Sign","2589185":"Dark Oak Wall Sign","2589186":"Dark Oak Wall Sign","2589187":"Dark Oak Wall Sign","2672128":"Red Sandstone Stairs","2672129":"Red Sandstone Stairs","2672130":"Red Sandstone Stairs","2672131":"Red Sandstone Stairs","2672132":"Red Sandstone Stairs","2672133":"Red Sandstone Stairs","2672134":"Red Sandstone Stairs","2672135":"Red Sandstone Stairs","2679296":"Smooth Red Sandstone Stairs","2679297":"Smooth Red Sandstone Stairs","2679298":"Smooth Red Sandstone Stairs","2679299":"Smooth Red Sandstone Stairs","2679300":"Smooth Red Sandstone Stairs","2679301":"Smooth Red Sandstone Stairs","2679302":"Smooth Red Sandstone Stairs","2679303":"Smooth Red Sandstone Stairs","2671616":"Red Sandstone","2578944":"Chiseled Red Sandstone","2584320":"Cut Red Sandstone","2678784":"Smooth Red Sandstone","2676224":"Sandstone Stairs","2676225":"Sandstone Stairs","2676226":"Sandstone Stairs","2676227":"Sandstone Stairs","2676228":"Sandstone Stairs","2676229":"Sandstone Stairs","2676230":"Sandstone Stairs","2676231":"Sandstone Stairs","2680064":"Smooth Sandstone Stairs","2680065":"Smooth Sandstone Stairs","2680066":"Smooth Sandstone Stairs","2680067":"Smooth Sandstone Stairs","2680068":"Smooth Sandstone Stairs","2680069":"Smooth Sandstone Stairs","2680070":"Smooth Sandstone Stairs","2680071":"Smooth Sandstone Stairs","2675712":"Sandstone","2579200":"Chiseled Sandstone","2584832":"Cut Sandstone","2679552":"Smooth Sandstone","2696960":"White Glazed Terracotta","2696961":"White Glazed Terracotta","2696962":"White Glazed Terracotta","2696963":"White Glazed Terracotta","2659328":"Orange Glazed Terracotta","2659329":"Orange Glazed Terracotta","2659330":"Orange Glazed Terracotta","2659331":"Orange Glazed Terracotta","2647808":"Magenta Glazed Terracotta","2647809":"Magenta Glazed Terracotta","2647810":"Magenta Glazed Terracotta","2647811":"Magenta Glazed Terracotta","2645760":"Light Blue Glazed Terracotta","2645761":"Light Blue Glazed Terracotta","2645762":"Light Blue Glazed Terracotta","2645763":"Light Blue Glazed Terracotta","2697728":"Yellow Glazed Terracotta","2697729":"Yellow Glazed Terracotta","2697730":"Yellow Glazed Terracotta","2697731":"Yellow Glazed Terracotta","2647040":"Lime Glazed Terracotta","2647041":"Lime Glazed Terracotta","2647042":"Lime Glazed Terracotta","2647043":"Lime Glazed Terracotta","2660608":"Pink Glazed Terracotta","2660609":"Pink Glazed Terracotta","2660610":"Pink Glazed Terracotta","2660611":"Pink Glazed Terracotta","2632960":"Gray Glazed Terracotta","2632961":"Gray Glazed Terracotta","2632962":"Gray Glazed Terracotta","2632963":"Gray Glazed Terracotta","2646016":"Light Gray Glazed Terracotta","2646017":"Light Gray Glazed Terracotta","2646018":"Light Gray Glazed Terracotta","2646019":"Light Gray Glazed Terracotta","2585344":"Cyan Glazed Terracotta","2585345":"Cyan Glazed Terracotta","2585346":"Cyan Glazed Terracotta","2585347":"Cyan Glazed Terracotta","2666752":"Purple Glazed Terracotta","2666753":"Purple Glazed Terracotta","2666754":"Purple Glazed Terracotta","2666755":"Purple Glazed Terracotta","2573312":"Blue Glazed Terracotta","2573313":"Blue Glazed Terracotta","2573314":"Blue Glazed Terracotta","2573315":"Blue Glazed Terracotta","2576128":"Brown Glazed Terracotta","2576129":"Brown Glazed Terracotta","2576130":"Brown Glazed Terracotta","2576131":"Brown Glazed Terracotta","2633216":"Green Glazed Terracotta","2633217":"Green Glazed Terracotta","2633218":"Green Glazed Terracotta","2633219":"Green Glazed Terracotta","2669568":"Red Glazed Terracotta","2669569":"Red Glazed Terracotta","2669570":"Red Glazed Terracotta","2669571":"Red Glazed Terracotta","2572800":"Black Glazed Terracotta","2572801":"Black Glazed Terracotta","2572802":"Black Glazed Terracotta","2572803":"Black Glazed Terracotta","2593792":"Dyed Shulker Box","2593793":"Dyed Shulker Box","2593794":"Dyed Shulker Box","2593795":"Dyed Shulker Box","2593796":"Dyed Shulker Box","2593797":"Dyed Shulker Box","2593798":"Dyed Shulker Box","2593799":"Dyed Shulker Box","2593800":"Dyed Shulker Box","2593801":"Dyed Shulker Box","2593802":"Dyed Shulker Box","2593803":"Dyed Shulker Box","2593804":"Dyed Shulker Box","2593805":"Dyed Shulker Box","2593806":"Dyed Shulker Box","2593807":"Dyed Shulker Box","2685952":"Stained Glass","2685953":"Stained Glass","2685954":"Stained Glass","2685955":"Stained Glass","2685956":"Stained Glass","2685957":"Stained Glass","2685958":"Stained Glass","2685959":"Stained Glass","2685960":"Stained Glass","2685961":"Stained Glass","2685962":"Stained Glass","2685963":"Stained Glass","2685964":"Stained Glass","2685965":"Stained Glass","2685966":"Stained Glass","2685967":"Stained Glass","2686208":"Stained Glass Pane","2686209":"Stained Glass Pane","2686210":"Stained Glass Pane","2686211":"Stained Glass Pane","2686212":"Stained Glass Pane","2686213":"Stained Glass Pane","2686214":"Stained Glass Pane","2686215":"Stained Glass Pane","2686216":"Stained Glass Pane","2686217":"Stained Glass Pane","2686218":"Stained Glass Pane","2686219":"Stained Glass Pane","2686220":"Stained Glass Pane","2686221":"Stained Glass Pane","2686222":"Stained Glass Pane","2686223":"Stained Glass Pane","2685696":"Stained Clay","2685697":"Stained Clay","2685698":"Stained Clay","2685699":"Stained Clay","2685700":"Stained Clay","2685701":"Stained Clay","2685702":"Stained Clay","2685703":"Stained Clay","2685704":"Stained Clay","2685705":"Stained Clay","2685706":"Stained Clay","2685707":"Stained Clay","2685708":"Stained Clay","2685709":"Stained Clay","2685710":"Stained Clay","2685711":"Stained Clay","2686464":"Stained Hardened Glass","2686465":"Stained Hardened Glass","2686466":"Stained Hardened Glass","2686467":"Stained Hardened Glass","2686468":"Stained Hardened Glass","2686469":"Stained Hardened Glass","2686470":"Stained Hardened Glass","2686471":"Stained Hardened Glass","2686472":"Stained Hardened Glass","2686473":"Stained Hardened Glass","2686474":"Stained Hardened Glass","2686475":"Stained Hardened Glass","2686476":"Stained Hardened Glass","2686477":"Stained Hardened Glass","2686478":"Stained Hardened Glass","2686479":"Stained Hardened Glass","2686720":"Stained Hardened Glass Pane","2686721":"Stained Hardened Glass Pane","2686722":"Stained Hardened Glass Pane","2686723":"Stained Hardened Glass Pane","2686724":"Stained Hardened Glass Pane","2686725":"Stained Hardened Glass Pane","2686726":"Stained Hardened Glass Pane","2686727":"Stained Hardened Glass Pane","2686728":"Stained Hardened Glass Pane","2686729":"Stained Hardened Glass Pane","2686730":"Stained Hardened Glass Pane","2686731":"Stained Hardened Glass Pane","2686732":"Stained Hardened Glass Pane","2686733":"Stained Hardened Glass Pane","2686734":"Stained Hardened Glass Pane","2686735":"Stained Hardened Glass Pane","2577408":"Carpet","2577409":"Carpet","2577410":"Carpet","2577411":"Carpet","2577412":"Carpet","2577413":"Carpet","2577414":"Carpet","2577415":"Carpet","2577416":"Carpet","2577417":"Carpet","2577418":"Carpet","2577419":"Carpet","2577420":"Carpet","2577421":"Carpet","2577422":"Carpet","2577423":"Carpet","2582272":"Concrete","2582273":"Concrete","2582274":"Concrete","2582275":"Concrete","2582276":"Concrete","2582277":"Concrete","2582278":"Concrete","2582279":"Concrete","2582280":"Concrete","2582281":"Concrete","2582282":"Concrete","2582283":"Concrete","2582284":"Concrete","2582285":"Concrete","2582286":"Concrete","2582287":"Concrete","2582528":"Concrete Powder","2582529":"Concrete Powder","2582530":"Concrete Powder","2582531":"Concrete Powder","2582532":"Concrete Powder","2582533":"Concrete Powder","2582534":"Concrete Powder","2582535":"Concrete Powder","2582536":"Concrete Powder","2582537":"Concrete Powder","2582538":"Concrete Powder","2582539":"Concrete Powder","2582540":"Concrete Powder","2582541":"Concrete Powder","2582542":"Concrete Powder","2582543":"Concrete Powder","2697472":"Wool","2697473":"Wool","2697474":"Wool","2697475":"Wool","2697476":"Wool","2697477":"Wool","2697478":"Wool","2697479":"Wool","2697480":"Wool","2697481":"Wool","2697482":"Wool","2697483":"Wool","2697484":"Wool","2697485":"Wool","2697486":"Wool","2697487":"Wool","2581248":"Cobblestone Wall","2565632":"Andesite Wall","2575616":"Brick Wall","2592512":"Diorite Wall","2626816":"End Stone Brick Wall","2631936":"Granite Wall","2651136":"Mossy Stone Brick Wall","2650368":"Mossy Cobblestone Wall","2652928":"Nether Brick Wall","2665984":"Prismarine Wall","2670848":"Red Nether Brick Wall","2672384":"Red Sandstone Wall","2676480":"Sandstone Wall","2687744":"Stone Brick Wall","2624000":"???","2605568":"Hydrogen","2605056":"Helium","2607872":"Lithium","2596352":"Beryllium","2597120":"Boron","2598400":"Carbon","2611968":"Nitrogen","2612992":"Oxygen","2603008":"Fluorine","2610688":"Neon","2619136":"Sodium","2608640":"Magnesium","2594304":"Aluminum","2618624":"Silicon","2613504":"Phosphorus","2619648":"Sulfur","2599168":"Chlorine","2595072":"Argon","2614528":"Potassium","2597888":"Calcium","2617856":"Scandium","2622208":"Titanium","2622976":"Vanadium","2599424":"Chromium","2608896":"Manganese","2606592":"Iron","2599680":"Cobalt","2611200":"Nickel","2600448":"Copper","2624256":"Zinc","2603776":"Gallium","2604032":"Germanium","2595328":"Arsenic","2618368":"Selenium","2597376":"Bromine","2606848":"Krypton","2616832":"Rubidium","2619392":"Strontium","2623744":"Yttrium","2624512":"Zirconium","2611712":"Niobium","2609920":"Molybdenum","2620160":"Technetium","2617088":"Ruthenium","2616320":"Rhodium","2613248":"Palladium","2618880":"Silver","2597632":"Cadmium","2605824":"Indium","2621952":"Tin","2594816":"Antimony","2620416":"Tellurium","2606080":"Iodine","2623232":"Xenon","2598912":"Cesium","2595840":"Barium","2607104":"Lanthanum","2598656":"Cerium","2614784":"Praseodymium","2610432":"Neodymium","2615040":"Promethium","2617600":"Samarium","2602240":"Europium","2603520":"Gadolinium","2620928":"Terbium","2601472":"Dysprosium","2605312":"Holmium","2601984":"Erbium","2621696":"Thulium","2623488":"Ytterbium","2608384":"Lutetium","2604544":"Hafnium","2619904":"Tantalum","2622464":"Tungsten","2616064":"Rhenium","2612736":"Osmium","2606336":"Iridium","2613760":"Platinum","2604288":"Gold","2609664":"Mercury","2621184":"Thallium","2607616":"Lead","2596608":"Bismuth","2614272":"Polonium","2595584":"Astatine","2615808":"Radon","2603264":"Francium","2615552":"Radium","2594048":"Actinium","2621440":"Thorium","2615296":"Protactinium","2622720":"Uranium","2610944":"Neptunium","2614016":"Plutonium","2594560":"Americium","2600704":"Curium","2596096":"Berkelium","2598144":"Californium","2601728":"Einsteinium","2602496":"Fermium","2609408":"Mendelevium","2612224":"Nobelium","2607360":"Lawrencium","2617344":"Rutherfordium","2601216":"Dubnium","2618112":"Seaborgium","2596864":"Bohrium","2604800":"Hassium","2609152":"Meitnerium","2600960":"Darmstadtium","2616576":"Roentgenium","2600192":"Copernicium","2611456":"Nihonium","2602752":"Flerovium","2610176":"Moscovium","2608128":"Livermorium","2620672":"Tennessine","2612480":"Oganesson","2582016":"Compound Creator","2582017":"Compound Creator","2582018":"Compound Creator","2582019":"Compound Creator","2599936":"Element Constructor","2599937":"Element Constructor","2599938":"Element Constructor","2599939":"Element Constructor","2643200":"Lab Table","2643201":"Lab Table","2643202":"Lab Table","2643203":"Lab Table","2648320":"Material Reducer","2648321":"Material Reducer","2648322":"Material Reducer","2648323":"Material Reducer","2578176":"Heat Block","2576640":"Brown Mushroom Block","2576641":"Brown Mushroom Block","2576642":"Brown Mushroom Block","2576643":"Brown Mushroom Block","2576644":"Brown Mushroom Block","2576645":"Brown Mushroom Block","2576646":"Brown Mushroom Block","2576647":"Brown Mushroom Block","2576648":"Brown Mushroom Block","2576649":"Brown Mushroom Block","2576650":"Brown Mushroom Block","2670080":"Red Mushroom Block","2670081":"Red Mushroom Block","2670082":"Red Mushroom Block","2670083":"Red Mushroom Block","2670084":"Red Mushroom Block","2670085":"Red Mushroom Block","2670086":"Red Mushroom Block","2670087":"Red Mushroom Block","2670088":"Red Mushroom Block","2670089":"Red Mushroom Block","2670090":"Red Mushroom Block","2651648":"Mushroom Stem","2564352":"All Sided Mushroom Stem","2582784":"Coral","2582785":"Coral","2582786":"Coral","2582787":"Coral","2582788":"Coral","2582792":"Coral","2582793":"Coral","2582794":"Coral","2582795":"Coral","2582796":"Coral","2583296":"Coral Fan","2583297":"Coral Fan","2583298":"Coral Fan","2583299":"Coral Fan","2583300":"Coral Fan","2583304":"Coral Fan","2583305":"Coral Fan","2583306":"Coral Fan","2583307":"Coral Fan","2583308":"Coral Fan","2583312":"Coral Fan","2583313":"Coral Fan","2583314":"Coral Fan","2583315":"Coral Fan","2583316":"Coral Fan","2583320":"Coral Fan","2583321":"Coral Fan","2583322":"Coral Fan","2583323":"Coral Fan","2583324":"Coral Fan","2695680":"Wall Coral Fan","2695681":"Wall Coral Fan","2695682":"Wall Coral Fan","2695683":"Wall Coral Fan","2695684":"Wall Coral Fan","2695688":"Wall Coral Fan","2695689":"Wall Coral Fan","2695690":"Wall Coral Fan","2695691":"Wall Coral Fan","2695692":"Wall Coral Fan","2695696":"Wall Coral Fan","2695697":"Wall Coral Fan","2695698":"Wall Coral Fan","2695699":"Wall Coral Fan","2695700":"Wall Coral Fan","2695704":"Wall Coral Fan","2695705":"Wall Coral Fan","2695706":"Wall Coral Fan","2695707":"Wall Coral Fan","2695708":"Wall Coral Fan","2695712":"Wall Coral Fan","2695713":"Wall Coral Fan","2695714":"Wall Coral Fan","2695715":"Wall Coral Fan","2695716":"Wall Coral Fan","2695720":"Wall Coral Fan","2695721":"Wall Coral Fan","2695722":"Wall Coral Fan","2695723":"Wall Coral Fan","2695724":"Wall Coral Fan","2695728":"Wall Coral Fan","2695729":"Wall Coral Fan","2695730":"Wall Coral Fan","2695731":"Wall Coral Fan","2695732":"Wall Coral Fan","2695736":"Wall Coral Fan","2695737":"Wall Coral Fan","2695738":"Wall Coral Fan","2695739":"Wall Coral Fan","2695740":"Wall Coral Fan"},"stateDataBits":8} \ No newline at end of file diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index 5e0e84ef6..edff9f792 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -22,7 +22,8 @@ declare(strict_types=1); use pocketmine\block\Block; -use pocketmine\block\UnknownBlock; +use pocketmine\block\BlockFactory; +use pocketmine\utils\AssumptionFailedError; require dirname(__DIR__, 3) . '/vendor/autoload.php'; @@ -31,53 +32,56 @@ require dirname(__DIR__, 3) . '/vendor/autoload.php'; $factory = new \pocketmine\block\BlockFactory(); $remaps = []; $new = []; -for($index = 0; $index < 1024 << Block::INTERNAL_METADATA_BITS; $index++){ - $block = $factory->fromFullBlock($index); - if($block instanceof UnknownBlock){ - continue; - } - if($block->getFullId() !== $index){ - $remaps[$index] = $block->getFullId(); - }else{ - $new[$index] = $block->getName(); - } -} -$oldTable = json_decode(file_get_contents(__DIR__ . '/block_factory_consistency_check.json'), true); -if(!is_array($oldTable)){ - throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, remaps: array}"); -} -$old = $oldTable["knownStates"]; -$oldRemaps = $oldTable["remaps"]; - -foreach($old as $k => $name){ - if(!isset($new[$k])){ - echo "Removed state for $name (" . ($k >> \pocketmine\block\Block::INTERNAL_METADATA_BITS) . ":" . ($k & \pocketmine\block\Block::INTERNAL_METADATA_MASK) . ")\n"; - } -} -foreach($new as $k => $name){ - if(!isset($old[$k])){ - echo "Added state for $name (" . ($k >> \pocketmine\block\Block::INTERNAL_METADATA_BITS) . ":" . ($k & \pocketmine\block\Block::INTERNAL_METADATA_MASK) . ")\n"; - }elseif($old[$k] !== $name){ - echo "Name changed (" . ($k >> \pocketmine\block\Block::INTERNAL_METADATA_BITS) . ":" . ($k & \pocketmine\block\Block::INTERNAL_METADATA_MASK) . "): " . $old[$k] . " -> " . $name . "\n"; +foreach(BlockFactory::getInstance()->getAllKnownStates() as $index => $block){ + if($index !== $block->getStateId()){ + throw new AssumptionFailedError("State index should always match state ID"); } + $new[$index] = $block->getName(); } -foreach($oldRemaps as $index => $mapped){ - if(!isset($remaps[$index])){ - echo "Removed remap of " . ($index >> 4) . ":" . ($index & 0xf) . "\n"; +$oldTablePath = __DIR__ . '/block_factory_consistency_check.json'; +if(file_exists($oldTablePath)){ + $oldTable = json_decode(file_get_contents($oldTablePath), true); + if(!is_array($oldTable)){ + throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, stateDataBits: int}"); } -} -foreach($remaps as $index => $mapped){ - if(!isset($oldRemaps[$index])){ - echo "New remap of " . ($index >> 4) . ":" . ($index & 0xf) . " (" . ($mapped >> 4) . ":" . ($mapped & 0xf) . ") (" . $new[$mapped] . ")\n"; - }elseif($oldRemaps[$index] !== $mapped){ - echo "Remap changed for " . ($index >> 4) . ":" . ($index & 0xf) . " (" . ($oldRemaps[$index] >> 4) . ":" . ($oldRemaps[$index] & 0xf) . " (" . $old[$oldRemaps[$index]] . ") -> " . ($mapped >> 4) . ":" . ($mapped & 0xf) . " (" . $new[$mapped] . "))\n"; + $old = $oldTable["knownStates"]; + $oldStateDataSize = $oldTable["stateDataBits"]; + $oldStateDataMask = ~(~0 << $oldStateDataSize); + + if($oldStateDataSize !== Block::INTERNAL_STATE_DATA_BITS){ + echo "State data bits changed from $oldStateDataSize to " . Block::INTERNAL_STATE_DATA_BITS . "\n"; } + + foreach($old as $k => $name){ + [$oldId, $oldStateData] = [$k >> $oldStateDataSize, $k & $oldStateDataMask]; + $reconstructedK = ($oldId << Block::INTERNAL_STATE_DATA_BITS) | $oldStateData; + if(!isset($new[$reconstructedK])){ + echo "Removed state for $name ($oldId:$oldStateData)\n"; + } + } + foreach($new as $k => $name){ + [$newId, $newStateData] = [$k >> Block::INTERNAL_STATE_DATA_BITS, $k & Block::INTERNAL_STATE_DATA_MASK]; + if($newStateData > $oldStateDataMask){ + echo "Added state for $name ($newId, $newStateData)\n"; + }else{ + $reconstructedK = ($newId << $oldStateDataSize) | $newStateData; + if(!isset($old[$reconstructedK])){ + echo "Added state for $name ($newId:$newStateData)\n"; + }elseif($old[$reconstructedK] !== $name){ + echo "Name changed ($newId:$newStateData) " . $old[$reconstructedK] . " -> " . $name . "\n"; + } + } + + } +}else{ + echo "WARNING: Unable to calculate diff, no previous consistency check file found\n"; } + file_put_contents(__DIR__ . '/block_factory_consistency_check.json', json_encode( [ "knownStates" => $new, - "remaps" => $remaps + "stateDataBits" => Block::INTERNAL_STATE_DATA_BITS ], JSON_THROW_ON_ERROR )); diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index 3d171bd04..33232f553 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -27,6 +27,7 @@ use PHPUnit\Framework\TestCase; use pocketmine\block\BlockFactory; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateSerializeException; +use function print_r; final class BlockSerializerDeserializerTest extends TestCase{ private BlockStateToBlockObjectDeserializer $deserializer; @@ -50,7 +51,7 @@ final class BlockSerializerDeserializerTest extends TestCase{ self::fail($e->getMessage()); } - self::assertSame($block->getFullId(), $newBlock->getFullId(), "Mismatch of blockstate for " . $block->getName()); + self::assertSame($block->getStateId(), $newBlock->getStateId(), "Mismatch of blockstate for " . $block->getName() . ", " . print_r($block, true) . " vs " . print_r($newBlock, true)); } } } diff --git a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php index f191670c0..581735503 100644 --- a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php +++ b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php @@ -33,7 +33,7 @@ class RuntimeBlockMappingTest extends TestCase{ */ public function testAllBlockStatesSerialize() : void{ foreach(BlockFactory::getInstance()->getAllKnownStates() as $state){ - RuntimeBlockMapping::getInstance()->toRuntimeId($state->getFullId()); + RuntimeBlockMapping::getInstance()->toRuntimeId($state->getStateId()); } } } From 5f7521027e4d57fff612c8564dbeb352ae27f5fc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 23:24:03 +0100 Subject: [PATCH 160/692] FlowerPot: remove usage of legacy variant --- src/block/FlowerPot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/FlowerPot.php b/src/block/FlowerPot.php index fd25284cd..e4dc03fb2 100644 --- a/src/block/FlowerPot.php +++ b/src/block/FlowerPot.php @@ -83,7 +83,7 @@ class FlowerPot extends Flowable{ $block instanceof Flower || $block instanceof RedMushroom || $block instanceof Sapling || - ($block instanceof TallGrass && $block->getIdInfo()->getLegacyVariant() === BlockLegacyMetadata::TALLGRASS_FERN); //TODO: clean up + ($block instanceof TallGrass && $block->getTypeId() === BlockTypeIds::LARGE_FERN); //TODO: bamboo } From 1bce583cf3e8ae397a48e49698e93edd29b87822 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 23:31:05 +0100 Subject: [PATCH 161/692] Removed BlockIdentifierFlattened this was necessary to inform BlockFactory of how to map blocks with multiple IDs; this is no longer necessary under the revamped system --- src/block/BlockFactory.php | 27 +++++----- src/block/BlockIdentifier.php | 8 --- src/block/BlockIdentifierFlattened.php | 68 -------------------------- src/block/BlockLegacyIdHelper.php | 19 ++++--- 4 files changed, 22 insertions(+), 100 deletions(-) delete mode 100644 src/block/BlockIdentifierFlattened.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index f71d4bbb1..ee545e4c0 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockIdentifierFlattened as BIDFlattened; use pocketmine\block\BlockLegacyIds as LegacyIds; use pocketmine\block\BlockLegacyMetadata as Meta; use pocketmine\block\BlockToolType as ToolType; @@ -161,7 +160,7 @@ class BlockFactory{ $this->register(new CocoaBlock(new BID(Ids::COCOA_POD, LegacyIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK, LegacyIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE, LegacyIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, [LegacyIds::DAYLIGHT_DETECTOR_INVERTED], 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); $this->register(new DeadBush(new BID(Ids::DEAD_BUSH, LegacyIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL, LegacyIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); @@ -205,9 +204,9 @@ class BlockFactory{ $this->register(new Flower(new BID(Ids::WHITE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant())); $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, LegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE, LegacyIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->register(new Furnace(new BIDFlattened(Ids::FURNACE, LegacyIds::FURNACE, [LegacyIds::LIT_FURNACE], 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BIDFlattened(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, [LegacyIds::LIT_BLAST_FURNACE], 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BIDFlattened(Ids::SMOKER, LegacyIds::SMOKER, [LegacyIds::LIT_SMOKER], 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::FURNACE, LegacyIds::FURNACE, 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::SMOKER, LegacyIds::SMOKER, 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); $this->register(new Glass(new BID(Ids::GLASS, LegacyIds::GLASS, 0), "Glass", $glassBreakInfo)); @@ -250,7 +249,7 @@ class BlockFactory{ $this->register(new Lantern(new BID(Ids::LANTERN, LegacyIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI, LegacyIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, LegacyIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new Lava(new BIDFlattened(Ids::LAVA, LegacyIds::FLOWING_LAVA, [LegacyIds::STILL_LAVA], 0), "Lava", BreakInfo::indestructible(500.0))); + $this->register(new Lava(new BID(Ids::LAVA, LegacyIds::FLOWING_LAVA, 0), "Lava", BreakInfo::indestructible(500.0))); $this->register(new Lectern(new BID(Ids::LECTERN, LegacyIds::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); $this->register(new Lever(new BID(Ids::LEVER, LegacyIds::LEVER, 0), "Lever", new BreakInfo(0.5))); $this->register(new Loom(new BID(Ids::LOOM, LegacyIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); @@ -311,11 +310,11 @@ class BlockFactory{ $this->register(new Rail(new BID(Ids::RAIL, LegacyIds::RAIL, 0), "Rail", $railBreakInfo)); $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM, LegacyIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); $this->register(new Redstone(new BID(Ids::REDSTONE, LegacyIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new RedstoneComparator(new BIDFlattened(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, [LegacyIds::POWERED_COMPARATOR], 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->register(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, [LegacyIds::LIT_REDSTONE_LAMP], 0), "Redstone Lamp", new BreakInfo(0.3))); - $this->register(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, [LegacyIds::LIT_REDSTONE_ORE], 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new RedstoneRepeater(new BIDFlattened(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, [LegacyIds::POWERED_REPEATER], 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); - $this->register(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, [LegacyIds::UNLIT_REDSTONE_TORCH], 0), "Redstone Torch", BreakInfo::instant())); + $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, 0), "Redstone Lamp", new BreakInfo(0.3))); + $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); + $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, 0), "Redstone Torch", BreakInfo::instant())); $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, LegacyIds::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); $this->register(new Reserved6(new BID(Ids::RESERVED6, LegacyIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); @@ -436,7 +435,7 @@ class BlockFactory{ $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, LegacyIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, LegacyIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); $this->register(new Vine(new BID(Ids::VINES, LegacyIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new Water(new BIDFlattened(Ids::WATER, LegacyIds::FLOWING_WATER, [LegacyIds::STILL_WATER], 0), "Water", BreakInfo::indestructible(500.0))); + $this->register(new Water(new BID(Ids::WATER, LegacyIds::FLOWING_WATER, 0), "Water", BreakInfo::indestructible(500.0))); $this->register(new WaterLily(new BID(Ids::LILY_PAD, LegacyIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); @@ -563,12 +562,12 @@ class BlockFactory{ BreakInfo::instant(), )); $this->register(new FloorCoralFan( - new BlockIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, [LegacyIds::CORAL_FAN_DEAD], 0, ItemIds::CORAL_FAN), + new BID(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, ItemIds::CORAL_FAN), "Coral Fan", BreakInfo::instant(), )); $this->register(new WallCoralFan( - new BlockIdentifierFlattened(Ids::WALL_CORAL_FAN, LegacyIds::CORAL_FAN_HANG, [LegacyIds::CORAL_FAN_HANG2, LegacyIds::CORAL_FAN_HANG3], 0, ItemIds::CORAL_FAN), + new BID(Ids::WALL_CORAL_FAN, LegacyIds::CORAL_FAN_HANG, 0, ItemIds::CORAL_FAN), "Wall Coral Fan", BreakInfo::instant(), )); diff --git a/src/block/BlockIdentifier.php b/src/block/BlockIdentifier.php index 38f41ab63..c4a809dc9 100644 --- a/src/block/BlockIdentifier.php +++ b/src/block/BlockIdentifier.php @@ -61,14 +61,6 @@ class BlockIdentifier{ return $this->legacyBlockId; } - /** - * @deprecated - * @return int[] - */ - public function getAllLegacyBlockIds() : array{ - return [$this->legacyBlockId]; - } - /** * @deprecated */ diff --git a/src/block/BlockIdentifierFlattened.php b/src/block/BlockIdentifierFlattened.php deleted file mode 100644 index f3dfb919e..000000000 --- a/src/block/BlockIdentifierFlattened.php +++ /dev/null @@ -1,68 +0,0 @@ -legacyAdditionalIds = $legacyAdditionalIds; - } - - /** - * @deprecated - */ - public function getAdditionalId(int $index) : int{ - if(!isset($this->legacyAdditionalIds[$index])){ - throw new \InvalidArgumentException("No such ID at index $index"); - } - return $this->legacyAdditionalIds[$index]; - } - - /** - * @deprecated - */ - public function getSecondId() : int{ - return $this->getAdditionalId(0); - } - - /** - * @deprecated - */ - public function getAllLegacyBlockIds() : array{ - return [$this->getLegacyBlockId(), ...$this->legacyAdditionalIds]; - } -} diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index d50715825..c50cb9df9 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockIdentifierFlattened as BIDFlattened; use pocketmine\block\BlockLegacyIds as LegacyIds; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; @@ -59,8 +58,8 @@ final class BlockLegacyIdHelper{ }, LegacyIds::FENCE, $treeType->getMagicNumber()); } - public static function getWoodenSlabIdentifier(TreeType $treeType) : BIDFlattened{ - return new BIDFlattened(match($treeType->id()){ + public static function getWoodenSlabIdentifier(TreeType $treeType) : BID{ + return new BID(match($treeType->id()){ TreeType::OAK()->id() => Ids::OAK_SLAB, TreeType::SPRUCE()->id() => Ids::SPRUCE_SLAB, TreeType::BIRCH()->id() => Ids::BIRCH_SLAB, @@ -68,7 +67,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_SLAB, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::WOODEN_SLAB, [LegacyIds::DOUBLE_WOODEN_SLAB], $treeType->getMagicNumber()); + }, LegacyIds::WOODEN_SLAB, $treeType->getMagicNumber()); } public static function getLogIdentifier(TreeType $treeType) : BID{ @@ -331,16 +330,16 @@ final class BlockLegacyIdHelper{ throw new AssumptionFailedError("Switch should cover all colours"); } - public static function getStoneSlabIdentifier(int $blockTypeId, int $stoneSlabId, int $meta) : BlockIdentifierFlattened{ + public static function getStoneSlabIdentifier(int $blockTypeId, int $stoneSlabId, int $meta) : BID{ $id = [ - 1 => [LegacyIds::STONE_SLAB, LegacyIds::DOUBLE_STONE_SLAB], - 2 => [LegacyIds::STONE_SLAB2, LegacyIds::DOUBLE_STONE_SLAB2], - 3 => [LegacyIds::STONE_SLAB3, LegacyIds::DOUBLE_STONE_SLAB3], - 4 => [LegacyIds::STONE_SLAB4, LegacyIds::DOUBLE_STONE_SLAB4] + 1 => LegacyIds::STONE_SLAB, + 2 => LegacyIds::STONE_SLAB2, + 3 => LegacyIds::STONE_SLAB3, + 4 => LegacyIds::STONE_SLAB4 ][$stoneSlabId] ?? null; if($id === null){ throw new \InvalidArgumentException("Stone slab type should be 1, 2, 3 or 4"); } - return new BlockIdentifierFlattened($blockTypeId, $id[0], [$id[1]], $meta); + return new BID($blockTypeId, $id, $meta); } } From 61da920db015da2df8721f5562b59a9cb8ba6ec4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 23:33:18 +0100 Subject: [PATCH 162/692] Fixed consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index a2dda4822..c4bd93b4d 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"2564096":"Activator Rail","2564097":"Activator Rail","2564098":"Activator Rail","2564099":"Activator Rail","2564100":"Activator Rail","2564101":"Activator Rail","2564104":"Activator Rail","2564105":"Activator Rail","2564106":"Activator Rail","2564107":"Activator Rail","2564108":"Activator Rail","2564109":"Activator Rail","2560000":"Air","2565888":"Anvil","2565889":"Anvil","2565890":"Anvil","2565892":"Anvil","2565893":"Anvil","2565894":"Anvil","2565896":"Anvil","2565897":"Anvil","2565898":"Anvil","2565900":"Anvil","2565901":"Anvil","2565902":"Anvil","2566400":"Bamboo","2566401":"Bamboo","2566402":"Bamboo","2566404":"Bamboo","2566405":"Bamboo","2566406":"Bamboo","2566408":"Bamboo","2566409":"Bamboo","2566410":"Bamboo","2566412":"Bamboo","2566413":"Bamboo","2566414":"Bamboo","2566656":"Bamboo Sapling","2566657":"Bamboo Sapling","2566912":"Banner","2566913":"Banner","2566914":"Banner","2566915":"Banner","2566916":"Banner","2566917":"Banner","2566918":"Banner","2566919":"Banner","2566920":"Banner","2566921":"Banner","2566922":"Banner","2566923":"Banner","2566924":"Banner","2566925":"Banner","2566926":"Banner","2566927":"Banner","2695424":"Wall Banner","2695425":"Wall Banner","2695426":"Wall Banner","2695427":"Wall Banner","2567168":"Barrel","2567169":"Barrel","2567170":"Barrel","2567171":"Barrel","2567172":"Barrel","2567173":"Barrel","2567176":"Barrel","2567177":"Barrel","2567178":"Barrel","2567179":"Barrel","2567180":"Barrel","2567181":"Barrel","2567424":"Barrier","2567680":"Beacon","2567936":"Bed Block","2567937":"Bed Block","2567938":"Bed Block","2567939":"Bed Block","2567940":"Bed Block","2567941":"Bed Block","2567942":"Bed Block","2567943":"Bed Block","2567944":"Bed Block","2567945":"Bed Block","2567946":"Bed Block","2567947":"Bed Block","2567948":"Bed Block","2567949":"Bed Block","2567950":"Bed Block","2567951":"Bed Block","2568192":"Bedrock","2568193":"Bedrock","2568448":"Beetroot Block","2568449":"Beetroot Block","2568450":"Beetroot Block","2568451":"Beetroot Block","2568452":"Beetroot Block","2568453":"Beetroot Block","2568454":"Beetroot Block","2568455":"Beetroot Block","2568704":"Bell","2568705":"Bell","2568706":"Bell","2568707":"Bell","2568708":"Bell","2568709":"Bell","2568710":"Bell","2568711":"Bell","2568712":"Bell","2568713":"Bell","2568714":"Bell","2568715":"Bell","2568716":"Bell","2568717":"Bell","2568718":"Bell","2568719":"Bell","2573568":"Blue Ice","2574336":"Bone Block","2574337":"Bone Block","2574338":"Bone Block","2574592":"Bookshelf","2574848":"Brewing Stand","2574849":"Brewing Stand","2574850":"Brewing Stand","2574851":"Brewing Stand","2574852":"Brewing Stand","2574853":"Brewing Stand","2574854":"Brewing Stand","2574855":"Brewing Stand","2575360":"Brick Stairs","2575361":"Brick Stairs","2575362":"Brick Stairs","2575363":"Brick Stairs","2575364":"Brick Stairs","2575365":"Brick Stairs","2575366":"Brick Stairs","2575367":"Brick Stairs","2575872":"Bricks","2576384":"Brown Mushroom","2576896":"Cactus","2576897":"Cactus","2576898":"Cactus","2576899":"Cactus","2576900":"Cactus","2576901":"Cactus","2576902":"Cactus","2576903":"Cactus","2576904":"Cactus","2576905":"Cactus","2576906":"Cactus","2576907":"Cactus","2576908":"Cactus","2576909":"Cactus","2576910":"Cactus","2576911":"Cactus","2577152":"Cake","2577153":"Cake","2577154":"Cake","2577155":"Cake","2577156":"Cake","2577157":"Cake","2577158":"Cake","2577664":"Carrot Block","2577665":"Carrot Block","2577666":"Carrot Block","2577667":"Carrot Block","2577668":"Carrot Block","2577669":"Carrot Block","2577670":"Carrot Block","2577671":"Carrot Block","2578432":"Chest","2578433":"Chest","2578434":"Chest","2578435":"Chest","2579712":"Clay Block","2579968":"Coal Block","2580224":"Coal Ore","2580480":"Cobblestone","2649600":"Mossy Cobblestone","2580992":"Cobblestone Stairs","2580993":"Cobblestone Stairs","2580994":"Cobblestone Stairs","2580995":"Cobblestone Stairs","2580996":"Cobblestone Stairs","2580997":"Cobblestone Stairs","2580998":"Cobblestone Stairs","2580999":"Cobblestone Stairs","2650112":"Mossy Cobblestone Stairs","2650113":"Mossy Cobblestone Stairs","2650114":"Mossy Cobblestone Stairs","2650115":"Mossy Cobblestone Stairs","2650116":"Mossy Cobblestone Stairs","2650117":"Mossy Cobblestone Stairs","2650118":"Mossy Cobblestone Stairs","2650119":"Mossy Cobblestone Stairs","2581504":"Cobweb","2581760":"Cocoa Block","2581761":"Cocoa Block","2581762":"Cocoa Block","2581763":"Cocoa Block","2581764":"Cocoa Block","2581765":"Cocoa Block","2581766":"Cocoa Block","2581767":"Cocoa Block","2581768":"Cocoa Block","2581769":"Cocoa Block","2581770":"Cocoa Block","2581771":"Cocoa Block","2583040":"Coral Block","2583041":"Coral Block","2583042":"Coral Block","2583043":"Coral Block","2583044":"Coral Block","2583048":"Coral Block","2583049":"Coral Block","2583050":"Coral Block","2583051":"Coral Block","2583052":"Coral Block","2584064":"Crafting Table","2590464":"Daylight Sensor","2590465":"Daylight Sensor","2590466":"Daylight Sensor","2590467":"Daylight Sensor","2590468":"Daylight Sensor","2590469":"Daylight Sensor","2590470":"Daylight Sensor","2590471":"Daylight Sensor","2590472":"Daylight Sensor","2590473":"Daylight Sensor","2590474":"Daylight Sensor","2590475":"Daylight Sensor","2590476":"Daylight Sensor","2590477":"Daylight Sensor","2590478":"Daylight Sensor","2590479":"Daylight Sensor","2590480":"Daylight Sensor","2590481":"Daylight Sensor","2590482":"Daylight Sensor","2590483":"Daylight Sensor","2590484":"Daylight Sensor","2590485":"Daylight Sensor","2590486":"Daylight Sensor","2590487":"Daylight Sensor","2590488":"Daylight Sensor","2590489":"Daylight Sensor","2590490":"Daylight Sensor","2590491":"Daylight Sensor","2590492":"Daylight Sensor","2590493":"Daylight Sensor","2590494":"Daylight Sensor","2590495":"Daylight Sensor","2590720":"Dead Bush","2590976":"Detector Rail","2590977":"Detector Rail","2590978":"Detector Rail","2590979":"Detector Rail","2590980":"Detector Rail","2590981":"Detector Rail","2590984":"Detector Rail","2590985":"Detector Rail","2590986":"Detector Rail","2590987":"Detector Rail","2590988":"Detector Rail","2590989":"Detector Rail","2591232":"Diamond Block","2591488":"Diamond Ore","2592768":"Dirt","2592769":"Dirt","2692864":"Sunflower","2692865":"Sunflower","2646272":"Lilac","2646273":"Lilac","2675200":"Rose Bush","2675201":"Rose Bush","2660352":"Peony","2660353":"Peony","2593024":"Double Tallgrass","2593025":"Double Tallgrass","2644480":"Large Fern","2644481":"Large Fern","2593280":"Dragon Egg","2593536":"Dried Kelp Block","2624768":"Emerald Block","2625024":"Emerald Ore","2625280":"Enchanting Table","2625536":"End Portal Frame","2625537":"End Portal Frame","2625538":"End Portal Frame","2625539":"End Portal Frame","2625540":"End Portal Frame","2625541":"End Portal Frame","2625542":"End Portal Frame","2625543":"End Portal Frame","2625792":"End Rod","2625793":"End Rod","2625794":"End Rod","2625795":"End Rod","2625796":"End Rod","2625797":"End Rod","2626048":"End Stone","2627072":"End Stone Bricks","2626560":"End Stone Brick Stairs","2626561":"End Stone Brick Stairs","2626562":"End Stone Brick Stairs","2626563":"End Stone Brick Stairs","2626564":"End Stone Brick Stairs","2626565":"End Stone Brick Stairs","2626566":"End Stone Brick Stairs","2626567":"End Stone Brick Stairs","2627328":"Ender Chest","2627329":"Ender Chest","2627330":"Ender Chest","2627331":"Ender Chest","2627840":"Farmland","2627841":"Farmland","2627842":"Farmland","2627843":"Farmland","2627844":"Farmland","2627845":"Farmland","2627846":"Farmland","2627847":"Farmland","2628352":"Fire Block","2628353":"Fire Block","2628354":"Fire Block","2628355":"Fire Block","2628356":"Fire Block","2628357":"Fire Block","2628358":"Fire Block","2628359":"Fire Block","2628360":"Fire Block","2628361":"Fire Block","2628362":"Fire Block","2628363":"Fire Block","2628364":"Fire Block","2628365":"Fire Block","2628366":"Fire Block","2628367":"Fire Block","2628608":"Fletching Table","2585600":"Dandelion","2663680":"Poppy","2564608":"Allium","2566144":"Azure Bluet","2573824":"Blue Orchid","2583552":"Cornflower","2646528":"Lily of the Valley","2659584":"Orange Tulip","2659840":"Oxeye Daisy","2660864":"Pink Tulip","2672896":"Red Tulip","2697216":"White Tulip","2628864":"Flower Pot","2629120":"Frosted Ice","2629121":"Frosted Ice","2629122":"Frosted Ice","2629123":"Frosted Ice","2629376":"Furnace","2629377":"Furnace","2629378":"Furnace","2629379":"Furnace","2629380":"Furnace","2629381":"Furnace","2629382":"Furnace","2629383":"Furnace","2573056":"Blast Furnace","2573057":"Blast Furnace","2573058":"Blast Furnace","2573059":"Blast Furnace","2573060":"Blast Furnace","2573061":"Blast Furnace","2573062":"Blast Furnace","2573063":"Blast Furnace","2677760":"Smoker","2677761":"Smoker","2677762":"Smoker","2677763":"Smoker","2677764":"Smoker","2677765":"Smoker","2677766":"Smoker","2677767":"Smoker","2629632":"Glass","2629888":"Glass Pane","2630144":"Glowing Obsidian","2630400":"Glowstone","2630656":"Gold Block","2630912":"Gold Ore","2632192":"Grass","2632448":"Grass Path","2632704":"Gravel","2633728":"Hardened Clay","2633984":"Hardened Glass","2634240":"Hardened Glass Pane","2634496":"Hay Bale","2634497":"Hay Bale","2634498":"Hay Bale","2634752":"Hopper","2634754":"Hopper","2634755":"Hopper","2634756":"Hopper","2634757":"Hopper","2634760":"Hopper","2634762":"Hopper","2634763":"Hopper","2634764":"Hopper","2634765":"Hopper","2635008":"Ice","2636800":"update!","2637056":"ate!upd","2637312":"Invisible Bedrock","2637568":"Iron Block","2637824":"Iron Bars","2638080":"Iron Door","2638081":"Iron Door","2638082":"Iron Door","2638083":"Iron Door","2638084":"Iron Door","2638085":"Iron Door","2638086":"Iron Door","2638087":"Iron Door","2638088":"Iron Door","2638089":"Iron Door","2638090":"Iron Door","2638091":"Iron Door","2638092":"Iron Door","2638093":"Iron Door","2638094":"Iron Door","2638095":"Iron Door","2638096":"Iron Door","2638097":"Iron Door","2638098":"Iron Door","2638099":"Iron Door","2638100":"Iron Door","2638101":"Iron Door","2638102":"Iron Door","2638103":"Iron Door","2638104":"Iron Door","2638105":"Iron Door","2638106":"Iron Door","2638107":"Iron Door","2638108":"Iron Door","2638109":"Iron Door","2638110":"Iron Door","2638111":"Iron Door","2638592":"Iron Trapdoor","2638593":"Iron Trapdoor","2638594":"Iron Trapdoor","2638595":"Iron Trapdoor","2638596":"Iron Trapdoor","2638597":"Iron Trapdoor","2638598":"Iron Trapdoor","2638599":"Iron Trapdoor","2638600":"Iron Trapdoor","2638601":"Iron Trapdoor","2638602":"Iron Trapdoor","2638603":"Iron Trapdoor","2638604":"Iron Trapdoor","2638605":"Iron Trapdoor","2638606":"Iron Trapdoor","2638607":"Iron Trapdoor","2638336":"Iron Ore","2638848":"Item Frame","2638849":"Item Frame","2638850":"Item Frame","2638851":"Item Frame","2638852":"Item Frame","2638853":"Item Frame","2638854":"Item Frame","2638855":"Item Frame","2639104":"Jukebox","2643456":"Ladder","2643457":"Ladder","2643458":"Ladder","2643459":"Ladder","2643712":"Lantern","2643713":"Lantern","2643968":"Lapis Lazuli Block","2644224":"Lapis Lazuli Ore","2644736":"Lava","2644737":"Lava","2644738":"Lava","2644739":"Lava","2644740":"Lava","2644741":"Lava","2644742":"Lava","2644743":"Lava","2644744":"Lava","2644745":"Lava","2644746":"Lava","2644747":"Lava","2644748":"Lava","2644749":"Lava","2644750":"Lava","2644751":"Lava","2644752":"Lava","2644753":"Lava","2644754":"Lava","2644755":"Lava","2644756":"Lava","2644757":"Lava","2644758":"Lava","2644759":"Lava","2644760":"Lava","2644761":"Lava","2644762":"Lava","2644763":"Lava","2644764":"Lava","2644765":"Lava","2644766":"Lava","2644767":"Lava","2644992":"Lectern","2644993":"Lectern","2644994":"Lectern","2644995":"Lectern","2644996":"Lectern","2644997":"Lectern","2644998":"Lectern","2644999":"Lectern","2645504":"Lever","2645505":"Lever","2645506":"Lever","2645507":"Lever","2645508":"Lever","2645509":"Lever","2645510":"Lever","2645511":"Lever","2645512":"Lever","2645513":"Lever","2645514":"Lever","2645515":"Lever","2645516":"Lever","2645517":"Lever","2645518":"Lever","2645519":"Lever","2647552":"Loom","2647553":"Loom","2647554":"Loom","2647555":"Loom","2648064":"Magma Block","2648576":"Melon Block","2648832":"Melon Stem","2648833":"Melon Stem","2648834":"Melon Stem","2648835":"Melon Stem","2648836":"Melon Stem","2648837":"Melon Stem","2648838":"Melon Stem","2648839":"Melon Stem","2649344":"Monster Spawner","2651904":"Mycelium","2653184":"Nether Bricks","2671104":"Red Nether Bricks","2652160":"Nether Brick Fence","2652672":"Nether Brick Stairs","2652673":"Nether Brick Stairs","2652674":"Nether Brick Stairs","2652675":"Nether Brick Stairs","2652676":"Nether Brick Stairs","2652677":"Nether Brick Stairs","2652678":"Nether Brick Stairs","2652679":"Nether Brick Stairs","2670592":"Red Nether Brick Stairs","2670593":"Red Nether Brick Stairs","2670594":"Red Nether Brick Stairs","2670595":"Red Nether Brick Stairs","2670596":"Red Nether Brick Stairs","2670597":"Red Nether Brick Stairs","2670598":"Red Nether Brick Stairs","2670599":"Red Nether Brick Stairs","2653440":"Nether Portal","2653441":"Nether Portal","2653696":"Nether Quartz Ore","2653952":"Nether Reactor Core","2654464":"Nether Wart Block","2654208":"Nether Wart","2654209":"Nether Wart","2654210":"Nether Wart","2654211":"Nether Wart","2654720":"Netherrack","2654976":"Note Block","2659072":"Obsidian","2660096":"Packed Ice","2661120":"Podzol","2663936":"Potato Block","2663937":"Potato Block","2663938":"Potato Block","2663939":"Potato Block","2663940":"Potato Block","2663941":"Potato Block","2663942":"Potato Block","2663943":"Potato Block","2664192":"Powered Rail","2664193":"Powered Rail","2664194":"Powered Rail","2664195":"Powered Rail","2664196":"Powered Rail","2664197":"Powered Rail","2664200":"Powered Rail","2664201":"Powered Rail","2664202":"Powered Rail","2664203":"Powered Rail","2664204":"Powered Rail","2664205":"Powered Rail","2664448":"Prismarine","2589696":"Dark Prismarine","2664704":"Prismarine Bricks","2665216":"Prismarine Bricks Stairs","2665217":"Prismarine Bricks Stairs","2665218":"Prismarine Bricks Stairs","2665219":"Prismarine Bricks Stairs","2665220":"Prismarine Bricks Stairs","2665221":"Prismarine Bricks Stairs","2665222":"Prismarine Bricks Stairs","2665223":"Prismarine Bricks Stairs","2590208":"Dark Prismarine Stairs","2590209":"Dark Prismarine Stairs","2590210":"Dark Prismarine Stairs","2590211":"Dark Prismarine Stairs","2590212":"Dark Prismarine Stairs","2590213":"Dark Prismarine Stairs","2590214":"Dark Prismarine Stairs","2590215":"Dark Prismarine Stairs","2665728":"Prismarine Stairs","2665729":"Prismarine Stairs","2665730":"Prismarine Stairs","2665731":"Prismarine Stairs","2665732":"Prismarine Stairs","2665733":"Prismarine Stairs","2665734":"Prismarine Stairs","2665735":"Prismarine Stairs","2666240":"Pumpkin","2577920":"Carved Pumpkin","2577921":"Carved Pumpkin","2577922":"Carved Pumpkin","2577923":"Carved Pumpkin","2647296":"Jack o'Lantern","2647297":"Jack o'Lantern","2647298":"Jack o'Lantern","2647299":"Jack o'Lantern","2666496":"Pumpkin Stem","2666497":"Pumpkin Stem","2666498":"Pumpkin Stem","2666499":"Pumpkin Stem","2666500":"Pumpkin Stem","2666501":"Pumpkin Stem","2666502":"Pumpkin Stem","2666503":"Pumpkin Stem","2667264":"Purpur Block","2667520":"Purpur Pillar","2667521":"Purpur Pillar","2667522":"Purpur Pillar","2668032":"Purpur Stairs","2668033":"Purpur Stairs","2668034":"Purpur Stairs","2668035":"Purpur Stairs","2668036":"Purpur Stairs","2668037":"Purpur Stairs","2668038":"Purpur Stairs","2668039":"Purpur Stairs","2668288":"Quartz Block","2578688":"Chiseled Quartz Block","2578689":"Chiseled Quartz Block","2578690":"Chiseled Quartz Block","2668544":"Quartz Pillar","2668545":"Quartz Pillar","2668546":"Quartz Pillar","2678016":"Smooth Quartz Block","2669056":"Quartz Stairs","2669057":"Quartz Stairs","2669058":"Quartz Stairs","2669059":"Quartz Stairs","2669060":"Quartz Stairs","2669061":"Quartz Stairs","2669062":"Quartz Stairs","2669063":"Quartz Stairs","2678528":"Smooth Quartz Stairs","2678529":"Smooth Quartz Stairs","2678530":"Smooth Quartz Stairs","2678531":"Smooth Quartz Stairs","2678532":"Smooth Quartz Stairs","2678533":"Smooth Quartz Stairs","2678534":"Smooth Quartz Stairs","2678535":"Smooth Quartz Stairs","2669312":"Rail","2669313":"Rail","2669314":"Rail","2669315":"Rail","2669316":"Rail","2669317":"Rail","2669318":"Rail","2669319":"Rail","2669320":"Rail","2669321":"Rail","2669824":"Red Mushroom","2673152":"Redstone Block","2673408":"Redstone Comparator","2673409":"Redstone Comparator","2673410":"Redstone Comparator","2673411":"Redstone Comparator","2673412":"Redstone Comparator","2673413":"Redstone Comparator","2673414":"Redstone Comparator","2673415":"Redstone Comparator","2673416":"Redstone Comparator","2673417":"Redstone Comparator","2673418":"Redstone Comparator","2673419":"Redstone Comparator","2673420":"Redstone Comparator","2673421":"Redstone Comparator","2673422":"Redstone Comparator","2673423":"Redstone Comparator","2673664":"Redstone Lamp","2673665":"Redstone Lamp","2673920":"Redstone Ore","2673921":"Redstone Ore","2674176":"Redstone Repeater","2674177":"Redstone Repeater","2674178":"Redstone Repeater","2674179":"Redstone Repeater","2674180":"Redstone Repeater","2674181":"Redstone Repeater","2674182":"Redstone Repeater","2674183":"Redstone Repeater","2674184":"Redstone Repeater","2674185":"Redstone Repeater","2674186":"Redstone Repeater","2674187":"Redstone Repeater","2674188":"Redstone Repeater","2674189":"Redstone Repeater","2674190":"Redstone Repeater","2674191":"Redstone Repeater","2674192":"Redstone Repeater","2674193":"Redstone Repeater","2674194":"Redstone Repeater","2674195":"Redstone Repeater","2674196":"Redstone Repeater","2674197":"Redstone Repeater","2674198":"Redstone Repeater","2674199":"Redstone Repeater","2674200":"Redstone Repeater","2674201":"Redstone Repeater","2674202":"Redstone Repeater","2674203":"Redstone Repeater","2674204":"Redstone Repeater","2674205":"Redstone Repeater","2674206":"Redstone Repeater","2674207":"Redstone Repeater","2674433":"Redstone Torch","2674434":"Redstone Torch","2674435":"Redstone Torch","2674436":"Redstone Torch","2674437":"Redstone Torch","2674441":"Redstone Torch","2674442":"Redstone Torch","2674443":"Redstone Torch","2674444":"Redstone Torch","2674445":"Redstone Torch","2674688":"Redstone","2674689":"Redstone","2674690":"Redstone","2674691":"Redstone","2674692":"Redstone","2674693":"Redstone","2674694":"Redstone","2674695":"Redstone","2674696":"Redstone","2674697":"Redstone","2674698":"Redstone","2674699":"Redstone","2674700":"Redstone","2674701":"Redstone","2674702":"Redstone","2674703":"Redstone","2674944":"reserved6","2675456":"Sand","2671360":"Red Sand","2676736":"Sea Lantern","2676992":"Sea Pickle","2676993":"Sea Pickle","2676994":"Sea Pickle","2676995":"Sea Pickle","2676996":"Sea Pickle","2676997":"Sea Pickle","2676998":"Sea Pickle","2676999":"Sea Pickle","2649089":"Mob Head","2649090":"Mob Head","2649091":"Mob Head","2649092":"Mob Head","2649093":"Mob Head","2677504":"Slime Block","2680832":"Snow Block","2681088":"Snow Layer","2681089":"Snow Layer","2681090":"Snow Layer","2681091":"Snow Layer","2681092":"Snow Layer","2681093":"Snow Layer","2681094":"Snow Layer","2681095":"Snow Layer","2681344":"Soul Sand","2681600":"Sponge","2681601":"Sponge","2677248":"Shulker Box","2686976":"Stone","2564864":"Andesite","2591744":"Diorite","2631168":"Granite","2661376":"Polished Andesite","2662144":"Polished Diorite","2662912":"Polished Granite","2688000":"Stone Bricks","2651392":"Mossy Stone Bricks","2583808":"Cracked Stone Bricks","2579456":"Chiseled Stone Bricks","2636288":"Infested Stone","2636544":"Infested Stone Brick","2635520":"Infested Cobblestone","2636032":"Infested Mossy Stone Brick","2635776":"Infested Cracked Stone Brick","2635264":"Infested Chiseled Stone Brick","2689024":"Stone Stairs","2689025":"Stone Stairs","2689026":"Stone Stairs","2689027":"Stone Stairs","2689028":"Stone Stairs","2689029":"Stone Stairs","2689030":"Stone Stairs","2689031":"Stone Stairs","2680320":"Smooth Stone","2565376":"Andesite Stairs","2565377":"Andesite Stairs","2565378":"Andesite Stairs","2565379":"Andesite Stairs","2565380":"Andesite Stairs","2565381":"Andesite Stairs","2565382":"Andesite Stairs","2565383":"Andesite Stairs","2592256":"Diorite Stairs","2592257":"Diorite Stairs","2592258":"Diorite Stairs","2592259":"Diorite Stairs","2592260":"Diorite Stairs","2592261":"Diorite Stairs","2592262":"Diorite Stairs","2592263":"Diorite Stairs","2631680":"Granite Stairs","2631681":"Granite Stairs","2631682":"Granite Stairs","2631683":"Granite Stairs","2631684":"Granite Stairs","2631685":"Granite Stairs","2631686":"Granite Stairs","2631687":"Granite Stairs","2661888":"Polished Andesite Stairs","2661889":"Polished Andesite Stairs","2661890":"Polished Andesite Stairs","2661891":"Polished Andesite Stairs","2661892":"Polished Andesite Stairs","2661893":"Polished Andesite Stairs","2661894":"Polished Andesite Stairs","2661895":"Polished Andesite Stairs","2662656":"Polished Diorite Stairs","2662657":"Polished Diorite Stairs","2662658":"Polished Diorite Stairs","2662659":"Polished Diorite Stairs","2662660":"Polished Diorite Stairs","2662661":"Polished Diorite Stairs","2662662":"Polished Diorite Stairs","2662663":"Polished Diorite Stairs","2663424":"Polished Granite Stairs","2663425":"Polished Granite Stairs","2663426":"Polished Granite Stairs","2663427":"Polished Granite Stairs","2663428":"Polished Granite Stairs","2663429":"Polished Granite Stairs","2663430":"Polished Granite Stairs","2663431":"Polished Granite Stairs","2687488":"Stone Brick Stairs","2687489":"Stone Brick Stairs","2687490":"Stone Brick Stairs","2687491":"Stone Brick Stairs","2687492":"Stone Brick Stairs","2687493":"Stone Brick Stairs","2687494":"Stone Brick Stairs","2687495":"Stone Brick Stairs","2650880":"Mossy Stone Brick Stairs","2650881":"Mossy Stone Brick Stairs","2650882":"Mossy Stone Brick Stairs","2650883":"Mossy Stone Brick Stairs","2650884":"Mossy Stone Brick Stairs","2650885":"Mossy Stone Brick Stairs","2650886":"Mossy Stone Brick Stairs","2650887":"Mossy Stone Brick Stairs","2688256":"Stone Button","2688257":"Stone Button","2688258":"Stone Button","2688259":"Stone Button","2688260":"Stone Button","2688261":"Stone Button","2688264":"Stone Button","2688265":"Stone Button","2688266":"Stone Button","2688267":"Stone Button","2688268":"Stone Button","2688269":"Stone Button","2689280":"Stonecutter","2689281":"Stonecutter","2689282":"Stonecutter","2689283":"Stonecutter","2688512":"Stone Pressure Plate","2688513":"Stone Pressure Plate","2575104":"Brick Slab","2575105":"Brick Slab","2575106":"Brick Slab","2580736":"Cobblestone Slab","2580737":"Cobblestone Slab","2580738":"Cobblestone Slab","2627584":"Fake Wooden Slab","2627585":"Fake Wooden Slab","2627586":"Fake Wooden Slab","2652416":"Nether Brick Slab","2652417":"Nether Brick Slab","2652418":"Nether Brick Slab","2668800":"Quartz Slab","2668801":"Quartz Slab","2668802":"Quartz Slab","2675968":"Sandstone Slab","2675969":"Sandstone Slab","2675970":"Sandstone Slab","2680576":"Smooth Stone Slab","2680577":"Smooth Stone Slab","2680578":"Smooth Stone Slab","2687232":"Stone Brick Slab","2687233":"Stone Brick Slab","2687234":"Stone Brick Slab","2589952":"Dark Prismarine Slab","2589953":"Dark Prismarine Slab","2589954":"Dark Prismarine Slab","2649856":"Mossy Cobblestone Slab","2649857":"Mossy Cobblestone Slab","2649858":"Mossy Cobblestone Slab","2665472":"Prismarine Slab","2665473":"Prismarine Slab","2665474":"Prismarine Slab","2664960":"Prismarine Bricks Slab","2664961":"Prismarine Bricks Slab","2664962":"Prismarine Bricks Slab","2667776":"Purpur Slab","2667777":"Purpur Slab","2667778":"Purpur Slab","2670336":"Red Nether Brick Slab","2670337":"Red Nether Brick Slab","2670338":"Red Nether Brick Slab","2671872":"Red Sandstone Slab","2671873":"Red Sandstone Slab","2671874":"Red Sandstone Slab","2679808":"Smooth Sandstone Slab","2679809":"Smooth Sandstone Slab","2679810":"Smooth Sandstone Slab","2565120":"Andesite Slab","2565121":"Andesite Slab","2565122":"Andesite Slab","2592000":"Diorite Slab","2592001":"Diorite Slab","2592002":"Diorite Slab","2626304":"End Stone Brick Slab","2626305":"End Stone Brick Slab","2626306":"End Stone Brick Slab","2631424":"Granite Slab","2631425":"Granite Slab","2631426":"Granite Slab","2661632":"Polished Andesite Slab","2661633":"Polished Andesite Slab","2661634":"Polished Andesite Slab","2662400":"Polished Diorite Slab","2662401":"Polished Diorite Slab","2662402":"Polished Diorite Slab","2663168":"Polished Granite Slab","2663169":"Polished Granite Slab","2663170":"Polished Granite Slab","2679040":"Smooth Red Sandstone Slab","2679041":"Smooth Red Sandstone Slab","2679042":"Smooth Red Sandstone Slab","2584576":"Cut Red Sandstone Slab","2584577":"Cut Red Sandstone Slab","2584578":"Cut Red Sandstone Slab","2585088":"Cut Sandstone Slab","2585089":"Cut Sandstone Slab","2585090":"Cut Sandstone Slab","2650624":"Mossy Stone Brick Slab","2650625":"Mossy Stone Brick Slab","2650626":"Mossy Stone Brick Slab","2678272":"Smooth Quartz Slab","2678273":"Smooth Quartz Slab","2678274":"Smooth Quartz Slab","2688768":"Stone Slab","2688769":"Stone Slab","2688770":"Stone Slab","2645248":"Legacy Stonecutter","2692608":"Sugarcane","2692609":"Sugarcane","2692610":"Sugarcane","2692611":"Sugarcane","2692612":"Sugarcane","2692613":"Sugarcane","2692614":"Sugarcane","2692615":"Sugarcane","2692616":"Sugarcane","2692617":"Sugarcane","2692618":"Sugarcane","2692619":"Sugarcane","2692620":"Sugarcane","2692621":"Sugarcane","2692622":"Sugarcane","2692623":"Sugarcane","2693120":"Sweet Berry Bush","2693121":"Sweet Berry Bush","2693122":"Sweet Berry Bush","2693123":"Sweet Berry Bush","2693632":"TNT","2693633":"TNT","2693634":"TNT","2693635":"TNT","2628096":"Fern","2693376":"Tall Grass","2574081":"Blue Torch","2574082":"Blue Torch","2574083":"Blue Torch","2574084":"Blue Torch","2574085":"Blue Torch","2667009":"Purple Torch","2667010":"Purple Torch","2667011":"Purple Torch","2667012":"Purple Torch","2667013":"Purple Torch","2672641":"Red Torch","2672642":"Red Torch","2672643":"Red Torch","2672644":"Red Torch","2672645":"Red Torch","2633473":"Green Torch","2633474":"Green Torch","2633475":"Green Torch","2633476":"Green Torch","2633477":"Green Torch","2693889":"Torch","2693890":"Torch","2693891":"Torch","2693892":"Torch","2693893":"Torch","2694144":"Trapped Chest","2694145":"Trapped Chest","2694146":"Trapped Chest","2694147":"Trapped Chest","2694400":"Tripwire","2694401":"Tripwire","2694402":"Tripwire","2694403":"Tripwire","2694404":"Tripwire","2694405":"Tripwire","2694406":"Tripwire","2694407":"Tripwire","2694408":"Tripwire","2694409":"Tripwire","2694410":"Tripwire","2694411":"Tripwire","2694412":"Tripwire","2694413":"Tripwire","2694414":"Tripwire","2694415":"Tripwire","2694656":"Tripwire Hook","2694657":"Tripwire Hook","2694658":"Tripwire Hook","2694659":"Tripwire Hook","2694660":"Tripwire Hook","2694661":"Tripwire Hook","2694662":"Tripwire Hook","2694663":"Tripwire Hook","2694664":"Tripwire Hook","2694665":"Tripwire Hook","2694666":"Tripwire Hook","2694667":"Tripwire Hook","2694668":"Tripwire Hook","2694669":"Tripwire Hook","2694670":"Tripwire Hook","2694671":"Tripwire Hook","2694913":"Underwater Torch","2694914":"Underwater Torch","2694915":"Underwater Torch","2694916":"Underwater Torch","2694917":"Underwater Torch","2695168":"Vines","2695169":"Vines","2695170":"Vines","2695171":"Vines","2695172":"Vines","2695173":"Vines","2695174":"Vines","2695175":"Vines","2695176":"Vines","2695177":"Vines","2695178":"Vines","2695179":"Vines","2695180":"Vines","2695181":"Vines","2695182":"Vines","2695183":"Vines","2695936":"Water","2695937":"Water","2695938":"Water","2695939":"Water","2695940":"Water","2695941":"Water","2695942":"Water","2695943":"Water","2695944":"Water","2695945":"Water","2695946":"Water","2695947":"Water","2695948":"Water","2695949":"Water","2695950":"Water","2695951":"Water","2695952":"Water","2695953":"Water","2695954":"Water","2695955":"Water","2695956":"Water","2695957":"Water","2695958":"Water","2695959":"Water","2695960":"Water","2695961":"Water","2695962":"Water","2695963":"Water","2695964":"Water","2695965":"Water","2695966":"Water","2695967":"Water","2646784":"Lily Pad","2696192":"Weighted Pressure Plate Heavy","2696193":"Weighted Pressure Plate Heavy","2696194":"Weighted Pressure Plate Heavy","2696195":"Weighted Pressure Plate Heavy","2696196":"Weighted Pressure Plate Heavy","2696197":"Weighted Pressure Plate Heavy","2696198":"Weighted Pressure Plate Heavy","2696199":"Weighted Pressure Plate Heavy","2696200":"Weighted Pressure Plate Heavy","2696201":"Weighted Pressure Plate Heavy","2696202":"Weighted Pressure Plate Heavy","2696203":"Weighted Pressure Plate Heavy","2696204":"Weighted Pressure Plate Heavy","2696205":"Weighted Pressure Plate Heavy","2696206":"Weighted Pressure Plate Heavy","2696207":"Weighted Pressure Plate Heavy","2696448":"Weighted Pressure Plate Light","2696449":"Weighted Pressure Plate Light","2696450":"Weighted Pressure Plate Light","2696451":"Weighted Pressure Plate Light","2696452":"Weighted Pressure Plate Light","2696453":"Weighted Pressure Plate Light","2696454":"Weighted Pressure Plate Light","2696455":"Weighted Pressure Plate Light","2696456":"Weighted Pressure Plate Light","2696457":"Weighted Pressure Plate Light","2696458":"Weighted Pressure Plate Light","2696459":"Weighted Pressure Plate Light","2696460":"Weighted Pressure Plate Light","2696461":"Weighted Pressure Plate Light","2696462":"Weighted Pressure Plate Light","2696463":"Weighted Pressure Plate Light","2696704":"Wheat Block","2696705":"Wheat Block","2696706":"Wheat Block","2696707":"Wheat Block","2696708":"Wheat Block","2696709":"Wheat Block","2696710":"Wheat Block","2696711":"Wheat Block","2656768":"Oak Planks","2657280":"Oak Sapling","2657281":"Oak Sapling","2655744":"Oak Fence","2657792":"Oak Slab","2657793":"Oak Slab","2657794":"Oak Slab","2656256":"Oak Leaves","2656257":"Oak Leaves","2656258":"Oak Leaves","2656259":"Oak Leaves","2656512":"Oak Log","2656513":"Oak Log","2656514":"Oak Log","2691584":"Stripped Oak Log","2691585":"Stripped Oak Log","2691586":"Stripped Oak Log","2658816":"Oak Wood","2691840":"Stripped Oak Wood","2656000":"Oak Fence Gate","2656001":"Oak Fence Gate","2656002":"Oak Fence Gate","2656003":"Oak Fence Gate","2656004":"Oak Fence Gate","2656005":"Oak Fence Gate","2656006":"Oak Fence Gate","2656007":"Oak Fence Gate","2656008":"Oak Fence Gate","2656009":"Oak Fence Gate","2656010":"Oak Fence Gate","2656011":"Oak Fence Gate","2656012":"Oak Fence Gate","2656013":"Oak Fence Gate","2656014":"Oak Fence Gate","2656015":"Oak Fence Gate","2658048":"Oak Stairs","2658049":"Oak Stairs","2658050":"Oak Stairs","2658051":"Oak Stairs","2658052":"Oak Stairs","2658053":"Oak Stairs","2658054":"Oak Stairs","2658055":"Oak Stairs","2655488":"Oak Door","2655489":"Oak Door","2655490":"Oak Door","2655491":"Oak Door","2655492":"Oak Door","2655493":"Oak Door","2655494":"Oak Door","2655495":"Oak Door","2655496":"Oak Door","2655497":"Oak Door","2655498":"Oak Door","2655499":"Oak Door","2655500":"Oak Door","2655501":"Oak Door","2655502":"Oak Door","2655503":"Oak Door","2655504":"Oak Door","2655505":"Oak Door","2655506":"Oak Door","2655507":"Oak Door","2655508":"Oak Door","2655509":"Oak Door","2655510":"Oak Door","2655511":"Oak Door","2655512":"Oak Door","2655513":"Oak Door","2655514":"Oak Door","2655515":"Oak Door","2655516":"Oak Door","2655517":"Oak Door","2655518":"Oak Door","2655519":"Oak Door","2655232":"Oak Button","2655233":"Oak Button","2655234":"Oak Button","2655235":"Oak Button","2655236":"Oak Button","2655237":"Oak Button","2655240":"Oak Button","2655241":"Oak Button","2655242":"Oak Button","2655243":"Oak Button","2655244":"Oak Button","2655245":"Oak Button","2657024":"Oak Pressure Plate","2657025":"Oak Pressure Plate","2658304":"Oak Trapdoor","2658305":"Oak Trapdoor","2658306":"Oak Trapdoor","2658307":"Oak Trapdoor","2658308":"Oak Trapdoor","2658309":"Oak Trapdoor","2658310":"Oak Trapdoor","2658311":"Oak Trapdoor","2658312":"Oak Trapdoor","2658313":"Oak Trapdoor","2658314":"Oak Trapdoor","2658315":"Oak Trapdoor","2658316":"Oak Trapdoor","2658317":"Oak Trapdoor","2658318":"Oak Trapdoor","2658319":"Oak Trapdoor","2657536":"Oak Sign","2657537":"Oak Sign","2657538":"Oak Sign","2657539":"Oak Sign","2657540":"Oak Sign","2657541":"Oak Sign","2657542":"Oak Sign","2657543":"Oak Sign","2657544":"Oak Sign","2657545":"Oak Sign","2657546":"Oak Sign","2657547":"Oak Sign","2657548":"Oak Sign","2657549":"Oak Sign","2657550":"Oak Sign","2657551":"Oak Sign","2658560":"Oak Wall Sign","2658561":"Oak Wall Sign","2658562":"Oak Wall Sign","2658563":"Oak Wall Sign","2683392":"Spruce Planks","2683904":"Spruce Sapling","2683905":"Spruce Sapling","2682368":"Spruce Fence","2684416":"Spruce Slab","2684417":"Spruce Slab","2684418":"Spruce Slab","2682880":"Spruce Leaves","2682881":"Spruce Leaves","2682882":"Spruce Leaves","2682883":"Spruce Leaves","2683136":"Spruce Log","2683137":"Spruce Log","2683138":"Spruce Log","2692096":"Stripped Spruce Log","2692097":"Stripped Spruce Log","2692098":"Stripped Spruce Log","2685440":"Spruce Wood","2692352":"Stripped Spruce Wood","2682624":"Spruce Fence Gate","2682625":"Spruce Fence Gate","2682626":"Spruce Fence Gate","2682627":"Spruce Fence Gate","2682628":"Spruce Fence Gate","2682629":"Spruce Fence Gate","2682630":"Spruce Fence Gate","2682631":"Spruce Fence Gate","2682632":"Spruce Fence Gate","2682633":"Spruce Fence Gate","2682634":"Spruce Fence Gate","2682635":"Spruce Fence Gate","2682636":"Spruce Fence Gate","2682637":"Spruce Fence Gate","2682638":"Spruce Fence Gate","2682639":"Spruce Fence Gate","2684672":"Spruce Stairs","2684673":"Spruce Stairs","2684674":"Spruce Stairs","2684675":"Spruce Stairs","2684676":"Spruce Stairs","2684677":"Spruce Stairs","2684678":"Spruce Stairs","2684679":"Spruce Stairs","2682112":"Spruce Door","2682113":"Spruce Door","2682114":"Spruce Door","2682115":"Spruce Door","2682116":"Spruce Door","2682117":"Spruce Door","2682118":"Spruce Door","2682119":"Spruce Door","2682120":"Spruce Door","2682121":"Spruce Door","2682122":"Spruce Door","2682123":"Spruce Door","2682124":"Spruce Door","2682125":"Spruce Door","2682126":"Spruce Door","2682127":"Spruce Door","2682128":"Spruce Door","2682129":"Spruce Door","2682130":"Spruce Door","2682131":"Spruce Door","2682132":"Spruce Door","2682133":"Spruce Door","2682134":"Spruce Door","2682135":"Spruce Door","2682136":"Spruce Door","2682137":"Spruce Door","2682138":"Spruce Door","2682139":"Spruce Door","2682140":"Spruce Door","2682141":"Spruce Door","2682142":"Spruce Door","2682143":"Spruce Door","2681856":"Spruce Button","2681857":"Spruce Button","2681858":"Spruce Button","2681859":"Spruce Button","2681860":"Spruce Button","2681861":"Spruce Button","2681864":"Spruce Button","2681865":"Spruce Button","2681866":"Spruce Button","2681867":"Spruce Button","2681868":"Spruce Button","2681869":"Spruce Button","2683648":"Spruce Pressure Plate","2683649":"Spruce Pressure Plate","2684928":"Spruce Trapdoor","2684929":"Spruce Trapdoor","2684930":"Spruce Trapdoor","2684931":"Spruce Trapdoor","2684932":"Spruce Trapdoor","2684933":"Spruce Trapdoor","2684934":"Spruce Trapdoor","2684935":"Spruce Trapdoor","2684936":"Spruce Trapdoor","2684937":"Spruce Trapdoor","2684938":"Spruce Trapdoor","2684939":"Spruce Trapdoor","2684940":"Spruce Trapdoor","2684941":"Spruce Trapdoor","2684942":"Spruce Trapdoor","2684943":"Spruce Trapdoor","2684160":"Spruce Sign","2684161":"Spruce Sign","2684162":"Spruce Sign","2684163":"Spruce Sign","2684164":"Spruce Sign","2684165":"Spruce Sign","2684166":"Spruce Sign","2684167":"Spruce Sign","2684168":"Spruce Sign","2684169":"Spruce Sign","2684170":"Spruce Sign","2684171":"Spruce Sign","2684172":"Spruce Sign","2684173":"Spruce Sign","2684174":"Spruce Sign","2684175":"Spruce Sign","2685184":"Spruce Wall Sign","2685185":"Spruce Wall Sign","2685186":"Spruce Wall Sign","2685187":"Spruce Wall Sign","2570496":"Birch Planks","2571008":"Birch Sapling","2571009":"Birch Sapling","2569472":"Birch Fence","2571520":"Birch Slab","2571521":"Birch Slab","2571522":"Birch Slab","2569984":"Birch Leaves","2569985":"Birch Leaves","2569986":"Birch Leaves","2569987":"Birch Leaves","2570240":"Birch Log","2570241":"Birch Log","2570242":"Birch Log","2690048":"Stripped Birch Log","2690049":"Stripped Birch Log","2690050":"Stripped Birch Log","2572544":"Birch Wood","2690304":"Stripped Birch Wood","2569728":"Birch Fence Gate","2569729":"Birch Fence Gate","2569730":"Birch Fence Gate","2569731":"Birch Fence Gate","2569732":"Birch Fence Gate","2569733":"Birch Fence Gate","2569734":"Birch Fence Gate","2569735":"Birch Fence Gate","2569736":"Birch Fence Gate","2569737":"Birch Fence Gate","2569738":"Birch Fence Gate","2569739":"Birch Fence Gate","2569740":"Birch Fence Gate","2569741":"Birch Fence Gate","2569742":"Birch Fence Gate","2569743":"Birch Fence Gate","2571776":"Birch Stairs","2571777":"Birch Stairs","2571778":"Birch Stairs","2571779":"Birch Stairs","2571780":"Birch Stairs","2571781":"Birch Stairs","2571782":"Birch Stairs","2571783":"Birch Stairs","2569216":"Birch Door","2569217":"Birch Door","2569218":"Birch Door","2569219":"Birch Door","2569220":"Birch Door","2569221":"Birch Door","2569222":"Birch Door","2569223":"Birch Door","2569224":"Birch Door","2569225":"Birch Door","2569226":"Birch Door","2569227":"Birch Door","2569228":"Birch Door","2569229":"Birch Door","2569230":"Birch Door","2569231":"Birch Door","2569232":"Birch Door","2569233":"Birch Door","2569234":"Birch Door","2569235":"Birch Door","2569236":"Birch Door","2569237":"Birch Door","2569238":"Birch Door","2569239":"Birch Door","2569240":"Birch Door","2569241":"Birch Door","2569242":"Birch Door","2569243":"Birch Door","2569244":"Birch Door","2569245":"Birch Door","2569246":"Birch Door","2569247":"Birch Door","2568960":"Birch Button","2568961":"Birch Button","2568962":"Birch Button","2568963":"Birch Button","2568964":"Birch Button","2568965":"Birch Button","2568968":"Birch Button","2568969":"Birch Button","2568970":"Birch Button","2568971":"Birch Button","2568972":"Birch Button","2568973":"Birch Button","2570752":"Birch Pressure Plate","2570753":"Birch Pressure Plate","2572032":"Birch Trapdoor","2572033":"Birch Trapdoor","2572034":"Birch Trapdoor","2572035":"Birch Trapdoor","2572036":"Birch Trapdoor","2572037":"Birch Trapdoor","2572038":"Birch Trapdoor","2572039":"Birch Trapdoor","2572040":"Birch Trapdoor","2572041":"Birch Trapdoor","2572042":"Birch Trapdoor","2572043":"Birch Trapdoor","2572044":"Birch Trapdoor","2572045":"Birch Trapdoor","2572046":"Birch Trapdoor","2572047":"Birch Trapdoor","2571264":"Birch Sign","2571265":"Birch Sign","2571266":"Birch Sign","2571267":"Birch Sign","2571268":"Birch Sign","2571269":"Birch Sign","2571270":"Birch Sign","2571271":"Birch Sign","2571272":"Birch Sign","2571273":"Birch Sign","2571274":"Birch Sign","2571275":"Birch Sign","2571276":"Birch Sign","2571277":"Birch Sign","2571278":"Birch Sign","2571279":"Birch Sign","2572288":"Birch Wall Sign","2572289":"Birch Wall Sign","2572290":"Birch Wall Sign","2572291":"Birch Wall Sign","2640896":"Jungle Planks","2641408":"Jungle Sapling","2641409":"Jungle Sapling","2639872":"Jungle Fence","2641920":"Jungle Slab","2641921":"Jungle Slab","2641922":"Jungle Slab","2640384":"Jungle Leaves","2640385":"Jungle Leaves","2640386":"Jungle Leaves","2640387":"Jungle Leaves","2640640":"Jungle Log","2640641":"Jungle Log","2640642":"Jungle Log","2691072":"Stripped Jungle Log","2691073":"Stripped Jungle Log","2691074":"Stripped Jungle Log","2642944":"Jungle Wood","2691328":"Stripped Jungle Wood","2640128":"Jungle Fence Gate","2640129":"Jungle Fence Gate","2640130":"Jungle Fence Gate","2640131":"Jungle Fence Gate","2640132":"Jungle Fence Gate","2640133":"Jungle Fence Gate","2640134":"Jungle Fence Gate","2640135":"Jungle Fence Gate","2640136":"Jungle Fence Gate","2640137":"Jungle Fence Gate","2640138":"Jungle Fence Gate","2640139":"Jungle Fence Gate","2640140":"Jungle Fence Gate","2640141":"Jungle Fence Gate","2640142":"Jungle Fence Gate","2640143":"Jungle Fence Gate","2642176":"Jungle Stairs","2642177":"Jungle Stairs","2642178":"Jungle Stairs","2642179":"Jungle Stairs","2642180":"Jungle Stairs","2642181":"Jungle Stairs","2642182":"Jungle Stairs","2642183":"Jungle Stairs","2639616":"Jungle Door","2639617":"Jungle Door","2639618":"Jungle Door","2639619":"Jungle Door","2639620":"Jungle Door","2639621":"Jungle Door","2639622":"Jungle Door","2639623":"Jungle Door","2639624":"Jungle Door","2639625":"Jungle Door","2639626":"Jungle Door","2639627":"Jungle Door","2639628":"Jungle Door","2639629":"Jungle Door","2639630":"Jungle Door","2639631":"Jungle Door","2639632":"Jungle Door","2639633":"Jungle Door","2639634":"Jungle Door","2639635":"Jungle Door","2639636":"Jungle Door","2639637":"Jungle Door","2639638":"Jungle Door","2639639":"Jungle Door","2639640":"Jungle Door","2639641":"Jungle Door","2639642":"Jungle Door","2639643":"Jungle Door","2639644":"Jungle Door","2639645":"Jungle Door","2639646":"Jungle Door","2639647":"Jungle Door","2639360":"Jungle Button","2639361":"Jungle Button","2639362":"Jungle Button","2639363":"Jungle Button","2639364":"Jungle Button","2639365":"Jungle Button","2639368":"Jungle Button","2639369":"Jungle Button","2639370":"Jungle Button","2639371":"Jungle Button","2639372":"Jungle Button","2639373":"Jungle Button","2641152":"Jungle Pressure Plate","2641153":"Jungle Pressure Plate","2642432":"Jungle Trapdoor","2642433":"Jungle Trapdoor","2642434":"Jungle Trapdoor","2642435":"Jungle Trapdoor","2642436":"Jungle Trapdoor","2642437":"Jungle Trapdoor","2642438":"Jungle Trapdoor","2642439":"Jungle Trapdoor","2642440":"Jungle Trapdoor","2642441":"Jungle Trapdoor","2642442":"Jungle Trapdoor","2642443":"Jungle Trapdoor","2642444":"Jungle Trapdoor","2642445":"Jungle Trapdoor","2642446":"Jungle Trapdoor","2642447":"Jungle Trapdoor","2641664":"Jungle Sign","2641665":"Jungle Sign","2641666":"Jungle Sign","2641667":"Jungle Sign","2641668":"Jungle Sign","2641669":"Jungle Sign","2641670":"Jungle Sign","2641671":"Jungle Sign","2641672":"Jungle Sign","2641673":"Jungle Sign","2641674":"Jungle Sign","2641675":"Jungle Sign","2641676":"Jungle Sign","2641677":"Jungle Sign","2641678":"Jungle Sign","2641679":"Jungle Sign","2642688":"Jungle Wall Sign","2642689":"Jungle Wall Sign","2642690":"Jungle Wall Sign","2642691":"Jungle Wall Sign","2561792":"Acacia Planks","2562304":"Acacia Sapling","2562305":"Acacia Sapling","2560768":"Acacia Fence","2562816":"Acacia Slab","2562817":"Acacia Slab","2562818":"Acacia Slab","2561280":"Acacia Leaves","2561281":"Acacia Leaves","2561282":"Acacia Leaves","2561283":"Acacia Leaves","2561536":"Acacia Log","2561537":"Acacia Log","2561538":"Acacia Log","2689536":"Stripped Acacia Log","2689537":"Stripped Acacia Log","2689538":"Stripped Acacia Log","2563840":"Acacia Wood","2689792":"Stripped Acacia Wood","2561024":"Acacia Fence Gate","2561025":"Acacia Fence Gate","2561026":"Acacia Fence Gate","2561027":"Acacia Fence Gate","2561028":"Acacia Fence Gate","2561029":"Acacia Fence Gate","2561030":"Acacia Fence Gate","2561031":"Acacia Fence Gate","2561032":"Acacia Fence Gate","2561033":"Acacia Fence Gate","2561034":"Acacia Fence Gate","2561035":"Acacia Fence Gate","2561036":"Acacia Fence Gate","2561037":"Acacia Fence Gate","2561038":"Acacia Fence Gate","2561039":"Acacia Fence Gate","2563072":"Acacia Stairs","2563073":"Acacia Stairs","2563074":"Acacia Stairs","2563075":"Acacia Stairs","2563076":"Acacia Stairs","2563077":"Acacia Stairs","2563078":"Acacia Stairs","2563079":"Acacia Stairs","2560512":"Acacia Door","2560513":"Acacia Door","2560514":"Acacia Door","2560515":"Acacia Door","2560516":"Acacia Door","2560517":"Acacia Door","2560518":"Acacia Door","2560519":"Acacia Door","2560520":"Acacia Door","2560521":"Acacia Door","2560522":"Acacia Door","2560523":"Acacia Door","2560524":"Acacia Door","2560525":"Acacia Door","2560526":"Acacia Door","2560527":"Acacia Door","2560528":"Acacia Door","2560529":"Acacia Door","2560530":"Acacia Door","2560531":"Acacia Door","2560532":"Acacia Door","2560533":"Acacia Door","2560534":"Acacia Door","2560535":"Acacia Door","2560536":"Acacia Door","2560537":"Acacia Door","2560538":"Acacia Door","2560539":"Acacia Door","2560540":"Acacia Door","2560541":"Acacia Door","2560542":"Acacia Door","2560543":"Acacia Door","2560256":"Acacia Button","2560257":"Acacia Button","2560258":"Acacia Button","2560259":"Acacia Button","2560260":"Acacia Button","2560261":"Acacia Button","2560264":"Acacia Button","2560265":"Acacia Button","2560266":"Acacia Button","2560267":"Acacia Button","2560268":"Acacia Button","2560269":"Acacia Button","2562048":"Acacia Pressure Plate","2562049":"Acacia Pressure Plate","2563328":"Acacia Trapdoor","2563329":"Acacia Trapdoor","2563330":"Acacia Trapdoor","2563331":"Acacia Trapdoor","2563332":"Acacia Trapdoor","2563333":"Acacia Trapdoor","2563334":"Acacia Trapdoor","2563335":"Acacia Trapdoor","2563336":"Acacia Trapdoor","2563337":"Acacia Trapdoor","2563338":"Acacia Trapdoor","2563339":"Acacia Trapdoor","2563340":"Acacia Trapdoor","2563341":"Acacia Trapdoor","2563342":"Acacia Trapdoor","2563343":"Acacia Trapdoor","2562560":"Acacia Sign","2562561":"Acacia Sign","2562562":"Acacia Sign","2562563":"Acacia Sign","2562564":"Acacia Sign","2562565":"Acacia Sign","2562566":"Acacia Sign","2562567":"Acacia Sign","2562568":"Acacia Sign","2562569":"Acacia Sign","2562570":"Acacia Sign","2562571":"Acacia Sign","2562572":"Acacia Sign","2562573":"Acacia Sign","2562574":"Acacia Sign","2562575":"Acacia Sign","2563584":"Acacia Wall Sign","2563585":"Acacia Wall Sign","2563586":"Acacia Wall Sign","2563587":"Acacia Wall Sign","2587392":"Dark Oak Planks","2587904":"Dark Oak Sapling","2587905":"Dark Oak Sapling","2586368":"Dark Oak Fence","2588416":"Dark Oak Slab","2588417":"Dark Oak Slab","2588418":"Dark Oak Slab","2586880":"Dark Oak Leaves","2586881":"Dark Oak Leaves","2586882":"Dark Oak Leaves","2586883":"Dark Oak Leaves","2587136":"Dark Oak Log","2587137":"Dark Oak Log","2587138":"Dark Oak Log","2690560":"Stripped Dark Oak Log","2690561":"Stripped Dark Oak Log","2690562":"Stripped Dark Oak Log","2589440":"Dark Oak Wood","2690816":"Stripped Dark Oak Wood","2586624":"Dark Oak Fence Gate","2586625":"Dark Oak Fence Gate","2586626":"Dark Oak Fence Gate","2586627":"Dark Oak Fence Gate","2586628":"Dark Oak Fence Gate","2586629":"Dark Oak Fence Gate","2586630":"Dark Oak Fence Gate","2586631":"Dark Oak Fence Gate","2586632":"Dark Oak Fence Gate","2586633":"Dark Oak Fence Gate","2586634":"Dark Oak Fence Gate","2586635":"Dark Oak Fence Gate","2586636":"Dark Oak Fence Gate","2586637":"Dark Oak Fence Gate","2586638":"Dark Oak Fence Gate","2586639":"Dark Oak Fence Gate","2588672":"Dark Oak Stairs","2588673":"Dark Oak Stairs","2588674":"Dark Oak Stairs","2588675":"Dark Oak Stairs","2588676":"Dark Oak Stairs","2588677":"Dark Oak Stairs","2588678":"Dark Oak Stairs","2588679":"Dark Oak Stairs","2586112":"Dark Oak Door","2586113":"Dark Oak Door","2586114":"Dark Oak Door","2586115":"Dark Oak Door","2586116":"Dark Oak Door","2586117":"Dark Oak Door","2586118":"Dark Oak Door","2586119":"Dark Oak Door","2586120":"Dark Oak Door","2586121":"Dark Oak Door","2586122":"Dark Oak Door","2586123":"Dark Oak Door","2586124":"Dark Oak Door","2586125":"Dark Oak Door","2586126":"Dark Oak Door","2586127":"Dark Oak Door","2586128":"Dark Oak Door","2586129":"Dark Oak Door","2586130":"Dark Oak Door","2586131":"Dark Oak Door","2586132":"Dark Oak Door","2586133":"Dark Oak Door","2586134":"Dark Oak Door","2586135":"Dark Oak Door","2586136":"Dark Oak Door","2586137":"Dark Oak Door","2586138":"Dark Oak Door","2586139":"Dark Oak Door","2586140":"Dark Oak Door","2586141":"Dark Oak Door","2586142":"Dark Oak Door","2586143":"Dark Oak Door","2585856":"Dark Oak Button","2585857":"Dark Oak Button","2585858":"Dark Oak Button","2585859":"Dark Oak Button","2585860":"Dark Oak Button","2585861":"Dark Oak Button","2585864":"Dark Oak Button","2585865":"Dark Oak Button","2585866":"Dark Oak Button","2585867":"Dark Oak Button","2585868":"Dark Oak Button","2585869":"Dark Oak Button","2587648":"Dark Oak Pressure Plate","2587649":"Dark Oak Pressure Plate","2588928":"Dark Oak Trapdoor","2588929":"Dark Oak Trapdoor","2588930":"Dark Oak Trapdoor","2588931":"Dark Oak Trapdoor","2588932":"Dark Oak Trapdoor","2588933":"Dark Oak Trapdoor","2588934":"Dark Oak Trapdoor","2588935":"Dark Oak Trapdoor","2588936":"Dark Oak Trapdoor","2588937":"Dark Oak Trapdoor","2588938":"Dark Oak Trapdoor","2588939":"Dark Oak Trapdoor","2588940":"Dark Oak Trapdoor","2588941":"Dark Oak Trapdoor","2588942":"Dark Oak Trapdoor","2588943":"Dark Oak Trapdoor","2588160":"Dark Oak Sign","2588161":"Dark Oak Sign","2588162":"Dark Oak Sign","2588163":"Dark Oak Sign","2588164":"Dark Oak Sign","2588165":"Dark Oak Sign","2588166":"Dark Oak Sign","2588167":"Dark Oak Sign","2588168":"Dark Oak Sign","2588169":"Dark Oak Sign","2588170":"Dark Oak Sign","2588171":"Dark Oak Sign","2588172":"Dark Oak Sign","2588173":"Dark Oak Sign","2588174":"Dark Oak Sign","2588175":"Dark Oak Sign","2589184":"Dark Oak Wall Sign","2589185":"Dark Oak Wall Sign","2589186":"Dark Oak Wall Sign","2589187":"Dark Oak Wall Sign","2672128":"Red Sandstone Stairs","2672129":"Red Sandstone Stairs","2672130":"Red Sandstone Stairs","2672131":"Red Sandstone Stairs","2672132":"Red Sandstone Stairs","2672133":"Red Sandstone Stairs","2672134":"Red Sandstone Stairs","2672135":"Red Sandstone Stairs","2679296":"Smooth Red Sandstone Stairs","2679297":"Smooth Red Sandstone Stairs","2679298":"Smooth Red Sandstone Stairs","2679299":"Smooth Red Sandstone Stairs","2679300":"Smooth Red Sandstone Stairs","2679301":"Smooth Red Sandstone Stairs","2679302":"Smooth Red Sandstone Stairs","2679303":"Smooth Red Sandstone Stairs","2671616":"Red Sandstone","2578944":"Chiseled Red Sandstone","2584320":"Cut Red Sandstone","2678784":"Smooth Red Sandstone","2676224":"Sandstone Stairs","2676225":"Sandstone Stairs","2676226":"Sandstone Stairs","2676227":"Sandstone Stairs","2676228":"Sandstone Stairs","2676229":"Sandstone Stairs","2676230":"Sandstone Stairs","2676231":"Sandstone Stairs","2680064":"Smooth Sandstone Stairs","2680065":"Smooth Sandstone Stairs","2680066":"Smooth Sandstone Stairs","2680067":"Smooth Sandstone Stairs","2680068":"Smooth Sandstone Stairs","2680069":"Smooth Sandstone Stairs","2680070":"Smooth Sandstone Stairs","2680071":"Smooth Sandstone Stairs","2675712":"Sandstone","2579200":"Chiseled Sandstone","2584832":"Cut Sandstone","2679552":"Smooth Sandstone","2696960":"White Glazed Terracotta","2696961":"White Glazed Terracotta","2696962":"White Glazed Terracotta","2696963":"White Glazed Terracotta","2659328":"Orange Glazed Terracotta","2659329":"Orange Glazed Terracotta","2659330":"Orange Glazed Terracotta","2659331":"Orange Glazed Terracotta","2647808":"Magenta Glazed Terracotta","2647809":"Magenta Glazed Terracotta","2647810":"Magenta Glazed Terracotta","2647811":"Magenta Glazed Terracotta","2645760":"Light Blue Glazed Terracotta","2645761":"Light Blue Glazed Terracotta","2645762":"Light Blue Glazed Terracotta","2645763":"Light Blue Glazed Terracotta","2697728":"Yellow Glazed Terracotta","2697729":"Yellow Glazed Terracotta","2697730":"Yellow Glazed Terracotta","2697731":"Yellow Glazed Terracotta","2647040":"Lime Glazed Terracotta","2647041":"Lime Glazed Terracotta","2647042":"Lime Glazed Terracotta","2647043":"Lime Glazed Terracotta","2660608":"Pink Glazed Terracotta","2660609":"Pink Glazed Terracotta","2660610":"Pink Glazed Terracotta","2660611":"Pink Glazed Terracotta","2632960":"Gray Glazed Terracotta","2632961":"Gray Glazed Terracotta","2632962":"Gray Glazed Terracotta","2632963":"Gray Glazed Terracotta","2646016":"Light Gray Glazed Terracotta","2646017":"Light Gray Glazed Terracotta","2646018":"Light Gray Glazed Terracotta","2646019":"Light Gray Glazed Terracotta","2585344":"Cyan Glazed Terracotta","2585345":"Cyan Glazed Terracotta","2585346":"Cyan Glazed Terracotta","2585347":"Cyan Glazed Terracotta","2666752":"Purple Glazed Terracotta","2666753":"Purple Glazed Terracotta","2666754":"Purple Glazed Terracotta","2666755":"Purple Glazed Terracotta","2573312":"Blue Glazed Terracotta","2573313":"Blue Glazed Terracotta","2573314":"Blue Glazed Terracotta","2573315":"Blue Glazed Terracotta","2576128":"Brown Glazed Terracotta","2576129":"Brown Glazed Terracotta","2576130":"Brown Glazed Terracotta","2576131":"Brown Glazed Terracotta","2633216":"Green Glazed Terracotta","2633217":"Green Glazed Terracotta","2633218":"Green Glazed Terracotta","2633219":"Green Glazed Terracotta","2669568":"Red Glazed Terracotta","2669569":"Red Glazed Terracotta","2669570":"Red Glazed Terracotta","2669571":"Red Glazed Terracotta","2572800":"Black Glazed Terracotta","2572801":"Black Glazed Terracotta","2572802":"Black Glazed Terracotta","2572803":"Black Glazed Terracotta","2593792":"Dyed Shulker Box","2593793":"Dyed Shulker Box","2593794":"Dyed Shulker Box","2593795":"Dyed Shulker Box","2593796":"Dyed Shulker Box","2593797":"Dyed Shulker Box","2593798":"Dyed Shulker Box","2593799":"Dyed Shulker Box","2593800":"Dyed Shulker Box","2593801":"Dyed Shulker Box","2593802":"Dyed Shulker Box","2593803":"Dyed Shulker Box","2593804":"Dyed Shulker Box","2593805":"Dyed Shulker Box","2593806":"Dyed Shulker Box","2593807":"Dyed Shulker Box","2685952":"Stained Glass","2685953":"Stained Glass","2685954":"Stained Glass","2685955":"Stained Glass","2685956":"Stained Glass","2685957":"Stained Glass","2685958":"Stained Glass","2685959":"Stained Glass","2685960":"Stained Glass","2685961":"Stained Glass","2685962":"Stained Glass","2685963":"Stained Glass","2685964":"Stained Glass","2685965":"Stained Glass","2685966":"Stained Glass","2685967":"Stained Glass","2686208":"Stained Glass Pane","2686209":"Stained Glass Pane","2686210":"Stained Glass Pane","2686211":"Stained Glass Pane","2686212":"Stained Glass Pane","2686213":"Stained Glass Pane","2686214":"Stained Glass Pane","2686215":"Stained Glass Pane","2686216":"Stained Glass Pane","2686217":"Stained Glass Pane","2686218":"Stained Glass Pane","2686219":"Stained Glass Pane","2686220":"Stained Glass Pane","2686221":"Stained Glass Pane","2686222":"Stained Glass Pane","2686223":"Stained Glass Pane","2685696":"Stained Clay","2685697":"Stained Clay","2685698":"Stained Clay","2685699":"Stained Clay","2685700":"Stained Clay","2685701":"Stained Clay","2685702":"Stained Clay","2685703":"Stained Clay","2685704":"Stained Clay","2685705":"Stained Clay","2685706":"Stained Clay","2685707":"Stained Clay","2685708":"Stained Clay","2685709":"Stained Clay","2685710":"Stained Clay","2685711":"Stained Clay","2686464":"Stained Hardened Glass","2686465":"Stained Hardened Glass","2686466":"Stained Hardened Glass","2686467":"Stained Hardened Glass","2686468":"Stained Hardened Glass","2686469":"Stained Hardened Glass","2686470":"Stained Hardened Glass","2686471":"Stained Hardened Glass","2686472":"Stained Hardened Glass","2686473":"Stained Hardened Glass","2686474":"Stained Hardened Glass","2686475":"Stained Hardened Glass","2686476":"Stained Hardened Glass","2686477":"Stained Hardened Glass","2686478":"Stained Hardened Glass","2686479":"Stained Hardened Glass","2686720":"Stained Hardened Glass Pane","2686721":"Stained Hardened Glass Pane","2686722":"Stained Hardened Glass Pane","2686723":"Stained Hardened Glass Pane","2686724":"Stained Hardened Glass Pane","2686725":"Stained Hardened Glass Pane","2686726":"Stained Hardened Glass Pane","2686727":"Stained Hardened Glass Pane","2686728":"Stained Hardened Glass Pane","2686729":"Stained Hardened Glass Pane","2686730":"Stained Hardened Glass Pane","2686731":"Stained Hardened Glass Pane","2686732":"Stained Hardened Glass Pane","2686733":"Stained Hardened Glass Pane","2686734":"Stained Hardened Glass Pane","2686735":"Stained Hardened Glass Pane","2577408":"Carpet","2577409":"Carpet","2577410":"Carpet","2577411":"Carpet","2577412":"Carpet","2577413":"Carpet","2577414":"Carpet","2577415":"Carpet","2577416":"Carpet","2577417":"Carpet","2577418":"Carpet","2577419":"Carpet","2577420":"Carpet","2577421":"Carpet","2577422":"Carpet","2577423":"Carpet","2582272":"Concrete","2582273":"Concrete","2582274":"Concrete","2582275":"Concrete","2582276":"Concrete","2582277":"Concrete","2582278":"Concrete","2582279":"Concrete","2582280":"Concrete","2582281":"Concrete","2582282":"Concrete","2582283":"Concrete","2582284":"Concrete","2582285":"Concrete","2582286":"Concrete","2582287":"Concrete","2582528":"Concrete Powder","2582529":"Concrete Powder","2582530":"Concrete Powder","2582531":"Concrete Powder","2582532":"Concrete Powder","2582533":"Concrete Powder","2582534":"Concrete Powder","2582535":"Concrete Powder","2582536":"Concrete Powder","2582537":"Concrete Powder","2582538":"Concrete Powder","2582539":"Concrete Powder","2582540":"Concrete Powder","2582541":"Concrete Powder","2582542":"Concrete Powder","2582543":"Concrete Powder","2697472":"Wool","2697473":"Wool","2697474":"Wool","2697475":"Wool","2697476":"Wool","2697477":"Wool","2697478":"Wool","2697479":"Wool","2697480":"Wool","2697481":"Wool","2697482":"Wool","2697483":"Wool","2697484":"Wool","2697485":"Wool","2697486":"Wool","2697487":"Wool","2581248":"Cobblestone Wall","2565632":"Andesite Wall","2575616":"Brick Wall","2592512":"Diorite Wall","2626816":"End Stone Brick Wall","2631936":"Granite Wall","2651136":"Mossy Stone Brick Wall","2650368":"Mossy Cobblestone Wall","2652928":"Nether Brick Wall","2665984":"Prismarine Wall","2670848":"Red Nether Brick Wall","2672384":"Red Sandstone Wall","2676480":"Sandstone Wall","2687744":"Stone Brick Wall","2624000":"???","2605568":"Hydrogen","2605056":"Helium","2607872":"Lithium","2596352":"Beryllium","2597120":"Boron","2598400":"Carbon","2611968":"Nitrogen","2612992":"Oxygen","2603008":"Fluorine","2610688":"Neon","2619136":"Sodium","2608640":"Magnesium","2594304":"Aluminum","2618624":"Silicon","2613504":"Phosphorus","2619648":"Sulfur","2599168":"Chlorine","2595072":"Argon","2614528":"Potassium","2597888":"Calcium","2617856":"Scandium","2622208":"Titanium","2622976":"Vanadium","2599424":"Chromium","2608896":"Manganese","2606592":"Iron","2599680":"Cobalt","2611200":"Nickel","2600448":"Copper","2624256":"Zinc","2603776":"Gallium","2604032":"Germanium","2595328":"Arsenic","2618368":"Selenium","2597376":"Bromine","2606848":"Krypton","2616832":"Rubidium","2619392":"Strontium","2623744":"Yttrium","2624512":"Zirconium","2611712":"Niobium","2609920":"Molybdenum","2620160":"Technetium","2617088":"Ruthenium","2616320":"Rhodium","2613248":"Palladium","2618880":"Silver","2597632":"Cadmium","2605824":"Indium","2621952":"Tin","2594816":"Antimony","2620416":"Tellurium","2606080":"Iodine","2623232":"Xenon","2598912":"Cesium","2595840":"Barium","2607104":"Lanthanum","2598656":"Cerium","2614784":"Praseodymium","2610432":"Neodymium","2615040":"Promethium","2617600":"Samarium","2602240":"Europium","2603520":"Gadolinium","2620928":"Terbium","2601472":"Dysprosium","2605312":"Holmium","2601984":"Erbium","2621696":"Thulium","2623488":"Ytterbium","2608384":"Lutetium","2604544":"Hafnium","2619904":"Tantalum","2622464":"Tungsten","2616064":"Rhenium","2612736":"Osmium","2606336":"Iridium","2613760":"Platinum","2604288":"Gold","2609664":"Mercury","2621184":"Thallium","2607616":"Lead","2596608":"Bismuth","2614272":"Polonium","2595584":"Astatine","2615808":"Radon","2603264":"Francium","2615552":"Radium","2594048":"Actinium","2621440":"Thorium","2615296":"Protactinium","2622720":"Uranium","2610944":"Neptunium","2614016":"Plutonium","2594560":"Americium","2600704":"Curium","2596096":"Berkelium","2598144":"Californium","2601728":"Einsteinium","2602496":"Fermium","2609408":"Mendelevium","2612224":"Nobelium","2607360":"Lawrencium","2617344":"Rutherfordium","2601216":"Dubnium","2618112":"Seaborgium","2596864":"Bohrium","2604800":"Hassium","2609152":"Meitnerium","2600960":"Darmstadtium","2616576":"Roentgenium","2600192":"Copernicium","2611456":"Nihonium","2602752":"Flerovium","2610176":"Moscovium","2608128":"Livermorium","2620672":"Tennessine","2612480":"Oganesson","2582016":"Compound Creator","2582017":"Compound Creator","2582018":"Compound Creator","2582019":"Compound Creator","2599936":"Element Constructor","2599937":"Element Constructor","2599938":"Element Constructor","2599939":"Element Constructor","2643200":"Lab Table","2643201":"Lab Table","2643202":"Lab Table","2643203":"Lab Table","2648320":"Material Reducer","2648321":"Material Reducer","2648322":"Material Reducer","2648323":"Material Reducer","2578176":"Heat Block","2576640":"Brown Mushroom Block","2576641":"Brown Mushroom Block","2576642":"Brown Mushroom Block","2576643":"Brown Mushroom Block","2576644":"Brown Mushroom Block","2576645":"Brown Mushroom Block","2576646":"Brown Mushroom Block","2576647":"Brown Mushroom Block","2576648":"Brown Mushroom Block","2576649":"Brown Mushroom Block","2576650":"Brown Mushroom Block","2670080":"Red Mushroom Block","2670081":"Red Mushroom Block","2670082":"Red Mushroom Block","2670083":"Red Mushroom Block","2670084":"Red Mushroom Block","2670085":"Red Mushroom Block","2670086":"Red Mushroom Block","2670087":"Red Mushroom Block","2670088":"Red Mushroom Block","2670089":"Red Mushroom Block","2670090":"Red Mushroom Block","2651648":"Mushroom Stem","2564352":"All Sided Mushroom Stem","2582784":"Coral","2582785":"Coral","2582786":"Coral","2582787":"Coral","2582788":"Coral","2582792":"Coral","2582793":"Coral","2582794":"Coral","2582795":"Coral","2582796":"Coral","2583296":"Coral Fan","2583297":"Coral Fan","2583298":"Coral Fan","2583299":"Coral Fan","2583300":"Coral Fan","2583304":"Coral Fan","2583305":"Coral Fan","2583306":"Coral Fan","2583307":"Coral Fan","2583308":"Coral Fan","2583312":"Coral Fan","2583313":"Coral Fan","2583314":"Coral Fan","2583315":"Coral Fan","2583316":"Coral Fan","2583320":"Coral Fan","2583321":"Coral Fan","2583322":"Coral Fan","2583323":"Coral Fan","2583324":"Coral Fan","2695680":"Wall Coral Fan","2695681":"Wall Coral Fan","2695682":"Wall Coral Fan","2695683":"Wall Coral Fan","2695684":"Wall Coral Fan","2695688":"Wall Coral Fan","2695689":"Wall Coral Fan","2695690":"Wall Coral Fan","2695691":"Wall Coral Fan","2695692":"Wall Coral Fan","2695696":"Wall Coral Fan","2695697":"Wall Coral Fan","2695698":"Wall Coral Fan","2695699":"Wall Coral Fan","2695700":"Wall Coral Fan","2695704":"Wall Coral Fan","2695705":"Wall Coral Fan","2695706":"Wall Coral Fan","2695707":"Wall Coral Fan","2695708":"Wall Coral Fan","2695712":"Wall Coral Fan","2695713":"Wall Coral Fan","2695714":"Wall Coral Fan","2695715":"Wall Coral Fan","2695716":"Wall Coral Fan","2695720":"Wall Coral Fan","2695721":"Wall Coral Fan","2695722":"Wall Coral Fan","2695723":"Wall Coral Fan","2695724":"Wall Coral Fan","2695728":"Wall Coral Fan","2695729":"Wall Coral Fan","2695730":"Wall Coral Fan","2695731":"Wall Coral Fan","2695732":"Wall Coral Fan","2695736":"Wall Coral Fan","2695737":"Wall Coral Fan","2695738":"Wall Coral Fan","2695739":"Wall Coral Fan","2695740":"Wall Coral Fan"},"stateDataBits":8} \ No newline at end of file +{"knownStates":{"641024":"Activator Rail","641025":"Activator Rail","641026":"Activator Rail","641027":"Activator Rail","641028":"Activator Rail","641029":"Activator Rail","641032":"Activator Rail","641033":"Activator Rail","641034":"Activator Rail","641035":"Activator Rail","641036":"Activator Rail","641037":"Activator Rail","640000":"Air","641472":"Anvil","641473":"Anvil","641474":"Anvil","641476":"Anvil","641477":"Anvil","641478":"Anvil","641480":"Anvil","641481":"Anvil","641482":"Anvil","641484":"Anvil","641485":"Anvil","641486":"Anvil","641600":"Bamboo","641601":"Bamboo","641602":"Bamboo","641604":"Bamboo","641605":"Bamboo","641606":"Bamboo","641608":"Bamboo","641609":"Bamboo","641610":"Bamboo","641612":"Bamboo","641613":"Bamboo","641614":"Bamboo","641664":"Bamboo Sapling","641665":"Bamboo Sapling","641728":"Banner","641729":"Banner","641730":"Banner","641731":"Banner","641732":"Banner","641733":"Banner","641734":"Banner","641735":"Banner","641736":"Banner","641737":"Banner","641738":"Banner","641739":"Banner","641740":"Banner","641741":"Banner","641742":"Banner","641743":"Banner","673856":"Wall Banner","673857":"Wall Banner","673858":"Wall Banner","673859":"Wall Banner","641792":"Barrel","641793":"Barrel","641794":"Barrel","641795":"Barrel","641796":"Barrel","641797":"Barrel","641800":"Barrel","641801":"Barrel","641802":"Barrel","641803":"Barrel","641804":"Barrel","641805":"Barrel","641856":"Barrier","641920":"Beacon","641984":"Bed Block","641985":"Bed Block","641986":"Bed Block","641987":"Bed Block","641988":"Bed Block","641989":"Bed Block","641990":"Bed Block","641991":"Bed Block","641992":"Bed Block","641993":"Bed Block","641994":"Bed Block","641995":"Bed Block","641996":"Bed Block","641997":"Bed Block","641998":"Bed Block","641999":"Bed Block","642048":"Bedrock","642049":"Bedrock","642112":"Beetroot Block","642113":"Beetroot Block","642114":"Beetroot Block","642115":"Beetroot Block","642116":"Beetroot Block","642117":"Beetroot Block","642118":"Beetroot Block","642119":"Beetroot Block","642176":"Bell","642177":"Bell","642178":"Bell","642179":"Bell","642180":"Bell","642181":"Bell","642182":"Bell","642183":"Bell","642184":"Bell","642185":"Bell","642186":"Bell","642187":"Bell","642188":"Bell","642189":"Bell","642190":"Bell","642191":"Bell","643392":"Blue Ice","643584":"Bone Block","643585":"Bone Block","643586":"Bone Block","643648":"Bookshelf","643712":"Brewing Stand","643713":"Brewing Stand","643714":"Brewing Stand","643715":"Brewing Stand","643716":"Brewing Stand","643717":"Brewing Stand","643718":"Brewing Stand","643719":"Brewing Stand","643840":"Brick Stairs","643841":"Brick Stairs","643842":"Brick Stairs","643843":"Brick Stairs","643844":"Brick Stairs","643845":"Brick Stairs","643846":"Brick Stairs","643847":"Brick Stairs","643968":"Bricks","644096":"Brown Mushroom","644224":"Cactus","644225":"Cactus","644226":"Cactus","644227":"Cactus","644228":"Cactus","644229":"Cactus","644230":"Cactus","644231":"Cactus","644232":"Cactus","644233":"Cactus","644234":"Cactus","644235":"Cactus","644236":"Cactus","644237":"Cactus","644238":"Cactus","644239":"Cactus","644288":"Cake","644289":"Cake","644290":"Cake","644291":"Cake","644292":"Cake","644293":"Cake","644294":"Cake","644416":"Carrot Block","644417":"Carrot Block","644418":"Carrot Block","644419":"Carrot Block","644420":"Carrot Block","644421":"Carrot Block","644422":"Carrot Block","644423":"Carrot Block","644608":"Chest","644609":"Chest","644610":"Chest","644611":"Chest","644928":"Clay Block","644992":"Coal Block","645056":"Coal Ore","645120":"Cobblestone","662400":"Mossy Cobblestone","645248":"Cobblestone Stairs","645249":"Cobblestone Stairs","645250":"Cobblestone Stairs","645251":"Cobblestone Stairs","645252":"Cobblestone Stairs","645253":"Cobblestone Stairs","645254":"Cobblestone Stairs","645255":"Cobblestone Stairs","662528":"Mossy Cobblestone Stairs","662529":"Mossy Cobblestone Stairs","662530":"Mossy Cobblestone Stairs","662531":"Mossy Cobblestone Stairs","662532":"Mossy Cobblestone Stairs","662533":"Mossy Cobblestone Stairs","662534":"Mossy Cobblestone Stairs","662535":"Mossy Cobblestone Stairs","645376":"Cobweb","645440":"Cocoa Block","645441":"Cocoa Block","645442":"Cocoa Block","645443":"Cocoa Block","645444":"Cocoa Block","645445":"Cocoa Block","645446":"Cocoa Block","645447":"Cocoa Block","645448":"Cocoa Block","645449":"Cocoa Block","645450":"Cocoa Block","645451":"Cocoa Block","645760":"Coral Block","645761":"Coral Block","645762":"Coral Block","645763":"Coral Block","645764":"Coral Block","645768":"Coral Block","645769":"Coral Block","645770":"Coral Block","645771":"Coral Block","645772":"Coral Block","646016":"Crafting Table","647616":"Daylight Sensor","647617":"Daylight Sensor","647618":"Daylight Sensor","647619":"Daylight Sensor","647620":"Daylight Sensor","647621":"Daylight Sensor","647622":"Daylight Sensor","647623":"Daylight Sensor","647624":"Daylight Sensor","647625":"Daylight Sensor","647626":"Daylight Sensor","647627":"Daylight Sensor","647628":"Daylight Sensor","647629":"Daylight Sensor","647630":"Daylight Sensor","647631":"Daylight Sensor","647632":"Daylight Sensor","647633":"Daylight Sensor","647634":"Daylight Sensor","647635":"Daylight Sensor","647636":"Daylight Sensor","647637":"Daylight Sensor","647638":"Daylight Sensor","647639":"Daylight Sensor","647640":"Daylight Sensor","647641":"Daylight Sensor","647642":"Daylight Sensor","647643":"Daylight Sensor","647644":"Daylight Sensor","647645":"Daylight Sensor","647646":"Daylight Sensor","647647":"Daylight Sensor","647680":"Dead Bush","647744":"Detector Rail","647745":"Detector Rail","647746":"Detector Rail","647747":"Detector Rail","647748":"Detector Rail","647749":"Detector Rail","647752":"Detector Rail","647753":"Detector Rail","647754":"Detector Rail","647755":"Detector Rail","647756":"Detector Rail","647757":"Detector Rail","647808":"Diamond Block","647872":"Diamond Ore","648192":"Dirt","648193":"Dirt","673216":"Sunflower","673217":"Sunflower","661568":"Lilac","661569":"Lilac","668800":"Rose Bush","668801":"Rose Bush","665088":"Peony","665089":"Peony","648256":"Double Tallgrass","648257":"Double Tallgrass","661120":"Large Fern","661121":"Large Fern","648320":"Dragon Egg","648384":"Dried Kelp Block","656192":"Emerald Block","656256":"Emerald Ore","656320":"Enchanting Table","656384":"End Portal Frame","656385":"End Portal Frame","656386":"End Portal Frame","656387":"End Portal Frame","656388":"End Portal Frame","656389":"End Portal Frame","656390":"End Portal Frame","656391":"End Portal Frame","656448":"End Rod","656449":"End Rod","656450":"End Rod","656451":"End Rod","656452":"End Rod","656453":"End Rod","656512":"End Stone","656768":"End Stone Bricks","656640":"End Stone Brick Stairs","656641":"End Stone Brick Stairs","656642":"End Stone Brick Stairs","656643":"End Stone Brick Stairs","656644":"End Stone Brick Stairs","656645":"End Stone Brick Stairs","656646":"End Stone Brick Stairs","656647":"End Stone Brick Stairs","656832":"Ender Chest","656833":"Ender Chest","656834":"Ender Chest","656835":"Ender Chest","656960":"Farmland","656961":"Farmland","656962":"Farmland","656963":"Farmland","656964":"Farmland","656965":"Farmland","656966":"Farmland","656967":"Farmland","657088":"Fire Block","657089":"Fire Block","657090":"Fire Block","657091":"Fire Block","657092":"Fire Block","657093":"Fire Block","657094":"Fire Block","657095":"Fire Block","657096":"Fire Block","657097":"Fire Block","657098":"Fire Block","657099":"Fire Block","657100":"Fire Block","657101":"Fire Block","657102":"Fire Block","657103":"Fire Block","657152":"Fletching Table","646400":"Dandelion","665920":"Poppy","641152":"Allium","641536":"Azure Bluet","643456":"Blue Orchid","645888":"Cornflower","661632":"Lily of the Valley","664896":"Orange Tulip","664960":"Oxeye Daisy","665216":"Pink Tulip","668224":"Red Tulip","674304":"White Tulip","657216":"Flower Pot","657280":"Frosted Ice","657281":"Frosted Ice","657282":"Frosted Ice","657283":"Frosted Ice","657344":"Furnace","657345":"Furnace","657346":"Furnace","657347":"Furnace","657348":"Furnace","657349":"Furnace","657350":"Furnace","657351":"Furnace","643264":"Blast Furnace","643265":"Blast Furnace","643266":"Blast Furnace","643267":"Blast Furnace","643268":"Blast Furnace","643269":"Blast Furnace","643270":"Blast Furnace","643271":"Blast Furnace","669440":"Smoker","669441":"Smoker","669442":"Smoker","669443":"Smoker","669444":"Smoker","669445":"Smoker","669446":"Smoker","669447":"Smoker","657408":"Glass","657472":"Glass Pane","657536":"Glowing Obsidian","657600":"Glowstone","657664":"Gold Block","657728":"Gold Ore","658048":"Grass","658112":"Grass Path","658176":"Gravel","658432":"Hardened Clay","658496":"Hardened Glass","658560":"Hardened Glass Pane","658624":"Hay Bale","658625":"Hay Bale","658626":"Hay Bale","658688":"Hopper","658690":"Hopper","658691":"Hopper","658692":"Hopper","658693":"Hopper","658696":"Hopper","658698":"Hopper","658699":"Hopper","658700":"Hopper","658701":"Hopper","658752":"Ice","659200":"update!","659264":"ate!upd","659328":"Invisible Bedrock","659392":"Iron Block","659456":"Iron Bars","659520":"Iron Door","659521":"Iron Door","659522":"Iron Door","659523":"Iron Door","659524":"Iron Door","659525":"Iron Door","659526":"Iron Door","659527":"Iron Door","659528":"Iron Door","659529":"Iron Door","659530":"Iron Door","659531":"Iron Door","659532":"Iron Door","659533":"Iron Door","659534":"Iron Door","659535":"Iron Door","659536":"Iron Door","659537":"Iron Door","659538":"Iron Door","659539":"Iron Door","659540":"Iron Door","659541":"Iron Door","659542":"Iron Door","659543":"Iron Door","659544":"Iron Door","659545":"Iron Door","659546":"Iron Door","659547":"Iron Door","659548":"Iron Door","659549":"Iron Door","659550":"Iron Door","659551":"Iron Door","659648":"Iron Trapdoor","659649":"Iron Trapdoor","659650":"Iron Trapdoor","659651":"Iron Trapdoor","659652":"Iron Trapdoor","659653":"Iron Trapdoor","659654":"Iron Trapdoor","659655":"Iron Trapdoor","659656":"Iron Trapdoor","659657":"Iron Trapdoor","659658":"Iron Trapdoor","659659":"Iron Trapdoor","659660":"Iron Trapdoor","659661":"Iron Trapdoor","659662":"Iron Trapdoor","659663":"Iron Trapdoor","659584":"Iron Ore","659712":"Item Frame","659713":"Item Frame","659714":"Item Frame","659715":"Item Frame","659716":"Item Frame","659717":"Item Frame","659718":"Item Frame","659719":"Item Frame","659776":"Jukebox","660864":"Ladder","660865":"Ladder","660866":"Ladder","660867":"Ladder","660928":"Lantern","660929":"Lantern","660992":"Lapis Lazuli Block","661056":"Lapis Lazuli Ore","661184":"Lava","661185":"Lava","661186":"Lava","661187":"Lava","661188":"Lava","661189":"Lava","661190":"Lava","661191":"Lava","661192":"Lava","661193":"Lava","661194":"Lava","661195":"Lava","661196":"Lava","661197":"Lava","661198":"Lava","661199":"Lava","661200":"Lava","661201":"Lava","661202":"Lava","661203":"Lava","661204":"Lava","661205":"Lava","661206":"Lava","661207":"Lava","661208":"Lava","661209":"Lava","661210":"Lava","661211":"Lava","661212":"Lava","661213":"Lava","661214":"Lava","661215":"Lava","661248":"Lectern","661249":"Lectern","661250":"Lectern","661251":"Lectern","661252":"Lectern","661253":"Lectern","661254":"Lectern","661255":"Lectern","661376":"Lever","661377":"Lever","661378":"Lever","661379":"Lever","661380":"Lever","661381":"Lever","661382":"Lever","661383":"Lever","661384":"Lever","661385":"Lever","661386":"Lever","661387":"Lever","661388":"Lever","661389":"Lever","661390":"Lever","661391":"Lever","661888":"Loom","661889":"Loom","661890":"Loom","661891":"Loom","662016":"Magma Block","662144":"Melon Block","662208":"Melon Stem","662209":"Melon Stem","662210":"Melon Stem","662211":"Melon Stem","662212":"Melon Stem","662213":"Melon Stem","662214":"Melon Stem","662215":"Melon Stem","662336":"Monster Spawner","662976":"Mycelium","663296":"Nether Bricks","667776":"Red Nether Bricks","663040":"Nether Brick Fence","663168":"Nether Brick Stairs","663169":"Nether Brick Stairs","663170":"Nether Brick Stairs","663171":"Nether Brick Stairs","663172":"Nether Brick Stairs","663173":"Nether Brick Stairs","663174":"Nether Brick Stairs","663175":"Nether Brick Stairs","667648":"Red Nether Brick Stairs","667649":"Red Nether Brick Stairs","667650":"Red Nether Brick Stairs","667651":"Red Nether Brick Stairs","667652":"Red Nether Brick Stairs","667653":"Red Nether Brick Stairs","667654":"Red Nether Brick Stairs","667655":"Red Nether Brick Stairs","663360":"Nether Portal","663361":"Nether Portal","663424":"Nether Quartz Ore","663488":"Nether Reactor Core","663616":"Nether Wart Block","663552":"Nether Wart","663553":"Nether Wart","663554":"Nether Wart","663555":"Nether Wart","663680":"Netherrack","663744":"Note Block","664768":"Obsidian","665024":"Packed Ice","665280":"Podzol","665984":"Potato Block","665985":"Potato Block","665986":"Potato Block","665987":"Potato Block","665988":"Potato Block","665989":"Potato Block","665990":"Potato Block","665991":"Potato Block","666048":"Powered Rail","666049":"Powered Rail","666050":"Powered Rail","666051":"Powered Rail","666052":"Powered Rail","666053":"Powered Rail","666056":"Powered Rail","666057":"Powered Rail","666058":"Powered Rail","666059":"Powered Rail","666060":"Powered Rail","666061":"Powered Rail","666112":"Prismarine","647424":"Dark Prismarine","666176":"Prismarine Bricks","666304":"Prismarine Bricks Stairs","666305":"Prismarine Bricks Stairs","666306":"Prismarine Bricks Stairs","666307":"Prismarine Bricks Stairs","666308":"Prismarine Bricks Stairs","666309":"Prismarine Bricks Stairs","666310":"Prismarine Bricks Stairs","666311":"Prismarine Bricks Stairs","647552":"Dark Prismarine Stairs","647553":"Dark Prismarine Stairs","647554":"Dark Prismarine Stairs","647555":"Dark Prismarine Stairs","647556":"Dark Prismarine Stairs","647557":"Dark Prismarine Stairs","647558":"Dark Prismarine Stairs","647559":"Dark Prismarine Stairs","666432":"Prismarine Stairs","666433":"Prismarine Stairs","666434":"Prismarine Stairs","666435":"Prismarine Stairs","666436":"Prismarine Stairs","666437":"Prismarine Stairs","666438":"Prismarine Stairs","666439":"Prismarine Stairs","666560":"Pumpkin","644480":"Carved Pumpkin","644481":"Carved Pumpkin","644482":"Carved Pumpkin","644483":"Carved Pumpkin","661824":"Jack o'Lantern","661825":"Jack o'Lantern","661826":"Jack o'Lantern","661827":"Jack o'Lantern","666624":"Pumpkin Stem","666625":"Pumpkin Stem","666626":"Pumpkin Stem","666627":"Pumpkin Stem","666628":"Pumpkin Stem","666629":"Pumpkin Stem","666630":"Pumpkin Stem","666631":"Pumpkin Stem","666816":"Purpur Block","666880":"Purpur Pillar","666881":"Purpur Pillar","666882":"Purpur Pillar","667008":"Purpur Stairs","667009":"Purpur Stairs","667010":"Purpur Stairs","667011":"Purpur Stairs","667012":"Purpur Stairs","667013":"Purpur Stairs","667014":"Purpur Stairs","667015":"Purpur Stairs","667072":"Quartz Block","644672":"Chiseled Quartz Block","644673":"Chiseled Quartz Block","644674":"Chiseled Quartz Block","667136":"Quartz Pillar","667137":"Quartz Pillar","667138":"Quartz Pillar","669504":"Smooth Quartz Block","667264":"Quartz Stairs","667265":"Quartz Stairs","667266":"Quartz Stairs","667267":"Quartz Stairs","667268":"Quartz Stairs","667269":"Quartz Stairs","667270":"Quartz Stairs","667271":"Quartz Stairs","669632":"Smooth Quartz Stairs","669633":"Smooth Quartz Stairs","669634":"Smooth Quartz Stairs","669635":"Smooth Quartz Stairs","669636":"Smooth Quartz Stairs","669637":"Smooth Quartz Stairs","669638":"Smooth Quartz Stairs","669639":"Smooth Quartz Stairs","667328":"Rail","667329":"Rail","667330":"Rail","667331":"Rail","667332":"Rail","667333":"Rail","667334":"Rail","667335":"Rail","667336":"Rail","667337":"Rail","667456":"Red Mushroom","668288":"Redstone Block","668352":"Redstone Comparator","668353":"Redstone Comparator","668354":"Redstone Comparator","668355":"Redstone Comparator","668356":"Redstone Comparator","668357":"Redstone Comparator","668358":"Redstone Comparator","668359":"Redstone Comparator","668360":"Redstone Comparator","668361":"Redstone Comparator","668362":"Redstone Comparator","668363":"Redstone Comparator","668364":"Redstone Comparator","668365":"Redstone Comparator","668366":"Redstone Comparator","668367":"Redstone Comparator","668416":"Redstone Lamp","668417":"Redstone Lamp","668480":"Redstone Ore","668481":"Redstone Ore","668544":"Redstone Repeater","668545":"Redstone Repeater","668546":"Redstone Repeater","668547":"Redstone Repeater","668548":"Redstone Repeater","668549":"Redstone Repeater","668550":"Redstone Repeater","668551":"Redstone Repeater","668552":"Redstone Repeater","668553":"Redstone Repeater","668554":"Redstone Repeater","668555":"Redstone Repeater","668556":"Redstone Repeater","668557":"Redstone Repeater","668558":"Redstone Repeater","668559":"Redstone Repeater","668560":"Redstone Repeater","668561":"Redstone Repeater","668562":"Redstone Repeater","668563":"Redstone Repeater","668564":"Redstone Repeater","668565":"Redstone Repeater","668566":"Redstone Repeater","668567":"Redstone Repeater","668568":"Redstone Repeater","668569":"Redstone Repeater","668570":"Redstone Repeater","668571":"Redstone Repeater","668572":"Redstone Repeater","668573":"Redstone Repeater","668574":"Redstone Repeater","668575":"Redstone Repeater","668609":"Redstone Torch","668610":"Redstone Torch","668611":"Redstone Torch","668612":"Redstone Torch","668613":"Redstone Torch","668617":"Redstone Torch","668618":"Redstone Torch","668619":"Redstone Torch","668620":"Redstone Torch","668621":"Redstone Torch","668672":"Redstone","668673":"Redstone","668674":"Redstone","668675":"Redstone","668676":"Redstone","668677":"Redstone","668678":"Redstone","668679":"Redstone","668680":"Redstone","668681":"Redstone","668682":"Redstone","668683":"Redstone","668684":"Redstone","668685":"Redstone","668686":"Redstone","668687":"Redstone","668736":"reserved6","668864":"Sand","667840":"Red Sand","669184":"Sea Lantern","669248":"Sea Pickle","669249":"Sea Pickle","669250":"Sea Pickle","669251":"Sea Pickle","669252":"Sea Pickle","669253":"Sea Pickle","669254":"Sea Pickle","669255":"Sea Pickle","662273":"Mob Head","662274":"Mob Head","662275":"Mob Head","662276":"Mob Head","662277":"Mob Head","669376":"Slime Block","670208":"Snow Block","670272":"Snow Layer","670273":"Snow Layer","670274":"Snow Layer","670275":"Snow Layer","670276":"Snow Layer","670277":"Snow Layer","670278":"Snow Layer","670279":"Snow Layer","670336":"Soul Sand","670400":"Sponge","670401":"Sponge","669312":"Shulker Box","671744":"Stone","641216":"Andesite","647936":"Diorite","657792":"Granite","665344":"Polished Andesite","665536":"Polished Diorite","665728":"Polished Granite","672000":"Stone Bricks","662848":"Mossy Stone Bricks","645952":"Cracked Stone Bricks","644864":"Chiseled Stone Bricks","659072":"Infested Stone","659136":"Infested Stone Brick","658880":"Infested Cobblestone","659008":"Infested Mossy Stone Brick","658944":"Infested Cracked Stone Brick","658816":"Infested Chiseled Stone Brick","672256":"Stone Stairs","672257":"Stone Stairs","672258":"Stone Stairs","672259":"Stone Stairs","672260":"Stone Stairs","672261":"Stone Stairs","672262":"Stone Stairs","672263":"Stone Stairs","670080":"Smooth Stone","641344":"Andesite Stairs","641345":"Andesite Stairs","641346":"Andesite Stairs","641347":"Andesite Stairs","641348":"Andesite Stairs","641349":"Andesite Stairs","641350":"Andesite Stairs","641351":"Andesite Stairs","648064":"Diorite Stairs","648065":"Diorite Stairs","648066":"Diorite Stairs","648067":"Diorite Stairs","648068":"Diorite Stairs","648069":"Diorite Stairs","648070":"Diorite Stairs","648071":"Diorite Stairs","657920":"Granite Stairs","657921":"Granite Stairs","657922":"Granite Stairs","657923":"Granite Stairs","657924":"Granite Stairs","657925":"Granite Stairs","657926":"Granite Stairs","657927":"Granite Stairs","665472":"Polished Andesite Stairs","665473":"Polished Andesite Stairs","665474":"Polished Andesite Stairs","665475":"Polished Andesite Stairs","665476":"Polished Andesite Stairs","665477":"Polished Andesite Stairs","665478":"Polished Andesite Stairs","665479":"Polished Andesite Stairs","665664":"Polished Diorite Stairs","665665":"Polished Diorite Stairs","665666":"Polished Diorite Stairs","665667":"Polished Diorite Stairs","665668":"Polished Diorite Stairs","665669":"Polished Diorite Stairs","665670":"Polished Diorite Stairs","665671":"Polished Diorite Stairs","665856":"Polished Granite Stairs","665857":"Polished Granite Stairs","665858":"Polished Granite Stairs","665859":"Polished Granite Stairs","665860":"Polished Granite Stairs","665861":"Polished Granite Stairs","665862":"Polished Granite Stairs","665863":"Polished Granite Stairs","671872":"Stone Brick Stairs","671873":"Stone Brick Stairs","671874":"Stone Brick Stairs","671875":"Stone Brick Stairs","671876":"Stone Brick Stairs","671877":"Stone Brick Stairs","671878":"Stone Brick Stairs","671879":"Stone Brick Stairs","662720":"Mossy Stone Brick Stairs","662721":"Mossy Stone Brick Stairs","662722":"Mossy Stone Brick Stairs","662723":"Mossy Stone Brick Stairs","662724":"Mossy Stone Brick Stairs","662725":"Mossy Stone Brick Stairs","662726":"Mossy Stone Brick Stairs","662727":"Mossy Stone Brick Stairs","672064":"Stone Button","672065":"Stone Button","672066":"Stone Button","672067":"Stone Button","672068":"Stone Button","672069":"Stone Button","672072":"Stone Button","672073":"Stone Button","672074":"Stone Button","672075":"Stone Button","672076":"Stone Button","672077":"Stone Button","672320":"Stonecutter","672321":"Stonecutter","672322":"Stonecutter","672323":"Stonecutter","672128":"Stone Pressure Plate","672129":"Stone Pressure Plate","643776":"Brick Slab","643777":"Brick Slab","643778":"Brick Slab","645184":"Cobblestone Slab","645185":"Cobblestone Slab","645186":"Cobblestone Slab","656896":"Fake Wooden Slab","656897":"Fake Wooden Slab","656898":"Fake Wooden Slab","663104":"Nether Brick Slab","663105":"Nether Brick Slab","663106":"Nether Brick Slab","667200":"Quartz Slab","667201":"Quartz Slab","667202":"Quartz Slab","668992":"Sandstone Slab","668993":"Sandstone Slab","668994":"Sandstone Slab","670144":"Smooth Stone Slab","670145":"Smooth Stone Slab","670146":"Smooth Stone Slab","671808":"Stone Brick Slab","671809":"Stone Brick Slab","671810":"Stone Brick Slab","647488":"Dark Prismarine Slab","647489":"Dark Prismarine Slab","647490":"Dark Prismarine Slab","662464":"Mossy Cobblestone Slab","662465":"Mossy Cobblestone Slab","662466":"Mossy Cobblestone Slab","666368":"Prismarine Slab","666369":"Prismarine Slab","666370":"Prismarine Slab","666240":"Prismarine Bricks Slab","666241":"Prismarine Bricks Slab","666242":"Prismarine Bricks Slab","666944":"Purpur Slab","666945":"Purpur Slab","666946":"Purpur Slab","667584":"Red Nether Brick Slab","667585":"Red Nether Brick Slab","667586":"Red Nether Brick Slab","667968":"Red Sandstone Slab","667969":"Red Sandstone Slab","667970":"Red Sandstone Slab","669952":"Smooth Sandstone Slab","669953":"Smooth Sandstone Slab","669954":"Smooth Sandstone Slab","641280":"Andesite Slab","641281":"Andesite Slab","641282":"Andesite Slab","648000":"Diorite Slab","648001":"Diorite Slab","648002":"Diorite Slab","656576":"End Stone Brick Slab","656577":"End Stone Brick Slab","656578":"End Stone Brick Slab","657856":"Granite Slab","657857":"Granite Slab","657858":"Granite Slab","665408":"Polished Andesite Slab","665409":"Polished Andesite Slab","665410":"Polished Andesite Slab","665600":"Polished Diorite Slab","665601":"Polished Diorite Slab","665602":"Polished Diorite Slab","665792":"Polished Granite Slab","665793":"Polished Granite Slab","665794":"Polished Granite Slab","669760":"Smooth Red Sandstone Slab","669761":"Smooth Red Sandstone Slab","669762":"Smooth Red Sandstone Slab","646144":"Cut Red Sandstone Slab","646145":"Cut Red Sandstone Slab","646146":"Cut Red Sandstone Slab","646272":"Cut Sandstone Slab","646273":"Cut Sandstone Slab","646274":"Cut Sandstone Slab","662656":"Mossy Stone Brick Slab","662657":"Mossy Stone Brick Slab","662658":"Mossy Stone Brick Slab","669568":"Smooth Quartz Slab","669569":"Smooth Quartz Slab","669570":"Smooth Quartz Slab","672192":"Stone Slab","672193":"Stone Slab","672194":"Stone Slab","661312":"Legacy Stonecutter","673152":"Sugarcane","673153":"Sugarcane","673154":"Sugarcane","673155":"Sugarcane","673156":"Sugarcane","673157":"Sugarcane","673158":"Sugarcane","673159":"Sugarcane","673160":"Sugarcane","673161":"Sugarcane","673162":"Sugarcane","673163":"Sugarcane","673164":"Sugarcane","673165":"Sugarcane","673166":"Sugarcane","673167":"Sugarcane","673280":"Sweet Berry Bush","673281":"Sweet Berry Bush","673282":"Sweet Berry Bush","673283":"Sweet Berry Bush","673408":"TNT","673409":"TNT","673410":"TNT","673411":"TNT","657024":"Fern","673344":"Tall Grass","643521":"Blue Torch","643522":"Blue Torch","643523":"Blue Torch","643524":"Blue Torch","643525":"Blue Torch","666753":"Purple Torch","666754":"Purple Torch","666755":"Purple Torch","666756":"Purple Torch","666757":"Purple Torch","668161":"Red Torch","668162":"Red Torch","668163":"Red Torch","668164":"Red Torch","668165":"Red Torch","658369":"Green Torch","658370":"Green Torch","658371":"Green Torch","658372":"Green Torch","658373":"Green Torch","673473":"Torch","673474":"Torch","673475":"Torch","673476":"Torch","673477":"Torch","673536":"Trapped Chest","673537":"Trapped Chest","673538":"Trapped Chest","673539":"Trapped Chest","673600":"Tripwire","673601":"Tripwire","673602":"Tripwire","673603":"Tripwire","673604":"Tripwire","673605":"Tripwire","673606":"Tripwire","673607":"Tripwire","673608":"Tripwire","673609":"Tripwire","673610":"Tripwire","673611":"Tripwire","673612":"Tripwire","673613":"Tripwire","673614":"Tripwire","673615":"Tripwire","673664":"Tripwire Hook","673665":"Tripwire Hook","673666":"Tripwire Hook","673667":"Tripwire Hook","673668":"Tripwire Hook","673669":"Tripwire Hook","673670":"Tripwire Hook","673671":"Tripwire Hook","673672":"Tripwire Hook","673673":"Tripwire Hook","673674":"Tripwire Hook","673675":"Tripwire Hook","673676":"Tripwire Hook","673677":"Tripwire Hook","673678":"Tripwire Hook","673679":"Tripwire Hook","673729":"Underwater Torch","673730":"Underwater Torch","673731":"Underwater Torch","673732":"Underwater Torch","673733":"Underwater Torch","673792":"Vines","673793":"Vines","673794":"Vines","673795":"Vines","673796":"Vines","673797":"Vines","673798":"Vines","673799":"Vines","673800":"Vines","673801":"Vines","673802":"Vines","673803":"Vines","673804":"Vines","673805":"Vines","673806":"Vines","673807":"Vines","673984":"Water","673985":"Water","673986":"Water","673987":"Water","673988":"Water","673989":"Water","673990":"Water","673991":"Water","673992":"Water","673993":"Water","673994":"Water","673995":"Water","673996":"Water","673997":"Water","673998":"Water","673999":"Water","674000":"Water","674001":"Water","674002":"Water","674003":"Water","674004":"Water","674005":"Water","674006":"Water","674007":"Water","674008":"Water","674009":"Water","674010":"Water","674011":"Water","674012":"Water","674013":"Water","674014":"Water","674015":"Water","661696":"Lily Pad","674048":"Weighted Pressure Plate Heavy","674049":"Weighted Pressure Plate Heavy","674050":"Weighted Pressure Plate Heavy","674051":"Weighted Pressure Plate Heavy","674052":"Weighted Pressure Plate Heavy","674053":"Weighted Pressure Plate Heavy","674054":"Weighted Pressure Plate Heavy","674055":"Weighted Pressure Plate Heavy","674056":"Weighted Pressure Plate Heavy","674057":"Weighted Pressure Plate Heavy","674058":"Weighted Pressure Plate Heavy","674059":"Weighted Pressure Plate Heavy","674060":"Weighted Pressure Plate Heavy","674061":"Weighted Pressure Plate Heavy","674062":"Weighted Pressure Plate Heavy","674063":"Weighted Pressure Plate Heavy","674112":"Weighted Pressure Plate Light","674113":"Weighted Pressure Plate Light","674114":"Weighted Pressure Plate Light","674115":"Weighted Pressure Plate Light","674116":"Weighted Pressure Plate Light","674117":"Weighted Pressure Plate Light","674118":"Weighted Pressure Plate Light","674119":"Weighted Pressure Plate Light","674120":"Weighted Pressure Plate Light","674121":"Weighted Pressure Plate Light","674122":"Weighted Pressure Plate Light","674123":"Weighted Pressure Plate Light","674124":"Weighted Pressure Plate Light","674125":"Weighted Pressure Plate Light","674126":"Weighted Pressure Plate Light","674127":"Weighted Pressure Plate Light","674176":"Wheat Block","674177":"Wheat Block","674178":"Wheat Block","674179":"Wheat Block","674180":"Wheat Block","674181":"Wheat Block","674182":"Wheat Block","674183":"Wheat Block","664192":"Oak Planks","664320":"Oak Sapling","664321":"Oak Sapling","663936":"Oak Fence","664448":"Oak Slab","664449":"Oak Slab","664450":"Oak Slab","664064":"Oak Leaves","664065":"Oak Leaves","664066":"Oak Leaves","664067":"Oak Leaves","664128":"Oak Log","664129":"Oak Log","664130":"Oak Log","672896":"Stripped Oak Log","672897":"Stripped Oak Log","672898":"Stripped Oak Log","664704":"Oak Wood","672960":"Stripped Oak Wood","664000":"Oak Fence Gate","664001":"Oak Fence Gate","664002":"Oak Fence Gate","664003":"Oak Fence Gate","664004":"Oak Fence Gate","664005":"Oak Fence Gate","664006":"Oak Fence Gate","664007":"Oak Fence Gate","664008":"Oak Fence Gate","664009":"Oak Fence Gate","664010":"Oak Fence Gate","664011":"Oak Fence Gate","664012":"Oak Fence Gate","664013":"Oak Fence Gate","664014":"Oak Fence Gate","664015":"Oak Fence Gate","664512":"Oak Stairs","664513":"Oak Stairs","664514":"Oak Stairs","664515":"Oak Stairs","664516":"Oak Stairs","664517":"Oak Stairs","664518":"Oak Stairs","664519":"Oak Stairs","663872":"Oak Door","663873":"Oak Door","663874":"Oak Door","663875":"Oak Door","663876":"Oak Door","663877":"Oak Door","663878":"Oak Door","663879":"Oak Door","663880":"Oak Door","663881":"Oak Door","663882":"Oak Door","663883":"Oak Door","663884":"Oak Door","663885":"Oak Door","663886":"Oak Door","663887":"Oak Door","663888":"Oak Door","663889":"Oak Door","663890":"Oak Door","663891":"Oak Door","663892":"Oak Door","663893":"Oak Door","663894":"Oak Door","663895":"Oak Door","663896":"Oak Door","663897":"Oak Door","663898":"Oak Door","663899":"Oak Door","663900":"Oak Door","663901":"Oak Door","663902":"Oak Door","663903":"Oak Door","663808":"Oak Button","663809":"Oak Button","663810":"Oak Button","663811":"Oak Button","663812":"Oak Button","663813":"Oak Button","663816":"Oak Button","663817":"Oak Button","663818":"Oak Button","663819":"Oak Button","663820":"Oak Button","663821":"Oak Button","664256":"Oak Pressure Plate","664257":"Oak Pressure Plate","664576":"Oak Trapdoor","664577":"Oak Trapdoor","664578":"Oak Trapdoor","664579":"Oak Trapdoor","664580":"Oak Trapdoor","664581":"Oak Trapdoor","664582":"Oak Trapdoor","664583":"Oak Trapdoor","664584":"Oak Trapdoor","664585":"Oak Trapdoor","664586":"Oak Trapdoor","664587":"Oak Trapdoor","664588":"Oak Trapdoor","664589":"Oak Trapdoor","664590":"Oak Trapdoor","664591":"Oak Trapdoor","664384":"Oak Sign","664385":"Oak Sign","664386":"Oak Sign","664387":"Oak Sign","664388":"Oak Sign","664389":"Oak Sign","664390":"Oak Sign","664391":"Oak Sign","664392":"Oak Sign","664393":"Oak Sign","664394":"Oak Sign","664395":"Oak Sign","664396":"Oak Sign","664397":"Oak Sign","664398":"Oak Sign","664399":"Oak Sign","664640":"Oak Wall Sign","664641":"Oak Wall Sign","664642":"Oak Wall Sign","664643":"Oak Wall Sign","670848":"Spruce Planks","670976":"Spruce Sapling","670977":"Spruce Sapling","670592":"Spruce Fence","671104":"Spruce Slab","671105":"Spruce Slab","671106":"Spruce Slab","670720":"Spruce Leaves","670721":"Spruce Leaves","670722":"Spruce Leaves","670723":"Spruce Leaves","670784":"Spruce Log","670785":"Spruce Log","670786":"Spruce Log","673024":"Stripped Spruce Log","673025":"Stripped Spruce Log","673026":"Stripped Spruce Log","671360":"Spruce Wood","673088":"Stripped Spruce Wood","670656":"Spruce Fence Gate","670657":"Spruce Fence Gate","670658":"Spruce Fence Gate","670659":"Spruce Fence Gate","670660":"Spruce Fence Gate","670661":"Spruce Fence Gate","670662":"Spruce Fence Gate","670663":"Spruce Fence Gate","670664":"Spruce Fence Gate","670665":"Spruce Fence Gate","670666":"Spruce Fence Gate","670667":"Spruce Fence Gate","670668":"Spruce Fence Gate","670669":"Spruce Fence Gate","670670":"Spruce Fence Gate","670671":"Spruce Fence Gate","671168":"Spruce Stairs","671169":"Spruce Stairs","671170":"Spruce Stairs","671171":"Spruce Stairs","671172":"Spruce Stairs","671173":"Spruce Stairs","671174":"Spruce Stairs","671175":"Spruce Stairs","670528":"Spruce Door","670529":"Spruce Door","670530":"Spruce Door","670531":"Spruce Door","670532":"Spruce Door","670533":"Spruce Door","670534":"Spruce Door","670535":"Spruce Door","670536":"Spruce Door","670537":"Spruce Door","670538":"Spruce Door","670539":"Spruce Door","670540":"Spruce Door","670541":"Spruce Door","670542":"Spruce Door","670543":"Spruce Door","670544":"Spruce Door","670545":"Spruce Door","670546":"Spruce Door","670547":"Spruce Door","670548":"Spruce Door","670549":"Spruce Door","670550":"Spruce Door","670551":"Spruce Door","670552":"Spruce Door","670553":"Spruce Door","670554":"Spruce Door","670555":"Spruce Door","670556":"Spruce Door","670557":"Spruce Door","670558":"Spruce Door","670559":"Spruce Door","670464":"Spruce Button","670465":"Spruce Button","670466":"Spruce Button","670467":"Spruce Button","670468":"Spruce Button","670469":"Spruce Button","670472":"Spruce Button","670473":"Spruce Button","670474":"Spruce Button","670475":"Spruce Button","670476":"Spruce Button","670477":"Spruce Button","670912":"Spruce Pressure Plate","670913":"Spruce Pressure Plate","671232":"Spruce Trapdoor","671233":"Spruce Trapdoor","671234":"Spruce Trapdoor","671235":"Spruce Trapdoor","671236":"Spruce Trapdoor","671237":"Spruce Trapdoor","671238":"Spruce Trapdoor","671239":"Spruce Trapdoor","671240":"Spruce Trapdoor","671241":"Spruce Trapdoor","671242":"Spruce Trapdoor","671243":"Spruce Trapdoor","671244":"Spruce Trapdoor","671245":"Spruce Trapdoor","671246":"Spruce Trapdoor","671247":"Spruce Trapdoor","671040":"Spruce Sign","671041":"Spruce Sign","671042":"Spruce Sign","671043":"Spruce Sign","671044":"Spruce Sign","671045":"Spruce Sign","671046":"Spruce Sign","671047":"Spruce Sign","671048":"Spruce Sign","671049":"Spruce Sign","671050":"Spruce Sign","671051":"Spruce Sign","671052":"Spruce Sign","671053":"Spruce Sign","671054":"Spruce Sign","671055":"Spruce Sign","671296":"Spruce Wall Sign","671297":"Spruce Wall Sign","671298":"Spruce Wall Sign","671299":"Spruce Wall Sign","642624":"Birch Planks","642752":"Birch Sapling","642753":"Birch Sapling","642368":"Birch Fence","642880":"Birch Slab","642881":"Birch Slab","642882":"Birch Slab","642496":"Birch Leaves","642497":"Birch Leaves","642498":"Birch Leaves","642499":"Birch Leaves","642560":"Birch Log","642561":"Birch Log","642562":"Birch Log","672512":"Stripped Birch Log","672513":"Stripped Birch Log","672514":"Stripped Birch Log","643136":"Birch Wood","672576":"Stripped Birch Wood","642432":"Birch Fence Gate","642433":"Birch Fence Gate","642434":"Birch Fence Gate","642435":"Birch Fence Gate","642436":"Birch Fence Gate","642437":"Birch Fence Gate","642438":"Birch Fence Gate","642439":"Birch Fence Gate","642440":"Birch Fence Gate","642441":"Birch Fence Gate","642442":"Birch Fence Gate","642443":"Birch Fence Gate","642444":"Birch Fence Gate","642445":"Birch Fence Gate","642446":"Birch Fence Gate","642447":"Birch Fence Gate","642944":"Birch Stairs","642945":"Birch Stairs","642946":"Birch Stairs","642947":"Birch Stairs","642948":"Birch Stairs","642949":"Birch Stairs","642950":"Birch Stairs","642951":"Birch Stairs","642304":"Birch Door","642305":"Birch Door","642306":"Birch Door","642307":"Birch Door","642308":"Birch Door","642309":"Birch Door","642310":"Birch Door","642311":"Birch Door","642312":"Birch Door","642313":"Birch Door","642314":"Birch Door","642315":"Birch Door","642316":"Birch Door","642317":"Birch Door","642318":"Birch Door","642319":"Birch Door","642320":"Birch Door","642321":"Birch Door","642322":"Birch Door","642323":"Birch Door","642324":"Birch Door","642325":"Birch Door","642326":"Birch Door","642327":"Birch Door","642328":"Birch Door","642329":"Birch Door","642330":"Birch Door","642331":"Birch Door","642332":"Birch Door","642333":"Birch Door","642334":"Birch Door","642335":"Birch Door","642240":"Birch Button","642241":"Birch Button","642242":"Birch Button","642243":"Birch Button","642244":"Birch Button","642245":"Birch Button","642248":"Birch Button","642249":"Birch Button","642250":"Birch Button","642251":"Birch Button","642252":"Birch Button","642253":"Birch Button","642688":"Birch Pressure Plate","642689":"Birch Pressure Plate","643008":"Birch Trapdoor","643009":"Birch Trapdoor","643010":"Birch Trapdoor","643011":"Birch Trapdoor","643012":"Birch Trapdoor","643013":"Birch Trapdoor","643014":"Birch Trapdoor","643015":"Birch Trapdoor","643016":"Birch Trapdoor","643017":"Birch Trapdoor","643018":"Birch Trapdoor","643019":"Birch Trapdoor","643020":"Birch Trapdoor","643021":"Birch Trapdoor","643022":"Birch Trapdoor","643023":"Birch Trapdoor","642816":"Birch Sign","642817":"Birch Sign","642818":"Birch Sign","642819":"Birch Sign","642820":"Birch Sign","642821":"Birch Sign","642822":"Birch Sign","642823":"Birch Sign","642824":"Birch Sign","642825":"Birch Sign","642826":"Birch Sign","642827":"Birch Sign","642828":"Birch Sign","642829":"Birch Sign","642830":"Birch Sign","642831":"Birch Sign","643072":"Birch Wall Sign","643073":"Birch Wall Sign","643074":"Birch Wall Sign","643075":"Birch Wall Sign","660224":"Jungle Planks","660352":"Jungle Sapling","660353":"Jungle Sapling","659968":"Jungle Fence","660480":"Jungle Slab","660481":"Jungle Slab","660482":"Jungle Slab","660096":"Jungle Leaves","660097":"Jungle Leaves","660098":"Jungle Leaves","660099":"Jungle Leaves","660160":"Jungle Log","660161":"Jungle Log","660162":"Jungle Log","672768":"Stripped Jungle Log","672769":"Stripped Jungle Log","672770":"Stripped Jungle Log","660736":"Jungle Wood","672832":"Stripped Jungle Wood","660032":"Jungle Fence Gate","660033":"Jungle Fence Gate","660034":"Jungle Fence Gate","660035":"Jungle Fence Gate","660036":"Jungle Fence Gate","660037":"Jungle Fence Gate","660038":"Jungle Fence Gate","660039":"Jungle Fence Gate","660040":"Jungle Fence Gate","660041":"Jungle Fence Gate","660042":"Jungle Fence Gate","660043":"Jungle Fence Gate","660044":"Jungle Fence Gate","660045":"Jungle Fence Gate","660046":"Jungle Fence Gate","660047":"Jungle Fence Gate","660544":"Jungle Stairs","660545":"Jungle Stairs","660546":"Jungle Stairs","660547":"Jungle Stairs","660548":"Jungle Stairs","660549":"Jungle Stairs","660550":"Jungle Stairs","660551":"Jungle Stairs","659904":"Jungle Door","659905":"Jungle Door","659906":"Jungle Door","659907":"Jungle Door","659908":"Jungle Door","659909":"Jungle Door","659910":"Jungle Door","659911":"Jungle Door","659912":"Jungle Door","659913":"Jungle Door","659914":"Jungle Door","659915":"Jungle Door","659916":"Jungle Door","659917":"Jungle Door","659918":"Jungle Door","659919":"Jungle Door","659920":"Jungle Door","659921":"Jungle Door","659922":"Jungle Door","659923":"Jungle Door","659924":"Jungle Door","659925":"Jungle Door","659926":"Jungle Door","659927":"Jungle Door","659928":"Jungle Door","659929":"Jungle Door","659930":"Jungle Door","659931":"Jungle Door","659932":"Jungle Door","659933":"Jungle Door","659934":"Jungle Door","659935":"Jungle Door","659840":"Jungle Button","659841":"Jungle Button","659842":"Jungle Button","659843":"Jungle Button","659844":"Jungle Button","659845":"Jungle Button","659848":"Jungle Button","659849":"Jungle Button","659850":"Jungle Button","659851":"Jungle Button","659852":"Jungle Button","659853":"Jungle Button","660288":"Jungle Pressure Plate","660289":"Jungle Pressure Plate","660608":"Jungle Trapdoor","660609":"Jungle Trapdoor","660610":"Jungle Trapdoor","660611":"Jungle Trapdoor","660612":"Jungle Trapdoor","660613":"Jungle Trapdoor","660614":"Jungle Trapdoor","660615":"Jungle Trapdoor","660616":"Jungle Trapdoor","660617":"Jungle Trapdoor","660618":"Jungle Trapdoor","660619":"Jungle Trapdoor","660620":"Jungle Trapdoor","660621":"Jungle Trapdoor","660622":"Jungle Trapdoor","660623":"Jungle Trapdoor","660416":"Jungle Sign","660417":"Jungle Sign","660418":"Jungle Sign","660419":"Jungle Sign","660420":"Jungle Sign","660421":"Jungle Sign","660422":"Jungle Sign","660423":"Jungle Sign","660424":"Jungle Sign","660425":"Jungle Sign","660426":"Jungle Sign","660427":"Jungle Sign","660428":"Jungle Sign","660429":"Jungle Sign","660430":"Jungle Sign","660431":"Jungle Sign","660672":"Jungle Wall Sign","660673":"Jungle Wall Sign","660674":"Jungle Wall Sign","660675":"Jungle Wall Sign","640448":"Acacia Planks","640576":"Acacia Sapling","640577":"Acacia Sapling","640192":"Acacia Fence","640704":"Acacia Slab","640705":"Acacia Slab","640706":"Acacia Slab","640320":"Acacia Leaves","640321":"Acacia Leaves","640322":"Acacia Leaves","640323":"Acacia Leaves","640384":"Acacia Log","640385":"Acacia Log","640386":"Acacia Log","672384":"Stripped Acacia Log","672385":"Stripped Acacia Log","672386":"Stripped Acacia Log","640960":"Acacia Wood","672448":"Stripped Acacia Wood","640256":"Acacia Fence Gate","640257":"Acacia Fence Gate","640258":"Acacia Fence Gate","640259":"Acacia Fence Gate","640260":"Acacia Fence Gate","640261":"Acacia Fence Gate","640262":"Acacia Fence Gate","640263":"Acacia Fence Gate","640264":"Acacia Fence Gate","640265":"Acacia Fence Gate","640266":"Acacia Fence Gate","640267":"Acacia Fence Gate","640268":"Acacia Fence Gate","640269":"Acacia Fence Gate","640270":"Acacia Fence Gate","640271":"Acacia Fence Gate","640768":"Acacia Stairs","640769":"Acacia Stairs","640770":"Acacia Stairs","640771":"Acacia Stairs","640772":"Acacia Stairs","640773":"Acacia Stairs","640774":"Acacia Stairs","640775":"Acacia Stairs","640128":"Acacia Door","640129":"Acacia Door","640130":"Acacia Door","640131":"Acacia Door","640132":"Acacia Door","640133":"Acacia Door","640134":"Acacia Door","640135":"Acacia Door","640136":"Acacia Door","640137":"Acacia Door","640138":"Acacia Door","640139":"Acacia Door","640140":"Acacia Door","640141":"Acacia Door","640142":"Acacia Door","640143":"Acacia Door","640144":"Acacia Door","640145":"Acacia Door","640146":"Acacia Door","640147":"Acacia Door","640148":"Acacia Door","640149":"Acacia Door","640150":"Acacia Door","640151":"Acacia Door","640152":"Acacia Door","640153":"Acacia Door","640154":"Acacia Door","640155":"Acacia Door","640156":"Acacia Door","640157":"Acacia Door","640158":"Acacia Door","640159":"Acacia Door","640064":"Acacia Button","640065":"Acacia Button","640066":"Acacia Button","640067":"Acacia Button","640068":"Acacia Button","640069":"Acacia Button","640072":"Acacia Button","640073":"Acacia Button","640074":"Acacia Button","640075":"Acacia Button","640076":"Acacia Button","640077":"Acacia Button","640512":"Acacia Pressure Plate","640513":"Acacia Pressure Plate","640832":"Acacia Trapdoor","640833":"Acacia Trapdoor","640834":"Acacia Trapdoor","640835":"Acacia Trapdoor","640836":"Acacia Trapdoor","640837":"Acacia Trapdoor","640838":"Acacia Trapdoor","640839":"Acacia Trapdoor","640840":"Acacia Trapdoor","640841":"Acacia Trapdoor","640842":"Acacia Trapdoor","640843":"Acacia Trapdoor","640844":"Acacia Trapdoor","640845":"Acacia Trapdoor","640846":"Acacia Trapdoor","640847":"Acacia Trapdoor","640640":"Acacia Sign","640641":"Acacia Sign","640642":"Acacia Sign","640643":"Acacia Sign","640644":"Acacia Sign","640645":"Acacia Sign","640646":"Acacia Sign","640647":"Acacia Sign","640648":"Acacia Sign","640649":"Acacia Sign","640650":"Acacia Sign","640651":"Acacia Sign","640652":"Acacia Sign","640653":"Acacia Sign","640654":"Acacia Sign","640655":"Acacia Sign","640896":"Acacia Wall Sign","640897":"Acacia Wall Sign","640898":"Acacia Wall Sign","640899":"Acacia Wall Sign","646848":"Dark Oak Planks","646976":"Dark Oak Sapling","646977":"Dark Oak Sapling","646592":"Dark Oak Fence","647104":"Dark Oak Slab","647105":"Dark Oak Slab","647106":"Dark Oak Slab","646720":"Dark Oak Leaves","646721":"Dark Oak Leaves","646722":"Dark Oak Leaves","646723":"Dark Oak Leaves","646784":"Dark Oak Log","646785":"Dark Oak Log","646786":"Dark Oak Log","672640":"Stripped Dark Oak Log","672641":"Stripped Dark Oak Log","672642":"Stripped Dark Oak Log","647360":"Dark Oak Wood","672704":"Stripped Dark Oak Wood","646656":"Dark Oak Fence Gate","646657":"Dark Oak Fence Gate","646658":"Dark Oak Fence Gate","646659":"Dark Oak Fence Gate","646660":"Dark Oak Fence Gate","646661":"Dark Oak Fence Gate","646662":"Dark Oak Fence Gate","646663":"Dark Oak Fence Gate","646664":"Dark Oak Fence Gate","646665":"Dark Oak Fence Gate","646666":"Dark Oak Fence Gate","646667":"Dark Oak Fence Gate","646668":"Dark Oak Fence Gate","646669":"Dark Oak Fence Gate","646670":"Dark Oak Fence Gate","646671":"Dark Oak Fence Gate","647168":"Dark Oak Stairs","647169":"Dark Oak Stairs","647170":"Dark Oak Stairs","647171":"Dark Oak Stairs","647172":"Dark Oak Stairs","647173":"Dark Oak Stairs","647174":"Dark Oak Stairs","647175":"Dark Oak Stairs","646528":"Dark Oak Door","646529":"Dark Oak Door","646530":"Dark Oak Door","646531":"Dark Oak Door","646532":"Dark Oak Door","646533":"Dark Oak Door","646534":"Dark Oak Door","646535":"Dark Oak Door","646536":"Dark Oak Door","646537":"Dark Oak Door","646538":"Dark Oak Door","646539":"Dark Oak Door","646540":"Dark Oak Door","646541":"Dark Oak Door","646542":"Dark Oak Door","646543":"Dark Oak Door","646544":"Dark Oak Door","646545":"Dark Oak Door","646546":"Dark Oak Door","646547":"Dark Oak Door","646548":"Dark Oak Door","646549":"Dark Oak Door","646550":"Dark Oak Door","646551":"Dark Oak Door","646552":"Dark Oak Door","646553":"Dark Oak Door","646554":"Dark Oak Door","646555":"Dark Oak Door","646556":"Dark Oak Door","646557":"Dark Oak Door","646558":"Dark Oak Door","646559":"Dark Oak Door","646464":"Dark Oak Button","646465":"Dark Oak Button","646466":"Dark Oak Button","646467":"Dark Oak Button","646468":"Dark Oak Button","646469":"Dark Oak Button","646472":"Dark Oak Button","646473":"Dark Oak Button","646474":"Dark Oak Button","646475":"Dark Oak Button","646476":"Dark Oak Button","646477":"Dark Oak Button","646912":"Dark Oak Pressure Plate","646913":"Dark Oak Pressure Plate","647232":"Dark Oak Trapdoor","647233":"Dark Oak Trapdoor","647234":"Dark Oak Trapdoor","647235":"Dark Oak Trapdoor","647236":"Dark Oak Trapdoor","647237":"Dark Oak Trapdoor","647238":"Dark Oak Trapdoor","647239":"Dark Oak Trapdoor","647240":"Dark Oak Trapdoor","647241":"Dark Oak Trapdoor","647242":"Dark Oak Trapdoor","647243":"Dark Oak Trapdoor","647244":"Dark Oak Trapdoor","647245":"Dark Oak Trapdoor","647246":"Dark Oak Trapdoor","647247":"Dark Oak Trapdoor","647040":"Dark Oak Sign","647041":"Dark Oak Sign","647042":"Dark Oak Sign","647043":"Dark Oak Sign","647044":"Dark Oak Sign","647045":"Dark Oak Sign","647046":"Dark Oak Sign","647047":"Dark Oak Sign","647048":"Dark Oak Sign","647049":"Dark Oak Sign","647050":"Dark Oak Sign","647051":"Dark Oak Sign","647052":"Dark Oak Sign","647053":"Dark Oak Sign","647054":"Dark Oak Sign","647055":"Dark Oak Sign","647296":"Dark Oak Wall Sign","647297":"Dark Oak Wall Sign","647298":"Dark Oak Wall Sign","647299":"Dark Oak Wall Sign","668032":"Red Sandstone Stairs","668033":"Red Sandstone Stairs","668034":"Red Sandstone Stairs","668035":"Red Sandstone Stairs","668036":"Red Sandstone Stairs","668037":"Red Sandstone Stairs","668038":"Red Sandstone Stairs","668039":"Red Sandstone Stairs","669824":"Smooth Red Sandstone Stairs","669825":"Smooth Red Sandstone Stairs","669826":"Smooth Red Sandstone Stairs","669827":"Smooth Red Sandstone Stairs","669828":"Smooth Red Sandstone Stairs","669829":"Smooth Red Sandstone Stairs","669830":"Smooth Red Sandstone Stairs","669831":"Smooth Red Sandstone Stairs","667904":"Red Sandstone","644736":"Chiseled Red Sandstone","646080":"Cut Red Sandstone","669696":"Smooth Red Sandstone","669056":"Sandstone Stairs","669057":"Sandstone Stairs","669058":"Sandstone Stairs","669059":"Sandstone Stairs","669060":"Sandstone Stairs","669061":"Sandstone Stairs","669062":"Sandstone Stairs","669063":"Sandstone Stairs","670016":"Smooth Sandstone Stairs","670017":"Smooth Sandstone Stairs","670018":"Smooth Sandstone Stairs","670019":"Smooth Sandstone Stairs","670020":"Smooth Sandstone Stairs","670021":"Smooth Sandstone Stairs","670022":"Smooth Sandstone Stairs","670023":"Smooth Sandstone Stairs","668928":"Sandstone","644800":"Chiseled Sandstone","646208":"Cut Sandstone","669888":"Smooth Sandstone","674240":"White Glazed Terracotta","674241":"White Glazed Terracotta","674242":"White Glazed Terracotta","674243":"White Glazed Terracotta","664832":"Orange Glazed Terracotta","664833":"Orange Glazed Terracotta","664834":"Orange Glazed Terracotta","664835":"Orange Glazed Terracotta","661952":"Magenta Glazed Terracotta","661953":"Magenta Glazed Terracotta","661954":"Magenta Glazed Terracotta","661955":"Magenta Glazed Terracotta","661440":"Light Blue Glazed Terracotta","661441":"Light Blue Glazed Terracotta","661442":"Light Blue Glazed Terracotta","661443":"Light Blue Glazed Terracotta","674432":"Yellow Glazed Terracotta","674433":"Yellow Glazed Terracotta","674434":"Yellow Glazed Terracotta","674435":"Yellow Glazed Terracotta","661760":"Lime Glazed Terracotta","661761":"Lime Glazed Terracotta","661762":"Lime Glazed Terracotta","661763":"Lime Glazed Terracotta","665152":"Pink Glazed Terracotta","665153":"Pink Glazed Terracotta","665154":"Pink Glazed Terracotta","665155":"Pink Glazed Terracotta","658240":"Gray Glazed Terracotta","658241":"Gray Glazed Terracotta","658242":"Gray Glazed Terracotta","658243":"Gray Glazed Terracotta","661504":"Light Gray Glazed Terracotta","661505":"Light Gray Glazed Terracotta","661506":"Light Gray Glazed Terracotta","661507":"Light Gray Glazed Terracotta","646336":"Cyan Glazed Terracotta","646337":"Cyan Glazed Terracotta","646338":"Cyan Glazed Terracotta","646339":"Cyan Glazed Terracotta","666688":"Purple Glazed Terracotta","666689":"Purple Glazed Terracotta","666690":"Purple Glazed Terracotta","666691":"Purple Glazed Terracotta","643328":"Blue Glazed Terracotta","643329":"Blue Glazed Terracotta","643330":"Blue Glazed Terracotta","643331":"Blue Glazed Terracotta","644032":"Brown Glazed Terracotta","644033":"Brown Glazed Terracotta","644034":"Brown Glazed Terracotta","644035":"Brown Glazed Terracotta","658304":"Green Glazed Terracotta","658305":"Green Glazed Terracotta","658306":"Green Glazed Terracotta","658307":"Green Glazed Terracotta","667392":"Red Glazed Terracotta","667393":"Red Glazed Terracotta","667394":"Red Glazed Terracotta","667395":"Red Glazed Terracotta","643200":"Black Glazed Terracotta","643201":"Black Glazed Terracotta","643202":"Black Glazed Terracotta","643203":"Black Glazed Terracotta","648448":"Dyed Shulker Box","648449":"Dyed Shulker Box","648450":"Dyed Shulker Box","648451":"Dyed Shulker Box","648452":"Dyed Shulker Box","648453":"Dyed Shulker Box","648454":"Dyed Shulker Box","648455":"Dyed Shulker Box","648456":"Dyed Shulker Box","648457":"Dyed Shulker Box","648458":"Dyed Shulker Box","648459":"Dyed Shulker Box","648460":"Dyed Shulker Box","648461":"Dyed Shulker Box","648462":"Dyed Shulker Box","648463":"Dyed Shulker Box","671488":"Stained Glass","671489":"Stained Glass","671490":"Stained Glass","671491":"Stained Glass","671492":"Stained Glass","671493":"Stained Glass","671494":"Stained Glass","671495":"Stained Glass","671496":"Stained Glass","671497":"Stained Glass","671498":"Stained Glass","671499":"Stained Glass","671500":"Stained Glass","671501":"Stained Glass","671502":"Stained Glass","671503":"Stained Glass","671552":"Stained Glass Pane","671553":"Stained Glass Pane","671554":"Stained Glass Pane","671555":"Stained Glass Pane","671556":"Stained Glass Pane","671557":"Stained Glass Pane","671558":"Stained Glass Pane","671559":"Stained Glass Pane","671560":"Stained Glass Pane","671561":"Stained Glass Pane","671562":"Stained Glass Pane","671563":"Stained Glass Pane","671564":"Stained Glass Pane","671565":"Stained Glass Pane","671566":"Stained Glass Pane","671567":"Stained Glass Pane","671424":"Stained Clay","671425":"Stained Clay","671426":"Stained Clay","671427":"Stained Clay","671428":"Stained Clay","671429":"Stained Clay","671430":"Stained Clay","671431":"Stained Clay","671432":"Stained Clay","671433":"Stained Clay","671434":"Stained Clay","671435":"Stained Clay","671436":"Stained Clay","671437":"Stained Clay","671438":"Stained Clay","671439":"Stained Clay","671616":"Stained Hardened Glass","671617":"Stained Hardened Glass","671618":"Stained Hardened Glass","671619":"Stained Hardened Glass","671620":"Stained Hardened Glass","671621":"Stained Hardened Glass","671622":"Stained Hardened Glass","671623":"Stained Hardened Glass","671624":"Stained Hardened Glass","671625":"Stained Hardened Glass","671626":"Stained Hardened Glass","671627":"Stained Hardened Glass","671628":"Stained Hardened Glass","671629":"Stained Hardened Glass","671630":"Stained Hardened Glass","671631":"Stained Hardened Glass","671680":"Stained Hardened Glass Pane","671681":"Stained Hardened Glass Pane","671682":"Stained Hardened Glass Pane","671683":"Stained Hardened Glass Pane","671684":"Stained Hardened Glass Pane","671685":"Stained Hardened Glass Pane","671686":"Stained Hardened Glass Pane","671687":"Stained Hardened Glass Pane","671688":"Stained Hardened Glass Pane","671689":"Stained Hardened Glass Pane","671690":"Stained Hardened Glass Pane","671691":"Stained Hardened Glass Pane","671692":"Stained Hardened Glass Pane","671693":"Stained Hardened Glass Pane","671694":"Stained Hardened Glass Pane","671695":"Stained Hardened Glass Pane","644352":"Carpet","644353":"Carpet","644354":"Carpet","644355":"Carpet","644356":"Carpet","644357":"Carpet","644358":"Carpet","644359":"Carpet","644360":"Carpet","644361":"Carpet","644362":"Carpet","644363":"Carpet","644364":"Carpet","644365":"Carpet","644366":"Carpet","644367":"Carpet","645568":"Concrete","645569":"Concrete","645570":"Concrete","645571":"Concrete","645572":"Concrete","645573":"Concrete","645574":"Concrete","645575":"Concrete","645576":"Concrete","645577":"Concrete","645578":"Concrete","645579":"Concrete","645580":"Concrete","645581":"Concrete","645582":"Concrete","645583":"Concrete","645632":"Concrete Powder","645633":"Concrete Powder","645634":"Concrete Powder","645635":"Concrete Powder","645636":"Concrete Powder","645637":"Concrete Powder","645638":"Concrete Powder","645639":"Concrete Powder","645640":"Concrete Powder","645641":"Concrete Powder","645642":"Concrete Powder","645643":"Concrete Powder","645644":"Concrete Powder","645645":"Concrete Powder","645646":"Concrete Powder","645647":"Concrete Powder","674368":"Wool","674369":"Wool","674370":"Wool","674371":"Wool","674372":"Wool","674373":"Wool","674374":"Wool","674375":"Wool","674376":"Wool","674377":"Wool","674378":"Wool","674379":"Wool","674380":"Wool","674381":"Wool","674382":"Wool","674383":"Wool","645312":"Cobblestone Wall","641408":"Andesite Wall","643904":"Brick Wall","648128":"Diorite Wall","656704":"End Stone Brick Wall","657984":"Granite Wall","662784":"Mossy Stone Brick Wall","662592":"Mossy Cobblestone Wall","663232":"Nether Brick Wall","666496":"Prismarine Wall","667712":"Red Nether Brick Wall","668096":"Red Sandstone Wall","669120":"Sandstone Wall","671936":"Stone Brick Wall","656000":"???","651392":"Hydrogen","651264":"Helium","651968":"Lithium","649088":"Beryllium","649280":"Boron","649600":"Carbon","652992":"Nitrogen","653248":"Oxygen","650752":"Fluorine","652672":"Neon","654784":"Sodium","652160":"Magnesium","648576":"Aluminum","654656":"Silicon","653376":"Phosphorus","654912":"Sulfur","649792":"Chlorine","648768":"Argon","653632":"Potassium","649472":"Calcium","654464":"Scandium","655552":"Titanium","655744":"Vanadium","649856":"Chromium","652224":"Manganese","651648":"Iron","649920":"Cobalt","652800":"Nickel","650112":"Copper","656064":"Zinc","650944":"Gallium","651008":"Germanium","648832":"Arsenic","654592":"Selenium","649344":"Bromine","651712":"Krypton","654208":"Rubidium","654848":"Strontium","655936":"Yttrium","656128":"Zirconium","652928":"Niobium","652480":"Molybdenum","655040":"Technetium","654272":"Ruthenium","654080":"Rhodium","653312":"Palladium","654720":"Silver","649408":"Cadmium","651456":"Indium","655488":"Tin","648704":"Antimony","655104":"Tellurium","651520":"Iodine","655808":"Xenon","649728":"Cesium","648960":"Barium","651776":"Lanthanum","649664":"Cerium","653696":"Praseodymium","652608":"Neodymium","653760":"Promethium","654400":"Samarium","650560":"Europium","650880":"Gadolinium","655232":"Terbium","650368":"Dysprosium","651328":"Holmium","650496":"Erbium","655424":"Thulium","655872":"Ytterbium","652096":"Lutetium","651136":"Hafnium","654976":"Tantalum","655616":"Tungsten","654016":"Rhenium","653184":"Osmium","651584":"Iridium","653440":"Platinum","651072":"Gold","652416":"Mercury","655296":"Thallium","651904":"Lead","649152":"Bismuth","653568":"Polonium","648896":"Astatine","653952":"Radon","650816":"Francium","653888":"Radium","648512":"Actinium","655360":"Thorium","653824":"Protactinium","655680":"Uranium","652736":"Neptunium","653504":"Plutonium","648640":"Americium","650176":"Curium","649024":"Berkelium","649536":"Californium","650432":"Einsteinium","650624":"Fermium","652352":"Mendelevium","653056":"Nobelium","651840":"Lawrencium","654336":"Rutherfordium","650304":"Dubnium","654528":"Seaborgium","649216":"Bohrium","651200":"Hassium","652288":"Meitnerium","650240":"Darmstadtium","654144":"Roentgenium","650048":"Copernicium","652864":"Nihonium","650688":"Flerovium","652544":"Moscovium","652032":"Livermorium","655168":"Tennessine","653120":"Oganesson","645504":"Compound Creator","645505":"Compound Creator","645506":"Compound Creator","645507":"Compound Creator","649984":"Element Constructor","649985":"Element Constructor","649986":"Element Constructor","649987":"Element Constructor","660800":"Lab Table","660801":"Lab Table","660802":"Lab Table","660803":"Lab Table","662080":"Material Reducer","662081":"Material Reducer","662082":"Material Reducer","662083":"Material Reducer","644544":"Heat Block","644160":"Brown Mushroom Block","644161":"Brown Mushroom Block","644162":"Brown Mushroom Block","644163":"Brown Mushroom Block","644164":"Brown Mushroom Block","644165":"Brown Mushroom Block","644166":"Brown Mushroom Block","644167":"Brown Mushroom Block","644168":"Brown Mushroom Block","644169":"Brown Mushroom Block","644170":"Brown Mushroom Block","667520":"Red Mushroom Block","667521":"Red Mushroom Block","667522":"Red Mushroom Block","667523":"Red Mushroom Block","667524":"Red Mushroom Block","667525":"Red Mushroom Block","667526":"Red Mushroom Block","667527":"Red Mushroom Block","667528":"Red Mushroom Block","667529":"Red Mushroom Block","667530":"Red Mushroom Block","662912":"Mushroom Stem","641088":"All Sided Mushroom Stem","645696":"Coral","645697":"Coral","645698":"Coral","645699":"Coral","645700":"Coral","645704":"Coral","645705":"Coral","645706":"Coral","645707":"Coral","645708":"Coral","645824":"Coral Fan","645825":"Coral Fan","645826":"Coral Fan","645827":"Coral Fan","645828":"Coral Fan","645832":"Coral Fan","645833":"Coral Fan","645834":"Coral Fan","645835":"Coral Fan","645836":"Coral Fan","645840":"Coral Fan","645841":"Coral Fan","645842":"Coral Fan","645843":"Coral Fan","645844":"Coral Fan","645848":"Coral Fan","645849":"Coral Fan","645850":"Coral Fan","645851":"Coral Fan","645852":"Coral Fan","673920":"Wall Coral Fan","673921":"Wall Coral Fan","673922":"Wall Coral Fan","673923":"Wall Coral Fan","673924":"Wall Coral Fan","673928":"Wall Coral Fan","673929":"Wall Coral Fan","673930":"Wall Coral Fan","673931":"Wall Coral Fan","673932":"Wall Coral Fan","673936":"Wall Coral Fan","673937":"Wall Coral Fan","673938":"Wall Coral Fan","673939":"Wall Coral Fan","673940":"Wall Coral Fan","673944":"Wall Coral Fan","673945":"Wall Coral Fan","673946":"Wall Coral Fan","673947":"Wall Coral Fan","673948":"Wall Coral Fan","673952":"Wall Coral Fan","673953":"Wall Coral Fan","673954":"Wall Coral Fan","673955":"Wall Coral Fan","673956":"Wall Coral Fan","673960":"Wall Coral Fan","673961":"Wall Coral Fan","673962":"Wall Coral Fan","673963":"Wall Coral Fan","673964":"Wall Coral Fan","673968":"Wall Coral Fan","673969":"Wall Coral Fan","673970":"Wall Coral Fan","673971":"Wall Coral Fan","673972":"Wall Coral Fan","673976":"Wall Coral Fan","673977":"Wall Coral Fan","673978":"Wall Coral Fan","673979":"Wall Coral Fan","673980":"Wall Coral Fan"},"stateDataBits":6} \ No newline at end of file From 8e002fc1cac5f019df09fd13b9f5e88d7092ab6c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 23:41:13 +0100 Subject: [PATCH 163/692] BlockTest: fixed unintentional use of global BlockFactory --- tests/phpunit/block/BlockTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index d9bbbfae2..5a8c6b538 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -114,8 +114,8 @@ class BlockTest extends TestCase{ $oldStateDataSize = $list["stateDataBits"]; self::assertSame($oldStateDataSize, Block::INTERNAL_STATE_DATA_BITS, "Changed number of state data bits - consistency check probably need regenerating"); - $states = BlockFactory::getInstance()->getAllKnownStates(); - foreach(BlockFactory::getInstance()->getAllKnownStates() as $stateId => $state){ + $states = $this->blockFactory->getAllKnownStates(); + foreach($states as $stateId => $state){ self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . $state->getTypeId() . ":" . $state->computeStateData() . ", " . print_r($state, true) . ") - consistency check may need regenerating"); self::assertSame($knownStates[$stateId], $state->getName()); } From e3a9324e8d830ce235d9b273cd72afb9192aa69c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Jun 2022 23:44:55 +0100 Subject: [PATCH 164/692] Updated BlockFactory tests to avoid BlockFactory::get() (which is getting ready to die) --- tests/phpunit/block/BlockTest.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 5a8c6b538..afc3c78e6 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -54,18 +54,18 @@ class BlockTest extends TestCase{ public function testDeliberateOverrideBlock() : void{ $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); - self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->get($block->getTypeId(), 0)); + self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromFullBlock($block->getStateId())); } /** * Test registering a new block which does not yet exist */ public function testRegisterNewBlock() : void{ - for($i = 0; $i < 256; ++$i){ + for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::FIRST_UNUSED_BLOCK_ID, $i, 0), "Strange New Block", BlockBreakInfo::instant()); + $b = new StrangeNewBlock(new BlockIdentifier($i, $i, 0), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->get($b->getTypeId(), 0)); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromFullBlock($b->getStateId())); return; } } @@ -87,9 +87,9 @@ class BlockTest extends TestCase{ * instances which would hold position data and other things, so it's necessary to clone them to avoid astonishing behaviour. */ public function testBlockFactoryClone() : void{ - for($i = 0; $i < 256; ++$i){ - $b1 = $this->blockFactory->get($i, 0); - $b2 = $this->blockFactory->get($i, 0); + foreach($this->blockFactory->getAllKnownStates() as $k => $state){ + $b1 = $this->blockFactory->fromFullBlock($k); + $b2 = $this->blockFactory->fromFullBlock($k); self::assertNotSame($b1, $b2); } } From b268818eda0d2fe5660c3870e69506258ef343fa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 14:02:55 +0100 Subject: [PATCH 165/692] ItemFactory: fixed bogus usage of BlockFactory::isRegistered() ItemFactory IDs don't necessarily correspond to BlockFactory ones anymore. --- src/item/ItemFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index ed992133a..2f6c8e2d2 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -507,7 +507,7 @@ class ItemFactory{ */ public function isRegistered(int $id, int $variant = 0) : bool{ if($id < 256){ - return BlockFactory::getInstance()->isRegistered(self::itemToBlockId($id)); + return GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $variant & 0xf) !== null; } return isset($this->list[self::getListOffset($id, $variant)]); From cac72d73fb1df0a5236a0a83ac66682b5ce58b59 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 14:34:19 +0100 Subject: [PATCH 166/692] ItemFactoryTest: remove bogus test case --- tests/phpunit/item/ItemFactoryTest.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/phpunit/item/ItemFactoryTest.php b/tests/phpunit/item/ItemFactoryTest.php index e9f45169e..a0163f5fe 100644 --- a/tests/phpunit/item/ItemFactoryTest.php +++ b/tests/phpunit/item/ItemFactoryTest.php @@ -28,15 +28,6 @@ use pocketmine\block\BlockFactory; class ItemFactoryTest extends TestCase{ - /** - * Tests that blocks are considered to be valid registered items - */ - public function testItemBlockRegistered() : void{ - for($id = 0; $id < 256; ++$id){ - self::assertEquals(BlockFactory::getInstance()->isRegistered($id), ItemFactory::getInstance()->isRegistered($id)); - } - } - /** * Test that durable items are correctly created by the item factory */ From 00b4e4016c0238b3b0e499ca07859cef91076aab Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 14:42:32 +0100 Subject: [PATCH 167/692] Obliterate BlockLegacyIds --- src/block/BlockFactory.php | 787 +++++++++++++++--------------- src/block/BlockIdentifier.php | 23 +- src/block/BlockLegacyIdHelper.php | 191 ++++---- src/block/BlockLegacyIds.php | 501 ------------------- tests/phpunit/block/BlockTest.php | 7 +- 5 files changed, 498 insertions(+), 1011 deletions(-) delete mode 100644 src/block/BlockLegacyIds.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index ee545e4c0..7af168522 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockLegacyIds as LegacyIds; use pocketmine\block\BlockLegacyMetadata as Meta; use pocketmine\block\BlockToolType as ToolType; use pocketmine\block\BlockTypeIds as Ids; @@ -106,10 +105,10 @@ class BlockFactory{ public function __construct(){ $railBreakInfo = new BlockBreakInfo(0.7); - $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, LegacyIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); - $this->register(new Air(new BID(Ids::AIR, LegacyIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); - $this->register(new Anvil(new BID(Ids::ANVIL, LegacyIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new Bamboo(new BID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, ItemIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); + $this->register(new Air(new BID(Ids::AIR, ItemIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); + $this->register(new Anvil(new BID(Ids::ANVIL, ItemIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new Bamboo(new BID(Ids::BAMBOO, ItemIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ return 0.0; @@ -117,225 +116,225 @@ class BlockFactory{ return parent::getBreakTime($item); } })); - $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, LegacyIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); + $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, ItemIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new FloorBanner(new BID(Ids::BANNER, LegacyIds::STANDING_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); - $this->register(new WallBanner(new BID(Ids::WALL_BANNER, LegacyIds::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - $this->register(new Barrel(new BID(Ids::BARREL, LegacyIds::BARREL, 0, null, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Transparent(new BID(Ids::BARRIER, LegacyIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); - $this->register(new Beacon(new BID(Ids::BEACON, LegacyIds::BEACON, 0, null, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - $this->register(new Bed(new BID(Ids::BED, LegacyIds::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); - $this->register(new Bedrock(new BID(Ids::BEDROCK, LegacyIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); + $this->register(new FloorBanner(new BID(Ids::BANNER, ItemIds::BANNER, 0, TileBanner::class), "Banner", $bannerBreakInfo)); + $this->register(new WallBanner(new BID(Ids::WALL_BANNER, ItemIds::BANNER, 0, TileBanner::class), "Wall Banner", $bannerBreakInfo)); + $this->register(new Barrel(new BID(Ids::BARREL, ItemIds::BARREL, 0, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Transparent(new BID(Ids::BARRIER, ItemIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); + $this->register(new Beacon(new BID(Ids::BEACON, ItemIds::BEACON, 0, TileBeacon::class), "Beacon", new BreakInfo(3.0))); + $this->register(new Bed(new BID(Ids::BED, ItemIds::BED, 0, TileBed::class), "Bed Block", new BreakInfo(0.2))); + $this->register(new Bedrock(new BID(Ids::BEDROCK, ItemIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); - $this->register(new Beetroot(new BID(Ids::BEETROOTS, LegacyIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); - $this->register(new Bell(new BID(Ids::BELL, LegacyIds::BELL, 0, null, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new BlueIce(new BID(Ids::BLUE_ICE, LegacyIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK, LegacyIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Bookshelf(new BID(Ids::BOOKSHELF, LegacyIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, LegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Beetroot(new BID(Ids::BEETROOTS, ItemIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); + $this->register(new Bell(new BID(Ids::BELL, ItemIds::BELL, 0, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new BlueIce(new BID(Ids::BLUE_ICE, ItemIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); + $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK, ItemIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Bookshelf(new BID(Ids::BOOKSHELF, ItemIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); + $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, ItemIds::BREWING_STAND, 0, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Stair(new BID(Ids::BRICK_STAIRS, LegacyIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); - $this->register(new Opaque(new BID(Ids::BRICKS, LegacyIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); + $this->register(new Stair(new BID(Ids::BRICK_STAIRS, ItemIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); + $this->register(new Opaque(new BID(Ids::BRICKS, ItemIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); - $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, LegacyIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); - $this->register(new Cactus(new BID(Ids::CACTUS, LegacyIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); - $this->register(new Cake(new BID(Ids::CAKE, LegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake", new BreakInfo(0.5))); - $this->register(new Carrot(new BID(Ids::CARROTS, LegacyIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); + $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, ItemIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); + $this->register(new Cactus(new BID(Ids::CACTUS, ItemIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); + $this->register(new Cake(new BID(Ids::CAKE, ItemIds::CAKE, 0), "Cake", new BreakInfo(0.5))); + $this->register(new Carrot(new BID(Ids::CARROTS, ItemIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); - $this->register(new Chest(new BID(Ids::CHEST, LegacyIds::CHEST, 0, null, TileChest::class), "Chest", $chestBreakInfo)); - $this->register(new Clay(new BID(Ids::CLAY, LegacyIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Coal(new BID(Ids::COAL, LegacyIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new CoalOre(new BID(Ids::COAL_ORE, LegacyIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Chest(new BID(Ids::CHEST, ItemIds::CHEST, 0, TileChest::class), "Chest", $chestBreakInfo)); + $this->register(new Clay(new BID(Ids::CLAY, ItemIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Coal(new BID(Ids::COAL, ItemIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new CoalOre(new BID(Ids::COAL_ORE, ItemIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, LegacyIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, LegacyIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS, LegacyIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, LegacyIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, ItemIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, ItemIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS, ItemIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, ItemIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->register(new Cobweb(new BID(Ids::COBWEB, LegacyIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - $this->register(new CocoaBlock(new BID(Ids::COCOA_POD, LegacyIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK, LegacyIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE, LegacyIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, LegacyIds::DAYLIGHT_DETECTOR, 0, null, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new DeadBush(new BID(Ids::DEAD_BUSH, LegacyIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL, LegacyIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); + $this->register(new Cobweb(new BID(Ids::COBWEB, ItemIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); + $this->register(new CocoaBlock(new BID(Ids::COCOA_POD, ItemIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); + $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK, ItemIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE, ItemIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, ItemIds::DAYLIGHT_DETECTOR, 0, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new DeadBush(new BID(Ids::DEAD_BUSH, ItemIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL, ItemIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); - $this->register(new Opaque(new BID(Ids::DIAMOND, LegacyIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE, LegacyIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new Dirt(new BID(Ids::DIRT, LegacyIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new DoublePlant(new BID(Ids::SUNFLOWER, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::LILAC, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::PEONY, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant())); - $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN, LegacyIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG, LegacyIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new DriedKelp(new BID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - $this->register(new Opaque(new BID(Ids::EMERALD, LegacyIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE, LegacyIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, LegacyIds::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, LegacyIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); - $this->register(new EndRod(new BID(Ids::END_ROD, LegacyIds::END_ROD, 0), "End Rod", BreakInfo::instant())); - $this->register(new Opaque(new BID(Ids::END_STONE, LegacyIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + $this->register(new Opaque(new BID(Ids::DIAMOND, ItemIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE, ItemIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Dirt(new BID(Ids::DIRT, ItemIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new DoublePlant(new BID(Ids::SUNFLOWER, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::LILAC, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::PEONY, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant())); + $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG, ItemIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new DriedKelp(new BID(Ids::DRIED_KELP, ItemIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); + $this->register(new Opaque(new BID(Ids::EMERALD, ItemIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE, ItemIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, ItemIds::ENCHANTING_TABLE, 0, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, ItemIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); + $this->register(new EndRod(new BID(Ids::END_ROD, ItemIds::END_ROD, 0), "End Rod", BreakInfo::instant())); + $this->register(new Opaque(new BID(Ids::END_STONE, ItemIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS, LegacyIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, LegacyIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS, ItemIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, ItemIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); - $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, LegacyIds::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); - $this->register(new Farmland(new BID(Ids::FARMLAND, LegacyIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Fire(new BID(Ids::FIRE, LegacyIds::FIRE, 0), "Fire Block", BreakInfo::instant())); - $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE, LegacyIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); - $this->register(new Flower(new BID(Ids::DANDELION, LegacyIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::POPPY, LegacyIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ALLIUM, LegacyIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::AZURE_BLUET, LegacyIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::BLUE_ORCHID, LegacyIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::CORNFLOWER, LegacyIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY, LegacyIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ORANGE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::OXEYE_DAISY, LegacyIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::PINK_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::RED_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::WHITE_TULIP, LegacyIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant())); - $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, LegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE, LegacyIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->register(new Furnace(new BID(Ids::FURNACE, LegacyIds::FURNACE, 0, null, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, LegacyIds::BLAST_FURNACE, 0, null, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::SMOKER, LegacyIds::SMOKER, 0, null, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, ItemIds::ENDER_CHEST, 0, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + $this->register(new Farmland(new BID(Ids::FARMLAND, ItemIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Fire(new BID(Ids::FIRE, ItemIds::FIRE, 0), "Fire Block", BreakInfo::instant())); + $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE, ItemIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + $this->register(new Flower(new BID(Ids::DANDELION, ItemIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::POPPY, ItemIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ALLIUM, ItemIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::AZURE_BLUET, ItemIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::BLUE_ORCHID, ItemIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::CORNFLOWER, ItemIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY, ItemIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ORANGE_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::OXEYE_DAISY, ItemIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::PINK_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::RED_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::WHITE_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant())); + $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, ItemIds::FLOWER_POT, 0, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE, ItemIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); + $this->register(new Furnace(new BID(Ids::FURNACE, ItemIds::FURNACE, 0, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, ItemIds::BLAST_FURNACE, 0, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::SMOKER, ItemIds::SMOKER, 0, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); - $this->register(new Glass(new BID(Ids::GLASS, LegacyIds::GLASS, 0), "Glass", $glassBreakInfo)); - $this->register(new GlassPane(new BID(Ids::GLASS_PANE, LegacyIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); - $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, LegacyIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); - $this->register(new Glowstone(new BID(Ids::GLOWSTONE, LegacyIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - $this->register(new Opaque(new BID(Ids::GOLD, LegacyIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::GOLD_ORE, LegacyIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Glass(new BID(Ids::GLASS, ItemIds::GLASS, 0), "Glass", $glassBreakInfo)); + $this->register(new GlassPane(new BID(Ids::GLASS_PANE, ItemIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); + $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, ItemIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + $this->register(new Glowstone(new BID(Ids::GLOWSTONE, ItemIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); + $this->register(new Opaque(new BID(Ids::GOLD, ItemIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::GOLD_ORE, ItemIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); - $this->register(new Grass(new BID(Ids::GRASS, LegacyIds::GRASS, 0), "Grass", $grassBreakInfo)); - $this->register(new GrassPath(new BID(Ids::GRASS_PATH, LegacyIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); - $this->register(new Gravel(new BID(Ids::GRAVEL, LegacyIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Grass(new BID(Ids::GRASS, ItemIds::GRASS, 0), "Grass", $grassBreakInfo)); + $this->register(new GrassPath(new BID(Ids::GRASS_PATH, ItemIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); + $this->register(new Gravel(new BID(Ids::GRAVEL, ItemIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY, LegacyIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); + $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY, ItemIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); - $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS, LegacyIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, LegacyIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new HayBale(new BID(Ids::HAY_BALE, LegacyIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); - $this->register(new Hopper(new BID(Ids::HOPPER, LegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - $this->register(new Ice(new BID(Ids::ICE, LegacyIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS, ItemIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, ItemIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new HayBale(new BID(Ids::HAY_BALE, ItemIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); + $this->register(new Hopper(new BID(Ids::HOPPER, ItemIds::HOPPER, 0, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + $this->register(new Ice(new BID(Ids::ICE, ItemIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE, LegacyIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE2, LegacyIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); - $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, LegacyIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE, ItemIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE2, ItemIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); + $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, ItemIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::IRON, LegacyIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); - $this->register(new Thin(new BID(Ids::IRON_BARS, LegacyIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON, ItemIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); + $this->register(new Thin(new BID(Ids::IRON_BARS, ItemIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); - $this->register(new Door(new BID(Ids::IRON_DOOR, LegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); - $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, LegacyIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->register(new Opaque(new BID(Ids::IRON_ORE, LegacyIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, LegacyIds::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - $this->register(new Jukebox(new BID(Ids::JUKEBOX, LegacyIds::JUKEBOX, 0, ItemIds::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - $this->register(new Ladder(new BID(Ids::LADDER, LegacyIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $this->register(new Lantern(new BID(Ids::LANTERN, LegacyIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI, LegacyIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, LegacyIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new Lava(new BID(Ids::LAVA, LegacyIds::FLOWING_LAVA, 0), "Lava", BreakInfo::indestructible(500.0))); - $this->register(new Lectern(new BID(Ids::LECTERN, LegacyIds::LECTERN, 0, ItemIds::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); - $this->register(new Lever(new BID(Ids::LEVER, LegacyIds::LEVER, 0), "Lever", new BreakInfo(0.5))); - $this->register(new Loom(new BID(Ids::LOOM, LegacyIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Magma(new BID(Ids::MAGMA, LegacyIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Melon(new BID(Ids::MELON, LegacyIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); - $this->register(new MelonStem(new BID(Ids::MELON_STEM, LegacyIds::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem", BreakInfo::instant())); - $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, LegacyIds::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Mycelium(new BID(Ids::MYCELIUM, LegacyIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Door(new BID(Ids::IRON_DOOR, ItemIds::IRON_DOOR, 0), "Iron Door", $ironDoorBreakInfo)); + $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, ItemIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON_ORE, ItemIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, ItemIds::FRAME, 0, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + $this->register(new Jukebox(new BID(Ids::JUKEBOX, ItemIds::JUKEBOX, 0, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + $this->register(new Ladder(new BID(Ids::LADDER, ItemIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + $this->register(new Lantern(new BID(Ids::LANTERN, ItemIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI, ItemIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, ItemIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Lava(new BID(Ids::LAVA, ItemIds::FLOWING_LAVA, 0), "Lava", BreakInfo::indestructible(500.0))); + $this->register(new Lectern(new BID(Ids::LECTERN, ItemIds::LECTERN, 0, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + $this->register(new Lever(new BID(Ids::LEVER, ItemIds::LEVER, 0), "Lever", new BreakInfo(0.5))); + $this->register(new Loom(new BID(Ids::LOOM, ItemIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Magma(new BID(Ids::MAGMA, ItemIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Melon(new BID(Ids::MELON, ItemIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + $this->register(new MelonStem(new BID(Ids::MELON_STEM, ItemIds::MELON_SEEDS, 0), "Melon Stem", BreakInfo::instant())); + $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, ItemIds::MOB_SPAWNER, 0, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Mycelium(new BID(Ids::MYCELIUM, ItemIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::NETHER_BRICKS, LegacyIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS, LegacyIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE, LegacyIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, LegacyIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, LegacyIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL, LegacyIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, LegacyIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, LegacyIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK, LegacyIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART, LegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart", BreakInfo::instant())); - $this->register(new Netherrack(new BID(Ids::NETHERRACK, LegacyIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Note(new BID(Ids::NOTE_BLOCK, LegacyIds::NOTEBLOCK, 0, null, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - $this->register(new Opaque(new BID(Ids::OBSIDIAN, LegacyIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - $this->register(new PackedIce(new BID(Ids::PACKED_ICE, LegacyIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Podzol(new BID(Ids::PODZOL, LegacyIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Potato(new BID(Ids::POTATOES, LegacyIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); - $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL, LegacyIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); + $this->register(new Opaque(new BID(Ids::NETHER_BRICKS, ItemIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS, ItemIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE, ItemIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, ItemIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, ItemIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL, ItemIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); + $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, ItemIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, ItemIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK, ItemIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); + $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART, ItemIds::NETHER_WART, 0), "Nether Wart", BreakInfo::instant())); + $this->register(new Netherrack(new BID(Ids::NETHERRACK, ItemIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Note(new BID(Ids::NOTE_BLOCK, ItemIds::NOTEBLOCK, 0, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + $this->register(new Opaque(new BID(Ids::OBSIDIAN, ItemIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + $this->register(new PackedIce(new BID(Ids::PACKED_ICE, ItemIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Podzol(new BID(Ids::PODZOL, ItemIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Potato(new BID(Ids::POTATOES, ItemIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); + $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL, ItemIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE, LegacyIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS, LegacyIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, LegacyIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, LegacyIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS, LegacyIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE, ItemIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE, ItemIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS, ItemIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, ItemIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, ItemIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS, ItemIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new Pumpkin(new BID(Ids::PUMPKIN, LegacyIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); - $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, LegacyIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); - $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, LegacyIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); + $this->register(new Pumpkin(new BID(Ids::PUMPKIN, ItemIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); + $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, ItemIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); + $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, ItemIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); - $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, LegacyIds::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem", BreakInfo::instant())); + $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, ItemIds::PUMPKIN_SEEDS, 0), "Pumpkin Stem", BreakInfo::instant())); $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PURPUR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR, LegacyIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); - $this->register(new Stair(new BID(Ids::PURPUR_STAIRS, LegacyIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); + $this->register(new Opaque(new BID(Ids::PURPUR, ItemIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR, ItemIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); + $this->register(new Stair(new BID(Ids::PURPUR_STAIRS, ItemIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Opaque(new BID(Ids::QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ, LegacyIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); - $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS, LegacyIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, LegacyIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS, ItemIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, ItemIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); - $this->register(new Rail(new BID(Ids::RAIL, LegacyIds::RAIL, 0), "Rail", $railBreakInfo)); - $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM, LegacyIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); - $this->register(new Redstone(new BID(Ids::REDSTONE, LegacyIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, LegacyIds::UNPOWERED_COMPARATOR, 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP, LegacyIds::REDSTONE_LAMP, 0), "Redstone Lamp", new BreakInfo(0.3))); - $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE, LegacyIds::REDSTONE_ORE, 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER, LegacyIds::UNPOWERED_REPEATER, 0, ItemIds::REPEATER), "Redstone Repeater", BreakInfo::instant())); - $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH, LegacyIds::REDSTONE_TORCH, 0), "Redstone Torch", BreakInfo::instant())); - $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, LegacyIds::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone", BreakInfo::instant())); - $this->register(new Reserved6(new BID(Ids::RESERVED6, LegacyIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); + $this->register(new Rail(new BID(Ids::RAIL, ItemIds::RAIL, 0), "Rail", $railBreakInfo)); + $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM, ItemIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); + $this->register(new Redstone(new BID(Ids::REDSTONE, ItemIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, ItemIds::COMPARATOR, 0, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP, ItemIds::REDSTONE_LAMP, 0), "Redstone Lamp", new BreakInfo(0.3))); + $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE, ItemIds::REDSTONE_ORE, 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER, ItemIds::REPEATER, 0), "Redstone Repeater", BreakInfo::instant())); + $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH, ItemIds::REDSTONE_TORCH, 0), "Redstone Torch", BreakInfo::instant())); + $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, ItemIds::REDSTONE, 0), "Redstone", BreakInfo::instant())); + $this->register(new Reserved6(new BID(Ids::RESERVED6, ItemIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); - $this->register(new Sand(new BID(Ids::SAND, LegacyIds::SAND, 0), "Sand", $sandBreakInfo)); - $this->register(new Sand(new BID(Ids::RED_SAND, LegacyIds::SAND, 1), "Red Sand", $sandBreakInfo)); + $this->register(new Sand(new BID(Ids::SAND, ItemIds::SAND, 0), "Sand", $sandBreakInfo)); + $this->register(new Sand(new BID(Ids::RED_SAND, ItemIds::SAND, 1), "Red Sand", $sandBreakInfo)); - $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN, LegacyIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); - $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE, LegacyIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); - $this->register(new Skull(new BID(Ids::MOB_HEAD, LegacyIds::MOB_HEAD_BLOCK, 0, ItemIds::SKULL, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - $this->register(new Slime(new BID(Ids::SLIME, LegacyIds::SLIME, 0), "Slime Block", BreakInfo::instant())); - $this->register(new Snow(new BID(Ids::SNOW, LegacyIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER, LegacyIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SoulSand(new BID(Ids::SOUL_SAND, LegacyIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Sponge(new BID(Ids::SPONGE, LegacyIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); + $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN, ItemIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); + $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE, ItemIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); + $this->register(new Skull(new BID(Ids::MOB_HEAD, ItemIds::SKULL, 0, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + $this->register(new Slime(new BID(Ids::SLIME, ItemIds::SLIME, 0), "Slime Block", BreakInfo::instant())); + $this->register(new Snow(new BID(Ids::SNOW, ItemIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER, ItemIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SoulSand(new BID(Ids::SOUL_SAND, ItemIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Sponge(new BID(Ids::SPONGE, ItemIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, LegacyIds::UNDYED_SHULKER_BOX, 0, null, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, ItemIds::UNDYED_SHULKER_BOX, 0, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->register( - $stone = new class(new BID(Ids::STONE, LegacyIds::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ + $stone = new class(new BID(Ids::STONE, ItemIds::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ public function getDropsForCompatibleTool(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; } @@ -345,39 +344,39 @@ class BlockFactory{ } } ); - $this->register(new Opaque(new BID(Ids::ANDESITE, LegacyIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::DIORITE, LegacyIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::GRANITE, LegacyIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE, LegacyIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE, LegacyIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE, LegacyIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::ANDESITE, ItemIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::DIORITE, ItemIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::GRANITE, ItemIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE, ItemIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE, ItemIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE, ItemIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); - $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); - $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); - $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); - $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, LegacyIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); + $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); + $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); + $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); + $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, LegacyIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, LegacyIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, ItemIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); - $this->register(new Stair(new BID(Ids::STONE_STAIRS, LegacyIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_STONE, LegacyIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS, LegacyIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::DIORITE_STAIRS, LegacyIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::GRANITE_STAIRS, LegacyIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, LegacyIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, LegacyIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, LegacyIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS, LegacyIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, LegacyIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new StoneButton(new BID(Ids::STONE_BUTTON, LegacyIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Stonecutter(new BID(Ids::STONECUTTER, LegacyIds::STONECUTTER_BLOCK, 0, ItemIds::STONECUTTER_BLOCK), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, LegacyIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Stair(new BID(Ids::STONE_STAIRS, ItemIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_STONE, ItemIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS, ItemIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::DIORITE_STAIRS, ItemIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::GRANITE_STAIRS, ItemIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, ItemIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, ItemIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, ItemIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS, ItemIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, ItemIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new StoneButton(new BID(Ids::STONE_BUTTON, ItemIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Stonecutter(new BID(Ids::STONECUTTER, ItemIds::STONECUTTER_BLOCK, 0), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); + $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, ItemIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); @@ -417,31 +416,31 @@ class BlockFactory{ $this->register($slabType); } - $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER, LegacyIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Sugarcane(new BID(Ids::SUGARCANE, LegacyIds::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane", BreakInfo::instant())); - $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, LegacyIds::SWEET_BERRY_BUSH, 0, ItemIds::SWEET_BERRIES), "Sweet Berry Bush", BreakInfo::instant())); - $this->register(new TNT(new BID(Ids::TNT, LegacyIds::TNT, 0), "TNT", BreakInfo::instant())); - $this->register(new TallGrass(new BID(Ids::FERN, LegacyIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new TallGrass(new BID(Ids::TALL_GRASS, LegacyIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER, ItemIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Sugarcane(new BID(Ids::SUGARCANE, ItemIds::REEDS, 0), "Sugarcane", BreakInfo::instant())); + $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, ItemIds::SWEET_BERRIES, 0), "Sweet Berry Bush", BreakInfo::instant())); + $this->register(new TNT(new BID(Ids::TNT, ItemIds::TNT, 0), "TNT", BreakInfo::instant())); + $this->register(new TallGrass(new BID(Ids::FERN, ItemIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new TallGrass(new BID(Ids::TALL_GRASS, ItemIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new Torch(new BID(Ids::BLUE_TORCH, LegacyIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::PURPLE_TORCH, LegacyIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::RED_TORCH, LegacyIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::GREEN_TORCH, LegacyIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::TORCH, LegacyIds::TORCH, 0), "Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::BLUE_TORCH, ItemIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::PURPLE_TORCH, ItemIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::RED_TORCH, ItemIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::GREEN_TORCH, ItemIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::TORCH, ItemIds::TORCH, 0), "Torch", BreakInfo::instant())); - $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, LegacyIds::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest", $chestBreakInfo)); - $this->register(new Tripwire(new BID(Ids::TRIPWIRE, LegacyIds::TRIPWIRE, 0, ItemIds::STRING), "Tripwire", BreakInfo::instant())); - $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, LegacyIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); - $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, LegacyIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); - $this->register(new Vine(new BID(Ids::VINES, LegacyIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new Water(new BID(Ids::WATER, LegacyIds::FLOWING_WATER, 0), "Water", BreakInfo::indestructible(500.0))); - $this->register(new WaterLily(new BID(Ids::LILY_PAD, LegacyIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); + $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, ItemIds::TRAPPED_CHEST, 0, TileChest::class), "Trapped Chest", $chestBreakInfo)); + $this->register(new Tripwire(new BID(Ids::TRIPWIRE, ItemIds::STRING, 0), "Tripwire", BreakInfo::instant())); + $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, ItemIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); + $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, ItemIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); + $this->register(new Vine(new BID(Ids::VINES, ItemIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new Water(new BID(Ids::WATER, ItemIds::FLOWING_WATER, 0), "Water", BreakInfo::indestructible(500.0))); + $this->register(new WaterLily(new BID(Ids::LILY_PAD, ItemIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, LegacyIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); - $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, LegacyIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - $this->register(new Wheat(new BID(Ids::WHEAT, LegacyIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); + $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, ItemIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); + $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, ItemIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); + $this->register(new Wheat(new BID(Ids::WHEAT, ItemIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ @@ -486,19 +485,19 @@ class BlockFactory{ } $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, LegacyIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, LegacyIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, LegacyIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, ItemIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, ItemIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS, LegacyIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, LegacyIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE, LegacyIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS, ItemIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, ItemIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo)); $glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); foreach(DyeColor::getAll() as $color){ @@ -507,16 +506,16 @@ class BlockFactory{ }; $this->register(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); } - $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, LegacyIds::SHULKER_BOX, 0, null, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); - $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS, LegacyIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); - $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, LegacyIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); - $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, LegacyIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); - $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, LegacyIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, LegacyIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new Carpet(new BID(Ids::CARPET, LegacyIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); - $this->register(new Concrete(new BID(Ids::CONCRETE, LegacyIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, LegacyIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Wool(new BID(Ids::WOOL, LegacyIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, ItemIds::SHULKER_BOX, 0, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS, ItemIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); + $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, ItemIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); + $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, ItemIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); + $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, ItemIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, ItemIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new Carpet(new BID(Ids::CARPET, ItemIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); + $this->register(new Concrete(new BID(Ids::CONCRETE, ItemIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, ItemIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Wool(new BID(Ids::WOOL, ItemIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); if($item->getBlockToolType() === ToolType::SHEARS){ @@ -529,45 +528,45 @@ class BlockFactory{ //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::ANDESITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::DIORITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::GRANITE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::PRISMARINE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::SANDSTONE_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL, LegacyIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::ANDESITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::DIORITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::GRANITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::PRISMARINE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::SANDSTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo)); $this->registerElements(); $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, LegacyIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); - $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, LegacyIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); + $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, ItemIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); $this->registerMushroomBlocks(); $this->register(new Coral( - new BID(Ids::CORAL, LegacyIds::CORAL, 0), + new BID(Ids::CORAL, ItemIds::CORAL, 0), "Coral", BreakInfo::instant(), )); $this->register(new FloorCoralFan( - new BID(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, ItemIds::CORAL_FAN), + new BID(Ids::CORAL_FAN, ItemIds::CORAL_FAN, 0), "Coral Fan", BreakInfo::instant(), )); $this->register(new WallCoralFan( - new BID(Ids::WALL_CORAL_FAN, LegacyIds::CORAL_FAN_HANG, 0, ItemIds::CORAL_FAN), + new BID(Ids::WALL_CORAL_FAN, ItemIds::CORAL_FAN, 0), "Wall Coral Fan", BreakInfo::instant(), )); @@ -710,136 +709,136 @@ class BlockFactory{ private function registerMushroomBlocks() : void{ $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); - $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, LegacyIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo)); - $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, LegacyIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo)); + $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, ItemIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo)); + $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, ItemIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo)); //finally, the stems - $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); - $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, LegacyIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); + $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM, ItemIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); + $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, ItemIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); } private function registerElements() : void{ $instaBreak = BreakInfo::instant(); - $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO, LegacyIds::ELEMENT_0, 0), "???", $instaBreak)); + $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO, ItemIds::ELEMENT_0, 0), "???", $instaBreak)); - $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN, LegacyIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_HELIUM, LegacyIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM, LegacyIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM, LegacyIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_BORON, LegacyIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_CARBON, LegacyIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN, LegacyIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN, LegacyIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE, LegacyIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_NEON, LegacyIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_SODIUM, LegacyIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM, LegacyIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM, LegacyIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_SILICON, LegacyIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, LegacyIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_SULFUR, LegacyIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE, LegacyIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_ARGON, LegacyIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM, LegacyIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM, LegacyIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM, LegacyIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM, LegacyIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM, LegacyIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM, LegacyIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE, LegacyIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRON, LegacyIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COBALT, LegacyIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NICKEL, LegacyIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPPER, LegacyIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZINC, LegacyIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM, LegacyIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM, LegacyIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC, LegacyIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM, LegacyIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_BROMINE, LegacyIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON, LegacyIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM, LegacyIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM, LegacyIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM, LegacyIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, LegacyIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM, LegacyIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, LegacyIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM, LegacyIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM, LegacyIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM, LegacyIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM, LegacyIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SILVER, LegacyIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM, LegacyIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_INDIUM, LegacyIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TIN, LegacyIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY, LegacyIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM, LegacyIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_IODINE, LegacyIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_XENON, LegacyIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_CESIUM, LegacyIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BARIUM, LegacyIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM, LegacyIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_CERIUM, LegacyIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, LegacyIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM, LegacyIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM, LegacyIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM, LegacyIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM, LegacyIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM, LegacyIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM, LegacyIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, LegacyIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM, LegacyIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM, LegacyIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_THULIUM, LegacyIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM, LegacyIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM, LegacyIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM, LegacyIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM, LegacyIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN, LegacyIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM, LegacyIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM, LegacyIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM, LegacyIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM, LegacyIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GOLD, LegacyIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MERCURY, LegacyIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM, LegacyIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LEAD, LegacyIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH, LegacyIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM, LegacyIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE, LegacyIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_RADON, LegacyIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM, LegacyIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_RADIUM, LegacyIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM, LegacyIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_THORIUM, LegacyIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, LegacyIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_URANIUM, LegacyIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, LegacyIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM, LegacyIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM, LegacyIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CURIUM, LegacyIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM, LegacyIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, LegacyIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, LegacyIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM, LegacyIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, LegacyIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM, LegacyIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, LegacyIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, LegacyIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM, LegacyIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM, LegacyIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM, LegacyIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM, LegacyIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM, LegacyIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, LegacyIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, LegacyIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM, LegacyIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM, LegacyIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM, LegacyIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, LegacyIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, LegacyIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE, LegacyIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON, LegacyIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN, ItemIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_HELIUM, ItemIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM, ItemIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM, ItemIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_BORON, ItemIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_CARBON, ItemIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN, ItemIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN, ItemIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE, ItemIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_NEON, ItemIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_SODIUM, ItemIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM, ItemIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM, ItemIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_SILICON, ItemIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, ItemIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_SULFUR, ItemIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE, ItemIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_ARGON, ItemIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM, ItemIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM, ItemIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM, ItemIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM, ItemIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM, ItemIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM, ItemIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE, ItemIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRON, ItemIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COBALT, ItemIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NICKEL, ItemIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPPER, ItemIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZINC, ItemIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM, ItemIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM, ItemIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC, ItemIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM, ItemIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_BROMINE, ItemIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON, ItemIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM, ItemIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM, ItemIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM, ItemIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, ItemIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM, ItemIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, ItemIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM, ItemIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM, ItemIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM, ItemIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM, ItemIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SILVER, ItemIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM, ItemIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_INDIUM, ItemIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TIN, ItemIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY, ItemIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM, ItemIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_IODINE, ItemIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_XENON, ItemIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_CESIUM, ItemIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BARIUM, ItemIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM, ItemIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_CERIUM, ItemIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, ItemIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM, ItemIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM, ItemIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM, ItemIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM, ItemIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM, ItemIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM, ItemIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, ItemIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM, ItemIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM, ItemIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_THULIUM, ItemIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM, ItemIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM, ItemIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM, ItemIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM, ItemIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN, ItemIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM, ItemIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM, ItemIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM, ItemIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM, ItemIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GOLD, ItemIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MERCURY, ItemIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM, ItemIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LEAD, ItemIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH, ItemIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM, ItemIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE, ItemIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_RADON, ItemIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM, ItemIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_RADIUM, ItemIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM, ItemIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_THORIUM, ItemIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, ItemIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_URANIUM, ItemIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, ItemIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM, ItemIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM, ItemIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CURIUM, ItemIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM, ItemIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, ItemIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, ItemIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM, ItemIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, ItemIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM, ItemIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, ItemIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, ItemIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM, ItemIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM, ItemIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM, ItemIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM, ItemIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM, ItemIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, ItemIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, ItemIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM, ItemIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM, ItemIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM, ItemIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, ItemIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, ItemIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE, ItemIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON, ItemIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); } /** @@ -914,7 +913,7 @@ class BlockFactory{ if(isset($this->fullList[$index])) { //hot $block = clone $this->fullList[$index]; }else{ - $block = new UnknownBlock(new BID($typeId, $typeId, $stateData), BreakInfo::instant()); + $block = new UnknownBlock(new BID($typeId, $stateData, $stateData), BreakInfo::instant()); } return $block; diff --git a/src/block/BlockIdentifier.php b/src/block/BlockIdentifier.php index c4a809dc9..f2c7fd2c9 100644 --- a/src/block/BlockIdentifier.php +++ b/src/block/BlockIdentifier.php @@ -32,19 +32,15 @@ class BlockIdentifier{ */ public function __construct( private int $blockTypeId, - private int $legacyBlockId, - private int $legacyVariant, - private ?int $legacyItemId = null, + private int $legacyItemId, + private int $legacyItemVariant, private ?string $tileClass = null ){ if($blockTypeId < 0){ throw new \InvalidArgumentException("Block type ID may not be negative"); } - if($legacyBlockId < 0){ - throw new \InvalidArgumentException("Legacy block ID may not be negative"); - } - if($legacyVariant < 0){ - throw new \InvalidArgumentException("Legacy block variant may not be negative"); + if($legacyItemVariant < 0){ + throw new \InvalidArgumentException("Legacy item variant may not be negative"); } if($tileClass !== null){ @@ -54,25 +50,18 @@ class BlockIdentifier{ public function getBlockTypeId() : int{ return $this->blockTypeId; } - /** - * @deprecated - */ - public function getLegacyBlockId() : int{ - return $this->legacyBlockId; - } - /** * @deprecated */ public function getLegacyVariant() : int{ - return $this->legacyVariant; + return $this->legacyItemVariant; } /** * @deprecated */ public function getLegacyItemId() : int{ - return $this->legacyItemId ?? ($this->legacyBlockId > 255 ? 255 - $this->legacyBlockId : $this->legacyBlockId); + return $this->legacyItemId; } /** diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index c50cb9df9..5b83825b1 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockLegacyIds as LegacyIds; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\DyeColor; @@ -43,7 +42,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_PLANKS, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_PLANKS, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::PLANKS, $treeType->getMagicNumber()); + }, ItemIds::PLANKS, $treeType->getMagicNumber()); } public static function getWoodenFenceIdentifier(TreeType $treeType) : BID{ @@ -55,7 +54,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_FENCE, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::FENCE, $treeType->getMagicNumber()); + }, ItemIds::FENCE, $treeType->getMagicNumber()); } public static function getWoodenSlabIdentifier(TreeType $treeType) : BID{ @@ -67,17 +66,17 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_SLAB, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::WOODEN_SLAB, $treeType->getMagicNumber()); + }, ItemIds::WOODEN_SLAB, $treeType->getMagicNumber()); } public static function getLogIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LOG, LegacyIds::LOG, 0), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG, LegacyIds::LOG, 1), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG, LegacyIds::LOG, 2), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG, LegacyIds::LOG, 3), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG, LegacyIds::LOG2, 0), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG, LegacyIds::LOG2, 1), + TreeType::OAK()->id() => new BID(Ids::OAK_LOG, ItemIds::LOG, 0), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG, ItemIds::LOG, 1), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG, ItemIds::LOG, 2), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG, ItemIds::LOG, 3), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG, ItemIds::LOG2, 0), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG, ItemIds::LOG2, 1), default => throw new AssumptionFailedError("All tree types should be covered") }; } @@ -91,7 +90,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_WOOD, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_WOOD, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::WOOD, $treeType->getMagicNumber()); + }, ItemIds::WOOD, $treeType->getMagicNumber()); } public static function getAllSidedStrippedLogIdentifier(TreeType $treeType) : BID{ @@ -103,17 +102,17 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::STRIPPED_ACACIA_WOOD, TreeType::DARK_OAK()->id() => Ids::STRIPPED_DARK_OAK_WOOD, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::WOOD, $treeType->getMagicNumber() | BlockLegacyMetadata::WOOD_FLAG_STRIPPED); + }, ItemIds::WOOD, $treeType->getMagicNumber() | BlockLegacyMetadata::WOOD_FLAG_STRIPPED); } public static function getLeavesIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES, LegacyIds::LEAVES, 0), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES, LegacyIds::LEAVES, 1), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES, LegacyIds::LEAVES, 2), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES, LegacyIds::LEAVES, 3), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES, LegacyIds::LEAVES2, 0), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES, LegacyIds::LEAVES2, 1), + TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES, ItemIds::LEAVES, 0), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES, ItemIds::LEAVES, 1), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES, ItemIds::LEAVES, 2), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES, ItemIds::LEAVES, 3), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES, ItemIds::LEAVES2, 0), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES, ItemIds::LEAVES2, 1), default => throw new AssumptionFailedError("All tree types should be covered") }; } @@ -127,23 +126,23 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_SAPLING, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SAPLING, default => throw new AssumptionFailedError("All tree types should be covered") - }, LegacyIds::SAPLING, $treeType->getMagicNumber()); + }, ItemIds::SAPLING, $treeType->getMagicNumber()); } public static function getWoodenFloorSignIdentifier(TreeType $treeType) : BID{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_SIGN, LegacyIds::SIGN_POST, 0, ItemIds::SIGN, TileSign::class); + return new BID(Ids::OAK_SIGN, ItemIds::SIGN, 0, TileSign::class); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_SIGN, LegacyIds::SPRUCE_STANDING_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); + return new BID(Ids::SPRUCE_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_SIGN, LegacyIds::BIRCH_STANDING_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); + return new BID(Ids::BIRCH_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_SIGN, LegacyIds::JUNGLE_STANDING_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); + return new BID(Ids::JUNGLE_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_SIGN, LegacyIds::ACACIA_STANDING_SIGN, 0, ItemIds::ACACIA_SIGN, TileSign::class); + return new BID(Ids::ACACIA_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_SIGN, LegacyIds::DARKOAK_STANDING_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); + return new BID(Ids::DARK_OAK_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -151,17 +150,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenWallSignIdentifier(TreeType $treeType) : BID{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_WALL_SIGN, LegacyIds::WALL_SIGN, 0, ItemIds::SIGN, TileSign::class); + return new BID(Ids::OAK_WALL_SIGN, ItemIds::SIGN, 0, TileSign::class); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_WALL_SIGN, LegacyIds::SPRUCE_WALL_SIGN, 0, ItemIds::SPRUCE_SIGN, TileSign::class); + return new BID(Ids::SPRUCE_WALL_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_WALL_SIGN, LegacyIds::BIRCH_WALL_SIGN, 0, ItemIds::BIRCH_SIGN, TileSign::class); + return new BID(Ids::BIRCH_WALL_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_WALL_SIGN, LegacyIds::JUNGLE_WALL_SIGN, 0, ItemIds::JUNGLE_SIGN, TileSign::class); + return new BID(Ids::JUNGLE_WALL_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_WALL_SIGN, LegacyIds::ACACIA_WALL_SIGN, 0, ItemIds::ACACIA_SIGN, TileSign::class); + return new BID(Ids::ACACIA_WALL_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_WALL_SIGN, LegacyIds::DARKOAK_WALL_SIGN, 0, ItemIds::DARKOAK_SIGN, TileSign::class); + return new BID(Ids::DARK_OAK_WALL_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -169,17 +168,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenTrapdoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_TRAPDOOR, LegacyIds::WOODEN_TRAPDOOR, 0); + return new BID(Ids::OAK_TRAPDOOR, ItemIds::WOODEN_TRAPDOOR, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_TRAPDOOR, LegacyIds::SPRUCE_TRAPDOOR, 0); + return new BID(Ids::SPRUCE_TRAPDOOR, ItemIds::SPRUCE_TRAPDOOR, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_TRAPDOOR, LegacyIds::BIRCH_TRAPDOOR, 0); + return new BID(Ids::BIRCH_TRAPDOOR, ItemIds::BIRCH_TRAPDOOR, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_TRAPDOOR, LegacyIds::JUNGLE_TRAPDOOR, 0); + return new BID(Ids::JUNGLE_TRAPDOOR, ItemIds::JUNGLE_TRAPDOOR, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_TRAPDOOR, LegacyIds::ACACIA_TRAPDOOR, 0); + return new BID(Ids::ACACIA_TRAPDOOR, ItemIds::ACACIA_TRAPDOOR, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_TRAPDOOR, LegacyIds::DARK_OAK_TRAPDOOR, 0); + return new BID(Ids::DARK_OAK_TRAPDOOR, ItemIds::DARK_OAK_TRAPDOOR, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -187,17 +186,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenButtonIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_BUTTON, LegacyIds::WOODEN_BUTTON, 0); + return new BID(Ids::OAK_BUTTON, ItemIds::WOODEN_BUTTON, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_BUTTON, LegacyIds::SPRUCE_BUTTON, 0); + return new BID(Ids::SPRUCE_BUTTON, ItemIds::SPRUCE_BUTTON, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_BUTTON, LegacyIds::BIRCH_BUTTON, 0); + return new BID(Ids::BIRCH_BUTTON, ItemIds::BIRCH_BUTTON, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_BUTTON, LegacyIds::JUNGLE_BUTTON, 0); + return new BID(Ids::JUNGLE_BUTTON, ItemIds::JUNGLE_BUTTON, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_BUTTON, LegacyIds::ACACIA_BUTTON, 0); + return new BID(Ids::ACACIA_BUTTON, ItemIds::ACACIA_BUTTON, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_BUTTON, LegacyIds::DARK_OAK_BUTTON, 0); + return new BID(Ids::DARK_OAK_BUTTON, ItemIds::DARK_OAK_BUTTON, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -205,17 +204,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenPressurePlateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_PRESSURE_PLATE, LegacyIds::WOODEN_PRESSURE_PLATE, 0); + return new BID(Ids::OAK_PRESSURE_PLATE, ItemIds::WOODEN_PRESSURE_PLATE, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_PRESSURE_PLATE, LegacyIds::SPRUCE_PRESSURE_PLATE, 0); + return new BID(Ids::SPRUCE_PRESSURE_PLATE, ItemIds::SPRUCE_PRESSURE_PLATE, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_PRESSURE_PLATE, LegacyIds::BIRCH_PRESSURE_PLATE, 0); + return new BID(Ids::BIRCH_PRESSURE_PLATE, ItemIds::BIRCH_PRESSURE_PLATE, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_PRESSURE_PLATE, LegacyIds::JUNGLE_PRESSURE_PLATE, 0); + return new BID(Ids::JUNGLE_PRESSURE_PLATE, ItemIds::JUNGLE_PRESSURE_PLATE, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_PRESSURE_PLATE, LegacyIds::ACACIA_PRESSURE_PLATE, 0); + return new BID(Ids::ACACIA_PRESSURE_PLATE, ItemIds::ACACIA_PRESSURE_PLATE, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_PRESSURE_PLATE, LegacyIds::DARK_OAK_PRESSURE_PLATE, 0); + return new BID(Ids::DARK_OAK_PRESSURE_PLATE, ItemIds::DARK_OAK_PRESSURE_PLATE, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -223,17 +222,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenDoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_DOOR, LegacyIds::OAK_DOOR_BLOCK, 0, ItemIds::OAK_DOOR); + return new BID(Ids::OAK_DOOR, ItemIds::OAK_DOOR, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_DOOR, LegacyIds::SPRUCE_DOOR_BLOCK, 0, ItemIds::SPRUCE_DOOR); + return new BID(Ids::SPRUCE_DOOR, ItemIds::SPRUCE_DOOR, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_DOOR, LegacyIds::BIRCH_DOOR_BLOCK, 0, ItemIds::BIRCH_DOOR); + return new BID(Ids::BIRCH_DOOR, ItemIds::BIRCH_DOOR, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_DOOR, LegacyIds::JUNGLE_DOOR_BLOCK, 0, ItemIds::JUNGLE_DOOR); + return new BID(Ids::JUNGLE_DOOR, ItemIds::JUNGLE_DOOR, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_DOOR, LegacyIds::ACACIA_DOOR_BLOCK, 0, ItemIds::ACACIA_DOOR); + return new BID(Ids::ACACIA_DOOR, ItemIds::ACACIA_DOOR, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_DOOR, LegacyIds::DARK_OAK_DOOR_BLOCK, 0, ItemIds::DARK_OAK_DOOR); + return new BID(Ids::DARK_OAK_DOOR, ItemIds::DARK_OAK_DOOR, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -241,17 +240,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenFenceGateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_FENCE_GATE, LegacyIds::OAK_FENCE_GATE, 0); + return new BID(Ids::OAK_FENCE_GATE, ItemIds::OAK_FENCE_GATE, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_FENCE_GATE, LegacyIds::SPRUCE_FENCE_GATE, 0); + return new BID(Ids::SPRUCE_FENCE_GATE, ItemIds::SPRUCE_FENCE_GATE, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_FENCE_GATE, LegacyIds::BIRCH_FENCE_GATE, 0); + return new BID(Ids::BIRCH_FENCE_GATE, ItemIds::BIRCH_FENCE_GATE, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_FENCE_GATE, LegacyIds::JUNGLE_FENCE_GATE, 0); + return new BID(Ids::JUNGLE_FENCE_GATE, ItemIds::JUNGLE_FENCE_GATE, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_FENCE_GATE, LegacyIds::ACACIA_FENCE_GATE, 0); + return new BID(Ids::ACACIA_FENCE_GATE, ItemIds::ACACIA_FENCE_GATE, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_FENCE_GATE, LegacyIds::DARK_OAK_FENCE_GATE, 0); + return new BID(Ids::DARK_OAK_FENCE_GATE, ItemIds::DARK_OAK_FENCE_GATE, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -259,17 +258,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenStairsIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_STAIRS, LegacyIds::OAK_STAIRS, 0); + return new BID(Ids::OAK_STAIRS, ItemIds::OAK_STAIRS, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_STAIRS, LegacyIds::SPRUCE_STAIRS, 0); + return new BID(Ids::SPRUCE_STAIRS, ItemIds::SPRUCE_STAIRS, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_STAIRS, LegacyIds::BIRCH_STAIRS, 0); + return new BID(Ids::BIRCH_STAIRS, ItemIds::BIRCH_STAIRS, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_STAIRS, LegacyIds::JUNGLE_STAIRS, 0); + return new BID(Ids::JUNGLE_STAIRS, ItemIds::JUNGLE_STAIRS, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_STAIRS, LegacyIds::ACACIA_STAIRS, 0); + return new BID(Ids::ACACIA_STAIRS, ItemIds::ACACIA_STAIRS, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_STAIRS, LegacyIds::DARK_OAK_STAIRS, 0); + return new BID(Ids::DARK_OAK_STAIRS, ItemIds::DARK_OAK_STAIRS, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -277,17 +276,17 @@ final class BlockLegacyIdHelper{ public static function getStrippedLogIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::STRIPPED_OAK_LOG, LegacyIds::STRIPPED_OAK_LOG, 0); + return new BID(Ids::STRIPPED_OAK_LOG, ItemIds::STRIPPED_OAK_LOG, 0); case TreeType::SPRUCE()->id(): - return new BID(Ids::STRIPPED_SPRUCE_LOG, LegacyIds::STRIPPED_SPRUCE_LOG, 0); + return new BID(Ids::STRIPPED_SPRUCE_LOG, ItemIds::STRIPPED_SPRUCE_LOG, 0); case TreeType::BIRCH()->id(): - return new BID(Ids::STRIPPED_BIRCH_LOG, LegacyIds::STRIPPED_BIRCH_LOG, 0); + return new BID(Ids::STRIPPED_BIRCH_LOG, ItemIds::STRIPPED_BIRCH_LOG, 0); case TreeType::JUNGLE()->id(): - return new BID(Ids::STRIPPED_JUNGLE_LOG, LegacyIds::STRIPPED_JUNGLE_LOG, 0); + return new BID(Ids::STRIPPED_JUNGLE_LOG, ItemIds::STRIPPED_JUNGLE_LOG, 0); case TreeType::ACACIA()->id(): - return new BID(Ids::STRIPPED_ACACIA_LOG, LegacyIds::STRIPPED_ACACIA_LOG, 0); + return new BID(Ids::STRIPPED_ACACIA_LOG, ItemIds::STRIPPED_ACACIA_LOG, 0); case TreeType::DARK_OAK()->id(): - return new BID(Ids::STRIPPED_DARK_OAK_LOG, LegacyIds::STRIPPED_DARK_OAK_LOG, 0); + return new BID(Ids::STRIPPED_DARK_OAK_LOG, ItemIds::STRIPPED_DARK_OAK_LOG, 0); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -295,51 +294,51 @@ final class BlockLegacyIdHelper{ public static function getGlazedTerracottaIdentifier(DyeColor $color) : BlockIdentifier{ switch($color->id()){ case DyeColor::WHITE()->id(): - return new BID(Ids::WHITE_GLAZED_TERRACOTTA, LegacyIds::WHITE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::WHITE_GLAZED_TERRACOTTA, ItemIds::WHITE_GLAZED_TERRACOTTA, 0); case DyeColor::ORANGE()->id(): - return new BID(Ids::ORANGE_GLAZED_TERRACOTTA, LegacyIds::ORANGE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::ORANGE_GLAZED_TERRACOTTA, ItemIds::ORANGE_GLAZED_TERRACOTTA, 0); case DyeColor::MAGENTA()->id(): - return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA, LegacyIds::MAGENTA_GLAZED_TERRACOTTA, 0); + return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA, ItemIds::MAGENTA_GLAZED_TERRACOTTA, 0); case DyeColor::LIGHT_BLUE()->id(): - return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, LegacyIds::LIGHT_BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, ItemIds::LIGHT_BLUE_GLAZED_TERRACOTTA, 0); case DyeColor::YELLOW()->id(): - return new BID(Ids::YELLOW_GLAZED_TERRACOTTA, LegacyIds::YELLOW_GLAZED_TERRACOTTA, 0); + return new BID(Ids::YELLOW_GLAZED_TERRACOTTA, ItemIds::YELLOW_GLAZED_TERRACOTTA, 0); case DyeColor::LIME()->id(): - return new BID(Ids::LIME_GLAZED_TERRACOTTA, LegacyIds::LIME_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIME_GLAZED_TERRACOTTA, ItemIds::LIME_GLAZED_TERRACOTTA, 0); case DyeColor::PINK()->id(): - return new BID(Ids::PINK_GLAZED_TERRACOTTA, LegacyIds::PINK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PINK_GLAZED_TERRACOTTA, ItemIds::PINK_GLAZED_TERRACOTTA, 0); case DyeColor::GRAY()->id(): - return new BID(Ids::GRAY_GLAZED_TERRACOTTA, LegacyIds::GRAY_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GRAY_GLAZED_TERRACOTTA, ItemIds::GRAY_GLAZED_TERRACOTTA, 0); case DyeColor::LIGHT_GRAY()->id(): - return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, LegacyIds::SILVER_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, ItemIds::SILVER_GLAZED_TERRACOTTA, 0); case DyeColor::CYAN()->id(): - return new BID(Ids::CYAN_GLAZED_TERRACOTTA, LegacyIds::CYAN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::CYAN_GLAZED_TERRACOTTA, ItemIds::CYAN_GLAZED_TERRACOTTA, 0); case DyeColor::PURPLE()->id(): - return new BID(Ids::PURPLE_GLAZED_TERRACOTTA, LegacyIds::PURPLE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PURPLE_GLAZED_TERRACOTTA, ItemIds::PURPLE_GLAZED_TERRACOTTA, 0); case DyeColor::BLUE()->id(): - return new BID(Ids::BLUE_GLAZED_TERRACOTTA, LegacyIds::BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLUE_GLAZED_TERRACOTTA, ItemIds::BLUE_GLAZED_TERRACOTTA, 0); case DyeColor::BROWN()->id(): - return new BID(Ids::BROWN_GLAZED_TERRACOTTA, LegacyIds::BROWN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BROWN_GLAZED_TERRACOTTA, ItemIds::BROWN_GLAZED_TERRACOTTA, 0); case DyeColor::GREEN()->id(): - return new BID(Ids::GREEN_GLAZED_TERRACOTTA, LegacyIds::GREEN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GREEN_GLAZED_TERRACOTTA, ItemIds::GREEN_GLAZED_TERRACOTTA, 0); case DyeColor::RED()->id(): - return new BID(Ids::RED_GLAZED_TERRACOTTA, LegacyIds::RED_GLAZED_TERRACOTTA, 0); + return new BID(Ids::RED_GLAZED_TERRACOTTA, ItemIds::RED_GLAZED_TERRACOTTA, 0); case DyeColor::BLACK()->id(): - return new BID(Ids::BLACK_GLAZED_TERRACOTTA, LegacyIds::BLACK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLACK_GLAZED_TERRACOTTA, ItemIds::BLACK_GLAZED_TERRACOTTA, 0); } throw new AssumptionFailedError("Switch should cover all colours"); } public static function getStoneSlabIdentifier(int $blockTypeId, int $stoneSlabId, int $meta) : BID{ - $id = [ - 1 => LegacyIds::STONE_SLAB, - 2 => LegacyIds::STONE_SLAB2, - 3 => LegacyIds::STONE_SLAB3, - 4 => LegacyIds::STONE_SLAB4 + $itemId = [ + 1 => ItemIds::STONE_SLAB, + 2 => ItemIds::STONE_SLAB2, + 3 => ItemIds::STONE_SLAB3, + 4 => ItemIds::STONE_SLAB4 ][$stoneSlabId] ?? null; - if($id === null){ + if($itemId === null){ throw new \InvalidArgumentException("Stone slab type should be 1, 2, 3 or 4"); } - return new BID($blockTypeId, $id, $meta); + return new BID($blockTypeId, $itemId, $meta); } } diff --git a/src/block/BlockLegacyIds.php b/src/block/BlockLegacyIds.php deleted file mode 100644 index f4757e357..000000000 --- a/src/block/BlockLegacyIds.php +++ /dev/null @@ -1,501 +0,0 @@ -expectException(\InvalidArgumentException::class); $this->blockFactory->register($block); } @@ -52,7 +53,7 @@ class BlockTest extends TestCase{ * Test registering a block deliberately overwriting another block works as expected */ public function testDeliberateOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, BlockLegacyIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, ItemIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromFullBlock($block->getStateId())); } @@ -63,7 +64,7 @@ class BlockTest extends TestCase{ public function testRegisterNewBlock() : void{ for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i, $i, 0), "Strange New Block", BlockBreakInfo::instant()); + $b = new StrangeNewBlock(new BlockIdentifier($i, $i + 10000, 0), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromFullBlock($b->getStateId())); return; From b9542b49084cc57b7f5a63bf9717430d07abc5d3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 15:52:43 +0100 Subject: [PATCH 168/692] ItemFactory: fix isRegistered() again we really need to get rid of the ItemFactory legacy nasties so we can burn this code --- src/block/utils/WallConnectionType.php | 48 ++++++++++++++++++++++++++ src/item/ItemFactory.php | 11 +++++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/block/utils/WallConnectionType.php diff --git a/src/block/utils/WallConnectionType.php b/src/block/utils/WallConnectionType.php new file mode 100644 index 000000000..60f2d01af --- /dev/null +++ b/src/block/utils/WallConnectionType.php @@ -0,0 +1,48 @@ +upgradeIntIdMeta(self::itemToBlockId($id), $variant & 0xf) !== null; + $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $variant & 0xf); + if($blockStateData === null){ + return false; + } + try{ + GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); + return true; + }catch(BlockStateDeserializeException){ + return false; + } } return isset($this->list[self::getListOffset($id, $variant)]); From 1da4c459794ba0af8e04bd6e56e6ac8173de72b2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 15:59:38 +0100 Subject: [PATCH 169/692] Add runtime support for wall connections this doesn't match the 1.16+ behaviour yet, but it at least recognizes walls that are already in the post-1.16 way and doesn't break them if not interacted with. --- src/block/Block.php | 2 +- src/block/Wall.php | 81 ++++++++++++++++--- src/block/utils/BlockDataReader.php | 21 +++++ src/block/utils/BlockDataWriter.php | 19 +++++ src/block/utils/WallConnectionType.php | 2 - .../convert/BlockStateDeserializerHelper.php | 11 ++- .../block/convert/BlockStateReader.php | 14 ++++ .../convert/BlockStateSerializerHelper.php | 12 ++- .../block/convert/BlockStateWriter.php | 12 +++ 9 files changed, 149 insertions(+), 25 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 5bf58b47c..4bdc776f2 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -49,7 +49,7 @@ use function count; use const PHP_INT_MAX; class Block{ - public const INTERNAL_STATE_DATA_BITS = 6; + public const INTERNAL_STATE_DATA_BITS = 9; public const INTERNAL_STATE_DATA_MASK = ~(~0 << self::INTERNAL_STATE_DATA_BITS); protected BlockIdentifier $idInfo; diff --git a/src/block/Wall.php b/src/block/Wall.php index e9a6cb9e0..ed3325a34 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -23,30 +23,93 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; +/** + * @phpstan-type WallConnectionSet array + */ class Wall extends Transparent{ - /** @var int[] facing => facing */ + /** + * @var WallConnectionType[] + * @phpstan-var WallConnectionSet + */ protected array $connections = []; - protected bool $up = false; + protected bool $post = false; - public function readStateFromWorld() : void{ - parent::readStateFromWorld(); + protected function decodeState(BlockDataReader $r) : void{ + $this->connections = $r->readWallConnections(); + $this->post = $r->readBool(); + } - $this->recalculateConnections(); + protected function encodeState(BlockDataWriter $w) : void{ + $w->writeWallConnections($this->connections); + $w->writeBool($this->post); + } + + public function onNearbyBlockChange() : void{ + if($this->recalculateConnections()){ + $this->position->getWorld()->setBlock($this->position, $this); + } + } + + /** + * @return WallConnectionType[] + * @phpstan-return WallConnectionSet + */ + public function getConnections() : array{ return $this->connections; } + + public function getConnection(int $face) : ?WallConnectionType{ + return $this->connections[$face] ?? null; + } + + /** + * @param WallConnectionType[] $connections + * @phpstan-param WallConnectionSet $connections + * @return $this + */ + public function setConnections(array $connections) : self{ + $this->connections = $connections; + return $this; + } + + /** @return $this */ + public function setConnection(int $face, ?WallConnectionType $type) : self{ + if($face !== Facing::NORTH && $face !== Facing::SOUTH && $face !== Facing::WEST && $face !== Facing::EAST){ + throw new \InvalidArgumentException("Facing can only be north, east, south or west"); + } + if($type !== null){ + $this->connections[$face] = $type; + }else{ + unset($this->connections[$face]); + } + return $this; + } + + public function isPost() : bool{ return $this->post; } + + /** @return $this */ + public function setPost(bool $post) : self{ + $this->post = $post; + return $this; } protected function recalculateConnections() : bool{ $changed = 0; + + //TODO: implement tall/short connections - right now we only support short as per pre-1.16 + foreach(Facing::HORIZONTAL as $facing){ $block = $this->getSide($facing); if($block instanceof static || $block instanceof FenceGate || ($block->isSolid() && !$block->isTransparent())){ if(!isset($this->connections[$facing])){ - $this->connections[$facing] = $facing; + $this->connections[$facing] = WallConnectionType::SHORT(); $changed++; } }elseif(isset($this->connections[$facing])){ @@ -56,8 +119,8 @@ class Wall extends Transparent{ } $up = $this->getSide(Facing::UP)->getTypeId() !== BlockTypeIds::AIR; - if($up !== $this->up){ - $this->up = $up; + if($up !== $this->post){ + $this->post = $up; $changed++; } @@ -74,7 +137,7 @@ class Wall extends Transparent{ $inset = 0.25; if( - !$this->up && //if there is a block on top, it stays as a post + !$this->post && //if there is a block on top, it stays as a post ( ($north && $south && !$west && !$east) || (!$north && !$south && $west && $east) diff --git a/src/block/utils/BlockDataReader.php b/src/block/utils/BlockDataReader.php index e1e7bb689..22d55dbc8 100644 --- a/src/block/utils/BlockDataReader.php +++ b/src/block/utils/BlockDataReader.php @@ -97,4 +97,25 @@ final class BlockDataReader{ default => throw new AssumptionFailedError("Unreachable") }; } + + /** + * @return WallConnectionType[] + * @phpstan-return array + */ + public function readWallConnections() : array{ + $connections = []; + //TODO: we can pack this into 7 bits instead of 8 + foreach(Facing::HORIZONTAL as $facing){ + $type = $this->readBoundedInt(2, 0, 2); + if($type !== 0){ + $connections[$facing] = match($type){ + 1 => WallConnectionType::SHORT(), + 2 => WallConnectionType::TALL(), + default => throw new AssumptionFailedError("Unreachable") + }; + } + } + + return $connections; + } } diff --git a/src/block/utils/BlockDataWriter.php b/src/block/utils/BlockDataWriter.php index 9b37a8153..774a58484 100644 --- a/src/block/utils/BlockDataWriter.php +++ b/src/block/utils/BlockDataWriter.php @@ -25,6 +25,7 @@ namespace pocketmine\block\utils; use pocketmine\math\Axis; use pocketmine\math\Facing; +use pocketmine\utils\AssumptionFailedError; final class BlockDataWriter{ @@ -95,6 +96,24 @@ final class BlockDataWriter{ }); } + /** + * @param WallConnectionType[] $connections + * @phpstan-param array $connections + */ + public function writeWallConnections(array $connections) : self{ + //TODO: we can pack this into 7 bits instead of 8 + foreach(Facing::HORIZONTAL as $facing){ + $this->writeInt(2, match($connections[$facing] ?? null){ + null => 0, + WallConnectionType::SHORT() => 1, + WallConnectionType::TALL() => 2, + default => throw new AssumptionFailedError("Unreachable") + }); + } + + return $this; + } + public function getValue() : int{ return $this->value; } public function getOffset() : int{ return $this->offset; } diff --git a/src/block/utils/WallConnectionType.php b/src/block/utils/WallConnectionType.php index 60f2d01af..11765ab33 100644 --- a/src/block/utils/WallConnectionType.php +++ b/src/block/utils/WallConnectionType.php @@ -31,7 +31,6 @@ use pocketmine\utils\EnumTrait; * @see build/generate-registry-annotations.php * @generate-registry-docblock * - * @method static WallConnectionType NONE() * @method static WallConnectionType SHORT() * @method static WallConnectionType TALL() */ @@ -40,7 +39,6 @@ final class WallConnectionType{ protected static function setup() : void{ self::registerAll( - new self("none"), new self("short"), new self("tall") ); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index b5a76394d..a1c2719fc 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -196,12 +196,11 @@ final class BlockStateDeserializerHelper{ /** @throws BlockStateDeserializeException */ public static function decodeWall(Wall $block, BlockStateReader $in) : Wall{ - //TODO: our walls don't support the full range of needed states yet - $in->todo(BlockStateNames::WALL_POST_BIT); //TODO - $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_EAST); - $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_NORTH); - $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH); - $in->todo(BlockStateNames::WALL_CONNECTION_TYPE_WEST); + $block->setPost($in->readBool(BlockStateNames::WALL_POST_BIT)); + $block->setConnection(Facing::NORTH, $in->readWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_NORTH)); + $block->setConnection(Facing::SOUTH, $in->readWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH)); + $block->setConnection(Facing::WEST, $in->readWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_WEST)); + $block->setConnection(Facing::EAST, $in->readWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_EAST)); return $block; } diff --git a/src/data/bedrock/block/convert/BlockStateReader.php b/src/data/bedrock/block/convert/BlockStateReader.php index 3380721f5..0d1a0000f 100644 --- a/src/data/bedrock/block/convert/BlockStateReader.php +++ b/src/data/bedrock/block/convert/BlockStateReader.php @@ -27,6 +27,7 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; +use pocketmine\block\utils\WallConnectionType; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateNames; @@ -296,6 +297,19 @@ final class BlockStateReader{ }; } + /** @throws BlockStateDeserializeException */ + public function readWallConnectionType(string $name) : ?WallConnectionType{ + return match($type = $this->readString($name)){ + //TODO: this looks a bit confusing due to use of EAST, but the values are the same for all connections + //we need to find a better way to auto-generate the constant names when they are reused + //for now, using these constants is better than nothing since it still gives static analysability + StringValues::WALL_CONNECTION_TYPE_EAST_NONE => null, + StringValues::WALL_CONNECTION_TYPE_EAST_SHORT => WallConnectionType::SHORT(), + StringValues::WALL_CONNECTION_TYPE_EAST_TALL => WallConnectionType::TALL(), + default => throw $this->badValueException($name, $type), + }; + } + /** * Explicitly mark a property as unused, so it doesn't get flagged as an error when debug mode is enabled */ diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 1abe7059a..b65abbaae 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -48,7 +48,6 @@ use pocketmine\block\Wall; use pocketmine\block\WallSign; use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockStateNames; -use pocketmine\data\bedrock\block\BlockStateStringValues; use pocketmine\data\bedrock\block\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; @@ -245,13 +244,12 @@ final class BlockStateSerializerHelper{ } public static function encodeWall(Wall $block, BlockStateWriter $out) : BlockStateWriter{ - //TODO: our walls don't support the full range of needed states yet return $out - ->writeBool(BlockStateNames::WALL_POST_BIT, false) - ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_EAST, BlockStateStringValues::WALL_CONNECTION_TYPE_EAST_NONE) - ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_NORTH, BlockStateStringValues::WALL_CONNECTION_TYPE_NORTH_NONE) - ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH, BlockStateStringValues::WALL_CONNECTION_TYPE_SOUTH_NONE) - ->writeString(BlockStateNames::WALL_CONNECTION_TYPE_WEST, BlockStateStringValues::WALL_CONNECTION_TYPE_WEST_NONE); + ->writeBool(BlockStateNames::WALL_POST_BIT, $block->isPost()) + ->writeWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_EAST, $block->getConnection(Facing::EAST)) + ->writeWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_NORTH, $block->getConnection(Facing::NORTH)) + ->writeWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_SOUTH, $block->getConnection(Facing::SOUTH)) + ->writeWallConnectionType(BlockStateNames::WALL_CONNECTION_TYPE_WEST, $block->getConnection(Facing::WEST)); } public static function encodeLegacyWall(Wall $block, string $type) : BlockStateWriter{ diff --git a/src/data/bedrock/block/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php index 294c0c015..4186972dd 100644 --- a/src/data/bedrock/block/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -28,6 +28,7 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WallConnectionType; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockStateSerializeException; @@ -263,6 +264,17 @@ final class BlockStateWriter{ return $this; } + /** @return $this */ + public function writeWallConnectionType(string $name, ?WallConnectionType $wallConnectionType) : self{ + $this->writeString($name, match($wallConnectionType){ + null => StringValues::WALL_CONNECTION_TYPE_EAST_NONE, + WallConnectionType::SHORT() => StringValues::WALL_CONNECTION_TYPE_EAST_SHORT, + WallConnectionType::TALL() => StringValues::WALL_CONNECTION_TYPE_EAST_TALL, + default => throw new BlockStateSerializeException("Invalid Wall connection type " . $wallConnectionType->name()) + }); + return $this; + } + public function getBlockStateData() : BlockStateData{ return new BlockStateData($this->id, $this->states, BlockStateData::CURRENT_VERSION); } From 03fdbd9f7b8123e9240cf8890d2843a6adf10d5b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 15:59:52 +0100 Subject: [PATCH 170/692] fix CS --- tests/phpunit/item/ItemFactoryTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/phpunit/item/ItemFactoryTest.php b/tests/phpunit/item/ItemFactoryTest.php index a0163f5fe..205a87107 100644 --- a/tests/phpunit/item/ItemFactoryTest.php +++ b/tests/phpunit/item/ItemFactoryTest.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use PHPUnit\Framework\TestCase; -use pocketmine\block\BlockFactory; class ItemFactoryTest extends TestCase{ From f57e02849a54670f1ec80d1319310a89de2370f4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:01:11 +0100 Subject: [PATCH 171/692] Wall: move function for consistency --- src/block/Wall.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/block/Wall.php b/src/block/Wall.php index ed3325a34..a97aba751 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -53,12 +53,6 @@ class Wall extends Transparent{ $w->writeBool($this->post); } - public function onNearbyBlockChange() : void{ - if($this->recalculateConnections()){ - $this->position->getWorld()->setBlock($this->position, $this); - } - } - /** * @return WallConnectionType[] * @phpstan-return WallConnectionSet @@ -100,6 +94,12 @@ class Wall extends Transparent{ return $this; } + public function onNearbyBlockChange() : void{ + if($this->recalculateConnections()){ + $this->position->getWorld()->setBlock($this->position, $this); + } + } + protected function recalculateConnections() : bool{ $changed = 0; From db8bf672f0933a5bc908825f973be4b845e54573 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:10:06 +0100 Subject: [PATCH 172/692] fix item frames --- src/block/tile/ItemFrame.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/block/tile/ItemFrame.php b/src/block/tile/ItemFrame.php index d05c8fedc..92db02d5f 100644 --- a/src/block/tile/ItemFrame.php +++ b/src/block/tile/ItemFrame.php @@ -58,7 +58,9 @@ class ItemFrame extends Spawnable{ protected function writeSaveData(CompoundTag $nbt) : void{ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, $this->itemDropChance); $nbt->setByte(self::TAG_ITEM_ROTATION, $this->itemRotation); - $nbt->setTag(self::TAG_ITEM, $this->item->nbtSerialize()); + if(!$this->item->isNull()){ + $nbt->setTag(self::TAG_ITEM, $this->item->nbtSerialize()); + } } public function hasItem() : bool{ @@ -96,6 +98,8 @@ class ItemFrame extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, $this->itemDropChance); $nbt->setByte(self::TAG_ITEM_ROTATION, $this->itemRotation); - $nbt->setTag(self::TAG_ITEM, $this->item->nbtSerialize()); + if(!$this->item->isNull()){ + $nbt->setTag(self::TAG_ITEM, $this->item->nbtSerialize()); + } } } From 27d767227351cbd21a925e1db0f577b42203cdcc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:10:39 +0100 Subject: [PATCH 173/692] Item frames can now be placed on the up or down faces of blocks --- src/block/ItemFrame.php | 10 +++++----- .../convert/BlockObjectToBlockStateSerializer.php | 2 +- .../convert/BlockStateToBlockObjectDeserializer.php | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 1f77323a0..31f802f1d 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; +use pocketmine\block\utils\AnyFacingTrait; use pocketmine\block\utils\BlockDataReader; use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -37,7 +37,7 @@ use function is_nan; use function lcg_value; class ItemFrame extends Flowable{ - use HorizontalFacingTrait; + use AnyFacingTrait; public const ROTATIONS = 8; @@ -48,12 +48,12 @@ class ItemFrame extends Flowable{ protected float $itemDropChance = 1.0; protected function decodeState(BlockDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); + $this->facing = $r->readFacing(); $this->hasMap = $r->readBool(); } protected function encodeState(BlockDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); + $w->writeFacing($this->facing); $w->writeBool($this->hasMap); } @@ -164,7 +164,7 @@ class ItemFrame extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($face === Facing::DOWN || $face === Facing::UP || !$blockClicked->isSolid()){ + if(!$blockClicked->isSolid()){ return false; } diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index c70b61d59..ec3f51236 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -694,7 +694,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::FRAME) ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) - ->writeHorizontalFacing($block->getFacing()); + ->writeFacingDirection($block->getFacing()); }); $this->map(Blocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f210726c4..ad0801c11 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -486,10 +486,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); $this->map(Ids::FRAME, function(Reader $in) : Block{ - //TODO: in R13 this can be any side, not just horizontal $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is return Blocks::ITEM_FRAME() - ->setFacing($in->readHorizontalFacing()) + ->setFacing($in->readFacingDirection()) ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); }); $this->map(Ids::FROSTED_ICE, function(Reader $in) : Block{ From b56d0491033bd0fa4f1c3efbea5a547a9ae46592 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:12:15 +0100 Subject: [PATCH 174/692] Updated BlockFactory consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index c4bd93b4d..30e17a976 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"641024":"Activator Rail","641025":"Activator Rail","641026":"Activator Rail","641027":"Activator Rail","641028":"Activator Rail","641029":"Activator Rail","641032":"Activator Rail","641033":"Activator Rail","641034":"Activator Rail","641035":"Activator Rail","641036":"Activator Rail","641037":"Activator Rail","640000":"Air","641472":"Anvil","641473":"Anvil","641474":"Anvil","641476":"Anvil","641477":"Anvil","641478":"Anvil","641480":"Anvil","641481":"Anvil","641482":"Anvil","641484":"Anvil","641485":"Anvil","641486":"Anvil","641600":"Bamboo","641601":"Bamboo","641602":"Bamboo","641604":"Bamboo","641605":"Bamboo","641606":"Bamboo","641608":"Bamboo","641609":"Bamboo","641610":"Bamboo","641612":"Bamboo","641613":"Bamboo","641614":"Bamboo","641664":"Bamboo Sapling","641665":"Bamboo Sapling","641728":"Banner","641729":"Banner","641730":"Banner","641731":"Banner","641732":"Banner","641733":"Banner","641734":"Banner","641735":"Banner","641736":"Banner","641737":"Banner","641738":"Banner","641739":"Banner","641740":"Banner","641741":"Banner","641742":"Banner","641743":"Banner","673856":"Wall Banner","673857":"Wall Banner","673858":"Wall Banner","673859":"Wall Banner","641792":"Barrel","641793":"Barrel","641794":"Barrel","641795":"Barrel","641796":"Barrel","641797":"Barrel","641800":"Barrel","641801":"Barrel","641802":"Barrel","641803":"Barrel","641804":"Barrel","641805":"Barrel","641856":"Barrier","641920":"Beacon","641984":"Bed Block","641985":"Bed Block","641986":"Bed Block","641987":"Bed Block","641988":"Bed Block","641989":"Bed Block","641990":"Bed Block","641991":"Bed Block","641992":"Bed Block","641993":"Bed Block","641994":"Bed Block","641995":"Bed Block","641996":"Bed Block","641997":"Bed Block","641998":"Bed Block","641999":"Bed Block","642048":"Bedrock","642049":"Bedrock","642112":"Beetroot Block","642113":"Beetroot Block","642114":"Beetroot Block","642115":"Beetroot Block","642116":"Beetroot Block","642117":"Beetroot Block","642118":"Beetroot Block","642119":"Beetroot Block","642176":"Bell","642177":"Bell","642178":"Bell","642179":"Bell","642180":"Bell","642181":"Bell","642182":"Bell","642183":"Bell","642184":"Bell","642185":"Bell","642186":"Bell","642187":"Bell","642188":"Bell","642189":"Bell","642190":"Bell","642191":"Bell","643392":"Blue Ice","643584":"Bone Block","643585":"Bone Block","643586":"Bone Block","643648":"Bookshelf","643712":"Brewing Stand","643713":"Brewing Stand","643714":"Brewing Stand","643715":"Brewing Stand","643716":"Brewing Stand","643717":"Brewing Stand","643718":"Brewing Stand","643719":"Brewing Stand","643840":"Brick Stairs","643841":"Brick Stairs","643842":"Brick Stairs","643843":"Brick Stairs","643844":"Brick Stairs","643845":"Brick Stairs","643846":"Brick Stairs","643847":"Brick Stairs","643968":"Bricks","644096":"Brown Mushroom","644224":"Cactus","644225":"Cactus","644226":"Cactus","644227":"Cactus","644228":"Cactus","644229":"Cactus","644230":"Cactus","644231":"Cactus","644232":"Cactus","644233":"Cactus","644234":"Cactus","644235":"Cactus","644236":"Cactus","644237":"Cactus","644238":"Cactus","644239":"Cactus","644288":"Cake","644289":"Cake","644290":"Cake","644291":"Cake","644292":"Cake","644293":"Cake","644294":"Cake","644416":"Carrot Block","644417":"Carrot Block","644418":"Carrot Block","644419":"Carrot Block","644420":"Carrot Block","644421":"Carrot Block","644422":"Carrot Block","644423":"Carrot Block","644608":"Chest","644609":"Chest","644610":"Chest","644611":"Chest","644928":"Clay Block","644992":"Coal Block","645056":"Coal Ore","645120":"Cobblestone","662400":"Mossy Cobblestone","645248":"Cobblestone Stairs","645249":"Cobblestone Stairs","645250":"Cobblestone Stairs","645251":"Cobblestone Stairs","645252":"Cobblestone Stairs","645253":"Cobblestone Stairs","645254":"Cobblestone Stairs","645255":"Cobblestone Stairs","662528":"Mossy Cobblestone Stairs","662529":"Mossy Cobblestone Stairs","662530":"Mossy Cobblestone Stairs","662531":"Mossy Cobblestone Stairs","662532":"Mossy Cobblestone Stairs","662533":"Mossy Cobblestone Stairs","662534":"Mossy Cobblestone Stairs","662535":"Mossy Cobblestone Stairs","645376":"Cobweb","645440":"Cocoa Block","645441":"Cocoa Block","645442":"Cocoa Block","645443":"Cocoa Block","645444":"Cocoa Block","645445":"Cocoa Block","645446":"Cocoa Block","645447":"Cocoa Block","645448":"Cocoa Block","645449":"Cocoa Block","645450":"Cocoa Block","645451":"Cocoa Block","645760":"Coral Block","645761":"Coral Block","645762":"Coral Block","645763":"Coral Block","645764":"Coral Block","645768":"Coral Block","645769":"Coral Block","645770":"Coral Block","645771":"Coral Block","645772":"Coral Block","646016":"Crafting Table","647616":"Daylight Sensor","647617":"Daylight Sensor","647618":"Daylight Sensor","647619":"Daylight Sensor","647620":"Daylight Sensor","647621":"Daylight Sensor","647622":"Daylight Sensor","647623":"Daylight Sensor","647624":"Daylight Sensor","647625":"Daylight Sensor","647626":"Daylight Sensor","647627":"Daylight Sensor","647628":"Daylight Sensor","647629":"Daylight Sensor","647630":"Daylight Sensor","647631":"Daylight Sensor","647632":"Daylight Sensor","647633":"Daylight Sensor","647634":"Daylight Sensor","647635":"Daylight Sensor","647636":"Daylight Sensor","647637":"Daylight Sensor","647638":"Daylight Sensor","647639":"Daylight Sensor","647640":"Daylight Sensor","647641":"Daylight Sensor","647642":"Daylight Sensor","647643":"Daylight Sensor","647644":"Daylight Sensor","647645":"Daylight Sensor","647646":"Daylight Sensor","647647":"Daylight Sensor","647680":"Dead Bush","647744":"Detector Rail","647745":"Detector Rail","647746":"Detector Rail","647747":"Detector Rail","647748":"Detector Rail","647749":"Detector Rail","647752":"Detector Rail","647753":"Detector Rail","647754":"Detector Rail","647755":"Detector Rail","647756":"Detector Rail","647757":"Detector Rail","647808":"Diamond Block","647872":"Diamond Ore","648192":"Dirt","648193":"Dirt","673216":"Sunflower","673217":"Sunflower","661568":"Lilac","661569":"Lilac","668800":"Rose Bush","668801":"Rose Bush","665088":"Peony","665089":"Peony","648256":"Double Tallgrass","648257":"Double Tallgrass","661120":"Large Fern","661121":"Large Fern","648320":"Dragon Egg","648384":"Dried Kelp Block","656192":"Emerald Block","656256":"Emerald Ore","656320":"Enchanting Table","656384":"End Portal Frame","656385":"End Portal Frame","656386":"End Portal Frame","656387":"End Portal Frame","656388":"End Portal Frame","656389":"End Portal Frame","656390":"End Portal Frame","656391":"End Portal Frame","656448":"End Rod","656449":"End Rod","656450":"End Rod","656451":"End Rod","656452":"End Rod","656453":"End Rod","656512":"End Stone","656768":"End Stone Bricks","656640":"End Stone Brick Stairs","656641":"End Stone Brick Stairs","656642":"End Stone Brick Stairs","656643":"End Stone Brick Stairs","656644":"End Stone Brick Stairs","656645":"End Stone Brick Stairs","656646":"End Stone Brick Stairs","656647":"End Stone Brick Stairs","656832":"Ender Chest","656833":"Ender Chest","656834":"Ender Chest","656835":"Ender Chest","656960":"Farmland","656961":"Farmland","656962":"Farmland","656963":"Farmland","656964":"Farmland","656965":"Farmland","656966":"Farmland","656967":"Farmland","657088":"Fire Block","657089":"Fire Block","657090":"Fire Block","657091":"Fire Block","657092":"Fire Block","657093":"Fire Block","657094":"Fire Block","657095":"Fire Block","657096":"Fire Block","657097":"Fire Block","657098":"Fire Block","657099":"Fire Block","657100":"Fire Block","657101":"Fire Block","657102":"Fire Block","657103":"Fire Block","657152":"Fletching Table","646400":"Dandelion","665920":"Poppy","641152":"Allium","641536":"Azure Bluet","643456":"Blue Orchid","645888":"Cornflower","661632":"Lily of the Valley","664896":"Orange Tulip","664960":"Oxeye Daisy","665216":"Pink Tulip","668224":"Red Tulip","674304":"White Tulip","657216":"Flower Pot","657280":"Frosted Ice","657281":"Frosted Ice","657282":"Frosted Ice","657283":"Frosted Ice","657344":"Furnace","657345":"Furnace","657346":"Furnace","657347":"Furnace","657348":"Furnace","657349":"Furnace","657350":"Furnace","657351":"Furnace","643264":"Blast Furnace","643265":"Blast Furnace","643266":"Blast Furnace","643267":"Blast Furnace","643268":"Blast Furnace","643269":"Blast Furnace","643270":"Blast Furnace","643271":"Blast Furnace","669440":"Smoker","669441":"Smoker","669442":"Smoker","669443":"Smoker","669444":"Smoker","669445":"Smoker","669446":"Smoker","669447":"Smoker","657408":"Glass","657472":"Glass Pane","657536":"Glowing Obsidian","657600":"Glowstone","657664":"Gold Block","657728":"Gold Ore","658048":"Grass","658112":"Grass Path","658176":"Gravel","658432":"Hardened Clay","658496":"Hardened Glass","658560":"Hardened Glass Pane","658624":"Hay Bale","658625":"Hay Bale","658626":"Hay Bale","658688":"Hopper","658690":"Hopper","658691":"Hopper","658692":"Hopper","658693":"Hopper","658696":"Hopper","658698":"Hopper","658699":"Hopper","658700":"Hopper","658701":"Hopper","658752":"Ice","659200":"update!","659264":"ate!upd","659328":"Invisible Bedrock","659392":"Iron Block","659456":"Iron Bars","659520":"Iron Door","659521":"Iron Door","659522":"Iron Door","659523":"Iron Door","659524":"Iron Door","659525":"Iron Door","659526":"Iron Door","659527":"Iron Door","659528":"Iron Door","659529":"Iron Door","659530":"Iron Door","659531":"Iron Door","659532":"Iron Door","659533":"Iron Door","659534":"Iron Door","659535":"Iron Door","659536":"Iron Door","659537":"Iron Door","659538":"Iron Door","659539":"Iron Door","659540":"Iron Door","659541":"Iron Door","659542":"Iron Door","659543":"Iron Door","659544":"Iron Door","659545":"Iron Door","659546":"Iron Door","659547":"Iron Door","659548":"Iron Door","659549":"Iron Door","659550":"Iron Door","659551":"Iron Door","659648":"Iron Trapdoor","659649":"Iron Trapdoor","659650":"Iron Trapdoor","659651":"Iron Trapdoor","659652":"Iron Trapdoor","659653":"Iron Trapdoor","659654":"Iron Trapdoor","659655":"Iron Trapdoor","659656":"Iron Trapdoor","659657":"Iron Trapdoor","659658":"Iron Trapdoor","659659":"Iron Trapdoor","659660":"Iron Trapdoor","659661":"Iron Trapdoor","659662":"Iron Trapdoor","659663":"Iron Trapdoor","659584":"Iron Ore","659712":"Item Frame","659713":"Item Frame","659714":"Item Frame","659715":"Item Frame","659716":"Item Frame","659717":"Item Frame","659718":"Item Frame","659719":"Item Frame","659776":"Jukebox","660864":"Ladder","660865":"Ladder","660866":"Ladder","660867":"Ladder","660928":"Lantern","660929":"Lantern","660992":"Lapis Lazuli Block","661056":"Lapis Lazuli Ore","661184":"Lava","661185":"Lava","661186":"Lava","661187":"Lava","661188":"Lava","661189":"Lava","661190":"Lava","661191":"Lava","661192":"Lava","661193":"Lava","661194":"Lava","661195":"Lava","661196":"Lava","661197":"Lava","661198":"Lava","661199":"Lava","661200":"Lava","661201":"Lava","661202":"Lava","661203":"Lava","661204":"Lava","661205":"Lava","661206":"Lava","661207":"Lava","661208":"Lava","661209":"Lava","661210":"Lava","661211":"Lava","661212":"Lava","661213":"Lava","661214":"Lava","661215":"Lava","661248":"Lectern","661249":"Lectern","661250":"Lectern","661251":"Lectern","661252":"Lectern","661253":"Lectern","661254":"Lectern","661255":"Lectern","661376":"Lever","661377":"Lever","661378":"Lever","661379":"Lever","661380":"Lever","661381":"Lever","661382":"Lever","661383":"Lever","661384":"Lever","661385":"Lever","661386":"Lever","661387":"Lever","661388":"Lever","661389":"Lever","661390":"Lever","661391":"Lever","661888":"Loom","661889":"Loom","661890":"Loom","661891":"Loom","662016":"Magma Block","662144":"Melon Block","662208":"Melon Stem","662209":"Melon Stem","662210":"Melon Stem","662211":"Melon Stem","662212":"Melon Stem","662213":"Melon Stem","662214":"Melon Stem","662215":"Melon Stem","662336":"Monster Spawner","662976":"Mycelium","663296":"Nether Bricks","667776":"Red Nether Bricks","663040":"Nether Brick Fence","663168":"Nether Brick Stairs","663169":"Nether Brick Stairs","663170":"Nether Brick Stairs","663171":"Nether Brick Stairs","663172":"Nether Brick Stairs","663173":"Nether Brick Stairs","663174":"Nether Brick Stairs","663175":"Nether Brick Stairs","667648":"Red Nether Brick Stairs","667649":"Red Nether Brick Stairs","667650":"Red Nether Brick Stairs","667651":"Red Nether Brick Stairs","667652":"Red Nether Brick Stairs","667653":"Red Nether Brick Stairs","667654":"Red Nether Brick Stairs","667655":"Red Nether Brick Stairs","663360":"Nether Portal","663361":"Nether Portal","663424":"Nether Quartz Ore","663488":"Nether Reactor Core","663616":"Nether Wart Block","663552":"Nether Wart","663553":"Nether Wart","663554":"Nether Wart","663555":"Nether Wart","663680":"Netherrack","663744":"Note Block","664768":"Obsidian","665024":"Packed Ice","665280":"Podzol","665984":"Potato Block","665985":"Potato Block","665986":"Potato Block","665987":"Potato Block","665988":"Potato Block","665989":"Potato Block","665990":"Potato Block","665991":"Potato Block","666048":"Powered Rail","666049":"Powered Rail","666050":"Powered Rail","666051":"Powered Rail","666052":"Powered Rail","666053":"Powered Rail","666056":"Powered Rail","666057":"Powered Rail","666058":"Powered Rail","666059":"Powered Rail","666060":"Powered Rail","666061":"Powered Rail","666112":"Prismarine","647424":"Dark Prismarine","666176":"Prismarine Bricks","666304":"Prismarine Bricks Stairs","666305":"Prismarine Bricks Stairs","666306":"Prismarine Bricks Stairs","666307":"Prismarine Bricks Stairs","666308":"Prismarine Bricks Stairs","666309":"Prismarine Bricks Stairs","666310":"Prismarine Bricks Stairs","666311":"Prismarine Bricks Stairs","647552":"Dark Prismarine Stairs","647553":"Dark Prismarine Stairs","647554":"Dark Prismarine Stairs","647555":"Dark Prismarine Stairs","647556":"Dark Prismarine Stairs","647557":"Dark Prismarine Stairs","647558":"Dark Prismarine Stairs","647559":"Dark Prismarine Stairs","666432":"Prismarine Stairs","666433":"Prismarine Stairs","666434":"Prismarine Stairs","666435":"Prismarine Stairs","666436":"Prismarine Stairs","666437":"Prismarine Stairs","666438":"Prismarine Stairs","666439":"Prismarine Stairs","666560":"Pumpkin","644480":"Carved Pumpkin","644481":"Carved Pumpkin","644482":"Carved Pumpkin","644483":"Carved Pumpkin","661824":"Jack o'Lantern","661825":"Jack o'Lantern","661826":"Jack o'Lantern","661827":"Jack o'Lantern","666624":"Pumpkin Stem","666625":"Pumpkin Stem","666626":"Pumpkin Stem","666627":"Pumpkin Stem","666628":"Pumpkin Stem","666629":"Pumpkin Stem","666630":"Pumpkin Stem","666631":"Pumpkin Stem","666816":"Purpur Block","666880":"Purpur Pillar","666881":"Purpur Pillar","666882":"Purpur Pillar","667008":"Purpur Stairs","667009":"Purpur Stairs","667010":"Purpur Stairs","667011":"Purpur Stairs","667012":"Purpur Stairs","667013":"Purpur Stairs","667014":"Purpur Stairs","667015":"Purpur Stairs","667072":"Quartz Block","644672":"Chiseled Quartz Block","644673":"Chiseled Quartz Block","644674":"Chiseled Quartz Block","667136":"Quartz Pillar","667137":"Quartz Pillar","667138":"Quartz Pillar","669504":"Smooth Quartz Block","667264":"Quartz Stairs","667265":"Quartz Stairs","667266":"Quartz Stairs","667267":"Quartz Stairs","667268":"Quartz Stairs","667269":"Quartz Stairs","667270":"Quartz Stairs","667271":"Quartz Stairs","669632":"Smooth Quartz Stairs","669633":"Smooth Quartz Stairs","669634":"Smooth Quartz Stairs","669635":"Smooth Quartz Stairs","669636":"Smooth Quartz Stairs","669637":"Smooth Quartz Stairs","669638":"Smooth Quartz Stairs","669639":"Smooth Quartz Stairs","667328":"Rail","667329":"Rail","667330":"Rail","667331":"Rail","667332":"Rail","667333":"Rail","667334":"Rail","667335":"Rail","667336":"Rail","667337":"Rail","667456":"Red Mushroom","668288":"Redstone Block","668352":"Redstone Comparator","668353":"Redstone Comparator","668354":"Redstone Comparator","668355":"Redstone Comparator","668356":"Redstone Comparator","668357":"Redstone Comparator","668358":"Redstone Comparator","668359":"Redstone Comparator","668360":"Redstone Comparator","668361":"Redstone Comparator","668362":"Redstone Comparator","668363":"Redstone Comparator","668364":"Redstone Comparator","668365":"Redstone Comparator","668366":"Redstone Comparator","668367":"Redstone Comparator","668416":"Redstone Lamp","668417":"Redstone Lamp","668480":"Redstone Ore","668481":"Redstone Ore","668544":"Redstone Repeater","668545":"Redstone Repeater","668546":"Redstone Repeater","668547":"Redstone Repeater","668548":"Redstone Repeater","668549":"Redstone Repeater","668550":"Redstone Repeater","668551":"Redstone Repeater","668552":"Redstone Repeater","668553":"Redstone Repeater","668554":"Redstone Repeater","668555":"Redstone Repeater","668556":"Redstone Repeater","668557":"Redstone Repeater","668558":"Redstone Repeater","668559":"Redstone Repeater","668560":"Redstone Repeater","668561":"Redstone Repeater","668562":"Redstone Repeater","668563":"Redstone Repeater","668564":"Redstone Repeater","668565":"Redstone Repeater","668566":"Redstone Repeater","668567":"Redstone Repeater","668568":"Redstone Repeater","668569":"Redstone Repeater","668570":"Redstone Repeater","668571":"Redstone Repeater","668572":"Redstone Repeater","668573":"Redstone Repeater","668574":"Redstone Repeater","668575":"Redstone Repeater","668609":"Redstone Torch","668610":"Redstone Torch","668611":"Redstone Torch","668612":"Redstone Torch","668613":"Redstone Torch","668617":"Redstone Torch","668618":"Redstone Torch","668619":"Redstone Torch","668620":"Redstone Torch","668621":"Redstone Torch","668672":"Redstone","668673":"Redstone","668674":"Redstone","668675":"Redstone","668676":"Redstone","668677":"Redstone","668678":"Redstone","668679":"Redstone","668680":"Redstone","668681":"Redstone","668682":"Redstone","668683":"Redstone","668684":"Redstone","668685":"Redstone","668686":"Redstone","668687":"Redstone","668736":"reserved6","668864":"Sand","667840":"Red Sand","669184":"Sea Lantern","669248":"Sea Pickle","669249":"Sea Pickle","669250":"Sea Pickle","669251":"Sea Pickle","669252":"Sea Pickle","669253":"Sea Pickle","669254":"Sea Pickle","669255":"Sea Pickle","662273":"Mob Head","662274":"Mob Head","662275":"Mob Head","662276":"Mob Head","662277":"Mob Head","669376":"Slime Block","670208":"Snow Block","670272":"Snow Layer","670273":"Snow Layer","670274":"Snow Layer","670275":"Snow Layer","670276":"Snow Layer","670277":"Snow Layer","670278":"Snow Layer","670279":"Snow Layer","670336":"Soul Sand","670400":"Sponge","670401":"Sponge","669312":"Shulker Box","671744":"Stone","641216":"Andesite","647936":"Diorite","657792":"Granite","665344":"Polished Andesite","665536":"Polished Diorite","665728":"Polished Granite","672000":"Stone Bricks","662848":"Mossy Stone Bricks","645952":"Cracked Stone Bricks","644864":"Chiseled Stone Bricks","659072":"Infested Stone","659136":"Infested Stone Brick","658880":"Infested Cobblestone","659008":"Infested Mossy Stone Brick","658944":"Infested Cracked Stone Brick","658816":"Infested Chiseled Stone Brick","672256":"Stone Stairs","672257":"Stone Stairs","672258":"Stone Stairs","672259":"Stone Stairs","672260":"Stone Stairs","672261":"Stone Stairs","672262":"Stone Stairs","672263":"Stone Stairs","670080":"Smooth Stone","641344":"Andesite Stairs","641345":"Andesite Stairs","641346":"Andesite Stairs","641347":"Andesite Stairs","641348":"Andesite Stairs","641349":"Andesite Stairs","641350":"Andesite Stairs","641351":"Andesite Stairs","648064":"Diorite Stairs","648065":"Diorite Stairs","648066":"Diorite Stairs","648067":"Diorite Stairs","648068":"Diorite Stairs","648069":"Diorite Stairs","648070":"Diorite Stairs","648071":"Diorite Stairs","657920":"Granite Stairs","657921":"Granite Stairs","657922":"Granite Stairs","657923":"Granite Stairs","657924":"Granite Stairs","657925":"Granite Stairs","657926":"Granite Stairs","657927":"Granite Stairs","665472":"Polished Andesite Stairs","665473":"Polished Andesite Stairs","665474":"Polished Andesite Stairs","665475":"Polished Andesite Stairs","665476":"Polished Andesite Stairs","665477":"Polished Andesite Stairs","665478":"Polished Andesite Stairs","665479":"Polished Andesite Stairs","665664":"Polished Diorite Stairs","665665":"Polished Diorite Stairs","665666":"Polished Diorite Stairs","665667":"Polished Diorite Stairs","665668":"Polished Diorite Stairs","665669":"Polished Diorite Stairs","665670":"Polished Diorite Stairs","665671":"Polished Diorite Stairs","665856":"Polished Granite Stairs","665857":"Polished Granite Stairs","665858":"Polished Granite Stairs","665859":"Polished Granite Stairs","665860":"Polished Granite Stairs","665861":"Polished Granite Stairs","665862":"Polished Granite Stairs","665863":"Polished Granite Stairs","671872":"Stone Brick Stairs","671873":"Stone Brick Stairs","671874":"Stone Brick Stairs","671875":"Stone Brick Stairs","671876":"Stone Brick Stairs","671877":"Stone Brick Stairs","671878":"Stone Brick Stairs","671879":"Stone Brick Stairs","662720":"Mossy Stone Brick Stairs","662721":"Mossy Stone Brick Stairs","662722":"Mossy Stone Brick Stairs","662723":"Mossy Stone Brick Stairs","662724":"Mossy Stone Brick Stairs","662725":"Mossy Stone Brick Stairs","662726":"Mossy Stone Brick Stairs","662727":"Mossy Stone Brick Stairs","672064":"Stone Button","672065":"Stone Button","672066":"Stone Button","672067":"Stone Button","672068":"Stone Button","672069":"Stone Button","672072":"Stone Button","672073":"Stone Button","672074":"Stone Button","672075":"Stone Button","672076":"Stone Button","672077":"Stone Button","672320":"Stonecutter","672321":"Stonecutter","672322":"Stonecutter","672323":"Stonecutter","672128":"Stone Pressure Plate","672129":"Stone Pressure Plate","643776":"Brick Slab","643777":"Brick Slab","643778":"Brick Slab","645184":"Cobblestone Slab","645185":"Cobblestone Slab","645186":"Cobblestone Slab","656896":"Fake Wooden Slab","656897":"Fake Wooden Slab","656898":"Fake Wooden Slab","663104":"Nether Brick Slab","663105":"Nether Brick Slab","663106":"Nether Brick Slab","667200":"Quartz Slab","667201":"Quartz Slab","667202":"Quartz Slab","668992":"Sandstone Slab","668993":"Sandstone Slab","668994":"Sandstone Slab","670144":"Smooth Stone Slab","670145":"Smooth Stone Slab","670146":"Smooth Stone Slab","671808":"Stone Brick Slab","671809":"Stone Brick Slab","671810":"Stone Brick Slab","647488":"Dark Prismarine Slab","647489":"Dark Prismarine Slab","647490":"Dark Prismarine Slab","662464":"Mossy Cobblestone Slab","662465":"Mossy Cobblestone Slab","662466":"Mossy Cobblestone Slab","666368":"Prismarine Slab","666369":"Prismarine Slab","666370":"Prismarine Slab","666240":"Prismarine Bricks Slab","666241":"Prismarine Bricks Slab","666242":"Prismarine Bricks Slab","666944":"Purpur Slab","666945":"Purpur Slab","666946":"Purpur Slab","667584":"Red Nether Brick Slab","667585":"Red Nether Brick Slab","667586":"Red Nether Brick Slab","667968":"Red Sandstone Slab","667969":"Red Sandstone Slab","667970":"Red Sandstone Slab","669952":"Smooth Sandstone Slab","669953":"Smooth Sandstone Slab","669954":"Smooth Sandstone Slab","641280":"Andesite Slab","641281":"Andesite Slab","641282":"Andesite Slab","648000":"Diorite Slab","648001":"Diorite Slab","648002":"Diorite Slab","656576":"End Stone Brick Slab","656577":"End Stone Brick Slab","656578":"End Stone Brick Slab","657856":"Granite Slab","657857":"Granite Slab","657858":"Granite Slab","665408":"Polished Andesite Slab","665409":"Polished Andesite Slab","665410":"Polished Andesite Slab","665600":"Polished Diorite Slab","665601":"Polished Diorite Slab","665602":"Polished Diorite Slab","665792":"Polished Granite Slab","665793":"Polished Granite Slab","665794":"Polished Granite Slab","669760":"Smooth Red Sandstone Slab","669761":"Smooth Red Sandstone Slab","669762":"Smooth Red Sandstone Slab","646144":"Cut Red Sandstone Slab","646145":"Cut Red Sandstone Slab","646146":"Cut Red Sandstone Slab","646272":"Cut Sandstone Slab","646273":"Cut Sandstone Slab","646274":"Cut Sandstone Slab","662656":"Mossy Stone Brick Slab","662657":"Mossy Stone Brick Slab","662658":"Mossy Stone Brick Slab","669568":"Smooth Quartz Slab","669569":"Smooth Quartz Slab","669570":"Smooth Quartz Slab","672192":"Stone Slab","672193":"Stone Slab","672194":"Stone Slab","661312":"Legacy Stonecutter","673152":"Sugarcane","673153":"Sugarcane","673154":"Sugarcane","673155":"Sugarcane","673156":"Sugarcane","673157":"Sugarcane","673158":"Sugarcane","673159":"Sugarcane","673160":"Sugarcane","673161":"Sugarcane","673162":"Sugarcane","673163":"Sugarcane","673164":"Sugarcane","673165":"Sugarcane","673166":"Sugarcane","673167":"Sugarcane","673280":"Sweet Berry Bush","673281":"Sweet Berry Bush","673282":"Sweet Berry Bush","673283":"Sweet Berry Bush","673408":"TNT","673409":"TNT","673410":"TNT","673411":"TNT","657024":"Fern","673344":"Tall Grass","643521":"Blue Torch","643522":"Blue Torch","643523":"Blue Torch","643524":"Blue Torch","643525":"Blue Torch","666753":"Purple Torch","666754":"Purple Torch","666755":"Purple Torch","666756":"Purple Torch","666757":"Purple Torch","668161":"Red Torch","668162":"Red Torch","668163":"Red Torch","668164":"Red Torch","668165":"Red Torch","658369":"Green Torch","658370":"Green Torch","658371":"Green Torch","658372":"Green Torch","658373":"Green Torch","673473":"Torch","673474":"Torch","673475":"Torch","673476":"Torch","673477":"Torch","673536":"Trapped Chest","673537":"Trapped Chest","673538":"Trapped Chest","673539":"Trapped Chest","673600":"Tripwire","673601":"Tripwire","673602":"Tripwire","673603":"Tripwire","673604":"Tripwire","673605":"Tripwire","673606":"Tripwire","673607":"Tripwire","673608":"Tripwire","673609":"Tripwire","673610":"Tripwire","673611":"Tripwire","673612":"Tripwire","673613":"Tripwire","673614":"Tripwire","673615":"Tripwire","673664":"Tripwire Hook","673665":"Tripwire Hook","673666":"Tripwire Hook","673667":"Tripwire Hook","673668":"Tripwire Hook","673669":"Tripwire Hook","673670":"Tripwire Hook","673671":"Tripwire Hook","673672":"Tripwire Hook","673673":"Tripwire Hook","673674":"Tripwire Hook","673675":"Tripwire Hook","673676":"Tripwire Hook","673677":"Tripwire Hook","673678":"Tripwire Hook","673679":"Tripwire Hook","673729":"Underwater Torch","673730":"Underwater Torch","673731":"Underwater Torch","673732":"Underwater Torch","673733":"Underwater Torch","673792":"Vines","673793":"Vines","673794":"Vines","673795":"Vines","673796":"Vines","673797":"Vines","673798":"Vines","673799":"Vines","673800":"Vines","673801":"Vines","673802":"Vines","673803":"Vines","673804":"Vines","673805":"Vines","673806":"Vines","673807":"Vines","673984":"Water","673985":"Water","673986":"Water","673987":"Water","673988":"Water","673989":"Water","673990":"Water","673991":"Water","673992":"Water","673993":"Water","673994":"Water","673995":"Water","673996":"Water","673997":"Water","673998":"Water","673999":"Water","674000":"Water","674001":"Water","674002":"Water","674003":"Water","674004":"Water","674005":"Water","674006":"Water","674007":"Water","674008":"Water","674009":"Water","674010":"Water","674011":"Water","674012":"Water","674013":"Water","674014":"Water","674015":"Water","661696":"Lily Pad","674048":"Weighted Pressure Plate Heavy","674049":"Weighted Pressure Plate Heavy","674050":"Weighted Pressure Plate Heavy","674051":"Weighted Pressure Plate Heavy","674052":"Weighted Pressure Plate Heavy","674053":"Weighted Pressure Plate Heavy","674054":"Weighted Pressure Plate Heavy","674055":"Weighted Pressure Plate Heavy","674056":"Weighted Pressure Plate Heavy","674057":"Weighted Pressure Plate Heavy","674058":"Weighted Pressure Plate Heavy","674059":"Weighted Pressure Plate Heavy","674060":"Weighted Pressure Plate Heavy","674061":"Weighted Pressure Plate Heavy","674062":"Weighted Pressure Plate Heavy","674063":"Weighted Pressure Plate Heavy","674112":"Weighted Pressure Plate Light","674113":"Weighted Pressure Plate Light","674114":"Weighted Pressure Plate Light","674115":"Weighted Pressure Plate Light","674116":"Weighted Pressure Plate Light","674117":"Weighted Pressure Plate Light","674118":"Weighted Pressure Plate Light","674119":"Weighted Pressure Plate Light","674120":"Weighted Pressure Plate Light","674121":"Weighted Pressure Plate Light","674122":"Weighted Pressure Plate Light","674123":"Weighted Pressure Plate Light","674124":"Weighted Pressure Plate Light","674125":"Weighted Pressure Plate Light","674126":"Weighted Pressure Plate Light","674127":"Weighted Pressure Plate Light","674176":"Wheat Block","674177":"Wheat Block","674178":"Wheat Block","674179":"Wheat Block","674180":"Wheat Block","674181":"Wheat Block","674182":"Wheat Block","674183":"Wheat Block","664192":"Oak Planks","664320":"Oak Sapling","664321":"Oak Sapling","663936":"Oak Fence","664448":"Oak Slab","664449":"Oak Slab","664450":"Oak Slab","664064":"Oak Leaves","664065":"Oak Leaves","664066":"Oak Leaves","664067":"Oak Leaves","664128":"Oak Log","664129":"Oak Log","664130":"Oak Log","672896":"Stripped Oak Log","672897":"Stripped Oak Log","672898":"Stripped Oak Log","664704":"Oak Wood","672960":"Stripped Oak Wood","664000":"Oak Fence Gate","664001":"Oak Fence Gate","664002":"Oak Fence Gate","664003":"Oak Fence Gate","664004":"Oak Fence Gate","664005":"Oak Fence Gate","664006":"Oak Fence Gate","664007":"Oak Fence Gate","664008":"Oak Fence Gate","664009":"Oak Fence Gate","664010":"Oak Fence Gate","664011":"Oak Fence Gate","664012":"Oak Fence Gate","664013":"Oak Fence Gate","664014":"Oak Fence Gate","664015":"Oak Fence Gate","664512":"Oak Stairs","664513":"Oak Stairs","664514":"Oak Stairs","664515":"Oak Stairs","664516":"Oak Stairs","664517":"Oak Stairs","664518":"Oak Stairs","664519":"Oak Stairs","663872":"Oak Door","663873":"Oak Door","663874":"Oak Door","663875":"Oak Door","663876":"Oak Door","663877":"Oak Door","663878":"Oak Door","663879":"Oak Door","663880":"Oak Door","663881":"Oak Door","663882":"Oak Door","663883":"Oak Door","663884":"Oak Door","663885":"Oak Door","663886":"Oak Door","663887":"Oak Door","663888":"Oak Door","663889":"Oak Door","663890":"Oak Door","663891":"Oak Door","663892":"Oak Door","663893":"Oak Door","663894":"Oak Door","663895":"Oak Door","663896":"Oak Door","663897":"Oak Door","663898":"Oak Door","663899":"Oak Door","663900":"Oak Door","663901":"Oak Door","663902":"Oak Door","663903":"Oak Door","663808":"Oak Button","663809":"Oak Button","663810":"Oak Button","663811":"Oak Button","663812":"Oak Button","663813":"Oak Button","663816":"Oak Button","663817":"Oak Button","663818":"Oak Button","663819":"Oak Button","663820":"Oak Button","663821":"Oak Button","664256":"Oak Pressure Plate","664257":"Oak Pressure Plate","664576":"Oak Trapdoor","664577":"Oak Trapdoor","664578":"Oak Trapdoor","664579":"Oak Trapdoor","664580":"Oak Trapdoor","664581":"Oak Trapdoor","664582":"Oak Trapdoor","664583":"Oak Trapdoor","664584":"Oak Trapdoor","664585":"Oak Trapdoor","664586":"Oak Trapdoor","664587":"Oak Trapdoor","664588":"Oak Trapdoor","664589":"Oak Trapdoor","664590":"Oak Trapdoor","664591":"Oak Trapdoor","664384":"Oak Sign","664385":"Oak Sign","664386":"Oak Sign","664387":"Oak Sign","664388":"Oak Sign","664389":"Oak Sign","664390":"Oak Sign","664391":"Oak Sign","664392":"Oak Sign","664393":"Oak Sign","664394":"Oak Sign","664395":"Oak Sign","664396":"Oak Sign","664397":"Oak Sign","664398":"Oak Sign","664399":"Oak Sign","664640":"Oak Wall Sign","664641":"Oak Wall Sign","664642":"Oak Wall Sign","664643":"Oak Wall Sign","670848":"Spruce Planks","670976":"Spruce Sapling","670977":"Spruce Sapling","670592":"Spruce Fence","671104":"Spruce Slab","671105":"Spruce Slab","671106":"Spruce Slab","670720":"Spruce Leaves","670721":"Spruce Leaves","670722":"Spruce Leaves","670723":"Spruce Leaves","670784":"Spruce Log","670785":"Spruce Log","670786":"Spruce Log","673024":"Stripped Spruce Log","673025":"Stripped Spruce Log","673026":"Stripped Spruce Log","671360":"Spruce Wood","673088":"Stripped Spruce Wood","670656":"Spruce Fence Gate","670657":"Spruce Fence Gate","670658":"Spruce Fence Gate","670659":"Spruce Fence Gate","670660":"Spruce Fence Gate","670661":"Spruce Fence Gate","670662":"Spruce Fence Gate","670663":"Spruce Fence Gate","670664":"Spruce Fence Gate","670665":"Spruce Fence Gate","670666":"Spruce Fence Gate","670667":"Spruce Fence Gate","670668":"Spruce Fence Gate","670669":"Spruce Fence Gate","670670":"Spruce Fence Gate","670671":"Spruce Fence Gate","671168":"Spruce Stairs","671169":"Spruce Stairs","671170":"Spruce Stairs","671171":"Spruce Stairs","671172":"Spruce Stairs","671173":"Spruce Stairs","671174":"Spruce Stairs","671175":"Spruce Stairs","670528":"Spruce Door","670529":"Spruce Door","670530":"Spruce Door","670531":"Spruce Door","670532":"Spruce Door","670533":"Spruce Door","670534":"Spruce Door","670535":"Spruce Door","670536":"Spruce Door","670537":"Spruce Door","670538":"Spruce Door","670539":"Spruce Door","670540":"Spruce Door","670541":"Spruce Door","670542":"Spruce Door","670543":"Spruce Door","670544":"Spruce Door","670545":"Spruce Door","670546":"Spruce Door","670547":"Spruce Door","670548":"Spruce Door","670549":"Spruce Door","670550":"Spruce Door","670551":"Spruce Door","670552":"Spruce Door","670553":"Spruce Door","670554":"Spruce Door","670555":"Spruce Door","670556":"Spruce Door","670557":"Spruce Door","670558":"Spruce Door","670559":"Spruce Door","670464":"Spruce Button","670465":"Spruce Button","670466":"Spruce Button","670467":"Spruce Button","670468":"Spruce Button","670469":"Spruce Button","670472":"Spruce Button","670473":"Spruce Button","670474":"Spruce Button","670475":"Spruce Button","670476":"Spruce Button","670477":"Spruce Button","670912":"Spruce Pressure Plate","670913":"Spruce Pressure Plate","671232":"Spruce Trapdoor","671233":"Spruce Trapdoor","671234":"Spruce Trapdoor","671235":"Spruce Trapdoor","671236":"Spruce Trapdoor","671237":"Spruce Trapdoor","671238":"Spruce Trapdoor","671239":"Spruce Trapdoor","671240":"Spruce Trapdoor","671241":"Spruce Trapdoor","671242":"Spruce Trapdoor","671243":"Spruce Trapdoor","671244":"Spruce Trapdoor","671245":"Spruce Trapdoor","671246":"Spruce Trapdoor","671247":"Spruce Trapdoor","671040":"Spruce Sign","671041":"Spruce Sign","671042":"Spruce Sign","671043":"Spruce Sign","671044":"Spruce Sign","671045":"Spruce Sign","671046":"Spruce Sign","671047":"Spruce Sign","671048":"Spruce Sign","671049":"Spruce Sign","671050":"Spruce Sign","671051":"Spruce Sign","671052":"Spruce Sign","671053":"Spruce Sign","671054":"Spruce Sign","671055":"Spruce Sign","671296":"Spruce Wall Sign","671297":"Spruce Wall Sign","671298":"Spruce Wall Sign","671299":"Spruce Wall Sign","642624":"Birch Planks","642752":"Birch Sapling","642753":"Birch Sapling","642368":"Birch Fence","642880":"Birch Slab","642881":"Birch Slab","642882":"Birch Slab","642496":"Birch Leaves","642497":"Birch Leaves","642498":"Birch Leaves","642499":"Birch Leaves","642560":"Birch Log","642561":"Birch Log","642562":"Birch Log","672512":"Stripped Birch Log","672513":"Stripped Birch Log","672514":"Stripped Birch Log","643136":"Birch Wood","672576":"Stripped Birch Wood","642432":"Birch Fence Gate","642433":"Birch Fence Gate","642434":"Birch Fence Gate","642435":"Birch Fence Gate","642436":"Birch Fence Gate","642437":"Birch Fence Gate","642438":"Birch Fence Gate","642439":"Birch Fence Gate","642440":"Birch Fence Gate","642441":"Birch Fence Gate","642442":"Birch Fence Gate","642443":"Birch Fence Gate","642444":"Birch Fence Gate","642445":"Birch Fence Gate","642446":"Birch Fence Gate","642447":"Birch Fence Gate","642944":"Birch Stairs","642945":"Birch Stairs","642946":"Birch Stairs","642947":"Birch Stairs","642948":"Birch Stairs","642949":"Birch Stairs","642950":"Birch Stairs","642951":"Birch Stairs","642304":"Birch Door","642305":"Birch Door","642306":"Birch Door","642307":"Birch Door","642308":"Birch Door","642309":"Birch Door","642310":"Birch Door","642311":"Birch Door","642312":"Birch Door","642313":"Birch Door","642314":"Birch Door","642315":"Birch Door","642316":"Birch Door","642317":"Birch Door","642318":"Birch Door","642319":"Birch Door","642320":"Birch Door","642321":"Birch Door","642322":"Birch Door","642323":"Birch Door","642324":"Birch Door","642325":"Birch Door","642326":"Birch Door","642327":"Birch Door","642328":"Birch Door","642329":"Birch Door","642330":"Birch Door","642331":"Birch Door","642332":"Birch Door","642333":"Birch Door","642334":"Birch Door","642335":"Birch Door","642240":"Birch Button","642241":"Birch Button","642242":"Birch Button","642243":"Birch Button","642244":"Birch Button","642245":"Birch Button","642248":"Birch Button","642249":"Birch Button","642250":"Birch Button","642251":"Birch Button","642252":"Birch Button","642253":"Birch Button","642688":"Birch Pressure Plate","642689":"Birch Pressure Plate","643008":"Birch Trapdoor","643009":"Birch Trapdoor","643010":"Birch Trapdoor","643011":"Birch Trapdoor","643012":"Birch Trapdoor","643013":"Birch Trapdoor","643014":"Birch Trapdoor","643015":"Birch Trapdoor","643016":"Birch Trapdoor","643017":"Birch Trapdoor","643018":"Birch Trapdoor","643019":"Birch Trapdoor","643020":"Birch Trapdoor","643021":"Birch Trapdoor","643022":"Birch Trapdoor","643023":"Birch Trapdoor","642816":"Birch Sign","642817":"Birch Sign","642818":"Birch Sign","642819":"Birch Sign","642820":"Birch Sign","642821":"Birch Sign","642822":"Birch Sign","642823":"Birch Sign","642824":"Birch Sign","642825":"Birch Sign","642826":"Birch Sign","642827":"Birch Sign","642828":"Birch Sign","642829":"Birch Sign","642830":"Birch Sign","642831":"Birch Sign","643072":"Birch Wall Sign","643073":"Birch Wall Sign","643074":"Birch Wall Sign","643075":"Birch Wall Sign","660224":"Jungle Planks","660352":"Jungle Sapling","660353":"Jungle Sapling","659968":"Jungle Fence","660480":"Jungle Slab","660481":"Jungle Slab","660482":"Jungle Slab","660096":"Jungle Leaves","660097":"Jungle Leaves","660098":"Jungle Leaves","660099":"Jungle Leaves","660160":"Jungle Log","660161":"Jungle Log","660162":"Jungle Log","672768":"Stripped Jungle Log","672769":"Stripped Jungle Log","672770":"Stripped Jungle Log","660736":"Jungle Wood","672832":"Stripped Jungle Wood","660032":"Jungle Fence Gate","660033":"Jungle Fence Gate","660034":"Jungle Fence Gate","660035":"Jungle Fence Gate","660036":"Jungle Fence Gate","660037":"Jungle Fence Gate","660038":"Jungle Fence Gate","660039":"Jungle Fence Gate","660040":"Jungle Fence Gate","660041":"Jungle Fence Gate","660042":"Jungle Fence Gate","660043":"Jungle Fence Gate","660044":"Jungle Fence Gate","660045":"Jungle Fence Gate","660046":"Jungle Fence Gate","660047":"Jungle Fence Gate","660544":"Jungle Stairs","660545":"Jungle Stairs","660546":"Jungle Stairs","660547":"Jungle Stairs","660548":"Jungle Stairs","660549":"Jungle Stairs","660550":"Jungle Stairs","660551":"Jungle Stairs","659904":"Jungle Door","659905":"Jungle Door","659906":"Jungle Door","659907":"Jungle Door","659908":"Jungle Door","659909":"Jungle Door","659910":"Jungle Door","659911":"Jungle Door","659912":"Jungle Door","659913":"Jungle Door","659914":"Jungle Door","659915":"Jungle Door","659916":"Jungle Door","659917":"Jungle Door","659918":"Jungle Door","659919":"Jungle Door","659920":"Jungle Door","659921":"Jungle Door","659922":"Jungle Door","659923":"Jungle Door","659924":"Jungle Door","659925":"Jungle Door","659926":"Jungle Door","659927":"Jungle Door","659928":"Jungle Door","659929":"Jungle Door","659930":"Jungle Door","659931":"Jungle Door","659932":"Jungle Door","659933":"Jungle Door","659934":"Jungle Door","659935":"Jungle Door","659840":"Jungle Button","659841":"Jungle Button","659842":"Jungle Button","659843":"Jungle Button","659844":"Jungle Button","659845":"Jungle Button","659848":"Jungle Button","659849":"Jungle Button","659850":"Jungle Button","659851":"Jungle Button","659852":"Jungle Button","659853":"Jungle Button","660288":"Jungle Pressure Plate","660289":"Jungle Pressure Plate","660608":"Jungle Trapdoor","660609":"Jungle Trapdoor","660610":"Jungle Trapdoor","660611":"Jungle Trapdoor","660612":"Jungle Trapdoor","660613":"Jungle Trapdoor","660614":"Jungle Trapdoor","660615":"Jungle Trapdoor","660616":"Jungle Trapdoor","660617":"Jungle Trapdoor","660618":"Jungle Trapdoor","660619":"Jungle Trapdoor","660620":"Jungle Trapdoor","660621":"Jungle Trapdoor","660622":"Jungle Trapdoor","660623":"Jungle Trapdoor","660416":"Jungle Sign","660417":"Jungle Sign","660418":"Jungle Sign","660419":"Jungle Sign","660420":"Jungle Sign","660421":"Jungle Sign","660422":"Jungle Sign","660423":"Jungle Sign","660424":"Jungle Sign","660425":"Jungle Sign","660426":"Jungle Sign","660427":"Jungle Sign","660428":"Jungle Sign","660429":"Jungle Sign","660430":"Jungle Sign","660431":"Jungle Sign","660672":"Jungle Wall Sign","660673":"Jungle Wall Sign","660674":"Jungle Wall Sign","660675":"Jungle Wall Sign","640448":"Acacia Planks","640576":"Acacia Sapling","640577":"Acacia Sapling","640192":"Acacia Fence","640704":"Acacia Slab","640705":"Acacia Slab","640706":"Acacia Slab","640320":"Acacia Leaves","640321":"Acacia Leaves","640322":"Acacia Leaves","640323":"Acacia Leaves","640384":"Acacia Log","640385":"Acacia Log","640386":"Acacia Log","672384":"Stripped Acacia Log","672385":"Stripped Acacia Log","672386":"Stripped Acacia Log","640960":"Acacia Wood","672448":"Stripped Acacia Wood","640256":"Acacia Fence Gate","640257":"Acacia Fence Gate","640258":"Acacia Fence Gate","640259":"Acacia Fence Gate","640260":"Acacia Fence Gate","640261":"Acacia Fence Gate","640262":"Acacia Fence Gate","640263":"Acacia Fence Gate","640264":"Acacia Fence Gate","640265":"Acacia Fence Gate","640266":"Acacia Fence Gate","640267":"Acacia Fence Gate","640268":"Acacia Fence Gate","640269":"Acacia Fence Gate","640270":"Acacia Fence Gate","640271":"Acacia Fence Gate","640768":"Acacia Stairs","640769":"Acacia Stairs","640770":"Acacia Stairs","640771":"Acacia Stairs","640772":"Acacia Stairs","640773":"Acacia Stairs","640774":"Acacia Stairs","640775":"Acacia Stairs","640128":"Acacia Door","640129":"Acacia Door","640130":"Acacia Door","640131":"Acacia Door","640132":"Acacia Door","640133":"Acacia Door","640134":"Acacia Door","640135":"Acacia Door","640136":"Acacia Door","640137":"Acacia Door","640138":"Acacia Door","640139":"Acacia Door","640140":"Acacia Door","640141":"Acacia Door","640142":"Acacia Door","640143":"Acacia Door","640144":"Acacia Door","640145":"Acacia Door","640146":"Acacia Door","640147":"Acacia Door","640148":"Acacia Door","640149":"Acacia Door","640150":"Acacia Door","640151":"Acacia Door","640152":"Acacia Door","640153":"Acacia Door","640154":"Acacia Door","640155":"Acacia Door","640156":"Acacia Door","640157":"Acacia Door","640158":"Acacia Door","640159":"Acacia Door","640064":"Acacia Button","640065":"Acacia Button","640066":"Acacia Button","640067":"Acacia Button","640068":"Acacia Button","640069":"Acacia Button","640072":"Acacia Button","640073":"Acacia Button","640074":"Acacia Button","640075":"Acacia Button","640076":"Acacia Button","640077":"Acacia Button","640512":"Acacia Pressure Plate","640513":"Acacia Pressure Plate","640832":"Acacia Trapdoor","640833":"Acacia Trapdoor","640834":"Acacia Trapdoor","640835":"Acacia Trapdoor","640836":"Acacia Trapdoor","640837":"Acacia Trapdoor","640838":"Acacia Trapdoor","640839":"Acacia Trapdoor","640840":"Acacia Trapdoor","640841":"Acacia Trapdoor","640842":"Acacia Trapdoor","640843":"Acacia Trapdoor","640844":"Acacia Trapdoor","640845":"Acacia Trapdoor","640846":"Acacia Trapdoor","640847":"Acacia Trapdoor","640640":"Acacia Sign","640641":"Acacia Sign","640642":"Acacia Sign","640643":"Acacia Sign","640644":"Acacia Sign","640645":"Acacia Sign","640646":"Acacia Sign","640647":"Acacia Sign","640648":"Acacia Sign","640649":"Acacia Sign","640650":"Acacia Sign","640651":"Acacia Sign","640652":"Acacia Sign","640653":"Acacia Sign","640654":"Acacia Sign","640655":"Acacia Sign","640896":"Acacia Wall Sign","640897":"Acacia Wall Sign","640898":"Acacia Wall Sign","640899":"Acacia Wall Sign","646848":"Dark Oak Planks","646976":"Dark Oak Sapling","646977":"Dark Oak Sapling","646592":"Dark Oak Fence","647104":"Dark Oak Slab","647105":"Dark Oak Slab","647106":"Dark Oak Slab","646720":"Dark Oak Leaves","646721":"Dark Oak Leaves","646722":"Dark Oak Leaves","646723":"Dark Oak Leaves","646784":"Dark Oak Log","646785":"Dark Oak Log","646786":"Dark Oak Log","672640":"Stripped Dark Oak Log","672641":"Stripped Dark Oak Log","672642":"Stripped Dark Oak Log","647360":"Dark Oak Wood","672704":"Stripped Dark Oak Wood","646656":"Dark Oak Fence Gate","646657":"Dark Oak Fence Gate","646658":"Dark Oak Fence Gate","646659":"Dark Oak Fence Gate","646660":"Dark Oak Fence Gate","646661":"Dark Oak Fence Gate","646662":"Dark Oak Fence Gate","646663":"Dark Oak Fence Gate","646664":"Dark Oak Fence Gate","646665":"Dark Oak Fence Gate","646666":"Dark Oak Fence Gate","646667":"Dark Oak Fence Gate","646668":"Dark Oak Fence Gate","646669":"Dark Oak Fence Gate","646670":"Dark Oak Fence Gate","646671":"Dark Oak Fence Gate","647168":"Dark Oak Stairs","647169":"Dark Oak Stairs","647170":"Dark Oak Stairs","647171":"Dark Oak Stairs","647172":"Dark Oak Stairs","647173":"Dark Oak Stairs","647174":"Dark Oak Stairs","647175":"Dark Oak Stairs","646528":"Dark Oak Door","646529":"Dark Oak Door","646530":"Dark Oak Door","646531":"Dark Oak Door","646532":"Dark Oak Door","646533":"Dark Oak Door","646534":"Dark Oak Door","646535":"Dark Oak Door","646536":"Dark Oak Door","646537":"Dark Oak Door","646538":"Dark Oak Door","646539":"Dark Oak Door","646540":"Dark Oak Door","646541":"Dark Oak Door","646542":"Dark Oak Door","646543":"Dark Oak Door","646544":"Dark Oak Door","646545":"Dark Oak Door","646546":"Dark Oak Door","646547":"Dark Oak Door","646548":"Dark Oak Door","646549":"Dark Oak Door","646550":"Dark Oak Door","646551":"Dark Oak Door","646552":"Dark Oak Door","646553":"Dark Oak Door","646554":"Dark Oak Door","646555":"Dark Oak Door","646556":"Dark Oak Door","646557":"Dark Oak Door","646558":"Dark Oak Door","646559":"Dark Oak Door","646464":"Dark Oak Button","646465":"Dark Oak Button","646466":"Dark Oak Button","646467":"Dark Oak Button","646468":"Dark Oak Button","646469":"Dark Oak Button","646472":"Dark Oak Button","646473":"Dark Oak Button","646474":"Dark Oak Button","646475":"Dark Oak Button","646476":"Dark Oak Button","646477":"Dark Oak Button","646912":"Dark Oak Pressure Plate","646913":"Dark Oak Pressure Plate","647232":"Dark Oak Trapdoor","647233":"Dark Oak Trapdoor","647234":"Dark Oak Trapdoor","647235":"Dark Oak Trapdoor","647236":"Dark Oak Trapdoor","647237":"Dark Oak Trapdoor","647238":"Dark Oak Trapdoor","647239":"Dark Oak Trapdoor","647240":"Dark Oak Trapdoor","647241":"Dark Oak Trapdoor","647242":"Dark Oak Trapdoor","647243":"Dark Oak Trapdoor","647244":"Dark Oak Trapdoor","647245":"Dark Oak Trapdoor","647246":"Dark Oak Trapdoor","647247":"Dark Oak Trapdoor","647040":"Dark Oak Sign","647041":"Dark Oak Sign","647042":"Dark Oak Sign","647043":"Dark Oak Sign","647044":"Dark Oak Sign","647045":"Dark Oak Sign","647046":"Dark Oak Sign","647047":"Dark Oak Sign","647048":"Dark Oak Sign","647049":"Dark Oak Sign","647050":"Dark Oak Sign","647051":"Dark Oak Sign","647052":"Dark Oak Sign","647053":"Dark Oak Sign","647054":"Dark Oak Sign","647055":"Dark Oak Sign","647296":"Dark Oak Wall Sign","647297":"Dark Oak Wall Sign","647298":"Dark Oak Wall Sign","647299":"Dark Oak Wall Sign","668032":"Red Sandstone Stairs","668033":"Red Sandstone Stairs","668034":"Red Sandstone Stairs","668035":"Red Sandstone Stairs","668036":"Red Sandstone Stairs","668037":"Red Sandstone Stairs","668038":"Red Sandstone Stairs","668039":"Red Sandstone Stairs","669824":"Smooth Red Sandstone Stairs","669825":"Smooth Red Sandstone Stairs","669826":"Smooth Red Sandstone Stairs","669827":"Smooth Red Sandstone Stairs","669828":"Smooth Red Sandstone Stairs","669829":"Smooth Red Sandstone Stairs","669830":"Smooth Red Sandstone Stairs","669831":"Smooth Red Sandstone Stairs","667904":"Red Sandstone","644736":"Chiseled Red Sandstone","646080":"Cut Red Sandstone","669696":"Smooth Red Sandstone","669056":"Sandstone Stairs","669057":"Sandstone Stairs","669058":"Sandstone Stairs","669059":"Sandstone Stairs","669060":"Sandstone Stairs","669061":"Sandstone Stairs","669062":"Sandstone Stairs","669063":"Sandstone Stairs","670016":"Smooth Sandstone Stairs","670017":"Smooth Sandstone Stairs","670018":"Smooth Sandstone Stairs","670019":"Smooth Sandstone Stairs","670020":"Smooth Sandstone Stairs","670021":"Smooth Sandstone Stairs","670022":"Smooth Sandstone Stairs","670023":"Smooth Sandstone Stairs","668928":"Sandstone","644800":"Chiseled Sandstone","646208":"Cut Sandstone","669888":"Smooth Sandstone","674240":"White Glazed Terracotta","674241":"White Glazed Terracotta","674242":"White Glazed Terracotta","674243":"White Glazed Terracotta","664832":"Orange Glazed Terracotta","664833":"Orange Glazed Terracotta","664834":"Orange Glazed Terracotta","664835":"Orange Glazed Terracotta","661952":"Magenta Glazed Terracotta","661953":"Magenta Glazed Terracotta","661954":"Magenta Glazed Terracotta","661955":"Magenta Glazed Terracotta","661440":"Light Blue Glazed Terracotta","661441":"Light Blue Glazed Terracotta","661442":"Light Blue Glazed Terracotta","661443":"Light Blue Glazed Terracotta","674432":"Yellow Glazed Terracotta","674433":"Yellow Glazed Terracotta","674434":"Yellow Glazed Terracotta","674435":"Yellow Glazed Terracotta","661760":"Lime Glazed Terracotta","661761":"Lime Glazed Terracotta","661762":"Lime Glazed Terracotta","661763":"Lime Glazed Terracotta","665152":"Pink Glazed Terracotta","665153":"Pink Glazed Terracotta","665154":"Pink Glazed Terracotta","665155":"Pink Glazed Terracotta","658240":"Gray Glazed Terracotta","658241":"Gray Glazed Terracotta","658242":"Gray Glazed Terracotta","658243":"Gray Glazed Terracotta","661504":"Light Gray Glazed Terracotta","661505":"Light Gray Glazed Terracotta","661506":"Light Gray Glazed Terracotta","661507":"Light Gray Glazed Terracotta","646336":"Cyan Glazed Terracotta","646337":"Cyan Glazed Terracotta","646338":"Cyan Glazed Terracotta","646339":"Cyan Glazed Terracotta","666688":"Purple Glazed Terracotta","666689":"Purple Glazed Terracotta","666690":"Purple Glazed Terracotta","666691":"Purple Glazed Terracotta","643328":"Blue Glazed Terracotta","643329":"Blue Glazed Terracotta","643330":"Blue Glazed Terracotta","643331":"Blue Glazed Terracotta","644032":"Brown Glazed Terracotta","644033":"Brown Glazed Terracotta","644034":"Brown Glazed Terracotta","644035":"Brown Glazed Terracotta","658304":"Green Glazed Terracotta","658305":"Green Glazed Terracotta","658306":"Green Glazed Terracotta","658307":"Green Glazed Terracotta","667392":"Red Glazed Terracotta","667393":"Red Glazed Terracotta","667394":"Red Glazed Terracotta","667395":"Red Glazed Terracotta","643200":"Black Glazed Terracotta","643201":"Black Glazed Terracotta","643202":"Black Glazed Terracotta","643203":"Black Glazed Terracotta","648448":"Dyed Shulker Box","648449":"Dyed Shulker Box","648450":"Dyed Shulker Box","648451":"Dyed Shulker Box","648452":"Dyed Shulker Box","648453":"Dyed Shulker Box","648454":"Dyed Shulker Box","648455":"Dyed Shulker Box","648456":"Dyed Shulker Box","648457":"Dyed Shulker Box","648458":"Dyed Shulker Box","648459":"Dyed Shulker Box","648460":"Dyed Shulker Box","648461":"Dyed Shulker Box","648462":"Dyed Shulker Box","648463":"Dyed Shulker Box","671488":"Stained Glass","671489":"Stained Glass","671490":"Stained Glass","671491":"Stained Glass","671492":"Stained Glass","671493":"Stained Glass","671494":"Stained Glass","671495":"Stained Glass","671496":"Stained Glass","671497":"Stained Glass","671498":"Stained Glass","671499":"Stained Glass","671500":"Stained Glass","671501":"Stained Glass","671502":"Stained Glass","671503":"Stained Glass","671552":"Stained Glass Pane","671553":"Stained Glass Pane","671554":"Stained Glass Pane","671555":"Stained Glass Pane","671556":"Stained Glass Pane","671557":"Stained Glass Pane","671558":"Stained Glass Pane","671559":"Stained Glass Pane","671560":"Stained Glass Pane","671561":"Stained Glass Pane","671562":"Stained Glass Pane","671563":"Stained Glass Pane","671564":"Stained Glass Pane","671565":"Stained Glass Pane","671566":"Stained Glass Pane","671567":"Stained Glass Pane","671424":"Stained Clay","671425":"Stained Clay","671426":"Stained Clay","671427":"Stained Clay","671428":"Stained Clay","671429":"Stained Clay","671430":"Stained Clay","671431":"Stained Clay","671432":"Stained Clay","671433":"Stained Clay","671434":"Stained Clay","671435":"Stained Clay","671436":"Stained Clay","671437":"Stained Clay","671438":"Stained Clay","671439":"Stained Clay","671616":"Stained Hardened Glass","671617":"Stained Hardened Glass","671618":"Stained Hardened Glass","671619":"Stained Hardened Glass","671620":"Stained Hardened Glass","671621":"Stained Hardened Glass","671622":"Stained Hardened Glass","671623":"Stained Hardened Glass","671624":"Stained Hardened Glass","671625":"Stained Hardened Glass","671626":"Stained Hardened Glass","671627":"Stained Hardened Glass","671628":"Stained Hardened Glass","671629":"Stained Hardened Glass","671630":"Stained Hardened Glass","671631":"Stained Hardened Glass","671680":"Stained Hardened Glass Pane","671681":"Stained Hardened Glass Pane","671682":"Stained Hardened Glass Pane","671683":"Stained Hardened Glass Pane","671684":"Stained Hardened Glass Pane","671685":"Stained Hardened Glass Pane","671686":"Stained Hardened Glass Pane","671687":"Stained Hardened Glass Pane","671688":"Stained Hardened Glass Pane","671689":"Stained Hardened Glass Pane","671690":"Stained Hardened Glass Pane","671691":"Stained Hardened Glass Pane","671692":"Stained Hardened Glass Pane","671693":"Stained Hardened Glass Pane","671694":"Stained Hardened Glass Pane","671695":"Stained Hardened Glass Pane","644352":"Carpet","644353":"Carpet","644354":"Carpet","644355":"Carpet","644356":"Carpet","644357":"Carpet","644358":"Carpet","644359":"Carpet","644360":"Carpet","644361":"Carpet","644362":"Carpet","644363":"Carpet","644364":"Carpet","644365":"Carpet","644366":"Carpet","644367":"Carpet","645568":"Concrete","645569":"Concrete","645570":"Concrete","645571":"Concrete","645572":"Concrete","645573":"Concrete","645574":"Concrete","645575":"Concrete","645576":"Concrete","645577":"Concrete","645578":"Concrete","645579":"Concrete","645580":"Concrete","645581":"Concrete","645582":"Concrete","645583":"Concrete","645632":"Concrete Powder","645633":"Concrete Powder","645634":"Concrete Powder","645635":"Concrete Powder","645636":"Concrete Powder","645637":"Concrete Powder","645638":"Concrete Powder","645639":"Concrete Powder","645640":"Concrete Powder","645641":"Concrete Powder","645642":"Concrete Powder","645643":"Concrete Powder","645644":"Concrete Powder","645645":"Concrete Powder","645646":"Concrete Powder","645647":"Concrete Powder","674368":"Wool","674369":"Wool","674370":"Wool","674371":"Wool","674372":"Wool","674373":"Wool","674374":"Wool","674375":"Wool","674376":"Wool","674377":"Wool","674378":"Wool","674379":"Wool","674380":"Wool","674381":"Wool","674382":"Wool","674383":"Wool","645312":"Cobblestone Wall","641408":"Andesite Wall","643904":"Brick Wall","648128":"Diorite Wall","656704":"End Stone Brick Wall","657984":"Granite Wall","662784":"Mossy Stone Brick Wall","662592":"Mossy Cobblestone Wall","663232":"Nether Brick Wall","666496":"Prismarine Wall","667712":"Red Nether Brick Wall","668096":"Red Sandstone Wall","669120":"Sandstone Wall","671936":"Stone Brick Wall","656000":"???","651392":"Hydrogen","651264":"Helium","651968":"Lithium","649088":"Beryllium","649280":"Boron","649600":"Carbon","652992":"Nitrogen","653248":"Oxygen","650752":"Fluorine","652672":"Neon","654784":"Sodium","652160":"Magnesium","648576":"Aluminum","654656":"Silicon","653376":"Phosphorus","654912":"Sulfur","649792":"Chlorine","648768":"Argon","653632":"Potassium","649472":"Calcium","654464":"Scandium","655552":"Titanium","655744":"Vanadium","649856":"Chromium","652224":"Manganese","651648":"Iron","649920":"Cobalt","652800":"Nickel","650112":"Copper","656064":"Zinc","650944":"Gallium","651008":"Germanium","648832":"Arsenic","654592":"Selenium","649344":"Bromine","651712":"Krypton","654208":"Rubidium","654848":"Strontium","655936":"Yttrium","656128":"Zirconium","652928":"Niobium","652480":"Molybdenum","655040":"Technetium","654272":"Ruthenium","654080":"Rhodium","653312":"Palladium","654720":"Silver","649408":"Cadmium","651456":"Indium","655488":"Tin","648704":"Antimony","655104":"Tellurium","651520":"Iodine","655808":"Xenon","649728":"Cesium","648960":"Barium","651776":"Lanthanum","649664":"Cerium","653696":"Praseodymium","652608":"Neodymium","653760":"Promethium","654400":"Samarium","650560":"Europium","650880":"Gadolinium","655232":"Terbium","650368":"Dysprosium","651328":"Holmium","650496":"Erbium","655424":"Thulium","655872":"Ytterbium","652096":"Lutetium","651136":"Hafnium","654976":"Tantalum","655616":"Tungsten","654016":"Rhenium","653184":"Osmium","651584":"Iridium","653440":"Platinum","651072":"Gold","652416":"Mercury","655296":"Thallium","651904":"Lead","649152":"Bismuth","653568":"Polonium","648896":"Astatine","653952":"Radon","650816":"Francium","653888":"Radium","648512":"Actinium","655360":"Thorium","653824":"Protactinium","655680":"Uranium","652736":"Neptunium","653504":"Plutonium","648640":"Americium","650176":"Curium","649024":"Berkelium","649536":"Californium","650432":"Einsteinium","650624":"Fermium","652352":"Mendelevium","653056":"Nobelium","651840":"Lawrencium","654336":"Rutherfordium","650304":"Dubnium","654528":"Seaborgium","649216":"Bohrium","651200":"Hassium","652288":"Meitnerium","650240":"Darmstadtium","654144":"Roentgenium","650048":"Copernicium","652864":"Nihonium","650688":"Flerovium","652544":"Moscovium","652032":"Livermorium","655168":"Tennessine","653120":"Oganesson","645504":"Compound Creator","645505":"Compound Creator","645506":"Compound Creator","645507":"Compound Creator","649984":"Element Constructor","649985":"Element Constructor","649986":"Element Constructor","649987":"Element Constructor","660800":"Lab Table","660801":"Lab Table","660802":"Lab Table","660803":"Lab Table","662080":"Material Reducer","662081":"Material Reducer","662082":"Material Reducer","662083":"Material Reducer","644544":"Heat Block","644160":"Brown Mushroom Block","644161":"Brown Mushroom Block","644162":"Brown Mushroom Block","644163":"Brown Mushroom Block","644164":"Brown Mushroom Block","644165":"Brown Mushroom Block","644166":"Brown Mushroom Block","644167":"Brown Mushroom Block","644168":"Brown Mushroom Block","644169":"Brown Mushroom Block","644170":"Brown Mushroom Block","667520":"Red Mushroom Block","667521":"Red Mushroom Block","667522":"Red Mushroom Block","667523":"Red Mushroom Block","667524":"Red Mushroom Block","667525":"Red Mushroom Block","667526":"Red Mushroom Block","667527":"Red Mushroom Block","667528":"Red Mushroom Block","667529":"Red Mushroom Block","667530":"Red Mushroom Block","662912":"Mushroom Stem","641088":"All Sided Mushroom Stem","645696":"Coral","645697":"Coral","645698":"Coral","645699":"Coral","645700":"Coral","645704":"Coral","645705":"Coral","645706":"Coral","645707":"Coral","645708":"Coral","645824":"Coral Fan","645825":"Coral Fan","645826":"Coral Fan","645827":"Coral Fan","645828":"Coral Fan","645832":"Coral Fan","645833":"Coral Fan","645834":"Coral Fan","645835":"Coral Fan","645836":"Coral Fan","645840":"Coral Fan","645841":"Coral Fan","645842":"Coral Fan","645843":"Coral Fan","645844":"Coral Fan","645848":"Coral Fan","645849":"Coral Fan","645850":"Coral Fan","645851":"Coral Fan","645852":"Coral Fan","673920":"Wall Coral Fan","673921":"Wall Coral Fan","673922":"Wall Coral Fan","673923":"Wall Coral Fan","673924":"Wall Coral Fan","673928":"Wall Coral Fan","673929":"Wall Coral Fan","673930":"Wall Coral Fan","673931":"Wall Coral Fan","673932":"Wall Coral Fan","673936":"Wall Coral Fan","673937":"Wall Coral Fan","673938":"Wall Coral Fan","673939":"Wall Coral Fan","673940":"Wall Coral Fan","673944":"Wall Coral Fan","673945":"Wall Coral Fan","673946":"Wall Coral Fan","673947":"Wall Coral Fan","673948":"Wall Coral Fan","673952":"Wall Coral Fan","673953":"Wall Coral Fan","673954":"Wall Coral Fan","673955":"Wall Coral Fan","673956":"Wall Coral Fan","673960":"Wall Coral Fan","673961":"Wall Coral Fan","673962":"Wall Coral Fan","673963":"Wall Coral Fan","673964":"Wall Coral Fan","673968":"Wall Coral Fan","673969":"Wall Coral Fan","673970":"Wall Coral Fan","673971":"Wall Coral Fan","673972":"Wall Coral Fan","673976":"Wall Coral Fan","673977":"Wall Coral Fan","673978":"Wall Coral Fan","673979":"Wall Coral Fan","673980":"Wall Coral Fan"},"stateDataBits":6} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298177":"Mob Head","5298178":"Mob Head","5298179":"Mob Head","5298180":"Mob Head","5298181":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5393920":"White Glazed Terracotta","5393921":"White Glazed Terracotta","5393922":"White Glazed Terracotta","5393923":"White Glazed Terracotta","5318656":"Orange Glazed Terracotta","5318657":"Orange Glazed Terracotta","5318658":"Orange Glazed Terracotta","5318659":"Orange Glazed Terracotta","5295616":"Magenta Glazed Terracotta","5295617":"Magenta Glazed Terracotta","5295618":"Magenta Glazed Terracotta","5295619":"Magenta Glazed Terracotta","5291520":"Light Blue Glazed Terracotta","5291521":"Light Blue Glazed Terracotta","5291522":"Light Blue Glazed Terracotta","5291523":"Light Blue Glazed Terracotta","5395456":"Yellow Glazed Terracotta","5395457":"Yellow Glazed Terracotta","5395458":"Yellow Glazed Terracotta","5395459":"Yellow Glazed Terracotta","5294080":"Lime Glazed Terracotta","5294081":"Lime Glazed Terracotta","5294082":"Lime Glazed Terracotta","5294083":"Lime Glazed Terracotta","5321216":"Pink Glazed Terracotta","5321217":"Pink Glazed Terracotta","5321218":"Pink Glazed Terracotta","5321219":"Pink Glazed Terracotta","5265920":"Gray Glazed Terracotta","5265921":"Gray Glazed Terracotta","5265922":"Gray Glazed Terracotta","5265923":"Gray Glazed Terracotta","5292032":"Light Gray Glazed Terracotta","5292033":"Light Gray Glazed Terracotta","5292034":"Light Gray Glazed Terracotta","5292035":"Light Gray Glazed Terracotta","5170688":"Cyan Glazed Terracotta","5170689":"Cyan Glazed Terracotta","5170690":"Cyan Glazed Terracotta","5170691":"Cyan Glazed Terracotta","5333504":"Purple Glazed Terracotta","5333505":"Purple Glazed Terracotta","5333506":"Purple Glazed Terracotta","5333507":"Purple Glazed Terracotta","5146624":"Blue Glazed Terracotta","5146625":"Blue Glazed Terracotta","5146626":"Blue Glazed Terracotta","5146627":"Blue Glazed Terracotta","5152256":"Brown Glazed Terracotta","5152257":"Brown Glazed Terracotta","5152258":"Brown Glazed Terracotta","5152259":"Brown Glazed Terracotta","5266432":"Green Glazed Terracotta","5266433":"Green Glazed Terracotta","5266434":"Green Glazed Terracotta","5266435":"Green Glazed Terracotta","5339136":"Red Glazed Terracotta","5339137":"Red Glazed Terracotta","5339138":"Red Glazed Terracotta","5339139":"Red Glazed Terracotta","5145600":"Black Glazed Terracotta","5145601":"Black Glazed Terracotta","5145602":"Black Glazed Terracotta","5145603":"Black Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file From 3d613455432fca148b1b822147979aea2772f0fd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Jun 2022 16:18:35 +0100 Subject: [PATCH 175/692] Remove ItemFactory::air() --- src/item/ItemFactory.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index e8c0d7f1a..6cb668993 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -494,14 +494,6 @@ class ItemFactory{ return $item; } - /** - * @deprecated - * @see VanillaItems::AIR() - */ - public static function air() : Item{ - return self::getInstance()->get(Ids::AIR, 0, 0); - } - /** * Returns whether the specified item ID is already registered in the item factory. */ From bc5a600d59069571662139f808c6c647cd8324bf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 26 Jun 2022 17:02:55 +0100 Subject: [PATCH 176/692] Added item stack serialize/deserialize methods --- src/data/bedrock/item/ItemDeserializer.php | 18 +++++++++++++++- src/data/bedrock/item/ItemSerializer.php | 15 +++++++++++-- src/item/Item.php | 21 ++----------------- src/network/mcpe/convert/ItemTranslator.php | 4 ++-- .../item/ItemSerializerDeserializerTest.php | 8 +++---- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 8abfb24dc..1fc93a77b 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -64,7 +64,7 @@ final class ItemDeserializer{ /** * @throws ItemTypeDeserializeException */ - public function deserialize(Data $data) : Item{ + public function deserializeType(Data $data) : Item{ if(($blockData = $data->getBlock()) !== null){ //TODO: this is rough duct tape; we need a better way to deal with this try{ @@ -84,6 +84,22 @@ final class ItemDeserializer{ return ($this->deserializers[$id])($data); } + /** + * @throws ItemTypeDeserializeException + */ + public function deserializeStack(SavedItemStackData $data) : Item{ + $itemStack = $this->deserializeType($data->getTypeData()); + + $itemStack->setCount($data->getCount()); + if(($tagTag = $data->getTypeData()->getTag()) !== null){ + $itemStack->setNamedTag(clone $tagTag); + } + + //TODO: canDestroy, canPlaceOn, wasPickedUp are currently unused + + return $itemStack; + } + private function registerDeserializers() : void{ $this->map(Ids::ACACIA_BOAT, fn() => Items::ACACIA_BOAT()); $this->map(Ids::ACACIA_DOOR, fn() => Blocks::ACACIA_DOOR()->asItem()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 0c704fe00..5c6ed2b44 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -102,7 +102,7 @@ final class ItemSerializer{ * * @throws ItemTypeSerializeException */ - public function serialize(Item $item) : Data{ + public function serializeType(Item $item) : Data{ if($item->isNull()){ throw new \InvalidArgumentException("Cannot serialize a null itemstack"); } @@ -128,7 +128,7 @@ final class ItemSerializer{ } if($locatedSerializer === null){ - throw new ItemTypeSerializeException("No serializer registered for " . get_class($item) . " " . $item->getName()); + throw new ItemTypeSerializeException("No serializer registered for " . get_class($item) . " ($index) " . $item->getName()); } /** @@ -153,6 +153,17 @@ final class ItemSerializer{ return $data; } + public function serializeStack(Item $item, ?int $slot = null) : SavedItemStackData{ + return new SavedItemStackData( + $this->serializeType($item), + $item->getCount(), + $slot, + null, + [], //we currently represent canDestroy and canPlaceOn via NBT, like PC + [] + ); + } + /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $block diff --git a/src/item/Item.php b/src/item/Item.php index 6aabbf313..abafc6e6c 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -32,7 +32,6 @@ use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; -use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\item\enchantment\EnchantmentInstance; @@ -648,16 +647,7 @@ class Item implements \JsonSerializable{ * @param int $slot optional, the inventory slot of the item */ public function nbtSerialize(int $slot = -1) : CompoundTag{ - $typeData = GlobalItemDataHandlers::getSerializer()->serialize($this); - - return (new SavedItemStackData( - $typeData, - $this->count, - $slot !== -1 ? $slot : null, - null, - [], //we currently represent canDestroy and canPlaceOn via NBT, like PC - [] - ))->toNbt(); + return GlobalItemDataHandlers::getSerializer()->serializeStack($this, $slot !== -1 ? $slot : null); } /** @@ -668,17 +658,10 @@ class Item implements \JsonSerializable{ $itemData = GlobalItemDataHandlers::getUpgrader()->upgradeItemStackNbt($tag); try{ - $item = GlobalItemDataHandlers::getDeserializer()->deserialize($itemData->getTypeData()); + return GlobalItemDataHandlers::getDeserializer()->deserializeStack($itemData); }catch(ItemTypeDeserializeException $e){ throw new SavedDataLoadingException($e->getMessage(), 0, $e); } - - $item->setCount($itemData->getCount()); - if(($tagTag = $itemData->getTypeData()->getTag()) !== null){ - $item->setNamedTag(clone $tagTag); - } - - return $item; } public function __clone(){ diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 6ada7f372..b04e9f624 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -79,7 +79,7 @@ final class ItemTranslator{ public function toNetworkId(Item $item) : array{ //TODO: we should probably come up with a cache for this - $itemData = $this->itemSerializer->serialize($item); + $itemData = $this->itemSerializer->serializeType($item); $numericId = $this->itemTypeDictionary->fromStringId($itemData->getName()); $blockStateData = $itemData->getBlock(); @@ -116,7 +116,7 @@ final class ItemTranslator{ } try{ - return $this->itemDeserializer->deserialize(new SavedItemData($stringId, $networkMeta, $blockStateData)); + return $this->itemDeserializer->deserializeType(new SavedItemData($stringId, $networkMeta, $blockStateData)); }catch(ItemTypeDeserializeException $e){ throw TypeConversionException::wrap($e, "Invalid network itemstack data"); } diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index ebc7dafc8..32e8f4139 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -45,12 +45,12 @@ final class ItemSerializerDeserializerTest extends TestCase{ } try{ - $itemData = $this->serializer->serialize($item); + $itemData = $this->serializer->serializeType($item); }catch(ItemTypeSerializeException $e){ self::fail($e->getMessage()); } try{ - $newItem = $this->deserializer->deserialize($itemData); + $newItem = $this->deserializer->deserializeType($itemData); }catch(ItemTypeDeserializeException $e){ self::fail($e->getMessage()); } @@ -67,12 +67,12 @@ final class ItemSerializerDeserializerTest extends TestCase{ } try{ - $itemData = $this->serializer->serialize($item); + $itemData = $this->serializer->serializeType($item); }catch(ItemTypeSerializeException $e){ self::fail($e->getMessage()); } try{ - $newItem = $this->deserializer->deserialize($itemData); + $newItem = $this->deserializer->deserializeType($itemData); }catch(ItemTypeDeserializeException $e){ self::fail($e->getMessage()); } From 55cb68e5b5b1783b3ce227b3981fe0627e80d2e4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 13:33:26 +0100 Subject: [PATCH 177/692] Burn meta wildcards from Item, allow more dynamic recipe inputs this was an obstacle for getting rid of legacy item IDs. --- src/crafting/CraftingManager.php | 8 +- .../CraftingManagerFromDataHelper.php | 60 +++++++-- src/crafting/CraftingRecipe.php | 2 +- src/crafting/ExactRecipeIngredient.php | 56 +++++++++ src/crafting/FurnaceRecipe.php | 7 +- src/crafting/FurnaceRecipeManager.php | 26 +++- src/crafting/MetaWildcardRecipeIngredient.php | 57 +++++++++ src/crafting/RecipeIngredient.php | 31 +++++ src/crafting/ShapedRecipe.php | 27 +++-- src/crafting/ShapelessRecipe.php | 31 ++--- src/data/bedrock/item/ItemSerializer.php | 6 - .../bedrock/item/upgrade/ItemDataUpgrader.php | 41 +++++++ src/inventory/BaseInventory.php | 15 +-- .../transaction/CraftingTransaction.php | 114 +++++++++++++++++- src/item/Item.php | 4 +- src/item/ItemFactory.php | 45 +++---- src/item/ItemIdentifier.php | 5 +- src/item/LegacyStringToItemParser.php | 3 + src/network/mcpe/cache/CraftingDataCache.php | 11 +- src/network/mcpe/convert/TypeConverter.php | 51 ++++---- 20 files changed, 473 insertions(+), 127 deletions(-) create mode 100644 src/crafting/ExactRecipeIngredient.php create mode 100644 src/crafting/MetaWildcardRecipeIngredient.php create mode 100644 src/crafting/RecipeIngredient.php diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index f473a739d..f23ba53ac 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -184,7 +184,7 @@ class CraftingManager{ public function registerPotionTypeRecipe(PotionTypeRecipe $recipe) : void{ $input = $recipe->getInput(); $ingredient = $recipe->getIngredient(); - $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":" . ($ingredient->hasAnyDamageValue() ? "?" : $ingredient->getMeta())] = $recipe; + $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":" . $ingredient->getMeta()] = $recipe; foreach($this->recipeRegisteredCallbacks as $callback){ $callback(); @@ -193,7 +193,7 @@ class CraftingManager{ public function registerPotionContainerChangeRecipe(PotionContainerChangeRecipe $recipe) : void{ $ingredient = $recipe->getIngredient(); - $this->potionContainerChangeRecipes[$recipe->getInputItemId()][$ingredient->getId() . ":" . ($ingredient->hasAnyDamageValue() ? "?" : $ingredient->getMeta())] = $recipe; + $this->potionContainerChangeRecipes[$recipe->getInputItemId()][$ingredient->getId() . ":" . $ingredient->getMeta()] = $recipe; foreach($this->recipeRegisteredCallbacks as $callback){ $callback(); @@ -253,8 +253,6 @@ class CraftingManager{ public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ return $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":" . $ingredient->getMeta()] ?? - $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":?"] ?? - $this->potionContainerChangeRecipes[$input->getId()][$ingredient->getId() . ":" . $ingredient->getMeta()] ?? - $this->potionContainerChangeRecipes[$input->getId()][$ingredient->getId() . ":?"] ?? null; + $this->potionContainerChangeRecipes[$input->getId()][$ingredient->getId() . ":" . $ingredient->getMeta()] ?? null; } } diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index b09607d54..d6d7608da 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -23,14 +23,17 @@ declare(strict_types=1); namespace pocketmine\crafting; +use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\ItemFactory; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; +use pocketmine\world\format\io\GlobalItemDataHandlers; use function array_map; use function file_get_contents; use function is_array; +use function is_int; use function json_decode; final class CraftingManagerFromDataHelper{ @@ -41,7 +44,7 @@ final class CraftingManagerFromDataHelper{ private static function containsUnknownItems(array $items) : bool{ $factory = ItemFactory::getInstance(); foreach($items as $item){ - if($item instanceof Durable || $item->hasAnyDamageValue()){ + if($item instanceof Durable){ //TODO: this check is imperfect and might cause problems if meta 0 isn't used for some reason if(!$factory->isRegistered($item->getId())){ return true; @@ -54,6 +57,30 @@ final class CraftingManagerFromDataHelper{ return false; } + /** + * @param mixed[] $data + */ + private static function deserializeIngredient(array $data) : ?RecipeIngredient{ + if(!isset($data["id"]) || !is_int($data["id"])){ + throw new \InvalidArgumentException("Invalid input data, expected int ID"); + } + if(isset($data["damage"]) && $data["damage"] === -1){ + try{ + $typeData = GlobalItemDataHandlers::getUpgrader()->upgradeItemTypeDataInt($data["id"], 0, 1, null); + }catch(ItemTypeDeserializeException){ + //probably unknown item + return null; + } + + return new MetaWildcardRecipeIngredient($typeData->getTypeData()->getName()); + } + + //TODO: we need to stop using jsonDeserialize for this + $item = Item::jsonDeserialize($data); + + return self::containsUnknownItems([$item]) ? null : new ExactRecipeIngredient($item); + } + public static function make(string $filePath) : CraftingManager{ $recipes = json_decode(Utils::assumeNotFalse(file_get_contents($filePath), "Missing required resource file"), true); if(!is_array($recipes)){ @@ -61,6 +88,7 @@ final class CraftingManagerFromDataHelper{ } $result = new CraftingManager(); + $ingredientDeserializerFunc = \Closure::fromCallable([self::class, "deserializeIngredient"]); $itemDeserializerFunc = \Closure::fromCallable([Item::class, 'jsonDeserialize']); foreach($recipes["shapeless"] as $recipe){ @@ -73,9 +101,16 @@ final class CraftingManagerFromDataHelper{ if($recipeType === null){ continue; } - $inputs = array_map($itemDeserializerFunc, $recipe["input"]); + $inputs = []; + foreach($recipe["input"] as $inputData){ + $input = $ingredientDeserializerFunc($inputData); + if($input === null){ //unknown input item + continue; + } + $inputs[] = $input; + } $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - if(self::containsUnknownItems($inputs) || self::containsUnknownItems($outputs)){ + if(self::containsUnknownItems($outputs)){ continue; } $result->registerShapelessRecipe(new ShapelessRecipe( @@ -88,9 +123,16 @@ final class CraftingManagerFromDataHelper{ if($recipe["block"] !== "crafting_table"){ //TODO: filter others out for now to avoid breaking economics continue; } - $inputs = array_map($itemDeserializerFunc, $recipe["input"]); + $inputs = []; + foreach($recipe["input"] as $symbol => $inputData){ + $input = $ingredientDeserializerFunc($inputData); + if($input === null){ //unknown input item + continue; + } + $inputs[$symbol] = $input; + } $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - if(self::containsUnknownItems($inputs) || self::containsUnknownItems($outputs)){ + if(self::containsUnknownItems($outputs)){ continue; } $result->registerShapedRecipe(new ShapedRecipe( @@ -111,8 +153,8 @@ final class CraftingManagerFromDataHelper{ continue; } $output = Item::jsonDeserialize($recipe["output"]); - $input = Item::jsonDeserialize($recipe["input"]); - if(self::containsUnknownItems([$output, $input])){ + $input = self::deserializeIngredient($recipe["input"]); + if($input === null || self::containsUnknownItems([$output])){ continue; } $result->getFurnaceRecipeManager($furnaceType)->register(new FurnaceRecipe( @@ -135,9 +177,9 @@ final class CraftingManagerFromDataHelper{ )); } foreach($recipes["potion_container_change"] as $recipe){ - $input = ItemFactory::getInstance()->get($recipe["input_item_id"], -1); + $input = ItemFactory::getInstance()->get($recipe["input_item_id"]); $ingredient = Item::jsonDeserialize($recipe["ingredient"]); - $output = ItemFactory::getInstance()->get($recipe["output_item_id"], -1); + $output = ItemFactory::getInstance()->get($recipe["output_item_id"]); if(self::containsUnknownItems([$input, $ingredient, $output])){ continue; diff --git a/src/crafting/CraftingRecipe.php b/src/crafting/CraftingRecipe.php index 8666235a8..02e6fce04 100644 --- a/src/crafting/CraftingRecipe.php +++ b/src/crafting/CraftingRecipe.php @@ -29,7 +29,7 @@ interface CraftingRecipe{ /** * Returns a list of items needed to craft this recipe. This MUST NOT include Air items or items with a zero count. * - * @return Item[] + * @return RecipeIngredient[] */ public function getIngredientList() : array; diff --git a/src/crafting/ExactRecipeIngredient.php b/src/crafting/ExactRecipeIngredient.php new file mode 100644 index 000000000..76543b0ac --- /dev/null +++ b/src/crafting/ExactRecipeIngredient.php @@ -0,0 +1,56 @@ +isNull()){ + throw new \InvalidArgumentException("Recipe ingredients must not be air items"); + } + if($item->getCount() !== 1){ + throw new \InvalidArgumentException("Recipe ingredients cannot require count"); + } + $this->item = clone $item; + } + + public function getItem() : Item{ return clone $this->item; } + + public function accepts(Item $item) : bool{ + //client-side, recipe inputs can't actually require NBT + //but on the PM side, we currently check for it if the input requires it, so we have to continue to do so for + //the sake of consistency + return $item->getCount() >= 1 && $this->item->equals($item, true, $this->item->hasNamedTag()); + } + + public function __toString() : string{ + return "ExactRecipeIngredient(" . $this->item . ")"; + } +} diff --git a/src/crafting/FurnaceRecipe.php b/src/crafting/FurnaceRecipe.php index e719aa07b..f54dd2334 100644 --- a/src/crafting/FurnaceRecipe.php +++ b/src/crafting/FurnaceRecipe.php @@ -29,14 +29,13 @@ class FurnaceRecipe{ public function __construct( private Item $result, - private Item $ingredient + private RecipeIngredient $ingredient ){ $this->result = clone $result; - $this->ingredient = clone $ingredient; } - public function getInput() : Item{ - return clone $this->ingredient; + public function getInput() : RecipeIngredient{ + return $this->ingredient; } public function getResult() : Item{ diff --git a/src/crafting/FurnaceRecipeManager.php b/src/crafting/FurnaceRecipeManager.php index f715468dd..5d46f0e19 100644 --- a/src/crafting/FurnaceRecipeManager.php +++ b/src/crafting/FurnaceRecipeManager.php @@ -25,11 +25,18 @@ namespace pocketmine\crafting; use pocketmine\item\Item; use pocketmine\utils\ObjectSet; +use function morton2d_encode; final class FurnaceRecipeManager{ /** @var FurnaceRecipe[] */ protected array $furnaceRecipes = []; + /** + * @var FurnaceRecipe[] + * @phpstan-var array + */ + private array $lookupCache = []; + /** @phpstan-var ObjectSet<\Closure(FurnaceRecipe) : void> */ private ObjectSet $recipeRegisteredCallbacks; @@ -52,14 +59,27 @@ final class FurnaceRecipeManager{ } public function register(FurnaceRecipe $recipe) : void{ - $input = $recipe->getInput(); - $this->furnaceRecipes[$input->getId() . ":" . ($input->hasAnyDamageValue() ? "?" : $input->getMeta())] = $recipe; + $this->furnaceRecipes[] = $recipe; foreach($this->recipeRegisteredCallbacks as $callback){ $callback($recipe); } } public function match(Item $input) : ?FurnaceRecipe{ - return $this->furnaceRecipes[$input->getId() . ":" . $input->getMeta()] ?? $this->furnaceRecipes[$input->getId() . ":?"] ?? null; + $index = morton2d_encode($input->getId(), $input->getMeta()); + $simpleRecipe = $this->lookupCache[$index] ?? null; + if($simpleRecipe !== null){ + return $simpleRecipe; + } + + foreach($this->furnaceRecipes as $recipe){ + if($recipe->getInput()->accepts($input)){ + //remember that this item is accepted by this recipe, so we don't need to bruteforce it again + $this->lookupCache[$index] = $recipe; + return $recipe; + } + } + + return null; } } diff --git a/src/crafting/MetaWildcardRecipeIngredient.php b/src/crafting/MetaWildcardRecipeIngredient.php new file mode 100644 index 000000000..8aa6a1f17 --- /dev/null +++ b/src/crafting/MetaWildcardRecipeIngredient.php @@ -0,0 +1,57 @@ +itemId; } + + public function accepts(Item $item) : bool{ + if($item->getCount() < 1){ + return false; + } + + return GlobalItemDataHandlers::getSerializer()->serializeType($item)->getName() === $this->itemId; + } + + public function __toString() : string{ + return "MetaWildcardRecipeIngredient($this->itemId)"; + } +} diff --git a/src/crafting/RecipeIngredient.php b/src/crafting/RecipeIngredient.php new file mode 100644 index 000000000..19a7b6085 --- /dev/null +++ b/src/crafting/RecipeIngredient.php @@ -0,0 +1,31 @@ + Item map */ + /** @var RecipeIngredient[] char => RecipeIngredient map */ private array $ingredientList = []; /** @var Item[] */ private array $results = []; @@ -46,15 +45,15 @@ class ShapedRecipe implements CraftingRecipe{ /** * Constructs a ShapedRecipe instance. * - * @param string[] $shape
+ * @param string[] $shape
* Array of 1, 2, or 3 strings representing the rows of the recipe. * This accepts an array of 1, 2 or 3 strings. Each string should be of the same length and must be at most 3 * characters long. Each character represents a unique type of ingredient. Spaces are interpreted as air. - * @param Item[] $ingredients
+ * @param RecipeIngredient[] $ingredients
* Char => Item map of items to be set into the shape. * This accepts an array of Items, indexed by character. Every unique character (except space) in the shape * array MUST have a corresponding item in this list. Space character is automatically treated as air. - * @param Item[] $results List of items that this recipe produces when crafted. + * @param Item[] $results List of items that this recipe produces when crafted. * * Note: Recipes **do not** need to be square. Do NOT add padding for empty rows/columns. */ @@ -119,7 +118,7 @@ class ShapedRecipe implements CraftingRecipe{ } /** - * @return Item[][] + * @return (RecipeIngredient|null)[][] */ public function getIngredientMap() : array{ $ingredients = []; @@ -134,7 +133,7 @@ class ShapedRecipe implements CraftingRecipe{ } /** - * @return Item[] + * @return RecipeIngredient[] */ public function getIngredientList() : array{ $ingredients = []; @@ -142,7 +141,7 @@ class ShapedRecipe implements CraftingRecipe{ for($y = 0; $y < $this->height; ++$y){ for($x = 0; $x < $this->width; ++$x){ $ingredient = $this->getIngredient($x, $y); - if(!$ingredient->isNull()){ + if($ingredient !== null){ $ingredients[] = $ingredient; } } @@ -151,9 +150,8 @@ class ShapedRecipe implements CraftingRecipe{ return $ingredients; } - public function getIngredient(int $x, int $y) : Item{ - $exists = $this->ingredientList[$this->shape[$y][$x]] ?? null; - return $exists !== null ? clone $exists : VanillaItems::AIR(); + public function getIngredient(int $x, int $y) : ?RecipeIngredient{ + return $this->ingredientList[$this->shape[$y][$x]] ?? null; } /** @@ -170,7 +168,12 @@ class ShapedRecipe implements CraftingRecipe{ $given = $grid->getIngredient($reverse ? $this->width - $x - 1 : $x, $y); $required = $this->getIngredient($x, $y); - if(!$required->equals($given, !$required->hasAnyDamageValue(), $required->hasNamedTag()) || $required->getCount() > $given->getCount()){ + + if($required === null){ + if(!$given->isNull()){ + return false; //hole, such as that in the center of a chest recipe, should not be filled + } + }elseif(!$required->accepts($given)){ return false; } } diff --git a/src/crafting/ShapelessRecipe.php b/src/crafting/ShapelessRecipe.php index 2c399fe04..5c78bc21e 100644 --- a/src/crafting/ShapelessRecipe.php +++ b/src/crafting/ShapelessRecipe.php @@ -28,30 +28,24 @@ use pocketmine\utils\Utils; use function count; class ShapelessRecipe implements CraftingRecipe{ - /** @var Item[] */ + /** @var RecipeIngredient[] */ private array $ingredients = []; /** @var Item[] */ private array $results; private ShapelessRecipeType $type; /** - * @param Item[] $ingredients No more than 9 total. This applies to sum of item stack counts, not count of array. + * @param RecipeIngredient[] $ingredients No more than 9 total. This applies to sum of item stack counts, not count of array. * @param Item[] $results List of result items created by this recipe. * TODO: we'll want to make the type parameter mandatory in PM5 */ public function __construct(array $ingredients, array $results, ?ShapelessRecipeType $type = null){ $this->type = $type ?? ShapelessRecipeType::CRAFTING(); - foreach($ingredients as $item){ - //Ensure they get split up properly - if(count($this->ingredients) + $item->getCount() > 9){ - throw new \InvalidArgumentException("Shapeless recipes cannot have more than 9 ingredients"); - } - while($item->getCount() > 0){ - $this->ingredients[] = $item->pop(); - } + if(count($ingredients) > 9){ + throw new \InvalidArgumentException("Shapeless recipes cannot have more than 9 ingredients"); } - + $this->ingredients = $ingredients; $this->results = Utils::cloneObjectArray($results); } @@ -71,28 +65,23 @@ class ShapelessRecipe implements CraftingRecipe{ } /** - * @return Item[] + * @return RecipeIngredient[] */ public function getIngredientList() : array{ - return Utils::cloneObjectArray($this->ingredients); + return $this->ingredients; } public function getIngredientCount() : int{ - $count = 0; - foreach($this->ingredients as $ingredient){ - $count += $ingredient->getCount(); - } - - return $count; + return count($this->ingredients); } public function matchesCraftingGrid(CraftingGrid $grid) : bool{ //don't pack the ingredients - shapeless recipes require that each ingredient be in a separate slot $input = $grid->getContents(); - foreach($this->ingredients as $needItem){ + foreach($this->ingredients as $ingredient){ foreach($input as $j => $haveItem){ - if($haveItem->equals($needItem, !$needItem->hasAnyDamageValue(), $needItem->hasNamedTag()) && $haveItem->getCount() >= $needItem->getCount()){ + if($ingredient->accepts($haveItem)){ unset($input[$j]); continue 2; } diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 5c6ed2b44..ed8417734 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -72,9 +72,6 @@ final class ItemSerializer{ * @phpstan-param \Closure(TItemType) : Data $serializer */ public function map(Item $item, \Closure $serializer) : void{ - if($item->hasAnyDamageValue()){ - throw new \InvalidArgumentException("Cannot serialize a recipe wildcard"); - } $index = $item->getTypeId(); if(isset($this->itemSerializers[$index])){ //TODO: REMOVE ME @@ -106,9 +103,6 @@ final class ItemSerializer{ if($item->isNull()){ throw new \InvalidArgumentException("Cannot serialize a null itemstack"); } - if($item->hasAnyDamageValue()){ - throw new \InvalidArgumentException("Cannot serialize a recipe input as a saved itemstack"); - } if($item instanceof ItemBlock){ $data = $this->serializeBlockItem($item->getBlock()); }else{ diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 905abb208..6e73c02b9 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -70,6 +70,47 @@ final class ItemDataUpgrader{ ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); } + /** + * This function replaces the legacy ItemFactory::get(). + * + * Unlike ItemFactory::get(), it returns a SavedItemStackData which you can do with as you please. + * If you want to deserialize it into a PocketMine-MP itemstack, pass it to the ItemDeserializer. + * + * @see ItemDataUpgrader::upgradeItemTypeDataInt() + */ + public function upgradeItemTypeDataString(string $rawNameId, int $meta, int $count, ?CompoundTag $nbt) : SavedItemStackData{ + if(($r12BlockId = $this->r12ItemIdToBlockIdMap->itemIdToBlockId($rawNameId)) !== null){ + $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + }else{ + //probably a standard item + $blockStateData = null; + } + + [$newNameId, $newMeta] = $this->upgradeItemStringIdMeta($rawNameId, $meta); + + //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? + + return new SavedItemStackData( + new SavedItemData($newNameId, $newMeta, $blockStateData, $nbt), + $count, + null, + null, + [], + [] + ); + } + + /** + * This function replaces the legacy ItemFactory::get(). + */ + public function upgradeItemTypeDataInt(int $legacyNumericId, int $meta, int $count, ?CompoundTag $nbt) : SavedItemStackData{ + $rawNameId = $this->legacyIntToStringIdMap->legacyToString($legacyNumericId); + if($rawNameId === null){ + throw new SavedDataLoadingException("Unmapped legacy item ID $legacyNumericId"); + } + return $this->upgradeItemTypeDataString($rawNameId, $meta, $count, $nbt); + } + /** * @throws SavedDataLoadingException */ diff --git a/src/inventory/BaseInventory.php b/src/inventory/BaseInventory.php index 8d7d5491c..a37064e83 100644 --- a/src/inventory/BaseInventory.php +++ b/src/inventory/BaseInventory.php @@ -105,10 +105,9 @@ abstract class BaseInventory implements Inventory{ public function contains(Item $item) : bool{ $count = max(1, $item->getCount()); - $checkDamage = !$item->hasAnyDamageValue(); $checkTags = $item->hasNamedTag(); foreach($this->getContents() as $i){ - if($item->equals($i, $checkDamage, $checkTags)){ + if($item->equals($i, true, $checkTags)){ $count -= $i->getCount(); if($count <= 0){ return true; @@ -121,23 +120,22 @@ abstract class BaseInventory implements Inventory{ public function all(Item $item) : array{ $slots = []; - $checkDamage = !$item->hasAnyDamageValue(); $checkTags = $item->hasNamedTag(); foreach($this->getContents() as $index => $i){ - if($item->equals($i, $checkDamage, $checkTags)){ + if($item->equals($i, true, $checkTags)){ $slots[$index] = $i; } } return $slots; } + public function first(Item $item, bool $exact = false) : int{ $count = $exact ? $item->getCount() : max(1, $item->getCount()); - $checkDamage = $exact || !$item->hasAnyDamageValue(); $checkTags = $exact || $item->hasNamedTag(); foreach($this->getContents() as $index => $i){ - if($item->equals($i, $checkDamage, $checkTags) && ($i->getCount() === $count || (!$exact && $i->getCount() > $count))){ + if($item->equals($i, true, $checkTags) && ($i->getCount() === $count || (!$exact && $i->getCount() > $count))){ return $index; } } @@ -245,11 +243,10 @@ abstract class BaseInventory implements Inventory{ } public function remove(Item $item) : void{ - $checkDamage = !$item->hasAnyDamageValue(); $checkTags = $item->hasNamedTag(); foreach($this->getContents() as $index => $i){ - if($item->equals($i, $checkDamage, $checkTags)){ + if($item->equals($i, true, $checkTags)){ $this->clear($index); } } @@ -272,7 +269,7 @@ abstract class BaseInventory implements Inventory{ } foreach($itemSlots as $index => $slot){ - if($slot->equals($item, !$slot->hasAnyDamageValue(), $slot->hasNamedTag())){ + if($slot->equals($item, true, $slot->hasNamedTag())){ $amount = min($item->getCount(), $slot->getCount()); $slot->setCount($slot->getCount() - $amount); $item->setCount($item->getCount() - $amount); diff --git a/src/inventory/transaction/CraftingTransaction.php b/src/inventory/transaction/CraftingTransaction.php index bea88b187..a5b60a12f 100644 --- a/src/inventory/transaction/CraftingTransaction.php +++ b/src/inventory/transaction/CraftingTransaction.php @@ -25,12 +25,18 @@ namespace pocketmine\inventory\transaction; use pocketmine\crafting\CraftingManager; use pocketmine\crafting\CraftingRecipe; +use pocketmine\crafting\RecipeIngredient; use pocketmine\event\inventory\CraftItemEvent; use pocketmine\item\Item; use pocketmine\player\Player; +use pocketmine\utils\Utils; +use function array_fill_keys; +use function array_keys; use function array_pop; use function count; use function intdiv; +use function min; +use function uasort; /** * This transaction type is specialized for crafting validation. It shares most of the same semantics of the base @@ -63,13 +69,110 @@ class CraftingTransaction extends InventoryTransaction{ $this->craftingManager = $craftingManager; } + /** + * @param Item[] $providedItems + * @return Item[] + */ + private static function packItems(array $providedItems) : array{ + $packedProvidedItems = []; + while(count($providedItems) > 0){ + $item = array_pop($providedItems); + foreach($providedItems as $k => $otherItem){ + if($item->canStackWith($otherItem)){ + $item->setCount($item->getCount() + $otherItem->getCount()); + unset($providedItems[$k]); + } + } + $packedProvidedItems[] = $item; + } + + return $packedProvidedItems; + } + + /** + * @param Item[] $providedItems + * @param RecipeIngredient[] $recipeIngredients + */ + public static function matchIngredients(array $providedItems, array $recipeIngredients, int $expectedIterations) : void{ + if(count($recipeIngredients) === 0){ + throw new TransactionValidationException("No recipe ingredients given"); + } + if(count($providedItems) === 0){ + throw new TransactionValidationException("No transaction items given"); + } + + $packedProvidedItems = self::packItems(Utils::cloneObjectArray($providedItems)); + $packedProvidedItemMatches = array_fill_keys(array_keys($packedProvidedItems), 0); + + $recipeIngredientMatches = []; + + foreach($recipeIngredients as $ingredientIndex => $recipeIngredient){ + $acceptedItems = []; + foreach($packedProvidedItems as $itemIndex => $packedItem){ + if($recipeIngredient->accepts($packedItem)){ + $packedProvidedItemMatches[$itemIndex]++; + $acceptedItems[$itemIndex] = $itemIndex; + } + } + + if(count($acceptedItems) === 0){ + throw new TransactionValidationException("No provided items satisfy ingredient requirement $recipeIngredient"); + } + + $recipeIngredientMatches[$ingredientIndex] = $acceptedItems; + } + + foreach($packedProvidedItemMatches as $itemIndex => $itemMatchCount){ + if($itemMatchCount === 0){ + $item = $packedProvidedItems[$itemIndex]; + throw new TransactionValidationException("Provided item $item is not accepted by any recipe ingredient"); + } + } + + //Most picky ingredients first - avoid picky ingredient getting their items stolen by wildcard ingredients + //TODO: this is still insufficient when multiple wildcard ingredients have overlaps, but we don't (yet) have to + //worry about those. + uasort($recipeIngredientMatches, fn(array $a, array $b) => count($a) <=> count($b)); + + foreach($recipeIngredientMatches as $ingredientIndex => $acceptedItems){ + $needed = $expectedIterations; + + foreach($packedProvidedItems as $itemIndex => $item){ + if(!isset($acceptedItems[$itemIndex])){ + continue; + } + + $taken = min($needed, $item->getCount()); + $needed -= $taken; + $item->setCount($item->getCount() - $taken); + + if($item->getCount() === 0){ + unset($packedProvidedItems[$itemIndex]); + } + + if($needed === 0){ + //validation passed! + continue 2; + } + } + + $recipeIngredient = $recipeIngredients[$ingredientIndex]; + $actualIterations = $expectedIterations - $needed; + throw new TransactionValidationException("Not enough items to satisfy recipe ingredient $recipeIngredient for $expectedIterations (only have enough items for $actualIterations iterations)"); + } + + if(count($packedProvidedItems) > 0){ + throw new TransactionValidationException("Not all provided items were used"); + } + } + /** * @param Item[] $txItems * @param Item[] $recipeItems * * @throws TransactionValidationException */ - protected function matchRecipeItems(array $txItems, array $recipeItems, bool $wildcards, int $iterations = 0) : int{ + protected function matchOutputs(array $txItems, array $recipeItems) : int{ if(count($recipeItems) === 0){ throw new TransactionValidationException("No recipe items given"); } @@ -77,6 +180,7 @@ class CraftingTransaction extends InventoryTransaction{ throw new TransactionValidationException("No transaction items given"); } + $iterations = 0; while(count($recipeItems) > 0){ /** @var Item $recipeItem */ $recipeItem = array_pop($recipeItems); @@ -90,7 +194,7 @@ class CraftingTransaction extends InventoryTransaction{ $haveCount = 0; foreach($txItems as $j => $txItem){ - if($txItem->equals($recipeItem, !$wildcards || !$recipeItem->hasAnyDamageValue(), !$wildcards || $recipeItem->hasNamedTag())){ + if($txItem->canStackWith($recipeItem)){ $haveCount += $txItem->getCount(); unset($txItems[$j]); } @@ -115,7 +219,7 @@ class CraftingTransaction extends InventoryTransaction{ if(count($txItems) > 0){ //all items should be destroyed in this process - throw new TransactionValidationException("Expected 0 ingredients left over, have " . count($txItems)); + throw new TransactionValidationException("Expected 0 items left over, have " . count($txItems)); } return $iterations; @@ -133,9 +237,9 @@ class CraftingTransaction extends InventoryTransaction{ foreach($this->craftingManager->matchRecipeByOutputs($this->outputs) as $recipe){ try{ //compute number of times recipe was crafted - $this->repetitions = $this->matchRecipeItems($this->outputs, $recipe->getResultsFor($this->source->getCraftingGrid()), false); + $this->repetitions = $this->matchOutputs($this->outputs, $recipe->getResultsFor($this->source->getCraftingGrid())); //assert that $repetitions x recipe ingredients should be consumed - $this->matchRecipeItems($this->inputs, $recipe->getIngredientList(), true, $this->repetitions); + self::matchIngredients($this->inputs, $recipe->getIngredientList(), $this->repetitions); //Success! $this->recipe = $recipe; diff --git a/src/item/Item.php b/src/item/Item.php index abafc6e6c..3819b1f1e 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -581,7 +581,7 @@ class Item implements \JsonSerializable{ } final public function __toString() : string{ - return "Item " . $this->name . " (" . $this->getId() . ":" . ($this->hasAnyDamageValue() ? "?" : $this->getMeta()) . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); + return "Item " . $this->name . " (" . $this->getId() . ":" . $this->getMeta() . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); } /** @@ -647,7 +647,7 @@ class Item implements \JsonSerializable{ * @param int $slot optional, the inventory slot of the item */ public function nbtSerialize(int $slot = -1) : CompoundTag{ - return GlobalItemDataHandlers::getSerializer()->serializeStack($this, $slot !== -1 ? $slot : null); + return GlobalItemDataHandlers::getSerializer()->serializeStack($this, $slot !== -1 ? $slot : null)->toNbt(); } /** diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 6cb668993..432913335 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -457,27 +457,30 @@ class ItemFactory{ public function get(int $id, int $meta = 0, int $count = 1, ?CompoundTag $tags = null) : Item{ /** @var Item|null $item */ $item = null; - if($meta !== -1){ - if(isset($this->list[$offset = self::getListOffset($id, $meta)])){ - $item = clone $this->list[$offset]; - }elseif(isset($this->list[$zero = self::getListOffset($id, 0)]) && $this->list[$zero] instanceof Durable){ - if($meta <= $this->list[$zero]->getMaxDurability()){ - $item = clone $this->list[$zero]; - $item->setDamage($meta); - }else{ - $item = new Item(new IID($id, $meta)); - } - }elseif($id < 256){ //intentionally includes negatives, for extended block IDs - //TODO: do not assume that item IDs and block IDs are the same or related - $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $meta & 0xf); - if($blockStateData !== null){ - try{ - $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); - $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->fromFullBlock($blockStateId)); - }catch(BlockStateDeserializeException $e){ - \GlobalLogger::get()->logException($e); - //fallthru - } + + if($meta < 0 || $meta > 0x7ffe){ //0x7fff would cause problems with recipe wildcards + throw new \InvalidArgumentException("Meta cannot be negative or larger than " . 0x7ffe); + } + + if(isset($this->list[$offset = self::getListOffset($id, $meta)])){ + $item = clone $this->list[$offset]; + }elseif(isset($this->list[$zero = self::getListOffset($id, 0)]) && $this->list[$zero] instanceof Durable){ + if($meta <= $this->list[$zero]->getMaxDurability()){ + $item = clone $this->list[$zero]; + $item->setDamage($meta); + }else{ + $item = new Item(new IID($id, $meta)); + } + }elseif($id < 256){ //intentionally includes negatives, for extended block IDs + //TODO: do not assume that item IDs and block IDs are the same or related + $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $meta & 0xf); + if($blockStateData !== null){ + try{ + $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); + $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->fromFullBlock($blockStateId)); + }catch(BlockStateDeserializeException $e){ + \GlobalLogger::get()->logException($e); + //fallthru } } } diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index 44cb77420..9681a4b0d 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -31,8 +31,11 @@ class ItemIdentifier{ if($id < -0x8000 || $id > 0x7fff){ //signed short range throw new \InvalidArgumentException("ID must be in range " . -0x8000 . " - " . 0x7fff); } + if($meta < 0 || $meta > 0x7ffe){ + throw new \InvalidArgumentException("Meta must be in range 0 - " . 0x7ffe); + } $this->id = $id; - $this->meta = $meta !== -1 ? $meta & 0x7FFF : -1; + $this->meta = $meta; } public function getId() : int{ diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index e05f4d031..6fe1f6063 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -104,6 +104,9 @@ final class LegacyStringToItemParser{ $meta = 0; }elseif(is_numeric($b[1])){ $meta = (int) $b[1]; + if($meta < 0 || $meta > 0x7ffe){ + throw new LegacyStringToItemParserException("Meta value $meta is outside the range 0 - " . 0x7ffe); + } }else{ throw new LegacyStringToItemParserException("Unable to parse \"" . $b[1] . "\" from \"" . $input . "\" as a valid meta value"); } diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index a84a6b81c..8c1cd532d 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe\cache; use pocketmine\crafting\CraftingManager; use pocketmine\crafting\FurnaceType; +use pocketmine\crafting\RecipeIngredient; use pocketmine\crafting\ShapelessRecipeType; use pocketmine\item\Item; use pocketmine\item\ItemFactory; @@ -37,7 +38,7 @@ use pocketmine\network\mcpe\protocol\types\recipe\FurnaceRecipe as ProtocolFurna use pocketmine\network\mcpe\protocol\types\recipe\FurnaceRecipeBlockName; use pocketmine\network\mcpe\protocol\types\recipe\PotionContainerChangeRecipe as ProtocolPotionContainerChangeRecipe; use pocketmine\network\mcpe\protocol\types\recipe\PotionTypeRecipe as ProtocolPotionTypeRecipe; -use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient; +use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient as ProtocolRecipeIngredient; use pocketmine\network\mcpe\protocol\types\recipe\ShapedRecipe as ProtocolShapedRecipe; use pocketmine\network\mcpe\protocol\types\recipe\ShapelessRecipe as ProtocolShapelessRecipe; use pocketmine\timings\Timings; @@ -91,8 +92,8 @@ final class CraftingDataCache{ $recipesWithTypeIds[] = new ProtocolShapelessRecipe( CraftingDataPacket::ENTRY_SHAPELESS, Binary::writeInt(++$counter), - array_map(function(Item $item) use ($converter) : RecipeIngredient{ - return $converter->coreItemStackToRecipeIngredient($item); + array_map(function(RecipeIngredient $item) use ($converter) : ProtocolRecipeIngredient{ + return $converter->coreRecipeIngredientToNet($item); }, $recipe->getIngredientList()), array_map(function(Item $item) use ($converter) : ItemStack{ return $converter->coreItemStackToNet($item); @@ -110,7 +111,7 @@ final class CraftingDataCache{ for($row = 0, $height = $recipe->getHeight(); $row < $height; ++$row){ for($column = 0, $width = $recipe->getWidth(); $column < $width; ++$column){ - $inputs[$row][$column] = $converter->coreItemStackToRecipeIngredient($recipe->getIngredient($column, $row)); + $inputs[$row][$column] = $converter->coreRecipeIngredientToNet($recipe->getIngredient($column, $row)); } } $recipesWithTypeIds[] = $r = new ProtocolShapedRecipe( @@ -136,7 +137,7 @@ final class CraftingDataCache{ default => throw new AssumptionFailedError("Unreachable"), }; foreach($manager->getFurnaceRecipeManager($furnaceType)->getAll() as $recipe){ - $input = $converter->coreItemStackToRecipeIngredient($recipe->getInput()); + $input = $converter->coreRecipeIngredientToNet($recipe->getInput()); $recipesWithTypeIds[] = new ProtocolFurnaceRecipe( CraftingDataPacket::ENTRY_FURNACE_DATA, $input->getId(), diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 44a75c20b..8300fa794 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -29,6 +29,9 @@ use pocketmine\block\inventory\EnchantInventory; use pocketmine\block\inventory\LoomInventory; use pocketmine\block\inventory\StonecutterInventory; use pocketmine\block\VanillaBlocks; +use pocketmine\crafting\ExactRecipeIngredient; +use pocketmine\crafting\MetaWildcardRecipeIngredient; +use pocketmine\crafting\RecipeIngredient; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; use pocketmine\inventory\transaction\action\DropItemAction; @@ -48,11 +51,12 @@ use pocketmine\network\mcpe\protocol\types\inventory\ContainerIds; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\inventory\NetworkInventoryAction; use pocketmine\network\mcpe\protocol\types\inventory\UIInventorySlotOffset; -use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient; +use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient as ProtocolRecipeIngredient; use pocketmine\player\GameMode; use pocketmine\player\Player; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; +use function get_class; class TypeConverter{ use SingletonTrait; @@ -115,39 +119,40 @@ class TypeConverter{ } } - public function coreItemStackToRecipeIngredient(Item $itemStack) : RecipeIngredient{ - if($itemStack->isNull()){ - return new RecipeIngredient(0, 0, 0); + public function coreRecipeIngredientToNet(?RecipeIngredient $ingredient) : ProtocolRecipeIngredient{ + if($ingredient === null){ + return new ProtocolRecipeIngredient(0, 0, 0); } - if($itemStack->hasAnyDamageValue()){ - [$id, ] = ItemTranslator::getInstance()->toNetworkId(ItemFactory::getInstance()->get($itemStack->getId())); + if($ingredient instanceof MetaWildcardRecipeIngredient){ + $id = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromStringId($ingredient->getItemId()); $meta = self::RECIPE_INPUT_WILDCARD_META; - }else{ - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($itemStack); + }elseif($ingredient instanceof ExactRecipeIngredient){ + $item = $ingredient->getItem(); + [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($item); if($id < 256){ //TODO: this is needed for block crafting recipes to work - we need to replace this with some kind of //blockstate <-> meta mapping table so that we can remove the legacy code from the core - $meta = $itemStack->getMeta(); + $meta = $item->getMeta(); } + }else{ + throw new \LogicException("Unsupported recipe ingredient type " . get_class($ingredient) . ", only " . ExactRecipeIngredient::class . " and " . MetaWildcardRecipeIngredient::class . " are supported"); } - return new RecipeIngredient($id, $meta, $itemStack->getCount()); + return new ProtocolRecipeIngredient($id, $meta, 1); } - public function recipeIngredientToCoreItemStack(RecipeIngredient $ingredient) : Item{ + public function netRecipeIngredientToCore(ProtocolRecipeIngredient $ingredient) : ?RecipeIngredient{ if($ingredient->getId() === 0){ - return VanillaItems::AIR(); + return null; + } + + if($ingredient->getMeta() === self::RECIPE_INPUT_WILDCARD_META){ + $itemId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromIntId($ingredient->getId()); + return new MetaWildcardRecipeIngredient($itemId); } //TODO: this won't be handled properly for blockitems because a block runtimeID is expected rather than a meta value - - if($ingredient->getMeta() === self::RECIPE_INPUT_WILDCARD_META){ - $idItem = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), 0, 0); - $result = ItemFactory::getInstance()->get($idItem->getId(), -1); - }else{ - $result = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), $ingredient->getMeta(), 0); - } - $result->setCount($ingredient->getCount()); - return $result; + $result = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), $ingredient->getMeta(), 0); + return new ExactRecipeIngredient($result); } public function coreItemStackToNet(Item $itemStack) : ItemStack{ @@ -237,8 +242,8 @@ class TypeConverter{ if($id !== null && ($id < -0x8000 || $id >= 0x7fff)){ throw new TypeConversionException("Item ID must be in range " . -0x8000 . " ... " . 0x7fff . " (received $id)"); } - if($meta < 0 || $meta >= 0x7fff){ //this meta value may have been restored from the NBT - throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7fff . " (received $meta)"); + if($meta < 0 || $meta >= 0x7ffe){ //this meta value may have been restored from the NBT + throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7ffe . " (received $meta)"); } $itemResult = ItemFactory::getInstance()->get($id ?? $itemResult->getId(), $meta); } From 65ed7d77940f68f294d6ca4f186bebd9f8e20a36 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 13:35:43 +0100 Subject: [PATCH 178/692] Remove Item::hasAnyDamageValue() --- src/item/Item.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/item/Item.php b/src/item/Item.php index 3819b1f1e..52c525ecd 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -441,14 +441,6 @@ class Item implements \JsonSerializable{ return $this->identifier->getMeta(); } - /** - * Returns whether this item can match any item with an equivalent ID with any meta value. - * Used in crafting recipes which accept multiple variants of the same item, for example crafting tables recipes. - */ - public function hasAnyDamageValue() : bool{ - return $this->identifier->getMeta() === -1; - } - /** * Returns the highest amount of this item which will fit into one inventory slot. */ From b61a934c9f6c42861cb21a3a67d30573afd4b7ad Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 14:23:14 +0100 Subject: [PATCH 179/692] CraftingManagerFromDataHelper: fixed recipes with unknown items being registered without said items --- src/crafting/CraftingManagerFromDataHelper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index d6d7608da..bcc829790 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -105,7 +105,7 @@ final class CraftingManagerFromDataHelper{ foreach($recipe["input"] as $inputData){ $input = $ingredientDeserializerFunc($inputData); if($input === null){ //unknown input item - continue; + continue 2; } $inputs[] = $input; } @@ -127,7 +127,7 @@ final class CraftingManagerFromDataHelper{ foreach($recipe["input"] as $symbol => $inputData){ $input = $ingredientDeserializerFunc($inputData); if($input === null){ //unknown input item - continue; + continue 2; } $inputs[$symbol] = $input; } From bedc9cf518848fe46f1703b8321051992c5ff037 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 14:30:12 +0100 Subject: [PATCH 180/692] Item::jsonDeserialize(): remove bogus phpdoc (we don't actually know if this is even valid) --- src/item/Item.php | 8 -------- tests/phpstan/configs/actual-problems.neon | 19 +++++++++++++++++-- .../phpstan/configs/runtime-type-checks.neon | 5 ----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/item/Item.php b/src/item/Item.php index 52c525ecd..f618a687f 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -605,14 +605,6 @@ class Item implements \JsonSerializable{ /** * Returns an Item from properties created in an array by {@link Item#jsonSerialize} * @param mixed[] $data - * @phpstan-param array{ - * id: int, - * damage?: int, - * count?: int, - * nbt?: string, - * nbt_hex?: string, - * nbt_b64?: string - * } $data * * @throws NbtDataException * @throws \InvalidArgumentException diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 77e40efb0..2ec7031d0 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -581,7 +581,7 @@ parameters: path: ../../../src/inventory/CreativeInventory.php - - message: "#^Parameter \\#1 \\$data of static method pocketmine\\\\item\\\\Item\\:\\:jsonDeserialize\\(\\) expects array\\{id\\: int, damage\\?\\: int, count\\?\\: int, nbt\\?\\: string, nbt_hex\\?\\: string, nbt_b64\\?\\: string\\}, mixed given\\.$#" + message: "#^Parameter \\#1 \\$data of static method pocketmine\\\\item\\\\Item\\:\\:jsonDeserialize\\(\\) expects array, mixed given\\.$#" count: 1 path: ../../../src/inventory/CreativeInventory.php @@ -601,7 +601,22 @@ parameters: path: ../../../src/inventory/transaction/CraftingTransaction.php - - message: "#^Parameter \\#1 \\$buffer of method pocketmine\\\\nbt\\\\BaseNbtSerializer\\:\\:read\\(\\) expects string, string\\|false given\\.$#" + message: "#^Cannot cast mixed to int\\.$#" + count: 3 + path: ../../../src/item/Item.php + + - + message: "#^Parameter \\#1 \\$buffer of method pocketmine\\\\nbt\\\\BaseNbtSerializer\\:\\:read\\(\\) expects string, mixed given\\.$#" + count: 1 + path: ../../../src/item/Item.php + + - + message: "#^Parameter \\#1 \\$string of function base64_decode expects string, mixed given\\.$#" + count: 1 + path: ../../../src/item/Item.php + + - + message: "#^Parameter \\#1 \\$string of function hex2bin expects string, mixed given\\.$#" count: 1 path: ../../../src/item/Item.php diff --git a/tests/phpstan/configs/runtime-type-checks.neon b/tests/phpstan/configs/runtime-type-checks.neon index fb1e456b7..04da39f64 100644 --- a/tests/phpstan/configs/runtime-type-checks.neon +++ b/tests/phpstan/configs/runtime-type-checks.neon @@ -1,10 +1,5 @@ parameters: ignoreErrors: - - - message: "#^Casting to int something that's already int\\.$#" - count: 2 - path: ../../../src/item/Item.php - - message: "#^Instanceof between pocketmine\\\\nbt\\\\tag\\\\CompoundTag and pocketmine\\\\nbt\\\\tag\\\\CompoundTag will always evaluate to true\\.$#" count: 1 From 0afb67be7df18777f3c385c6056dd7a62126aed6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 15:37:05 +0100 Subject: [PATCH 181/692] Improve BlockFactory initialization performance as expected, expanding data range unconditionally resulted in some performance issues ... --- src/block/Anvil.php | 2 ++ src/block/Bamboo.php | 2 ++ src/block/BambooSapling.php | 2 ++ src/block/Barrel.php | 2 ++ src/block/BaseBanner.php | 3 +++ src/block/Bed.php | 2 ++ src/block/Bedrock.php | 2 ++ src/block/Bell.php | 2 ++ src/block/Block.php | 17 +++++++++++++++-- src/block/BlockFactory.php | 6 +++++- src/block/BrewingStand.php | 2 ++ src/block/Button.php | 2 ++ src/block/Cactus.php | 2 ++ src/block/Cake.php | 2 ++ src/block/CocoaBlock.php | 2 ++ src/block/Crops.php | 2 ++ src/block/DaylightSensor.php | 2 ++ src/block/DetectorRail.php | 2 ++ src/block/Dirt.php | 2 ++ src/block/Door.php | 3 +++ src/block/DoublePlant.php | 2 ++ src/block/EndPortalFrame.php | 2 ++ src/block/Farmland.php | 2 ++ src/block/FenceGate.php | 2 ++ src/block/Fire.php | 2 ++ src/block/FloorBanner.php | 2 ++ src/block/FloorCoralFan.php | 2 ++ src/block/FrostedIce.php | 2 ++ src/block/Furnace.php | 2 ++ src/block/Hopper.php | 2 ++ src/block/ItemFrame.php | 2 ++ src/block/Lantern.php | 2 ++ src/block/Leaves.php | 2 ++ src/block/Lectern.php | 2 ++ src/block/Lever.php | 2 ++ src/block/Liquid.php | 2 ++ src/block/NetherPortal.php | 2 ++ src/block/NetherWartPlant.php | 2 ++ src/block/Rail.php | 2 ++ src/block/RedMushroomBlock.php | 2 ++ src/block/RedstoneComparator.php | 2 ++ src/block/RedstoneLamp.php | 2 ++ src/block/RedstoneOre.php | 2 ++ src/block/RedstoneRepeater.php | 2 ++ src/block/RedstoneTorch.php | 2 ++ src/block/Sapling.php | 2 ++ src/block/SeaPickle.php | 2 ++ src/block/ShulkerBox.php | 2 ++ src/block/SimplePressurePlate.php | 2 ++ src/block/Skull.php | 2 ++ src/block/Slab.php | 2 ++ src/block/SnowLayer.php | 2 ++ src/block/Sponge.php | 2 ++ src/block/Stair.php | 2 ++ src/block/StraightOnlyRail.php | 2 ++ src/block/Sugarcane.php | 2 ++ src/block/SweetBerryBush.php | 2 ++ src/block/TNT.php | 2 ++ src/block/Torch.php | 2 ++ src/block/Trapdoor.php | 2 ++ src/block/Tripwire.php | 2 ++ src/block/TripwireHook.php | 2 ++ src/block/Vine.php | 2 ++ src/block/Wall.php | 2 ++ src/block/WallBanner.php | 2 ++ src/block/WallCoralFan.php | 2 ++ .../utils/AnalogRedstoneSignalEmitterTrait.php | 2 ++ src/block/utils/AnyFacingTrait.php | 3 +++ src/block/utils/BlockDataReader.php | 2 ++ src/block/utils/ColoredTrait.php | 2 ++ src/block/utils/CoralTypeTrait.php | 2 ++ src/block/utils/HorizontalFacingTrait.php | 2 ++ src/block/utils/PillarRotationTrait.php | 2 ++ src/block/utils/RailPoweredByRedstoneTrait.php | 2 ++ src/block/utils/SignLikeRotationTrait.php | 2 ++ 75 files changed, 169 insertions(+), 3 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 25e48ac60..71fd04625 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,6 +51,8 @@ class Anvil extends Transparent implements Fallable{ return $this->damage << 2; } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); $this->setFacing($r->readHorizontalFacing()); diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index a5b2e35e8..ccd63ced9 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -55,6 +55,8 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->setLeafSize($r->readBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES)); $this->setThick($r->readBool()); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 5d476ff8f..66b816241 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -36,6 +36,8 @@ use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ private bool $ready = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->setReady($r->readBool()); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 8979622ba..748bfd335 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -39,6 +39,8 @@ class Barrel extends Opaque{ protected bool $open = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->setFacing($r->readFacing()); $this->setOpen($r->readBool()); diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index d785bca1c..ea3352127 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -55,6 +55,9 @@ abstract class BaseBanner extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } + + public function getRequiredStateDataBits() : int{ return 0; } + protected function decodeState(BlockDataReader $r) : void{ //TODO: we currently purposely don't read or write colour (it's stored on the tile) } diff --git a/src/block/Bed.php b/src/block/Bed.php index 80851c131..bf9aa730a 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -54,6 +54,8 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->occupied = $r->readBool(); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index ed77833bb..3528e8d42 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -29,6 +29,8 @@ use pocketmine\block\utils\BlockDataWriter; class Bedrock extends Opaque{ private bool $burnsForever = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->burnsForever = $r->readBool(); } diff --git a/src/block/Bell.php b/src/block/Bell.php index 9a9fad9d9..3388bb516 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -49,6 +49,8 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->attachmentType = BlockDataReaderHelper::readBellAttachmentType($r); $this->facing = $r->readHorizontalFacing(); diff --git a/src/block/Block.php b/src/block/Block.php index 4bdc776f2..80da4dea6 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -100,9 +100,16 @@ class Block{ return 0; } + public function getRequiredStateDataBits() : int{ return 0; } + public function decodeStateData(int $data) : void{ - $reader = new BlockDataReader(self::INTERNAL_STATE_DATA_BITS, $data); + $givenBits = $this->getRequiredStateDataBits(); + $reader = new BlockDataReader($givenBits, $data); $this->decodeState($reader); + $readBits = $reader->getOffset(); + if($givenBits !== $readBits){ + throw new \LogicException("Exactly $givenBits bits of state data were provided, but only $readBits were read"); + } } protected function decodeState(BlockDataReader $r) : void{ @@ -113,8 +120,14 @@ class Block{ * @internal */ public function computeStateData() : int{ - $writer = new BlockDataWriter(self::INTERNAL_STATE_DATA_BITS); + $requiredBits = $this->getRequiredStateDataBits(); + $writer = new BlockDataWriter($requiredBits); $this->encodeState($writer); + + $writtenBits = $writer->getOffset(); + if($requiredBits !== $writtenBits){ + throw new \LogicException("Exactly $requiredBits bits of state data were expected, but only $writtenBits were written"); + } return $writer->getValue(); } diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 7af168522..1e3c48a1b 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -864,7 +864,11 @@ class BlockFactory{ //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes //at some point we'll need to find a better way to do this - for($stateData = 0; $stateData < (1 << Block::INTERNAL_STATE_DATA_BITS); ++$stateData){ + $bits = $block->getRequiredStateDataBits(); + if($bits > Block::INTERNAL_STATE_DATA_BITS){ + throw new \InvalidArgumentException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); + } + for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ $v = clone $block; try{ $v->decodeStateData($stateData); diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 20b1d802e..5c732689e 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -46,6 +46,8 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->setSlots(BlockDataReaderHelper::readBrewingStandSlotKeySet($r)); } diff --git a/src/block/Button.php b/src/block/Button.php index 6e45df559..82db565ef 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -39,6 +39,8 @@ abstract class Button extends Flowable{ protected bool $pressed = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readFacing(); $this->pressed = $r->readBool(); diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 56b9129a3..3b69e0f43 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -42,6 +42,8 @@ class Cactus extends Transparent{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 770b8fcfe..40b100f0b 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -41,6 +41,8 @@ class Cake extends Transparent implements FoodSource{ protected int $bites = 0; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->bites = $r->readBoundedInt(3, 0, self::MAX_BITES); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index b21af5e63..89f8bccf6 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -47,6 +47,8 @@ class CocoaBlock extends Transparent{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); diff --git a/src/block/Crops.php b/src/block/Crops.php index f7823a8eb..a4976f044 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -39,6 +39,8 @@ abstract class Crops extends Flowable{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(3, 0, self::MAX_AGE); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 01c7040a4..da4c034a8 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -42,6 +42,8 @@ class DaylightSensor extends Transparent{ protected bool $inverted = false; + public function getRequiredStateDataBits() : int{ return 5; } + protected function decodeState(BlockDataReader $r) : void{ $this->signalStrength = $r->readBoundedInt(4, 0, 15); $this->inverted = $r->readBool(); diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index ad4d95810..ecf7ee50d 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -29,6 +29,8 @@ use pocketmine\block\utils\BlockDataWriter; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->activated = $r->readBool(); diff --git a/src/block/Dirt.php b/src/block/Dirt.php index d926000aa..f163beebe 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -39,6 +39,8 @@ class Dirt extends Opaque{ return $this->coarse ? BlockLegacyMetadata::DIRT_FLAG_COARSE : 0; } + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->coarse = $r->readBool(); } diff --git a/src/block/Door.php b/src/block/Door.php index 6f3654ca5..f6ad3a16c 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -42,6 +42,9 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; + + public function getRequiredStateDataBits() : int{ return 5; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->top = $r->readBool(); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 14d363794..add4fce8e 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -34,6 +34,8 @@ use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ protected bool $top = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->top = $r->readBool(); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index e9c69b1fc..aace740a6 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -36,6 +36,8 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->eye = $r->readBool(); diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 8dfb3f6f7..97a24fa72 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -38,6 +38,8 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->wetness = $r->readBoundedInt(3, 0, self::MAX_WETNESS); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 0cec6374e..1541322bb 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -41,6 +41,8 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->open = $r->readBool(); diff --git a/src/block/Fire.php b/src/block/Fire.php index b9da2f33a..d13ca247a 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -46,6 +46,8 @@ class Fire extends Flowable{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } diff --git a/src/block/FloorBanner.php b/src/block/FloorBanner.php index 5e0074477..8da061e9b 100644 --- a/src/block/FloorBanner.php +++ b/src/block/FloorBanner.php @@ -38,6 +38,8 @@ final class FloorBanner extends BaseBanner{ encodeState as encodeRotation; } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->decodeRotation($r); diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index d1515eef9..8e5377f23 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -52,6 +52,8 @@ final class FloorCoralFan extends BaseCoral{ return CoralTypeIdMap::getInstance()->toId($this->coralType); } + public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->axis = $r->readHorizontalAxis(); diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index e6addea5c..be19be5b4 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -33,6 +33,8 @@ class FrostedIce extends Ice{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 1bb6191aa..0dc1e0d1c 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -39,6 +39,8 @@ class Furnace extends Opaque{ protected bool $lit = false; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->lit = $r->readBool(); diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 320fd1ce7..f8ce02fd7 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -41,6 +41,8 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::UP){ diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 31f802f1d..762b5d6b0 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -47,6 +47,8 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readFacing(); $this->hasMap = $r->readBool(); diff --git a/src/block/Lantern.php b/src/block/Lantern.php index ec54070f3..54a7e1b8c 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -37,6 +37,8 @@ use pocketmine\world\BlockTransaction; class Lantern extends Transparent{ protected bool $hanging = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->hanging = $r->readBool(); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 4a753db52..77d557f59 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -49,6 +49,8 @@ class Leaves extends Transparent{ $this->treeType = $treeType; } + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->noDecay = $r->readBool(); $this->checkDecay = $r->readBool(); diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 7f8e73105..708dcd47d 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -47,6 +47,8 @@ class Lectern extends Transparent{ protected bool $producingSignal = false; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->producingSignal = $r->readBool(); diff --git a/src/block/Lever.php b/src/block/Lever.php index bf006d30e..652dd7286 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -47,6 +47,8 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = BlockDataReaderHelper::readLeverFacing($r); $this->activated = $r->readBool(); diff --git a/src/block/Liquid.php b/src/block/Liquid.php index e3aca2a52..dca825ad8 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -49,6 +49,8 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; + public function getRequiredStateDataBits() : int{ return 5; } + protected function decodeState(BlockDataReader $r) : void{ $this->decay = $r->readBoundedInt(3, 0, self::MAX_DECAY); $this->falling = $r->readBool(); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 0d94449e0..5317de232 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -35,6 +35,8 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->axis = $r->readHorizontalAxis(); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index b07644fa5..9cd151657 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -38,6 +38,8 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 4b5ae94d6..dc93f15d6 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -35,6 +35,8 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $railShape = $r->readInt(4); if(!isset(RailConnectionInfo::CONNECTIONS[$railShape]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$railShape])){ diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index f2a22a744..22a141d2a 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -39,6 +39,8 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->mushroomBlockType = BlockDataReaderHelper::readMushroomBlockType($r); } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index 8abb70a21..cc2dbaa89 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -45,6 +45,8 @@ class RedstoneComparator extends Flowable{ protected bool $isSubtractMode = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->isSubtractMode = $r->readBool(); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index de84d7445..6a6919edc 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -30,6 +30,8 @@ use pocketmine\block\utils\PoweredByRedstoneTrait; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->powered = $r->readBool(); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 29946ee47..769521857 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -34,6 +34,8 @@ use function mt_rand; class RedstoneOre extends Opaque{ protected bool $lit = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->lit = $r->readBool(); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index ed6fe01a6..c56869f9a 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -44,6 +44,8 @@ class RedstoneRepeater extends Flowable{ protected int $delay = self::MIN_DELAY; + public function getRequiredStateDataBits() : int{ return 5; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->delay = $r->readBoundedInt(2, self::MIN_DELAY - 1, self::MAX_DELAY - 1) + 1; diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index 78d5d282c..ada02e26c 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -29,6 +29,8 @@ use pocketmine\block\utils\BlockDataWriter; class RedstoneTorch extends Torch{ protected bool $lit = true; + public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->lit = $r->readBool(); diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 1c4e87b59..f2bfd2af4 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -47,6 +47,8 @@ class Sapling extends Flowable{ $this->treeType = $treeType; } + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->ready = $r->readBool(); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index b2e304765..c85d700a9 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -39,6 +39,8 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->count = $r->readBoundedInt(2, self::MIN_COUNT - 1, self::MAX_COUNT - 1) + 1; $this->underwater = $r->readBool(); diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index b602555ac..bec196838 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -35,6 +35,8 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; + public function getRequiredStateDataBits() : int{ return 0; } + protected function decodeState(BlockDataReader $r) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index 205583b41..7bdfc7118 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -29,6 +29,8 @@ use pocketmine\block\utils\BlockDataWriter; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->pressed = $r->readBool(); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 3495027af..50b56f3d0 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -51,6 +51,8 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::DOWN){ diff --git a/src/block/Slab.php b/src/block/Slab.php index c39e0de84..6abab61f6 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -44,6 +44,8 @@ class Slab extends Transparent{ $this->slabType = SlabType::BOTTOM(); } + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->slabType = BlockDataReaderHelper::readSlabType($r); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 193d17799..9894dd43a 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -47,6 +47,8 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS - 1, self::MAX_LAYERS - 1) + 1; } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index f5ee824bb..8f9024268 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -33,6 +33,8 @@ class Sponge extends Opaque{ return $this->wet ? BlockLegacyMetadata::SPONGE_FLAG_WET : 0; } + public function getRequiredStateDataBits() : int{ return 1; } + protected function decodeState(BlockDataReader $r) : void{ $this->wet = $r->readBool(); } diff --git a/src/block/Stair.php b/src/block/Stair.php index ab188c53a..9242b36ab 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -47,6 +47,8 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->upsideDown = $r->readBool(); diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 8d9642987..c2c171642 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -37,6 +37,8 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $railShape = $r->readInt(3); if(!isset(RailConnectionInfo::CONNECTIONS[$railShape])){ diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 51726bcff..320a484f8 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -38,6 +38,8 @@ class Sugarcane extends Flowable{ protected int $age = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 3fdfc9a4d..a8c302d61 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -46,6 +46,8 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->age = $r->readBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE); } diff --git a/src/block/TNT.php b/src/block/TNT.php index 18dea8793..80f83e015 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -49,6 +49,8 @@ class TNT extends Opaque{ return $this->worksUnderwater ? BlockLegacyMetadata::TNT_FLAG_UNDERWATER : 0; } + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->unstable = $r->readBool(); $this->worksUnderwater = $r->readBool(); diff --git a/src/block/Torch.php b/src/block/Torch.php index d9e3ed95d..02cbec2d2 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -38,6 +38,8 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::DOWN){ diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 61d4d58c9..42f973a4b 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -41,6 +41,8 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->top = $r->readBool(); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index bb045c782..954fa888a 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -32,6 +32,8 @@ class Tripwire extends Flowable{ protected bool $connected = false; protected bool $disarmed = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->triggered = $r->readBool(); $this->suspended = $r->readBool(); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index b0fc4876f..2f76f184f 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -39,6 +39,8 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->connected = $r->readBool(); diff --git a/src/block/Vine.php b/src/block/Vine.php index 4505bb366..1ac2157ef 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -40,6 +40,8 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ foreach(Facing::HORIZONTAL as $facing){ $this->setFace($facing, $r->readBool()); diff --git a/src/block/Wall.php b/src/block/Wall.php index a97aba751..ae781b32d 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -43,6 +43,8 @@ class Wall extends Transparent{ protected array $connections = []; protected bool $post = false; + public function getRequiredStateDataBits() : int{ return 9; } + protected function decodeState(BlockDataReader $r) : void{ $this->connections = $r->readWallConnections(); $this->post = $r->readBool(); diff --git a/src/block/WallBanner.php b/src/block/WallBanner.php index f3e3b251d..8eee17959 100644 --- a/src/block/WallBanner.php +++ b/src/block/WallBanner.php @@ -39,6 +39,8 @@ final class WallBanner extends BaseBanner{ encodeState as encodeFacing; } + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->decodeFacing($r); diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 5e95803e7..125fda907 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -43,6 +43,8 @@ final class WallCoralFan extends BaseCoral{ return CoralTypeIdMap::getInstance()->toId($this->coralType); } + public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->facing = $r->readHorizontalFacing(); diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 0089e5a02..aa037f1ca 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -26,6 +26,8 @@ namespace pocketmine\block\utils; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->signalStrength = $r->readBoundedInt(4, 0, 15); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 0394d60a4..6c9e35e6b 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -28,6 +28,9 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; + + public function getRequiredStateDataBits() : int{ return 3; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readFacing(); } diff --git a/src/block/utils/BlockDataReader.php b/src/block/utils/BlockDataReader.php index 22d55dbc8..dbb3f9386 100644 --- a/src/block/utils/BlockDataReader.php +++ b/src/block/utils/BlockDataReader.php @@ -118,4 +118,6 @@ final class BlockDataReader{ return $connections; } + + public function getOffset() : int{ return $this->offset; } } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 908f1bf6a..a8efd46ae 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -37,6 +37,8 @@ trait ColoredTrait{ return DyeColorIdMap::getInstance()->toId($this->color); } + public function getRequiredStateDataBits() : int{ return 4; } + /** @see Block::decodeState() */ protected function decodeState(BlockDataReader $r) : void{ $this->color = BlockDataReaderHelper::readDyeColor($r); diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 7f7f5be8f..c91213a13 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -27,6 +27,8 @@ trait CoralTypeTrait{ protected CoralType $coralType; protected bool $dead = false; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->coralType = BlockDataReaderHelper::readCoralType($r); $this->dead = $r->readBool(); diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 13a3d913c..0da0a9ca1 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -29,6 +29,8 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 3da41373c..1d4503ff7 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -34,6 +34,8 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; + public function getRequiredStateDataBits() : int{ return 2; } + protected function decodeState(BlockDataReader $r) : void{ $this->axis = $r->readAxis(); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index c65f0c8b9..9bc98303a 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -26,6 +26,8 @@ namespace pocketmine\block\utils; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; + public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } + protected function decodeState(BlockDataReader $r) : void{ parent::decodeState($r); $this->powered = $r->readBool(); diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index e35bf3574..e4ee5f868 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -29,6 +29,8 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; + public function getRequiredStateDataBits() : int{ return 4; } + protected function decodeState(BlockDataReader $r) : void{ $this->rotation = $r->readBoundedInt(4, 0, 15); } From 7deee3150283660aa55d86147c4a931d5e642451 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 15:40:39 +0100 Subject: [PATCH 182/692] Block: make decodeStateData() and computeStateData() final --- src/block/Block.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 80da4dea6..363ddd6c1 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -102,7 +102,7 @@ class Block{ public function getRequiredStateDataBits() : int{ return 0; } - public function decodeStateData(int $data) : void{ + final public function decodeStateData(int $data) : void{ $givenBits = $this->getRequiredStateDataBits(); $reader = new BlockDataReader($givenBits, $data); $this->decodeState($reader); @@ -119,7 +119,7 @@ class Block{ /** * @internal */ - public function computeStateData() : int{ + final public function computeStateData() : int{ $requiredBits = $this->getRequiredStateDataBits(); $writer = new BlockDataWriter($requiredBits); $this->encodeState($writer); From 2fd9b751b6d950fcc592fc413473f44ed0184a45 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 16:26:53 +0100 Subject: [PATCH 183/692] Log: remove dead code --- src/block/Log.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/block/Log.php b/src/block/Log.php index 88314eaf0..09b064855 100644 --- a/src/block/Log.php +++ b/src/block/Log.php @@ -27,8 +27,4 @@ use pocketmine\block\utils\PillarRotationTrait; class Log extends Wood{ use PillarRotationTrait; - - protected function getAxisMetaShift() : int{ - return $this->isStripped() ? 0 : 2; - } } From 541a624d483cb5cc621b8708f22d208ab2bebd0e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 17:14:43 +0100 Subject: [PATCH 184/692] ItemFactory::get() now consistently throws SavedDataLoadingException on any error, including unknown items --- .../CraftingManagerFromDataHelper.php | 73 +++++++++---------- .../bedrock/item/upgrade/ItemDataUpgrader.php | 2 + src/inventory/CreativeInventory.php | 7 +- src/item/Item.php | 4 +- src/item/ItemFactory.php | 30 ++++---- src/item/LegacyStringToItemParser.php | 10 ++- src/network/mcpe/convert/TypeConverter.php | 11 ++- 7 files changed, 69 insertions(+), 68 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index bcc829790..d4bb14b3d 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\crafting; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; -use pocketmine\item\Durable; +use pocketmine\data\SavedDataLoadingException; use pocketmine\item\Item; use pocketmine\item\ItemFactory; use pocketmine\utils\AssumptionFailedError; @@ -37,26 +37,6 @@ use function is_int; use function json_decode; final class CraftingManagerFromDataHelper{ - - /** - * @param Item[] $items - */ - private static function containsUnknownItems(array $items) : bool{ - $factory = ItemFactory::getInstance(); - foreach($items as $item){ - if($item instanceof Durable){ - //TODO: this check is imperfect and might cause problems if meta 0 isn't used for some reason - if(!$factory->isRegistered($item->getId())){ - return true; - } - }elseif(!$factory->isRegistered($item->getId(), $item->getMeta())){ - return true; - } - } - - return false; - } - /** * @param mixed[] $data */ @@ -76,9 +56,14 @@ final class CraftingManagerFromDataHelper{ } //TODO: we need to stop using jsonDeserialize for this - $item = Item::jsonDeserialize($data); + try{ + $item = Item::jsonDeserialize($data); + }catch(SavedDataLoadingException){ + //unknown item + return null; + } - return self::containsUnknownItems([$item]) ? null : new ExactRecipeIngredient($item); + return new ExactRecipeIngredient($item); } public static function make(string $filePath) : CraftingManager{ @@ -109,8 +94,10 @@ final class CraftingManagerFromDataHelper{ } $inputs[] = $input; } - $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - if(self::containsUnknownItems($outputs)){ + try{ + $outputs = array_map($itemDeserializerFunc, $recipe["output"]); + }catch(SavedDataLoadingException){ + //unknown output item continue; } $result->registerShapelessRecipe(new ShapelessRecipe( @@ -131,8 +118,10 @@ final class CraftingManagerFromDataHelper{ } $inputs[$symbol] = $input; } - $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - if(self::containsUnknownItems($outputs)){ + try{ + $outputs = array_map($itemDeserializerFunc, $recipe["output"]); + }catch(SavedDataLoadingException){ + //unknown output item continue; } $result->registerShapedRecipe(new ShapedRecipe( @@ -152,9 +141,13 @@ final class CraftingManagerFromDataHelper{ if($furnaceType === null){ continue; } - $output = Item::jsonDeserialize($recipe["output"]); + try{ + $output = Item::jsonDeserialize($recipe["output"]); + }catch(SavedDataLoadingException){ + continue; + } $input = self::deserializeIngredient($recipe["input"]); - if($input === null || self::containsUnknownItems([$output])){ + if($input === null){ continue; } $result->getFurnaceRecipeManager($furnaceType)->register(new FurnaceRecipe( @@ -163,11 +156,12 @@ final class CraftingManagerFromDataHelper{ )); } foreach($recipes["potion_type"] as $recipe){ - $input = Item::jsonDeserialize($recipe["input"]); - $ingredient = Item::jsonDeserialize($recipe["ingredient"]); - $output = Item::jsonDeserialize($recipe["output"]); - - if(self::containsUnknownItems([$input, $ingredient, $output])){ + try{ + $input = Item::jsonDeserialize($recipe["input"]); + $ingredient = Item::jsonDeserialize($recipe["ingredient"]); + $output = Item::jsonDeserialize($recipe["output"]); + }catch(SavedDataLoadingException){ + //unknown item continue; } $result->registerPotionTypeRecipe(new PotionTypeRecipe( @@ -177,11 +171,12 @@ final class CraftingManagerFromDataHelper{ )); } foreach($recipes["potion_container_change"] as $recipe){ - $input = ItemFactory::getInstance()->get($recipe["input_item_id"]); - $ingredient = Item::jsonDeserialize($recipe["ingredient"]); - $output = ItemFactory::getInstance()->get($recipe["output_item_id"]); - - if(self::containsUnknownItems([$input, $ingredient, $output])){ + try{ + $input = ItemFactory::getInstance()->get($recipe["input_item_id"]); + $ingredient = Item::jsonDeserialize($recipe["ingredient"]); + $output = ItemFactory::getInstance()->get($recipe["output_item_id"]); + }catch(SavedDataLoadingException){ + //unknown item continue; } $result->registerPotionContainerChangeRecipe(new PotionContainerChangeRecipe( diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 6e73c02b9..e01aeb791 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -102,6 +102,8 @@ final class ItemDataUpgrader{ /** * This function replaces the legacy ItemFactory::get(). + * + * @throws SavedDataLoadingException if the legacy numeric ID doesn't map to a string ID */ public function upgradeItemTypeDataInt(int $legacyNumericId, int $meta, int $count, ?CompoundTag $nbt) : SavedItemStackData{ $rawNameId = $this->legacyIntToStringIdMap->legacyToString($legacyNumericId); diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 40b3075d2..f3943907c 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\inventory; +use pocketmine\data\SavedDataLoadingException; use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; @@ -40,8 +41,10 @@ final class CreativeInventory{ $creativeItems = json_decode(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "creativeitems.json")), true); foreach($creativeItems as $data){ - $item = Item::jsonDeserialize($data); - if($item->getName() === "Unknown"){ + try{ + $item = Item::jsonDeserialize($data); + }catch(SavedDataLoadingException){ + //unknown item continue; } $this->add($item); diff --git a/src/item/Item.php b/src/item/Item.php index f618a687f..60605d7a8 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -38,7 +38,6 @@ use pocketmine\item\enchantment\EnchantmentInstance; use pocketmine\math\Vector3; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NBT; -use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; @@ -606,8 +605,7 @@ class Item implements \JsonSerializable{ * Returns an Item from properties created in an array by {@link Item#jsonSerialize} * @param mixed[] $data * - * @throws NbtDataException - * @throws \InvalidArgumentException + * @throws SavedDataLoadingException */ final public static function jsonDeserialize(array $data) : Item{ $nbt = ""; diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 432913335..c9c45003b 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -36,6 +36,7 @@ use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\data\bedrock\PotionTypeIdMap; +use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\Squid; @@ -50,6 +51,7 @@ use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\SingletonTrait; use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\World; +use function min; /** * Manages deserializing item types from their legacy ID/metadata. @@ -451,26 +453,24 @@ class ItemFactory{ * * Deserializes an item from the provided legacy ID, legacy meta, count and NBT. * - * @throws \InvalidArgumentException - * @throws NbtException + * @throws SavedDataLoadingException */ public function get(int $id, int $meta = 0, int $count = 1, ?CompoundTag $tags = null) : Item{ /** @var Item|null $item */ $item = null; + if($id < -0x8000 || $id > 0x7fff){ + throw new SavedDataLoadingException("Legacy ID must be in the range " . -0x8000 . " ... " . 0x7fff); + } if($meta < 0 || $meta > 0x7ffe){ //0x7fff would cause problems with recipe wildcards - throw new \InvalidArgumentException("Meta cannot be negative or larger than " . 0x7ffe); + throw new SavedDataLoadingException("Meta cannot be negative or larger than " . 0x7ffe); } if(isset($this->list[$offset = self::getListOffset($id, $meta)])){ $item = clone $this->list[$offset]; }elseif(isset($this->list[$zero = self::getListOffset($id, 0)]) && $this->list[$zero] instanceof Durable){ - if($meta <= $this->list[$zero]->getMaxDurability()){ - $item = clone $this->list[$zero]; - $item->setDamage($meta); - }else{ - $item = new Item(new IID($id, $meta)); - } + $item = clone $this->list[$zero]; + $item->setDamage(min($meta, $this->list[$zero]->getMaxDurability())); }elseif($id < 256){ //intentionally includes negatives, for extended block IDs //TODO: do not assume that item IDs and block IDs are the same or related $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $meta & 0xf); @@ -479,20 +479,22 @@ class ItemFactory{ $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->fromFullBlock($blockStateId)); }catch(BlockStateDeserializeException $e){ - \GlobalLogger::get()->logException($e); - //fallthru + throw new SavedDataLoadingException("Failed to deserialize itemblock: " . $e->getMessage(), 0, $e); } } } if($item === null){ - //negative damage values will fallthru to here, to avoid crazy shit with crafting wildcard hacks - $item = new Item(new IID($id, $meta)); + throw new SavedDataLoadingException("No registered item is associated with this ID and meta"); } $item->setCount($count); if($tags !== null){ - $item->setNamedTag($tags); + try{ + $item->setNamedTag($tags); + }catch(NbtException $e){ + throw new SavedDataLoadingException("Invalid item NBT: " . $e->getMessage(), 0, $e); + } } return $item; } diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index 6fe1f6063..5450e0bb0 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\SavedDataLoadingException; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; @@ -104,15 +105,16 @@ final class LegacyStringToItemParser{ $meta = 0; }elseif(is_numeric($b[1])){ $meta = (int) $b[1]; - if($meta < 0 || $meta > 0x7ffe){ - throw new LegacyStringToItemParserException("Meta value $meta is outside the range 0 - " . 0x7ffe); - } }else{ throw new LegacyStringToItemParserException("Unable to parse \"" . $b[1] . "\" from \"" . $input . "\" as a valid meta value"); } if(isset($this->map[strtolower($b[0])])){ - $item = $this->itemFactory->get($this->map[strtolower($b[0])], $meta); + try{ + $item = $this->itemFactory->get($this->map[strtolower($b[0])], $meta); + }catch(SavedDataLoadingException $e){ + throw new LegacyStringToItemParserException($e->getMessage(), 0, $e); + } }else{ throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 8300fa794..ec699e62a 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -32,6 +32,7 @@ use pocketmine\block\VanillaBlocks; use pocketmine\crafting\ExactRecipeIngredient; use pocketmine\crafting\MetaWildcardRecipeIngredient; use pocketmine\crafting\RecipeIngredient; +use pocketmine\data\SavedDataLoadingException; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; use pocketmine\inventory\transaction\action\DropItemAction; @@ -239,13 +240,11 @@ class TypeConverter{ $compound = null; } if($meta !== null){ - if($id !== null && ($id < -0x8000 || $id >= 0x7fff)){ - throw new TypeConversionException("Item ID must be in range " . -0x8000 . " ... " . 0x7fff . " (received $id)"); + try{ + $itemResult = ItemFactory::getInstance()->get($id ?? $itemResult->getId(), $meta); + }catch(SavedDataLoadingException $e){ + throw new TypeConversionException("Failed loading network item: " . $e->getMessage(), 0, $e); } - if($meta < 0 || $meta >= 0x7ffe){ //this meta value may have been restored from the NBT - throw new TypeConversionException("Item meta must be in range 0 ... " . 0x7ffe . " (received $meta)"); - } - $itemResult = ItemFactory::getInstance()->get($id ?? $itemResult->getId(), $meta); } } From c0e178c19cb4db05c7072dfd44e2557868dfadad Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 27 Jun 2022 17:15:16 +0100 Subject: [PATCH 185/692] fix CS --- src/block/BaseBanner.php | 1 - src/block/Door.php | 1 - src/block/utils/AnyFacingTrait.php | 1 - 3 files changed, 3 deletions(-) diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index ea3352127..75e551eef 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -55,7 +55,6 @@ abstract class BaseBanner extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - public function getRequiredStateDataBits() : int{ return 0; } protected function decodeState(BlockDataReader $r) : void{ diff --git a/src/block/Door.php b/src/block/Door.php index f6ad3a16c..7843a9377 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -42,7 +42,6 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - public function getRequiredStateDataBits() : int{ return 5; } protected function decodeState(BlockDataReader $r) : void{ diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 6c9e35e6b..982d5623c 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -28,7 +28,6 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; - public function getRequiredStateDataBits() : int{ return 3; } protected function decodeState(BlockDataReader $r) : void{ From 60580328078f6ee9eb83082f198508da4e2b13e9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 28 Jun 2022 23:33:25 +0100 Subject: [PATCH 186/692] Make potion types dynamic It became obvious this was needed when I wanted to make new IDs for existing items - there's no way I'm unrolling those registrations... --- src/data/bedrock/item/ItemDeserializer.php | 93 +---------- src/data/bedrock/item/ItemSerializer.php | 105 +------------ src/item/ItemFactory.php | 6 +- src/item/Potion.php | 17 +- src/item/SplashPotion.php | 17 +- src/item/StringToItemParser.php | 172 ++++++++++----------- src/item/VanillaItems.php | 172 +-------------------- 7 files changed, 128 insertions(+), 454 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 1fc93a77b..37fbdad7b 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -37,7 +37,6 @@ use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\item\Item; -use pocketmine\item\PotionType; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; @@ -493,51 +492,7 @@ final class ItemDeserializer{ if($potionType === null){ throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); } - return match($potionType->id()){ - PotionType::WATER()->id() => Items::WATER_POTION(), - PotionType::MUNDANE()->id() => Items::MUNDANE_POTION(), - PotionType::LONG_MUNDANE()->id() => Items::LONG_MUNDANE_POTION(), - PotionType::THICK()->id() => Items::THICK_POTION(), - PotionType::AWKWARD()->id() => Items::AWKWARD_POTION(), - PotionType::NIGHT_VISION()->id() => Items::NIGHT_VISION_POTION(), - PotionType::LONG_NIGHT_VISION()->id() => Items::LONG_NIGHT_VISION_POTION(), - PotionType::INVISIBILITY()->id() => Items::INVISIBILITY_POTION(), - PotionType::LONG_INVISIBILITY()->id() => Items::LONG_INVISIBILITY_POTION(), - PotionType::LEAPING()->id() => Items::LEAPING_POTION(), - PotionType::LONG_LEAPING()->id() => Items::LONG_LEAPING_POTION(), - PotionType::STRONG_LEAPING()->id() => Items::STRONG_LEAPING_POTION(), - PotionType::FIRE_RESISTANCE()->id() => Items::FIRE_RESISTANCE_POTION(), - PotionType::LONG_FIRE_RESISTANCE()->id() => Items::LONG_FIRE_RESISTANCE_POTION(), - PotionType::SWIFTNESS()->id() => Items::SWIFTNESS_POTION(), - PotionType::LONG_SWIFTNESS()->id() => Items::LONG_SWIFTNESS_POTION(), - PotionType::STRONG_SWIFTNESS()->id() => Items::STRONG_SWIFTNESS_POTION(), - PotionType::SLOWNESS()->id() => Items::SLOWNESS_POTION(), - PotionType::LONG_SLOWNESS()->id() => Items::LONG_SLOWNESS_POTION(), - PotionType::WATER_BREATHING()->id() => Items::WATER_BREATHING_POTION(), - PotionType::LONG_WATER_BREATHING()->id() => Items::LONG_WATER_BREATHING_POTION(), - PotionType::HEALING()->id() => Items::HEALING_POTION(), - PotionType::STRONG_HEALING()->id() => Items::STRONG_HEALING_POTION(), - PotionType::HARMING()->id() => Items::HARMING_POTION(), - PotionType::STRONG_HARMING()->id() => Items::STRONG_HARMING_POTION(), - PotionType::POISON()->id() => Items::POISON_POTION(), - PotionType::LONG_POISON()->id() => Items::LONG_POISON_POTION(), - PotionType::STRONG_POISON()->id() => Items::STRONG_POISON_POTION(), - PotionType::REGENERATION()->id() => Items::REGENERATION_POTION(), - PotionType::LONG_REGENERATION()->id() => Items::LONG_REGENERATION_POTION(), - PotionType::STRONG_REGENERATION()->id() => Items::STRONG_REGENERATION_POTION(), - PotionType::STRENGTH()->id() => Items::STRENGTH_POTION(), - PotionType::LONG_STRENGTH()->id() => Items::LONG_STRENGTH_POTION(), - PotionType::STRONG_STRENGTH()->id() => Items::STRONG_STRENGTH_POTION(), - PotionType::WEAKNESS()->id() => Items::WEAKNESS_POTION(), - PotionType::LONG_WEAKNESS()->id() => Items::LONG_WEAKNESS_POTION(), - PotionType::WITHER()->id() => Items::WITHER_POTION(), - PotionType::TURTLE_MASTER()->id() => Items::TURTLE_MASTER_POTION(), - PotionType::LONG_TURTLE_MASTER()->id() => Items::LONG_TURTLE_MASTER_POTION(), - PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_POTION(), - PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_POTION(), - PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_POTION(), - default => throw new ItemTypeDeserializeException("Unhandled potion type " . $potionType->getDisplayName()) - }; + return Items::POTION()->setType($potionType); }); //TODO: minecraft:powder_snow_bucket $this->map(Ids::PRISMARINE_CRYSTALS, fn() => Items::PRISMARINE_CRYSTALS()); @@ -613,51 +568,7 @@ final class ItemDeserializer{ if($potionType === null){ throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); } - return match($potionType->id()){ - PotionType::WATER()->id() => Items::WATER_SPLASH_POTION(), - PotionType::MUNDANE()->id() => Items::MUNDANE_SPLASH_POTION(), - PotionType::LONG_MUNDANE()->id() => Items::LONG_MUNDANE_SPLASH_POTION(), - PotionType::THICK()->id() => Items::THICK_SPLASH_POTION(), - PotionType::AWKWARD()->id() => Items::AWKWARD_SPLASH_POTION(), - PotionType::NIGHT_VISION()->id() => Items::NIGHT_VISION_SPLASH_POTION(), - PotionType::LONG_NIGHT_VISION()->id() => Items::LONG_NIGHT_VISION_SPLASH_POTION(), - PotionType::INVISIBILITY()->id() => Items::INVISIBILITY_SPLASH_POTION(), - PotionType::LONG_INVISIBILITY()->id() => Items::LONG_INVISIBILITY_SPLASH_POTION(), - PotionType::LEAPING()->id() => Items::LEAPING_SPLASH_POTION(), - PotionType::LONG_LEAPING()->id() => Items::LONG_LEAPING_SPLASH_POTION(), - PotionType::STRONG_LEAPING()->id() => Items::STRONG_LEAPING_SPLASH_POTION(), - PotionType::FIRE_RESISTANCE()->id() => Items::FIRE_RESISTANCE_SPLASH_POTION(), - PotionType::LONG_FIRE_RESISTANCE()->id() => Items::LONG_FIRE_RESISTANCE_SPLASH_POTION(), - PotionType::SWIFTNESS()->id() => Items::SWIFTNESS_SPLASH_POTION(), - PotionType::LONG_SWIFTNESS()->id() => Items::LONG_SWIFTNESS_SPLASH_POTION(), - PotionType::STRONG_SWIFTNESS()->id() => Items::STRONG_SWIFTNESS_SPLASH_POTION(), - PotionType::SLOWNESS()->id() => Items::SLOWNESS_SPLASH_POTION(), - PotionType::LONG_SLOWNESS()->id() => Items::LONG_SLOWNESS_SPLASH_POTION(), - PotionType::WATER_BREATHING()->id() => Items::WATER_BREATHING_SPLASH_POTION(), - PotionType::LONG_WATER_BREATHING()->id() => Items::LONG_WATER_BREATHING_SPLASH_POTION(), - PotionType::HEALING()->id() => Items::HEALING_SPLASH_POTION(), - PotionType::STRONG_HEALING()->id() => Items::STRONG_HEALING_SPLASH_POTION(), - PotionType::HARMING()->id() => Items::HARMING_SPLASH_POTION(), - PotionType::STRONG_HARMING()->id() => Items::STRONG_HARMING_SPLASH_POTION(), - PotionType::POISON()->id() => Items::POISON_SPLASH_POTION(), - PotionType::LONG_POISON()->id() => Items::LONG_POISON_SPLASH_POTION(), - PotionType::STRONG_POISON()->id() => Items::STRONG_POISON_SPLASH_POTION(), - PotionType::REGENERATION()->id() => Items::REGENERATION_SPLASH_POTION(), - PotionType::LONG_REGENERATION()->id() => Items::LONG_REGENERATION_SPLASH_POTION(), - PotionType::STRONG_REGENERATION()->id() => Items::STRONG_REGENERATION_SPLASH_POTION(), - PotionType::STRENGTH()->id() => Items::STRENGTH_SPLASH_POTION(), - PotionType::LONG_STRENGTH()->id() => Items::LONG_STRENGTH_SPLASH_POTION(), - PotionType::STRONG_STRENGTH()->id() => Items::STRONG_STRENGTH_SPLASH_POTION(), - PotionType::WEAKNESS()->id() => Items::WEAKNESS_SPLASH_POTION(), - PotionType::LONG_WEAKNESS()->id() => Items::LONG_WEAKNESS_SPLASH_POTION(), - PotionType::WITHER()->id() => Items::WITHER_SPLASH_POTION(), - PotionType::TURTLE_MASTER()->id() => Items::TURTLE_MASTER_SPLASH_POTION(), - PotionType::LONG_TURTLE_MASTER()->id() => Items::LONG_TURTLE_MASTER_SPLASH_POTION(), - PotionType::STRONG_TURTLE_MASTER()->id() => Items::STRONG_TURTLE_MASTER_SPLASH_POTION(), - PotionType::SLOW_FALLING()->id() => Items::SLOW_FALLING_SPLASH_POTION(), - PotionType::LONG_SLOW_FALLING()->id() => Items::LONG_SLOW_FALLING_SPLASH_POTION(), - default => throw new ItemTypeDeserializeException("Unhandled potion type " . $potionType->getDisplayName()) - }; + return Items::SPLASH_POTION()->setType($potionType); }); $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); $this->map(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()->asItem()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index ed8417734..e7f1601ab 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -38,7 +38,8 @@ use pocketmine\item\Banner; use pocketmine\item\CoralFan; use pocketmine\item\Item; use pocketmine\item\ItemBlock; -use pocketmine\item\PotionType; +use pocketmine\item\Potion; +use pocketmine\item\SplashPotion; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; use function class_parents; @@ -236,22 +237,6 @@ final class ItemSerializer{ return fn() => new Data(Ids::COMPOUND, $type); } - /** - * @phpstan-return \Closure() : Data - */ - private static function potion(PotionType $type) : \Closure{ - $meta = PotionTypeIdMap::getInstance()->toId($type); - return fn() => new Data(Ids::POTION, $meta); - } - - /** - * @phpstan-return \Closure() : Data - */ - private static function splashPotion(PotionType $type) : \Closure{ - $meta = PotionTypeIdMap::getInstance()->toId($type); - return fn() => new Data(Ids::SPLASH_POTION, $meta); - } - private function registerSpecialBlockSerializers() : void{ $this->mapBlock(Blocks::ACACIA_DOOR(), self::id(Ids::ACACIA_DOOR)); $this->mapBlock(Blocks::BIRCH_DOOR(), self::id(Ids::BIRCH_DOOR)); @@ -283,8 +268,6 @@ final class ItemSerializer{ $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); $this->map(Items::APPLE(), self::id(Ids::APPLE)); $this->map(Items::ARROW(), self::id(Ids::ARROW)); - $this->map(Items::AWKWARD_POTION(), self::potion(PotionType::AWKWARD())); - $this->map(Items::AWKWARD_SPLASH_POTION(), self::splashPotion(PotionType::AWKWARD())); $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); @@ -392,8 +375,6 @@ final class ItemSerializer{ $this->map(Items::EXPERIENCE_BOTTLE(), self::id(Ids::EXPERIENCE_BOTTLE)); $this->map(Items::FEATHER(), self::id(Ids::FEATHER)); $this->map(Items::FERMENTED_SPIDER_EYE(), self::id(Ids::FERMENTED_SPIDER_EYE)); - $this->map(Items::FIRE_RESISTANCE_POTION(), self::potion(PotionType::FIRE_RESISTANCE())); - $this->map(Items::FIRE_RESISTANCE_SPLASH_POTION(), self::splashPotion(PotionType::FIRE_RESISTANCE())); $this->map(Items::FISHING_ROD(), self::id(Ids::FISHING_ROD)); $this->map(Items::FLINT(), self::id(Ids::FLINT)); $this->map(Items::FLINT_AND_STEEL(), self::id(Ids::FLINT_AND_STEEL)); @@ -419,14 +400,8 @@ final class ItemSerializer{ $this->map(Items::GREEN_BED(), self::bed(DyeColor::GREEN())); $this->map(Items::GREEN_DYE(), self::id(Ids::GREEN_DYE)); $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); - $this->map(Items::HARMING_POTION(), self::potion(PotionType::HARMING())); - $this->map(Items::HARMING_SPLASH_POTION(), self::splashPotion(PotionType::HARMING())); - $this->map(Items::HEALING_POTION(), self::potion(PotionType::HEALING())); - $this->map(Items::HEALING_SPLASH_POTION(), self::splashPotion(PotionType::HEALING())); $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); - $this->map(Items::INVISIBILITY_POTION(), self::potion(PotionType::INVISIBILITY())); - $this->map(Items::INVISIBILITY_SPLASH_POTION(), self::splashPotion(PotionType::INVISIBILITY())); $this->map(Items::IRON_AXE(), self::id(Ids::IRON_AXE)); $this->map(Items::IRON_BOOTS(), self::id(Ids::IRON_BOOTS)); $this->map(Items::IRON_CHESTPLATE(), self::id(Ids::IRON_CHESTPLATE)); @@ -442,8 +417,6 @@ final class ItemSerializer{ $this->map(Items::JUNGLE_SIGN(), self::id(Ids::JUNGLE_SIGN)); $this->map(Items::LAPIS_LAZULI(), self::id(Ids::LAPIS_LAZULI)); $this->map(Items::LAVA_BUCKET(), self::id(Ids::LAVA_BUCKET)); - $this->map(Items::LEAPING_POTION(), self::potion(PotionType::LEAPING())); - $this->map(Items::LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::LEAPING())); $this->map(Items::LEATHER(), self::id(Ids::LEATHER)); $this->map(Items::LEATHER_BOOTS(), self::id(Ids::LEATHER_BOOTS)); $this->map(Items::LEATHER_CAP(), self::id(Ids::LEATHER_HELMET)); @@ -455,34 +428,6 @@ final class ItemSerializer{ $this->map(Items::LIGHT_GRAY_DYE(), self::id(Ids::LIGHT_GRAY_DYE)); $this->map(Items::LIME_BED(), self::bed(DyeColor::LIME())); $this->map(Items::LIME_DYE(), self::id(Ids::LIME_DYE)); - $this->map(Items::LONG_FIRE_RESISTANCE_POTION(), self::potion(PotionType::LONG_FIRE_RESISTANCE())); - $this->map(Items::LONG_FIRE_RESISTANCE_SPLASH_POTION(), self::splashPotion(PotionType::LONG_FIRE_RESISTANCE())); - $this->map(Items::LONG_INVISIBILITY_POTION(), self::potion(PotionType::LONG_INVISIBILITY())); - $this->map(Items::LONG_INVISIBILITY_SPLASH_POTION(), self::splashPotion(PotionType::LONG_INVISIBILITY())); - $this->map(Items::LONG_LEAPING_POTION(), self::potion(PotionType::LONG_LEAPING())); - $this->map(Items::LONG_LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_LEAPING())); - $this->map(Items::LONG_MUNDANE_POTION(), self::potion(PotionType::LONG_MUNDANE())); - $this->map(Items::LONG_MUNDANE_SPLASH_POTION(), self::splashPotion(PotionType::LONG_MUNDANE())); - $this->map(Items::LONG_NIGHT_VISION_POTION(), self::potion(PotionType::LONG_NIGHT_VISION())); - $this->map(Items::LONG_NIGHT_VISION_SPLASH_POTION(), self::splashPotion(PotionType::LONG_NIGHT_VISION())); - $this->map(Items::LONG_POISON_POTION(), self::potion(PotionType::LONG_POISON())); - $this->map(Items::LONG_POISON_SPLASH_POTION(), self::splashPotion(PotionType::LONG_POISON())); - $this->map(Items::LONG_REGENERATION_POTION(), self::potion(PotionType::LONG_REGENERATION())); - $this->map(Items::LONG_REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::LONG_REGENERATION())); - $this->map(Items::LONG_SLOWNESS_POTION(), self::potion(PotionType::LONG_SLOWNESS())); - $this->map(Items::LONG_SLOWNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SLOWNESS())); - $this->map(Items::LONG_SLOW_FALLING_POTION(), self::potion(PotionType::LONG_SLOW_FALLING())); - $this->map(Items::LONG_SLOW_FALLING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SLOW_FALLING())); - $this->map(Items::LONG_STRENGTH_POTION(), self::potion(PotionType::LONG_STRENGTH())); - $this->map(Items::LONG_STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::LONG_STRENGTH())); - $this->map(Items::LONG_SWIFTNESS_POTION(), self::potion(PotionType::LONG_SWIFTNESS())); - $this->map(Items::LONG_SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_SWIFTNESS())); - $this->map(Items::LONG_TURTLE_MASTER_POTION(), self::potion(PotionType::LONG_TURTLE_MASTER())); - $this->map(Items::LONG_TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::LONG_TURTLE_MASTER())); - $this->map(Items::LONG_WATER_BREATHING_POTION(), self::potion(PotionType::LONG_WATER_BREATHING())); - $this->map(Items::LONG_WATER_BREATHING_SPLASH_POTION(), self::splashPotion(PotionType::LONG_WATER_BREATHING())); - $this->map(Items::LONG_WEAKNESS_POTION(), self::potion(PotionType::LONG_WEAKNESS())); - $this->map(Items::LONG_WEAKNESS_SPLASH_POTION(), self::splashPotion(PotionType::LONG_WEAKNESS())); $this->map(Items::MAGENTA_BED(), self::bed(DyeColor::MAGENTA())); $this->map(Items::MAGENTA_DYE(), self::id(Ids::MAGENTA_DYE)); $this->map(Items::MAGMA_CREAM(), self::id(Ids::MAGMA_CREAM)); @@ -490,15 +435,11 @@ final class ItemSerializer{ $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); $this->map(Items::MINECART(), self::id(Ids::MINECART)); - $this->map(Items::MUNDANE_POTION(), self::potion(PotionType::MUNDANE())); - $this->map(Items::MUNDANE_SPLASH_POTION(), self::splashPotion(PotionType::MUNDANE())); $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); $this->map(Items::NETHER_QUARTZ(), self::id(Ids::QUARTZ)); $this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR)); - $this->map(Items::NIGHT_VISION_POTION(), self::potion(PotionType::NIGHT_VISION())); - $this->map(Items::NIGHT_VISION_SPLASH_POTION(), self::splashPotion(PotionType::NIGHT_VISION())); $this->map(Items::OAK_BOAT(), self::id(Ids::OAK_BOAT)); $this->map(Items::OAK_SIGN(), self::id(Ids::OAK_SIGN)); $this->map(Items::ORANGE_BED(), self::bed(DyeColor::ORANGE())); @@ -509,10 +450,9 @@ final class ItemSerializer{ $this->map(Items::PINK_DYE(), self::id(Ids::PINK_DYE)); $this->map(Items::PLAYER_HEAD(), self::skull(SkullType::PLAYER())); $this->map(Items::POISONOUS_POTATO(), self::id(Ids::POISONOUS_POTATO)); - $this->map(Items::POISON_POTION(), self::potion(PotionType::POISON())); - $this->map(Items::POISON_SPLASH_POTION(), self::splashPotion(PotionType::POISON())); $this->map(Items::POPPED_CHORUS_FRUIT(), self::id(Ids::POPPED_CHORUS_FRUIT)); $this->map(Items::POTATO(), self::id(Ids::POTATO)); + $this->map(Items::POTION(), fn(Potion $item) => new Data(Ids::POTION, PotionTypeIdMap::getInstance()->toId($item->getType()))); $this->map(Items::PRISMARINE_CRYSTALS(), self::id(Ids::PRISMARINE_CRYSTALS)); $this->map(Items::PRISMARINE_SHARD(), self::id(Ids::PRISMARINE_SHARD)); $this->map(Items::PUFFERFISH(), self::id(Ids::PUFFERFISH)); @@ -545,20 +485,15 @@ final class ItemSerializer{ $this->map(Items::REDSTONE_DUST(), self::id(Ids::REDSTONE)); $this->map(Items::RED_BED(), self::bed(DyeColor::RED())); $this->map(Items::RED_DYE(), self::id(Ids::RED_DYE)); - $this->map(Items::REGENERATION_POTION(), self::potion(PotionType::REGENERATION())); - $this->map(Items::REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::REGENERATION())); $this->map(Items::ROTTEN_FLESH(), self::id(Ids::ROTTEN_FLESH)); $this->map(Items::SCUTE(), self::id(Ids::SCUTE)); $this->map(Items::SHEARS(), self::id(Ids::SHEARS)); $this->map(Items::SHULKER_SHELL(), self::id(Ids::SHULKER_SHELL)); $this->map(Items::SKELETON_SKULL(), self::skull(SkullType::SKELETON())); $this->map(Items::SLIMEBALL(), self::id(Ids::SLIME_BALL)); - $this->map(Items::SLOWNESS_POTION(), self::potion(PotionType::SLOWNESS())); - $this->map(Items::SLOWNESS_SPLASH_POTION(), self::splashPotion(PotionType::SLOWNESS())); - $this->map(Items::SLOW_FALLING_POTION(), self::potion(PotionType::SLOW_FALLING())); - $this->map(Items::SLOW_FALLING_SPLASH_POTION(), self::splashPotion(PotionType::SLOW_FALLING())); $this->map(Items::SNOWBALL(), self::id(Ids::SNOWBALL)); $this->map(Items::SPIDER_EYE(), self::id(Ids::SPIDER_EYE)); + $this->map(Items::SPLASH_POTION(), fn(SplashPotion $item) => new Data(Ids::SPLASH_POTION, PotionTypeIdMap::getInstance()->toId($item->getType()))); $this->map(Items::SPRUCE_BOAT(), self::id(Ids::SPRUCE_BOAT)); $this->map(Items::SPRUCE_SIGN(), self::id(Ids::SPRUCE_SIGN)); $this->map(Items::SQUID_SPAWN_EGG(), self::id(Ids::SQUID_SPAWN_EGG)); @@ -569,49 +504,17 @@ final class ItemSerializer{ $this->map(Items::STONE_PICKAXE(), self::id(Ids::STONE_PICKAXE)); $this->map(Items::STONE_SHOVEL(), self::id(Ids::STONE_SHOVEL)); $this->map(Items::STONE_SWORD(), self::id(Ids::STONE_SWORD)); - $this->map(Items::STRENGTH_POTION(), self::potion(PotionType::STRENGTH())); - $this->map(Items::STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::STRENGTH())); $this->map(Items::STRING(), self::id(Ids::STRING)); - $this->map(Items::STRONG_HARMING_POTION(), self::potion(PotionType::STRONG_HARMING())); - $this->map(Items::STRONG_HARMING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_HARMING())); - $this->map(Items::STRONG_HEALING_POTION(), self::potion(PotionType::STRONG_HEALING())); - $this->map(Items::STRONG_HEALING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_HEALING())); - $this->map(Items::STRONG_LEAPING_POTION(), self::potion(PotionType::STRONG_LEAPING())); - $this->map(Items::STRONG_LEAPING_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_LEAPING())); - $this->map(Items::STRONG_POISON_POTION(), self::potion(PotionType::STRONG_POISON())); - $this->map(Items::STRONG_POISON_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_POISON())); - $this->map(Items::STRONG_REGENERATION_POTION(), self::potion(PotionType::STRONG_REGENERATION())); - $this->map(Items::STRONG_REGENERATION_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_REGENERATION())); - $this->map(Items::STRONG_STRENGTH_POTION(), self::potion(PotionType::STRONG_STRENGTH())); - $this->map(Items::STRONG_STRENGTH_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_STRENGTH())); - $this->map(Items::STRONG_SWIFTNESS_POTION(), self::potion(PotionType::STRONG_SWIFTNESS())); - $this->map(Items::STRONG_SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_SWIFTNESS())); - $this->map(Items::STRONG_TURTLE_MASTER_POTION(), self::potion(PotionType::STRONG_TURTLE_MASTER())); - $this->map(Items::STRONG_TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::STRONG_TURTLE_MASTER())); $this->map(Items::SUGAR(), self::id(Ids::SUGAR)); $this->map(Items::SWEET_BERRIES(), self::id(Ids::SWEET_BERRIES)); - $this->map(Items::SWIFTNESS_POTION(), self::potion(PotionType::SWIFTNESS())); - $this->map(Items::SWIFTNESS_SPLASH_POTION(), self::splashPotion(PotionType::SWIFTNESS())); - $this->map(Items::THICK_POTION(), self::potion(PotionType::THICK())); - $this->map(Items::THICK_SPLASH_POTION(), self::splashPotion(PotionType::THICK())); $this->map(Items::TOTEM(), self::id(Ids::TOTEM_OF_UNDYING)); - $this->map(Items::TURTLE_MASTER_POTION(), self::potion(PotionType::TURTLE_MASTER())); - $this->map(Items::TURTLE_MASTER_SPLASH_POTION(), self::splashPotion(PotionType::TURTLE_MASTER())); $this->map(Items::VILLAGER_SPAWN_EGG(), self::id(Ids::VILLAGER_SPAWN_EGG)); - $this->map(Items::WATER_BREATHING_POTION(), self::potion(PotionType::WATER_BREATHING())); - $this->map(Items::WATER_BREATHING_SPLASH_POTION(), self::splashPotion(PotionType::WATER_BREATHING())); $this->map(Items::WATER_BUCKET(), self::id(Ids::WATER_BUCKET)); - $this->map(Items::WATER_POTION(), self::potion(PotionType::WATER())); - $this->map(Items::WATER_SPLASH_POTION(), self::splashPotion(PotionType::WATER())); - $this->map(Items::WEAKNESS_POTION(), self::potion(PotionType::WEAKNESS())); - $this->map(Items::WEAKNESS_SPLASH_POTION(), self::splashPotion(PotionType::WEAKNESS())); $this->map(Items::WHEAT(), self::id(Ids::WHEAT)); $this->map(Items::WHEAT_SEEDS(), self::id(Ids::WHEAT_SEEDS)); $this->map(Items::WHITE_BED(), self::bed(DyeColor::WHITE())); $this->map(Items::WHITE_DYE(), self::id(Ids::WHITE_DYE)); - $this->map(Items::WITHER_POTION(), self::potion(PotionType::WITHER())); $this->map(Items::WITHER_SKELETON_SKULL(), self::skull(SkullType::WITHER_SKELETON())); - $this->map(Items::WITHER_SPLASH_POTION(), self::splashPotion(PotionType::WITHER())); $this->map(Items::WOODEN_AXE(), self::id(Ids::WOODEN_AXE)); $this->map(Items::WOODEN_HOE(), self::id(Ids::WOODEN_HOE)); $this->map(Items::WOODEN_PICKAXE(), self::id(Ids::WOODEN_PICKAXE)); diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index c9c45003b..e4eb558ac 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -35,7 +35,6 @@ use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; -use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\Location; @@ -291,9 +290,8 @@ class ItemFactory{ } foreach(PotionType::getAll() as $type){ - $typeId = PotionTypeIdMap::getInstance()->toId($type); - $this->register(new Potion(new IID(Ids::POTION, $typeId), $type->getDisplayName() . " Potion", $type)); - $this->register(new SplashPotion(new IID(Ids::SPLASH_POTION, $typeId), $type->getDisplayName() . " Splash Potion", $type)); + $this->register((new Potion(new IID(Ids::POTION, 0), "Potion"))->setType($type)); + $this->register((new SplashPotion(new IID(Ids::SPLASH_POTION, 0), "Splash Potion"))->setType($type)); } foreach(TreeType::getAll() as $type){ diff --git a/src/item/Potion.php b/src/item/Potion.php index 1255a5396..3607e5619 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\entity\Living; use pocketmine\player\Player; @@ -30,13 +31,25 @@ class Potion extends Item implements ConsumableItem{ private PotionType $potionType; - public function __construct(ItemIdentifier $identifier, string $name, PotionType $potionType){ + public function __construct(ItemIdentifier $identifier, string $name){ + $this->potionType = PotionType::WATER(); parent::__construct($identifier, $name); - $this->potionType = $potionType; + } + + public function getMeta() : int{ + return PotionTypeIdMap::getInstance()->toId($this->potionType); } public function getType() : PotionType{ return $this->potionType; } + /** + * @return $this + */ + public function setType(PotionType $type) : self{ + $this->potionType = $type; + return $this; + } + public function getMaxStackSize() : int{ return 1; } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index be5952306..39db4d6d7 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\entity\Location; use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity; use pocketmine\entity\projectile\Throwable; @@ -32,13 +33,25 @@ class SplashPotion extends ProjectileItem{ private PotionType $potionType; - public function __construct(ItemIdentifier $identifier, string $name, PotionType $potionType){ + public function __construct(ItemIdentifier $identifier, string $name){ + $this->potionType = PotionType::WATER(); parent::__construct($identifier, $name); - $this->potionType = $potionType; + } + + public function getMeta() : int{ + return PotionTypeIdMap::getInstance()->toId($this->potionType); } public function getType() : PotionType{ return $this->potionType; } + /** + * @return $this + */ + public function setType(PotionType $type) : self{ + $this->potionType = $type; + return $this; + } + public function getMaxStackSize() : int{ return 1; } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 2e33d4853..a6824ccd7 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -950,8 +950,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("apple_enchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); $result->register("appleenchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); $result->register("arrow", fn() => Items::ARROW()); - $result->register("awkward_potion", fn() => Items::AWKWARD_POTION()); - $result->register("awkward_splash_potion", fn() => Items::AWKWARD_SPLASH_POTION()); + $result->register("awkward_potion", fn() => Items::POTION()->setType(PotionType::AWKWARD())); + $result->register("awkward_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::AWKWARD())); $result->register("baked_potato", fn() => Items::BAKED_POTATO()); $result->register("baked_potatoes", fn() => Items::BAKED_POTATO()); $result->register("bed", fn() => Items::WHITE_BED()); @@ -1072,8 +1072,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("experience_bottle", fn() => Items::EXPERIENCE_BOTTLE()); $result->register("feather", fn() => Items::FEATHER()); $result->register("fermented_spider_eye", fn() => Items::FERMENTED_SPIDER_EYE()); - $result->register("fire_resistance_potion", fn() => Items::FIRE_RESISTANCE_POTION()); - $result->register("fire_resistance_splash_potion", fn() => Items::FIRE_RESISTANCE_SPLASH_POTION()); + $result->register("fire_resistance_potion", fn() => Items::POTION()->setType(PotionType::FIRE_RESISTANCE())); + $result->register("fire_resistance_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::FIRE_RESISTANCE())); $result->register("fish", fn() => Items::RAW_FISH()); $result->register("fishing_rod", fn() => Items::FISHING_ROD()); $result->register("flint", fn() => Items::FLINT()); @@ -1109,14 +1109,14 @@ final class StringToItemParser extends StringToTParser{ $result->register("gray_dye", fn() => Items::GRAY_DYE()); $result->register("green_dye", fn() => Items::GREEN_DYE()); $result->register("gunpowder", fn() => Items::GUNPOWDER()); - $result->register("harming_potion", fn() => Items::HARMING_POTION()); - $result->register("harming_splash_potion", fn() => Items::HARMING_SPLASH_POTION()); - $result->register("healing_potion", fn() => Items::HEALING_POTION()); - $result->register("healing_splash_potion", fn() => Items::HEALING_SPLASH_POTION()); + $result->register("harming_potion", fn() => Items::POTION()->setType(PotionType::HARMING())); + $result->register("harming_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::HARMING())); + $result->register("healing_potion", fn() => Items::POTION()->setType(PotionType::HEALING())); + $result->register("healing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::HEALING())); $result->register("heart_of_the_sea", fn() => Items::HEART_OF_THE_SEA()); $result->register("ink_sac", fn() => Items::INK_SAC()); - $result->register("invisibility_potion", fn() => Items::INVISIBILITY_POTION()); - $result->register("invisibility_splash_potion", fn() => Items::INVISIBILITY_SPLASH_POTION()); + $result->register("invisibility_potion", fn() => Items::POTION()->setType(PotionType::INVISIBILITY())); + $result->register("invisibility_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::INVISIBILITY())); $result->register("iron_axe", fn() => Items::IRON_AXE()); $result->register("iron_boots", fn() => Items::IRON_BOOTS()); $result->register("iron_chestplate", fn() => Items::IRON_CHESTPLATE()); @@ -1131,8 +1131,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("jungle_boat", fn() => Items::JUNGLE_BOAT()); $result->register("lapis_lazuli", fn() => Items::LAPIS_LAZULI()); $result->register("lava_bucket", fn() => Items::LAVA_BUCKET()); - $result->register("leaping_potion", fn() => Items::LEAPING_POTION()); - $result->register("leaping_splash_potion", fn() => Items::LEAPING_SPLASH_POTION()); + $result->register("leaping_potion", fn() => Items::POTION()->setType(PotionType::LEAPING())); + $result->register("leaping_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LEAPING())); $result->register("leather", fn() => Items::LEATHER()); $result->register("leather_boots", fn() => Items::LEATHER_BOOTS()); $result->register("leather_cap", fn() => Items::LEATHER_CAP()); @@ -1144,34 +1144,34 @@ final class StringToItemParser extends StringToTParser{ $result->register("light_blue_dye", fn() => Items::LIGHT_BLUE_DYE()); $result->register("light_gray_dye", fn() => Items::LIGHT_GRAY_DYE()); $result->register("lime_dye", fn() => Items::LIME_DYE()); - $result->register("long_fire_resistance_potion", fn() => Items::LONG_FIRE_RESISTANCE_POTION()); - $result->register("long_fire_resistance_splash_potion", fn() => Items::LONG_FIRE_RESISTANCE_SPLASH_POTION()); - $result->register("long_invisibility_potion", fn() => Items::LONG_INVISIBILITY_POTION()); - $result->register("long_invisibility_splash_potion", fn() => Items::LONG_INVISIBILITY_SPLASH_POTION()); - $result->register("long_leaping_potion", fn() => Items::LONG_LEAPING_POTION()); - $result->register("long_leaping_splash_potion", fn() => Items::LONG_LEAPING_SPLASH_POTION()); - $result->register("long_mundane_potion", fn() => Items::LONG_MUNDANE_POTION()); - $result->register("long_mundane_splash_potion", fn() => Items::LONG_MUNDANE_SPLASH_POTION()); - $result->register("long_night_vision_potion", fn() => Items::LONG_NIGHT_VISION_POTION()); - $result->register("long_night_vision_splash_potion", fn() => Items::LONG_NIGHT_VISION_SPLASH_POTION()); - $result->register("long_poison_potion", fn() => Items::LONG_POISON_POTION()); - $result->register("long_poison_splash_potion", fn() => Items::LONG_POISON_SPLASH_POTION()); - $result->register("long_regeneration_potion", fn() => Items::LONG_REGENERATION_POTION()); - $result->register("long_regeneration_splash_potion", fn() => Items::LONG_REGENERATION_SPLASH_POTION()); - $result->register("long_slow_falling_potion", fn() => Items::LONG_SLOW_FALLING_POTION()); - $result->register("long_slow_falling_splash_potion", fn() => Items::LONG_SLOW_FALLING_SPLASH_POTION()); - $result->register("long_slowness_potion", fn() => Items::LONG_SLOWNESS_POTION()); - $result->register("long_slowness_splash_potion", fn() => Items::LONG_SLOWNESS_SPLASH_POTION()); - $result->register("long_strength_potion", fn() => Items::LONG_STRENGTH_POTION()); - $result->register("long_strength_splash_potion", fn() => Items::LONG_STRENGTH_SPLASH_POTION()); - $result->register("long_swiftness_potion", fn() => Items::LONG_SWIFTNESS_POTION()); - $result->register("long_swiftness_splash_potion", fn() => Items::LONG_SWIFTNESS_SPLASH_POTION()); - $result->register("long_turtle_master_potion", fn() => Items::LONG_TURTLE_MASTER_POTION()); - $result->register("long_turtle_master_splash_potion", fn() => Items::LONG_TURTLE_MASTER_SPLASH_POTION()); - $result->register("long_water_breathing_potion", fn() => Items::LONG_WATER_BREATHING_POTION()); - $result->register("long_water_breathing_splash_potion", fn() => Items::LONG_WATER_BREATHING_SPLASH_POTION()); - $result->register("long_weakness_potion", fn() => Items::LONG_WEAKNESS_POTION()); - $result->register("long_weakness_splash_potion", fn() => Items::LONG_WEAKNESS_SPLASH_POTION()); + $result->register("long_fire_resistance_potion", fn() => Items::POTION()->setType(PotionType::LONG_FIRE_RESISTANCE())); + $result->register("long_fire_resistance_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_FIRE_RESISTANCE())); + $result->register("long_invisibility_potion", fn() => Items::POTION()->setType(PotionType::LONG_INVISIBILITY())); + $result->register("long_invisibility_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_INVISIBILITY())); + $result->register("long_leaping_potion", fn() => Items::POTION()->setType(PotionType::LONG_LEAPING())); + $result->register("long_leaping_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_LEAPING())); + $result->register("long_mundane_potion", fn() => Items::POTION()->setType(PotionType::LONG_MUNDANE())); + $result->register("long_mundane_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_MUNDANE())); + $result->register("long_night_vision_potion", fn() => Items::POTION()->setType(PotionType::LONG_NIGHT_VISION())); + $result->register("long_night_vision_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_NIGHT_VISION())); + $result->register("long_poison_potion", fn() => Items::POTION()->setType(PotionType::LONG_POISON())); + $result->register("long_poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_POISON())); + $result->register("long_regeneration_potion", fn() => Items::POTION()->setType(PotionType::LONG_REGENERATION())); + $result->register("long_regeneration_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_REGENERATION())); + $result->register("long_slow_falling_potion", fn() => Items::POTION()->setType(PotionType::LONG_SLOW_FALLING())); + $result->register("long_slow_falling_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_SLOW_FALLING())); + $result->register("long_slowness_potion", fn() => Items::POTION()->setType(PotionType::LONG_SLOWNESS())); + $result->register("long_slowness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_SLOWNESS())); + $result->register("long_strength_potion", fn() => Items::POTION()->setType(PotionType::LONG_STRENGTH())); + $result->register("long_strength_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_STRENGTH())); + $result->register("long_swiftness_potion", fn() => Items::POTION()->setType(PotionType::LONG_SWIFTNESS())); + $result->register("long_swiftness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_SWIFTNESS())); + $result->register("long_turtle_master_potion", fn() => Items::POTION()->setType(PotionType::LONG_TURTLE_MASTER())); + $result->register("long_turtle_master_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_TURTLE_MASTER())); + $result->register("long_water_breathing_potion", fn() => Items::POTION()->setType(PotionType::LONG_WATER_BREATHING())); + $result->register("long_water_breathing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_WATER_BREATHING())); + $result->register("long_weakness_potion", fn() => Items::POTION()->setType(PotionType::LONG_WEAKNESS())); + $result->register("long_weakness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_WEAKNESS())); $result->register("magenta_dye", fn() => Items::MAGENTA_DYE()); $result->register("magma_cream", fn() => Items::MAGMA_CREAM()); $result->register("melon", fn() => Items::MELON()); @@ -1180,8 +1180,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("milk_bucket", fn() => Items::MILK_BUCKET()); $result->register("minecart", fn() => Items::MINECART()); $result->register("mob_head", fn() => Items::SKELETON_SKULL()); - $result->register("mundane_potion", fn() => Items::MUNDANE_POTION()); - $result->register("mundane_splash_potion", fn() => Items::MUNDANE_SPLASH_POTION()); + $result->register("mundane_potion", fn() => Items::POTION()->setType(PotionType::MUNDANE())); + $result->register("mundane_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::MUNDANE())); $result->register("mushroom_stew", fn() => Items::MUSHROOM_STEW()); $result->register("mutton", fn() => Items::RAW_MUTTON()); $result->register("mutton_cooked", fn() => Items::COOKED_MUTTON()); @@ -1194,21 +1194,21 @@ final class StringToItemParser extends StringToTParser{ $result->register("nether_star", fn() => Items::NETHER_STAR()); $result->register("netherbrick", fn() => Items::NETHER_BRICK()); $result->register("netherstar", fn() => Items::NETHER_STAR()); - $result->register("night_vision_potion", fn() => Items::NIGHT_VISION_POTION()); - $result->register("night_vision_splash_potion", fn() => Items::NIGHT_VISION_SPLASH_POTION()); + $result->register("night_vision_potion", fn() => Items::POTION()->setType(PotionType::NIGHT_VISION())); + $result->register("night_vision_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::NIGHT_VISION())); $result->register("oak_boat", fn() => Items::OAK_BOAT()); $result->register("orange_dye", fn() => Items::ORANGE_DYE()); $result->register("painting", fn() => Items::PAINTING()); $result->register("paper", fn() => Items::PAPER()); $result->register("pink_dye", fn() => Items::PINK_DYE()); $result->register("player_head", fn() => Items::PLAYER_HEAD()); - $result->register("poison_potion", fn() => Items::POISON_POTION()); - $result->register("poison_splash_potion", fn() => Items::POISON_SPLASH_POTION()); + $result->register("poison_potion", fn() => Items::POTION()->setType(PotionType::POISON())); + $result->register("poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::POISON())); $result->register("poisonous_potato", fn() => Items::POISONOUS_POTATO()); $result->register("popped_chorus_fruit", fn() => Items::POPPED_CHORUS_FRUIT()); $result->register("porkchop", fn() => Items::RAW_PORKCHOP()); $result->register("potato", fn() => Items::POTATO()); - $result->register("potion", fn() => Items::WATER_POTION()); + $result->register("potion", fn() => Items::POTION()); $result->register("prismarine_crystals", fn() => Items::PRISMARINE_CRYSTALS()); $result->register("prismarine_shard", fn() => Items::PRISMARINE_SHARD()); $result->register("puffer_fish", fn() => Items::PUFFERFISH()); @@ -1244,8 +1244,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("red_dye", fn() => Items::RED_DYE()); $result->register("redstone", fn() => Items::REDSTONE_DUST()); $result->register("redstone_dust", fn() => Items::REDSTONE_DUST()); - $result->register("regeneration_potion", fn() => Items::REGENERATION_POTION()); - $result->register("regeneration_splash_potion", fn() => Items::REGENERATION_SPLASH_POTION()); + $result->register("regeneration_potion", fn() => Items::POTION()->setType(PotionType::REGENERATION())); + $result->register("regeneration_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::REGENERATION())); $result->register("rotten_flesh", fn() => Items::ROTTEN_FLESH()); $result->register("salmon", fn() => Items::RAW_SALMON()); $result->register("scute", fn() => Items::SCUTE()); @@ -1256,14 +1256,14 @@ final class StringToItemParser extends StringToTParser{ $result->register("skull", fn() => Items::SKELETON_SKULL()); $result->register("slime_ball", fn() => Items::SLIMEBALL()); $result->register("slimeball", fn() => Items::SLIMEBALL()); - $result->register("slow_falling_potion", fn() => Items::SLOW_FALLING_POTION()); - $result->register("slow_falling_splash_potion", fn() => Items::SLOW_FALLING_SPLASH_POTION()); - $result->register("slowness_potion", fn() => Items::SLOWNESS_POTION()); - $result->register("slowness_splash_potion", fn() => Items::SLOWNESS_SPLASH_POTION()); + $result->register("slow_falling_potion", fn() => Items::POTION()->setType(PotionType::SLOW_FALLING())); + $result->register("slow_falling_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::SLOW_FALLING())); + $result->register("slowness_potion", fn() => Items::POTION()->setType(PotionType::SLOWNESS())); + $result->register("slowness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::SLOWNESS())); $result->register("snowball", fn() => Items::SNOWBALL()); $result->register("speckled_melon", fn() => Items::GLISTERING_MELON()); $result->register("spider_eye", fn() => Items::SPIDER_EYE()); - $result->register("splash_potion", fn() => Items::WATER_SPLASH_POTION()); + $result->register("splash_potion", fn() => Items::SPLASH_POTION()); $result->register("spruce_boat", fn() => Items::SPRUCE_BOAT()); $result->register("squid_spawn_egg", fn() => Items::SQUID_SPAWN_EGG()); $result->register("steak", fn() => Items::STEAK()); @@ -1274,49 +1274,49 @@ final class StringToItemParser extends StringToTParser{ $result->register("stone_pickaxe", fn() => Items::STONE_PICKAXE()); $result->register("stone_shovel", fn() => Items::STONE_SHOVEL()); $result->register("stone_sword", fn() => Items::STONE_SWORD()); - $result->register("strength_potion", fn() => Items::STRENGTH_POTION()); - $result->register("strength_splash_potion", fn() => Items::STRENGTH_SPLASH_POTION()); + $result->register("strength_potion", fn() => Items::POTION()->setType(PotionType::STRENGTH())); + $result->register("strength_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRENGTH())); $result->register("string", fn() => Items::STRING()); - $result->register("strong_harming_potion", fn() => Items::STRONG_HARMING_POTION()); - $result->register("strong_harming_splash_potion", fn() => Items::STRONG_HARMING_SPLASH_POTION()); - $result->register("strong_healing_potion", fn() => Items::STRONG_HEALING_POTION()); - $result->register("strong_healing_splash_potion", fn() => Items::STRONG_HEALING_SPLASH_POTION()); - $result->register("strong_leaping_potion", fn() => Items::STRONG_LEAPING_POTION()); - $result->register("strong_leaping_splash_potion", fn() => Items::STRONG_LEAPING_SPLASH_POTION()); - $result->register("strong_poison_potion", fn() => Items::STRONG_POISON_POTION()); - $result->register("strong_poison_splash_potion", fn() => Items::STRONG_POISON_SPLASH_POTION()); - $result->register("strong_regeneration_potion", fn() => Items::STRONG_REGENERATION_POTION()); - $result->register("strong_regeneration_splash_potion", fn() => Items::STRONG_REGENERATION_SPLASH_POTION()); - $result->register("strong_strength_potion", fn() => Items::STRONG_STRENGTH_POTION()); - $result->register("strong_strength_splash_potion", fn() => Items::STRONG_STRENGTH_SPLASH_POTION()); - $result->register("strong_swiftness_potion", fn() => Items::STRONG_SWIFTNESS_POTION()); - $result->register("strong_swiftness_splash_potion", fn() => Items::STRONG_SWIFTNESS_SPLASH_POTION()); - $result->register("strong_turtle_master_potion", fn() => Items::STRONG_TURTLE_MASTER_POTION()); - $result->register("strong_turtle_master_splash_potion", fn() => Items::STRONG_TURTLE_MASTER_SPLASH_POTION()); + $result->register("strong_harming_potion", fn() => Items::POTION()->setType(PotionType::STRONG_HARMING())); + $result->register("strong_harming_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_HARMING())); + $result->register("strong_healing_potion", fn() => Items::POTION()->setType(PotionType::STRONG_HEALING())); + $result->register("strong_healing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_HEALING())); + $result->register("strong_leaping_potion", fn() => Items::POTION()->setType(PotionType::STRONG_LEAPING())); + $result->register("strong_leaping_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_LEAPING())); + $result->register("strong_poison_potion", fn() => Items::POTION()->setType(PotionType::STRONG_POISON())); + $result->register("strong_poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_POISON())); + $result->register("strong_regeneration_potion", fn() => Items::POTION()->setType(PotionType::STRONG_REGENERATION())); + $result->register("strong_regeneration_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_REGENERATION())); + $result->register("strong_strength_potion", fn() => Items::POTION()->setType(PotionType::STRONG_STRENGTH())); + $result->register("strong_strength_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_STRENGTH())); + $result->register("strong_swiftness_potion", fn() => Items::POTION()->setType(PotionType::STRONG_SWIFTNESS())); + $result->register("strong_swiftness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_SWIFTNESS())); + $result->register("strong_turtle_master_potion", fn() => Items::POTION()->setType(PotionType::STRONG_TURTLE_MASTER())); + $result->register("strong_turtle_master_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_TURTLE_MASTER())); $result->register("sugar", fn() => Items::SUGAR()); $result->register("sweet_berries", fn() => Items::SWEET_BERRIES()); - $result->register("swiftness_potion", fn() => Items::SWIFTNESS_POTION()); - $result->register("swiftness_splash_potion", fn() => Items::SWIFTNESS_SPLASH_POTION()); - $result->register("thick_potion", fn() => Items::THICK_POTION()); - $result->register("thick_splash_potion", fn() => Items::THICK_SPLASH_POTION()); + $result->register("swiftness_potion", fn() => Items::POTION()->setType(PotionType::SWIFTNESS())); + $result->register("swiftness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::SWIFTNESS())); + $result->register("thick_potion", fn() => Items::POTION()->setType(PotionType::THICK())); + $result->register("thick_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::THICK())); $result->register("totem", fn() => Items::TOTEM()); - $result->register("turtle_master_potion", fn() => Items::TURTLE_MASTER_POTION()); - $result->register("turtle_master_splash_potion", fn() => Items::TURTLE_MASTER_SPLASH_POTION()); + $result->register("turtle_master_potion", fn() => Items::POTION()->setType(PotionType::TURTLE_MASTER())); + $result->register("turtle_master_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::TURTLE_MASTER())); $result->register("turtle_shell_piece", fn() => Items::SCUTE()); $result->register("villager_spawn_egg", fn() => Items::VILLAGER_SPAWN_EGG()); - $result->register("water_breathing_potion", fn() => Items::WATER_BREATHING_POTION()); - $result->register("water_breathing_splash_potion", fn() => Items::WATER_BREATHING_SPLASH_POTION()); + $result->register("water_breathing_potion", fn() => Items::POTION()->setType(PotionType::WATER_BREATHING())); + $result->register("water_breathing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WATER_BREATHING())); $result->register("water_bucket", fn() => Items::WATER_BUCKET()); - $result->register("water_potion", fn() => Items::WATER_POTION()); - $result->register("water_splash_potion", fn() => Items::WATER_SPLASH_POTION()); - $result->register("weakness_potion", fn() => Items::WEAKNESS_POTION()); - $result->register("weakness_splash_potion", fn() => Items::WEAKNESS_SPLASH_POTION()); + $result->register("water_potion", fn() => Items::POTION()->setType(PotionType::WATER())); + $result->register("water_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WATER())); + $result->register("weakness_potion", fn() => Items::POTION()->setType(PotionType::WEAKNESS())); + $result->register("weakness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WEAKNESS())); $result->register("wheat", fn() => Items::WHEAT()); $result->register("wheat_seeds", fn() => Items::WHEAT_SEEDS()); $result->register("white_dye", fn() => Items::WHITE_DYE()); - $result->register("wither_potion", fn() => Items::WITHER_POTION()); + $result->register("wither_potion", fn() => Items::POTION()->setType(PotionType::WITHER())); $result->register("wither_skeleton_skull", fn() => Items::WITHER_SKELETON_SKULL()); - $result->register("wither_splash_potion", fn() => Items::WITHER_SPLASH_POTION()); + $result->register("wither_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WITHER())); $result->register("wooden_axe", fn() => Items::WOODEN_AXE()); $result->register("wooden_hoe", fn() => Items::WOODEN_HOE()); $result->register("wooden_pickaxe", fn() => Items::WOODEN_PICKAXE()); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 1a569ca9e..f220e512b 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -37,8 +37,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ItemBlock AIR() * @method static Apple APPLE() * @method static Arrow ARROW() - * @method static Potion AWKWARD_POTION() - * @method static SplashPotion AWKWARD_SPLASH_POTION() * @method static BakedPotato BAKED_POTATO() * @method static Bamboo BAMBOO() * @method static Banner BANNER() @@ -148,8 +146,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ExperienceBottle EXPERIENCE_BOTTLE() * @method static Item FEATHER() * @method static Item FERMENTED_SPIDER_EYE() - * @method static Potion FIRE_RESISTANCE_POTION() - * @method static SplashPotion FIRE_RESISTANCE_SPLASH_POTION() * @method static FishingRod FISHING_ROD() * @method static Item FLINT() * @method static FlintSteel FLINT_AND_STEEL() @@ -175,14 +171,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Bed GREEN_BED() * @method static Dye GREEN_DYE() * @method static Item GUNPOWDER() - * @method static Potion HARMING_POTION() - * @method static SplashPotion HARMING_SPLASH_POTION() - * @method static Potion HEALING_POTION() - * @method static SplashPotion HEALING_SPLASH_POTION() * @method static Item HEART_OF_THE_SEA() * @method static Item INK_SAC() - * @method static Potion INVISIBILITY_POTION() - * @method static SplashPotion INVISIBILITY_SPLASH_POTION() * @method static Axe IRON_AXE() * @method static Armor IRON_BOOTS() * @method static Armor IRON_CHESTPLATE() @@ -198,8 +188,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ItemBlockWallOrFloor JUNGLE_SIGN() * @method static Item LAPIS_LAZULI() * @method static LiquidBucket LAVA_BUCKET() - * @method static Potion LEAPING_POTION() - * @method static SplashPotion LEAPING_SPLASH_POTION() * @method static Item LEATHER() * @method static Armor LEATHER_BOOTS() * @method static Armor LEATHER_CAP() @@ -211,34 +199,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Dye LIGHT_GRAY_DYE() * @method static Bed LIME_BED() * @method static Dye LIME_DYE() - * @method static Potion LONG_FIRE_RESISTANCE_POTION() - * @method static SplashPotion LONG_FIRE_RESISTANCE_SPLASH_POTION() - * @method static Potion LONG_INVISIBILITY_POTION() - * @method static SplashPotion LONG_INVISIBILITY_SPLASH_POTION() - * @method static Potion LONG_LEAPING_POTION() - * @method static SplashPotion LONG_LEAPING_SPLASH_POTION() - * @method static Potion LONG_MUNDANE_POTION() - * @method static SplashPotion LONG_MUNDANE_SPLASH_POTION() - * @method static Potion LONG_NIGHT_VISION_POTION() - * @method static SplashPotion LONG_NIGHT_VISION_SPLASH_POTION() - * @method static Potion LONG_POISON_POTION() - * @method static SplashPotion LONG_POISON_SPLASH_POTION() - * @method static Potion LONG_REGENERATION_POTION() - * @method static SplashPotion LONG_REGENERATION_SPLASH_POTION() - * @method static Potion LONG_SLOWNESS_POTION() - * @method static SplashPotion LONG_SLOWNESS_SPLASH_POTION() - * @method static Potion LONG_SLOW_FALLING_POTION() - * @method static SplashPotion LONG_SLOW_FALLING_SPLASH_POTION() - * @method static Potion LONG_STRENGTH_POTION() - * @method static SplashPotion LONG_STRENGTH_SPLASH_POTION() - * @method static Potion LONG_SWIFTNESS_POTION() - * @method static SplashPotion LONG_SWIFTNESS_SPLASH_POTION() - * @method static Potion LONG_TURTLE_MASTER_POTION() - * @method static SplashPotion LONG_TURTLE_MASTER_SPLASH_POTION() - * @method static Potion LONG_WATER_BREATHING_POTION() - * @method static SplashPotion LONG_WATER_BREATHING_SPLASH_POTION() - * @method static Potion LONG_WEAKNESS_POTION() - * @method static SplashPotion LONG_WEAKNESS_SPLASH_POTION() * @method static Bed MAGENTA_BED() * @method static Dye MAGENTA_DYE() * @method static Item MAGMA_CREAM() @@ -246,15 +206,11 @@ use pocketmine\utils\CloningRegistryTrait; * @method static MelonSeeds MELON_SEEDS() * @method static MilkBucket MILK_BUCKET() * @method static Minecart MINECART() - * @method static Potion MUNDANE_POTION() - * @method static SplashPotion MUNDANE_SPLASH_POTION() * @method static MushroomStew MUSHROOM_STEW() * @method static Item NAUTILUS_SHELL() * @method static Item NETHER_BRICK() * @method static Item NETHER_QUARTZ() * @method static Item NETHER_STAR() - * @method static Potion NIGHT_VISION_POTION() - * @method static SplashPotion NIGHT_VISION_SPLASH_POTION() * @method static Boat OAK_BOAT() * @method static ItemBlockWallOrFloor OAK_SIGN() * @method static Bed ORANGE_BED() @@ -265,10 +221,9 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Dye PINK_DYE() * @method static Skull PLAYER_HEAD() * @method static PoisonousPotato POISONOUS_POTATO() - * @method static Potion POISON_POTION() - * @method static SplashPotion POISON_SPLASH_POTION() * @method static Item POPPED_CHORUS_FRUIT() * @method static Potato POTATO() + * @method static Potion POTION() * @method static Item PRISMARINE_CRYSTALS() * @method static Item PRISMARINE_SHARD() * @method static Pufferfish PUFFERFISH() @@ -301,20 +256,15 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Redstone REDSTONE_DUST() * @method static Bed RED_BED() * @method static Dye RED_DYE() - * @method static Potion REGENERATION_POTION() - * @method static SplashPotion REGENERATION_SPLASH_POTION() * @method static RottenFlesh ROTTEN_FLESH() * @method static Item SCUTE() * @method static Shears SHEARS() * @method static Item SHULKER_SHELL() * @method static Skull SKELETON_SKULL() * @method static Item SLIMEBALL() - * @method static Potion SLOWNESS_POTION() - * @method static SplashPotion SLOWNESS_SPLASH_POTION() - * @method static Potion SLOW_FALLING_POTION() - * @method static SplashPotion SLOW_FALLING_SPLASH_POTION() * @method static Snowball SNOWBALL() * @method static SpiderEye SPIDER_EYE() + * @method static SplashPotion SPLASH_POTION() * @method static Boat SPRUCE_BOAT() * @method static ItemBlockWallOrFloor SPRUCE_SIGN() * @method static SpawnEgg SQUID_SPAWN_EGG() @@ -325,49 +275,17 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Pickaxe STONE_PICKAXE() * @method static Shovel STONE_SHOVEL() * @method static Sword STONE_SWORD() - * @method static Potion STRENGTH_POTION() - * @method static SplashPotion STRENGTH_SPLASH_POTION() * @method static StringItem STRING() - * @method static Potion STRONG_HARMING_POTION() - * @method static SplashPotion STRONG_HARMING_SPLASH_POTION() - * @method static Potion STRONG_HEALING_POTION() - * @method static SplashPotion STRONG_HEALING_SPLASH_POTION() - * @method static Potion STRONG_LEAPING_POTION() - * @method static SplashPotion STRONG_LEAPING_SPLASH_POTION() - * @method static Potion STRONG_POISON_POTION() - * @method static SplashPotion STRONG_POISON_SPLASH_POTION() - * @method static Potion STRONG_REGENERATION_POTION() - * @method static SplashPotion STRONG_REGENERATION_SPLASH_POTION() - * @method static Potion STRONG_STRENGTH_POTION() - * @method static SplashPotion STRONG_STRENGTH_SPLASH_POTION() - * @method static Potion STRONG_SWIFTNESS_POTION() - * @method static SplashPotion STRONG_SWIFTNESS_SPLASH_POTION() - * @method static Potion STRONG_TURTLE_MASTER_POTION() - * @method static SplashPotion STRONG_TURTLE_MASTER_SPLASH_POTION() * @method static Item SUGAR() * @method static SweetBerries SWEET_BERRIES() - * @method static Potion SWIFTNESS_POTION() - * @method static SplashPotion SWIFTNESS_SPLASH_POTION() - * @method static Potion THICK_POTION() - * @method static SplashPotion THICK_SPLASH_POTION() * @method static Totem TOTEM() - * @method static Potion TURTLE_MASTER_POTION() - * @method static SplashPotion TURTLE_MASTER_SPLASH_POTION() * @method static SpawnEgg VILLAGER_SPAWN_EGG() - * @method static Potion WATER_BREATHING_POTION() - * @method static SplashPotion WATER_BREATHING_SPLASH_POTION() * @method static LiquidBucket WATER_BUCKET() - * @method static Potion WATER_POTION() - * @method static SplashPotion WATER_SPLASH_POTION() - * @method static Potion WEAKNESS_POTION() - * @method static SplashPotion WEAKNESS_SPLASH_POTION() * @method static Item WHEAT() * @method static WheatSeeds WHEAT_SEEDS() * @method static Bed WHITE_BED() * @method static Dye WHITE_DYE() - * @method static Potion WITHER_POTION() * @method static Skull WITHER_SKELETON_SKULL() - * @method static SplashPotion WITHER_SPLASH_POTION() * @method static Axe WOODEN_AXE() * @method static Hoe WOODEN_HOE() * @method static Pickaxe WOODEN_PICKAXE() @@ -408,8 +326,6 @@ final class VanillaItems{ self::register("air", $factory->get(Ids::AIR, 0, 0)); self::register("apple", $factory->get(Ids::APPLE)); self::register("arrow", $factory->get(Ids::ARROW)); - self::register("awkward_potion", $factory->get(Ids::POTION, 4)); - self::register("awkward_splash_potion", $factory->get(Ids::SPLASH_POTION, 4)); self::register("baked_potato", $factory->get(Ids::BAKED_POTATO)); self::register("bamboo", $factory->get(Ids::BAMBOO)); self::register("banner", $factory->get(Ids::BANNER)); @@ -519,8 +435,6 @@ final class VanillaItems{ self::register("experience_bottle", $factory->get(Ids::BOTTLE_O_ENCHANTING)); self::register("feather", $factory->get(Ids::FEATHER)); self::register("fermented_spider_eye", $factory->get(Ids::FERMENTED_SPIDER_EYE)); - self::register("fire_resistance_potion", $factory->get(Ids::POTION, 12)); - self::register("fire_resistance_splash_potion", $factory->get(Ids::SPLASH_POTION, 12)); self::register("fishing_rod", $factory->get(Ids::FISHING_ROD)); self::register("flint", $factory->get(Ids::FLINT)); self::register("flint_and_steel", $factory->get(Ids::FLINT_AND_STEEL)); @@ -546,14 +460,8 @@ final class VanillaItems{ self::register("green_bed", $factory->get(Ids::BED, 13)); self::register("green_dye", $factory->get(Ids::DYE, 2)); self::register("gunpowder", $factory->get(Ids::GUNPOWDER)); - self::register("harming_potion", $factory->get(Ids::POTION, 23)); - self::register("harming_splash_potion", $factory->get(Ids::SPLASH_POTION, 23)); - self::register("healing_potion", $factory->get(Ids::POTION, 21)); - self::register("healing_splash_potion", $factory->get(Ids::SPLASH_POTION, 21)); self::register("heart_of_the_sea", $factory->get(Ids::HEART_OF_THE_SEA)); self::register("ink_sac", $factory->get(Ids::DYE)); - self::register("invisibility_potion", $factory->get(Ids::POTION, 7)); - self::register("invisibility_splash_potion", $factory->get(Ids::SPLASH_POTION, 7)); self::register("iron_axe", $factory->get(Ids::IRON_AXE)); self::register("iron_boots", $factory->get(Ids::IRON_BOOTS)); self::register("iron_chestplate", $factory->get(Ids::IRON_CHESTPLATE)); @@ -569,8 +477,6 @@ final class VanillaItems{ self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN)); self::register("lapis_lazuli", $factory->get(Ids::DYE, 4)); self::register("lava_bucket", $factory->get(Ids::BUCKET, 10)); - self::register("leaping_potion", $factory->get(Ids::POTION, 9)); - self::register("leaping_splash_potion", $factory->get(Ids::SPLASH_POTION, 9)); self::register("leather", $factory->get(Ids::LEATHER)); self::register("leather_boots", $factory->get(Ids::LEATHER_BOOTS)); self::register("leather_cap", $factory->get(Ids::LEATHER_CAP)); @@ -582,34 +488,6 @@ final class VanillaItems{ self::register("light_gray_dye", $factory->get(Ids::DYE, 7)); self::register("lime_bed", $factory->get(Ids::BED, 5)); self::register("lime_dye", $factory->get(Ids::DYE, 10)); - self::register("long_fire_resistance_potion", $factory->get(Ids::POTION, 13)); - self::register("long_fire_resistance_splash_potion", $factory->get(Ids::SPLASH_POTION, 13)); - self::register("long_invisibility_potion", $factory->get(Ids::POTION, 8)); - self::register("long_invisibility_splash_potion", $factory->get(Ids::SPLASH_POTION, 8)); - self::register("long_leaping_potion", $factory->get(Ids::POTION, 10)); - self::register("long_leaping_splash_potion", $factory->get(Ids::SPLASH_POTION, 10)); - self::register("long_mundane_potion", $factory->get(Ids::POTION, 2)); - self::register("long_mundane_splash_potion", $factory->get(Ids::SPLASH_POTION, 2)); - self::register("long_night_vision_potion", $factory->get(Ids::POTION, 6)); - self::register("long_night_vision_splash_potion", $factory->get(Ids::SPLASH_POTION, 6)); - self::register("long_poison_potion", $factory->get(Ids::POTION, 26)); - self::register("long_poison_splash_potion", $factory->get(Ids::SPLASH_POTION, 26)); - self::register("long_regeneration_potion", $factory->get(Ids::POTION, 29)); - self::register("long_regeneration_splash_potion", $factory->get(Ids::SPLASH_POTION, 29)); - self::register("long_slow_falling_potion", $factory->get(Ids::POTION, 41)); - self::register("long_slow_falling_splash_potion", $factory->get(Ids::SPLASH_POTION, 41)); - self::register("long_slowness_potion", $factory->get(Ids::POTION, 18)); - self::register("long_slowness_splash_potion", $factory->get(Ids::SPLASH_POTION, 18)); - self::register("long_strength_potion", $factory->get(Ids::POTION, 32)); - self::register("long_strength_splash_potion", $factory->get(Ids::SPLASH_POTION, 32)); - self::register("long_swiftness_potion", $factory->get(Ids::POTION, 15)); - self::register("long_swiftness_splash_potion", $factory->get(Ids::SPLASH_POTION, 15)); - self::register("long_turtle_master_potion", $factory->get(Ids::POTION, 38)); - self::register("long_turtle_master_splash_potion", $factory->get(Ids::SPLASH_POTION, 38)); - self::register("long_water_breathing_potion", $factory->get(Ids::POTION, 20)); - self::register("long_water_breathing_splash_potion", $factory->get(Ids::SPLASH_POTION, 20)); - self::register("long_weakness_potion", $factory->get(Ids::POTION, 35)); - self::register("long_weakness_splash_potion", $factory->get(Ids::SPLASH_POTION, 35)); self::register("magenta_bed", $factory->get(Ids::BED, 2)); self::register("magenta_dye", $factory->get(Ids::DYE, 13)); self::register("magma_cream", $factory->get(Ids::MAGMA_CREAM)); @@ -617,15 +495,11 @@ final class VanillaItems{ self::register("melon_seeds", $factory->get(Ids::MELON_SEEDS)); self::register("milk_bucket", $factory->get(Ids::BUCKET, 1)); self::register("minecart", $factory->get(Ids::MINECART)); - self::register("mundane_potion", $factory->get(Ids::POTION, 1)); - self::register("mundane_splash_potion", $factory->get(Ids::SPLASH_POTION, 1)); self::register("mushroom_stew", $factory->get(Ids::MUSHROOM_STEW)); self::register("nautilus_shell", $factory->get(Ids::NAUTILUS_SHELL)); self::register("nether_brick", $factory->get(Ids::NETHERBRICK)); self::register("nether_quartz", $factory->get(Ids::NETHER_QUARTZ)); self::register("nether_star", $factory->get(Ids::NETHERSTAR)); - self::register("night_vision_potion", $factory->get(Ids::POTION, 5)); - self::register("night_vision_splash_potion", $factory->get(Ids::SPLASH_POTION, 5)); self::register("oak_boat", $factory->get(Ids::BOAT)); self::register("oak_sign", $factory->get(Ids::SIGN)); self::register("orange_bed", $factory->get(Ids::BED, 1)); @@ -635,11 +509,10 @@ final class VanillaItems{ self::register("pink_bed", $factory->get(Ids::BED, 6)); self::register("pink_dye", $factory->get(Ids::DYE, 9)); self::register("player_head", $factory->get(Ids::MOB_HEAD, 3)); - self::register("poison_potion", $factory->get(Ids::POTION, 25)); - self::register("poison_splash_potion", $factory->get(Ids::SPLASH_POTION, 25)); self::register("poisonous_potato", $factory->get(Ids::POISONOUS_POTATO)); self::register("popped_chorus_fruit", $factory->get(Ids::CHORUS_FRUIT_POPPED)); self::register("potato", $factory->get(Ids::POTATO)); + self::register("potion", $factory->get(Ids::POTION)); self::register("prismarine_crystals", $factory->get(Ids::PRISMARINE_CRYSTALS)); self::register("prismarine_shard", $factory->get(Ids::PRISMARINE_SHARD)); self::register("pufferfish", $factory->get(Ids::PUFFERFISH)); @@ -672,20 +545,15 @@ final class VanillaItems{ self::register("red_bed", $factory->get(Ids::BED, 14)); self::register("red_dye", $factory->get(Ids::DYE, 1)); self::register("redstone_dust", $factory->get(Ids::REDSTONE)); - self::register("regeneration_potion", $factory->get(Ids::POTION, 28)); - self::register("regeneration_splash_potion", $factory->get(Ids::SPLASH_POTION, 28)); self::register("rotten_flesh", $factory->get(Ids::ROTTEN_FLESH)); self::register("scute", $factory->get(Ids::TURTLE_SHELL_PIECE)); self::register("shears", $factory->get(Ids::SHEARS)); self::register("shulker_shell", $factory->get(Ids::SHULKER_SHELL)); self::register("skeleton_skull", $factory->get(Ids::MOB_HEAD)); self::register("slimeball", $factory->get(Ids::SLIMEBALL)); - self::register("slow_falling_potion", $factory->get(Ids::POTION, 40)); - self::register("slow_falling_splash_potion", $factory->get(Ids::SPLASH_POTION, 40)); - self::register("slowness_potion", $factory->get(Ids::POTION, 17)); - self::register("slowness_splash_potion", $factory->get(Ids::SPLASH_POTION, 17)); self::register("snowball", $factory->get(Ids::SNOWBALL)); self::register("spider_eye", $factory->get(Ids::SPIDER_EYE)); + self::register("splash_potion", $factory->get(Ids::SPLASH_POTION)); self::register("spruce_boat", $factory->get(Ids::BOAT, 1)); self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN)); self::register("squid_spawn_egg", $factory->get(Ids::SPAWN_EGG, 17)); @@ -696,49 +564,17 @@ final class VanillaItems{ self::register("stone_pickaxe", $factory->get(Ids::STONE_PICKAXE)); self::register("stone_shovel", $factory->get(Ids::STONE_SHOVEL)); self::register("stone_sword", $factory->get(Ids::STONE_SWORD)); - self::register("strength_potion", $factory->get(Ids::POTION, 31)); - self::register("strength_splash_potion", $factory->get(Ids::SPLASH_POTION, 31)); self::register("string", $factory->get(Ids::STRING)); - self::register("strong_harming_potion", $factory->get(Ids::POTION, 24)); - self::register("strong_harming_splash_potion", $factory->get(Ids::SPLASH_POTION, 24)); - self::register("strong_healing_potion", $factory->get(Ids::POTION, 22)); - self::register("strong_healing_splash_potion", $factory->get(Ids::SPLASH_POTION, 22)); - self::register("strong_leaping_potion", $factory->get(Ids::POTION, 11)); - self::register("strong_leaping_splash_potion", $factory->get(Ids::SPLASH_POTION, 11)); - self::register("strong_poison_potion", $factory->get(Ids::POTION, 27)); - self::register("strong_poison_splash_potion", $factory->get(Ids::SPLASH_POTION, 27)); - self::register("strong_regeneration_potion", $factory->get(Ids::POTION, 30)); - self::register("strong_regeneration_splash_potion", $factory->get(Ids::SPLASH_POTION, 30)); - self::register("strong_strength_potion", $factory->get(Ids::POTION, 33)); - self::register("strong_strength_splash_potion", $factory->get(Ids::SPLASH_POTION, 33)); - self::register("strong_swiftness_potion", $factory->get(Ids::POTION, 16)); - self::register("strong_swiftness_splash_potion", $factory->get(Ids::SPLASH_POTION, 16)); - self::register("strong_turtle_master_potion", $factory->get(Ids::POTION, 39)); - self::register("strong_turtle_master_splash_potion", $factory->get(Ids::SPLASH_POTION, 39)); self::register("sugar", $factory->get(Ids::SUGAR)); self::register("sweet_berries", $factory->get(Ids::SWEET_BERRIES)); - self::register("swiftness_potion", $factory->get(Ids::POTION, 14)); - self::register("swiftness_splash_potion", $factory->get(Ids::SPLASH_POTION, 14)); - self::register("thick_potion", $factory->get(Ids::POTION, 3)); - self::register("thick_splash_potion", $factory->get(Ids::SPLASH_POTION, 3)); self::register("totem", $factory->get(Ids::TOTEM)); - self::register("turtle_master_potion", $factory->get(Ids::POTION, 37)); - self::register("turtle_master_splash_potion", $factory->get(Ids::SPLASH_POTION, 37)); self::register("villager_spawn_egg", $factory->get(Ids::SPAWN_EGG, 15)); - self::register("water_breathing_potion", $factory->get(Ids::POTION, 19)); - self::register("water_breathing_splash_potion", $factory->get(Ids::SPLASH_POTION, 19)); self::register("water_bucket", $factory->get(Ids::BUCKET, 8)); - self::register("water_potion", $factory->get(Ids::POTION)); - self::register("water_splash_potion", $factory->get(Ids::SPLASH_POTION)); - self::register("weakness_potion", $factory->get(Ids::POTION, 34)); - self::register("weakness_splash_potion", $factory->get(Ids::SPLASH_POTION, 34)); self::register("wheat", $factory->get(Ids::WHEAT)); self::register("wheat_seeds", $factory->get(Ids::SEEDS)); self::register("white_bed", $factory->get(Ids::BED)); self::register("white_dye", $factory->get(Ids::DYE, 19)); - self::register("wither_potion", $factory->get(Ids::POTION, 36)); self::register("wither_skeleton_skull", $factory->get(Ids::MOB_HEAD, 1)); - self::register("wither_splash_potion", $factory->get(Ids::SPLASH_POTION, 36)); self::register("wooden_axe", $factory->get(Ids::WOODEN_AXE)); self::register("wooden_hoe", $factory->get(Ids::WOODEN_HOE)); self::register("wooden_pickaxe", $factory->get(Ids::WOODEN_PICKAXE)); From 56428e8a4e663ee1c412c9ac066cf85b394b90e1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 00:26:16 +0100 Subject: [PATCH 187/692] Make more item stuff dynamic --- src/data/bedrock/item/ItemDeserializer.php | 66 ++++++----------- src/data/bedrock/item/ItemSerializer.php | 79 +++++++-------------- src/item/Bed.php | 17 ++++- src/item/Dye.php | 23 +++++- src/item/ItemFactory.php | 15 ++-- src/item/Skull.php | 14 +++- src/item/StringToItemParser.php | 37 ++++------ src/item/VanillaItems.php | 82 ++-------------------- 8 files changed, 116 insertions(+), 217 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 37fbdad7b..95db05d91 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -144,12 +144,12 @@ final class ItemDeserializer{ $this->map(Ids::BIRCH_BOAT, fn() => Items::BIRCH_BOAT()); $this->map(Ids::BIRCH_DOOR, fn() => Blocks::BIRCH_DOOR()->asItem()); $this->map(Ids::BIRCH_SIGN, fn() => Blocks::BIRCH_SIGN()->asItem()); - $this->map(Ids::BLACK_DYE, fn() => Items::BLACK_DYE()); + $this->map(Ids::BLACK_DYE, fn() => Items::DYE()->setColor(DyeColor::BLACK())); $this->map(Ids::BLAZE_POWDER, fn() => Items::BLAZE_POWDER()); $this->map(Ids::BLAZE_ROD, fn() => Items::BLAZE_ROD()); //TODO: minecraft:blaze_spawn_egg $this->map(Ids::BLEACH, fn() => Items::BLEACH()); - $this->map(Ids::BLUE_DYE, fn() => Items::BLUE_DYE()); + $this->map(Ids::BLUE_DYE, fn() => Items::DYE()->setColor(DyeColor::BLUE())); $this->map(Ids::BOAT, function(Data $data) : Item{ try{ $treeType = TreeType::fromMagicNumber($data->getMeta()); @@ -175,7 +175,7 @@ final class ItemDeserializer{ $this->map(Ids::BREAD, fn() => Items::BREAD()); $this->map(Ids::BREWING_STAND, fn() => Blocks::BREWING_STAND()->asItem()); $this->map(Ids::BRICK, fn() => Items::BRICK()); - $this->map(Ids::BROWN_DYE, fn() => Items::BROWN_DYE()); + $this->map(Ids::BROWN_DYE, fn() => Items::DYE()->setColor(DyeColor::BROWN())); $this->map(Ids::BUCKET, fn() => Items::BUCKET()); $this->map(Ids::CAKE, fn() => Blocks::CAKE()->asItem()); //TODO: minecraft:camera @@ -261,7 +261,7 @@ final class ItemDeserializer{ //TODO: minecraft:crimson_door //TODO: minecraft:crimson_sign //TODO: minecraft:crossbow - $this->map(Ids::CYAN_DYE, fn() => Items::CYAN_DYE()); + $this->map(Ids::CYAN_DYE, fn() => Items::DYE()->setColor(DyeColor::CYAN())); $this->map(Ids::DARK_OAK_BOAT, fn() => Items::DARK_OAK_BOAT()); $this->map(Ids::DARK_OAK_DOOR, fn() => Blocks::DARK_OAK_DOOR()->asItem()); $this->map(Ids::DARK_OAK_SIGN, fn() => Blocks::DARK_OAK_SIGN()->asItem()); @@ -288,10 +288,10 @@ final class ItemDeserializer{ 3 => Items::COCOA_BEANS(), 4 => Items::LAPIS_LAZULI(), 15 => Items::BONE_MEAL(), - 16 => Items::BLACK_DYE(), - 17 => Items::BROWN_DYE(), - 18 => Items::BLUE_DYE(), - 19 => Items::WHITE_DYE(), + 16 => Items::DYE()->setColor(DyeColor::BLACK()), + 17 => Items::DYE()->setColor(DyeColor::BROWN()), + 18 => Items::DYE()->setColor(DyeColor::BLUE()), + 19 => Items::DYE()->setColor(DyeColor::WHITE()), default => null }; if($item !== null){ @@ -301,21 +301,7 @@ final class ItemDeserializer{ if($dyeColor === null){ throw new ItemTypeDeserializeException("Unknown dye meta $meta"); } - return match($dyeColor->id()){ - DyeColor::CYAN()->id() => Items::CYAN_DYE(), - DyeColor::GRAY()->id() => Items::GRAY_DYE(), - DyeColor::GREEN()->id() => Items::GREEN_DYE(), - DyeColor::LIGHT_BLUE()->id() => Items::LIGHT_BLUE_DYE(), - DyeColor::LIGHT_GRAY()->id() => Items::LIGHT_GRAY_DYE(), - DyeColor::LIME()->id() => Items::LIME_DYE(), - DyeColor::MAGENTA()->id() => Items::MAGENTA_DYE(), - DyeColor::ORANGE()->id() => Items::ORANGE_DYE(), - DyeColor::PINK()->id() => Items::PINK_DYE(), - DyeColor::PURPLE()->id() => Items::PURPLE_DYE(), - DyeColor::RED()->id() => Items::RED_DYE(), - DyeColor::YELLOW()->id() => Items::YELLOW_DYE(), - default => throw new AssumptionFailedError("Unhandled dye color " . $dyeColor->name()) - }; + return Items::DYE()->setColor($dyeColor); }); $this->map(Ids::EGG, fn() => Items::EGG()); //TODO: minecraft:elder_guardian_spawn_egg @@ -374,8 +360,8 @@ final class ItemDeserializer{ $this->map(Ids::GOLDEN_PICKAXE, fn() => Items::GOLDEN_PICKAXE()); $this->map(Ids::GOLDEN_SHOVEL, fn() => Items::GOLDEN_SHOVEL()); $this->map(Ids::GOLDEN_SWORD, fn() => Items::GOLDEN_SWORD()); - $this->map(Ids::GRAY_DYE, fn() => Items::GRAY_DYE()); - $this->map(Ids::GREEN_DYE, fn() => Items::GREEN_DYE()); + $this->map(Ids::GRAY_DYE, fn() => Items::DYE()->setColor(DyeColor::GRAY())); + $this->map(Ids::GREEN_DYE, fn() => Items::DYE()->setColor(DyeColor::GREEN())); //TODO: minecraft:guardian_spawn_egg $this->map(Ids::GUNPOWDER, fn() => Items::GUNPOWDER()); $this->map(Ids::HEART_OF_THE_SEA, fn() => Items::HEART_OF_THE_SEA()); @@ -414,13 +400,13 @@ final class ItemDeserializer{ $this->map(Ids::LEATHER_HELMET, fn() => Items::LEATHER_CAP()); //TODO: minecraft:leather_horse_armor $this->map(Ids::LEATHER_LEGGINGS, fn() => Items::LEATHER_PANTS()); - $this->map(Ids::LIGHT_BLUE_DYE, fn() => Items::LIGHT_BLUE_DYE()); - $this->map(Ids::LIGHT_GRAY_DYE, fn() => Items::LIGHT_GRAY_DYE()); - $this->map(Ids::LIME_DYE, fn() => Items::LIME_DYE()); + $this->map(Ids::LIGHT_BLUE_DYE, fn() => Items::DYE()->setColor(DyeColor::LIGHT_BLUE())); + $this->map(Ids::LIGHT_GRAY_DYE, fn() => Items::DYE()->setColor(DyeColor::LIGHT_GRAY())); + $this->map(Ids::LIME_DYE, fn() => Items::DYE()->setColor(DyeColor::LIME())); //TODO: minecraft:lingering_potion //TODO: minecraft:llama_spawn_egg //TODO: minecraft:lodestone_compass - $this->map(Ids::MAGENTA_DYE, fn() => Items::MAGENTA_DYE()); + $this->map(Ids::MAGENTA_DYE, fn() => Items::DYE()->setColor(DyeColor::MAGENTA())); $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); //TODO: minecraft:magma_cube_spawn_egg //TODO: minecraft:medicine @@ -468,7 +454,7 @@ final class ItemDeserializer{ $this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT()); $this->map(Ids::OAK_SIGN, fn() => Blocks::OAK_SIGN()->asItem()); //TODO: minecraft:ocelot_spawn_egg - $this->map(Ids::ORANGE_DYE, fn() => Items::ORANGE_DYE()); + $this->map(Ids::ORANGE_DYE, fn() => Items::DYE()->setColor(DyeColor::ORANGE())); $this->map(Ids::PAINTING, fn() => Items::PAINTING()); //TODO: minecraft:panda_spawn_egg $this->map(Ids::PAPER, fn() => Items::PAPER()); @@ -480,7 +466,7 @@ final class ItemDeserializer{ //TODO: minecraft:piglin_brute_spawn_egg //TODO: minecraft:piglin_spawn_egg //TODO: minecraft:pillager_spawn_egg - $this->map(Ids::PINK_DYE, fn() => Items::PINK_DYE()); + $this->map(Ids::PINK_DYE, fn() => Items::DYE()->setColor(DyeColor::PINK())); $this->map(Ids::POISONOUS_POTATO, fn() => Items::POISONOUS_POTATO()); //TODO: minecraft:polar_bear_spawn_egg $this->map(Ids::POPPED_CHORUS_FRUIT, fn() => Items::POPPED_CHORUS_FRUIT()); @@ -502,7 +488,7 @@ final class ItemDeserializer{ //TODO: minecraft:pufferfish_spawn_egg $this->map(Ids::PUMPKIN_PIE, fn() => Items::PUMPKIN_PIE()); $this->map(Ids::PUMPKIN_SEEDS, fn() => Items::PUMPKIN_SEEDS()); - $this->map(Ids::PURPLE_DYE, fn() => Items::PURPLE_DYE()); + $this->map(Ids::PURPLE_DYE, fn() => Items::DYE()->setColor(DyeColor::PURPLE())); $this->map(Ids::QUARTZ, fn() => Items::NETHER_QUARTZ()); $this->map(Ids::RABBIT, fn() => Items::RAW_RABBIT()); $this->map(Ids::RABBIT_FOOT, fn() => Items::RABBIT_FOOT()); @@ -514,7 +500,7 @@ final class ItemDeserializer{ //TODO: minecraft:raw_copper //TODO: minecraft:raw_gold //TODO: minecraft:raw_iron - $this->map(Ids::RED_DYE, fn() => Items::RED_DYE()); + $this->map(Ids::RED_DYE, fn() => Items::DYE()->setColor(DyeColor::RED())); $this->map(Ids::REDSTONE, fn() => Items::REDSTONE_DUST()); $this->map(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()->asItem()); $this->map(Ids::ROTTEN_FLESH, fn() => Items::ROTTEN_FLESH()); @@ -538,15 +524,7 @@ final class ItemDeserializer{ }catch(\InvalidArgumentException $e){ throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); } - return match($skullType->id()) { - SkullType::SKELETON()->id() => Items::SKELETON_SKULL(), - SkullType::WITHER_SKELETON()->id() => Items::WITHER_SKELETON_SKULL(), - SkullType::ZOMBIE()->id() => Items::ZOMBIE_HEAD(), - SkullType::CREEPER()->id() => Items::CREEPER_HEAD(), - SkullType::PLAYER()->id() => Items::PLAYER_HEAD(), - SkullType::DRAGON()->id() => Items::DRAGON_HEAD(), - default => throw new ItemTypeDeserializeException("Unexpected skull type " . $skullType->getDisplayName()) - }; + return Items::MOB_HEAD()->setSkullType($skullType); }); //TODO: minecraft:skull_banner_pattern $this->map(Ids::SLIME_BALL, fn() => Items::SLIMEBALL()); @@ -608,7 +586,7 @@ final class ItemDeserializer{ $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); $this->map(Ids::WHEAT, fn() => Items::WHEAT()); $this->map(Ids::WHEAT_SEEDS, fn() => Items::WHEAT_SEEDS()); - $this->map(Ids::WHITE_DYE, fn() => Items::WHITE_DYE()); + $this->map(Ids::WHITE_DYE, fn() => Items::DYE()->setColor(DyeColor::WHITE())); //TODO: minecraft:witch_spawn_egg //TODO: minecraft:wither_skeleton_spawn_egg //TODO: minecraft:wolf_spawn_egg @@ -620,7 +598,7 @@ final class ItemDeserializer{ $this->map(Ids::WOODEN_SWORD, fn() => Items::WOODEN_SWORD()); $this->map(Ids::WRITABLE_BOOK, fn() => Items::WRITABLE_BOOK()); $this->map(Ids::WRITTEN_BOOK, fn() => Items::WRITTEN_BOOK()); - $this->map(Ids::YELLOW_DYE, fn() => Items::YELLOW_DYE()); + $this->map(Ids::YELLOW_DYE, fn() => Items::DYE()->setColor(DyeColor::YELLOW())); //TODO: minecraft:zoglin_spawn_egg //TODO: minecraft:zombie_horse_spawn_egg //TODO: minecraft:zombie_pigman_spawn_egg diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index e7f1601ab..eec454f5a 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -25,7 +25,6 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; -use pocketmine\block\utils\SkullType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\block\BlockStateSerializer; @@ -35,10 +34,13 @@ use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\item\Banner; +use pocketmine\item\Bed; use pocketmine\item\CoralFan; +use pocketmine\item\Dye; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\Potion; +use pocketmine\item\Skull; use pocketmine\item\SplashPotion; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; @@ -214,22 +216,6 @@ final class ItemSerializer{ return fn() => new Data($id); } - /** - * @phpstan-return \Closure() : Data - */ - private static function bed(DyeColor $color) : \Closure{ - $meta = DyeColorIdMap::getInstance()->toId($color); - return fn() => new Data(Ids::BED, $meta); - } - - /** - * @phpstan-return \Closure() : Data - */ - private static function skull(SkullType $skullType) : \Closure{ - $meta = $skullType->getMagicNumber(); - return fn() => new Data(Ids::SKULL, $meta); - } - /** * @phpstan-return \Closure() : Data */ @@ -270,18 +256,15 @@ final class ItemSerializer{ $this->map(Items::ARROW(), self::id(Ids::ARROW)); $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); + $this->map(Items::BED(), fn(Bed $item) => new Data(Ids::BED, DyeColorIdMap::getInstance()->toId($item->getColor()))); $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); $this->map(Items::BEETROOT_SEEDS(), self::id(Ids::BEETROOT_SEEDS)); $this->map(Items::BEETROOT_SOUP(), self::id(Ids::BEETROOT_SOUP)); $this->map(Items::BIRCH_BOAT(), self::id(Ids::BIRCH_BOAT)); $this->map(Items::BIRCH_SIGN(), self::id(Ids::BIRCH_SIGN)); - $this->map(Items::BLACK_BED(), self::bed(DyeColor::BLACK())); - $this->map(Items::BLACK_DYE(), self::id(Ids::BLACK_DYE)); $this->map(Items::BLAZE_POWDER(), self::id(Ids::BLAZE_POWDER)); $this->map(Items::BLAZE_ROD(), self::id(Ids::BLAZE_ROD)); $this->map(Items::BLEACH(), self::id(Ids::BLEACH)); - $this->map(Items::BLUE_BED(), self::bed(DyeColor::BLUE())); - $this->map(Items::BLUE_DYE(), self::id(Ids::BLUE_DYE)); $this->map(Items::BONE(), self::id(Ids::BONE)); $this->map(Items::BONE_MEAL(), self::id(Ids::BONE_MEAL)); $this->map(Items::BOOK(), self::id(Ids::BOOK)); @@ -289,8 +272,6 @@ final class ItemSerializer{ $this->map(Items::BOWL(), self::id(Ids::BOWL)); $this->map(Items::BREAD(), self::id(Ids::BREAD)); $this->map(Items::BRICK(), self::id(Ids::BRICK)); - $this->map(Items::BROWN_BED(), self::bed(DyeColor::BROWN())); - $this->map(Items::BROWN_DYE(), self::id(Ids::BROWN_DYE)); $this->map(Items::BUCKET(), self::id(Ids::BUCKET)); $this->map(Items::CARROT(), self::id(Ids::CARROT)); $this->map(Items::CHAINMAIL_BOOTS(), self::id(Ids::CHAINMAIL_BOOTS)); @@ -350,9 +331,6 @@ final class ItemSerializer{ $this->map(Items::COOKED_RABBIT(), self::id(Ids::COOKED_RABBIT)); $this->map(Items::COOKED_SALMON(), self::id(Ids::COOKED_SALMON)); $this->map(Items::COOKIE(), self::id(Ids::COOKIE)); - $this->map(Items::CREEPER_HEAD(), self::skull(SkullType::CREEPER())); - $this->map(Items::CYAN_BED(), self::bed(DyeColor::CYAN())); - $this->map(Items::CYAN_DYE(), self::id(Ids::CYAN_DYE)); $this->map(Items::DARK_OAK_BOAT(), self::id(Ids::DARK_OAK_BOAT)); $this->map(Items::DARK_OAK_SIGN(), self::id(Ids::DARK_OAK_SIGN)); $this->map(Items::DIAMOND(), self::id(Ids::DIAMOND)); @@ -366,8 +344,26 @@ final class ItemSerializer{ $this->map(Items::DIAMOND_SHOVEL(), self::id(Ids::DIAMOND_SHOVEL)); $this->map(Items::DIAMOND_SWORD(), self::id(Ids::DIAMOND_SWORD)); $this->map(Items::DRAGON_BREATH(), self::id(Ids::DRAGON_BREATH)); - $this->map(Items::DRAGON_HEAD(), self::skull(SkullType::DRAGON())); $this->map(Items::DRIED_KELP(), self::id(Ids::DRIED_KELP)); + $this->map(Items::DYE(), fn(Dye $item) => new Data(match($item->getColor()){ + DyeColor::BLACK() => Ids::BLACK_DYE, + DyeColor::BLUE() => Ids::BLUE_DYE, + DyeColor::BROWN() => Ids::BROWN_DYE, + DyeColor::CYAN() => Ids::CYAN_DYE, + DyeColor::GRAY() => Ids::GRAY_DYE, + DyeColor::GREEN() => Ids::GREEN_DYE, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_DYE, + DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_DYE, + DyeColor::LIME() => Ids::LIME_DYE, + DyeColor::MAGENTA() => Ids::MAGENTA_DYE, + DyeColor::ORANGE() => Ids::ORANGE_DYE, + DyeColor::PINK() => Ids::PINK_DYE, + DyeColor::PURPLE() => Ids::PURPLE_DYE, + DyeColor::RED() => Ids::RED_DYE, + DyeColor::WHITE() => Ids::WHITE_DYE, + DyeColor::YELLOW() => Ids::YELLOW_DYE, + default => throw new AssumptionFailedError("Unhandled dye color " . $item->getColor()->name()), + })); $this->map(Items::EGG(), self::id(Ids::EGG)); $this->map(Items::EMERALD(), self::id(Ids::EMERALD)); $this->map(Items::ENCHANTED_GOLDEN_APPLE(), self::id(Ids::ENCHANTED_GOLDEN_APPLE)); @@ -395,10 +391,6 @@ final class ItemSerializer{ $this->map(Items::GOLDEN_SWORD(), self::id(Ids::GOLDEN_SWORD)); $this->map(Items::GOLD_INGOT(), self::id(Ids::GOLD_INGOT)); $this->map(Items::GOLD_NUGGET(), self::id(Ids::GOLD_NUGGET)); - $this->map(Items::GRAY_BED(), self::bed(DyeColor::GRAY())); - $this->map(Items::GRAY_DYE(), self::id(Ids::GRAY_DYE)); - $this->map(Items::GREEN_BED(), self::bed(DyeColor::GREEN())); - $this->map(Items::GREEN_DYE(), self::id(Ids::GREEN_DYE)); $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); @@ -422,19 +414,12 @@ final class ItemSerializer{ $this->map(Items::LEATHER_CAP(), self::id(Ids::LEATHER_HELMET)); $this->map(Items::LEATHER_PANTS(), self::id(Ids::LEATHER_LEGGINGS)); $this->map(Items::LEATHER_TUNIC(), self::id(Ids::LEATHER_CHESTPLATE)); - $this->map(Items::LIGHT_BLUE_BED(), self::bed(DyeColor::LIGHT_BLUE())); - $this->map(Items::LIGHT_BLUE_DYE(), self::id(Ids::LIGHT_BLUE_DYE)); - $this->map(Items::LIGHT_GRAY_BED(), self::bed(DyeColor::LIGHT_GRAY())); - $this->map(Items::LIGHT_GRAY_DYE(), self::id(Ids::LIGHT_GRAY_DYE)); - $this->map(Items::LIME_BED(), self::bed(DyeColor::LIME())); - $this->map(Items::LIME_DYE(), self::id(Ids::LIME_DYE)); - $this->map(Items::MAGENTA_BED(), self::bed(DyeColor::MAGENTA())); - $this->map(Items::MAGENTA_DYE(), self::id(Ids::MAGENTA_DYE)); $this->map(Items::MAGMA_CREAM(), self::id(Ids::MAGMA_CREAM)); $this->map(Items::MELON(), self::id(Ids::MELON_SLICE)); $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); $this->map(Items::MINECART(), self::id(Ids::MINECART)); + $this->map(Items::MOB_HEAD(), fn(Skull $item) => new Data(Ids::SKULL, $item->getSkullType()->getMagicNumber())); $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); @@ -442,13 +427,8 @@ final class ItemSerializer{ $this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR)); $this->map(Items::OAK_BOAT(), self::id(Ids::OAK_BOAT)); $this->map(Items::OAK_SIGN(), self::id(Ids::OAK_SIGN)); - $this->map(Items::ORANGE_BED(), self::bed(DyeColor::ORANGE())); - $this->map(Items::ORANGE_DYE(), self::id(Ids::ORANGE_DYE)); $this->map(Items::PAINTING(), self::id(Ids::PAINTING)); $this->map(Items::PAPER(), self::id(Ids::PAPER)); - $this->map(Items::PINK_BED(), self::bed(DyeColor::PINK())); - $this->map(Items::PINK_DYE(), self::id(Ids::PINK_DYE)); - $this->map(Items::PLAYER_HEAD(), self::skull(SkullType::PLAYER())); $this->map(Items::POISONOUS_POTATO(), self::id(Ids::POISONOUS_POTATO)); $this->map(Items::POPPED_CHORUS_FRUIT(), self::id(Ids::POPPED_CHORUS_FRUIT)); $this->map(Items::POTATO(), self::id(Ids::POTATO)); @@ -458,8 +438,6 @@ final class ItemSerializer{ $this->map(Items::PUFFERFISH(), self::id(Ids::PUFFERFISH)); $this->map(Items::PUMPKIN_PIE(), self::id(Ids::PUMPKIN_PIE)); $this->map(Items::PUMPKIN_SEEDS(), self::id(Ids::PUMPKIN_SEEDS)); - $this->map(Items::PURPLE_BED(), self::bed(DyeColor::PURPLE())); - $this->map(Items::PURPLE_DYE(), self::id(Ids::PURPLE_DYE)); $this->map(Items::RABBIT_FOOT(), self::id(Ids::RABBIT_FOOT)); $this->map(Items::RABBIT_HIDE(), self::id(Ids::RABBIT_HIDE)); $this->map(Items::RABBIT_STEW(), self::id(Ids::RABBIT_STEW)); @@ -483,13 +461,10 @@ final class ItemSerializer{ $this->map(Items::RECORD_WAIT(), self::id(Ids::MUSIC_DISC_WAIT)); $this->map(Items::RECORD_WARD(), self::id(Ids::MUSIC_DISC_WARD)); $this->map(Items::REDSTONE_DUST(), self::id(Ids::REDSTONE)); - $this->map(Items::RED_BED(), self::bed(DyeColor::RED())); - $this->map(Items::RED_DYE(), self::id(Ids::RED_DYE)); $this->map(Items::ROTTEN_FLESH(), self::id(Ids::ROTTEN_FLESH)); $this->map(Items::SCUTE(), self::id(Ids::SCUTE)); $this->map(Items::SHEARS(), self::id(Ids::SHEARS)); $this->map(Items::SHULKER_SHELL(), self::id(Ids::SHULKER_SHELL)); - $this->map(Items::SKELETON_SKULL(), self::skull(SkullType::SKELETON())); $this->map(Items::SLIMEBALL(), self::id(Ids::SLIME_BALL)); $this->map(Items::SNOWBALL(), self::id(Ids::SNOWBALL)); $this->map(Items::SPIDER_EYE(), self::id(Ids::SPIDER_EYE)); @@ -512,9 +487,6 @@ final class ItemSerializer{ $this->map(Items::WATER_BUCKET(), self::id(Ids::WATER_BUCKET)); $this->map(Items::WHEAT(), self::id(Ids::WHEAT)); $this->map(Items::WHEAT_SEEDS(), self::id(Ids::WHEAT_SEEDS)); - $this->map(Items::WHITE_BED(), self::bed(DyeColor::WHITE())); - $this->map(Items::WHITE_DYE(), self::id(Ids::WHITE_DYE)); - $this->map(Items::WITHER_SKELETON_SKULL(), self::skull(SkullType::WITHER_SKELETON())); $this->map(Items::WOODEN_AXE(), self::id(Ids::WOODEN_AXE)); $this->map(Items::WOODEN_HOE(), self::id(Ids::WOODEN_HOE)); $this->map(Items::WOODEN_PICKAXE(), self::id(Ids::WOODEN_PICKAXE)); @@ -522,9 +494,6 @@ final class ItemSerializer{ $this->map(Items::WOODEN_SWORD(), self::id(Ids::WOODEN_SWORD)); $this->map(Items::WRITABLE_BOOK(), self::id(Ids::WRITABLE_BOOK)); $this->map(Items::WRITTEN_BOOK(), self::id(Ids::WRITTEN_BOOK)); - $this->map(Items::YELLOW_BED(), self::bed(DyeColor::YELLOW())); - $this->map(Items::YELLOW_DYE(), self::id(Ids::YELLOW_DYE)); - $this->map(Items::ZOMBIE_HEAD(), self::skull(SkullType::ZOMBIE())); $this->map(Items::ZOMBIE_SPAWN_EGG(), self::id(Ids::ZOMBIE_SPAWN_EGG)); } } diff --git a/src/item/Bed.php b/src/item/Bed.php index b0a14d366..d2dca80cf 100644 --- a/src/item/Bed.php +++ b/src/item/Bed.php @@ -26,19 +26,32 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; +use pocketmine\data\bedrock\DyeColorIdMap; class Bed extends Item{ private DyeColor $color; - public function __construct(ItemIdentifier $identifier, string $name, DyeColor $color){ + public function __construct(ItemIdentifier $identifier, string $name){ + $this->color = DyeColor::WHITE(); parent::__construct($identifier, $name); - $this->color = $color; + } + + public function getMeta() : int{ + return DyeColorIdMap::getInstance()->toId($this->color); } public function getColor() : DyeColor{ return $this->color; } + /** + * @return $this + */ + public function setColor(DyeColor $color) : self{ + $this->color = $color; + return $this; + } + public function getBlock(?int $clickedFace = null) : Block{ return VanillaBlocks::BED()->setColor($this->color); } diff --git a/src/item/Dye.php b/src/item/Dye.php index 5ef866716..9c831b13a 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -24,16 +24,35 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\utils\DyeColor; +use pocketmine\data\bedrock\DyeColorIdMap; class Dye extends Item{ private DyeColor $color; - public function __construct(ItemIdentifier $identifier, string $name, DyeColor $color){ + public function __construct(ItemIdentifier $identifier, string $name){ + $this->color = DyeColor::BLACK(); parent::__construct($identifier, $name); - $this->color = $color; + } + + public function getMeta() : int{ + return match($this->color->id()){ + DyeColor::BLACK()->id() => 16, + DyeColor::BROWN()->id() => 17, + DyeColor::BLUE()->id() => 18, + DyeColor::WHITE()->id() => 19, + default => DyeColorIdMap::getInstance()->toInvertedId($this->color) + }; } public function getColor() : DyeColor{ return $this->color; } + + /** + * @return $this + */ + public function setColor(DyeColor $color) : self{ + $this->color = $color; + return $this; + } } diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index e4eb558ac..fc4a7291e 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -33,7 +33,6 @@ use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\CompoundTypeIds; -use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; @@ -267,21 +266,15 @@ class ItemFactory{ $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, 0), "Written Book")); foreach(SkullType::getAll() as $skullType){ - $this->register(new Skull(new IID(Ids::SKULL, $skullType->getMagicNumber()), $skullType->getDisplayName(), $skullType)); + $this->register((new Skull(new IID(Ids::SKULL, 0), "Mob Head"))->setSkullType($skullType)); } - $dyeMap = [ - DyeColor::BLACK()->id() => 16, - DyeColor::BROWN()->id() => 17, - DyeColor::BLUE()->id() => 18, - DyeColor::WHITE()->id() => 19 - ]; - $colorIdMap = DyeColorIdMap::getInstance(); foreach(DyeColor::getAll() as $color){ //TODO: use colour object directly //TODO: add interface to dye-colour objects - $this->register(new Dye(new IID(Ids::DYE, $dyeMap[$color->id()] ?? $colorIdMap->toInvertedId($color)), $color->getDisplayName() . " Dye", $color)); - $this->register(new Bed(new IID(Ids::BED, $colorIdMap->toId($color)), $color->getDisplayName() . " Bed", $color)); + //1000 isn't the real variant for dye, but it needs to not conflict with INK_SAC + $this->register((new Dye(new IID(Ids::DYE, 1000), "Dye"))->setColor($color)); + $this->register((new Bed(new IID(Ids::BED, 0), "Bed"))->setColor($color)); $this->register((new Banner( new IID(Ids::BANNER, 0), Blocks::BANNER(), diff --git a/src/item/Skull.php b/src/item/Skull.php index 92205e228..c95746515 100644 --- a/src/item/Skull.php +++ b/src/item/Skull.php @@ -30,9 +30,13 @@ use pocketmine\block\VanillaBlocks; class Skull extends Item{ private SkullType $skullType; - public function __construct(ItemIdentifier $identifier, string $name, SkullType $skullType){ + public function __construct(ItemIdentifier $identifier, string $name){ + $this->skullType = SkullType::SKELETON(); parent::__construct($identifier, $name); - $this->skullType = $skullType; + } + + public function getMeta() : int{ + return $this->skullType->getMagicNumber(); } public function getBlock(?int $clickedFace = null) : Block{ @@ -44,4 +48,10 @@ class Skull extends Item{ public function getSkullType() : SkullType{ return $this->skullType; } + + /** @return $this */ + public function setSkullType(SkullType $skullType) : self{ + $this->skullType = $skullType; + return $this; + } } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a6824ccd7..7e69ebe39 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -26,6 +26,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\item\VanillaItems as Items; @@ -58,6 +59,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock($prefix("stained_hardened_glass_pane"), fn() => Blocks::STAINED_HARDENED_GLASS_PANE()->setColor($color)); $result->registerBlock($prefix("wool"), fn() => Blocks::WOOL()->setColor($color)); $result->registerBlock($prefix("shulker_box"), fn() => Blocks::DYED_SHULKER_BOX()->setColor($color)); + + $result->register($prefix("dye"), fn() => Items::DYE()->setColor($color)); } foreach(CoralType::getAll() as $coralType){ $prefix = fn(string $name) => $coralType->name() . "_" . $name; @@ -954,18 +957,16 @@ final class StringToItemParser extends StringToTParser{ $result->register("awkward_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::AWKWARD())); $result->register("baked_potato", fn() => Items::BAKED_POTATO()); $result->register("baked_potatoes", fn() => Items::BAKED_POTATO()); - $result->register("bed", fn() => Items::WHITE_BED()); + $result->register("bed", fn() => Items::BED()); $result->register("beef", fn() => Items::RAW_BEEF()); $result->register("beetroot", fn() => Items::BEETROOT()); $result->register("beetroot_seed", fn() => Items::BEETROOT_SEEDS()); $result->register("beetroot_seeds", fn() => Items::BEETROOT_SEEDS()); $result->register("beetroot_soup", fn() => Items::BEETROOT_SOUP()); $result->register("birch_boat", fn() => Items::BIRCH_BOAT()); - $result->register("black_dye", fn() => Items::BLACK_DYE()); $result->register("blaze_powder", fn() => Items::BLAZE_POWDER()); $result->register("blaze_rod", fn() => Items::BLAZE_ROD()); $result->register("bleach", fn() => Items::BLEACH()); - $result->register("blue_dye", fn() => Items::BLUE_DYE()); $result->register("boat", fn() => Items::OAK_BOAT()); $result->register("bone", fn() => Items::BONE()); $result->register("bone_meal", fn() => Items::BONE_MEAL()); @@ -975,7 +976,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("bowl", fn() => Items::BOWL()); $result->register("bread", fn() => Items::BREAD()); $result->register("brick", fn() => Items::BRICK()); - $result->register("brown_dye", fn() => Items::BROWN_DYE()); $result->register("bucket", fn() => Items::BUCKET()); $result->register("carrot", fn() => Items::CARROT()); $result->register("chain_boots", fn() => Items::CHAINMAIL_BOOTS()); @@ -1047,8 +1047,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("cooked_rabbit", fn() => Items::COOKED_RABBIT()); $result->register("cooked_salmon", fn() => Items::COOKED_SALMON()); $result->register("cookie", fn() => Items::COOKIE()); - $result->register("creeper_head", fn() => Items::CREEPER_HEAD()); - $result->register("cyan_dye", fn() => Items::CYAN_DYE()); + $result->register("creeper_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::CREEPER())); $result->register("dark_oak_boat", fn() => Items::DARK_OAK_BOAT()); $result->register("diamond", fn() => Items::DIAMOND()); $result->register("diamond_axe", fn() => Items::DIAMOND_AXE()); @@ -1061,7 +1060,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("diamond_shovel", fn() => Items::DIAMOND_SHOVEL()); $result->register("diamond_sword", fn() => Items::DIAMOND_SWORD()); $result->register("dragon_breath", fn() => Items::DRAGON_BREATH()); - $result->register("dragon_head", fn() => Items::DRAGON_HEAD()); + $result->register("dragon_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::DRAGON())); $result->register("dried_kelp", fn() => Items::DRIED_KELP()); $result->register("dye", fn() => Items::INK_SAC()); $result->register("egg", fn() => Items::EGG()); @@ -1106,8 +1105,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("golden_pickaxe", fn() => Items::GOLDEN_PICKAXE()); $result->register("golden_shovel", fn() => Items::GOLDEN_SHOVEL()); $result->register("golden_sword", fn() => Items::GOLDEN_SWORD()); - $result->register("gray_dye", fn() => Items::GRAY_DYE()); - $result->register("green_dye", fn() => Items::GREEN_DYE()); $result->register("gunpowder", fn() => Items::GUNPOWDER()); $result->register("harming_potion", fn() => Items::POTION()->setType(PotionType::HARMING())); $result->register("harming_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::HARMING())); @@ -1141,9 +1138,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("leather_leggings", fn() => Items::LEATHER_PANTS()); $result->register("leather_pants", fn() => Items::LEATHER_PANTS()); $result->register("leather_tunic", fn() => Items::LEATHER_TUNIC()); - $result->register("light_blue_dye", fn() => Items::LIGHT_BLUE_DYE()); - $result->register("light_gray_dye", fn() => Items::LIGHT_GRAY_DYE()); - $result->register("lime_dye", fn() => Items::LIME_DYE()); $result->register("long_fire_resistance_potion", fn() => Items::POTION()->setType(PotionType::LONG_FIRE_RESISTANCE())); $result->register("long_fire_resistance_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_FIRE_RESISTANCE())); $result->register("long_invisibility_potion", fn() => Items::POTION()->setType(PotionType::LONG_INVISIBILITY())); @@ -1172,14 +1166,13 @@ final class StringToItemParser extends StringToTParser{ $result->register("long_water_breathing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_WATER_BREATHING())); $result->register("long_weakness_potion", fn() => Items::POTION()->setType(PotionType::LONG_WEAKNESS())); $result->register("long_weakness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::LONG_WEAKNESS())); - $result->register("magenta_dye", fn() => Items::MAGENTA_DYE()); $result->register("magma_cream", fn() => Items::MAGMA_CREAM()); $result->register("melon", fn() => Items::MELON()); $result->register("melon_seeds", fn() => Items::MELON_SEEDS()); $result->register("melon_slice", fn() => Items::MELON()); $result->register("milk_bucket", fn() => Items::MILK_BUCKET()); $result->register("minecart", fn() => Items::MINECART()); - $result->register("mob_head", fn() => Items::SKELETON_SKULL()); + $result->register("mob_head", fn() => Items::MOB_HEAD()); $result->register("mundane_potion", fn() => Items::POTION()->setType(PotionType::MUNDANE())); $result->register("mundane_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::MUNDANE())); $result->register("mushroom_stew", fn() => Items::MUSHROOM_STEW()); @@ -1197,11 +1190,9 @@ final class StringToItemParser extends StringToTParser{ $result->register("night_vision_potion", fn() => Items::POTION()->setType(PotionType::NIGHT_VISION())); $result->register("night_vision_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::NIGHT_VISION())); $result->register("oak_boat", fn() => Items::OAK_BOAT()); - $result->register("orange_dye", fn() => Items::ORANGE_DYE()); $result->register("painting", fn() => Items::PAINTING()); $result->register("paper", fn() => Items::PAPER()); - $result->register("pink_dye", fn() => Items::PINK_DYE()); - $result->register("player_head", fn() => Items::PLAYER_HEAD()); + $result->register("player_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::PLAYER())); $result->register("poison_potion", fn() => Items::POTION()->setType(PotionType::POISON())); $result->register("poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::POISON())); $result->register("poisonous_potato", fn() => Items::POISONOUS_POTATO()); @@ -1215,7 +1206,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("pufferfish", fn() => Items::PUFFERFISH()); $result->register("pumpkin_pie", fn() => Items::PUMPKIN_PIE()); $result->register("pumpkin_seeds", fn() => Items::PUMPKIN_SEEDS()); - $result->register("purple_dye", fn() => Items::PURPLE_DYE()); $result->register("quartz", fn() => Items::NETHER_QUARTZ()); $result->register("rabbit", fn() => Items::RAW_RABBIT()); $result->register("rabbit_foot", fn() => Items::RABBIT_FOOT()); @@ -1241,7 +1231,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("record_strad", fn() => Items::RECORD_STRAD()); $result->register("record_wait", fn() => Items::RECORD_WAIT()); $result->register("record_ward", fn() => Items::RECORD_WARD()); - $result->register("red_dye", fn() => Items::RED_DYE()); $result->register("redstone", fn() => Items::REDSTONE_DUST()); $result->register("redstone_dust", fn() => Items::REDSTONE_DUST()); $result->register("regeneration_potion", fn() => Items::POTION()->setType(PotionType::REGENERATION())); @@ -1252,8 +1241,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("seeds", fn() => Items::WHEAT_SEEDS()); $result->register("shears", fn() => Items::SHEARS()); $result->register("shulker_shell", fn() => Items::SHULKER_SHELL()); - $result->register("skeleton_skull", fn() => Items::SKELETON_SKULL()); - $result->register("skull", fn() => Items::SKELETON_SKULL()); + $result->register("skeleton_skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::SKELETON())); + $result->register("skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::SKELETON())); $result->register("slime_ball", fn() => Items::SLIMEBALL()); $result->register("slimeball", fn() => Items::SLIMEBALL()); $result->register("slow_falling_potion", fn() => Items::POTION()->setType(PotionType::SLOW_FALLING())); @@ -1313,9 +1302,8 @@ final class StringToItemParser extends StringToTParser{ $result->register("weakness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WEAKNESS())); $result->register("wheat", fn() => Items::WHEAT()); $result->register("wheat_seeds", fn() => Items::WHEAT_SEEDS()); - $result->register("white_dye", fn() => Items::WHITE_DYE()); $result->register("wither_potion", fn() => Items::POTION()->setType(PotionType::WITHER())); - $result->register("wither_skeleton_skull", fn() => Items::WITHER_SKELETON_SKULL()); + $result->register("wither_skeleton_skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::WITHER_SKELETON())); $result->register("wither_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WITHER())); $result->register("wooden_axe", fn() => Items::WOODEN_AXE()); $result->register("wooden_hoe", fn() => Items::WOODEN_HOE()); @@ -1324,8 +1312,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("wooden_sword", fn() => Items::WOODEN_SWORD()); $result->register("writable_book", fn() => Items::WRITABLE_BOOK()); $result->register("written_book", fn() => Items::WRITTEN_BOOK()); - $result->register("yellow_dye", fn() => Items::YELLOW_DYE()); - $result->register("zombie_head", fn() => Items::ZOMBIE_HEAD()); + $result->register("zombie_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); $result->register("zombie_spawn_egg", fn() => Items::ZOMBIE_SPAWN_EGG()); return $result; diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index f220e512b..955de8a61 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -40,18 +40,15 @@ use pocketmine\utils\CloningRegistryTrait; * @method static BakedPotato BAKED_POTATO() * @method static Bamboo BAMBOO() * @method static Banner BANNER() + * @method static Bed BED() * @method static Beetroot BEETROOT() * @method static BeetrootSeeds BEETROOT_SEEDS() * @method static BeetrootSoup BEETROOT_SOUP() * @method static Boat BIRCH_BOAT() * @method static ItemBlockWallOrFloor BIRCH_SIGN() - * @method static Bed BLACK_BED() - * @method static Dye BLACK_DYE() * @method static Item BLAZE_POWDER() * @method static BlazeRod BLAZE_ROD() * @method static Item BLEACH() - * @method static Bed BLUE_BED() - * @method static Dye BLUE_DYE() * @method static Item BONE() * @method static Fertilizer BONE_MEAL() * @method static Book BOOK() @@ -59,8 +56,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Bowl BOWL() * @method static Bread BREAD() * @method static Item BRICK() - * @method static Bed BROWN_BED() - * @method static Dye BROWN_DYE() * @method static Bucket BUCKET() * @method static Carrot CARROT() * @method static Armor CHAINMAIL_BOOTS() @@ -121,9 +116,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CookedSalmon COOKED_SALMON() * @method static Cookie COOKIE() * @method static CoralFan CORAL_FAN() - * @method static Skull CREEPER_HEAD() - * @method static Bed CYAN_BED() - * @method static Dye CYAN_DYE() * @method static Boat DARK_OAK_BOAT() * @method static ItemBlockWallOrFloor DARK_OAK_SIGN() * @method static Item DIAMOND() @@ -137,8 +129,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Shovel DIAMOND_SHOVEL() * @method static Sword DIAMOND_SWORD() * @method static Item DRAGON_BREATH() - * @method static Skull DRAGON_HEAD() * @method static DriedKelp DRIED_KELP() + * @method static Dye DYE() * @method static Egg EGG() * @method static Item EMERALD() * @method static GoldenAppleEnchanted ENCHANTED_GOLDEN_APPLE() @@ -166,10 +158,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Sword GOLDEN_SWORD() * @method static Item GOLD_INGOT() * @method static Item GOLD_NUGGET() - * @method static Bed GRAY_BED() - * @method static Dye GRAY_DYE() - * @method static Bed GREEN_BED() - * @method static Dye GREEN_DYE() * @method static Item GUNPOWDER() * @method static Item HEART_OF_THE_SEA() * @method static Item INK_SAC() @@ -193,19 +181,12 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Armor LEATHER_CAP() * @method static Armor LEATHER_PANTS() * @method static Armor LEATHER_TUNIC() - * @method static Bed LIGHT_BLUE_BED() - * @method static Dye LIGHT_BLUE_DYE() - * @method static Bed LIGHT_GRAY_BED() - * @method static Dye LIGHT_GRAY_DYE() - * @method static Bed LIME_BED() - * @method static Dye LIME_DYE() - * @method static Bed MAGENTA_BED() - * @method static Dye MAGENTA_DYE() * @method static Item MAGMA_CREAM() * @method static Melon MELON() * @method static MelonSeeds MELON_SEEDS() * @method static MilkBucket MILK_BUCKET() * @method static Minecart MINECART() + * @method static Skull MOB_HEAD() * @method static MushroomStew MUSHROOM_STEW() * @method static Item NAUTILUS_SHELL() * @method static Item NETHER_BRICK() @@ -213,13 +194,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Item NETHER_STAR() * @method static Boat OAK_BOAT() * @method static ItemBlockWallOrFloor OAK_SIGN() - * @method static Bed ORANGE_BED() - * @method static Dye ORANGE_DYE() * @method static PaintingItem PAINTING() * @method static Item PAPER() - * @method static Bed PINK_BED() - * @method static Dye PINK_DYE() - * @method static Skull PLAYER_HEAD() * @method static PoisonousPotato POISONOUS_POTATO() * @method static Item POPPED_CHORUS_FRUIT() * @method static Potato POTATO() @@ -229,8 +205,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Pufferfish PUFFERFISH() * @method static PumpkinPie PUMPKIN_PIE() * @method static PumpkinSeeds PUMPKIN_SEEDS() - * @method static Bed PURPLE_BED() - * @method static Dye PURPLE_DYE() * @method static Item RABBIT_FOOT() * @method static Item RABBIT_HIDE() * @method static RabbitStew RABBIT_STEW() @@ -254,13 +228,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Record RECORD_WAIT() * @method static Record RECORD_WARD() * @method static Redstone REDSTONE_DUST() - * @method static Bed RED_BED() - * @method static Dye RED_DYE() * @method static RottenFlesh ROTTEN_FLESH() * @method static Item SCUTE() * @method static Shears SHEARS() * @method static Item SHULKER_SHELL() - * @method static Skull SKELETON_SKULL() * @method static Item SLIMEBALL() * @method static Snowball SNOWBALL() * @method static SpiderEye SPIDER_EYE() @@ -283,9 +254,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static LiquidBucket WATER_BUCKET() * @method static Item WHEAT() * @method static WheatSeeds WHEAT_SEEDS() - * @method static Bed WHITE_BED() - * @method static Dye WHITE_DYE() - * @method static Skull WITHER_SKELETON_SKULL() * @method static Axe WOODEN_AXE() * @method static Hoe WOODEN_HOE() * @method static Pickaxe WOODEN_PICKAXE() @@ -293,9 +261,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Sword WOODEN_SWORD() * @method static WritableBook WRITABLE_BOOK() * @method static WrittenBook WRITTEN_BOOK() - * @method static Bed YELLOW_BED() - * @method static Dye YELLOW_DYE() - * @method static Skull ZOMBIE_HEAD() * @method static SpawnEgg ZOMBIE_SPAWN_EGG() */ final class VanillaItems{ @@ -329,18 +294,15 @@ final class VanillaItems{ self::register("baked_potato", $factory->get(Ids::BAKED_POTATO)); self::register("bamboo", $factory->get(Ids::BAMBOO)); self::register("banner", $factory->get(Ids::BANNER)); + self::register("bed", $factory->get(Ids::BED)); self::register("beetroot", $factory->get(Ids::BEETROOT)); self::register("beetroot_seeds", $factory->get(Ids::BEETROOT_SEEDS)); self::register("beetroot_soup", $factory->get(Ids::BEETROOT_SOUP)); self::register("birch_boat", $factory->get(Ids::BOAT, 2)); self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN)); - self::register("black_bed", $factory->get(Ids::BED, 15)); - self::register("black_dye", $factory->get(Ids::DYE, 16)); self::register("blaze_powder", $factory->get(Ids::BLAZE_POWDER)); self::register("blaze_rod", $factory->get(Ids::BLAZE_ROD)); self::register("bleach", $factory->get(Ids::BLEACH)); - self::register("blue_bed", $factory->get(Ids::BED, 11)); - self::register("blue_dye", $factory->get(Ids::DYE, 18)); self::register("bone", $factory->get(Ids::BONE)); self::register("bone_meal", $factory->get(Ids::DYE, 15)); self::register("book", $factory->get(Ids::BOOK)); @@ -348,8 +310,6 @@ final class VanillaItems{ self::register("bowl", $factory->get(Ids::BOWL)); self::register("bread", $factory->get(Ids::BREAD)); self::register("brick", $factory->get(Ids::BRICK)); - self::register("brown_bed", $factory->get(Ids::BED, 12)); - self::register("brown_dye", $factory->get(Ids::DYE, 17)); self::register("bucket", $factory->get(Ids::BUCKET)); self::register("carrot", $factory->get(Ids::CARROT)); self::register("chainmail_boots", $factory->get(Ids::CHAINMAIL_BOOTS)); @@ -410,9 +370,6 @@ final class VanillaItems{ self::register("cooked_salmon", $factory->get(Ids::COOKED_SALMON)); self::register("cookie", $factory->get(Ids::COOKIE)); self::register("coral_fan", $factory->get(Ids::CORAL_FAN)); - self::register("creeper_head", $factory->get(Ids::MOB_HEAD, 4)); - self::register("cyan_bed", $factory->get(Ids::BED, 9)); - self::register("cyan_dye", $factory->get(Ids::DYE, 6)); self::register("dark_oak_boat", $factory->get(Ids::BOAT, 5)); self::register("dark_oak_sign", $factory->get(Ids::DARKOAK_SIGN)); self::register("diamond", $factory->get(Ids::DIAMOND)); @@ -426,8 +383,8 @@ final class VanillaItems{ self::register("diamond_shovel", $factory->get(Ids::DIAMOND_SHOVEL)); self::register("diamond_sword", $factory->get(Ids::DIAMOND_SWORD)); self::register("dragon_breath", $factory->get(Ids::DRAGON_BREATH)); - self::register("dragon_head", $factory->get(Ids::MOB_HEAD, 5)); self::register("dried_kelp", $factory->get(Ids::DRIED_KELP)); + self::register("dye", $factory->get(Ids::DYE, 1)); self::register("egg", $factory->get(Ids::EGG)); self::register("emerald", $factory->get(Ids::EMERALD)); self::register("enchanted_golden_apple", $factory->get(Ids::APPLEENCHANTED)); @@ -455,10 +412,6 @@ final class VanillaItems{ self::register("golden_pickaxe", $factory->get(Ids::GOLDEN_PICKAXE)); self::register("golden_shovel", $factory->get(Ids::GOLDEN_SHOVEL)); self::register("golden_sword", $factory->get(Ids::GOLDEN_SWORD)); - self::register("gray_bed", $factory->get(Ids::BED, 7)); - self::register("gray_dye", $factory->get(Ids::DYE, 8)); - self::register("green_bed", $factory->get(Ids::BED, 13)); - self::register("green_dye", $factory->get(Ids::DYE, 2)); self::register("gunpowder", $factory->get(Ids::GUNPOWDER)); self::register("heart_of_the_sea", $factory->get(Ids::HEART_OF_THE_SEA)); self::register("ink_sac", $factory->get(Ids::DYE)); @@ -482,19 +435,12 @@ final class VanillaItems{ self::register("leather_cap", $factory->get(Ids::LEATHER_CAP)); self::register("leather_pants", $factory->get(Ids::LEATHER_LEGGINGS)); self::register("leather_tunic", $factory->get(Ids::LEATHER_CHESTPLATE)); - self::register("light_blue_bed", $factory->get(Ids::BED, 3)); - self::register("light_blue_dye", $factory->get(Ids::DYE, 12)); - self::register("light_gray_bed", $factory->get(Ids::BED, 8)); - self::register("light_gray_dye", $factory->get(Ids::DYE, 7)); - self::register("lime_bed", $factory->get(Ids::BED, 5)); - self::register("lime_dye", $factory->get(Ids::DYE, 10)); - self::register("magenta_bed", $factory->get(Ids::BED, 2)); - self::register("magenta_dye", $factory->get(Ids::DYE, 13)); self::register("magma_cream", $factory->get(Ids::MAGMA_CREAM)); self::register("melon", $factory->get(Ids::MELON)); self::register("melon_seeds", $factory->get(Ids::MELON_SEEDS)); self::register("milk_bucket", $factory->get(Ids::BUCKET, 1)); self::register("minecart", $factory->get(Ids::MINECART)); + self::register("mob_head", $factory->get(Ids::MOB_HEAD)); self::register("mushroom_stew", $factory->get(Ids::MUSHROOM_STEW)); self::register("nautilus_shell", $factory->get(Ids::NAUTILUS_SHELL)); self::register("nether_brick", $factory->get(Ids::NETHERBRICK)); @@ -502,13 +448,8 @@ final class VanillaItems{ self::register("nether_star", $factory->get(Ids::NETHERSTAR)); self::register("oak_boat", $factory->get(Ids::BOAT)); self::register("oak_sign", $factory->get(Ids::SIGN)); - self::register("orange_bed", $factory->get(Ids::BED, 1)); - self::register("orange_dye", $factory->get(Ids::DYE, 14)); self::register("painting", $factory->get(Ids::PAINTING)); self::register("paper", $factory->get(Ids::PAPER)); - self::register("pink_bed", $factory->get(Ids::BED, 6)); - self::register("pink_dye", $factory->get(Ids::DYE, 9)); - self::register("player_head", $factory->get(Ids::MOB_HEAD, 3)); self::register("poisonous_potato", $factory->get(Ids::POISONOUS_POTATO)); self::register("popped_chorus_fruit", $factory->get(Ids::CHORUS_FRUIT_POPPED)); self::register("potato", $factory->get(Ids::POTATO)); @@ -518,8 +459,6 @@ final class VanillaItems{ self::register("pufferfish", $factory->get(Ids::PUFFERFISH)); self::register("pumpkin_pie", $factory->get(Ids::PUMPKIN_PIE)); self::register("pumpkin_seeds", $factory->get(Ids::PUMPKIN_SEEDS)); - self::register("purple_bed", $factory->get(Ids::BED, 10)); - self::register("purple_dye", $factory->get(Ids::DYE, 5)); self::register("rabbit_foot", $factory->get(Ids::RABBIT_FOOT)); self::register("rabbit_hide", $factory->get(Ids::RABBIT_HIDE)); self::register("rabbit_stew", $factory->get(Ids::RABBIT_STEW)); @@ -542,14 +481,11 @@ final class VanillaItems{ self::register("record_strad", $factory->get(Ids::RECORD_STRAD)); self::register("record_wait", $factory->get(Ids::RECORD_WAIT)); self::register("record_ward", $factory->get(Ids::RECORD_WARD)); - self::register("red_bed", $factory->get(Ids::BED, 14)); - self::register("red_dye", $factory->get(Ids::DYE, 1)); self::register("redstone_dust", $factory->get(Ids::REDSTONE)); self::register("rotten_flesh", $factory->get(Ids::ROTTEN_FLESH)); self::register("scute", $factory->get(Ids::TURTLE_SHELL_PIECE)); self::register("shears", $factory->get(Ids::SHEARS)); self::register("shulker_shell", $factory->get(Ids::SHULKER_SHELL)); - self::register("skeleton_skull", $factory->get(Ids::MOB_HEAD)); self::register("slimeball", $factory->get(Ids::SLIMEBALL)); self::register("snowball", $factory->get(Ids::SNOWBALL)); self::register("spider_eye", $factory->get(Ids::SPIDER_EYE)); @@ -572,9 +508,6 @@ final class VanillaItems{ self::register("water_bucket", $factory->get(Ids::BUCKET, 8)); self::register("wheat", $factory->get(Ids::WHEAT)); self::register("wheat_seeds", $factory->get(Ids::SEEDS)); - self::register("white_bed", $factory->get(Ids::BED)); - self::register("white_dye", $factory->get(Ids::DYE, 19)); - self::register("wither_skeleton_skull", $factory->get(Ids::MOB_HEAD, 1)); self::register("wooden_axe", $factory->get(Ids::WOODEN_AXE)); self::register("wooden_hoe", $factory->get(Ids::WOODEN_HOE)); self::register("wooden_pickaxe", $factory->get(Ids::WOODEN_PICKAXE)); @@ -582,9 +515,6 @@ final class VanillaItems{ self::register("wooden_sword", $factory->get(Ids::WOODEN_SWORD)); self::register("writable_book", $factory->get(Ids::WRITABLE_BOOK)); self::register("written_book", $factory->get(Ids::WRITTEN_BOOK)); - self::register("yellow_bed", $factory->get(Ids::BED, 4)); - self::register("yellow_dye", $factory->get(Ids::DYE, 11)); - self::register("zombie_head", $factory->get(Ids::MOB_HEAD, 2)); self::register("zombie_spawn_egg", $factory->get(Ids::SPAWN_EGG, 32)); } } From dd63681f9454e985395905562df5dc297dd39300 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 13:50:58 +0100 Subject: [PATCH 188/692] Assign auto-generated runtime type IDs to all items --- src/block/Block.php | 12 +- src/block/FloorCoralFan.php | 10 +- src/block/WallCoralFan.php | 12 +- src/item/CoralFan.php | 2 +- src/item/Item.php | 7 +- src/item/ItemBlock.php | 4 +- src/item/ItemFactory.php | 509 ++++++++++++++------------- src/item/ItemIdentifier.php | 38 +- src/item/ItemIdentifierFlattened.php | 13 +- src/item/ItemTypeIds.php | 270 ++++++++++++++ 10 files changed, 584 insertions(+), 293 deletions(-) create mode 100644 src/item/ItemTypeIds.php diff --git a/src/block/Block.php b/src/block/Block.php index 363ddd6c1..a927842e4 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -91,11 +91,19 @@ class Block{ public function asItem() : Item{ return ItemFactory::getInstance()->get( - $this->idInfo->getLegacyItemId(), - $this->idInfo->getLegacyVariant() | $this->writeStateToItemMeta() + $this->getLegacyItemId(), + $this->getLegacyItemMeta() ); } + public function getLegacyItemId() : int{ + return $this->idInfo->getLegacyItemId(); + } + + public function getLegacyItemMeta() : int{ + return $this->idInfo->getLegacyVariant() | $this->writeStateToItemMeta(); + } + protected function writeStateToItemMeta() : int{ return 0; } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 8e5377f23..c88f9575a 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -27,7 +27,6 @@ use pocketmine\block\utils\BlockDataReader; use pocketmine\block\utils\BlockDataWriter; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; use pocketmine\item\ItemIds; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -40,12 +39,8 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - public function asItem() : Item{ - //TODO: HACK! workaround dead flag being lost when broken / blockpicked (original impl only uses first ID) - return ItemFactory::getInstance()->get( - $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN, - $this->writeStateToItemMeta() - ); + public function getLegacyItemId() : int{ + return $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN; } protected function writeStateToItemMeta() : int{ @@ -105,5 +100,4 @@ final class FloorCoralFan extends BaseCoral{ private function canBeSupportedBy(Block $block) : bool{ return $block->getSupportType(Facing::UP)->hasCenterSupport(); } - } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 125fda907..c4043ed04 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -28,7 +28,6 @@ use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; use pocketmine\item\ItemIds; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -39,6 +38,10 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; + public function getLegacyItemId() : int{ + return $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN; + } + protected function writeStateToItemMeta() : int{ return CoralTypeIdMap::getInstance()->toId($this->coralType); } @@ -55,13 +58,6 @@ final class WallCoralFan extends BaseCoral{ $w->writeHorizontalFacing($this->facing); } - public function asItem() : Item{ - return ItemFactory::getInstance()->get( - $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN, - $this->writeStateToItemMeta() - ); - } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $axis = Facing::axis($face); if(($axis !== Axis::X && $axis !== Axis::Z) || !$this->canBeSupportedBy($blockClicked, $face)){ diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index c9937cf0d..8beceee14 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -38,7 +38,7 @@ final class CoralFan extends Item{ } public function getId() : int{ - return $this->dead ? $this->identifierFlattened->getAdditionalIds()[0] : $this->identifierFlattened->getId(); + return $this->dead ? $this->identifierFlattened->getAdditionalLegacyIds()[0] : $this->identifierFlattened->getLegacyId(); } public function getMeta() : int{ diff --git a/src/item/Item.php b/src/item/Item.php index 60605d7a8..48a3509c7 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -428,16 +428,15 @@ class Item implements \JsonSerializable{ } final public function getTypeId() : int{ - //don't use Item::getMeta(), since it might be overridden for non-type information (e.g. durability) - return ($this->identifier->getId() << 16) | $this->identifier->getMeta(); + return $this->identifier->getTypeId(); } public function getId() : int{ - return $this->identifier->getId(); + return $this->identifier->getLegacyId(); } public function getMeta() : int{ - return $this->identifier->getMeta(); + return $this->identifier->getLegacyMeta(); } /** diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 7bb358fec..6f7914098 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -35,8 +35,8 @@ use pocketmine\block\BlockFactory; final class ItemBlock extends Item{ private int $blockFullId; - public function __construct(ItemIdentifier $identifier, Block $block){ - parent::__construct($identifier, $block->getName()); + public function __construct(Block $block){ + parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); $this->blockFullId = $block->getStateId(); } diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index fc4a7291e..c297d9c53 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; @@ -42,10 +41,12 @@ use pocketmine\entity\Villager; use pocketmine\entity\Zombie; use pocketmine\inventory\ArmorInventory; use pocketmine\item\ItemIdentifier as IID; -use pocketmine\item\ItemIds as Ids; +use pocketmine\item\ItemIds as LegacyIds; +use pocketmine\item\ItemTypeIds as Ids; use pocketmine\math\Vector3; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\World; @@ -66,229 +67,239 @@ class ItemFactory{ $this->registerSpawnEggs(); $this->registerTierToolItems(); - $this->register(new Apple(new IID(Ids::APPLE, 0), "Apple")); - $this->register(new Arrow(new IID(Ids::ARROW, 0), "Arrow")); + $this->register(new Apple(new IID(Ids::APPLE, LegacyIds::APPLE, 0), "Apple")); + $this->register(new Arrow(new IID(Ids::ARROW, LegacyIds::ARROW, 0), "Arrow")); - $this->register(new BakedPotato(new IID(Ids::BAKED_POTATO, 0), "Baked Potato")); - $this->register(new Bamboo(new IID(Ids::BAMBOO, 0), "Bamboo"), true); - $this->register(new Beetroot(new IID(Ids::BEETROOT, 0), "Beetroot")); - $this->register(new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS, 0), "Beetroot Seeds")); - $this->register(new BeetrootSoup(new IID(Ids::BEETROOT_SOUP, 0), "Beetroot Soup")); - $this->register(new BlazeRod(new IID(Ids::BLAZE_ROD, 0), "Blaze Rod")); - $this->register(new Book(new IID(Ids::BOOK, 0), "Book")); - $this->register(new Bow(new IID(Ids::BOW, 0), "Bow")); - $this->register(new Bowl(new IID(Ids::BOWL, 0), "Bowl")); - $this->register(new Bread(new IID(Ids::BREAD, 0), "Bread")); - $this->register(new Bucket(new IID(Ids::BUCKET, 0), "Bucket")); - $this->register(new Carrot(new IID(Ids::CARROT, 0), "Carrot")); - $this->register(new ChorusFruit(new IID(Ids::CHORUS_FRUIT, 0), "Chorus Fruit")); - $this->register(new Clock(new IID(Ids::CLOCK, 0), "Clock")); - $this->register(new Clownfish(new IID(Ids::CLOWNFISH, 0), "Clownfish")); - $this->register(new Coal(new IID(Ids::COAL, 0), "Coal")); + $this->register(new BakedPotato(new IID(Ids::BAKED_POTATO, LegacyIds::BAKED_POTATO, 0), "Baked Potato")); + $this->register(new Bamboo(new IID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo"), true); + $this->register(new Beetroot(new IID(Ids::BEETROOT, LegacyIds::BEETROOT, 0), "Beetroot")); + $this->register(new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS, LegacyIds::BEETROOT_SEEDS, 0), "Beetroot Seeds")); + $this->register(new BeetrootSoup(new IID(Ids::BEETROOT_SOUP, LegacyIds::BEETROOT_SOUP, 0), "Beetroot Soup")); + $this->register(new BlazeRod(new IID(Ids::BLAZE_ROD, LegacyIds::BLAZE_ROD, 0), "Blaze Rod")); + $this->register(new Book(new IID(Ids::BOOK, LegacyIds::BOOK, 0), "Book")); + $this->register(new Bow(new IID(Ids::BOW, LegacyIds::BOW, 0), "Bow")); + $this->register(new Bowl(new IID(Ids::BOWL, LegacyIds::BOWL, 0), "Bowl")); + $this->register(new Bread(new IID(Ids::BREAD, LegacyIds::BREAD, 0), "Bread")); + $this->register(new Bucket(new IID(Ids::BUCKET, LegacyIds::BUCKET, 0), "Bucket")); + $this->register(new Carrot(new IID(Ids::CARROT, LegacyIds::CARROT, 0), "Carrot")); + $this->register(new ChorusFruit(new IID(Ids::CHORUS_FRUIT, LegacyIds::CHORUS_FRUIT, 0), "Chorus Fruit")); + $this->register(new Clock(new IID(Ids::CLOCK, LegacyIds::CLOCK, 0), "Clock")); + $this->register(new Clownfish(new IID(Ids::CLOWNFISH, LegacyIds::CLOWNFISH, 0), "Clownfish")); + $this->register(new Coal(new IID(Ids::COAL, LegacyIds::COAL, 0), "Coal")); - $identifier = new ItemIdentifierFlattened(Ids::CORAL_FAN, 0, [Ids::CORAL_FAN_DEAD]); + $identifier = new ItemIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, [LegacyIds::CORAL_FAN_DEAD]); foreach(CoralType::getAll() as $coralType){ $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(false), true); $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(true), true); } - $this->register(new Coal(new IID(Ids::COAL, 1), "Charcoal")); - $this->register(new CocoaBeans(new IID(Ids::DYE, 3), "Cocoa Beans")); - $this->register(new Compass(new IID(Ids::COMPASS, 0), "Compass")); - $this->register(new CookedChicken(new IID(Ids::COOKED_CHICKEN, 0), "Cooked Chicken")); - $this->register(new CookedFish(new IID(Ids::COOKED_FISH, 0), "Cooked Fish")); - $this->register(new CookedMutton(new IID(Ids::COOKED_MUTTON, 0), "Cooked Mutton")); - $this->register(new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP, 0), "Cooked Porkchop")); - $this->register(new CookedRabbit(new IID(Ids::COOKED_RABBIT, 0), "Cooked Rabbit")); - $this->register(new CookedSalmon(new IID(Ids::COOKED_SALMON, 0), "Cooked Salmon")); - $this->register(new Cookie(new IID(Ids::COOKIE, 0), "Cookie")); - $this->register(new DriedKelp(new IID(Ids::DRIED_KELP, 0), "Dried Kelp")); - $this->register(new Egg(new IID(Ids::EGG, 0), "Egg")); - $this->register(new EnderPearl(new IID(Ids::ENDER_PEARL, 0), "Ender Pearl")); - $this->register(new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE, 0), "Bottle o' Enchanting")); - $this->register(new Fertilizer(new IID(Ids::DYE, 15), "Bone Meal")); - $this->register(new FishingRod(new IID(Ids::FISHING_ROD, 0), "Fishing Rod")); - $this->register(new FlintSteel(new IID(Ids::FLINT_STEEL, 0), "Flint and Steel")); - $this->register(new GlassBottle(new IID(Ids::GLASS_BOTTLE, 0), "Glass Bottle")); - $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE, 0), "Golden Apple")); - $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE, 0), "Enchanted Golden Apple")); - $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT, 0), "Golden Carrot")); - $this->register(new Item(new IID(Ids::BLAZE_POWDER, 0), "Blaze Powder")); - $this->register(new Item(new IID(Ids::BLEACH, 0), "Bleach")); //EDU - $this->register(new Item(new IID(Ids::BONE, 0), "Bone")); - $this->register(new Item(new IID(Ids::BRICK, 0), "Brick")); - $this->register(new Item(new IID(Ids::CHORUS_FRUIT_POPPED, 0), "Popped Chorus Fruit")); - $this->register(new Item(new IID(Ids::CLAY_BALL, 0), "Clay")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SALT), "Salt")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_OXIDE), "Sodium Oxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_HYDROXIDE), "Sodium Hydroxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::MAGNESIUM_NITRATE), "Magnesium Nitrate")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::IRON_SULPHIDE), "Iron Sulphide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::LITHIUM_HYDRIDE), "Lithium Hydride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_HYDRIDE), "Sodium Hydride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::CALCIUM_BROMIDE), "Calcium Bromide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::MAGNESIUM_OXIDE), "Magnesium Oxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_ACETATE), "Sodium Acetate")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::LUMINOL), "Luminol")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::CHARCOAL), "Charcoal")); //??? maybe bug - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SUGAR), "Sugar")); //??? maybe bug - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::ALUMINIUM_OXIDE), "Aluminium Oxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::BORON_TRIOXIDE), "Boron Trioxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SOAP), "Soap")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::POLYETHYLENE), "Polyethylene")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::RUBBISH), "Rubbish")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::MAGNESIUM_SALTS), "Magnesium Salts")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SULPHATE), "Sulphate")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::BARIUM_SULPHATE), "Barium Sulphate")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::POTASSIUM_CHLORIDE), "Potassium Chloride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::MERCURIC_CHLORIDE), "Mercuric Chloride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::CERIUM_CHLORIDE), "Cerium Chloride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::TUNGSTEN_CHLORIDE), "Tungsten Chloride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::CALCIUM_CHLORIDE), "Calcium Chloride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::WATER), "Water")); //??? - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::GLUE), "Glue")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::HYPOCHLORITE), "Hypochlorite")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::CRUDE_OIL), "Crude Oil")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::LATEX), "Latex")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::POTASSIUM_IODIDE), "Potassium Iodide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_FLUORIDE), "Sodium Fluoride")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::BENZENE), "Benzene")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::INK), "Ink")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::AMMONIA), "Ammonia")); - $this->register(new Item(new IID(Ids::COMPOUND, CompoundTypeIds::SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); - $this->register(new Item(new IID(Ids::DIAMOND, 0), "Diamond")); - $this->register(new Item(new IID(Ids::DRAGON_BREATH, 0), "Dragon's Breath")); - $this->register(new Item(new IID(Ids::DYE, 0), "Ink Sac")); - $this->register(new Item(new IID(Ids::DYE, 4), "Lapis Lazuli")); - $this->register(new Item(new IID(Ids::EMERALD, 0), "Emerald")); - $this->register(new Item(new IID(Ids::FEATHER, 0), "Feather")); - $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE, 0), "Fermented Spider Eye")); - $this->register(new Item(new IID(Ids::FLINT, 0), "Flint")); - $this->register(new Item(new IID(Ids::GHAST_TEAR, 0), "Ghast Tear")); - $this->register(new Item(new IID(Ids::GLISTERING_MELON, 0), "Glistering Melon")); - $this->register(new Item(new IID(Ids::GLOWSTONE_DUST, 0), "Glowstone Dust")); - $this->register(new Item(new IID(Ids::GOLD_INGOT, 0), "Gold Ingot")); - $this->register(new Item(new IID(Ids::GOLD_NUGGET, 0), "Gold Nugget")); - $this->register(new Item(new IID(Ids::GUNPOWDER, 0), "Gunpowder")); - $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA, 0), "Heart of the Sea")); - $this->register(new Item(new IID(Ids::IRON_INGOT, 0), "Iron Ingot")); - $this->register(new Item(new IID(Ids::IRON_NUGGET, 0), "Iron Nugget")); - $this->register(new Item(new IID(Ids::LEATHER, 0), "Leather")); - $this->register(new Item(new IID(Ids::MAGMA_CREAM, 0), "Magma Cream")); - $this->register(new Item(new IID(Ids::NAUTILUS_SHELL, 0), "Nautilus Shell")); - $this->register(new Item(new IID(Ids::NETHER_BRICK, 0), "Nether Brick")); - $this->register(new Item(new IID(Ids::NETHER_QUARTZ, 0), "Nether Quartz")); - $this->register(new Item(new IID(Ids::NETHER_STAR, 0), "Nether Star")); - $this->register(new Item(new IID(Ids::PAPER, 0), "Paper")); - $this->register(new Item(new IID(Ids::PRISMARINE_CRYSTALS, 0), "Prismarine Crystals")); - $this->register(new Item(new IID(Ids::PRISMARINE_SHARD, 0), "Prismarine Shard")); - $this->register(new Item(new IID(Ids::RABBIT_FOOT, 0), "Rabbit's Foot")); - $this->register(new Item(new IID(Ids::RABBIT_HIDE, 0), "Rabbit Hide")); - $this->register(new Item(new IID(Ids::SHULKER_SHELL, 0), "Shulker Shell")); - $this->register(new Item(new IID(Ids::SLIME_BALL, 0), "Slimeball")); - $this->register(new Item(new IID(Ids::SUGAR, 0), "Sugar")); - $this->register(new Item(new IID(Ids::TURTLE_SHELL_PIECE, 0), "Scute")); - $this->register(new Item(new IID(Ids::WHEAT, 0), "Wheat")); - $this->register(new ItemBlock(new IID(Ids::ACACIA_DOOR, 0), Blocks::ACACIA_DOOR())); - $this->register(new ItemBlock(new IID(Ids::BIRCH_DOOR, 0), Blocks::BIRCH_DOOR())); - $this->register(new ItemBlock(new IID(Ids::BREWING_STAND, 0), Blocks::BREWING_STAND())); - $this->register(new ItemBlock(new IID(Ids::CAKE, 0), Blocks::CAKE())); - $this->register(new ItemBlock(new IID(Ids::COMPARATOR, 0), Blocks::REDSTONE_COMPARATOR())); - $this->register(new ItemBlock(new IID(Ids::DARK_OAK_DOOR, 0), Blocks::DARK_OAK_DOOR())); - $this->register(new ItemBlock(new IID(Ids::FLOWER_POT, 0), Blocks::FLOWER_POT())); - $this->register(new ItemBlock(new IID(Ids::HOPPER, 0), Blocks::HOPPER())); - $this->register(new ItemBlock(new IID(Ids::IRON_DOOR, 0), Blocks::IRON_DOOR())); - $this->register(new ItemBlock(new IID(Ids::ITEM_FRAME, 0), Blocks::ITEM_FRAME())); - $this->register(new ItemBlock(new IID(Ids::JUNGLE_DOOR, 0), Blocks::JUNGLE_DOOR())); - $this->register(new ItemBlock(new IID(Ids::NETHER_WART, 0), Blocks::NETHER_WART())); - $this->register(new ItemBlock(new IID(Ids::OAK_DOOR, 0), Blocks::OAK_DOOR())); - $this->register(new ItemBlock(new IID(Ids::REPEATER, 0), Blocks::REDSTONE_REPEATER())); - $this->register(new ItemBlock(new IID(Ids::SPRUCE_DOOR, 0), Blocks::SPRUCE_DOOR())); - $this->register(new ItemBlock(new IID(Ids::SUGARCANE, 0), Blocks::SUGARCANE())); + $this->register(new Coal(new IID(Ids::CHARCOAL, LegacyIds::COAL, 1), "Charcoal")); + $this->register(new CocoaBeans(new IID(Ids::COCOA_BEANS, LegacyIds::DYE, 3), "Cocoa Beans")); + $this->register(new Compass(new IID(Ids::COMPASS, LegacyIds::COMPASS, 0), "Compass")); + $this->register(new CookedChicken(new IID(Ids::COOKED_CHICKEN, LegacyIds::COOKED_CHICKEN, 0), "Cooked Chicken")); + $this->register(new CookedFish(new IID(Ids::COOKED_FISH, LegacyIds::COOKED_FISH, 0), "Cooked Fish")); + $this->register(new CookedMutton(new IID(Ids::COOKED_MUTTON, LegacyIds::COOKED_MUTTON, 0), "Cooked Mutton")); + $this->register(new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP, LegacyIds::COOKED_PORKCHOP, 0), "Cooked Porkchop")); + $this->register(new CookedRabbit(new IID(Ids::COOKED_RABBIT, LegacyIds::COOKED_RABBIT, 0), "Cooked Rabbit")); + $this->register(new CookedSalmon(new IID(Ids::COOKED_SALMON, LegacyIds::COOKED_SALMON, 0), "Cooked Salmon")); + $this->register(new Cookie(new IID(Ids::COOKIE, LegacyIds::COOKIE, 0), "Cookie")); + $this->register(new DriedKelp(new IID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP, 0), "Dried Kelp")); + $this->register(new Egg(new IID(Ids::EGG, LegacyIds::EGG, 0), "Egg")); + $this->register(new EnderPearl(new IID(Ids::ENDER_PEARL, LegacyIds::ENDER_PEARL, 0), "Ender Pearl")); + $this->register(new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE, LegacyIds::EXPERIENCE_BOTTLE, 0), "Bottle o' Enchanting")); + $this->register(new Fertilizer(new IID(Ids::BONE_MEAL, LegacyIds::DYE, 15), "Bone Meal")); + $this->register(new FishingRod(new IID(Ids::FISHING_ROD, LegacyIds::FISHING_ROD, 0), "Fishing Rod")); + $this->register(new FlintSteel(new IID(Ids::FLINT_AND_STEEL, LegacyIds::FLINT_STEEL, 0), "Flint and Steel")); + $this->register(new GlassBottle(new IID(Ids::GLASS_BOTTLE, LegacyIds::GLASS_BOTTLE, 0), "Glass Bottle")); + $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE, LegacyIds::GOLDEN_APPLE, 0), "Golden Apple")); + $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE, LegacyIds::ENCHANTED_GOLDEN_APPLE, 0), "Enchanted Golden Apple")); + $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT, LegacyIds::GOLDEN_CARROT, 0), "Golden Carrot")); + $this->register(new Item(new IID(Ids::BLAZE_POWDER, LegacyIds::BLAZE_POWDER, 0), "Blaze Powder")); + $this->register(new Item(new IID(Ids::BLEACH, LegacyIds::BLEACH, 0), "Bleach")); //EDU + $this->register(new Item(new IID(Ids::BONE, LegacyIds::BONE, 0), "Bone")); + $this->register(new Item(new IID(Ids::BRICK, LegacyIds::BRICK, 0), "Brick")); + $this->register(new Item(new IID(Ids::POPPED_CHORUS_FRUIT, LegacyIds::CHORUS_FRUIT_POPPED, 0), "Popped Chorus Fruit")); + $this->register(new Item(new IID(Ids::CLAY, LegacyIds::CLAY_BALL, 0), "Clay")); + $this->register(new Item(new IID(Ids::CHEMICAL_SALT, LegacyIds::COMPOUND, CompoundTypeIds::SALT), "Salt")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_OXIDE), "Sodium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYDROXIDE), "Sodium Hydroxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_NITRATE), "Magnesium Nitrate")); + $this->register(new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE, LegacyIds::COMPOUND, CompoundTypeIds::IRON_SULPHIDE), "Iron Sulphide")); + $this->register(new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE, LegacyIds::COMPOUND, CompoundTypeIds::LITHIUM_HYDRIDE), "Lithium Hydride")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYDRIDE), "Sodium Hydride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE, LegacyIds::COMPOUND, CompoundTypeIds::CALCIUM_BROMIDE), "Calcium Bromide")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_OXIDE), "Magnesium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_ACETATE), "Sodium Acetate")); + $this->register(new Item(new IID(Ids::CHEMICAL_LUMINOL, LegacyIds::COMPOUND, CompoundTypeIds::LUMINOL), "Luminol")); + $this->register(new Item(new IID(Ids::CHEMICAL_CHARCOAL, LegacyIds::COMPOUND, CompoundTypeIds::CHARCOAL), "Charcoal")); //??? maybe bug + $this->register(new Item(new IID(Ids::CHEMICAL_SUGAR, LegacyIds::COMPOUND, CompoundTypeIds::SUGAR), "Sugar")); //??? maybe bug + $this->register(new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::ALUMINIUM_OXIDE), "Aluminium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE, LegacyIds::COMPOUND, CompoundTypeIds::BORON_TRIOXIDE), "Boron Trioxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SOAP, LegacyIds::COMPOUND, CompoundTypeIds::SOAP), "Soap")); + $this->register(new Item(new IID(Ids::CHEMICAL_POLYETHYLENE, LegacyIds::COMPOUND, CompoundTypeIds::POLYETHYLENE), "Polyethylene")); + $this->register(new Item(new IID(Ids::CHEMICAL_RUBBISH, LegacyIds::COMPOUND, CompoundTypeIds::RUBBISH), "Rubbish")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_SALTS), "Magnesium Salts")); + $this->register(new Item(new IID(Ids::CHEMICAL_SULPHATE, LegacyIds::COMPOUND, CompoundTypeIds::SULPHATE), "Sulphate")); + $this->register(new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE, LegacyIds::COMPOUND, CompoundTypeIds::BARIUM_SULPHATE), "Barium Sulphate")); + $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::POTASSIUM_CHLORIDE), "Potassium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::MERCURIC_CHLORIDE), "Mercuric Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::CERIUM_CHLORIDE), "Cerium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::TUNGSTEN_CHLORIDE), "Tungsten Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::CALCIUM_CHLORIDE), "Calcium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_WATER, LegacyIds::COMPOUND, CompoundTypeIds::WATER), "Water")); //??? + $this->register(new Item(new IID(Ids::CHEMICAL_GLUE, LegacyIds::COMPOUND, CompoundTypeIds::GLUE), "Glue")); + $this->register(new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE, LegacyIds::COMPOUND, CompoundTypeIds::HYPOCHLORITE), "Hypochlorite")); + $this->register(new Item(new IID(Ids::CHEMICAL_CRUDE_OIL, LegacyIds::COMPOUND, CompoundTypeIds::CRUDE_OIL), "Crude Oil")); + $this->register(new Item(new IID(Ids::CHEMICAL_LATEX, LegacyIds::COMPOUND, CompoundTypeIds::LATEX), "Latex")); + $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE, LegacyIds::COMPOUND, CompoundTypeIds::POTASSIUM_IODIDE), "Potassium Iodide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_FLUORIDE), "Sodium Fluoride")); + $this->register(new Item(new IID(Ids::CHEMICAL_BENZENE, LegacyIds::COMPOUND, CompoundTypeIds::BENZENE), "Benzene")); + $this->register(new Item(new IID(Ids::CHEMICAL_INK, LegacyIds::COMPOUND, CompoundTypeIds::INK), "Ink")); + $this->register(new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE, LegacyIds::COMPOUND, CompoundTypeIds::HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_AMMONIA, LegacyIds::COMPOUND, CompoundTypeIds::AMMONIA), "Ammonia")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); + $this->register(new Item(new IID(Ids::DIAMOND, LegacyIds::DIAMOND, 0), "Diamond")); + $this->register(new Item(new IID(Ids::DRAGON_BREATH, LegacyIds::DRAGON_BREATH, 0), "Dragon's Breath")); + $this->register(new Item(new IID(Ids::INK_SAC, LegacyIds::DYE, 0), "Ink Sac")); + $this->register(new Item(new IID(Ids::LAPIS_LAZULI, LegacyIds::DYE, 4), "Lapis Lazuli")); + $this->register(new Item(new IID(Ids::EMERALD, LegacyIds::EMERALD, 0), "Emerald")); + $this->register(new Item(new IID(Ids::FEATHER, LegacyIds::FEATHER, 0), "Feather")); + $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE, LegacyIds::FERMENTED_SPIDER_EYE, 0), "Fermented Spider Eye")); + $this->register(new Item(new IID(Ids::FLINT, LegacyIds::FLINT, 0), "Flint")); + $this->register(new Item(new IID(Ids::GHAST_TEAR, LegacyIds::GHAST_TEAR, 0), "Ghast Tear")); + $this->register(new Item(new IID(Ids::GLISTERING_MELON, LegacyIds::GLISTERING_MELON, 0), "Glistering Melon")); + $this->register(new Item(new IID(Ids::GLOWSTONE_DUST, LegacyIds::GLOWSTONE_DUST, 0), "Glowstone Dust")); + $this->register(new Item(new IID(Ids::GOLD_INGOT, LegacyIds::GOLD_INGOT, 0), "Gold Ingot")); + $this->register(new Item(new IID(Ids::GOLD_NUGGET, LegacyIds::GOLD_NUGGET, 0), "Gold Nugget")); + $this->register(new Item(new IID(Ids::GUNPOWDER, LegacyIds::GUNPOWDER, 0), "Gunpowder")); + $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA, LegacyIds::HEART_OF_THE_SEA, 0), "Heart of the Sea")); + $this->register(new Item(new IID(Ids::IRON_INGOT, LegacyIds::IRON_INGOT, 0), "Iron Ingot")); + $this->register(new Item(new IID(Ids::IRON_NUGGET, LegacyIds::IRON_NUGGET, 0), "Iron Nugget")); + $this->register(new Item(new IID(Ids::LEATHER, LegacyIds::LEATHER, 0), "Leather")); + $this->register(new Item(new IID(Ids::MAGMA_CREAM, LegacyIds::MAGMA_CREAM, 0), "Magma Cream")); + $this->register(new Item(new IID(Ids::NAUTILUS_SHELL, LegacyIds::NAUTILUS_SHELL, 0), "Nautilus Shell")); + $this->register(new Item(new IID(Ids::NETHER_BRICK, LegacyIds::NETHER_BRICK, 0), "Nether Brick")); + $this->register(new Item(new IID(Ids::NETHER_QUARTZ, LegacyIds::NETHER_QUARTZ, 0), "Nether Quartz")); + $this->register(new Item(new IID(Ids::NETHER_STAR, LegacyIds::NETHER_STAR, 0), "Nether Star")); + $this->register(new Item(new IID(Ids::PAPER, LegacyIds::PAPER, 0), "Paper")); + $this->register(new Item(new IID(Ids::PRISMARINE_CRYSTALS, LegacyIds::PRISMARINE_CRYSTALS, 0), "Prismarine Crystals")); + $this->register(new Item(new IID(Ids::PRISMARINE_SHARD, LegacyIds::PRISMARINE_SHARD, 0), "Prismarine Shard")); + $this->register(new Item(new IID(Ids::RABBIT_FOOT, LegacyIds::RABBIT_FOOT, 0), "Rabbit's Foot")); + $this->register(new Item(new IID(Ids::RABBIT_HIDE, LegacyIds::RABBIT_HIDE, 0), "Rabbit Hide")); + $this->register(new Item(new IID(Ids::SHULKER_SHELL, LegacyIds::SHULKER_SHELL, 0), "Shulker Shell")); + $this->register(new Item(new IID(Ids::SLIMEBALL, LegacyIds::SLIME_BALL, 0), "Slimeball")); + $this->register(new Item(new IID(Ids::SUGAR, LegacyIds::SUGAR, 0), "Sugar")); + $this->register(new Item(new IID(Ids::SCUTE, LegacyIds::TURTLE_SHELL_PIECE, 0), "Scute")); + $this->register(new Item(new IID(Ids::WHEAT, LegacyIds::WHEAT, 0), "Wheat")); + + //these blocks have special legacy item IDs, so they need to be registered explicitly + $this->register(new ItemBlock(Blocks::ACACIA_DOOR())); + $this->register(new ItemBlock(Blocks::BIRCH_DOOR())); + $this->register(new ItemBlock(Blocks::BREWING_STAND())); + $this->register(new ItemBlock(Blocks::CAKE())); + $this->register(new ItemBlock(Blocks::REDSTONE_COMPARATOR())); + $this->register(new ItemBlock(Blocks::DARK_OAK_DOOR())); + $this->register(new ItemBlock(Blocks::FLOWER_POT())); + $this->register(new ItemBlock(Blocks::HOPPER())); + $this->register(new ItemBlock(Blocks::IRON_DOOR())); + $this->register(new ItemBlock(Blocks::ITEM_FRAME())); + $this->register(new ItemBlock(Blocks::JUNGLE_DOOR())); + $this->register(new ItemBlock(Blocks::NETHER_WART())); + $this->register(new ItemBlock(Blocks::OAK_DOOR())); + $this->register(new ItemBlock(Blocks::REDSTONE_REPEATER())); + $this->register(new ItemBlock(Blocks::SPRUCE_DOOR())); + $this->register(new ItemBlock(Blocks::SUGARCANE())); //the meta values for buckets are intentionally hardcoded because block IDs will change in the future - $waterBucket = new LiquidBucket(new IID(Ids::BUCKET, 8), "Water Bucket", Blocks::WATER()); + $waterBucket = new LiquidBucket(new IID(Ids::WATER_BUCKET, LegacyIds::BUCKET, 8), "Water Bucket", Blocks::WATER()); $this->register($waterBucket); - $this->remap(new IID(Ids::BUCKET, 9), $waterBucket); - $lavaBucket = new LiquidBucket(new IID(Ids::BUCKET, 10), "Lava Bucket", Blocks::LAVA()); + $this->remap(LegacyIds::BUCKET, 9, $waterBucket); + $lavaBucket = new LiquidBucket(new IID(Ids::LAVA_BUCKET, LegacyIds::BUCKET, 10), "Lava Bucket", Blocks::LAVA()); $this->register($lavaBucket); - $this->remap(new IID(Ids::BUCKET, 11), $lavaBucket); - $this->register(new Melon(new IID(Ids::MELON, 0), "Melon")); - $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS, 0), "Melon Seeds")); - $this->register(new MilkBucket(new IID(Ids::BUCKET, 1), "Milk Bucket")); - $this->register(new Minecart(new IID(Ids::MINECART, 0), "Minecart")); - $this->register(new MushroomStew(new IID(Ids::MUSHROOM_STEW, 0), "Mushroom Stew")); - $this->register(new PaintingItem(new IID(Ids::PAINTING, 0), "Painting")); - $this->register(new PoisonousPotato(new IID(Ids::POISONOUS_POTATO, 0), "Poisonous Potato")); - $this->register(new Potato(new IID(Ids::POTATO, 0), "Potato")); - $this->register(new Pufferfish(new IID(Ids::PUFFERFISH, 0), "Pufferfish")); - $this->register(new PumpkinPie(new IID(Ids::PUMPKIN_PIE, 0), "Pumpkin Pie")); - $this->register(new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS, 0), "Pumpkin Seeds")); - $this->register(new RabbitStew(new IID(Ids::RABBIT_STEW, 0), "Rabbit Stew")); - $this->register(new RawBeef(new IID(Ids::RAW_BEEF, 0), "Raw Beef")); - $this->register(new RawChicken(new IID(Ids::RAW_CHICKEN, 0), "Raw Chicken")); - $this->register(new RawFish(new IID(Ids::RAW_FISH, 0), "Raw Fish")); - $this->register(new RawMutton(new IID(Ids::RAW_MUTTON, 0), "Raw Mutton")); - $this->register(new RawPorkchop(new IID(Ids::RAW_PORKCHOP, 0), "Raw Porkchop")); - $this->register(new RawRabbit(new IID(Ids::RAW_RABBIT, 0), "Raw Rabbit")); - $this->register(new RawSalmon(new IID(Ids::RAW_SALMON, 0), "Raw Salmon")); - $this->register(new Record(new IID(Ids::RECORD_13, 0), RecordType::DISK_13(), "Record 13")); - $this->register(new Record(new IID(Ids::RECORD_CAT, 0), RecordType::DISK_CAT(), "Record Cat")); - $this->register(new Record(new IID(Ids::RECORD_BLOCKS, 0), RecordType::DISK_BLOCKS(), "Record Blocks")); - $this->register(new Record(new IID(Ids::RECORD_CHIRP, 0), RecordType::DISK_CHIRP(), "Record Chirp")); - $this->register(new Record(new IID(Ids::RECORD_FAR, 0), RecordType::DISK_FAR(), "Record Far")); - $this->register(new Record(new IID(Ids::RECORD_MALL, 0), RecordType::DISK_MALL(), "Record Mall")); - $this->register(new Record(new IID(Ids::RECORD_MELLOHI, 0), RecordType::DISK_MELLOHI(), "Record Mellohi")); - $this->register(new Record(new IID(Ids::RECORD_STAL, 0), RecordType::DISK_STAL(), "Record Stal")); - $this->register(new Record(new IID(Ids::RECORD_STRAD, 0), RecordType::DISK_STRAD(), "Record Strad")); - $this->register(new Record(new IID(Ids::RECORD_WARD, 0), RecordType::DISK_WARD(), "Record Ward")); - $this->register(new Record(new IID(Ids::RECORD_11, 0), RecordType::DISK_11(), "Record 11")); - $this->register(new Record(new IID(Ids::RECORD_WAIT, 0), RecordType::DISK_WAIT(), "Record Wait")); - $this->register(new Redstone(new IID(Ids::REDSTONE, 0), "Redstone")); - $this->register(new RottenFlesh(new IID(Ids::ROTTEN_FLESH, 0), "Rotten Flesh")); - $this->register(new Shears(new IID(Ids::SHEARS, 0), "Shears")); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::SIGN, 0), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN, 0), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN, 0), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN, 0), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN, 0), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARKOAK_SIGN, 0), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); - $this->register(new Snowball(new IID(Ids::SNOWBALL, 0), "Snowball")); - $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE, 0), "Spider Eye")); - $this->register(new Steak(new IID(Ids::STEAK, 0), "Steak")); - $this->register(new Stick(new IID(Ids::STICK, 0), "Stick")); - $this->register(new StringItem(new IID(Ids::STRING, 0), "String")); - $this->register(new SweetBerries(new IID(Ids::SWEET_BERRIES, 0), "Sweet Berries")); - $this->register(new Totem(new IID(Ids::TOTEM, 0), "Totem of Undying")); - $this->register(new WheatSeeds(new IID(Ids::WHEAT_SEEDS, 0), "Wheat Seeds")); - $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK, 0), "Book & Quill")); - $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, 0), "Written Book")); + $this->remap(LegacyIds::BUCKET, 11, $lavaBucket); + $this->register(new Melon(new IID(Ids::MELON, LegacyIds::MELON, 0), "Melon")); + $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS, LegacyIds::MELON_SEEDS, 0), "Melon Seeds")); + $this->register(new MilkBucket(new IID(Ids::MILK_BUCKET, LegacyIds::BUCKET, 1), "Milk Bucket")); + $this->register(new Minecart(new IID(Ids::MINECART, LegacyIds::MINECART, 0), "Minecart")); + $this->register(new MushroomStew(new IID(Ids::MUSHROOM_STEW, LegacyIds::MUSHROOM_STEW, 0), "Mushroom Stew")); + $this->register(new PaintingItem(new IID(Ids::PAINTING, LegacyIds::PAINTING, 0), "Painting")); + $this->register(new PoisonousPotato(new IID(Ids::POISONOUS_POTATO, LegacyIds::POISONOUS_POTATO, 0), "Poisonous Potato")); + $this->register(new Potato(new IID(Ids::POTATO, LegacyIds::POTATO, 0), "Potato")); + $this->register(new Pufferfish(new IID(Ids::PUFFERFISH, LegacyIds::PUFFERFISH, 0), "Pufferfish")); + $this->register(new PumpkinPie(new IID(Ids::PUMPKIN_PIE, LegacyIds::PUMPKIN_PIE, 0), "Pumpkin Pie")); + $this->register(new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS, LegacyIds::PUMPKIN_SEEDS, 0), "Pumpkin Seeds")); + $this->register(new RabbitStew(new IID(Ids::RABBIT_STEW, LegacyIds::RABBIT_STEW, 0), "Rabbit Stew")); + $this->register(new RawBeef(new IID(Ids::RAW_BEEF, LegacyIds::RAW_BEEF, 0), "Raw Beef")); + $this->register(new RawChicken(new IID(Ids::RAW_CHICKEN, LegacyIds::RAW_CHICKEN, 0), "Raw Chicken")); + $this->register(new RawFish(new IID(Ids::RAW_FISH, LegacyIds::RAW_FISH, 0), "Raw Fish")); + $this->register(new RawMutton(new IID(Ids::RAW_MUTTON, LegacyIds::RAW_MUTTON, 0), "Raw Mutton")); + $this->register(new RawPorkchop(new IID(Ids::RAW_PORKCHOP, LegacyIds::RAW_PORKCHOP, 0), "Raw Porkchop")); + $this->register(new RawRabbit(new IID(Ids::RAW_RABBIT, LegacyIds::RAW_RABBIT, 0), "Raw Rabbit")); + $this->register(new RawSalmon(new IID(Ids::RAW_SALMON, LegacyIds::RAW_SALMON, 0), "Raw Salmon")); + $this->register(new Record(new IID(Ids::RECORD_13, LegacyIds::RECORD_13, 0), RecordType::DISK_13(), "Record 13")); + $this->register(new Record(new IID(Ids::RECORD_CAT, LegacyIds::RECORD_CAT, 0), RecordType::DISK_CAT(), "Record Cat")); + $this->register(new Record(new IID(Ids::RECORD_BLOCKS, LegacyIds::RECORD_BLOCKS, 0), RecordType::DISK_BLOCKS(), "Record Blocks")); + $this->register(new Record(new IID(Ids::RECORD_CHIRP, LegacyIds::RECORD_CHIRP, 0), RecordType::DISK_CHIRP(), "Record Chirp")); + $this->register(new Record(new IID(Ids::RECORD_FAR, LegacyIds::RECORD_FAR, 0), RecordType::DISK_FAR(), "Record Far")); + $this->register(new Record(new IID(Ids::RECORD_MALL, LegacyIds::RECORD_MALL, 0), RecordType::DISK_MALL(), "Record Mall")); + $this->register(new Record(new IID(Ids::RECORD_MELLOHI, LegacyIds::RECORD_MELLOHI, 0), RecordType::DISK_MELLOHI(), "Record Mellohi")); + $this->register(new Record(new IID(Ids::RECORD_STAL, LegacyIds::RECORD_STAL, 0), RecordType::DISK_STAL(), "Record Stal")); + $this->register(new Record(new IID(Ids::RECORD_STRAD, LegacyIds::RECORD_STRAD, 0), RecordType::DISK_STRAD(), "Record Strad")); + $this->register(new Record(new IID(Ids::RECORD_WARD, LegacyIds::RECORD_WARD, 0), RecordType::DISK_WARD(), "Record Ward")); + $this->register(new Record(new IID(Ids::RECORD_11, LegacyIds::RECORD_11, 0), RecordType::DISK_11(), "Record 11")); + $this->register(new Record(new IID(Ids::RECORD_WAIT, LegacyIds::RECORD_WAIT, 0), RecordType::DISK_WAIT(), "Record Wait")); + $this->register(new Redstone(new IID(Ids::REDSTONE_DUST, LegacyIds::REDSTONE, 0), "Redstone")); + $this->register(new RottenFlesh(new IID(Ids::ROTTEN_FLESH, LegacyIds::ROTTEN_FLESH, 0), "Rotten Flesh")); + $this->register(new Shears(new IID(Ids::SHEARS, LegacyIds::SHEARS, 0), "Shears")); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN, LegacyIds::SIGN, 0), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN, LegacyIds::SPRUCE_SIGN, 0), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN, LegacyIds::BIRCH_SIGN, 0), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN, LegacyIds::JUNGLE_SIGN, 0), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN, LegacyIds::ACACIA_SIGN, 0), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN, LegacyIds::DARKOAK_SIGN, 0), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); + $this->register(new Snowball(new IID(Ids::SNOWBALL, LegacyIds::SNOWBALL, 0), "Snowball")); + $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE, LegacyIds::SPIDER_EYE, 0), "Spider Eye")); + $this->register(new Steak(new IID(Ids::STEAK, LegacyIds::STEAK, 0), "Steak")); + $this->register(new Stick(new IID(Ids::STICK, LegacyIds::STICK, 0), "Stick")); + $this->register(new StringItem(new IID(Ids::STRING, LegacyIds::STRING, 0), "String")); + $this->register(new SweetBerries(new IID(Ids::SWEET_BERRIES, LegacyIds::SWEET_BERRIES, 0), "Sweet Berries")); + $this->register(new Totem(new IID(Ids::TOTEM, LegacyIds::TOTEM, 0), "Totem of Undying")); + $this->register(new WheatSeeds(new IID(Ids::WHEAT_SEEDS, LegacyIds::WHEAT_SEEDS, 0), "Wheat Seeds")); + $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK, LegacyIds::WRITABLE_BOOK, 0), "Book & Quill")); + $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, LegacyIds::WRITTEN_BOOK, 0), "Written Book")); foreach(SkullType::getAll() as $skullType){ - $this->register((new Skull(new IID(Ids::SKULL, 0), "Mob Head"))->setSkullType($skullType)); + $this->register((new Skull(new IID(Ids::MOB_HEAD, LegacyIds::SKULL, 0), "Mob Head"))->setSkullType($skullType)); } foreach(DyeColor::getAll() as $color){ //TODO: use colour object directly //TODO: add interface to dye-colour objects - //1000 isn't the real variant for dye, but it needs to not conflict with INK_SAC - $this->register((new Dye(new IID(Ids::DYE, 1000), "Dye"))->setColor($color)); - $this->register((new Bed(new IID(Ids::BED, 0), "Bed"))->setColor($color)); + $this->register((new Dye(new IID(Ids::DYE, LegacyIds::DYE, 0), "Dye"))->setColor($color)); + $this->register((new Bed(new IID(Ids::BED, LegacyIds::BED, 0), "Bed"))->setColor($color)); $this->register((new Banner( - new IID(Ids::BANNER, 0), + new IID(Ids::BANNER, LegacyIds::BANNER, 0), Blocks::BANNER(), Blocks::WALL_BANNER() ))->setColor($color)); } foreach(PotionType::getAll() as $type){ - $this->register((new Potion(new IID(Ids::POTION, 0), "Potion"))->setType($type)); - $this->register((new SplashPotion(new IID(Ids::SPLASH_POTION, 0), "Splash Potion"))->setType($type)); + $this->register((new Potion(new IID(Ids::POTION, LegacyIds::POTION, 0), "Potion"))->setType($type)); + $this->register((new SplashPotion(new IID(Ids::SPLASH_POTION, LegacyIds::SPLASH_POTION, 0), "Splash Potion"))->setType($type)); } foreach(TreeType::getAll() as $type){ - $this->register(new Boat(new IID(Ids::BOAT, $type->getMagicNumber()), $type->getDisplayName() . " Boat", $type)); + //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency + $this->register(new Boat(new IID(match($type){ + TreeType::OAK() => Ids::OAK_BOAT, + TreeType::SPRUCE() => Ids::SPRUCE_BOAT, + TreeType::BIRCH() => Ids::BIRCH_BOAT, + TreeType::JUNGLE() => Ids::JUNGLE_BOAT, + TreeType::ACACIA() => Ids::ACACIA_BOAT, + TreeType::DARK_OAK() => Ids::DARK_OAK_BOAT, + default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) + }, LegacyIds::BOAT, $type->getMagicNumber()), $type->getDisplayName() . " Boat", $type)); } //region --- auto-generated TODOs --- @@ -336,17 +347,17 @@ class ItemFactory{ private function registerSpawnEggs() : void{ //TODO: the meta values should probably be hardcoded; they won't change, but the EntityLegacyIds might - $this->register(new class(new IID(Ids::SPAWN_EGG, EntityLegacyIds::ZOMBIE), "Zombie Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::ZOMBIE_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::ZOMBIE), "Zombie Spawn Egg") extends SpawnEgg{ protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Zombie(Location::fromObject($pos, $world, $yaw, $pitch)); } }); - $this->register(new class(new IID(Ids::SPAWN_EGG, EntityLegacyIds::SQUID), "Squid Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::SQUID_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::SQUID), "Squid Spawn Egg") extends SpawnEgg{ public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Squid(Location::fromObject($pos, $world, $yaw, $pitch)); } }); - $this->register(new class(new IID(Ids::SPAWN_EGG, EntityLegacyIds::VILLAGER), "Villager Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::VILLAGER_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::VILLAGER), "Villager Spawn Egg") extends SpawnEgg{ public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Villager(Location::fromObject($pos, $world, $yaw, $pitch)); } @@ -354,54 +365,54 @@ class ItemFactory{ } private function registerTierToolItems() : void{ - $this->register(new Axe(new IID(Ids::DIAMOND_AXE, 0), "Diamond Axe", ToolTier::DIAMOND())); - $this->register(new Axe(new IID(Ids::GOLDEN_AXE, 0), "Golden Axe", ToolTier::GOLD())); - $this->register(new Axe(new IID(Ids::IRON_AXE, 0), "Iron Axe", ToolTier::IRON())); - $this->register(new Axe(new IID(Ids::STONE_AXE, 0), "Stone Axe", ToolTier::STONE())); - $this->register(new Axe(new IID(Ids::WOODEN_AXE, 0), "Wooden Axe", ToolTier::WOOD())); - $this->register(new Hoe(new IID(Ids::DIAMOND_HOE, 0), "Diamond Hoe", ToolTier::DIAMOND())); - $this->register(new Hoe(new IID(Ids::GOLDEN_HOE, 0), "Golden Hoe", ToolTier::GOLD())); - $this->register(new Hoe(new IID(Ids::IRON_HOE, 0), "Iron Hoe", ToolTier::IRON())); - $this->register(new Hoe(new IID(Ids::STONE_HOE, 0), "Stone Hoe", ToolTier::STONE())); - $this->register(new Hoe(new IID(Ids::WOODEN_HOE, 0), "Wooden Hoe", ToolTier::WOOD())); - $this->register(new Pickaxe(new IID(Ids::DIAMOND_PICKAXE, 0), "Diamond Pickaxe", ToolTier::DIAMOND())); - $this->register(new Pickaxe(new IID(Ids::GOLDEN_PICKAXE, 0), "Golden Pickaxe", ToolTier::GOLD())); - $this->register(new Pickaxe(new IID(Ids::IRON_PICKAXE, 0), "Iron Pickaxe", ToolTier::IRON())); - $this->register(new Pickaxe(new IID(Ids::STONE_PICKAXE, 0), "Stone Pickaxe", ToolTier::STONE())); - $this->register(new Pickaxe(new IID(Ids::WOODEN_PICKAXE, 0), "Wooden Pickaxe", ToolTier::WOOD())); - $this->register(new Shovel(new IID(Ids::DIAMOND_SHOVEL, 0), "Diamond Shovel", ToolTier::DIAMOND())); - $this->register(new Shovel(new IID(Ids::GOLDEN_SHOVEL, 0), "Golden Shovel", ToolTier::GOLD())); - $this->register(new Shovel(new IID(Ids::IRON_SHOVEL, 0), "Iron Shovel", ToolTier::IRON())); - $this->register(new Shovel(new IID(Ids::STONE_SHOVEL, 0), "Stone Shovel", ToolTier::STONE())); - $this->register(new Shovel(new IID(Ids::WOODEN_SHOVEL, 0), "Wooden Shovel", ToolTier::WOOD())); - $this->register(new Sword(new IID(Ids::DIAMOND_SWORD, 0), "Diamond Sword", ToolTier::DIAMOND())); - $this->register(new Sword(new IID(Ids::GOLDEN_SWORD, 0), "Golden Sword", ToolTier::GOLD())); - $this->register(new Sword(new IID(Ids::IRON_SWORD, 0), "Iron Sword", ToolTier::IRON())); - $this->register(new Sword(new IID(Ids::STONE_SWORD, 0), "Stone Sword", ToolTier::STONE())); - $this->register(new Sword(new IID(Ids::WOODEN_SWORD, 0), "Wooden Sword", ToolTier::WOOD())); + $this->register(new Axe(new IID(Ids::DIAMOND_AXE, LegacyIds::DIAMOND_AXE, 0), "Diamond Axe", ToolTier::DIAMOND())); + $this->register(new Axe(new IID(Ids::GOLDEN_AXE, LegacyIds::GOLDEN_AXE, 0), "Golden Axe", ToolTier::GOLD())); + $this->register(new Axe(new IID(Ids::IRON_AXE, LegacyIds::IRON_AXE, 0), "Iron Axe", ToolTier::IRON())); + $this->register(new Axe(new IID(Ids::STONE_AXE, LegacyIds::STONE_AXE, 0), "Stone Axe", ToolTier::STONE())); + $this->register(new Axe(new IID(Ids::WOODEN_AXE, LegacyIds::WOODEN_AXE, 0), "Wooden Axe", ToolTier::WOOD())); + $this->register(new Hoe(new IID(Ids::DIAMOND_HOE, LegacyIds::DIAMOND_HOE, 0), "Diamond Hoe", ToolTier::DIAMOND())); + $this->register(new Hoe(new IID(Ids::GOLDEN_HOE, LegacyIds::GOLDEN_HOE, 0), "Golden Hoe", ToolTier::GOLD())); + $this->register(new Hoe(new IID(Ids::IRON_HOE, LegacyIds::IRON_HOE, 0), "Iron Hoe", ToolTier::IRON())); + $this->register(new Hoe(new IID(Ids::STONE_HOE, LegacyIds::STONE_HOE, 0), "Stone Hoe", ToolTier::STONE())); + $this->register(new Hoe(new IID(Ids::WOODEN_HOE, LegacyIds::WOODEN_HOE, 0), "Wooden Hoe", ToolTier::WOOD())); + $this->register(new Pickaxe(new IID(Ids::DIAMOND_PICKAXE, LegacyIds::DIAMOND_PICKAXE, 0), "Diamond Pickaxe", ToolTier::DIAMOND())); + $this->register(new Pickaxe(new IID(Ids::GOLDEN_PICKAXE, LegacyIds::GOLDEN_PICKAXE, 0), "Golden Pickaxe", ToolTier::GOLD())); + $this->register(new Pickaxe(new IID(Ids::IRON_PICKAXE, LegacyIds::IRON_PICKAXE, 0), "Iron Pickaxe", ToolTier::IRON())); + $this->register(new Pickaxe(new IID(Ids::STONE_PICKAXE, LegacyIds::STONE_PICKAXE, 0), "Stone Pickaxe", ToolTier::STONE())); + $this->register(new Pickaxe(new IID(Ids::WOODEN_PICKAXE, LegacyIds::WOODEN_PICKAXE, 0), "Wooden Pickaxe", ToolTier::WOOD())); + $this->register(new Shovel(new IID(Ids::DIAMOND_SHOVEL, LegacyIds::DIAMOND_SHOVEL, 0), "Diamond Shovel", ToolTier::DIAMOND())); + $this->register(new Shovel(new IID(Ids::GOLDEN_SHOVEL, LegacyIds::GOLDEN_SHOVEL, 0), "Golden Shovel", ToolTier::GOLD())); + $this->register(new Shovel(new IID(Ids::IRON_SHOVEL, LegacyIds::IRON_SHOVEL, 0), "Iron Shovel", ToolTier::IRON())); + $this->register(new Shovel(new IID(Ids::STONE_SHOVEL, LegacyIds::STONE_SHOVEL, 0), "Stone Shovel", ToolTier::STONE())); + $this->register(new Shovel(new IID(Ids::WOODEN_SHOVEL, LegacyIds::WOODEN_SHOVEL, 0), "Wooden Shovel", ToolTier::WOOD())); + $this->register(new Sword(new IID(Ids::DIAMOND_SWORD, LegacyIds::DIAMOND_SWORD, 0), "Diamond Sword", ToolTier::DIAMOND())); + $this->register(new Sword(new IID(Ids::GOLDEN_SWORD, LegacyIds::GOLDEN_SWORD, 0), "Golden Sword", ToolTier::GOLD())); + $this->register(new Sword(new IID(Ids::IRON_SWORD, LegacyIds::IRON_SWORD, 0), "Iron Sword", ToolTier::IRON())); + $this->register(new Sword(new IID(Ids::STONE_SWORD, LegacyIds::STONE_SWORD, 0), "Stone Sword", ToolTier::STONE())); + $this->register(new Sword(new IID(Ids::WOODEN_SWORD, LegacyIds::WOODEN_SWORD, 0), "Wooden Sword", ToolTier::WOOD())); } private function registerArmorItems() : void{ - $this->register(new Armor(new IID(Ids::CHAIN_BOOTS, 0), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::DIAMOND_BOOTS, 0), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::GOLDEN_BOOTS, 0), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::IRON_BOOTS, 0), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::LEATHER_BOOTS, 0), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::CHAIN_CHESTPLATE, 0), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::DIAMOND_CHESTPLATE, 0), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::GOLDEN_CHESTPLATE, 0), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::IRON_CHESTPLATE, 0), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::LEATHER_CHESTPLATE, 0), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::CHAIN_HELMET, 0), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::DIAMOND_HELMET, 0), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::GOLDEN_HELMET, 0), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::IRON_HELMET, 0), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::LEATHER_HELMET, 0), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::CHAIN_LEGGINGS, 0), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::DIAMOND_LEGGINGS, 0), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::GOLDEN_LEGGINGS, 0), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::IRON_LEGGINGS, 0), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::LEATHER_LEGGINGS, 0), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_BOOTS, LegacyIds::CHAIN_BOOTS, 0), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::DIAMOND_BOOTS, LegacyIds::DIAMOND_BOOTS, 0), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::GOLDEN_BOOTS, LegacyIds::GOLDEN_BOOTS, 0), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::IRON_BOOTS, LegacyIds::IRON_BOOTS, 0), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::LEATHER_BOOTS, LegacyIds::LEATHER_BOOTS, 0), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE, LegacyIds::CHAIN_CHESTPLATE, 0), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::DIAMOND_CHESTPLATE, LegacyIds::DIAMOND_CHESTPLATE, 0), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::GOLDEN_CHESTPLATE, LegacyIds::GOLDEN_CHESTPLATE, 0), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::IRON_CHESTPLATE, LegacyIds::IRON_CHESTPLATE, 0), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::LEATHER_TUNIC, LegacyIds::LEATHER_CHESTPLATE, 0), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_HELMET, LegacyIds::CHAIN_HELMET, 0), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::DIAMOND_HELMET, LegacyIds::DIAMOND_HELMET, 0), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::GOLDEN_HELMET, LegacyIds::GOLDEN_HELMET, 0), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::IRON_HELMET, LegacyIds::IRON_HELMET, 0), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::LEATHER_CAP, LegacyIds::LEATHER_HELMET, 0), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_LEGGINGS, LegacyIds::CHAIN_LEGGINGS, 0), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::DIAMOND_LEGGINGS, LegacyIds::DIAMOND_LEGGINGS, 0), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::GOLDEN_LEGGINGS, LegacyIds::GOLDEN_LEGGINGS, 0), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::IRON_LEGGINGS, LegacyIds::IRON_LEGGINGS, 0), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::LEATHER_PANTS, LegacyIds::LEATHER_LEGGINGS, 0), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); } /** @@ -425,12 +436,12 @@ class ItemFactory{ $this->list[self::getListOffset($id, $variant)] = clone $item; } - public function remap(ItemIdentifier $identifier, Item $item, bool $override = false) : void{ - if(!$override && $this->isRegistered($identifier->getId(), $identifier->getMeta())){ + public function remap(int $legacyId, int $legacyMeta, Item $item, bool $override = false) : void{ + if(!$override && $this->isRegistered($legacyId, $legacyMeta)){ throw new \RuntimeException("Trying to overwrite an already registered item"); } - $this->list[self::getListOffset($identifier->getId(), $identifier->getMeta())] = clone $item; + $this->list[self::getListOffset($legacyId, $legacyMeta)] = clone $item; } private static function itemToBlockId(int $id) : int{ @@ -468,7 +479,7 @@ class ItemFactory{ if($blockStateData !== null){ try{ $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); - $item = new ItemBlock(new IID($id, $meta), BlockFactory::getInstance()->fromFullBlock($blockStateId)); + $item = new ItemBlock(BlockFactory::getInstance()->fromFullBlock($blockStateId)); }catch(BlockStateDeserializeException $e){ throw new SavedDataLoadingException("Failed to deserialize itemblock: " . $e->getMessage(), 0, $e); } diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index 9681a4b0d..e69aa1efc 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -23,26 +23,40 @@ declare(strict_types=1); namespace pocketmine\item; -class ItemIdentifier{ - private int $id; - private int $meta; +use pocketmine\block\Block; - public function __construct(int $id, int $meta){ - if($id < -0x8000 || $id > 0x7fff){ //signed short range +class ItemIdentifier{ + private int $legacyId; + private int $legacyMeta; + + public function __construct( + private int $typeId, + int $legacyId, + int $legacyMeta + ){ + if($legacyId < -0x8000 || $legacyId > 0x7fff){ //signed short range throw new \InvalidArgumentException("ID must be in range " . -0x8000 . " - " . 0x7fff); } - if($meta < 0 || $meta > 0x7ffe){ + if($legacyMeta < 0 || $legacyMeta > 0x7ffe){ throw new \InvalidArgumentException("Meta must be in range 0 - " . 0x7ffe); } - $this->id = $id; - $this->meta = $meta; + $this->legacyId = $legacyId; + $this->legacyMeta = $legacyMeta; } - public function getId() : int{ - return $this->id; + public static function fromBlock(Block $block) : self{ + //negative item type IDs are treated as block IDs + //TODO: maybe an ItemBlockIdentifier is in order? + return new self(-$block->getTypeId(), $block->getLegacyItemId(), $block->getLegacyItemMeta()); } - public function getMeta() : int{ - return $this->meta; + public function getTypeId() : int{ return $this->typeId; } + + public function getLegacyId() : int{ + return $this->legacyId; + } + + public function getLegacyMeta() : int{ + return $this->legacyMeta; } } diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php index d09a7d76d..d137ee994 100644 --- a/src/item/ItemIdentifierFlattened.php +++ b/src/item/ItemIdentifierFlattened.php @@ -24,19 +24,18 @@ declare(strict_types=1); namespace pocketmine\item; final class ItemIdentifierFlattened extends ItemIdentifier{ - /** - * @param int[] $additionalIds + * @param int[] $additionalLegacyIds */ - public function __construct(int $id, int $meta, private array $additionalIds){ - parent::__construct($id, $meta); + public function __construct(int $typeId, int $legacyId, int $legacyMeta, private array $additionalLegacyIds){ + parent::__construct($typeId, $legacyId, $legacyMeta); } /** @return int[] */ - public function getAdditionalIds() : array{ return $this->additionalIds; } + public function getAdditionalLegacyIds() : array{ return $this->additionalLegacyIds; } /** @return int[] */ - public function getAllIds() : array{ - return [$this->getId(), ...$this->additionalIds]; + public function getAllLegacyIds() : array{ + return [$this->getLegacyId(), ...$this->additionalLegacyIds]; } } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php new file mode 100644 index 000000000..043414fd9 --- /dev/null +++ b/src/item/ItemTypeIds.php @@ -0,0 +1,270 @@ + Date: Wed, 29 Jun 2022 15:17:16 +0100 Subject: [PATCH 189/692] Fixed durability handling (ish) --- src/data/bedrock/item/ItemDeserializer.php | 14 ++++++++++++- src/item/Durable.php | 11 +++++++---- src/network/mcpe/convert/TypeConverter.php | 23 ---------------------- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 95db05d91..b48da118d 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -36,9 +36,12 @@ use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; +use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\VanillaItems as Items; +use pocketmine\nbt\NbtException; use pocketmine\utils\AssumptionFailedError; +use function min; final class ItemDeserializer{ /** @@ -91,7 +94,16 @@ final class ItemDeserializer{ $itemStack->setCount($data->getCount()); if(($tagTag = $data->getTypeData()->getTag()) !== null){ - $itemStack->setNamedTag(clone $tagTag); + try{ + $itemStack->setNamedTag(clone $tagTag); + }catch(NbtException $e){ + throw new ItemTypeDeserializeException("Invalid item saved NBT: " . $e->getMessage(), 0, $e); + } + } + + //TODO: this hack is necessary to get legacy tools working - we need a better way to handle this kind of stuff + if($itemStack instanceof Durable && $itemStack->getDamage() === 0 && ($damage = $data->getTypeData()->getMeta()) > 0){ + $itemStack->setDamage(min($damage, $itemStack->getMaxDurability())); } //TODO: canDestroy, canPlaceOn, wasPickedUp are currently unused diff --git a/src/item/Durable.php b/src/item/Durable.php index 0e1f202dc..a2300576b 100644 --- a/src/item/Durable.php +++ b/src/item/Durable.php @@ -32,10 +32,6 @@ abstract class Durable extends Item{ protected int $damage = 0; private bool $unbreakable = false; - public function getMeta() : int{ - return $this->damage; - } - /** * Returns whether this item will take damage when used. */ @@ -124,10 +120,17 @@ abstract class Durable extends Item{ protected function deserializeCompoundTag(CompoundTag $tag) : void{ parent::deserializeCompoundTag($tag); $this->unbreakable = $tag->getByte("Unbreakable", 0) !== 0; + + $damage = $tag->getInt("Damage", $this->damage); + if($damage !== $this->damage && $damage >= 0 && $damage <= $this->getMaxDurability()){ + //TODO: out-of-bounds damage should be an error + $this->setDamage($damage); + } } protected function serializeCompoundTag(CompoundTag $tag) : void{ parent::serializeCompoundTag($tag); $this->unbreakable ? $tag->setByte("Unbreakable", 1) : $tag->removeTag("Unbreakable"); + $tag->setInt("Damage", $this->damage); } } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index ec699e62a..653ffed75 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -38,7 +38,6 @@ use pocketmine\inventory\transaction\action\DestroyItemAction; use pocketmine\inventory\transaction\action\DropItemAction; use pocketmine\inventory\transaction\action\InventoryAction; use pocketmine\inventory\transaction\action\SlotChangeAction; -use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\ItemFactory; use pocketmine\item\ItemIds; @@ -62,8 +61,6 @@ use function get_class; class TypeConverter{ use SingletonTrait; - private const DAMAGE_TAG = "Damage"; //TAG_Int - private const DAMAGE_TAG_CONFLICT_RESOLUTION = "___Damage_ProtocolCollisionResolution___"; private const PM_ID_TAG = "___Id___"; private const PM_META_TAG = "___Meta___"; @@ -177,18 +174,6 @@ class TypeConverter{ $nbt->setInt(self::PM_META_TAG, $itemStack->getMeta()); }else{ [$id, $meta, $blockRuntimeId] = $idMeta; - - if($itemStack instanceof Durable && $itemStack->getDamage() > 0){ - if($nbt !== null){ - if(($existing = $nbt->getTag(self::DAMAGE_TAG)) !== null){ - $nbt->removeTag(self::DAMAGE_TAG); - $nbt->setTag(self::DAMAGE_TAG_CONFLICT_RESOLUTION, $existing); - } - }else{ - $nbt = new CompoundTag(); - } - $nbt->setInt(self::DAMAGE_TAG, $itemStack->getDamage()); - } } return new ItemStack( @@ -228,14 +213,6 @@ class TypeConverter{ $compound->removeTag(self::PM_META_TAG); } } - if(($damageTag = $compound->getTag(self::DAMAGE_TAG)) instanceof IntTag){ - $meta = $damageTag->getValue(); - $compound->removeTag(self::DAMAGE_TAG); - if(($conflicted = $compound->getTag(self::DAMAGE_TAG_CONFLICT_RESOLUTION)) !== null){ - $compound->removeTag(self::DAMAGE_TAG_CONFLICT_RESOLUTION); - $compound->setTag(self::DAMAGE_TAG, $conflicted); - } - } if($compound->count() === 0){ $compound = null; } From ce6b09291a85f5a07c666b849476ba2129af237c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 15:18:11 +0100 Subject: [PATCH 190/692] LegacyStringToItemParser: bypass ItemFactory, use GlobalItemDataHandlers directly --- src/item/LegacyStringToItemParser.php | 34 +++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index 5450e0bb0..c9ea226fd 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -23,10 +23,14 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\bedrock\item\ItemDeserializer; +use pocketmine\data\bedrock\item\ItemTypeDeserializeException; +use pocketmine\data\bedrock\item\upgrade\ItemDataUpgrader; use pocketmine\data\SavedDataLoadingException; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; +use pocketmine\world\format\io\GlobalItemDataHandlers; use Webmozart\PathUtil\Path; use function explode; use function file_get_contents; @@ -52,7 +56,10 @@ final class LegacyStringToItemParser{ use SingletonTrait; private static function make() : self{ - $result = new self(ItemFactory::getInstance()); + $result = new self( + GlobalItemDataHandlers::getUpgrader(), + GlobalItemDataHandlers::getDeserializer() + ); $mappingsRaw = Utils::assumeNotFalse(@file_get_contents(Path::join(\pocketmine\RESOURCE_PATH, 'item_from_string_bc_map.json')), "Missing required resource file"); @@ -73,7 +80,10 @@ final class LegacyStringToItemParser{ */ private array $map = []; - public function __construct(private ItemFactory $itemFactory){} + public function __construct( + private ItemDataUpgrader $itemDataUpgrader, + private ItemDeserializer $itemDeserializer + ){} public function addMapping(string $alias, int $id) : void{ $this->map[$alias] = $id; @@ -109,17 +119,21 @@ final class LegacyStringToItemParser{ throw new LegacyStringToItemParserException("Unable to parse \"" . $b[1] . "\" from \"" . $input . "\" as a valid meta value"); } - if(isset($this->map[strtolower($b[0])])){ - try{ - $item = $this->itemFactory->get($this->map[strtolower($b[0])], $meta); - }catch(SavedDataLoadingException $e){ - throw new LegacyStringToItemParserException($e->getMessage(), 0, $e); - } - }else{ + $legacyId = $this->map[strtolower($b[0])] ?? null; + if($legacyId === null){ + throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); + } + try{ + $itemData = $this->itemDataUpgrader->upgradeItemTypeDataInt($legacyId, $meta, 1, null); + }catch(SavedDataLoadingException){ throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); } - return $item; + try{ + return $this->itemDeserializer->deserializeStack($itemData); + }catch(ItemTypeDeserializeException $e){ + throw new LegacyStringToItemParserException($e->getMessage(), 0, $e); + } } protected function reprocess(string $input) : string{ From ea3d5ac5630f57b9cec46771001ab83bb0ddec25 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 15:25:50 +0100 Subject: [PATCH 191/692] LegacyStringToItemParser: use string IDs directly this allows plugins to add their own mappings (though they should really be using StringToItemParser) without needing any legacy numeric ID bullshit in the mix. --- resources/item_from_string_bc_map.json | 3144 ++++++++++++------------ src/item/LegacyStringToItemParser.php | 18 +- 2 files changed, 1578 insertions(+), 1584 deletions(-) diff --git a/resources/item_from_string_bc_map.json b/resources/item_from_string_bc_map.json index c5c502e9a..98699ee5b 100644 --- a/resources/item_from_string_bc_map.json +++ b/resources/item_from_string_bc_map.json @@ -1,1575 +1,1573 @@ { - "-2": -2, - "-3": -3, - "-4": -4, - "-5": -5, - "-6": -6, - "-7": -7, - "-8": -8, - "-9": -9, - "-10": -10, - "-11": -11, - "-12": -12, - "-13": -13, - "-14": -14, - "-15": -15, - "-16": -16, - "-17": -17, - "-18": -18, - "-19": -19, - "-20": -20, - "-21": -21, - "-22": -22, - "-23": -23, - "-24": -24, - "-25": -25, - "-26": -26, - "-27": -27, - "-28": -28, - "-29": -29, - "-30": -30, - "-31": -31, - "-32": -32, - "-33": -33, - "-34": -34, - "-35": -35, - "-36": -36, - "-37": -37, - "-38": -38, - "-39": -39, - "-40": -40, - "-41": -41, - "-42": -42, - "-43": -43, - "-44": -44, - "-45": -45, - "-46": -46, - "-47": -47, - "-48": -48, - "-49": -49, - "-50": -50, - "-51": -51, - "-52": -52, - "-53": -53, - "-54": -54, - "-55": -55, - "-56": -56, - "-57": -57, - "-58": -58, - "-59": -59, - "-60": -60, - "-61": -61, - "-62": -62, - "-63": -63, - "-64": -64, - "-65": -65, - "-66": -66, - "-67": -67, - "-68": -68, - "-69": -69, - "-70": -70, - "-71": -71, - "-72": -72, - "-73": -73, - "-74": -74, - "-75": -75, - "-76": -76, - "-77": -77, - "-78": -78, - "-79": -79, - "-80": -80, - "-81": -81, - "-82": -82, - "-83": -83, - "-84": -84, - "-85": -85, - "-86": -86, - "-87": -87, - "-88": -88, - "-89": -89, - "-90": -90, - "-91": -91, - "-92": -92, - "-93": -93, - "-94": -94, - "-95": -95, - "-96": -96, - "-97": -97, - "-98": -98, - "-99": -99, - "-100": -100, - "-101": -101, - "-102": -102, - "-103": -103, - "-104": -104, - "-105": -105, - "-106": -106, - "-107": -107, - "-108": -108, - "-109": -109, - "-110": -110, - "-111": -111, - "-112": -112, - "-113": -113, - "-114": -114, - "-115": -115, - "-116": -116, - "-117": -117, - "-118": -118, - "-119": -119, - "-120": -120, - "-121": -121, - "-122": -122, - "-123": -123, - "-124": -124, - "-125": -125, - "-126": -126, - "-127": -127, - "-128": -128, - "-129": -129, - "-130": -130, - "-131": -131, - "-132": -132, - "-133": -133, - "-134": -134, - "-135": -135, - "-136": -136, - "-137": -137, - "-138": -138, - "-139": -139, - "-140": -140, - "-141": -141, - "-142": -142, - "-143": -143, - "-144": -144, - "-145": -145, - "-146": -146, - "-147": -147, - "-148": -148, - "-149": -149, - "-150": -150, - "-151": -151, - "-152": -152, - "-153": -153, - "-154": -154, - "-155": -155, - "-156": -156, - "-157": -157, - "-159": -159, - "-160": -160, - "-161": -161, - "-162": -162, - "-163": -163, - "-164": -164, - "-165": -165, - "-166": -166, - "-167": -167, - "-168": -168, - "-169": -169, - "-170": -170, - "-171": -171, - "-172": -172, - "-173": -173, - "-174": -174, - "-175": -175, - "-176": -176, - "-177": -177, - "-178": -178, - "-179": -179, - "-180": -180, - "-181": -181, - "-182": -182, - "-183": -183, - "-184": -184, - "-185": -185, - "-186": -186, - "-187": -187, - "-188": -188, - "-189": -189, - "-190": -190, - "-191": -191, - "-192": -192, - "-193": -193, - "-194": -194, - "-195": -195, - "-196": -196, - "-197": -197, - "-198": -198, - "-199": -199, - "-200": -200, - "-201": -201, - "-202": -202, - "-203": -203, - "-204": -204, - "-206": -206, - "-207": -207, - "-208": -208, - "-209": -209, - "-210": -210, - "-211": -211, - "-213": -213, - "-214": -214, - "0": 0, - "1": 1, - "2": 2, - "3": 3, - "4": 4, - "5": 5, - "6": 6, - "7": 7, - "8": 8, - "9": 9, - "10": 10, - "11": 11, - "12": 12, - "13": 13, - "14": 14, - "15": 15, - "16": 16, - "17": 17, - "18": 18, - "19": 19, - "20": 20, - "21": 21, - "22": 22, - "23": 23, - "24": 24, - "25": 25, - "26": 26, - "27": 27, - "28": 28, - "29": 29, - "30": 30, - "31": 31, - "32": 32, - "33": 33, - "34": 34, - "35": 35, - "36": 36, - "37": 37, - "38": 38, - "39": 39, - "40": 40, - "41": 41, - "42": 42, - "43": 43, - "44": 44, - "45": 45, - "46": 46, - "47": 47, - "48": 48, - "49": 49, - "50": 50, - "51": 51, - "52": 52, - "53": 53, - "54": 54, - "55": 55, - "56": 56, - "57": 57, - "58": 58, - "59": 59, - "60": 60, - "61": 61, - "62": 62, - "63": 63, - "64": 64, - "65": 65, - "66": 66, - "67": 67, - "68": 68, - "69": 69, - "70": 70, - "71": 71, - "72": 72, - "73": 73, - "74": 74, - "75": 75, - "76": 76, - "77": 77, - "78": 78, - "79": 79, - "80": 80, - "81": 81, - "82": 82, - "83": 83, - "84": 84, - "85": 85, - "86": 86, - "87": 87, - "88": 88, - "89": 89, - "90": 90, - "91": 91, - "92": 92, - "93": 93, - "94": 94, - "95": 95, - "96": 96, - "97": 97, - "98": 98, - "99": 99, - "100": 100, - "101": 101, - "102": 102, - "103": 103, - "104": 104, - "105": 105, - "106": 106, - "107": 107, - "108": 108, - "109": 109, - "110": 110, - "111": 111, - "112": 112, - "113": 113, - "114": 114, - "115": 115, - "116": 116, - "117": 117, - "118": 118, - "119": 119, - "120": 120, - "121": 121, - "122": 122, - "123": 123, - "124": 124, - "125": 125, - "126": 126, - "127": 127, - "128": 128, - "129": 129, - "130": 130, - "131": 131, - "132": 132, - "133": 133, - "134": 134, - "135": 135, - "136": 136, - "137": 137, - "138": 138, - "139": 139, - "140": 140, - "141": 141, - "142": 142, - "143": 143, - "144": 144, - "145": 145, - "146": 146, - "147": 147, - "148": 148, - "149": 149, - "150": 150, - "151": 151, - "152": 152, - "153": 153, - "154": 154, - "155": 155, - "156": 156, - "157": 157, - "158": 158, - "159": 159, - "160": 160, - "161": 161, - "162": 162, - "163": 163, - "164": 164, - "165": 165, - "166": 166, - "167": 167, - "168": 168, - "169": 169, - "170": 170, - "171": 171, - "172": 172, - "173": 173, - "174": 174, - "175": 175, - "176": 176, - "177": 177, - "178": 178, - "179": 179, - "180": 180, - "181": 181, - "182": 182, - "183": 183, - "184": 184, - "185": 185, - "186": 186, - "187": 187, - "188": 188, - "189": 189, - "190": 190, - "191": 191, - "192": 192, - "193": 193, - "194": 194, - "195": 195, - "196": 196, - "197": 197, - "198": 198, - "199": 199, - "200": 200, - "201": 201, - "202": 202, - "203": 203, - "204": 204, - "205": 205, - "206": 206, - "207": 207, - "208": 208, - "209": 209, - "213": 213, - "214": 214, - "215": 215, - "216": 216, - "218": 218, - "219": 219, - "220": 220, - "221": 221, - "222": 222, - "223": 223, - "224": 224, - "225": 225, - "226": 226, - "227": 227, - "228": 228, - "229": 229, - "231": 231, - "232": 232, - "233": 233, - "234": 234, - "235": 235, - "236": 236, - "237": 237, - "238": 238, - "239": 239, - "240": 240, - "241": 241, - "243": 243, - "244": 244, - "245": 245, - "246": 246, - "247": 247, - "248": 248, - "249": 249, - "250": 250, - "251": 251, - "252": 252, - "253": 253, - "254": 254, - "255": 255, - "256": 256, - "257": 257, - "258": 258, - "259": 259, - "260": 260, - "261": 261, - "262": 262, - "263": 263, - "264": 264, - "265": 265, - "266": 266, - "267": 267, - "268": 268, - "269": 269, - "270": 270, - "271": 271, - "272": 272, - "273": 273, - "274": 274, - "275": 275, - "276": 276, - "277": 277, - "278": 278, - "279": 279, - "280": 280, - "281": 281, - "282": 282, - "283": 283, - "284": 284, - "285": 285, - "286": 286, - "287": 287, - "288": 288, - "289": 289, - "290": 290, - "291": 291, - "292": 292, - "293": 293, - "294": 294, - "295": 295, - "296": 296, - "297": 297, - "298": 298, - "299": 299, - "300": 300, - "301": 301, - "302": 302, - "303": 303, - "304": 304, - "305": 305, - "306": 306, - "307": 307, - "308": 308, - "309": 309, - "310": 310, - "311": 311, - "312": 312, - "313": 313, - "314": 314, - "315": 315, - "316": 316, - "317": 317, - "318": 318, - "319": 319, - "320": 320, - "321": 321, - "322": 322, - "323": 323, - "324": 324, - "325": 325, - "328": 328, - "329": 329, - "330": 330, - "331": 331, - "332": 332, - "333": 333, - "334": 334, - "335": 335, - "336": 336, - "337": 337, - "338": 338, - "339": 339, - "340": 340, - "341": 341, - "342": 342, - "344": 344, - "345": 345, - "346": 346, - "347": 347, - "348": 348, - "349": 349, - "350": 350, - "351": 351, - "352": 352, - "353": 353, - "354": 354, - "355": 355, - "356": 356, - "357": 357, - "358": 358, - "359": 359, - "360": 360, - "361": 361, - "362": 362, - "363": 363, - "364": 364, - "365": 365, - "366": 366, - "367": 367, - "368": 368, - "369": 369, - "370": 370, - "371": 371, - "372": 372, - "373": 373, - "374": 374, - "375": 375, - "376": 376, - "377": 377, - "378": 378, - "379": 379, - "380": 380, - "381": 381, - "382": 382, - "383": 383, - "384": 384, - "385": 385, - "386": 386, - "387": 387, - "388": 388, - "389": 389, - "390": 390, - "391": 391, - "392": 392, - "393": 393, - "394": 394, - "395": 395, - "396": 396, - "397": 397, - "398": 398, - "399": 399, - "400": 400, - "401": 401, - "402": 402, - "403": 403, - "404": 404, - "405": 405, - "406": 406, - "407": 407, - "408": 408, - "409": 409, - "410": 410, - "411": 411, - "412": 412, - "413": 413, - "414": 414, - "415": 415, - "416": 416, - "417": 417, - "418": 418, - "419": 419, - "420": 420, - "421": 421, - "422": 422, - "423": 423, - "424": 424, - "425": 425, - "426": 426, - "427": 427, - "428": 428, - "429": 429, - "430": 430, - "431": 431, - "432": 432, - "433": 433, - "434": 434, - "437": 437, - "438": 438, - "441": 441, - "442": 442, - "443": 443, - "444": 444, - "445": 445, - "446": 446, - "447": 447, - "448": 448, - "449": 449, - "450": 450, - "451": 451, - "452": 452, - "453": 453, - "455": 455, - "457": 457, - "458": 458, - "459": 459, - "460": 460, - "461": 461, - "462": 462, - "463": 463, - "464": 464, - "465": 465, - "466": 466, - "467": 467, - "468": 468, - "469": 469, - "470": 470, - "471": 471, - "472": 472, - "473": 473, - "474": 474, - "475": 475, - "476": 476, - "477": 477, - "499": 499, - "500": 500, - "501": 501, - "502": 502, - "503": 503, - "504": 504, - "505": 505, - "506": 506, - "507": 507, - "508": 508, - "509": 509, - "510": 510, - "511": 511, - "513": 513, - "acacia_button": -140, - "acacia_door": 430, - "acacia_door_block": 196, - "acacia_fence_gate": 187, - "acacia_pressure_plate": -150, - "acacia_sign": 475, - "acacia_stairs": 163, - "acacia_standing_sign": -190, - "acacia_trapdoor": -145, - "acacia_wall_sign": -191, - "acacia_wood_stairs": 163, - "acacia_wooden_stairs": 163, - "activator_rail": 126, - "active_redstone_lamp": 124, - "air": 0, - "andesite_stairs": -171, - "anvil": 145, - "apple": 260, - "apple_enchanted": 466, - "appleenchanted": 466, - "armor_stand": 425, - "arrow": 262, - "ateupd_block": 249, - "baked_potato": 393, - "baked_potatoes": 393, - "balloon": 448, - "bamboo": -163, - "bamboo_sapling": -164, - "banner": 446, - "banner_pattern": 434, - "barrel": -203, - "barrier": -161, - "beacon": 138, - "bed": 355, - "bed_block": 26, - "bedrock": 7, - "beef": 363, - "beetroot": 457, - "beetroot_block": 244, - "beetroot_seed": 458, - "beetroot_seeds": 458, - "beetroot_soup": 459, - "bell": -206, - "birch_button": -141, - "birch_door": 428, - "birch_door_block": 194, - "birch_fence_gate": 184, - "birch_pressure_plate": -151, - "birch_sign": 473, - "birch_stairs": 135, - "birch_standing_sign": -186, - "birch_trapdoor": -146, - "birch_wall_sign": -187, - "birch_wood_stairs": 135, - "birch_wooden_stairs": 135, - "black_glazed_terracotta": 235, - "blast_furnace": -196, - "blaze_powder": 377, - "blaze_rod": 369, - "bleach": 451, - "block_moved_by_piston": 250, - "blue_glazed_terracotta": 231, - "blue_ice": -11, - "boat": 333, - "bone": 352, - "bone_block": 216, - "book": 340, - "bookshelf": 47, - "bottle_o_enchanting": 384, - "bow": 261, - "bowl": 281, - "bread": 297, - "brewing_stand": 379, - "brewing_stand_block": 117, - "brick": 336, - "brick_block": 45, - "brick_stairs": 108, - "bricks": 45, - "bricks_block": 45, - "brown_glazed_terracotta": 232, - "brown_mushroom": 39, - "brown_mushroom_block": 99, - "bubble_column": -160, - "bucket": 325, - "burning_furnace": 62, - "bush": 32, - "cactus": 81, - "cake": 354, - "cake_block": 92, - "campfire": -209, - "carpet": 171, - "carrot": 391, - "carrot_block": 141, - "carrot_on_a_stick": 398, - "carrotonastick": 398, - "carrots": 141, - "cartography_table": -200, - "carved_pumpkin": -155, - "cauldron": 380, - "cauldron_block": 118, - "chain_boots": 305, - "chain_chestplate": 303, - "chain_command_block": 189, - "chain_helmet": 302, - "chain_leggings": 304, - "chainmail_boots": 305, - "chainmail_chestplate": 303, - "chainmail_helmet": 302, - "chainmail_leggings": 304, - "chemical_heat": 192, - "chemistry_table": 238, - "chest": 54, - "chest_minecart": 342, - "chicken": 365, - "chorus_flower": 200, - "chorus_fruit": 432, - "chorus_fruit_popped": 433, - "chorus_plant": 240, - "clay": 337, - "clay_ball": 337, - "clay_block": 82, - "clock": 347, - "clown_fish": 461, - "clownfish": 461, - "coal": 263, - "coal_block": 173, - "coal_ore": 16, - "cobble": 4, - "cobble_stairs": 67, - "cobble_wall": 139, - "cobblestone": 4, - "cobblestone_stairs": 67, - "cobblestone_wall": 139, - "cobweb": 30, - "cocoa": 127, - "cocoa_block": 127, - "cocoa_pods": 127, - "colored_torch_bp": 204, - "colored_torch_rg": 202, - "command_block": 137, - "command_block_minecart": 443, - "comparator": 404, - "comparator_block": 149, - "compass": 345, - "composter": -213, - "compound": 499, - "concrete": 236, - "concrete_powder": 237, - "concretepowder": 237, - "conduit": -157, - "cooked_beef": 364, - "cooked_chicken": 366, - "cooked_fish": 350, - "cooked_mutton": 424, - "cooked_porkchop": 320, - "cooked_rabbit": 412, - "cooked_salmon": 463, - "cookie": 357, - "coral": -131, - "coral_block": -132, - "coral_fan": -133, - "coral_fan_dead": -134, - "coral_fan_hang": -135, - "coral_fan_hang2": -136, - "coral_fan_hang3": -137, - "crafting_table": 58, - "crossbow": 471, - "cyan_glazed_terracotta": 229, - "dandelion": 37, - "dark_oak_button": -142, - "dark_oak_door": 431, - "dark_oak_door_block": 197, - "dark_oak_fence_gate": 186, - "dark_oak_pressure_plate": -152, - "dark_oak_stairs": 164, - "dark_oak_trapdoor": -147, - "dark_oak_wood_stairs": 164, - "dark_oak_wooden_stairs": 164, - "dark_prismarine_stairs": -3, - "darkoak_sign": 476, - "darkoak_standing_sign": -192, - "darkoak_wall_sign": -193, - "daylight_detector": 151, - "daylight_detector_inverted": 178, - "daylight_sensor": 151, - "daylight_sensor_inverted": 178, - "dead_bush": 32, - "deadbush": 32, - "detector_rail": 28, - "diamond": 264, - "diamond_axe": 279, - "diamond_block": 57, - "diamond_boots": 313, - "diamond_chestplate": 311, - "diamond_helmet": 310, - "diamond_hoe": 293, - "diamond_horse_armor": 419, - "diamond_leggings": 312, - "diamond_ore": 56, - "diamond_pickaxe": 278, - "diamond_shovel": 277, - "diamond_sword": 276, - "diorite_stairs": -170, - "dirt": 3, - "dispenser": 23, - "door_block": 64, - "double_plant": 175, - "double_red_sandstone_slab": 181, - "double_slab": 43, - "double_slabs": 43, - "double_stone_slab": 43, - "double_stone_slab2": 181, - "double_stone_slab3": -167, - "double_stone_slab4": -168, - "double_wood_slab": 157, - "double_wood_slabs": 157, - "double_wooden_slab": 157, - "double_wooden_slabs": 157, - "dragon_breath": 437, - "dragon_egg": 122, - "dried_kelp": 464, - "dried_kelp_block": -139, - "dropper": 125, - "dye": 351, - "egg": 344, - "element_0": 36, - "element_1": -12, - "element_2": -13, - "element_3": -14, - "element_4": -15, - "element_5": -16, - "element_6": -17, - "element_7": -18, - "element_8": -19, - "element_9": -20, - "element_10": -21, - "element_11": -22, - "element_12": -23, - "element_13": -24, - "element_14": -25, - "element_15": -26, - "element_16": -27, - "element_17": -28, - "element_18": -29, - "element_19": -30, - "element_20": -31, - "element_21": -32, - "element_22": -33, - "element_23": -34, - "element_24": -35, - "element_25": -36, - "element_26": -37, - "element_27": -38, - "element_28": -39, - "element_29": -40, - "element_30": -41, - "element_31": -42, - "element_32": -43, - "element_33": -44, - "element_34": -45, - "element_35": -46, - "element_36": -47, - "element_37": -48, - "element_38": -49, - "element_39": -50, - "element_40": -51, - "element_41": -52, - "element_42": -53, - "element_43": -54, - "element_44": -55, - "element_45": -56, - "element_46": -57, - "element_47": -58, - "element_48": -59, - "element_49": -60, - "element_50": -61, - "element_51": -62, - "element_52": -63, - "element_53": -64, - "element_54": -65, - "element_55": -66, - "element_56": -67, - "element_57": -68, - "element_58": -69, - "element_59": -70, - "element_60": -71, - "element_61": -72, - "element_62": -73, - "element_63": -74, - "element_64": -75, - "element_65": -76, - "element_66": -77, - "element_67": -78, - "element_68": -79, - "element_69": -80, - "element_70": -81, - "element_71": -82, - "element_72": -83, - "element_73": -84, - "element_74": -85, - "element_75": -86, - "element_76": -87, - "element_77": -88, - "element_78": -89, - "element_79": -90, - "element_80": -91, - "element_81": -92, - "element_82": -93, - "element_83": -94, - "element_84": -95, - "element_85": -96, - "element_86": -97, - "element_87": -98, - "element_88": -99, - "element_89": -100, - "element_90": -101, - "element_91": -102, - "element_92": -103, - "element_93": -104, - "element_94": -105, - "element_95": -106, - "element_96": -107, - "element_97": -108, - "element_98": -109, - "element_99": -110, - "element_100": -111, - "element_101": -112, - "element_102": -113, - "element_103": -114, - "element_104": -115, - "element_105": -116, - "element_106": -117, - "element_107": -118, - "element_108": -119, - "element_109": -120, - "element_110": -121, - "element_111": -122, - "element_112": -123, - "element_113": -124, - "element_114": -125, - "element_115": -126, - "element_116": -127, - "element_117": -128, - "element_118": -129, - "elytra": 444, - "emerald": 388, - "emerald_block": 133, - "emerald_ore": 129, - "empty_map": 395, - "emptymap": 395, - "enchant_table": 116, - "enchanted_book": 403, - "enchanted_golden_apple": 466, - "enchanting_bottle": 384, - "enchanting_table": 116, - "enchantment_table": 116, - "end_brick_stairs": -178, - "end_bricks": 206, - "end_crystal": 426, - "end_gateway": 209, - "end_portal": 119, - "end_portal_frame": 120, - "end_rod": 208, - "end_stone": 121, - "ender_chest": 130, - "ender_eye": 381, - "ender_pearl": 368, - "experience_bottle": 384, - "farmland": 60, - "feather": 288, - "fence": 85, - "fence_gate": 107, - "fence_gate_acacia": 187, - "fence_gate_birch": 184, - "fence_gate_dark_oak": 186, - "fence_gate_jungle": 185, - "fence_gate_spruce": 183, - "fermented_spider_eye": 376, - "filled_map": 358, - "fire": 51, - "fire_charge": 385, - "fireball": 385, - "fireworks": 401, - "fireworks_charge": 402, - "fireworkscharge": 402, - "fish": 349, - "fishing_rod": 346, - "fletching_table": -201, - "flint": 318, - "flint_and_steel": 259, - "flint_steel": 259, - "flower_pot": 390, - "flower_pot_block": 140, - "flowing_lava": 10, - "flowing_water": 8, - "frame": 389, - "frame_block": 199, - "frosted_ice": 207, - "furnace": 61, - "ghast_tear": 370, - "glass": 20, - "glass_bottle": 374, - "glass_pane": 102, - "glass_panel": 102, - "glistering_melon": 382, - "glow_stick": 166, - "glowing_obsidian": 246, - "glowing_redstone_ore": 74, - "glowingobsidian": 246, - "glowstone": 89, - "glowstone_block": 89, - "glowstone_dust": 348, - "gold_axe": 286, - "gold_block": 41, - "gold_boots": 317, - "gold_chestplate": 315, - "gold_helmet": 314, - "gold_hoe": 294, - "gold_horse_armor": 418, - "gold_ingot": 266, - "gold_leggings": 316, - "gold_nugget": 371, - "gold_ore": 14, - "gold_pickaxe": 285, - "gold_pressure_plate": 147, - "gold_shovel": 284, - "gold_sword": 283, - "golden_apple": 322, - "golden_axe": 286, - "golden_boots": 317, - "golden_carrot": 396, - "golden_chestplate": 315, - "golden_helmet": 314, - "golden_hoe": 294, - "golden_horse_armor": 418, - "golden_leggings": 316, - "golden_nugget": 371, - "golden_pickaxe": 285, - "golden_rail": 27, - "golden_shovel": 284, - "golden_sword": 283, - "granite_stairs": -169, - "grass": 2, - "grass_path": 198, - "gravel": 13, - "gray_glazed_terracotta": 227, - "green_glazed_terracotta": 233, - "grindstone": -195, - "gunpowder": 289, - "hard_glass": 253, - "hard_glass_pane": 190, - "hard_stained_glass": 254, - "hard_stained_glass_pane": 191, - "hardened_clay": 172, - "hay_bale": 170, - "hay_block": 170, - "heart_of_the_sea": 467, - "heavy_weighted_pressure_plate": 148, - "hopper": 410, - "hopper_block": 154, - "hopper_minecart": 408, - "horse_armor_diamond": 419, - "horse_armor_gold": 418, - "horse_armor_iron": 417, - "horse_armor_leather": 416, - "horsearmordiamond": 419, - "horsearmorgold": 418, - "horsearmoriron": 417, - "horsearmorleather": 416, - "ice": 79, - "ice_bomb": 453, - "inactive_redstone_lamp": 123, - "info_reserved6": 255, - "info_update": 248, - "info_update2": 249, - "inverted_daylight_sensor": 178, - "invisible_bedrock": 95, - "invisiblebedrock": 95, - "iron_axe": 258, - "iron_bar": 101, - "iron_bars": 101, - "iron_block": 42, - "iron_boots": 309, - "iron_chestplate": 307, - "iron_door": 330, - "iron_door_block": 71, - "iron_helmet": 306, - "iron_hoe": 292, - "iron_horse_armor": 417, - "iron_ingot": 265, - "iron_leggings": 308, - "iron_nugget": 452, - "iron_ore": 15, - "iron_pickaxe": 257, - "iron_pressure_plate": 148, - "iron_shovel": 256, - "iron_sword": 267, - "iron_trapdoor": 167, - "item_frame": 389, - "item_frame_block": 199, - "jack_o_lantern": 91, - "jigsaw": -211, - "jukebox": 84, - "jungle_button": -143, - "jungle_door": 429, - "jungle_door_block": 195, - "jungle_fence_gate": 185, - "jungle_pressure_plate": -153, - "jungle_sign": 474, - "jungle_stairs": 136, - "jungle_standing_sign": -188, - "jungle_trapdoor": -148, - "jungle_wall_sign": -189, - "kelp": 335, - "kelp_block": -138, - "ladder": 65, - "lantern": -208, - "lapis_block": 22, - "lapis_ore": 21, - "lava": 11, - "lava_cauldron": -210, - "lead": 420, - "leash": 420, - "leather": 334, - "leather_boots": 301, - "leather_cap": 298, - "leather_chestplate": 299, - "leather_helmet": 298, - "leather_horse_armor": 416, - "leather_leggings": 300, - "leather_pants": 300, - "leather_tunic": 299, - "leave": 18, - "leave2": 161, - "leaves": 18, - "leaves2": 161, - "lectern": -194, - "lever": 69, - "light_blue_glazed_terracotta": 223, - "light_weighted_pressure_plate": 147, - "lily_pad": 111, - "lime_glazed_terracotta": 225, - "lingering_potion": 441, - "lit_blast_furnace": -214, - "lit_furnace": 62, - "lit_pumpkin": 91, - "lit_redstone_lamp": 124, - "lit_redstone_ore": 74, - "lit_redstone_torch": 76, - "lit_smoker": -199, - "log": 17, - "log2": 162, - "loom": -204, - "magenta_glazed_terracotta": 222, - "magma": 213, - "magma_cream": 378, - "map": 395, - "medicine": 447, - "melon": 360, - "melon_block": 103, - "melon_seeds": 362, - "melon_slice": 360, - "melon_stem": 105, - "minecart": 328, - "minecart_with_chest": 342, - "minecart_with_command_block": 443, - "minecart_with_hopper": 408, - "minecart_with_tnt": 407, - "mob_head": 397, - "mob_head_block": 144, - "mob_spawner": 52, - "monster_egg": 97, - "monster_egg_block": 97, - "monster_spawner": 52, - "moss_stone": 48, - "mossy_cobblestone": 48, - "mossy_cobblestone_stairs": -179, - "mossy_stone": 48, - "mossy_stone_brick_stairs": -175, - "moving_block": 250, - "movingblock": 250, - "mushroom_stew": 282, - "mutton": 423, - "mutton_cooked": 424, - "mutton_raw": 423, - "muttoncooked": 424, - "muttonraw": 423, - "mycelium": 110, - "name_tag": 421, - "nametag": 421, - "nautilus_shell": 465, - "nether_brick": 405, - "nether_brick_block": 112, - "nether_brick_fence": 113, - "nether_brick_stairs": 114, - "nether_bricks": 112, - "nether_bricks_stairs": 114, - "nether_quartz": 406, - "nether_quartz_ore": 153, - "nether_reactor": 247, - "nether_star": 399, - "nether_wart": 372, - "nether_wart_block": 214, - "nether_wart_plant": 115, - "netherbrick": 405, - "netherrack": 87, - "netherreactor": 247, - "netherstar": 399, - "normal_stone_stairs": -180, - "note_block": 25, - "noteblock": 25, - "oak_door": 324, - "oak_door_block": 64, - "oak_fence_gate": 107, - "oak_stairs": 53, - "oak_wood_stairs": 53, - "oak_wooden_stairs": 53, - "observer": 251, - "obsidian": 49, - "orange_glazed_terracotta": 221, - "packed_ice": 174, - "painting": 321, - "paper": 339, - "phantom_membrane": 470, - "pink_glazed_terracotta": 226, - "piston": 33, - "piston_arm_collision": 34, - "piston_head": 34, - "pistonarmcollision": 34, - "plank": 5, - "planks": 5, - "podzol": 243, - "poisonous_potato": 394, - "polished_andesite_stairs": -174, - "polished_diorite_stairs": -173, - "polished_granite_stairs": -172, - "poppy": 38, - "porkchop": 319, - "portal": 90, - "portal_block": 90, - "potato": 392, - "potato_block": 142, - "potatoes": 142, - "potion": 373, - "powered_comparator": 150, - "powered_comparator_block": 150, - "powered_rail": 27, - "powered_repeater": 94, - "powered_repeater_block": 94, - "prismarine": 168, - "prismarine_bricks_stairs": -4, - "prismarine_crystals": 422, - "prismarine_shard": 409, - "prismarine_stairs": -2, - "puffer_fish": 462, - "pufferfish": 462, - "pumpkin": 86, - "pumpkin_pie": 400, - "pumpkin_seeds": 361, - "pumpkin_stem": 104, - "purple_glazed_terracotta": 219, - "purpur_block": 201, - "purpur_stairs": 203, - "quartz": 406, - "quartz_block": 155, - "quartz_ore": 153, - "quartz_stairs": 156, - "rabbit": 411, - "rabbit_foot": 414, - "rabbit_hide": 415, - "rabbit_stew": 413, - "rail": 66, - "rapid_fertilizer": 449, - "raw_beef": 363, - "raw_chicken": 365, - "raw_fish": 349, - "raw_mutton": 423, - "raw_porkchop": 319, - "raw_rabbit": 411, - "raw_salmon": 460, - "record_11": 510, - "record_13": 500, - "record_blocks": 502, - "record_cat": 501, - "record_chirp": 503, - "record_far": 504, - "record_mall": 505, - "record_mellohi": 506, - "record_stal": 507, - "record_strad": 508, - "record_wait": 511, - "record_ward": 509, - "red_flower": 38, - "red_glazed_terracotta": 234, - "red_mushroom": 40, - "red_mushroom_block": 100, - "red_nether_brick": 215, - "red_nether_brick_stairs": -184, - "red_sandstone": 179, - "red_sandstone_slab": 182, - "red_sandstone_stairs": 180, - "redstone": 331, - "redstone_block": 152, - "redstone_dust": 331, - "redstone_lamp": 123, - "redstone_ore": 73, - "redstone_torch": 76, - "redstone_wire": 55, - "reeds": 338, - "reeds_block": 83, - "repeater": 356, - "repeater_block": 93, - "repeating_command_block": 188, - "reserved6": 255, - "rose": 38, - "rotten_flesh": 367, - "saddle": 329, - "salmon": 460, - "sand": 12, - "sandstone": 24, - "sandstone_stairs": 128, - "sapling": 6, - "scaffolding": -165, - "sea_lantern": 169, - "sea_pickle": -156, - "seagrass": -130, - "sealantern": 169, - "seeds": 295, - "shears": 359, - "shield": 513, - "shulker_box": 218, - "shulker_shell": 445, - "sign": 323, - "sign_post": 63, - "silver_glazed_terracotta": 228, - "skull": 397, - "skull_block": 144, - "slab": 44, - "slabs": 44, - "slime": 165, - "slime_ball": 341, - "slime_block": 165, - "slimeball": 341, - "smithing_table": -202, - "smoker": -198, - "smooth_quartz_stairs": -185, - "smooth_red_sandstone_stairs": -176, - "smooth_sandstone_stairs": -177, - "smooth_stone": -183, - "snow": 80, - "snow_block": 80, - "snow_layer": 78, - "snowball": 332, - "soul_sand": 88, - "sparkler": 442, - "spawn_egg": 383, - "speckled_melon": 382, - "spider_eye": 375, - "splash_potion": 438, - "sponge": 19, - "spruce_button": -144, - "spruce_door": 427, - "spruce_door_block": 193, - "spruce_fence_gate": 183, - "spruce_pressure_plate": -154, - "spruce_sign": 472, - "spruce_stairs": 134, - "spruce_standing_sign": -181, - "spruce_trapdoor": -149, - "spruce_wall_sign": -182, - "spruce_wood_stairs": 134, - "spruce_wooden_stairs": 134, - "stained_clay": 159, - "stained_glass": 241, - "stained_glass_pane": 160, - "stained_hardened_clay": 159, - "standing_banner": 176, - "standing_sign": 63, - "steak": 364, - "stick": 280, - "sticks": 280, - "sticky_piston": 29, - "still_lava": 11, - "still_water": 9, - "stone": 1, - "stone_axe": 275, - "stone_brick": 98, - "stone_brick_stairs": 109, - "stone_bricks": 98, - "stone_button": 77, - "stone_hoe": 291, - "stone_pickaxe": 274, - "stone_pressure_plate": 70, - "stone_shovel": 273, - "stone_slab": 44, - "stone_slab2": 182, - "stone_slab3": -162, - "stone_slab4": -166, - "stone_stairs": 67, - "stone_sword": 272, - "stone_wall": 139, - "stonebrick": 98, - "stonecutter": 245, - "stonecutter_block": -197, - "string": 287, - "stripped_acacia_log": -8, - "stripped_birch_log": -6, - "stripped_dark_oak_log": -9, - "stripped_jungle_log": -7, - "stripped_oak_log": -10, - "stripped_spruce_log": -5, - "structure_block": 252, - "sugar": 353, - "sugar_cane": 338, - "sugar_canes": 338, - "sugarcane": 338, - "sugarcane_block": 83, - "sweet_berries": 477, - "sweet_berry_bush": -207, - "tall_grass": 31, - "tallgrass": 31, - "terracotta": 159, - "tnt": 46, - "tnt_minecart": 407, - "torch": 50, - "totem": 450, - "trapdoor": 96, - "trapped_chest": 146, - "trident": 455, - "trip_wire": 132, - "tripwire": 132, - "tripwire_hook": 131, - "trunk": 5, - "trunk2": 162, - "turtle_egg": -159, - "turtle_helmet": 469, - "turtle_shell_piece": 468, - "underwater_torch": 239, - "undyed_shulker_box": 205, - "unlit_redstone_torch": 75, - "unpowered_comparator": 149, - "unpowered_comparator_block": 149, - "unpowered_repeater": 93, - "unpowered_repeater_block": 93, - "update_block": 248, - "vine": 106, - "vines": 106, - "wall_banner": 177, - "wall_sign": 68, - "water": 9, - "water_lily": 111, - "waterlily": 111, - "web": 30, - "weighted_pressure_plate_heavy": 148, - "weighted_pressure_plate_light": 147, - "wheat": 296, - "wheat_block": 59, - "wheat_seeds": 295, - "white_glazed_terracotta": 220, - "wood": 17, - "wood2": 162, - "wood_door_block": 64, - "wood_slab": 158, - "wood_slabs": 158, - "wood_stairs": 53, - "wooden_axe": 271, - "wooden_button": 143, - "wooden_door": 324, - "wooden_door_block": 64, - "wooden_hoe": 290, - "wooden_pickaxe": 270, - "wooden_plank": 5, - "wooden_planks": 5, - "wooden_pressure_plate": 72, - "wooden_shovel": 269, - "wooden_slab": 158, - "wooden_slabs": 158, - "wooden_stairs": 53, - "wooden_sword": 268, - "wooden_trapdoor": 96, - "wool": 35, - "workbench": 58, - "writable_book": 386, - "written_book": 387, - "yellow_flower": 37, - "yellow_glazed_terracotta": 224 + "-2": "minecraft:prismarine_stairs", + "-3": "minecraft:dark_prismarine_stairs", + "-4": "minecraft:prismarine_bricks_stairs", + "-5": "minecraft:stripped_spruce_log", + "-6": "minecraft:stripped_birch_log", + "-7": "minecraft:stripped_jungle_log", + "-8": "minecraft:stripped_acacia_log", + "-9": "minecraft:stripped_dark_oak_log", + "-10": "minecraft:stripped_oak_log", + "-11": "minecraft:blue_ice", + "-12": "minecraft:element_1", + "-13": "minecraft:element_2", + "-14": "minecraft:element_3", + "-15": "minecraft:element_4", + "-16": "minecraft:element_5", + "-17": "minecraft:element_6", + "-18": "minecraft:element_7", + "-19": "minecraft:element_8", + "-20": "minecraft:element_9", + "-21": "minecraft:element_10", + "-22": "minecraft:element_11", + "-23": "minecraft:element_12", + "-24": "minecraft:element_13", + "-25": "minecraft:element_14", + "-26": "minecraft:element_15", + "-27": "minecraft:element_16", + "-28": "minecraft:element_17", + "-29": "minecraft:element_18", + "-30": "minecraft:element_19", + "-31": "minecraft:element_20", + "-32": "minecraft:element_21", + "-33": "minecraft:element_22", + "-34": "minecraft:element_23", + "-35": "minecraft:element_24", + "-36": "minecraft:element_25", + "-37": "minecraft:element_26", + "-38": "minecraft:element_27", + "-39": "minecraft:element_28", + "-40": "minecraft:element_29", + "-41": "minecraft:element_30", + "-42": "minecraft:element_31", + "-43": "minecraft:element_32", + "-44": "minecraft:element_33", + "-45": "minecraft:element_34", + "-46": "minecraft:element_35", + "-47": "minecraft:element_36", + "-48": "minecraft:element_37", + "-49": "minecraft:element_38", + "-50": "minecraft:element_39", + "-51": "minecraft:element_40", + "-52": "minecraft:element_41", + "-53": "minecraft:element_42", + "-54": "minecraft:element_43", + "-55": "minecraft:element_44", + "-56": "minecraft:element_45", + "-57": "minecraft:element_46", + "-58": "minecraft:element_47", + "-59": "minecraft:element_48", + "-60": "minecraft:element_49", + "-61": "minecraft:element_50", + "-62": "minecraft:element_51", + "-63": "minecraft:element_52", + "-64": "minecraft:element_53", + "-65": "minecraft:element_54", + "-66": "minecraft:element_55", + "-67": "minecraft:element_56", + "-68": "minecraft:element_57", + "-69": "minecraft:element_58", + "-70": "minecraft:element_59", + "-71": "minecraft:element_60", + "-72": "minecraft:element_61", + "-73": "minecraft:element_62", + "-74": "minecraft:element_63", + "-75": "minecraft:element_64", + "-76": "minecraft:element_65", + "-77": "minecraft:element_66", + "-78": "minecraft:element_67", + "-79": "minecraft:element_68", + "-80": "minecraft:element_69", + "-81": "minecraft:element_70", + "-82": "minecraft:element_71", + "-83": "minecraft:element_72", + "-84": "minecraft:element_73", + "-85": "minecraft:element_74", + "-86": "minecraft:element_75", + "-87": "minecraft:element_76", + "-88": "minecraft:element_77", + "-89": "minecraft:element_78", + "-90": "minecraft:element_79", + "-91": "minecraft:element_80", + "-92": "minecraft:element_81", + "-93": "minecraft:element_82", + "-94": "minecraft:element_83", + "-95": "minecraft:element_84", + "-96": "minecraft:element_85", + "-97": "minecraft:element_86", + "-98": "minecraft:element_87", + "-99": "minecraft:element_88", + "-100": "minecraft:element_89", + "-101": "minecraft:element_90", + "-102": "minecraft:element_91", + "-103": "minecraft:element_92", + "-104": "minecraft:element_93", + "-105": "minecraft:element_94", + "-106": "minecraft:element_95", + "-107": "minecraft:element_96", + "-108": "minecraft:element_97", + "-109": "minecraft:element_98", + "-110": "minecraft:element_99", + "-111": "minecraft:element_100", + "-112": "minecraft:element_101", + "-113": "minecraft:element_102", + "-114": "minecraft:element_103", + "-115": "minecraft:element_104", + "-116": "minecraft:element_105", + "-117": "minecraft:element_106", + "-118": "minecraft:element_107", + "-119": "minecraft:element_108", + "-120": "minecraft:element_109", + "-121": "minecraft:element_110", + "-122": "minecraft:element_111", + "-123": "minecraft:element_112", + "-124": "minecraft:element_113", + "-125": "minecraft:element_114", + "-126": "minecraft:element_115", + "-127": "minecraft:element_116", + "-128": "minecraft:element_117", + "-129": "minecraft:element_118", + "-130": "minecraft:seagrass", + "-131": "minecraft:coral", + "-132": "minecraft:coral_block", + "-133": "minecraft:coral_fan", + "-134": "minecraft:coral_fan_dead", + "-135": "minecraft:coral_fan_hang", + "-136": "minecraft:coral_fan_hang2", + "-137": "minecraft:coral_fan_hang3", + "-138": "minecraft:item.kelp", + "-139": "minecraft:dried_kelp_block", + "-140": "minecraft:acacia_button", + "-141": "minecraft:birch_button", + "-142": "minecraft:dark_oak_button", + "-143": "minecraft:jungle_button", + "-144": "minecraft:spruce_button", + "-145": "minecraft:acacia_trapdoor", + "-146": "minecraft:birch_trapdoor", + "-147": "minecraft:dark_oak_trapdoor", + "-148": "minecraft:jungle_trapdoor", + "-149": "minecraft:spruce_trapdoor", + "-150": "minecraft:acacia_pressure_plate", + "-151": "minecraft:birch_pressure_plate", + "-152": "minecraft:dark_oak_pressure_plate", + "-153": "minecraft:jungle_pressure_plate", + "-154": "minecraft:spruce_pressure_plate", + "-155": "minecraft:carved_pumpkin", + "-156": "minecraft:sea_pickle", + "-157": "minecraft:conduit", + "-159": "minecraft:turtle_egg", + "-160": "minecraft:bubble_column", + "-161": "minecraft:barrier", + "-162": "minecraft:double_stone_slab3", + "-163": "minecraft:bamboo", + "-164": "minecraft:bamboo_sapling", + "-165": "minecraft:scaffolding", + "-166": "minecraft:double_stone_slab4", + "-167": "minecraft:real_double_stone_slab3", + "-168": "minecraft:real_double_stone_slab4", + "-169": "minecraft:granite_stairs", + "-170": "minecraft:diorite_stairs", + "-171": "minecraft:andesite_stairs", + "-172": "minecraft:polished_granite_stairs", + "-173": "minecraft:polished_diorite_stairs", + "-174": "minecraft:polished_andesite_stairs", + "-175": "minecraft:mossy_stone_brick_stairs", + "-176": "minecraft:smooth_red_sandstone_stairs", + "-177": "minecraft:smooth_sandstone_stairs", + "-178": "minecraft:end_brick_stairs", + "-179": "minecraft:mossy_cobblestone_stairs", + "-180": "minecraft:normal_stone_stairs", + "-181": "minecraft:spruce_standing_sign", + "-182": "minecraft:spruce_wall_sign", + "-183": "minecraft:smooth_stone", + "-184": "minecraft:red_nether_brick_stairs", + "-185": "minecraft:smooth_quartz_stairs", + "-186": "minecraft:birch_standing_sign", + "-187": "minecraft:birch_wall_sign", + "-188": "minecraft:jungle_standing_sign", + "-189": "minecraft:jungle_wall_sign", + "-190": "minecraft:acacia_standing_sign", + "-191": "minecraft:acacia_wall_sign", + "-192": "minecraft:darkoak_standing_sign", + "-193": "minecraft:darkoak_wall_sign", + "-194": "minecraft:lectern", + "-195": "minecraft:grindstone", + "-196": "minecraft:blast_furnace", + "-197": "minecraft:stonecutter_block", + "-198": "minecraft:smoker", + "-199": "minecraft:lit_smoker", + "-200": "minecraft:cartography_table", + "-201": "minecraft:fletching_table", + "-202": "minecraft:smithing_table", + "-203": "minecraft:barrel", + "-204": "minecraft:loom", + "-206": "minecraft:bell", + "-207": "minecraft:sweet_berry_bush", + "-208": "minecraft:lantern", + "-209": "minecraft:item.campfire", + "-210": "minecraft:lava_cauldron", + "-211": "minecraft:jigsaw", + "-213": "minecraft:composter", + "-214": "minecraft:lit_blast_furnace", + "1": "minecraft:stone", + "2": "minecraft:grass", + "3": "minecraft:dirt", + "4": "minecraft:cobblestone", + "5": "minecraft:planks", + "6": "minecraft:sapling", + "7": "minecraft:bedrock", + "8": "minecraft:flowing_water", + "9": "minecraft:water", + "10": "minecraft:flowing_lava", + "11": "minecraft:lava", + "12": "minecraft:sand", + "13": "minecraft:gravel", + "14": "minecraft:gold_ore", + "15": "minecraft:iron_ore", + "16": "minecraft:coal_ore", + "17": "minecraft:log", + "18": "minecraft:leaves", + "19": "minecraft:sponge", + "20": "minecraft:glass", + "21": "minecraft:lapis_ore", + "22": "minecraft:lapis_block", + "23": "minecraft:dispenser", + "24": "minecraft:sandstone", + "25": "minecraft:noteblock", + "26": "minecraft:item.bed", + "27": "minecraft:golden_rail", + "28": "minecraft:detector_rail", + "29": "minecraft:sticky_piston", + "30": "minecraft:web", + "31": "minecraft:tallgrass", + "32": "minecraft:deadbush", + "33": "minecraft:piston", + "34": "minecraft:pistonarmcollision", + "35": "minecraft:wool", + "36": "minecraft:element_0", + "37": "minecraft:yellow_flower", + "38": "minecraft:red_flower", + "39": "minecraft:brown_mushroom", + "40": "minecraft:red_mushroom", + "41": "minecraft:gold_block", + "42": "minecraft:iron_block", + "43": "minecraft:real_double_stone_slab", + "44": "minecraft:double_stone_slab", + "45": "minecraft:brick_block", + "46": "minecraft:tnt", + "47": "minecraft:bookshelf", + "48": "minecraft:mossy_cobblestone", + "49": "minecraft:obsidian", + "50": "minecraft:torch", + "51": "minecraft:fire", + "52": "minecraft:mob_spawner", + "53": "minecraft:oak_stairs", + "54": "minecraft:chest", + "55": "minecraft:redstone_wire", + "56": "minecraft:diamond_ore", + "57": "minecraft:diamond_block", + "58": "minecraft:crafting_table", + "59": "minecraft:item.wheat", + "60": "minecraft:farmland", + "61": "minecraft:furnace", + "62": "minecraft:lit_furnace", + "63": "minecraft:standing_sign", + "64": "minecraft:item.wooden_door", + "65": "minecraft:ladder", + "66": "minecraft:rail", + "67": "minecraft:stone_stairs", + "68": "minecraft:wall_sign", + "69": "minecraft:lever", + "70": "minecraft:stone_pressure_plate", + "71": "minecraft:item.iron_door", + "72": "minecraft:wooden_pressure_plate", + "73": "minecraft:redstone_ore", + "74": "minecraft:lit_redstone_ore", + "75": "minecraft:unlit_redstone_torch", + "76": "minecraft:redstone_torch", + "77": "minecraft:stone_button", + "78": "minecraft:snow_layer", + "79": "minecraft:ice", + "80": "minecraft:snow", + "81": "minecraft:cactus", + "82": "minecraft:clay", + "83": "minecraft:item.reeds", + "84": "minecraft:jukebox", + "85": "minecraft:fence", + "86": "minecraft:pumpkin", + "87": "minecraft:netherrack", + "88": "minecraft:soul_sand", + "89": "minecraft:glowstone", + "90": "minecraft:portal", + "91": "minecraft:lit_pumpkin", + "92": "minecraft:item.cake", + "93": "minecraft:unpowered_repeater", + "94": "minecraft:powered_repeater", + "95": "minecraft:invisiblebedrock", + "96": "minecraft:trapdoor", + "97": "minecraft:monster_egg", + "98": "minecraft:stonebrick", + "99": "minecraft:brown_mushroom_block", + "100": "minecraft:red_mushroom_block", + "101": "minecraft:iron_bars", + "102": "minecraft:glass_pane", + "103": "minecraft:melon_block", + "104": "minecraft:pumpkin_stem", + "105": "minecraft:melon_stem", + "106": "minecraft:vine", + "107": "minecraft:fence_gate", + "108": "minecraft:brick_stairs", + "109": "minecraft:stone_brick_stairs", + "110": "minecraft:mycelium", + "111": "minecraft:waterlily", + "112": "minecraft:nether_brick", + "113": "minecraft:nether_brick_fence", + "114": "minecraft:nether_brick_stairs", + "115": "minecraft:item.nether_wart", + "116": "minecraft:enchanting_table", + "117": "minecraft:brewingstandblock", + "118": "minecraft:item.cauldron", + "119": "minecraft:end_portal", + "120": "minecraft:end_portal_frame", + "121": "minecraft:end_stone", + "122": "minecraft:dragon_egg", + "123": "minecraft:redstone_lamp", + "124": "minecraft:lit_redstone_lamp", + "125": "minecraft:dropper", + "126": "minecraft:activator_rail", + "127": "minecraft:cocoa", + "128": "minecraft:sandstone_stairs", + "129": "minecraft:emerald_ore", + "130": "minecraft:ender_chest", + "131": "minecraft:tripwire_hook", + "132": "minecraft:tripwire", + "133": "minecraft:emerald_block", + "134": "minecraft:spruce_stairs", + "135": "minecraft:birch_stairs", + "136": "minecraft:jungle_stairs", + "137": "minecraft:command_block", + "138": "minecraft:beacon", + "139": "minecraft:cobblestone_wall", + "140": "minecraft:item.flower_pot", + "141": "minecraft:carrots", + "142": "minecraft:potatoes", + "143": "minecraft:wooden_button", + "144": "minecraft:item.skull", + "145": "minecraft:anvil", + "146": "minecraft:trapped_chest", + "147": "minecraft:light_weighted_pressure_plate", + "148": "minecraft:heavy_weighted_pressure_plate", + "149": "minecraft:unpowered_comparator", + "150": "minecraft:powered_comparator", + "151": "minecraft:daylight_detector", + "152": "minecraft:redstone_block", + "153": "minecraft:quartz_ore", + "154": "minecraft:item.hopper", + "155": "minecraft:quartz_block", + "156": "minecraft:quartz_stairs", + "157": "minecraft:double_wooden_slab", + "158": "minecraft:wooden_slab", + "159": "minecraft:stained_hardened_clay", + "160": "minecraft:stained_glass_pane", + "161": "minecraft:leaves2", + "162": "minecraft:log2", + "163": "minecraft:acacia_stairs", + "164": "minecraft:dark_oak_stairs", + "165": "minecraft:slime", + "166": "minecraft:glow_stick", + "167": "minecraft:iron_trapdoor", + "168": "minecraft:prismarine", + "169": "minecraft:sealantern", + "170": "minecraft:hay_block", + "171": "minecraft:carpet", + "172": "minecraft:hardened_clay", + "173": "minecraft:coal_block", + "174": "minecraft:packed_ice", + "175": "minecraft:double_plant", + "176": "minecraft:standing_banner", + "177": "minecraft:wall_banner", + "178": "minecraft:daylight_detector_inverted", + "179": "minecraft:red_sandstone", + "180": "minecraft:red_sandstone_stairs", + "181": "minecraft:real_double_stone_slab2", + "182": "minecraft:double_stone_slab2", + "183": "minecraft:spruce_fence_gate", + "184": "minecraft:birch_fence_gate", + "185": "minecraft:jungle_fence_gate", + "186": "minecraft:dark_oak_fence_gate", + "187": "minecraft:acacia_fence_gate", + "188": "minecraft:repeating_command_block", + "189": "minecraft:chain_command_block", + "190": "minecraft:hard_glass_pane", + "191": "minecraft:hard_stained_glass_pane", + "192": "minecraft:chemical_heat", + "193": "minecraft:item.spruce_door", + "194": "minecraft:item.birch_door", + "195": "minecraft:item.jungle_door", + "196": "minecraft:item.acacia_door", + "197": "minecraft:item.dark_oak_door", + "198": "minecraft:grass_path", + "199": "minecraft:item.frame", + "200": "minecraft:chorus_flower", + "201": "minecraft:purpur_block", + "202": "minecraft:colored_torch_rg", + "203": "minecraft:purpur_stairs", + "204": "minecraft:colored_torch_bp", + "205": "minecraft:undyed_shulker_box", + "206": "minecraft:end_bricks", + "207": "minecraft:frosted_ice", + "208": "minecraft:end_rod", + "209": "minecraft:end_gateway", + "213": "minecraft:magma", + "214": "minecraft:nether_wart_block", + "215": "minecraft:red_nether_brick", + "216": "minecraft:bone_block", + "218": "minecraft:shulker_box", + "219": "minecraft:purple_glazed_terracotta", + "220": "minecraft:white_glazed_terracotta", + "221": "minecraft:orange_glazed_terracotta", + "222": "minecraft:magenta_glazed_terracotta", + "223": "minecraft:light_blue_glazed_terracotta", + "224": "minecraft:yellow_glazed_terracotta", + "225": "minecraft:lime_glazed_terracotta", + "226": "minecraft:pink_glazed_terracotta", + "227": "minecraft:gray_glazed_terracotta", + "228": "minecraft:silver_glazed_terracotta", + "229": "minecraft:cyan_glazed_terracotta", + "231": "minecraft:blue_glazed_terracotta", + "232": "minecraft:brown_glazed_terracotta", + "233": "minecraft:green_glazed_terracotta", + "234": "minecraft:red_glazed_terracotta", + "235": "minecraft:black_glazed_terracotta", + "236": "minecraft:concrete", + "237": "minecraft:concrete_powder", + "238": "minecraft:chemistry_table", + "239": "minecraft:underwater_torch", + "240": "minecraft:chorus_plant", + "241": "minecraft:stained_glass", + "243": "minecraft:podzol", + "244": "minecraft:item.beetroot", + "245": "minecraft:stonecutter", + "246": "minecraft:glowingobsidian", + "247": "minecraft:netherreactor", + "248": "minecraft:info_update", + "249": "minecraft:info_update2", + "250": "minecraft:movingblock", + "251": "minecraft:observer", + "252": "minecraft:structure_block", + "253": "minecraft:hard_glass", + "254": "minecraft:hard_stained_glass", + "255": "minecraft:reserved6", + "256": "minecraft:iron_shovel", + "257": "minecraft:iron_pickaxe", + "258": "minecraft:iron_axe", + "259": "minecraft:flint_and_steel", + "260": "minecraft:apple", + "261": "minecraft:bow", + "262": "minecraft:arrow", + "263": "minecraft:coal", + "264": "minecraft:diamond", + "265": "minecraft:iron_ingot", + "266": "minecraft:gold_ingot", + "267": "minecraft:iron_sword", + "268": "minecraft:wooden_sword", + "269": "minecraft:wooden_shovel", + "270": "minecraft:wooden_pickaxe", + "271": "minecraft:wooden_axe", + "272": "minecraft:stone_sword", + "273": "minecraft:stone_shovel", + "274": "minecraft:stone_pickaxe", + "275": "minecraft:stone_axe", + "276": "minecraft:diamond_sword", + "277": "minecraft:diamond_shovel", + "278": "minecraft:diamond_pickaxe", + "279": "minecraft:diamond_axe", + "280": "minecraft:stick", + "281": "minecraft:bowl", + "282": "minecraft:mushroom_stew", + "283": "minecraft:golden_sword", + "284": "minecraft:golden_shovel", + "285": "minecraft:golden_pickaxe", + "286": "minecraft:golden_axe", + "287": "minecraft:string", + "288": "minecraft:feather", + "289": "minecraft:gunpowder", + "290": "minecraft:wooden_hoe", + "291": "minecraft:stone_hoe", + "292": "minecraft:iron_hoe", + "293": "minecraft:diamond_hoe", + "294": "minecraft:golden_hoe", + "295": "minecraft:wheat_seeds", + "296": "minecraft:wheat", + "297": "minecraft:bread", + "298": "minecraft:leather_helmet", + "299": "minecraft:leather_chestplate", + "300": "minecraft:leather_leggings", + "301": "minecraft:leather_boots", + "302": "minecraft:chainmail_helmet", + "303": "minecraft:chainmail_chestplate", + "304": "minecraft:chainmail_leggings", + "305": "minecraft:chainmail_boots", + "306": "minecraft:iron_helmet", + "307": "minecraft:iron_chestplate", + "308": "minecraft:iron_leggings", + "309": "minecraft:iron_boots", + "310": "minecraft:diamond_helmet", + "311": "minecraft:diamond_chestplate", + "312": "minecraft:diamond_leggings", + "313": "minecraft:diamond_boots", + "314": "minecraft:golden_helmet", + "315": "minecraft:golden_chestplate", + "316": "minecraft:golden_leggings", + "317": "minecraft:golden_boots", + "318": "minecraft:flint", + "319": "minecraft:porkchop", + "320": "minecraft:cooked_porkchop", + "321": "minecraft:painting", + "322": "minecraft:golden_apple", + "323": "minecraft:sign", + "324": "minecraft:wooden_door", + "325": "minecraft:bucket", + "328": "minecraft:minecart", + "329": "minecraft:saddle", + "330": "minecraft:iron_door", + "331": "minecraft:redstone", + "332": "minecraft:snowball", + "333": "minecraft:boat", + "334": "minecraft:leather", + "335": "minecraft:kelp", + "336": "minecraft:brick", + "337": "minecraft:clay_ball", + "338": "minecraft:reeds", + "339": "minecraft:paper", + "340": "minecraft:book", + "341": "minecraft:slime_ball", + "342": "minecraft:chest_minecart", + "344": "minecraft:egg", + "345": "minecraft:compass", + "346": "minecraft:fishing_rod", + "347": "minecraft:clock", + "348": "minecraft:glowstone_dust", + "349": "minecraft:fish", + "350": "minecraft:cooked_fish", + "351": "minecraft:dye", + "352": "minecraft:bone", + "353": "minecraft:sugar", + "354": "minecraft:cake", + "355": "minecraft:bed", + "356": "minecraft:repeater", + "357": "minecraft:cookie", + "358": "minecraft:map", + "359": "minecraft:shears", + "360": "minecraft:melon", + "361": "minecraft:pumpkin_seeds", + "362": "minecraft:melon_seeds", + "363": "minecraft:beef", + "364": "minecraft:cooked_beef", + "365": "minecraft:chicken", + "366": "minecraft:cooked_chicken", + "367": "minecraft:rotten_flesh", + "368": "minecraft:ender_pearl", + "369": "minecraft:blaze_rod", + "370": "minecraft:ghast_tear", + "371": "minecraft:gold_nugget", + "372": "minecraft:nether_wart", + "373": "minecraft:potion", + "374": "minecraft:glass_bottle", + "375": "minecraft:spider_eye", + "376": "minecraft:fermented_spider_eye", + "377": "minecraft:blaze_powder", + "378": "minecraft:magma_cream", + "379": "minecraft:brewing_stand", + "380": "minecraft:cauldron", + "381": "minecraft:ender_eye", + "382": "minecraft:speckled_melon", + "383": "minecraft:spawn_egg", + "384": "minecraft:experience_bottle", + "385": "minecraft:fireball", + "386": "minecraft:writable_book", + "387": "minecraft:written_book", + "388": "minecraft:emerald", + "389": "minecraft:frame", + "390": "minecraft:flower_pot", + "391": "minecraft:carrot", + "392": "minecraft:potato", + "393": "minecraft:baked_potato", + "394": "minecraft:poisonous_potato", + "395": "minecraft:emptymap", + "396": "minecraft:golden_carrot", + "397": "minecraft:skull", + "398": "minecraft:carrotonastick", + "399": "minecraft:netherstar", + "400": "minecraft:pumpkin_pie", + "401": "minecraft:fireworks", + "402": "minecraft:fireworkscharge", + "403": "minecraft:enchanted_book", + "404": "minecraft:comparator", + "405": "minecraft:netherbrick", + "406": "minecraft:quartz", + "407": "minecraft:tnt_minecart", + "408": "minecraft:hopper_minecart", + "409": "minecraft:prismarine_shard", + "410": "minecraft:hopper", + "411": "minecraft:rabbit", + "412": "minecraft:cooked_rabbit", + "413": "minecraft:rabbit_stew", + "414": "minecraft:rabbit_foot", + "415": "minecraft:rabbit_hide", + "416": "minecraft:horsearmorleather", + "417": "minecraft:horsearmoriron", + "418": "minecraft:horsearmorgold", + "419": "minecraft:horsearmordiamond", + "420": "minecraft:lead", + "421": "minecraft:name_tag", + "422": "minecraft:prismarine_crystals", + "423": "minecraft:muttonraw", + "424": "minecraft:muttoncooked", + "425": "minecraft:armor_stand", + "426": "minecraft:end_crystal", + "427": "minecraft:spruce_door", + "428": "minecraft:birch_door", + "429": "minecraft:jungle_door", + "430": "minecraft:acacia_door", + "431": "minecraft:dark_oak_door", + "432": "minecraft:chorus_fruit", + "433": "minecraft:chorus_fruit_popped", + "434": "minecraft:banner_pattern", + "437": "minecraft:dragon_breath", + "438": "minecraft:splash_potion", + "441": "minecraft:lingering_potion", + "442": "minecraft:sparkler", + "443": "minecraft:command_block_minecart", + "444": "minecraft:elytra", + "445": "minecraft:shulker_shell", + "446": "minecraft:banner", + "447": "minecraft:medicine", + "448": "minecraft:balloon", + "449": "minecraft:rapid_fertilizer", + "450": "minecraft:totem", + "451": "minecraft:bleach", + "452": "minecraft:iron_nugget", + "453": "minecraft:ice_bomb", + "455": "minecraft:trident", + "457": "minecraft:beetroot", + "458": "minecraft:beetroot_seeds", + "459": "minecraft:beetroot_soup", + "460": "minecraft:salmon", + "461": "minecraft:clownfish", + "462": "minecraft:pufferfish", + "463": "minecraft:cooked_salmon", + "464": "minecraft:dried_kelp", + "465": "minecraft:nautilus_shell", + "466": "minecraft:appleenchanted", + "467": "minecraft:heart_of_the_sea", + "468": "minecraft:turtle_shell_piece", + "469": "minecraft:turtle_helmet", + "470": "minecraft:phantom_membrane", + "471": "minecraft:crossbow", + "472": "minecraft:spruce_sign", + "473": "minecraft:birch_sign", + "474": "minecraft:jungle_sign", + "475": "minecraft:acacia_sign", + "476": "minecraft:darkoak_sign", + "477": "minecraft:sweet_berries", + "499": "minecraft:compound", + "500": "minecraft:record_13", + "501": "minecraft:record_cat", + "502": "minecraft:record_blocks", + "503": "minecraft:record_chirp", + "504": "minecraft:record_far", + "505": "minecraft:record_mall", + "506": "minecraft:record_mellohi", + "507": "minecraft:record_stal", + "508": "minecraft:record_strad", + "509": "minecraft:record_ward", + "510": "minecraft:record_11", + "511": "minecraft:record_wait", + "513": "minecraft:shield", + "acacia_button": "minecraft:acacia_button", + "acacia_door": "minecraft:acacia_door", + "acacia_door_block": "minecraft:item.acacia_door", + "acacia_fence_gate": "minecraft:acacia_fence_gate", + "acacia_pressure_plate": "minecraft:acacia_pressure_plate", + "acacia_sign": "minecraft:acacia_sign", + "acacia_stairs": "minecraft:acacia_stairs", + "acacia_standing_sign": "minecraft:acacia_standing_sign", + "acacia_trapdoor": "minecraft:acacia_trapdoor", + "acacia_wall_sign": "minecraft:acacia_wall_sign", + "acacia_wood_stairs": "minecraft:acacia_stairs", + "acacia_wooden_stairs": "minecraft:acacia_stairs", + "activator_rail": "minecraft:activator_rail", + "active_redstone_lamp": "minecraft:lit_redstone_lamp", + "andesite_stairs": "minecraft:andesite_stairs", + "anvil": "minecraft:anvil", + "apple": "minecraft:apple", + "apple_enchanted": "minecraft:appleenchanted", + "appleenchanted": "minecraft:appleenchanted", + "armor_stand": "minecraft:armor_stand", + "arrow": "minecraft:arrow", + "ateupd_block": "minecraft:info_update2", + "baked_potato": "minecraft:baked_potato", + "baked_potatoes": "minecraft:baked_potato", + "balloon": "minecraft:balloon", + "bamboo": "minecraft:bamboo", + "bamboo_sapling": "minecraft:bamboo_sapling", + "banner": "minecraft:banner", + "banner_pattern": "minecraft:banner_pattern", + "barrel": "minecraft:barrel", + "barrier": "minecraft:barrier", + "beacon": "minecraft:beacon", + "bed": "minecraft:bed", + "bed_block": "minecraft:item.bed", + "bedrock": "minecraft:bedrock", + "beef": "minecraft:beef", + "beetroot": "minecraft:beetroot", + "beetroot_block": "minecraft:item.beetroot", + "beetroot_seed": "minecraft:beetroot_seeds", + "beetroot_seeds": "minecraft:beetroot_seeds", + "beetroot_soup": "minecraft:beetroot_soup", + "bell": "minecraft:bell", + "birch_button": "minecraft:birch_button", + "birch_door": "minecraft:birch_door", + "birch_door_block": "minecraft:item.birch_door", + "birch_fence_gate": "minecraft:birch_fence_gate", + "birch_pressure_plate": "minecraft:birch_pressure_plate", + "birch_sign": "minecraft:birch_sign", + "birch_stairs": "minecraft:birch_stairs", + "birch_standing_sign": "minecraft:birch_standing_sign", + "birch_trapdoor": "minecraft:birch_trapdoor", + "birch_wall_sign": "minecraft:birch_wall_sign", + "birch_wood_stairs": "minecraft:birch_stairs", + "birch_wooden_stairs": "minecraft:birch_stairs", + "black_glazed_terracotta": "minecraft:black_glazed_terracotta", + "blast_furnace": "minecraft:blast_furnace", + "blaze_powder": "minecraft:blaze_powder", + "blaze_rod": "minecraft:blaze_rod", + "bleach": "minecraft:bleach", + "block_moved_by_piston": "minecraft:movingblock", + "blue_glazed_terracotta": "minecraft:blue_glazed_terracotta", + "blue_ice": "minecraft:blue_ice", + "boat": "minecraft:boat", + "bone": "minecraft:bone", + "bone_block": "minecraft:bone_block", + "book": "minecraft:book", + "bookshelf": "minecraft:bookshelf", + "bottle_o_enchanting": "minecraft:experience_bottle", + "bow": "minecraft:bow", + "bowl": "minecraft:bowl", + "bread": "minecraft:bread", + "brewing_stand": "minecraft:brewing_stand", + "brewing_stand_block": "minecraft:brewingstandblock", + "brick": "minecraft:brick", + "brick_block": "minecraft:brick_block", + "brick_stairs": "minecraft:brick_stairs", + "bricks": "minecraft:brick_block", + "bricks_block": "minecraft:brick_block", + "brown_glazed_terracotta": "minecraft:brown_glazed_terracotta", + "brown_mushroom": "minecraft:brown_mushroom", + "brown_mushroom_block": "minecraft:brown_mushroom_block", + "bubble_column": "minecraft:bubble_column", + "bucket": "minecraft:bucket", + "burning_furnace": "minecraft:lit_furnace", + "bush": "minecraft:deadbush", + "cactus": "minecraft:cactus", + "cake": "minecraft:cake", + "cake_block": "minecraft:item.cake", + "campfire": "minecraft:item.campfire", + "carpet": "minecraft:carpet", + "carrot": "minecraft:carrot", + "carrot_block": "minecraft:carrots", + "carrot_on_a_stick": "minecraft:carrotonastick", + "carrotonastick": "minecraft:carrotonastick", + "carrots": "minecraft:carrots", + "cartography_table": "minecraft:cartography_table", + "carved_pumpkin": "minecraft:carved_pumpkin", + "cauldron": "minecraft:cauldron", + "cauldron_block": "minecraft:item.cauldron", + "chain_boots": "minecraft:chainmail_boots", + "chain_chestplate": "minecraft:chainmail_chestplate", + "chain_command_block": "minecraft:chain_command_block", + "chain_helmet": "minecraft:chainmail_helmet", + "chain_leggings": "minecraft:chainmail_leggings", + "chainmail_boots": "minecraft:chainmail_boots", + "chainmail_chestplate": "minecraft:chainmail_chestplate", + "chainmail_helmet": "minecraft:chainmail_helmet", + "chainmail_leggings": "minecraft:chainmail_leggings", + "chemical_heat": "minecraft:chemical_heat", + "chemistry_table": "minecraft:chemistry_table", + "chest": "minecraft:chest", + "chest_minecart": "minecraft:chest_minecart", + "chicken": "minecraft:chicken", + "chorus_flower": "minecraft:chorus_flower", + "chorus_fruit": "minecraft:chorus_fruit", + "chorus_fruit_popped": "minecraft:chorus_fruit_popped", + "chorus_plant": "minecraft:chorus_plant", + "clay": "minecraft:clay_ball", + "clay_ball": "minecraft:clay_ball", + "clay_block": "minecraft:clay", + "clock": "minecraft:clock", + "clown_fish": "minecraft:clownfish", + "clownfish": "minecraft:clownfish", + "coal": "minecraft:coal", + "coal_block": "minecraft:coal_block", + "coal_ore": "minecraft:coal_ore", + "cobble": "minecraft:cobblestone", + "cobble_stairs": "minecraft:stone_stairs", + "cobble_wall": "minecraft:cobblestone_wall", + "cobblestone": "minecraft:cobblestone", + "cobblestone_stairs": "minecraft:stone_stairs", + "cobblestone_wall": "minecraft:cobblestone_wall", + "cobweb": "minecraft:web", + "cocoa": "minecraft:cocoa", + "cocoa_block": "minecraft:cocoa", + "cocoa_pods": "minecraft:cocoa", + "colored_torch_bp": "minecraft:colored_torch_bp", + "colored_torch_rg": "minecraft:colored_torch_rg", + "command_block": "minecraft:command_block", + "command_block_minecart": "minecraft:command_block_minecart", + "comparator": "minecraft:comparator", + "comparator_block": "minecraft:unpowered_comparator", + "compass": "minecraft:compass", + "composter": "minecraft:composter", + "compound": "minecraft:compound", + "concrete": "minecraft:concrete", + "concrete_powder": "minecraft:concrete_powder", + "concretepowder": "minecraft:concrete_powder", + "conduit": "minecraft:conduit", + "cooked_beef": "minecraft:cooked_beef", + "cooked_chicken": "minecraft:cooked_chicken", + "cooked_fish": "minecraft:cooked_fish", + "cooked_mutton": "minecraft:muttoncooked", + "cooked_porkchop": "minecraft:cooked_porkchop", + "cooked_rabbit": "minecraft:cooked_rabbit", + "cooked_salmon": "minecraft:cooked_salmon", + "cookie": "minecraft:cookie", + "coral": "minecraft:coral", + "coral_block": "minecraft:coral_block", + "coral_fan": "minecraft:coral_fan", + "coral_fan_dead": "minecraft:coral_fan_dead", + "coral_fan_hang": "minecraft:coral_fan_hang", + "coral_fan_hang2": "minecraft:coral_fan_hang2", + "coral_fan_hang3": "minecraft:coral_fan_hang3", + "crafting_table": "minecraft:crafting_table", + "crossbow": "minecraft:crossbow", + "cyan_glazed_terracotta": "minecraft:cyan_glazed_terracotta", + "dandelion": "minecraft:yellow_flower", + "dark_oak_button": "minecraft:dark_oak_button", + "dark_oak_door": "minecraft:dark_oak_door", + "dark_oak_door_block": "minecraft:item.dark_oak_door", + "dark_oak_fence_gate": "minecraft:dark_oak_fence_gate", + "dark_oak_pressure_plate": "minecraft:dark_oak_pressure_plate", + "dark_oak_stairs": "minecraft:dark_oak_stairs", + "dark_oak_trapdoor": "minecraft:dark_oak_trapdoor", + "dark_oak_wood_stairs": "minecraft:dark_oak_stairs", + "dark_oak_wooden_stairs": "minecraft:dark_oak_stairs", + "dark_prismarine_stairs": "minecraft:dark_prismarine_stairs", + "darkoak_sign": "minecraft:darkoak_sign", + "darkoak_standing_sign": "minecraft:darkoak_standing_sign", + "darkoak_wall_sign": "minecraft:darkoak_wall_sign", + "daylight_detector": "minecraft:daylight_detector", + "daylight_detector_inverted": "minecraft:daylight_detector_inverted", + "daylight_sensor": "minecraft:daylight_detector", + "daylight_sensor_inverted": "minecraft:daylight_detector_inverted", + "dead_bush": "minecraft:deadbush", + "deadbush": "minecraft:deadbush", + "detector_rail": "minecraft:detector_rail", + "diamond": "minecraft:diamond", + "diamond_axe": "minecraft:diamond_axe", + "diamond_block": "minecraft:diamond_block", + "diamond_boots": "minecraft:diamond_boots", + "diamond_chestplate": "minecraft:diamond_chestplate", + "diamond_helmet": "minecraft:diamond_helmet", + "diamond_hoe": "minecraft:diamond_hoe", + "diamond_horse_armor": "minecraft:horsearmordiamond", + "diamond_leggings": "minecraft:diamond_leggings", + "diamond_ore": "minecraft:diamond_ore", + "diamond_pickaxe": "minecraft:diamond_pickaxe", + "diamond_shovel": "minecraft:diamond_shovel", + "diamond_sword": "minecraft:diamond_sword", + "diorite_stairs": "minecraft:diorite_stairs", + "dirt": "minecraft:dirt", + "dispenser": "minecraft:dispenser", + "door_block": "minecraft:item.wooden_door", + "double_plant": "minecraft:double_plant", + "double_red_sandstone_slab": "minecraft:real_double_stone_slab2", + "double_slab": "minecraft:real_double_stone_slab", + "double_slabs": "minecraft:real_double_stone_slab", + "double_stone_slab": "minecraft:real_double_stone_slab", + "double_stone_slab2": "minecraft:real_double_stone_slab2", + "double_stone_slab3": "minecraft:real_double_stone_slab3", + "double_stone_slab4": "minecraft:real_double_stone_slab4", + "double_wood_slab": "minecraft:double_wooden_slab", + "double_wood_slabs": "minecraft:double_wooden_slab", + "double_wooden_slab": "minecraft:double_wooden_slab", + "double_wooden_slabs": "minecraft:double_wooden_slab", + "dragon_breath": "minecraft:dragon_breath", + "dragon_egg": "minecraft:dragon_egg", + "dried_kelp": "minecraft:dried_kelp", + "dried_kelp_block": "minecraft:dried_kelp_block", + "dropper": "minecraft:dropper", + "dye": "minecraft:dye", + "egg": "minecraft:egg", + "element_0": "minecraft:element_0", + "element_1": "minecraft:element_1", + "element_2": "minecraft:element_2", + "element_3": "minecraft:element_3", + "element_4": "minecraft:element_4", + "element_5": "minecraft:element_5", + "element_6": "minecraft:element_6", + "element_7": "minecraft:element_7", + "element_8": "minecraft:element_8", + "element_9": "minecraft:element_9", + "element_10": "minecraft:element_10", + "element_11": "minecraft:element_11", + "element_12": "minecraft:element_12", + "element_13": "minecraft:element_13", + "element_14": "minecraft:element_14", + "element_15": "minecraft:element_15", + "element_16": "minecraft:element_16", + "element_17": "minecraft:element_17", + "element_18": "minecraft:element_18", + "element_19": "minecraft:element_19", + "element_20": "minecraft:element_20", + "element_21": "minecraft:element_21", + "element_22": "minecraft:element_22", + "element_23": "minecraft:element_23", + "element_24": "minecraft:element_24", + "element_25": "minecraft:element_25", + "element_26": "minecraft:element_26", + "element_27": "minecraft:element_27", + "element_28": "minecraft:element_28", + "element_29": "minecraft:element_29", + "element_30": "minecraft:element_30", + "element_31": "minecraft:element_31", + "element_32": "minecraft:element_32", + "element_33": "minecraft:element_33", + "element_34": "minecraft:element_34", + "element_35": "minecraft:element_35", + "element_36": "minecraft:element_36", + "element_37": "minecraft:element_37", + "element_38": "minecraft:element_38", + "element_39": "minecraft:element_39", + "element_40": "minecraft:element_40", + "element_41": "minecraft:element_41", + "element_42": "minecraft:element_42", + "element_43": "minecraft:element_43", + "element_44": "minecraft:element_44", + "element_45": "minecraft:element_45", + "element_46": "minecraft:element_46", + "element_47": "minecraft:element_47", + "element_48": "minecraft:element_48", + "element_49": "minecraft:element_49", + "element_50": "minecraft:element_50", + "element_51": "minecraft:element_51", + "element_52": "minecraft:element_52", + "element_53": "minecraft:element_53", + "element_54": "minecraft:element_54", + "element_55": "minecraft:element_55", + "element_56": "minecraft:element_56", + "element_57": "minecraft:element_57", + "element_58": "minecraft:element_58", + "element_59": "minecraft:element_59", + "element_60": "minecraft:element_60", + "element_61": "minecraft:element_61", + "element_62": "minecraft:element_62", + "element_63": "minecraft:element_63", + "element_64": "minecraft:element_64", + "element_65": "minecraft:element_65", + "element_66": "minecraft:element_66", + "element_67": "minecraft:element_67", + "element_68": "minecraft:element_68", + "element_69": "minecraft:element_69", + "element_70": "minecraft:element_70", + "element_71": "minecraft:element_71", + "element_72": "minecraft:element_72", + "element_73": "minecraft:element_73", + "element_74": "minecraft:element_74", + "element_75": "minecraft:element_75", + "element_76": "minecraft:element_76", + "element_77": "minecraft:element_77", + "element_78": "minecraft:element_78", + "element_79": "minecraft:element_79", + "element_80": "minecraft:element_80", + "element_81": "minecraft:element_81", + "element_82": "minecraft:element_82", + "element_83": "minecraft:element_83", + "element_84": "minecraft:element_84", + "element_85": "minecraft:element_85", + "element_86": "minecraft:element_86", + "element_87": "minecraft:element_87", + "element_88": "minecraft:element_88", + "element_89": "minecraft:element_89", + "element_90": "minecraft:element_90", + "element_91": "minecraft:element_91", + "element_92": "minecraft:element_92", + "element_93": "minecraft:element_93", + "element_94": "minecraft:element_94", + "element_95": "minecraft:element_95", + "element_96": "minecraft:element_96", + "element_97": "minecraft:element_97", + "element_98": "minecraft:element_98", + "element_99": "minecraft:element_99", + "element_100": "minecraft:element_100", + "element_101": "minecraft:element_101", + "element_102": "minecraft:element_102", + "element_103": "minecraft:element_103", + "element_104": "minecraft:element_104", + "element_105": "minecraft:element_105", + "element_106": "minecraft:element_106", + "element_107": "minecraft:element_107", + "element_108": "minecraft:element_108", + "element_109": "minecraft:element_109", + "element_110": "minecraft:element_110", + "element_111": "minecraft:element_111", + "element_112": "minecraft:element_112", + "element_113": "minecraft:element_113", + "element_114": "minecraft:element_114", + "element_115": "minecraft:element_115", + "element_116": "minecraft:element_116", + "element_117": "minecraft:element_117", + "element_118": "minecraft:element_118", + "elytra": "minecraft:elytra", + "emerald": "minecraft:emerald", + "emerald_block": "minecraft:emerald_block", + "emerald_ore": "minecraft:emerald_ore", + "empty_map": "minecraft:emptymap", + "emptymap": "minecraft:emptymap", + "enchant_table": "minecraft:enchanting_table", + "enchanted_book": "minecraft:enchanted_book", + "enchanted_golden_apple": "minecraft:appleenchanted", + "enchanting_bottle": "minecraft:experience_bottle", + "enchanting_table": "minecraft:enchanting_table", + "enchantment_table": "minecraft:enchanting_table", + "end_brick_stairs": "minecraft:end_brick_stairs", + "end_bricks": "minecraft:end_bricks", + "end_crystal": "minecraft:end_crystal", + "end_gateway": "minecraft:end_gateway", + "end_portal": "minecraft:end_portal", + "end_portal_frame": "minecraft:end_portal_frame", + "end_rod": "minecraft:end_rod", + "end_stone": "minecraft:end_stone", + "ender_chest": "minecraft:ender_chest", + "ender_eye": "minecraft:ender_eye", + "ender_pearl": "minecraft:ender_pearl", + "experience_bottle": "minecraft:experience_bottle", + "farmland": "minecraft:farmland", + "feather": "minecraft:feather", + "fence": "minecraft:fence", + "fence_gate": "minecraft:fence_gate", + "fence_gate_acacia": "minecraft:acacia_fence_gate", + "fence_gate_birch": "minecraft:birch_fence_gate", + "fence_gate_dark_oak": "minecraft:dark_oak_fence_gate", + "fence_gate_jungle": "minecraft:jungle_fence_gate", + "fence_gate_spruce": "minecraft:spruce_fence_gate", + "fermented_spider_eye": "minecraft:fermented_spider_eye", + "filled_map": "minecraft:map", + "fire": "minecraft:fire", + "fire_charge": "minecraft:fireball", + "fireball": "minecraft:fireball", + "fireworks": "minecraft:fireworks", + "fireworks_charge": "minecraft:fireworkscharge", + "fireworkscharge": "minecraft:fireworkscharge", + "fish": "minecraft:fish", + "fishing_rod": "minecraft:fishing_rod", + "fletching_table": "minecraft:fletching_table", + "flint": "minecraft:flint", + "flint_and_steel": "minecraft:flint_and_steel", + "flint_steel": "minecraft:flint_and_steel", + "flower_pot": "minecraft:flower_pot", + "flower_pot_block": "minecraft:item.flower_pot", + "flowing_lava": "minecraft:flowing_lava", + "flowing_water": "minecraft:flowing_water", + "frame": "minecraft:frame", + "frame_block": "minecraft:item.frame", + "frosted_ice": "minecraft:frosted_ice", + "furnace": "minecraft:furnace", + "ghast_tear": "minecraft:ghast_tear", + "glass": "minecraft:glass", + "glass_bottle": "minecraft:glass_bottle", + "glass_pane": "minecraft:glass_pane", + "glass_panel": "minecraft:glass_pane", + "glistering_melon": "minecraft:speckled_melon", + "glow_stick": "minecraft:glow_stick", + "glowing_obsidian": "minecraft:glowingobsidian", + "glowing_redstone_ore": "minecraft:lit_redstone_ore", + "glowingobsidian": "minecraft:glowingobsidian", + "glowstone": "minecraft:glowstone", + "glowstone_block": "minecraft:glowstone", + "glowstone_dust": "minecraft:glowstone_dust", + "gold_axe": "minecraft:golden_axe", + "gold_block": "minecraft:gold_block", + "gold_boots": "minecraft:golden_boots", + "gold_chestplate": "minecraft:golden_chestplate", + "gold_helmet": "minecraft:golden_helmet", + "gold_hoe": "minecraft:golden_hoe", + "gold_horse_armor": "minecraft:horsearmorgold", + "gold_ingot": "minecraft:gold_ingot", + "gold_leggings": "minecraft:golden_leggings", + "gold_nugget": "minecraft:gold_nugget", + "gold_ore": "minecraft:gold_ore", + "gold_pickaxe": "minecraft:golden_pickaxe", + "gold_pressure_plate": "minecraft:light_weighted_pressure_plate", + "gold_shovel": "minecraft:golden_shovel", + "gold_sword": "minecraft:golden_sword", + "golden_apple": "minecraft:golden_apple", + "golden_axe": "minecraft:golden_axe", + "golden_boots": "minecraft:golden_boots", + "golden_carrot": "minecraft:golden_carrot", + "golden_chestplate": "minecraft:golden_chestplate", + "golden_helmet": "minecraft:golden_helmet", + "golden_hoe": "minecraft:golden_hoe", + "golden_horse_armor": "minecraft:horsearmorgold", + "golden_leggings": "minecraft:golden_leggings", + "golden_nugget": "minecraft:gold_nugget", + "golden_pickaxe": "minecraft:golden_pickaxe", + "golden_rail": "minecraft:golden_rail", + "golden_shovel": "minecraft:golden_shovel", + "golden_sword": "minecraft:golden_sword", + "granite_stairs": "minecraft:granite_stairs", + "grass": "minecraft:grass", + "grass_path": "minecraft:grass_path", + "gravel": "minecraft:gravel", + "gray_glazed_terracotta": "minecraft:gray_glazed_terracotta", + "green_glazed_terracotta": "minecraft:green_glazed_terracotta", + "grindstone": "minecraft:grindstone", + "gunpowder": "minecraft:gunpowder", + "hard_glass": "minecraft:hard_glass", + "hard_glass_pane": "minecraft:hard_glass_pane", + "hard_stained_glass": "minecraft:hard_stained_glass", + "hard_stained_glass_pane": "minecraft:hard_stained_glass_pane", + "hardened_clay": "minecraft:hardened_clay", + "hay_bale": "minecraft:hay_block", + "hay_block": "minecraft:hay_block", + "heart_of_the_sea": "minecraft:heart_of_the_sea", + "heavy_weighted_pressure_plate": "minecraft:heavy_weighted_pressure_plate", + "hopper": "minecraft:hopper", + "hopper_block": "minecraft:item.hopper", + "hopper_minecart": "minecraft:hopper_minecart", + "horse_armor_diamond": "minecraft:horsearmordiamond", + "horse_armor_gold": "minecraft:horsearmorgold", + "horse_armor_iron": "minecraft:horsearmoriron", + "horse_armor_leather": "minecraft:horsearmorleather", + "horsearmordiamond": "minecraft:horsearmordiamond", + "horsearmorgold": "minecraft:horsearmorgold", + "horsearmoriron": "minecraft:horsearmoriron", + "horsearmorleather": "minecraft:horsearmorleather", + "ice": "minecraft:ice", + "ice_bomb": "minecraft:ice_bomb", + "inactive_redstone_lamp": "minecraft:redstone_lamp", + "info_reserved6": "minecraft:reserved6", + "info_update": "minecraft:info_update", + "info_update2": "minecraft:info_update2", + "inverted_daylight_sensor": "minecraft:daylight_detector_inverted", + "invisible_bedrock": "minecraft:invisiblebedrock", + "invisiblebedrock": "minecraft:invisiblebedrock", + "iron_axe": "minecraft:iron_axe", + "iron_bar": "minecraft:iron_bars", + "iron_bars": "minecraft:iron_bars", + "iron_block": "minecraft:iron_block", + "iron_boots": "minecraft:iron_boots", + "iron_chestplate": "minecraft:iron_chestplate", + "iron_door": "minecraft:iron_door", + "iron_door_block": "minecraft:item.iron_door", + "iron_helmet": "minecraft:iron_helmet", + "iron_hoe": "minecraft:iron_hoe", + "iron_horse_armor": "minecraft:horsearmoriron", + "iron_ingot": "minecraft:iron_ingot", + "iron_leggings": "minecraft:iron_leggings", + "iron_nugget": "minecraft:iron_nugget", + "iron_ore": "minecraft:iron_ore", + "iron_pickaxe": "minecraft:iron_pickaxe", + "iron_pressure_plate": "minecraft:heavy_weighted_pressure_plate", + "iron_shovel": "minecraft:iron_shovel", + "iron_sword": "minecraft:iron_sword", + "iron_trapdoor": "minecraft:iron_trapdoor", + "item_frame": "minecraft:frame", + "item_frame_block": "minecraft:item.frame", + "jack_o_lantern": "minecraft:lit_pumpkin", + "jigsaw": "minecraft:jigsaw", + "jukebox": "minecraft:jukebox", + "jungle_button": "minecraft:jungle_button", + "jungle_door": "minecraft:jungle_door", + "jungle_door_block": "minecraft:item.jungle_door", + "jungle_fence_gate": "minecraft:jungle_fence_gate", + "jungle_pressure_plate": "minecraft:jungle_pressure_plate", + "jungle_sign": "minecraft:jungle_sign", + "jungle_stairs": "minecraft:jungle_stairs", + "jungle_standing_sign": "minecraft:jungle_standing_sign", + "jungle_trapdoor": "minecraft:jungle_trapdoor", + "jungle_wall_sign": "minecraft:jungle_wall_sign", + "kelp": "minecraft:kelp", + "kelp_block": "minecraft:item.kelp", + "ladder": "minecraft:ladder", + "lantern": "minecraft:lantern", + "lapis_block": "minecraft:lapis_block", + "lapis_ore": "minecraft:lapis_ore", + "lava": "minecraft:lava", + "lava_cauldron": "minecraft:lava_cauldron", + "lead": "minecraft:lead", + "leash": "minecraft:lead", + "leather": "minecraft:leather", + "leather_boots": "minecraft:leather_boots", + "leather_cap": "minecraft:leather_helmet", + "leather_chestplate": "minecraft:leather_chestplate", + "leather_helmet": "minecraft:leather_helmet", + "leather_horse_armor": "minecraft:horsearmorleather", + "leather_leggings": "minecraft:leather_leggings", + "leather_pants": "minecraft:leather_leggings", + "leather_tunic": "minecraft:leather_chestplate", + "leave": "minecraft:leaves", + "leave2": "minecraft:leaves2", + "leaves": "minecraft:leaves", + "leaves2": "minecraft:leaves2", + "lectern": "minecraft:lectern", + "lever": "minecraft:lever", + "light_blue_glazed_terracotta": "minecraft:light_blue_glazed_terracotta", + "light_weighted_pressure_plate": "minecraft:light_weighted_pressure_plate", + "lily_pad": "minecraft:waterlily", + "lime_glazed_terracotta": "minecraft:lime_glazed_terracotta", + "lingering_potion": "minecraft:lingering_potion", + "lit_blast_furnace": "minecraft:lit_blast_furnace", + "lit_furnace": "minecraft:lit_furnace", + "lit_pumpkin": "minecraft:lit_pumpkin", + "lit_redstone_lamp": "minecraft:lit_redstone_lamp", + "lit_redstone_ore": "minecraft:lit_redstone_ore", + "lit_redstone_torch": "minecraft:redstone_torch", + "lit_smoker": "minecraft:lit_smoker", + "log": "minecraft:log", + "log2": "minecraft:log2", + "loom": "minecraft:loom", + "magenta_glazed_terracotta": "minecraft:magenta_glazed_terracotta", + "magma": "minecraft:magma", + "magma_cream": "minecraft:magma_cream", + "map": "minecraft:emptymap", + "medicine": "minecraft:medicine", + "melon": "minecraft:melon", + "melon_block": "minecraft:melon_block", + "melon_seeds": "minecraft:melon_seeds", + "melon_slice": "minecraft:melon", + "melon_stem": "minecraft:melon_stem", + "minecart": "minecraft:minecart", + "minecart_with_chest": "minecraft:chest_minecart", + "minecart_with_command_block": "minecraft:command_block_minecart", + "minecart_with_hopper": "minecraft:hopper_minecart", + "minecart_with_tnt": "minecraft:tnt_minecart", + "mob_head": "minecraft:skull", + "mob_head_block": "minecraft:item.skull", + "mob_spawner": "minecraft:mob_spawner", + "monster_egg": "minecraft:monster_egg", + "monster_egg_block": "minecraft:monster_egg", + "monster_spawner": "minecraft:mob_spawner", + "moss_stone": "minecraft:mossy_cobblestone", + "mossy_cobblestone": "minecraft:mossy_cobblestone", + "mossy_cobblestone_stairs": "minecraft:mossy_cobblestone_stairs", + "mossy_stone": "minecraft:mossy_cobblestone", + "mossy_stone_brick_stairs": "minecraft:mossy_stone_brick_stairs", + "moving_block": "minecraft:movingblock", + "movingblock": "minecraft:movingblock", + "mushroom_stew": "minecraft:mushroom_stew", + "mutton": "minecraft:muttonraw", + "mutton_cooked": "minecraft:muttoncooked", + "mutton_raw": "minecraft:muttonraw", + "muttoncooked": "minecraft:muttoncooked", + "muttonraw": "minecraft:muttonraw", + "mycelium": "minecraft:mycelium", + "name_tag": "minecraft:name_tag", + "nametag": "minecraft:name_tag", + "nautilus_shell": "minecraft:nautilus_shell", + "nether_brick": "minecraft:netherbrick", + "nether_brick_block": "minecraft:nether_brick", + "nether_brick_fence": "minecraft:nether_brick_fence", + "nether_brick_stairs": "minecraft:nether_brick_stairs", + "nether_bricks": "minecraft:nether_brick", + "nether_bricks_stairs": "minecraft:nether_brick_stairs", + "nether_quartz": "minecraft:quartz", + "nether_quartz_ore": "minecraft:quartz_ore", + "nether_reactor": "minecraft:netherreactor", + "nether_star": "minecraft:netherstar", + "nether_wart": "minecraft:nether_wart", + "nether_wart_block": "minecraft:nether_wart_block", + "nether_wart_plant": "minecraft:item.nether_wart", + "netherbrick": "minecraft:netherbrick", + "netherrack": "minecraft:netherrack", + "netherreactor": "minecraft:netherreactor", + "netherstar": "minecraft:netherstar", + "normal_stone_stairs": "minecraft:normal_stone_stairs", + "note_block": "minecraft:noteblock", + "noteblock": "minecraft:noteblock", + "oak_door": "minecraft:wooden_door", + "oak_door_block": "minecraft:item.wooden_door", + "oak_fence_gate": "minecraft:fence_gate", + "oak_stairs": "minecraft:oak_stairs", + "oak_wood_stairs": "minecraft:oak_stairs", + "oak_wooden_stairs": "minecraft:oak_stairs", + "observer": "minecraft:observer", + "obsidian": "minecraft:obsidian", + "orange_glazed_terracotta": "minecraft:orange_glazed_terracotta", + "packed_ice": "minecraft:packed_ice", + "painting": "minecraft:painting", + "paper": "minecraft:paper", + "phantom_membrane": "minecraft:phantom_membrane", + "pink_glazed_terracotta": "minecraft:pink_glazed_terracotta", + "piston": "minecraft:piston", + "piston_arm_collision": "minecraft:pistonarmcollision", + "piston_head": "minecraft:pistonarmcollision", + "pistonarmcollision": "minecraft:pistonarmcollision", + "plank": "minecraft:planks", + "planks": "minecraft:planks", + "podzol": "minecraft:podzol", + "poisonous_potato": "minecraft:poisonous_potato", + "polished_andesite_stairs": "minecraft:polished_andesite_stairs", + "polished_diorite_stairs": "minecraft:polished_diorite_stairs", + "polished_granite_stairs": "minecraft:polished_granite_stairs", + "poppy": "minecraft:red_flower", + "porkchop": "minecraft:porkchop", + "portal": "minecraft:portal", + "portal_block": "minecraft:portal", + "potato": "minecraft:potato", + "potato_block": "minecraft:potatoes", + "potatoes": "minecraft:potatoes", + "potion": "minecraft:potion", + "powered_comparator": "minecraft:powered_comparator", + "powered_comparator_block": "minecraft:powered_comparator", + "powered_rail": "minecraft:golden_rail", + "powered_repeater": "minecraft:powered_repeater", + "powered_repeater_block": "minecraft:powered_repeater", + "prismarine": "minecraft:prismarine", + "prismarine_bricks_stairs": "minecraft:prismarine_bricks_stairs", + "prismarine_crystals": "minecraft:prismarine_crystals", + "prismarine_shard": "minecraft:prismarine_shard", + "prismarine_stairs": "minecraft:prismarine_stairs", + "puffer_fish": "minecraft:pufferfish", + "pufferfish": "minecraft:pufferfish", + "pumpkin": "minecraft:pumpkin", + "pumpkin_pie": "minecraft:pumpkin_pie", + "pumpkin_seeds": "minecraft:pumpkin_seeds", + "pumpkin_stem": "minecraft:pumpkin_stem", + "purple_glazed_terracotta": "minecraft:purple_glazed_terracotta", + "purpur_block": "minecraft:purpur_block", + "purpur_stairs": "minecraft:purpur_stairs", + "quartz": "minecraft:quartz", + "quartz_block": "minecraft:quartz_block", + "quartz_ore": "minecraft:quartz_ore", + "quartz_stairs": "minecraft:quartz_stairs", + "rabbit": "minecraft:rabbit", + "rabbit_foot": "minecraft:rabbit_foot", + "rabbit_hide": "minecraft:rabbit_hide", + "rabbit_stew": "minecraft:rabbit_stew", + "rail": "minecraft:rail", + "rapid_fertilizer": "minecraft:rapid_fertilizer", + "raw_beef": "minecraft:beef", + "raw_chicken": "minecraft:chicken", + "raw_fish": "minecraft:fish", + "raw_mutton": "minecraft:muttonraw", + "raw_porkchop": "minecraft:porkchop", + "raw_rabbit": "minecraft:rabbit", + "raw_salmon": "minecraft:salmon", + "record_11": "minecraft:record_11", + "record_13": "minecraft:record_13", + "record_blocks": "minecraft:record_blocks", + "record_cat": "minecraft:record_cat", + "record_chirp": "minecraft:record_chirp", + "record_far": "minecraft:record_far", + "record_mall": "minecraft:record_mall", + "record_mellohi": "minecraft:record_mellohi", + "record_stal": "minecraft:record_stal", + "record_strad": "minecraft:record_strad", + "record_wait": "minecraft:record_wait", + "record_ward": "minecraft:record_ward", + "red_flower": "minecraft:red_flower", + "red_glazed_terracotta": "minecraft:red_glazed_terracotta", + "red_mushroom": "minecraft:red_mushroom", + "red_mushroom_block": "minecraft:red_mushroom_block", + "red_nether_brick": "minecraft:red_nether_brick", + "red_nether_brick_stairs": "minecraft:red_nether_brick_stairs", + "red_sandstone": "minecraft:red_sandstone", + "red_sandstone_slab": "minecraft:double_stone_slab2", + "red_sandstone_stairs": "minecraft:red_sandstone_stairs", + "redstone": "minecraft:redstone", + "redstone_block": "minecraft:redstone_block", + "redstone_dust": "minecraft:redstone", + "redstone_lamp": "minecraft:redstone_lamp", + "redstone_ore": "minecraft:redstone_ore", + "redstone_torch": "minecraft:redstone_torch", + "redstone_wire": "minecraft:redstone_wire", + "reeds": "minecraft:reeds", + "reeds_block": "minecraft:item.reeds", + "repeater": "minecraft:repeater", + "repeater_block": "minecraft:unpowered_repeater", + "repeating_command_block": "minecraft:repeating_command_block", + "reserved6": "minecraft:reserved6", + "rose": "minecraft:red_flower", + "rotten_flesh": "minecraft:rotten_flesh", + "saddle": "minecraft:saddle", + "salmon": "minecraft:salmon", + "sand": "minecraft:sand", + "sandstone": "minecraft:sandstone", + "sandstone_stairs": "minecraft:sandstone_stairs", + "sapling": "minecraft:sapling", + "scaffolding": "minecraft:scaffolding", + "sea_lantern": "minecraft:sealantern", + "sea_pickle": "minecraft:sea_pickle", + "seagrass": "minecraft:seagrass", + "sealantern": "minecraft:sealantern", + "seeds": "minecraft:wheat_seeds", + "shears": "minecraft:shears", + "shield": "minecraft:shield", + "shulker_box": "minecraft:shulker_box", + "shulker_shell": "minecraft:shulker_shell", + "sign": "minecraft:sign", + "sign_post": "minecraft:standing_sign", + "silver_glazed_terracotta": "minecraft:silver_glazed_terracotta", + "skull": "minecraft:skull", + "skull_block": "minecraft:item.skull", + "slab": "minecraft:double_stone_slab", + "slabs": "minecraft:double_stone_slab", + "slime": "minecraft:slime", + "slime_ball": "minecraft:slime_ball", + "slime_block": "minecraft:slime", + "slimeball": "minecraft:slime_ball", + "smithing_table": "minecraft:smithing_table", + "smoker": "minecraft:smoker", + "smooth_quartz_stairs": "minecraft:smooth_quartz_stairs", + "smooth_red_sandstone_stairs": "minecraft:smooth_red_sandstone_stairs", + "smooth_sandstone_stairs": "minecraft:smooth_sandstone_stairs", + "smooth_stone": "minecraft:smooth_stone", + "snow": "minecraft:snow", + "snow_block": "minecraft:snow", + "snow_layer": "minecraft:snow_layer", + "snowball": "minecraft:snowball", + "soul_sand": "minecraft:soul_sand", + "sparkler": "minecraft:sparkler", + "spawn_egg": "minecraft:spawn_egg", + "speckled_melon": "minecraft:speckled_melon", + "spider_eye": "minecraft:spider_eye", + "splash_potion": "minecraft:splash_potion", + "sponge": "minecraft:sponge", + "spruce_button": "minecraft:spruce_button", + "spruce_door": "minecraft:spruce_door", + "spruce_door_block": "minecraft:item.spruce_door", + "spruce_fence_gate": "minecraft:spruce_fence_gate", + "spruce_pressure_plate": "minecraft:spruce_pressure_plate", + "spruce_sign": "minecraft:spruce_sign", + "spruce_stairs": "minecraft:spruce_stairs", + "spruce_standing_sign": "minecraft:spruce_standing_sign", + "spruce_trapdoor": "minecraft:spruce_trapdoor", + "spruce_wall_sign": "minecraft:spruce_wall_sign", + "spruce_wood_stairs": "minecraft:spruce_stairs", + "spruce_wooden_stairs": "minecraft:spruce_stairs", + "stained_clay": "minecraft:stained_hardened_clay", + "stained_glass": "minecraft:stained_glass", + "stained_glass_pane": "minecraft:stained_glass_pane", + "stained_hardened_clay": "minecraft:stained_hardened_clay", + "standing_banner": "minecraft:standing_banner", + "standing_sign": "minecraft:standing_sign", + "steak": "minecraft:cooked_beef", + "stick": "minecraft:stick", + "sticks": "minecraft:stick", + "sticky_piston": "minecraft:sticky_piston", + "still_lava": "minecraft:lava", + "still_water": "minecraft:water", + "stone": "minecraft:stone", + "stone_axe": "minecraft:stone_axe", + "stone_brick": "minecraft:stonebrick", + "stone_brick_stairs": "minecraft:stone_brick_stairs", + "stone_bricks": "minecraft:stonebrick", + "stone_button": "minecraft:stone_button", + "stone_hoe": "minecraft:stone_hoe", + "stone_pickaxe": "minecraft:stone_pickaxe", + "stone_pressure_plate": "minecraft:stone_pressure_plate", + "stone_shovel": "minecraft:stone_shovel", + "stone_slab": "minecraft:double_stone_slab", + "stone_slab2": "minecraft:double_stone_slab2", + "stone_slab3": "minecraft:double_stone_slab3", + "stone_slab4": "minecraft:double_stone_slab4", + "stone_stairs": "minecraft:stone_stairs", + "stone_sword": "minecraft:stone_sword", + "stone_wall": "minecraft:cobblestone_wall", + "stonebrick": "minecraft:stonebrick", + "stonecutter": "minecraft:stonecutter", + "stonecutter_block": "minecraft:stonecutter_block", + "string": "minecraft:string", + "stripped_acacia_log": "minecraft:stripped_acacia_log", + "stripped_birch_log": "minecraft:stripped_birch_log", + "stripped_dark_oak_log": "minecraft:stripped_dark_oak_log", + "stripped_jungle_log": "minecraft:stripped_jungle_log", + "stripped_oak_log": "minecraft:stripped_oak_log", + "stripped_spruce_log": "minecraft:stripped_spruce_log", + "structure_block": "minecraft:structure_block", + "sugar": "minecraft:sugar", + "sugar_cane": "minecraft:reeds", + "sugar_canes": "minecraft:reeds", + "sugarcane": "minecraft:reeds", + "sugarcane_block": "minecraft:item.reeds", + "sweet_berries": "minecraft:sweet_berries", + "sweet_berry_bush": "minecraft:sweet_berry_bush", + "tall_grass": "minecraft:tallgrass", + "tallgrass": "minecraft:tallgrass", + "terracotta": "minecraft:stained_hardened_clay", + "tnt": "minecraft:tnt", + "tnt_minecart": "minecraft:tnt_minecart", + "torch": "minecraft:torch", + "totem": "minecraft:totem", + "trapdoor": "minecraft:trapdoor", + "trapped_chest": "minecraft:trapped_chest", + "trident": "minecraft:trident", + "trip_wire": "minecraft:tripwire", + "tripwire": "minecraft:tripwire", + "tripwire_hook": "minecraft:tripwire_hook", + "trunk": "minecraft:planks", + "trunk2": "minecraft:log2", + "turtle_egg": "minecraft:turtle_egg", + "turtle_helmet": "minecraft:turtle_helmet", + "turtle_shell_piece": "minecraft:turtle_shell_piece", + "underwater_torch": "minecraft:underwater_torch", + "undyed_shulker_box": "minecraft:undyed_shulker_box", + "unlit_redstone_torch": "minecraft:unlit_redstone_torch", + "unpowered_comparator": "minecraft:unpowered_comparator", + "unpowered_comparator_block": "minecraft:unpowered_comparator", + "unpowered_repeater": "minecraft:unpowered_repeater", + "unpowered_repeater_block": "minecraft:unpowered_repeater", + "update_block": "minecraft:info_update", + "vine": "minecraft:vine", + "vines": "minecraft:vine", + "wall_banner": "minecraft:wall_banner", + "wall_sign": "minecraft:wall_sign", + "water": "minecraft:water", + "water_lily": "minecraft:waterlily", + "waterlily": "minecraft:waterlily", + "web": "minecraft:web", + "weighted_pressure_plate_heavy": "minecraft:heavy_weighted_pressure_plate", + "weighted_pressure_plate_light": "minecraft:light_weighted_pressure_plate", + "wheat": "minecraft:wheat", + "wheat_block": "minecraft:item.wheat", + "wheat_seeds": "minecraft:wheat_seeds", + "white_glazed_terracotta": "minecraft:white_glazed_terracotta", + "wood": "minecraft:log", + "wood2": "minecraft:log2", + "wood_door_block": "minecraft:item.wooden_door", + "wood_slab": "minecraft:wooden_slab", + "wood_slabs": "minecraft:wooden_slab", + "wood_stairs": "minecraft:oak_stairs", + "wooden_axe": "minecraft:wooden_axe", + "wooden_button": "minecraft:wooden_button", + "wooden_door": "minecraft:wooden_door", + "wooden_door_block": "minecraft:item.wooden_door", + "wooden_hoe": "minecraft:wooden_hoe", + "wooden_pickaxe": "minecraft:wooden_pickaxe", + "wooden_plank": "minecraft:planks", + "wooden_planks": "minecraft:planks", + "wooden_pressure_plate": "minecraft:wooden_pressure_plate", + "wooden_shovel": "minecraft:wooden_shovel", + "wooden_slab": "minecraft:wooden_slab", + "wooden_slabs": "minecraft:wooden_slab", + "wooden_stairs": "minecraft:oak_stairs", + "wooden_sword": "minecraft:wooden_sword", + "wooden_trapdoor": "minecraft:trapdoor", + "wool": "minecraft:wool", + "workbench": "minecraft:crafting_table", + "writable_book": "minecraft:writable_book", + "written_book": "minecraft:written_book", + "yellow_flower": "minecraft:yellow_flower", + "yellow_glazed_terracotta": "minecraft:yellow_glazed_terracotta" } diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index c9ea226fd..a06edad10 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -67,7 +67,7 @@ final class LegacyStringToItemParser{ if(!is_array($mappings)) throw new AssumptionFailedError("Invalid mappings format, expected array"); foreach($mappings as $name => $id){ - if(!is_int($id)) throw new AssumptionFailedError("Invalid mappings format, expected int values"); + if(!is_string($id)) throw new AssumptionFailedError("Invalid mappings format, expected string values"); $result->addMapping((string) $name, $id); } @@ -75,8 +75,8 @@ final class LegacyStringToItemParser{ } /** - * @var int[] - * @phpstan-var array + * @var string[] + * @phpstan-var array */ private array $map = []; @@ -85,13 +85,13 @@ final class LegacyStringToItemParser{ private ItemDeserializer $itemDeserializer ){} - public function addMapping(string $alias, int $id) : void{ + public function addMapping(string $alias, string $id) : void{ $this->map[$alias] = $id; } /** - * @return int[] - * @phpstan-return array + * @return string[] + * @phpstan-return array */ public function getMappings() : array{ return $this->map; @@ -123,11 +123,7 @@ final class LegacyStringToItemParser{ if($legacyId === null){ throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); } - try{ - $itemData = $this->itemDataUpgrader->upgradeItemTypeDataInt($legacyId, $meta, 1, null); - }catch(SavedDataLoadingException){ - throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); - } + $itemData = $this->itemDataUpgrader->upgradeItemTypeDataString($legacyId, $meta, 1, null); try{ return $this->itemDeserializer->deserializeStack($itemData); From 83c46a4b5413e8f055138ac5d3a4710c608ad8da Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 15:26:56 +0100 Subject: [PATCH 192/692] LegacyStringToItemParser: remove bogus test this test is obsolete since ea3d5ac5630f57b9cec46771001ab83bb0ddec25, since durable items no longer use meta to represent damage. --- tests/phpunit/item/LegacyStringToItemParserTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/phpunit/item/LegacyStringToItemParserTest.php b/tests/phpunit/item/LegacyStringToItemParserTest.php index ef5127fec..50d73a438 100644 --- a/tests/phpunit/item/LegacyStringToItemParserTest.php +++ b/tests/phpunit/item/LegacyStringToItemParserTest.php @@ -38,8 +38,7 @@ class LegacyStringToItemParserTest extends TestCase{ ["351:4", ItemIds::DYE, 4], ["stone:3", ItemIds::STONE, 3], ["minecraft:string", ItemIds::STRING, 0], - ["diamond_pickaxe", ItemIds::DIAMOND_PICKAXE, 0], - ["diamond_pickaxe:5", ItemIds::DIAMOND_PICKAXE, 5] + ["diamond_pickaxe", ItemIds::DIAMOND_PICKAXE, 0] ]; } From 8831dff61b883d3cc242f16a349da39fe9da9421 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 16:09:55 +0100 Subject: [PATCH 193/692] Leaves: remove ItemFactory dependency this is ugly, but it should only be temporary while we liberate the core from legacy nastiness. Once the liberation is complete, we'll be able to do a lot of cool stuff like making wood types dynamic. --- src/block/Leaves.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 77d557f59..e55ddcdc4 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -29,12 +29,11 @@ use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; use pocketmine\event\block\LeavesDecayEvent; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; -use pocketmine\item\ItemIds; use pocketmine\item\VanillaItems; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; +use pocketmine\utils\AssumptionFailedError; use pocketmine\world\BlockTransaction; use pocketmine\world\World; use function mt_rand; @@ -144,7 +143,15 @@ class Leaves extends Transparent{ $drops = []; if(mt_rand(1, 20) === 1){ //Saplings - $drops[] = ItemFactory::getInstance()->get(ItemIds::SAPLING, $this->treeType->getMagicNumber()); + $drops[] = match($this->treeType){ + TreeType::ACACIA() => VanillaBlocks::ACACIA_SAPLING(), + TreeType::BIRCH() => VanillaBlocks::BIRCH_SAPLING(), + TreeType::DARK_OAK() => VanillaBlocks::DARK_OAK_SAPLING(), + TreeType::JUNGLE() => VanillaBlocks::JUNGLE_SAPLING(), + TreeType::OAK() => VanillaBlocks::OAK_SAPLING(), + TreeType::SPRUCE() => VanillaBlocks::SPRUCE_SAPLING(), + default => throw new AssumptionFailedError("Unreachable") + }; } if(($this->treeType->equals(TreeType::OAK()) || $this->treeType->equals(TreeType::DARK_OAK())) && mt_rand(1, 200) === 1){ //Apples $drops[] = VanillaItems::APPLE(); From 5e4e5147d90a249317be0355b5bd09c9efddc6bb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 16:11:15 +0100 Subject: [PATCH 194/692] Remove ItemFactory involvement from brewing this involves a very nasty hack for potion container change, but for the time being it can't be helped. --- src/crafting/CraftingManager.php | 50 +++++++++++++----- .../CraftingManagerFromDataHelper.php | 16 ++++-- src/crafting/PotionContainerChangeRecipe.php | 22 +++++--- src/network/mcpe/cache/CraftingDataCache.php | 51 +++++++++---------- 4 files changed, 86 insertions(+), 53 deletions(-) diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index f23ba53ac..516cf385b 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -29,6 +29,7 @@ use pocketmine\nbt\TreeRoot; use pocketmine\utils\BinaryStream; use pocketmine\utils\DestructorCallbackTrait; use pocketmine\utils\ObjectSet; +use function morton2d_encode; use function usort; class CraftingManager{ @@ -47,16 +48,22 @@ class CraftingManager{ /** * @var PotionTypeRecipe[][] - * @phpstan-var array> + * @phpstan-var list */ protected array $potionTypeRecipes = []; /** - * @var PotionContainerChangeRecipe[][] - * @phpstan-var array> + * @var PotionContainerChangeRecipe[] + * @phpstan-var list */ protected array $potionContainerChangeRecipes = []; + /** + * @var BrewingRecipe[][] + * @phpstan-var array> + */ + private array $brewingRecipeCache = []; + /** @phpstan-var ObjectSet<\Closure() : void> */ private ObjectSet $recipeRegisteredCallbacks; @@ -150,16 +157,16 @@ class CraftingManager{ } /** - * @return PotionTypeRecipe[][] - * @phpstan-return array> + * @return PotionTypeRecipe[] + * @phpstan-return list */ public function getPotionTypeRecipes() : array{ return $this->potionTypeRecipes; } /** - * @return PotionContainerChangeRecipe[][] - * @phpstan-return array> + * @return PotionContainerChangeRecipe[] + * @phpstan-return list */ public function getPotionContainerChangeRecipes() : array{ return $this->potionContainerChangeRecipes; @@ -182,9 +189,7 @@ class CraftingManager{ } public function registerPotionTypeRecipe(PotionTypeRecipe $recipe) : void{ - $input = $recipe->getInput(); - $ingredient = $recipe->getIngredient(); - $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":" . $ingredient->getMeta()] = $recipe; + $this->potionTypeRecipes[] = $recipe; foreach($this->recipeRegisteredCallbacks as $callback){ $callback(); @@ -192,8 +197,7 @@ class CraftingManager{ } public function registerPotionContainerChangeRecipe(PotionContainerChangeRecipe $recipe) : void{ - $ingredient = $recipe->getIngredient(); - $this->potionContainerChangeRecipes[$recipe->getInputItemId()][$ingredient->getId() . ":" . $ingredient->getMeta()] = $recipe; + $this->potionContainerChangeRecipes[] = $recipe; foreach($this->recipeRegisteredCallbacks as $callback){ $callback(); @@ -252,7 +256,25 @@ class CraftingManager{ } public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ - return $this->potionTypeRecipes[$input->getId() . ":" . $input->getMeta()][$ingredient->getId() . ":" . $ingredient->getMeta()] ?? - $this->potionContainerChangeRecipes[$input->getId()][$ingredient->getId() . ":" . $ingredient->getMeta()] ?? null; + $inputHash = morton2d_encode($input->getId(), $input->getMeta()); + $ingredientHash = morton2d_encode($ingredient->getId(), $ingredient->getMeta()); + $recipe = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; + if($recipe !== null){ + return $recipe; + } + + foreach($this->potionContainerChangeRecipes as $recipe){ + if($recipe->getIngredient()->equals($ingredient) && $recipe->getResultFor($input) !== null){ + return $this->brewingRecipeCache[$inputHash][$ingredientHash] = $recipe; + } + } + + foreach($this->potionTypeRecipes as $recipe){ + if($recipe->getIngredient()->equals($ingredient) && $recipe->getResultFor($input) !== null){ + return $this->brewingRecipeCache[$inputHash][$ingredientHash] = $recipe; + } + } + + return null; } } diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index d4bb14b3d..455e0315e 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\crafting; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; +use pocketmine\data\bedrock\item\upgrade\LegacyItemIdToStringIdMap; use pocketmine\data\SavedDataLoadingException; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalItemDataHandlers; @@ -172,17 +172,23 @@ final class CraftingManagerFromDataHelper{ } foreach($recipes["potion_container_change"] as $recipe){ try{ - $input = ItemFactory::getInstance()->get($recipe["input_item_id"]); $ingredient = Item::jsonDeserialize($recipe["ingredient"]); - $output = ItemFactory::getInstance()->get($recipe["output_item_id"]); }catch(SavedDataLoadingException){ //unknown item continue; } + + //TODO: we'll be able to get rid of these conversions once the crafting data is updated + $inputId = LegacyItemIdToStringIdMap::getInstance()->legacyToString($recipe["input_item_id"]); + $outputId = LegacyItemIdToStringIdMap::getInstance()->legacyToString($recipe["output_item_id"]); + if($inputId === null || $outputId === null){ + //unknown item + continue; + } $result->registerPotionContainerChangeRecipe(new PotionContainerChangeRecipe( - $input->getId(), + $inputId, $ingredient, - $output->getId() + $outputId )); } diff --git a/src/crafting/PotionContainerChangeRecipe.php b/src/crafting/PotionContainerChangeRecipe.php index da24050cb..d358c28e2 100644 --- a/src/crafting/PotionContainerChangeRecipe.php +++ b/src/crafting/PotionContainerChangeRecipe.php @@ -23,20 +23,21 @@ declare(strict_types=1); namespace pocketmine\crafting; +use pocketmine\data\bedrock\item\SavedItemData; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; +use pocketmine\world\format\io\GlobalItemDataHandlers; class PotionContainerChangeRecipe implements BrewingRecipe{ public function __construct( - private int $inputItemId, + private string $inputItemId, private Item $ingredient, - private int $outputItemId + private string $outputItemId ){ $this->ingredient = clone $ingredient; } - public function getInputItemId() : int{ + public function getInputItemId() : string{ return $this->inputItemId; } @@ -44,11 +45,20 @@ class PotionContainerChangeRecipe implements BrewingRecipe{ return clone $this->ingredient; } - public function getOutputItemId() : int{ + public function getOutputItemId() : string{ return $this->outputItemId; } public function getResultFor(Item $input) : ?Item{ - return $input->getId() === $this->getInputItemId() ? ItemFactory::getInstance()->get($this->getOutputItemId(), $input->getMeta()) : null; + //TODO: this is a really awful hack, but there isn't another way for now + //this relies on transforming the serialized item's ID, relying on the target item type's data being the same as the input. + //This is the same assumption previously made using ItemFactory::get(), except it was less obvious how bad it was. + //The other way is to bake the actual Potion class types into here, which isn't great for data-driving stuff. + //We need a better solution for this. + + $data = GlobalItemDataHandlers::getSerializer()->serializeType($input); + return $data->getName() === $this->getInputItemId() ? + GlobalItemDataHandlers::getDeserializer()->deserializeType(new SavedItemData($this->getOutputItemId(), $data->getMeta(), $data->getBlock(), $data->getTag())) : + null; } } diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 8c1cd532d..6d86b8555 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -28,8 +28,7 @@ use pocketmine\crafting\FurnaceType; use pocketmine\crafting\RecipeIngredient; use pocketmine\crafting\ShapelessRecipeType; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\CraftingDataPacket; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; @@ -149,35 +148,31 @@ final class CraftingDataCache{ } $potionTypeRecipes = []; - foreach($manager->getPotionTypeRecipes() as $recipes){ - foreach($recipes as $recipe){ - $input = $converter->coreItemStackToNet($recipe->getInput()); - $ingredient = $converter->coreItemStackToNet($recipe->getIngredient()); - $output = $converter->coreItemStackToNet($recipe->getOutput()); - $potionTypeRecipes[] = new ProtocolPotionTypeRecipe( - $input->getId(), - $input->getMeta(), - $ingredient->getId(), - $ingredient->getMeta(), - $output->getId(), - $output->getMeta() - ); - } + foreach($manager->getPotionTypeRecipes() as $recipe){ + $input = $converter->coreItemStackToNet($recipe->getInput()); + $ingredient = $converter->coreItemStackToNet($recipe->getIngredient()); + $output = $converter->coreItemStackToNet($recipe->getOutput()); + $potionTypeRecipes[] = new ProtocolPotionTypeRecipe( + $input->getId(), + $input->getMeta(), + $ingredient->getId(), + $ingredient->getMeta(), + $output->getId(), + $output->getMeta() + ); } $potionContainerChangeRecipes = []; - $itemTranslator = ItemTranslator::getInstance(); - foreach($manager->getPotionContainerChangeRecipes() as $recipes){ - foreach($recipes as $recipe){ - $input = $itemTranslator->toNetworkId(ItemFactory::getInstance()->get($recipe->getInputItemId(), 0)); - $ingredient = $itemTranslator->toNetworkId($recipe->getIngredient()); - $output = $itemTranslator->toNetworkId(ItemFactory::getInstance()->get($recipe->getOutputItemId(), 0)); - $potionContainerChangeRecipes[] = new ProtocolPotionContainerChangeRecipe( - $input[0], - $ingredient[0], - $output[0] - ); - } + $itemTypeDictionary = GlobalItemTypeDictionary::getInstance()->getDictionary(); + foreach($manager->getPotionContainerChangeRecipes() as $recipe){ + $input = $itemTypeDictionary->fromStringId($recipe->getInputItemId()); + $ingredient = $converter->coreItemStackToNet($recipe->getIngredient()); + $output = $itemTypeDictionary->fromStringId($recipe->getOutputItemId()); + $potionContainerChangeRecipes[] = new ProtocolPotionContainerChangeRecipe( + $input, + $ingredient->getId(), + $output + ); } Timings::$craftingDataCacheRebuild->stopTiming(); From de917afc6f8eee14103721e9b355b1a66064a484 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 16:11:46 +0100 Subject: [PATCH 195/692] Fix CS --- src/item/LegacyStringToItemParser.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index a06edad10..12c10f874 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -26,7 +26,6 @@ namespace pocketmine\item; use pocketmine\data\bedrock\item\ItemDeserializer; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\data\bedrock\item\upgrade\ItemDataUpgrader; -use pocketmine\data\SavedDataLoadingException; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; @@ -35,8 +34,8 @@ use Webmozart\PathUtil\Path; use function explode; use function file_get_contents; use function is_array; -use function is_int; use function is_numeric; +use function is_string; use function json_decode; use function str_replace; use function strtolower; From 09c1e161e03ecbddb5f3c18d1a0e1119959adc09 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 16:54:57 +0100 Subject: [PATCH 196/692] Fix merge error --- src/world/particle/ItemBreakParticle.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/particle/ItemBreakParticle.php b/src/world/particle/ItemBreakParticle.php index bc0e2d757..ac0c5ac4b 100644 --- a/src/world/particle/ItemBreakParticle.php +++ b/src/world/particle/ItemBreakParticle.php @@ -33,7 +33,7 @@ class ItemBreakParticle implements Particle{ public function __construct(private Item $item){} public function encode(Vector3 $pos) : array{ - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($this->item->getId(), $this->item->getMeta()); + [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($this->item); return [LevelEventPacket::standardParticle(ParticleIds::ITEM_BREAK, ($id << 16) | $meta, $pos)]; } } From ff96f1b93cf9f81a0e9548211743a6281d96971e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 16:58:52 +0100 Subject: [PATCH 197/692] CreativeInventory: do not disable meta comparison for durable items this check no longer applies, and it's usually undesirable to avoid comparing meta in every other case. --- src/inventory/CreativeInventory.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index f3943907c..43a8b9a0e 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\inventory; use pocketmine\data\SavedDataLoadingException; -use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; @@ -72,7 +71,7 @@ final class CreativeInventory{ public function getItemIndex(Item $item) : int{ foreach($this->creative as $i => $d){ - if($item->equals($d, !($item instanceof Durable))){ + if($item->equals($d, true, false)){ return $i; } } From cab56b0479b1959173985bfc9a9a57033610d5ca Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Jun 2022 17:18:44 +0100 Subject: [PATCH 198/692] fix PHPStan --- src/block/Leaves.php | 4 ++-- src/crafting/CraftingManager.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/block/Leaves.php b/src/block/Leaves.php index e55ddcdc4..1283f912a 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -143,7 +143,7 @@ class Leaves extends Transparent{ $drops = []; if(mt_rand(1, 20) === 1){ //Saplings - $drops[] = match($this->treeType){ + $drops[] = (match($this->treeType){ TreeType::ACACIA() => VanillaBlocks::ACACIA_SAPLING(), TreeType::BIRCH() => VanillaBlocks::BIRCH_SAPLING(), TreeType::DARK_OAK() => VanillaBlocks::DARK_OAK_SAPLING(), @@ -151,7 +151,7 @@ class Leaves extends Transparent{ TreeType::OAK() => VanillaBlocks::OAK_SAPLING(), TreeType::SPRUCE() => VanillaBlocks::SPRUCE_SAPLING(), default => throw new AssumptionFailedError("Unreachable") - }; + })->asItem(); } if(($this->treeType->equals(TreeType::OAK()) || $this->treeType->equals(TreeType::DARK_OAK())) && mt_rand(1, 200) === 1){ //Apples $drops[] = VanillaItems::APPLE(); diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index 516cf385b..777776f1f 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -258,9 +258,9 @@ class CraftingManager{ public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ $inputHash = morton2d_encode($input->getId(), $input->getMeta()); $ingredientHash = morton2d_encode($ingredient->getId(), $ingredient->getMeta()); - $recipe = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; - if($recipe !== null){ - return $recipe; + $cached = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; + if($cached !== null){ + return $cached; } foreach($this->potionContainerChangeRecipes as $recipe){ From f8547ad57c8040081a0dac56f00214ba622bec57 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 16:39:50 +0100 Subject: [PATCH 199/692] LegacyStringToItemParserTest: do not rely on the presence of legacy ID and meta in the API --- .../item/LegacyStringToItemParserTest.php | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/phpunit/item/LegacyStringToItemParserTest.php b/tests/phpunit/item/LegacyStringToItemParserTest.php index 50d73a438..04930ff81 100644 --- a/tests/phpunit/item/LegacyStringToItemParserTest.php +++ b/tests/phpunit/item/LegacyStringToItemParserTest.php @@ -24,31 +24,31 @@ declare(strict_types=1); namespace pocketmine\item; use PHPUnit\Framework\TestCase; +use pocketmine\block\VanillaBlocks; class LegacyStringToItemParserTest extends TestCase{ /** * @return mixed[][] - * @phpstan-return list + * @phpstan-return list */ public function itemFromStringProvider() : array{ return [ - ["dye:4", ItemIds::DYE, 4], - ["351", ItemIds::DYE, 0], - ["351:4", ItemIds::DYE, 4], - ["stone:3", ItemIds::STONE, 3], - ["minecraft:string", ItemIds::STRING, 0], - ["diamond_pickaxe", ItemIds::DIAMOND_PICKAXE, 0] + ["dye:4", VanillaItems::LAPIS_LAZULI()], + ["351", VanillaItems::INK_SAC()], + ["351:4", VanillaItems::LAPIS_LAZULI()], + ["stone:3", VanillaBlocks::DIORITE()->asItem()], + ["minecraft:string", VanillaItems::STRING()], + ["diamond_pickaxe", VanillaItems::DIAMOND_PICKAXE()] ]; } /** * @dataProvider itemFromStringProvider */ - public function testFromStringSingle(string $string, int $id, int $meta) : void{ + public function testFromStringSingle(string $string, Item $expected) : void{ $item = LegacyStringToItemParser::getInstance()->parse($string); - self::assertEquals($id, $item->getId()); - self::assertEquals($meta, $item->getMeta()); + self::assertTrue($item->equals($expected)); } } From c22a840d27e632b7eae65060022b05f86e95f0bf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 17:52:07 +0100 Subject: [PATCH 200/692] Update VanillaBlocks: for some reason some stuff was returned using non-default states --- src/block/VanillaBlocks.php | 186 ++++++++++++++++++------------------ 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index f5edfd905..0acd3385e 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -600,15 +600,15 @@ final class VanillaBlocks{ self::register("acacia_fence", $factory->get(Ids::ACACIA_FENCE, 0)); self::register("acacia_fence_gate", $factory->get(Ids::ACACIA_FENCE_GATE, 0)); self::register("acacia_leaves", $factory->get(Ids::ACACIA_LEAVES, 0)); - self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 0)); + self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 2)); self::register("acacia_planks", $factory->get(Ids::ACACIA_PLANKS, 0)); self::register("acacia_pressure_plate", $factory->get(Ids::ACACIA_PRESSURE_PLATE, 0)); self::register("acacia_sapling", $factory->get(Ids::ACACIA_SAPLING, 0)); self::register("acacia_sign", $factory->get(Ids::ACACIA_SIGN, 0)); self::register("acacia_slab", $factory->get(Ids::ACACIA_SLAB, 0)); - self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 3)); - self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 3)); - self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 2)); + self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 0)); + self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 0)); + self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 0)); self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 0)); self::register("activator_rail", $factory->get(Ids::ACTIVATOR_RAIL, 0)); self::register("air", $factory->get(Ids::AIR, 0)); @@ -616,7 +616,7 @@ final class VanillaBlocks{ self::register("allium", $factory->get(Ids::ALLIUM, 0)); self::register("andesite", $factory->get(Ids::ANDESITE, 0)); self::register("andesite_slab", $factory->get(Ids::ANDESITE_SLAB, 0)); - self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 3)); + self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 0)); self::register("andesite_wall", $factory->get(Ids::ANDESITE_WALL, 0)); self::register("anvil", $factory->get(Ids::ANVIL, 0)); self::register("azure_bluet", $factory->get(Ids::AZURE_BLUET, 0)); @@ -635,40 +635,40 @@ final class VanillaBlocks{ self::register("birch_fence", $factory->get(Ids::BIRCH_FENCE, 0)); self::register("birch_fence_gate", $factory->get(Ids::BIRCH_FENCE_GATE, 0)); self::register("birch_leaves", $factory->get(Ids::BIRCH_LEAVES, 0)); - self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 0)); + self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 2)); self::register("birch_planks", $factory->get(Ids::BIRCH_PLANKS, 0)); self::register("birch_pressure_plate", $factory->get(Ids::BIRCH_PRESSURE_PLATE, 0)); self::register("birch_sapling", $factory->get(Ids::BIRCH_SAPLING, 0)); self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN, 0)); self::register("birch_slab", $factory->get(Ids::BIRCH_SLAB, 0)); - self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 3)); - self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 3)); - self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 2)); + self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 0)); + self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); + self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0)); self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0)); - self::register("black_glazed_terracotta", $factory->get(Ids::BLACK_GLAZED_TERRACOTTA, 2)); + self::register("black_glazed_terracotta", $factory->get(Ids::BLACK_GLAZED_TERRACOTTA, 0)); self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0)); - self::register("blue_glazed_terracotta", $factory->get(Ids::BLUE_GLAZED_TERRACOTTA, 2)); + self::register("blue_glazed_terracotta", $factory->get(Ids::BLUE_GLAZED_TERRACOTTA, 0)); self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0)); self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0)); self::register("blue_torch", $factory->get(Ids::BLUE_TORCH, 1)); - self::register("bone_block", $factory->get(Ids::BONE_BLOCK, 0)); + self::register("bone_block", $factory->get(Ids::BONE_BLOCK, 2)); self::register("bookshelf", $factory->get(Ids::BOOKSHELF, 0)); self::register("brewing_stand", $factory->get(Ids::BREWING_STAND, 0)); self::register("brick_slab", $factory->get(Ids::BRICK_SLAB, 0)); - self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 3)); + self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 0)); self::register("brick_wall", $factory->get(Ids::BRICK_WALL, 0)); self::register("bricks", $factory->get(Ids::BRICKS, 0)); - self::register("brown_glazed_terracotta", $factory->get(Ids::BROWN_GLAZED_TERRACOTTA, 2)); + self::register("brown_glazed_terracotta", $factory->get(Ids::BROWN_GLAZED_TERRACOTTA, 0)); self::register("brown_mushroom", $factory->get(Ids::BROWN_MUSHROOM, 0)); - self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 0)); + self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10)); self::register("cactus", $factory->get(Ids::CACTUS, 0)); self::register("cake", $factory->get(Ids::CAKE, 0)); self::register("carpet", $factory->get(Ids::CARPET, 14)); self::register("carrots", $factory->get(Ids::CARROTS, 0)); self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); self::register("chemical_heat", $factory->get(Ids::CHEMICAL_HEAT, 0)); - self::register("chest", $factory->get(Ids::CHEST, 2)); - self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 0)); + self::register("chest", $factory->get(Ids::CHEST, 0)); + self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 2)); self::register("chiseled_red_sandstone", $factory->get(Ids::CHISELED_RED_SANDSTONE, 0)); self::register("chiseled_sandstone", $factory->get(Ids::CHISELED_SANDSTONE, 0)); self::register("chiseled_stone_bricks", $factory->get(Ids::CHISELED_STONE_BRICKS, 0)); @@ -677,7 +677,7 @@ final class VanillaBlocks{ self::register("coal_ore", $factory->get(Ids::COAL_ORE, 0)); self::register("cobblestone", $factory->get(Ids::COBBLESTONE, 0)); self::register("cobblestone_slab", $factory->get(Ids::COBBLESTONE_SLAB, 0)); - self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 3)); + self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 0)); self::register("cobblestone_wall", $factory->get(Ids::COBBLESTONE_WALL, 0)); self::register("cobweb", $factory->get(Ids::COBWEB, 0)); self::register("cocoa_pod", $factory->get(Ids::COCOA_POD, 0)); @@ -694,26 +694,26 @@ final class VanillaBlocks{ self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0)); self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0)); self::register("cut_sandstone_slab", $factory->get(Ids::CUT_SANDSTONE_SLAB, 0)); - self::register("cyan_glazed_terracotta", $factory->get(Ids::CYAN_GLAZED_TERRACOTTA, 2)); + self::register("cyan_glazed_terracotta", $factory->get(Ids::CYAN_GLAZED_TERRACOTTA, 0)); self::register("dandelion", $factory->get(Ids::DANDELION, 0)); self::register("dark_oak_button", $factory->get(Ids::DARK_OAK_BUTTON, 0)); self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR, 0)); self::register("dark_oak_fence", $factory->get(Ids::DARK_OAK_FENCE, 0)); self::register("dark_oak_fence_gate", $factory->get(Ids::DARK_OAK_FENCE_GATE, 0)); self::register("dark_oak_leaves", $factory->get(Ids::DARK_OAK_LEAVES, 0)); - self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 0)); + self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 2)); self::register("dark_oak_planks", $factory->get(Ids::DARK_OAK_PLANKS, 0)); self::register("dark_oak_pressure_plate", $factory->get(Ids::DARK_OAK_PRESSURE_PLATE, 0)); self::register("dark_oak_sapling", $factory->get(Ids::DARK_OAK_SAPLING, 0)); self::register("dark_oak_sign", $factory->get(Ids::DARK_OAK_SIGN, 0)); self::register("dark_oak_slab", $factory->get(Ids::DARK_OAK_SLAB, 0)); - self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 3)); - self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 3)); - self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 2)); + self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 0)); + self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 0)); + self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 0)); self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 0)); self::register("dark_prismarine", $factory->get(Ids::DARK_PRISMARINE, 0)); self::register("dark_prismarine_slab", $factory->get(Ids::DARK_PRISMARINE_SLAB, 0)); - self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 3)); + self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0)); self::register("daylight_sensor", $factory->get(Ids::DAYLIGHT_SENSOR, 0)); self::register("dead_bush", $factory->get(Ids::DEAD_BUSH, 0)); self::register("detector_rail", $factory->get(Ids::DETECTOR_RAIL, 0)); @@ -721,7 +721,7 @@ final class VanillaBlocks{ self::register("diamond_ore", $factory->get(Ids::DIAMOND_ORE, 0)); self::register("diorite", $factory->get(Ids::DIORITE, 0)); self::register("diorite_slab", $factory->get(Ids::DIORITE_SLAB, 0)); - self::register("diorite_stairs", $factory->get(Ids::DIORITE_STAIRS, 3)); + self::register("diorite_stairs", $factory->get(Ids::DIORITE_STAIRS, 0)); self::register("diorite_wall", $factory->get(Ids::DIORITE_WALL, 0)); self::register("dirt", $factory->get(Ids::DIRT, 0)); self::register("double_tallgrass", $factory->get(Ids::DOUBLE_TALLGRASS, 0)); @@ -855,10 +855,10 @@ final class VanillaBlocks{ self::register("end_rod", $factory->get(Ids::END_ROD, 0)); self::register("end_stone", $factory->get(Ids::END_STONE, 0)); self::register("end_stone_brick_slab", $factory->get(Ids::END_STONE_BRICK_SLAB, 0)); - self::register("end_stone_brick_stairs", $factory->get(Ids::END_STONE_BRICK_STAIRS, 3)); + self::register("end_stone_brick_stairs", $factory->get(Ids::END_STONE_BRICK_STAIRS, 0)); self::register("end_stone_brick_wall", $factory->get(Ids::END_STONE_BRICK_WALL, 0)); self::register("end_stone_bricks", $factory->get(Ids::END_STONE_BRICKS, 0)); - self::register("ender_chest", $factory->get(Ids::ENDER_CHEST, 2)); + self::register("ender_chest", $factory->get(Ids::ENDER_CHEST, 0)); self::register("fake_wooden_slab", $factory->get(Ids::FAKE_WOODEN_SLAB, 0)); self::register("farmland", $factory->get(Ids::FARMLAND, 0)); self::register("fern", $factory->get(Ids::FERN, 0)); @@ -875,18 +875,18 @@ final class VanillaBlocks{ self::register("gold_ore", $factory->get(Ids::GOLD_ORE, 0)); self::register("granite", $factory->get(Ids::GRANITE, 0)); self::register("granite_slab", $factory->get(Ids::GRANITE_SLAB, 0)); - self::register("granite_stairs", $factory->get(Ids::GRANITE_STAIRS, 3)); + self::register("granite_stairs", $factory->get(Ids::GRANITE_STAIRS, 0)); self::register("granite_wall", $factory->get(Ids::GRANITE_WALL, 0)); self::register("grass", $factory->get(Ids::GRASS, 0)); self::register("grass_path", $factory->get(Ids::GRASS_PATH, 0)); self::register("gravel", $factory->get(Ids::GRAVEL, 0)); - self::register("gray_glazed_terracotta", $factory->get(Ids::GRAY_GLAZED_TERRACOTTA, 2)); - self::register("green_glazed_terracotta", $factory->get(Ids::GREEN_GLAZED_TERRACOTTA, 2)); + self::register("gray_glazed_terracotta", $factory->get(Ids::GRAY_GLAZED_TERRACOTTA, 0)); + self::register("green_glazed_terracotta", $factory->get(Ids::GREEN_GLAZED_TERRACOTTA, 0)); self::register("green_torch", $factory->get(Ids::GREEN_TORCH, 1)); self::register("hardened_clay", $factory->get(Ids::HARDENED_CLAY, 0)); self::register("hardened_glass", $factory->get(Ids::HARDENED_GLASS, 0)); self::register("hardened_glass_pane", $factory->get(Ids::HARDENED_GLASS_PANE, 0)); - self::register("hay_bale", $factory->get(Ids::HAY_BALE, 0)); + self::register("hay_bale", $factory->get(Ids::HAY_BALE, 2)); self::register("hopper", $factory->get(Ids::HOPPER, 0)); self::register("ice", $factory->get(Ids::ICE, 0)); self::register("infested_chiseled_stone_brick", $factory->get(Ids::INFESTED_CHISELED_STONE_BRICK, 0)); @@ -902,43 +902,43 @@ final class VanillaBlocks{ self::register("iron_bars", $factory->get(Ids::IRON_BARS, 0)); self::register("iron_door", $factory->get(Ids::IRON_DOOR, 0)); self::register("iron_ore", $factory->get(Ids::IRON_ORE, 0)); - self::register("iron_trapdoor", $factory->get(Ids::IRON_TRAPDOOR, 3)); - self::register("item_frame", $factory->get(Ids::ITEM_FRAME, 3)); + self::register("iron_trapdoor", $factory->get(Ids::IRON_TRAPDOOR, 0)); + self::register("item_frame", $factory->get(Ids::ITEM_FRAME, 0)); self::register("jukebox", $factory->get(Ids::JUKEBOX, 0)); self::register("jungle_button", $factory->get(Ids::JUNGLE_BUTTON, 0)); self::register("jungle_door", $factory->get(Ids::JUNGLE_DOOR, 0)); self::register("jungle_fence", $factory->get(Ids::JUNGLE_FENCE, 0)); self::register("jungle_fence_gate", $factory->get(Ids::JUNGLE_FENCE_GATE, 0)); self::register("jungle_leaves", $factory->get(Ids::JUNGLE_LEAVES, 0)); - self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 0)); + self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 2)); self::register("jungle_planks", $factory->get(Ids::JUNGLE_PLANKS, 0)); self::register("jungle_pressure_plate", $factory->get(Ids::JUNGLE_PRESSURE_PLATE, 0)); self::register("jungle_sapling", $factory->get(Ids::JUNGLE_SAPLING, 0)); self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN, 0)); self::register("jungle_slab", $factory->get(Ids::JUNGLE_SLAB, 0)); - self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 3)); - self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 3)); - self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 2)); + self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 0)); + self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 0)); + self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 0)); self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 0)); self::register("lab_table", $factory->get(Ids::LAB_TABLE, 0)); - self::register("ladder", $factory->get(Ids::LADDER, 2)); + self::register("ladder", $factory->get(Ids::LADDER, 0)); self::register("lantern", $factory->get(Ids::LANTERN, 0)); self::register("lapis_lazuli", $factory->get(Ids::LAPIS_LAZULI, 0)); self::register("lapis_lazuli_ore", $factory->get(Ids::LAPIS_LAZULI_ORE, 0)); self::register("large_fern", $factory->get(Ids::LARGE_FERN, 0)); self::register("lava", $factory->get(Ids::LAVA, 0)); - self::register("lectern", $factory->get(Ids::LECTERN, 2)); + self::register("lectern", $factory->get(Ids::LECTERN, 0)); self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0)); - self::register("lever", $factory->get(Ids::LEVER, 6)); - self::register("light_blue_glazed_terracotta", $factory->get(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 2)); - self::register("light_gray_glazed_terracotta", $factory->get(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, 2)); + self::register("lever", $factory->get(Ids::LEVER, 5)); + self::register("light_blue_glazed_terracotta", $factory->get(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 0)); + self::register("light_gray_glazed_terracotta", $factory->get(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, 0)); self::register("lilac", $factory->get(Ids::LILAC, 0)); self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0)); self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0)); - self::register("lime_glazed_terracotta", $factory->get(Ids::LIME_GLAZED_TERRACOTTA, 2)); + self::register("lime_glazed_terracotta", $factory->get(Ids::LIME_GLAZED_TERRACOTTA, 0)); self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0)); - self::register("loom", $factory->get(Ids::LOOM, 2)); - self::register("magenta_glazed_terracotta", $factory->get(Ids::MAGENTA_GLAZED_TERRACOTTA, 2)); + self::register("loom", $factory->get(Ids::LOOM, 0)); + self::register("magenta_glazed_terracotta", $factory->get(Ids::MAGENTA_GLAZED_TERRACOTTA, 0)); self::register("magma", $factory->get(Ids::MAGMA, 0)); self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); self::register("melon", $factory->get(Ids::MELON, 0)); @@ -947,20 +947,20 @@ final class VanillaBlocks{ self::register("monster_spawner", $factory->get(Ids::MONSTER_SPAWNER, 0)); self::register("mossy_cobblestone", $factory->get(Ids::MOSSY_COBBLESTONE, 0)); self::register("mossy_cobblestone_slab", $factory->get(Ids::MOSSY_COBBLESTONE_SLAB, 0)); - self::register("mossy_cobblestone_stairs", $factory->get(Ids::MOSSY_COBBLESTONE_STAIRS, 3)); + self::register("mossy_cobblestone_stairs", $factory->get(Ids::MOSSY_COBBLESTONE_STAIRS, 0)); self::register("mossy_cobblestone_wall", $factory->get(Ids::MOSSY_COBBLESTONE_WALL, 0)); self::register("mossy_stone_brick_slab", $factory->get(Ids::MOSSY_STONE_BRICK_SLAB, 0)); - self::register("mossy_stone_brick_stairs", $factory->get(Ids::MOSSY_STONE_BRICK_STAIRS, 3)); + self::register("mossy_stone_brick_stairs", $factory->get(Ids::MOSSY_STONE_BRICK_STAIRS, 0)); self::register("mossy_stone_brick_wall", $factory->get(Ids::MOSSY_STONE_BRICK_WALL, 0)); self::register("mossy_stone_bricks", $factory->get(Ids::MOSSY_STONE_BRICKS, 0)); self::register("mushroom_stem", $factory->get(Ids::MUSHROOM_STEM, 0)); self::register("mycelium", $factory->get(Ids::MYCELIUM, 0)); self::register("nether_brick_fence", $factory->get(Ids::NETHER_BRICK_FENCE, 0)); self::register("nether_brick_slab", $factory->get(Ids::NETHER_BRICK_SLAB, 0)); - self::register("nether_brick_stairs", $factory->get(Ids::NETHER_BRICK_STAIRS, 3)); + self::register("nether_brick_stairs", $factory->get(Ids::NETHER_BRICK_STAIRS, 0)); self::register("nether_brick_wall", $factory->get(Ids::NETHER_BRICK_WALL, 0)); self::register("nether_bricks", $factory->get(Ids::NETHER_BRICKS, 0)); - self::register("nether_portal", $factory->get(Ids::NETHER_PORTAL, 1)); + self::register("nether_portal", $factory->get(Ids::NETHER_PORTAL, 0)); self::register("nether_quartz_ore", $factory->get(Ids::NETHER_QUARTZ_ORE, 0)); self::register("nether_reactor_core", $factory->get(Ids::NETHER_REACTOR_CORE, 0)); self::register("nether_wart", $factory->get(Ids::NETHER_WART, 0)); @@ -972,73 +972,73 @@ final class VanillaBlocks{ self::register("oak_fence", $factory->get(Ids::OAK_FENCE, 0)); self::register("oak_fence_gate", $factory->get(Ids::OAK_FENCE_GATE, 0)); self::register("oak_leaves", $factory->get(Ids::OAK_LEAVES, 0)); - self::register("oak_log", $factory->get(Ids::OAK_LOG, 0)); + self::register("oak_log", $factory->get(Ids::OAK_LOG, 2)); self::register("oak_planks", $factory->get(Ids::OAK_PLANKS, 0)); self::register("oak_pressure_plate", $factory->get(Ids::OAK_PRESSURE_PLATE, 0)); self::register("oak_sapling", $factory->get(Ids::OAK_SAPLING, 0)); self::register("oak_sign", $factory->get(Ids::OAK_SIGN, 0)); self::register("oak_slab", $factory->get(Ids::OAK_SLAB, 0)); - self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 3)); - self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 3)); - self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 2)); + self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 0)); + self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 0)); + self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0)); self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0)); self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0)); - self::register("orange_glazed_terracotta", $factory->get(Ids::ORANGE_GLAZED_TERRACOTTA, 2)); + self::register("orange_glazed_terracotta", $factory->get(Ids::ORANGE_GLAZED_TERRACOTTA, 0)); self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0)); self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0)); self::register("packed_ice", $factory->get(Ids::PACKED_ICE, 0)); self::register("peony", $factory->get(Ids::PEONY, 0)); - self::register("pink_glazed_terracotta", $factory->get(Ids::PINK_GLAZED_TERRACOTTA, 2)); + self::register("pink_glazed_terracotta", $factory->get(Ids::PINK_GLAZED_TERRACOTTA, 0)); self::register("pink_tulip", $factory->get(Ids::PINK_TULIP, 0)); self::register("podzol", $factory->get(Ids::PODZOL, 0)); self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0)); self::register("polished_andesite_slab", $factory->get(Ids::POLISHED_ANDESITE_SLAB, 0)); - self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 3)); + self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 0)); self::register("polished_diorite", $factory->get(Ids::POLISHED_DIORITE, 0)); self::register("polished_diorite_slab", $factory->get(Ids::POLISHED_DIORITE_SLAB, 0)); - self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 3)); + self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 0)); self::register("polished_granite", $factory->get(Ids::POLISHED_GRANITE, 0)); self::register("polished_granite_slab", $factory->get(Ids::POLISHED_GRANITE_SLAB, 0)); - self::register("polished_granite_stairs", $factory->get(Ids::POLISHED_GRANITE_STAIRS, 3)); + self::register("polished_granite_stairs", $factory->get(Ids::POLISHED_GRANITE_STAIRS, 0)); self::register("poppy", $factory->get(Ids::POPPY, 0)); self::register("potatoes", $factory->get(Ids::POTATOES, 0)); self::register("powered_rail", $factory->get(Ids::POWERED_RAIL, 0)); self::register("prismarine", $factory->get(Ids::PRISMARINE, 0)); self::register("prismarine_bricks", $factory->get(Ids::PRISMARINE_BRICKS, 0)); self::register("prismarine_bricks_slab", $factory->get(Ids::PRISMARINE_BRICKS_SLAB, 0)); - self::register("prismarine_bricks_stairs", $factory->get(Ids::PRISMARINE_BRICKS_STAIRS, 3)); + self::register("prismarine_bricks_stairs", $factory->get(Ids::PRISMARINE_BRICKS_STAIRS, 0)); self::register("prismarine_slab", $factory->get(Ids::PRISMARINE_SLAB, 0)); - self::register("prismarine_stairs", $factory->get(Ids::PRISMARINE_STAIRS, 3)); + self::register("prismarine_stairs", $factory->get(Ids::PRISMARINE_STAIRS, 0)); self::register("prismarine_wall", $factory->get(Ids::PRISMARINE_WALL, 0)); self::register("pumpkin", $factory->get(Ids::PUMPKIN, 0)); self::register("pumpkin_stem", $factory->get(Ids::PUMPKIN_STEM, 0)); - self::register("purple_glazed_terracotta", $factory->get(Ids::PURPLE_GLAZED_TERRACOTTA, 2)); + self::register("purple_glazed_terracotta", $factory->get(Ids::PURPLE_GLAZED_TERRACOTTA, 0)); self::register("purple_torch", $factory->get(Ids::PURPLE_TORCH, 1)); self::register("purpur", $factory->get(Ids::PURPUR, 0)); - self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 0)); + self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 2)); self::register("purpur_slab", $factory->get(Ids::PURPUR_SLAB, 0)); - self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 3)); + self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 0)); self::register("quartz", $factory->get(Ids::QUARTZ, 0)); - self::register("quartz_pillar", $factory->get(Ids::QUARTZ_PILLAR, 0)); + self::register("quartz_pillar", $factory->get(Ids::QUARTZ_PILLAR, 2)); self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); - self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 3)); + self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); self::register("rail", $factory->get(Ids::RAIL, 0)); - self::register("red_glazed_terracotta", $factory->get(Ids::RED_GLAZED_TERRACOTTA, 2)); + self::register("red_glazed_terracotta", $factory->get(Ids::RED_GLAZED_TERRACOTTA, 0)); self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0)); - self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 0)); + self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 10)); self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0)); - self::register("red_nether_brick_stairs", $factory->get(Ids::RED_NETHER_BRICK_STAIRS, 3)); + self::register("red_nether_brick_stairs", $factory->get(Ids::RED_NETHER_BRICK_STAIRS, 0)); self::register("red_nether_brick_wall", $factory->get(Ids::RED_NETHER_BRICK_WALL, 0)); self::register("red_nether_bricks", $factory->get(Ids::RED_NETHER_BRICKS, 0)); self::register("red_sand", $factory->get(Ids::RED_SAND, 0)); self::register("red_sandstone", $factory->get(Ids::RED_SANDSTONE, 0)); self::register("red_sandstone_slab", $factory->get(Ids::RED_SANDSTONE_SLAB, 0)); - self::register("red_sandstone_stairs", $factory->get(Ids::RED_SANDSTONE_STAIRS, 3)); + self::register("red_sandstone_stairs", $factory->get(Ids::RED_SANDSTONE_STAIRS, 0)); self::register("red_sandstone_wall", $factory->get(Ids::RED_SANDSTONE_WALL, 0)); self::register("red_torch", $factory->get(Ids::RED_TORCH, 1)); self::register("red_tulip", $factory->get(Ids::RED_TULIP, 0)); self::register("redstone", $factory->get(Ids::REDSTONE, 0)); - self::register("redstone_comparator", $factory->get(Ids::REDSTONE_COMPARATOR, 2)); + self::register("redstone_comparator", $factory->get(Ids::REDSTONE_COMPARATOR, 0)); self::register("redstone_lamp", $factory->get(Ids::REDSTONE_LAMP, 0)); self::register("redstone_ore", $factory->get(Ids::REDSTONE_ORE, 0)); self::register("redstone_repeater", $factory->get(Ids::REDSTONE_REPEATER, 0)); @@ -1049,22 +1049,22 @@ final class VanillaBlocks{ self::register("sand", $factory->get(Ids::SAND, 0)); self::register("sandstone", $factory->get(Ids::SANDSTONE, 0)); self::register("sandstone_slab", $factory->get(Ids::SANDSTONE_SLAB, 0)); - self::register("sandstone_stairs", $factory->get(Ids::SANDSTONE_STAIRS, 3)); + self::register("sandstone_stairs", $factory->get(Ids::SANDSTONE_STAIRS, 0)); self::register("sandstone_wall", $factory->get(Ids::SANDSTONE_WALL, 0)); self::register("sea_lantern", $factory->get(Ids::SEA_LANTERN, 0)); - self::register("sea_pickle", $factory->get(Ids::SEA_PICKLE, 4)); + self::register("sea_pickle", $factory->get(Ids::SEA_PICKLE, 0)); self::register("shulker_box", $factory->get(Ids::SHULKER_BOX, 0)); self::register("slime", $factory->get(Ids::SLIME, 0)); self::register("smoker", $factory->get(Ids::SMOKER, 0)); self::register("smooth_quartz", $factory->get(Ids::SMOOTH_QUARTZ, 0)); self::register("smooth_quartz_slab", $factory->get(Ids::SMOOTH_QUARTZ_SLAB, 0)); - self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 3)); + self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 0)); self::register("smooth_red_sandstone", $factory->get(Ids::SMOOTH_RED_SANDSTONE, 0)); self::register("smooth_red_sandstone_slab", $factory->get(Ids::SMOOTH_RED_SANDSTONE_SLAB, 0)); - self::register("smooth_red_sandstone_stairs", $factory->get(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 3)); + self::register("smooth_red_sandstone_stairs", $factory->get(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 0)); self::register("smooth_sandstone", $factory->get(Ids::SMOOTH_SANDSTONE, 0)); self::register("smooth_sandstone_slab", $factory->get(Ids::SMOOTH_SANDSTONE_SLAB, 0)); - self::register("smooth_sandstone_stairs", $factory->get(Ids::SMOOTH_SANDSTONE_STAIRS, 3)); + self::register("smooth_sandstone_stairs", $factory->get(Ids::SMOOTH_SANDSTONE_STAIRS, 0)); self::register("smooth_stone", $factory->get(Ids::SMOOTH_STONE, 0)); self::register("smooth_stone_slab", $factory->get(Ids::SMOOTH_STONE_SLAB, 0)); self::register("snow", $factory->get(Ids::SNOW, 0)); @@ -1076,15 +1076,15 @@ final class VanillaBlocks{ self::register("spruce_fence", $factory->get(Ids::SPRUCE_FENCE, 0)); self::register("spruce_fence_gate", $factory->get(Ids::SPRUCE_FENCE_GATE, 0)); self::register("spruce_leaves", $factory->get(Ids::SPRUCE_LEAVES, 0)); - self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 0)); + self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 2)); self::register("spruce_planks", $factory->get(Ids::SPRUCE_PLANKS, 0)); self::register("spruce_pressure_plate", $factory->get(Ids::SPRUCE_PRESSURE_PLATE, 0)); self::register("spruce_sapling", $factory->get(Ids::SPRUCE_SAPLING, 0)); self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN, 0)); self::register("spruce_slab", $factory->get(Ids::SPRUCE_SLAB, 0)); - self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 3)); - self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 3)); - self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 2)); + self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 0)); + self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 0)); + self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 0)); self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 0)); self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 14)); self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 14)); @@ -1093,25 +1093,25 @@ final class VanillaBlocks{ self::register("stained_hardened_glass_pane", $factory->get(Ids::STAINED_HARDENED_GLASS_PANE, 14)); self::register("stone", $factory->get(Ids::STONE, 0)); self::register("stone_brick_slab", $factory->get(Ids::STONE_BRICK_SLAB, 0)); - self::register("stone_brick_stairs", $factory->get(Ids::STONE_BRICK_STAIRS, 3)); + self::register("stone_brick_stairs", $factory->get(Ids::STONE_BRICK_STAIRS, 0)); self::register("stone_brick_wall", $factory->get(Ids::STONE_BRICK_WALL, 0)); self::register("stone_bricks", $factory->get(Ids::STONE_BRICKS, 0)); self::register("stone_button", $factory->get(Ids::STONE_BUTTON, 0)); self::register("stone_pressure_plate", $factory->get(Ids::STONE_PRESSURE_PLATE, 0)); self::register("stone_slab", $factory->get(Ids::STONE_SLAB, 0)); - self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 3)); - self::register("stonecutter", $factory->get(Ids::STONECUTTER, 2)); - self::register("stripped_acacia_log", $factory->get(Ids::STRIPPED_ACACIA_LOG, 0)); + self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 0)); + self::register("stonecutter", $factory->get(Ids::STONECUTTER, 0)); + self::register("stripped_acacia_log", $factory->get(Ids::STRIPPED_ACACIA_LOG, 2)); self::register("stripped_acacia_wood", $factory->get(Ids::STRIPPED_ACACIA_WOOD, 0)); - self::register("stripped_birch_log", $factory->get(Ids::STRIPPED_BIRCH_LOG, 0)); + self::register("stripped_birch_log", $factory->get(Ids::STRIPPED_BIRCH_LOG, 2)); self::register("stripped_birch_wood", $factory->get(Ids::STRIPPED_BIRCH_WOOD, 0)); - self::register("stripped_dark_oak_log", $factory->get(Ids::STRIPPED_DARK_OAK_LOG, 0)); + self::register("stripped_dark_oak_log", $factory->get(Ids::STRIPPED_DARK_OAK_LOG, 2)); self::register("stripped_dark_oak_wood", $factory->get(Ids::STRIPPED_DARK_OAK_WOOD, 0)); - self::register("stripped_jungle_log", $factory->get(Ids::STRIPPED_JUNGLE_LOG, 0)); + self::register("stripped_jungle_log", $factory->get(Ids::STRIPPED_JUNGLE_LOG, 2)); self::register("stripped_jungle_wood", $factory->get(Ids::STRIPPED_JUNGLE_WOOD, 0)); - self::register("stripped_oak_log", $factory->get(Ids::STRIPPED_OAK_LOG, 0)); + self::register("stripped_oak_log", $factory->get(Ids::STRIPPED_OAK_LOG, 2)); self::register("stripped_oak_wood", $factory->get(Ids::STRIPPED_OAK_WOOD, 0)); - self::register("stripped_spruce_log", $factory->get(Ids::STRIPPED_SPRUCE_LOG, 0)); + self::register("stripped_spruce_log", $factory->get(Ids::STRIPPED_SPRUCE_LOG, 2)); self::register("stripped_spruce_wood", $factory->get(Ids::STRIPPED_SPRUCE_WOOD, 0)); self::register("sugarcane", $factory->get(Ids::SUGARCANE, 0)); self::register("sunflower", $factory->get(Ids::SUNFLOWER, 0)); @@ -1119,20 +1119,20 @@ final class VanillaBlocks{ self::register("tall_grass", $factory->get(Ids::TALL_GRASS, 0)); self::register("tnt", $factory->get(Ids::TNT, 0)); self::register("torch", $factory->get(Ids::TORCH, 1)); - self::register("trapped_chest", $factory->get(Ids::TRAPPED_CHEST, 2)); + self::register("trapped_chest", $factory->get(Ids::TRAPPED_CHEST, 0)); self::register("tripwire", $factory->get(Ids::TRIPWIRE, 0)); - self::register("tripwire_hook", $factory->get(Ids::TRIPWIRE_HOOK, 2)); + self::register("tripwire_hook", $factory->get(Ids::TRIPWIRE_HOOK, 0)); self::register("underwater_torch", $factory->get(Ids::UNDERWATER_TORCH, 1)); self::register("vines", $factory->get(Ids::VINES, 0)); - self::register("wall_banner", $factory->get(Ids::WALL_BANNER, 2)); + self::register("wall_banner", $factory->get(Ids::WALL_BANNER, 0)); self::register("wall_coral_fan", $factory->get(Ids::WALL_CORAL_FAN, 4)); self::register("water", $factory->get(Ids::WATER, 0)); self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0)); self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0)); self::register("wheat", $factory->get(Ids::WHEAT, 0)); - self::register("white_glazed_terracotta", $factory->get(Ids::WHITE_GLAZED_TERRACOTTA, 2)); + self::register("white_glazed_terracotta", $factory->get(Ids::WHITE_GLAZED_TERRACOTTA, 0)); self::register("white_tulip", $factory->get(Ids::WHITE_TULIP, 0)); self::register("wool", $factory->get(Ids::WOOL, 14)); - self::register("yellow_glazed_terracotta", $factory->get(Ids::YELLOW_GLAZED_TERRACOTTA, 2)); + self::register("yellow_glazed_terracotta", $factory->get(Ids::YELLOW_GLAZED_TERRACOTTA, 0)); } } From 2a0b500010ff34cb44d8ccb1883996c071ca7ea9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 18:08:34 +0100 Subject: [PATCH 201/692] Block: Separate encoding of type and state data the terminology of this needs improvement, but... the basic concept here is that 'type' data will persist on an itemstack, while 'state' data will not. Type data consists of things like: - Colour - Coral type - Wet/dry (sponges) - Live/dead (coral) - Wood type State data consists of things like: - Facing - Axis - Powered/unpowered - Open/closed In the past, with the old system, this information was separated by way of getStateBitmask(). This solution was fraught with problems, but achieved the basic goal: removing unwanted block properties from items. --- src/block/Anvil.php | 14 ++++-- src/block/BaseBanner.php | 10 ----- src/block/Bed.php | 2 - src/block/Block.php | 44 +++++++++++++++---- src/block/BlockFactory.php | 2 +- src/block/Dirt.php | 6 +-- src/block/FloorBanner.php | 17 +------ src/block/FloorCoralFan.php | 2 - src/block/Skull.php | 12 +++++ src/block/Sponge.php | 6 +-- src/block/TNT.php | 14 ++++-- src/block/VanillaBlocks.php | 4 +- src/block/WallBanner.php | 17 +------ src/block/WallCoralFan.php | 2 - src/block/utils/ColoredTrait.php | 10 ++--- src/block/utils/CoralTypeTrait.php | 10 +++-- .../block_factory_consistency_check.json | 2 +- .../BlockSerializerDeserializerTest.php | 18 ++++++++ 18 files changed, 112 insertions(+), 80 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 71fd04625..a2aef2161 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,15 +51,23 @@ class Anvil extends Transparent implements Fallable{ return $this->damage << 2; } - public function getRequiredStateDataBits() : int{ return 4; } + public function getRequiredTypeDataBits() : int{ return 2; } + + protected function decodeType(BlockDataReader $r) : void{ + $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeInt(2, $this->getDamage()); + } + + public function getRequiredStateDataBits() : int{ return 2; } protected function decodeState(BlockDataReader $r) : void{ - $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); $this->setFacing($r->readHorizontalFacing()); } protected function encodeState(BlockDataWriter $w) : void{ - $w->writeInt(2, $this->getDamage()); $w->writeHorizontalFacing($this->getFacing()); } diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index 75e551eef..2e9b07141 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -55,16 +55,6 @@ abstract class BaseBanner extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - public function getRequiredStateDataBits() : int{ return 0; } - - protected function decodeState(BlockDataReader $r) : void{ - //TODO: we currently purposely don't read or write colour (it's stored on the tile) - } - - protected function encodeState(BlockDataWriter $w) : void{ - //TODO: we currently purposely don't read or write colour (it's stored on the tile) - } - public function readStateFromWorld() : void{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/Bed.php b/src/block/Bed.php index bf9aa730a..025c8c652 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -60,14 +60,12 @@ class Bed extends Transparent{ $this->facing = $r->readHorizontalFacing(); $this->occupied = $r->readBool(); $this->head = $r->readBool(); - //TODO: we currently purposely don't read or write colour (it's stored on the tile) } protected function encodeState(BlockDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->occupied); $w->writeBool($this->head); - //TODO: we currently purposely don't read or write colour (it's stored on the tile) } public function readStateFromWorld() : void{ diff --git a/src/block/Block.php b/src/block/Block.php index a927842e4..6d9b2bd72 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -108,16 +108,31 @@ class Block{ return 0; } + public function getRequiredTypeDataBits() : int{ return 0; } + public function getRequiredStateDataBits() : int{ return 0; } final public function decodeStateData(int $data) : void{ - $givenBits = $this->getRequiredStateDataBits(); + $typeBits = $this->getRequiredTypeDataBits(); + $stateBits = $this->getRequiredStateDataBits(); + $givenBits = $typeBits + $stateBits; $reader = new BlockDataReader($givenBits, $data); - $this->decodeState($reader); + + $this->decodeType($reader); $readBits = $reader->getOffset(); - if($givenBits !== $readBits){ - throw new \LogicException("Exactly $givenBits bits of state data were provided, but only $readBits were read"); + if($typeBits !== $readBits){ + throw new \LogicException("Exactly $typeBits bits of type data were provided, but $readBits were read"); } + + $this->decodeState($reader); + $readBits = $reader->getOffset() - $typeBits; + if($stateBits !== $readBits){ + throw new \LogicException("Exactly $stateBits bits of state data were provided, but $readBits were read"); + } + } + + protected function decodeType(BlockDataReader $r) : void{ + //NOOP } protected function decodeState(BlockDataReader $r) : void{ @@ -128,17 +143,30 @@ class Block{ * @internal */ final public function computeStateData() : int{ - $requiredBits = $this->getRequiredStateDataBits(); + $typeBits = $this->getRequiredTypeDataBits(); + $stateBits = $this->getRequiredStateDataBits(); + $requiredBits = $typeBits + $stateBits; $writer = new BlockDataWriter($requiredBits); - $this->encodeState($writer); + $this->encodeType($writer); $writtenBits = $writer->getOffset(); - if($requiredBits !== $writtenBits){ - throw new \LogicException("Exactly $requiredBits bits of state data were expected, but only $writtenBits were written"); + if($typeBits !== $writtenBits){ + throw new \LogicException("Exactly $typeBits bits of type data were expected, but $writtenBits were written"); } + + $this->encodeState($writer); + $writtenBits = $writer->getOffset() - $typeBits; + if($stateBits !== $writtenBits){ + throw new \LogicException("Exactly $stateBits bits of state data were expected, but $writtenBits were written"); + } + return $writer->getValue(); } + protected function encodeType(BlockDataWriter $w) : void{ + //NOOP + } + protected function encodeState(BlockDataWriter $w) : void{ //NOOP } diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 1e3c48a1b..41396b5f1 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -864,7 +864,7 @@ class BlockFactory{ //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes //at some point we'll need to find a better way to do this - $bits = $block->getRequiredStateDataBits(); + $bits = $block->getRequiredTypeDataBits() + $block->getRequiredStateDataBits(); if($bits > Block::INTERNAL_STATE_DATA_BITS){ throw new \InvalidArgumentException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index f163beebe..735e66527 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -39,13 +39,13 @@ class Dirt extends Opaque{ return $this->coarse ? BlockLegacyMetadata::DIRT_FLAG_COARSE : 0; } - public function getRequiredStateDataBits() : int{ return 1; } + public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeType(BlockDataReader $r) : void{ $this->coarse = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeType(BlockDataWriter $w) : void{ $w->writeBool($this->coarse); } diff --git a/src/block/FloorBanner.php b/src/block/FloorBanner.php index 8da061e9b..da1fddd6c 100644 --- a/src/block/FloorBanner.php +++ b/src/block/FloorBanner.php @@ -33,22 +33,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class FloorBanner extends BaseBanner{ - use SignLikeRotationTrait { - decodeState as decodeRotation; - encodeState as encodeRotation; - } - - public function getRequiredStateDataBits() : int{ return 4; } - - protected function decodeState(BlockDataReader $r) : void{ - parent::decodeState($r); - $this->decodeRotation($r); - } - - protected function encodeState(BlockDataWriter $w) : void{ - parent::encodeState($w); - $this->encodeRotation($w); - } + use SignLikeRotationTrait; protected function getSupportingFace() : int{ return Facing::DOWN; diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index c88f9575a..cf9d5ece0 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -50,12 +50,10 @@ final class FloorCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } protected function decodeState(BlockDataReader $r) : void{ - parent::decodeState($r); $this->axis = $r->readHorizontalAxis(); } protected function encodeState(BlockDataWriter $w) : void{ - parent::encodeState($w); $w->writeHorizontalAxis($this->axis); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 50b56f3d0..461446cbe 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -25,7 +25,9 @@ namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\utils\BlockDataReader; +use pocketmine\block\utils\BlockDataReaderHelper; use pocketmine\block\utils\BlockDataWriter; +use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SkullType; use pocketmine\item\Item; @@ -51,6 +53,16 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $breakInfo); } + public function getRequiredTypeDataBits() : int{ return 3; } + + protected function decodeType(BlockDataReader $r) : void{ + $this->skullType = BlockDataReaderHelper::readSkullType($r); + } + + protected function encodeType(BlockDataWriter $w) : void{ + BlockDataWriterHelper::writeSkullType($w, $this->skullType); + } + public function getRequiredStateDataBits() : int{ return 3; } protected function decodeState(BlockDataReader $r) : void{ diff --git a/src/block/Sponge.php b/src/block/Sponge.php index 8f9024268..9fca8e9dc 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -33,13 +33,13 @@ class Sponge extends Opaque{ return $this->wet ? BlockLegacyMetadata::SPONGE_FLAG_WET : 0; } - public function getRequiredStateDataBits() : int{ return 1; } + public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeType(BlockDataReader $r) : void{ $this->wet = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeType(BlockDataWriter $w) : void{ $w->writeBool($this->wet); } diff --git a/src/block/TNT.php b/src/block/TNT.php index 80f83e015..bd7d13b43 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -49,16 +49,24 @@ class TNT extends Opaque{ return $this->worksUnderwater ? BlockLegacyMetadata::TNT_FLAG_UNDERWATER : 0; } - public function getRequiredStateDataBits() : int{ return 2; } + public function getRequiredTypeDataBits() : int{ return 1; } + + protected function decodeType(BlockDataReader $r) : void{ + $this->worksUnderwater = $r->readBool(); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeBool($this->worksUnderwater); + } + + public function getRequiredStateDataBits() : int{ return 1; } protected function decodeState(BlockDataReader $r) : void{ $this->unstable = $r->readBool(); - $this->worksUnderwater = $r->readBool(); } protected function encodeState(BlockDataWriter $w) : void{ $w->writeBool($this->unstable); - $w->writeBool($this->worksUnderwater); } public function isUnstable() : bool{ return $this->unstable; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 0acd3385e..070068ea1 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -626,7 +626,7 @@ final class VanillaBlocks{ self::register("barrel", $factory->get(Ids::BARREL, 0)); self::register("barrier", $factory->get(Ids::BARRIER, 0)); self::register("beacon", $factory->get(Ids::BEACON, 0)); - self::register("bed", $factory->get(Ids::BED, 0)); + self::register("bed", $factory->get(Ids::BED, 13)); self::register("bedrock", $factory->get(Ids::BEDROCK, 0)); self::register("beetroots", $factory->get(Ids::BEETROOTS, 0)); self::register("bell", $factory->get(Ids::BELL, 1)); @@ -943,7 +943,7 @@ final class VanillaBlocks{ self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); self::register("melon", $factory->get(Ids::MELON, 0)); self::register("melon_stem", $factory->get(Ids::MELON_STEM, 0)); - self::register("mob_head", $factory->get(Ids::MOB_HEAD, 2)); + self::register("mob_head", $factory->get(Ids::MOB_HEAD, 19)); self::register("monster_spawner", $factory->get(Ids::MONSTER_SPAWNER, 0)); self::register("mossy_cobblestone", $factory->get(Ids::MOSSY_COBBLESTONE, 0)); self::register("mossy_cobblestone_slab", $factory->get(Ids::MOSSY_COBBLESTONE_SLAB, 0)); diff --git a/src/block/WallBanner.php b/src/block/WallBanner.php index 8eee17959..53c1e179a 100644 --- a/src/block/WallBanner.php +++ b/src/block/WallBanner.php @@ -34,22 +34,7 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; final class WallBanner extends BaseBanner{ - use HorizontalFacingTrait { - decodeState as decodeFacing; - encodeState as encodeFacing; - } - - public function getRequiredStateDataBits() : int{ return 2; } - - protected function decodeState(BlockDataReader $r) : void{ - parent::decodeState($r); - $this->decodeFacing($r); - } - - protected function encodeState(BlockDataWriter $w) : void{ - parent::encodeState($w); - $this->encodeFacing($w); - } + use HorizontalFacingTrait; protected function getSupportingFace() : int{ return Facing::opposite($this->facing); diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index c4043ed04..d713c4164 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -49,12 +49,10 @@ final class WallCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } protected function decodeState(BlockDataReader $r) : void{ - parent::decodeState($r); $this->facing = $r->readHorizontalFacing(); } protected function encodeState(BlockDataWriter $w) : void{ - parent::encodeState($w); $w->writeHorizontalFacing($this->facing); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index a8efd46ae..afd060229 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -37,15 +37,15 @@ trait ColoredTrait{ return DyeColorIdMap::getInstance()->toId($this->color); } - public function getRequiredStateDataBits() : int{ return 4; } + public function getRequiredTypeDataBits() : int{ return 4; } - /** @see Block::decodeState() */ - protected function decodeState(BlockDataReader $r) : void{ + /** @see Block::decodeType() */ + protected function decodeType(BlockDataReader $r) : void{ $this->color = BlockDataReaderHelper::readDyeColor($r); } - /** @see Block::encodeState() */ - protected function encodeState(BlockDataWriter $w) : void{ + /** @see Block::encodeType() */ + protected function encodeType(BlockDataWriter $w) : void{ BlockDataWriterHelper::writeDyeColor($w, $this->color); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index c91213a13..5cc3f0875 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -23,18 +23,22 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\block\Block; + trait CoralTypeTrait{ protected CoralType $coralType; protected bool $dead = false; - public function getRequiredStateDataBits() : int{ return 4; } + public function getRequiredTypeDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + /** @see Block::decodeType() */ + protected function decodeType(BlockDataReader $r) : void{ $this->coralType = BlockDataReaderHelper::readCoralType($r); $this->dead = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + /** @see Block::encodeType() */ + protected function encodeType(BlockDataWriter $w) : void{ BlockDataWriterHelper::writeCoralType($w, $this->coralType); $w->writeBool($this->dead); } diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 30e17a976..44867a72f 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298177":"Mob Head","5298178":"Mob Head","5298179":"Mob Head","5298180":"Mob Head","5298181":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5393920":"White Glazed Terracotta","5393921":"White Glazed Terracotta","5393922":"White Glazed Terracotta","5393923":"White Glazed Terracotta","5318656":"Orange Glazed Terracotta","5318657":"Orange Glazed Terracotta","5318658":"Orange Glazed Terracotta","5318659":"Orange Glazed Terracotta","5295616":"Magenta Glazed Terracotta","5295617":"Magenta Glazed Terracotta","5295618":"Magenta Glazed Terracotta","5295619":"Magenta Glazed Terracotta","5291520":"Light Blue Glazed Terracotta","5291521":"Light Blue Glazed Terracotta","5291522":"Light Blue Glazed Terracotta","5291523":"Light Blue Glazed Terracotta","5395456":"Yellow Glazed Terracotta","5395457":"Yellow Glazed Terracotta","5395458":"Yellow Glazed Terracotta","5395459":"Yellow Glazed Terracotta","5294080":"Lime Glazed Terracotta","5294081":"Lime Glazed Terracotta","5294082":"Lime Glazed Terracotta","5294083":"Lime Glazed Terracotta","5321216":"Pink Glazed Terracotta","5321217":"Pink Glazed Terracotta","5321218":"Pink Glazed Terracotta","5321219":"Pink Glazed Terracotta","5265920":"Gray Glazed Terracotta","5265921":"Gray Glazed Terracotta","5265922":"Gray Glazed Terracotta","5265923":"Gray Glazed Terracotta","5292032":"Light Gray Glazed Terracotta","5292033":"Light Gray Glazed Terracotta","5292034":"Light Gray Glazed Terracotta","5292035":"Light Gray Glazed Terracotta","5170688":"Cyan Glazed Terracotta","5170689":"Cyan Glazed Terracotta","5170690":"Cyan Glazed Terracotta","5170691":"Cyan Glazed Terracotta","5333504":"Purple Glazed Terracotta","5333505":"Purple Glazed Terracotta","5333506":"Purple Glazed Terracotta","5333507":"Purple Glazed Terracotta","5146624":"Blue Glazed Terracotta","5146625":"Blue Glazed Terracotta","5146626":"Blue Glazed Terracotta","5146627":"Blue Glazed Terracotta","5152256":"Brown Glazed Terracotta","5152257":"Brown Glazed Terracotta","5152258":"Brown Glazed Terracotta","5152259":"Brown Glazed Terracotta","5266432":"Green Glazed Terracotta","5266433":"Green Glazed Terracotta","5266434":"Green Glazed Terracotta","5266435":"Green Glazed Terracotta","5339136":"Red Glazed Terracotta","5339137":"Red Glazed Terracotta","5339138":"Red Glazed Terracotta","5339139":"Red Glazed Terracotta","5145600":"Black Glazed Terracotta","5145601":"Black Glazed Terracotta","5145602":"Black Glazed Terracotta","5145603":"Black Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5393920":"White Glazed Terracotta","5393921":"White Glazed Terracotta","5393922":"White Glazed Terracotta","5393923":"White Glazed Terracotta","5318656":"Orange Glazed Terracotta","5318657":"Orange Glazed Terracotta","5318658":"Orange Glazed Terracotta","5318659":"Orange Glazed Terracotta","5295616":"Magenta Glazed Terracotta","5295617":"Magenta Glazed Terracotta","5295618":"Magenta Glazed Terracotta","5295619":"Magenta Glazed Terracotta","5291520":"Light Blue Glazed Terracotta","5291521":"Light Blue Glazed Terracotta","5291522":"Light Blue Glazed Terracotta","5291523":"Light Blue Glazed Terracotta","5395456":"Yellow Glazed Terracotta","5395457":"Yellow Glazed Terracotta","5395458":"Yellow Glazed Terracotta","5395459":"Yellow Glazed Terracotta","5294080":"Lime Glazed Terracotta","5294081":"Lime Glazed Terracotta","5294082":"Lime Glazed Terracotta","5294083":"Lime Glazed Terracotta","5321216":"Pink Glazed Terracotta","5321217":"Pink Glazed Terracotta","5321218":"Pink Glazed Terracotta","5321219":"Pink Glazed Terracotta","5265920":"Gray Glazed Terracotta","5265921":"Gray Glazed Terracotta","5265922":"Gray Glazed Terracotta","5265923":"Gray Glazed Terracotta","5292032":"Light Gray Glazed Terracotta","5292033":"Light Gray Glazed Terracotta","5292034":"Light Gray Glazed Terracotta","5292035":"Light Gray Glazed Terracotta","5170688":"Cyan Glazed Terracotta","5170689":"Cyan Glazed Terracotta","5170690":"Cyan Glazed Terracotta","5170691":"Cyan Glazed Terracotta","5333504":"Purple Glazed Terracotta","5333505":"Purple Glazed Terracotta","5333506":"Purple Glazed Terracotta","5333507":"Purple Glazed Terracotta","5146624":"Blue Glazed Terracotta","5146625":"Blue Glazed Terracotta","5146626":"Blue Glazed Terracotta","5146627":"Blue Glazed Terracotta","5152256":"Brown Glazed Terracotta","5152257":"Brown Glazed Terracotta","5152258":"Brown Glazed Terracotta","5152259":"Brown Glazed Terracotta","5266432":"Green Glazed Terracotta","5266433":"Green Glazed Terracotta","5266434":"Green Glazed Terracotta","5266435":"Green Glazed Terracotta","5339136":"Red Glazed Terracotta","5339137":"Red Glazed Terracotta","5339138":"Red Glazed Terracotta","5339139":"Red Glazed Terracotta","5145600":"Black Glazed Terracotta","5145601":"Black Glazed Terracotta","5145602":"Black Glazed Terracotta","5145603":"Black Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index 33232f553..a9566aa6d 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -24,9 +24,14 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\convert; use PHPUnit\Framework\TestCase; +use pocketmine\block\Bed; use pocketmine\block\BlockFactory; +use pocketmine\block\BlockTypeIds; +use pocketmine\block\Skull; +use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateSerializeException; +use pocketmine\block\BaseBanner; use function print_r; final class BlockSerializerDeserializerTest extends TestCase{ @@ -51,6 +56,19 @@ final class BlockSerializerDeserializerTest extends TestCase{ self::fail($e->getMessage()); } + //The following are workarounds for differences in blockstate representation in Bedrock vs PM + //In these cases, some properties are not stored in the blockstate (but rather in the block entity NBT), but + //they do form part of the internal blockstate hash in PM. This leads to inconsistencies when serializing + //and deserializing blockstates. + if( + ($block instanceof BaseBanner && $newBlock instanceof BaseBanner) || + ($block instanceof Bed && $newBlock instanceof Bed) + ){ + $newBlock->setColor($block->getColor()); + }elseif($block instanceof Skull && $newBlock instanceof Skull){ + $newBlock->setSkullType($block->getSkullType()); + } + self::assertSame($block->getStateId(), $newBlock->getStateId(), "Mismatch of blockstate for " . $block->getName() . ", " . print_r($block, true) . " vs " . print_r($newBlock, true)); } } From af8f2c47f392d38622e2d5828b3023f5f36f17ce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 19:03:07 +0100 Subject: [PATCH 202/692] ShulkerBoxInventory: avoid usage of legacy ItemIds --- src/block/inventory/ShulkerBoxInventory.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/block/inventory/ShulkerBoxInventory.php b/src/block/inventory/ShulkerBoxInventory.php index a61e37198..102e0b648 100644 --- a/src/block/inventory/ShulkerBoxInventory.php +++ b/src/block/inventory/ShulkerBoxInventory.php @@ -23,9 +23,10 @@ declare(strict_types=1); namespace pocketmine\block\inventory; +use pocketmine\block\BlockTypeIds; use pocketmine\inventory\SimpleInventory; use pocketmine\item\Item; -use pocketmine\item\ItemIds; +use pocketmine\item\ItemBlock; use pocketmine\network\mcpe\protocol\BlockEventPacket; use pocketmine\network\mcpe\protocol\types\BlockPosition; use pocketmine\world\Position; @@ -50,8 +51,11 @@ class ShulkerBoxInventory extends SimpleInventory implements BlockInventory{ } public function canAddItem(Item $item) : bool{ - if($item->getId() === ItemIds::UNDYED_SHULKER_BOX || $item->getId() === ItemIds::SHULKER_BOX){ - return false; + if($item instanceof ItemBlock){ + $blockTypeId = $item->getBlock()->getTypeId(); + if($blockTypeId === BlockTypeIds::SHULKER_BOX || $blockTypeId === BlockTypeIds::DYED_SHULKER_BOX){ + return false; + } } return parent::canAddItem($item); } From 4bd087fc83450d67f83720cbd5f27ac950d04041 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 19:09:49 +0100 Subject: [PATCH 203/692] Fix CS --- src/block/BaseBanner.php | 2 -- src/block/FloorBanner.php | 2 -- src/block/WallBanner.php | 2 -- .../bedrock/block/convert/BlockSerializerDeserializerTest.php | 4 +--- 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index 2e9b07141..3cc59ae78 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -25,8 +25,6 @@ namespace pocketmine\block; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\utils\BannerPatternLayer; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SupportType; diff --git a/src/block/FloorBanner.php b/src/block/FloorBanner.php index da1fddd6c..73bc45787 100644 --- a/src/block/FloorBanner.php +++ b/src/block/FloorBanner.php @@ -23,8 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SignLikeRotationTrait; use pocketmine\item\Item; use pocketmine\math\Facing; diff --git a/src/block/WallBanner.php b/src/block/WallBanner.php index 53c1e179a..5182fe9f8 100644 --- a/src/block/WallBanner.php +++ b/src/block/WallBanner.php @@ -23,8 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\item\Item; use pocketmine\math\Axis; diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index a9566aa6d..24f6bc750 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -24,14 +24,12 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\convert; use PHPUnit\Framework\TestCase; +use pocketmine\block\BaseBanner; use pocketmine\block\Bed; use pocketmine\block\BlockFactory; -use pocketmine\block\BlockTypeIds; use pocketmine\block\Skull; -use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateSerializeException; -use pocketmine\block\BaseBanner; use function print_r; final class BlockSerializerDeserializerTest extends TestCase{ From db2b523762e9664564cdce93248634b1c4bd3022 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 19:16:20 +0100 Subject: [PATCH 204/692] Item is no longer JsonSerializable before anyone starts screaming: 1) it's easy to create your own wrapper that converts items to arrays 2) there is no longer a single standard way to encode items. 3) the way that item serialization now works requires an ItemSerializer, which, barring singleton use, must be dependency-injected. Since there's no way to inject dependencies into jsonSerialize(), this means that its behaviour cannot be customized. --- .../CraftingManagerFromDataHelper.php | 14 +++--- src/inventory/CreativeInventory.php | 2 +- src/item/Item.php | 43 ++++++++----------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 455e0315e..cb639209a 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -57,7 +57,7 @@ final class CraftingManagerFromDataHelper{ //TODO: we need to stop using jsonDeserialize for this try{ - $item = Item::jsonDeserialize($data); + $item = Item::legacyJsonDeserialize($data); }catch(SavedDataLoadingException){ //unknown item return null; @@ -74,7 +74,7 @@ final class CraftingManagerFromDataHelper{ $result = new CraftingManager(); $ingredientDeserializerFunc = \Closure::fromCallable([self::class, "deserializeIngredient"]); - $itemDeserializerFunc = \Closure::fromCallable([Item::class, 'jsonDeserialize']); + $itemDeserializerFunc = \Closure::fromCallable([Item::class, 'legacyJsonDeserialize']); foreach($recipes["shapeless"] as $recipe){ $recipeType = match($recipe["block"]){ @@ -142,7 +142,7 @@ final class CraftingManagerFromDataHelper{ continue; } try{ - $output = Item::jsonDeserialize($recipe["output"]); + $output = Item::legacyJsonDeserialize($recipe["output"]); }catch(SavedDataLoadingException){ continue; } @@ -157,9 +157,9 @@ final class CraftingManagerFromDataHelper{ } foreach($recipes["potion_type"] as $recipe){ try{ - $input = Item::jsonDeserialize($recipe["input"]); - $ingredient = Item::jsonDeserialize($recipe["ingredient"]); - $output = Item::jsonDeserialize($recipe["output"]); + $input = Item::legacyJsonDeserialize($recipe["input"]); + $ingredient = Item::legacyJsonDeserialize($recipe["ingredient"]); + $output = Item::legacyJsonDeserialize($recipe["output"]); }catch(SavedDataLoadingException){ //unknown item continue; @@ -172,7 +172,7 @@ final class CraftingManagerFromDataHelper{ } foreach($recipes["potion_container_change"] as $recipe){ try{ - $ingredient = Item::jsonDeserialize($recipe["ingredient"]); + $ingredient = Item::legacyJsonDeserialize($recipe["ingredient"]); }catch(SavedDataLoadingException){ //unknown item continue; diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 43a8b9a0e..c9eced613 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -41,7 +41,7 @@ final class CreativeInventory{ foreach($creativeItems as $data){ try{ - $item = Item::jsonDeserialize($data); + $item = Item::legacyJsonDeserialize($data); }catch(SavedDataLoadingException){ //unknown item continue; diff --git a/src/item/Item.php b/src/item/Item.php index 48a3509c7..13d5ce80c 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -575,38 +575,21 @@ class Item implements \JsonSerializable{ } /** - * Returns an array of item stack properties that can be serialized to json. - * - * @return mixed[] - * @phpstan-return array{id: int, damage?: int, count?: int, nbt_b64?: string} + * @phpstan-return never */ - final public function jsonSerialize() : array{ - $data = [ - "id" => $this->getId() - ]; - - if($this->getMeta() !== 0){ - $data["damage"] = $this->getMeta(); - } - - if($this->getCount() !== 1){ - $data["count"] = $this->getCount(); - } - - if($this->hasNamedTag()){ - $data["nbt_b64"] = base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))); - } - - return $data; + public function jsonSerialize() : array{ + throw new \LogicException("json_encode()ing Item instances is no longer supported. Make your own method to convert the item to an array or stdClass."); } /** + * @deprecated This is intended for deserializing legacy data from the old crafting JSON and creative JSON data. + * * Returns an Item from properties created in an array by {@link Item#jsonSerialize} * @param mixed[] $data * * @throws SavedDataLoadingException */ - final public static function jsonDeserialize(array $data) : Item{ + final public static function legacyJsonDeserialize(array $data) : Item{ $nbt = ""; //Backwards compatibility @@ -617,9 +600,19 @@ class Item implements \JsonSerializable{ }elseif(isset($data["nbt_b64"])){ $nbt = base64_decode($data["nbt_b64"], true); } - return ItemFactory::getInstance()->get( - (int) $data["id"], (int) ($data["damage"] ?? 0), (int) ($data["count"] ?? 1), $nbt !== "" ? (new LittleEndianNbtSerializer())->read($nbt)->mustGetCompoundTag() : null + + $itemStackData = GlobalItemDataHandlers::getUpgrader()->upgradeItemTypeDataInt( + (int) $data["id"], + (int) ($data["damage"] ?? 0), + (int) ($data["count"] ?? 1), + $nbt !== "" ? (new LittleEndianNbtSerializer())->read($nbt)->mustGetCompoundTag() : null ); + + try{ + return GlobalItemDataHandlers::getDeserializer()->deserializeStack($itemStackData); + }catch(ItemTypeDeserializeException $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } } /** From ba079bd9aa090b211bc58d3028122364808e63c2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 20:00:41 +0100 Subject: [PATCH 205/692] Avoid implicit ItemFactory reliance for blocks with special items this hasn't yet been addressed for signs, since they are a bit of a pain in the ass. --- src/block/Bamboo.php | 5 +++++ src/block/BambooSapling.php | 3 ++- src/block/BaseBanner.php | 10 +++++----- src/block/Bed.php | 6 ++++++ src/block/Beetroot.php | 2 +- src/block/Carrot.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/FloorCoralFan.php | 15 +++++---------- src/block/MelonStem.php | 7 +++++++ src/block/Potato.php | 2 +- src/block/PumpkinStem.php | 7 +++++++ src/block/RedstoneWire.php | 5 +++++ src/block/Skull.php | 6 ++++-- src/block/WallCoralFan.php | 15 +++++---------- src/block/Wheat.php | 2 +- 15 files changed, 56 insertions(+), 33 deletions(-) diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index ccd63ced9..61284cfdd 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -30,6 +30,7 @@ use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -243,4 +244,8 @@ class Bamboo extends Transparent{ $world->setBlock($this->position, $this); } } + + public function asItem() : Item{ + return VanillaItems::BAMBOO(); + } } diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 66b816241..6171657c4 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -29,6 +29,7 @@ use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\BlockTransaction; @@ -126,6 +127,6 @@ final class BambooSapling extends Flowable{ } public function asItem() : Item{ - return VanillaBlocks::BAMBOO()->asItem(); + return VanillaItems::BAMBOO(); } } diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index 3cc59ae78..fd2b225bf 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -28,9 +28,9 @@ use pocketmine\block\utils\BannerPatternLayer; use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SupportType; -use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\item\Banner as ItemBanner; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -129,10 +129,6 @@ abstract class BaseBanner extends Transparent{ } } - protected function writeStateToItemMeta() : int{ - return DyeColorIdMap::getInstance()->toInvertedId($this->color); - } - public function getDropsForCompatibleTool(Item $item) : array{ $drop = $this->asItem(); if($drop instanceof ItemBanner && count($this->patterns) > 0){ @@ -149,4 +145,8 @@ abstract class BaseBanner extends Transparent{ } return $result; } + + public function asItem() : Item{ + return VanillaItems::BANNER()->setColor($this->color); + } } diff --git a/src/block/Bed.php b/src/block/Bed.php index 025c8c652..46d21a23a 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -33,6 +33,7 @@ use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -218,4 +219,9 @@ class Bed extends Transparent{ private function canBeSupportedBy(Block $block) : bool{ return !$block->getSupportType(Facing::UP)->equals(SupportType::NONE()); } + + public function asItem() : Item{ + //TODO: we might be able to get rid of this + return VanillaItems::BED()->setColor($this->color); + } } diff --git a/src/block/Beetroot.php b/src/block/Beetroot.php index 5afbe4412..b87a841ea 100644 --- a/src/block/Beetroot.php +++ b/src/block/Beetroot.php @@ -42,7 +42,7 @@ class Beetroot extends Crops{ ]; } - public function getPickedItem(bool $addUserData = false) : Item{ + public function asItem() : Item{ return VanillaItems::BEETROOT_SEEDS(); } } diff --git a/src/block/Carrot.php b/src/block/Carrot.php index c03d10737..895b0a37d 100644 --- a/src/block/Carrot.php +++ b/src/block/Carrot.php @@ -35,7 +35,7 @@ class Carrot extends Crops{ ]; } - public function getPickedItem(bool $addUserData = false) : Item{ + public function asItem() : Item{ return VanillaItems::CARROT(); } } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 89f8bccf6..572a098ee 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -147,7 +147,7 @@ class CocoaBlock extends Transparent{ ]; } - public function getPickedItem(bool $addUserData = false) : Item{ + public function asItem() : Item{ return VanillaItems::COCOA_BEANS(); } } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index cf9d5ece0..6dcd5420a 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -25,9 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\BlockDataReader; use pocketmine\block\utils\BlockDataWriter; -use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; -use pocketmine\item\ItemIds; +use pocketmine\item\VanillaItems; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -39,14 +38,6 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - public function getLegacyItemId() : int{ - return $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN; - } - - protected function writeStateToItemMeta() : int{ - return CoralTypeIdMap::getInstance()->toId($this->coralType); - } - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } protected function decodeState(BlockDataReader $r) : void{ @@ -98,4 +89,8 @@ final class FloorCoralFan extends BaseCoral{ private function canBeSupportedBy(Block $block) : bool{ return $block->getSupportType(Facing::UP)->hasCenterSupport(); } + + public function asItem() : Item{ + return VanillaItems::CORAL_FAN()->setCoralType($this->coralType)->setDead($this->dead); + } } diff --git a/src/block/MelonStem.php b/src/block/MelonStem.php index d0282a546..8ead526af 100644 --- a/src/block/MelonStem.php +++ b/src/block/MelonStem.php @@ -23,9 +23,16 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\Item; +use pocketmine\item\VanillaItems; + class MelonStem extends Stem{ protected function getPlant() : Block{ return VanillaBlocks::MELON(); } + + public function asItem() : Item{ + return VanillaItems::MELON_SEEDS(); + } } diff --git a/src/block/Potato.php b/src/block/Potato.php index 209107156..47d39f612 100644 --- a/src/block/Potato.php +++ b/src/block/Potato.php @@ -39,7 +39,7 @@ class Potato extends Crops{ return $result; } - public function getPickedItem(bool $addUserData = false) : Item{ + public function asItem() : Item{ return VanillaItems::POTATO(); } } diff --git a/src/block/PumpkinStem.php b/src/block/PumpkinStem.php index d7b8e2588..9151ce2dc 100644 --- a/src/block/PumpkinStem.php +++ b/src/block/PumpkinStem.php @@ -23,9 +23,16 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\Item; +use pocketmine\item\VanillaItems; + class PumpkinStem extends Stem{ protected function getPlant() : Block{ return VanillaBlocks::PUMPKIN(); } + + public function asItem() : Item{ + return VanillaItems::PUMPKIN_SEEDS(); + } } diff --git a/src/block/RedstoneWire.php b/src/block/RedstoneWire.php index aff8ec32e..7c770e9c4 100644 --- a/src/block/RedstoneWire.php +++ b/src/block/RedstoneWire.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -54,4 +55,8 @@ class RedstoneWire extends Flowable{ private function canBeSupportedBy(Block $block) : bool{ return $block->getSupportType(Facing::UP)->hasCenterSupport(); } + + public function asItem() : Item{ + return VanillaItems::REDSTONE_DUST(); + } } diff --git a/src/block/Skull.php b/src/block/Skull.php index 461446cbe..5eb2749e7 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -31,6 +31,7 @@ use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SkullType; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -153,7 +154,8 @@ class Skull extends Flowable{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - protected function writeStateToItemMeta() : int{ - return $this->skullType->getMagicNumber(); + public function asItem() : Item{ + //TODO: we might be able to get rid of this + return VanillaItems::MOB_HEAD()->setSkullType($this->skullType); } } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index d713c4164..4ab9251c0 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -26,9 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\BlockDataReader; use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; -use pocketmine\item\ItemIds; +use pocketmine\item\VanillaItems; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -38,14 +37,6 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - public function getLegacyItemId() : int{ - return $this->dead ? ItemIds::CORAL_FAN_DEAD : ItemIds::CORAL_FAN; - } - - protected function writeStateToItemMeta() : int{ - return CoralTypeIdMap::getInstance()->toId($this->coralType); - } - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } protected function decodeState(BlockDataReader $r) : void{ @@ -77,4 +68,8 @@ final class WallCoralFan extends BaseCoral{ private function canBeSupportedBy(Block $block, int $face) : bool{ return $block->getSupportType($face)->hasCenterSupport(); } + + public function asItem() : Item{ + return VanillaItems::CORAL_FAN()->setCoralType($this->coralType)->setDead($this->dead); + } } diff --git a/src/block/Wheat.php b/src/block/Wheat.php index ccccd015a..15701c976 100644 --- a/src/block/Wheat.php +++ b/src/block/Wheat.php @@ -42,7 +42,7 @@ class Wheat extends Crops{ } } - public function getPickedItem(bool $addUserData = false) : Item{ + public function asItem() : Item{ return VanillaItems::WHEAT_SEEDS(); } } From a64adbfffe4d02a00918b14e7b4e272d2392bb77 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 20:16:55 +0100 Subject: [PATCH 206/692] Fix PHPStan errors --- src/inventory/CreativeInventory.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index c9eced613..136f2da92 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -38,8 +38,14 @@ final class CreativeInventory{ private function __construct(){ $creativeItems = json_decode(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "creativeitems.json")), true); + if(!is_array($creativeItems)){ + throw new SavedDataLoadingException("Invalid creative items file, expected array as root type"); + } foreach($creativeItems as $data){ + if(!is_array($data)){ + throw new SavedDataLoadingException("Invalid creative items file, expected array as item type"); + } try{ $item = Item::legacyJsonDeserialize($data); }catch(SavedDataLoadingException){ From 8858b16a25239d216a1d63c4a047d7cb31be3b81 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jun 2022 20:18:25 +0100 Subject: [PATCH 207/692] Fucking CS again --- src/inventory/CreativeInventory.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 136f2da92..9c405b92c 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -28,6 +28,7 @@ use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; use function file_get_contents; +use function is_array; use function json_decode; final class CreativeInventory{ From 7994da07becbe476910418437c539a73cecae011 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 16:37:39 +0100 Subject: [PATCH 208/692] Crafting recipe network serialization no longer depends on PM's internal legacy metadata WOOOOOOOOOOOOOOOOOOOOOOHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!! --- composer.lock | 8 +- .../mcpe/convert/BlockStateDictionary.php | 85 ++++++++++++++++--- .../convert/BlockStateDictionaryEntry.php | 38 +++++++++ .../mcpe/convert/RuntimeBlockMapping.php | 7 +- src/network/mcpe/convert/TypeConverter.php | 26 ++++-- tools/generate-block-palette-spec.php | 20 ++++- 6 files changed, 156 insertions(+), 28 deletions(-) create mode 100644 src/network/mcpe/convert/BlockStateDictionaryEntry.php diff --git a/composer.lock b/composer.lock index 50a4050fd..8b5a59aab 100644 --- a/composer.lock +++ b/composer.lock @@ -280,12 +280,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75" + "reference": "a546e15f6a8d7498fb25d5a02ce16184a429bb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75", - "reference": "6a28ede3e9cdf1c548e85ce24382fee5f1bd9d75", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/a546e15f6a8d7498fb25d5a02ce16184a429bb78", + "reference": "a546e15f6a8d7498fb25d5a02ce16184a429bb78", "shasum": "" }, "type": "library", @@ -298,7 +298,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-06-08T14:00:34+00:00" + "time": "2022-07-02T15:28:28+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 48b31e67f..584b7db62 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -27,27 +27,53 @@ use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use function array_map; +use function get_debug_type; +use function is_array; +use function is_int; +use function json_decode; /** * Handles translation of network block runtime IDs into blockstate data, and vice versa */ final class BlockStateDictionary{ - private BlockStateLookupCache $lookupCache; + private BlockStateLookupCache $stateDataToStateIdLookupCache; + /** + * @var int[][]|null + * @phpstan-var array>|null + */ + private ?array $idMetaToStateIdLookupCache = null; /** - * @param BlockStateData[] $states + * @param BlockStateDictionaryEntry[] $states * - * @phpstan-param list $states + * @phpstan-param list $states */ public function __construct( private array $states ){ - $this->lookupCache = new BlockStateLookupCache($this->states); + $this->stateDataToStateIdLookupCache = new BlockStateLookupCache(array_map(fn(BlockStateDictionaryEntry $entry) => $entry->getStateData(), $this->states)); + } + + /** + * @return int[][] + * @phpstan-return array> + */ + private function getIdMetaToStateIdLookup() : array{ + if($this->idMetaToStateIdLookupCache === null){ + //TODO: if we ever allow mutating the dictionary, this would need to be rebuilt on modification + $this->idMetaToStateIdLookupCache = []; + + foreach($this->states as $i => $state){ + $this->idMetaToStateIdLookupCache[$state->getMeta()][$state->getStateData()->getName()] = $i; + } + } + + return $this->idMetaToStateIdLookupCache; } public function getDataFromStateId(int $networkRuntimeId) : ?BlockStateData{ - return $this->states[$networkRuntimeId] ?? null; + return ($this->states[$networkRuntimeId] ?? null)?->getStateData(); } /** @@ -55,20 +81,55 @@ final class BlockStateDictionary{ * Returns null if there were no matches. */ public function lookupStateIdFromData(BlockStateData $data) : ?int{ - return $this->lookupCache->lookupStateId($data); + return $this->stateDataToStateIdLookupCache->lookupStateId($data); + } + + /** + * Returns the blockstate meta value associated with the given blockstate runtime ID. + * This is used for serializing crafting recipe inputs. + */ + public function getMetaFromStateId(int $networkRuntimeId) : ?int{ + return ($this->states[$networkRuntimeId] ?? null)?->getMeta(); + } + + /** + * Returns the blockstate data associated with the given block ID and meta value. + * This is used for deserializing crafting recipe inputs. + */ + public function lookupStateIdFromIdMeta(string $id, int $meta) : ?int{ + return $this->getIdMetaToStateIdLookup()[$meta][$id] ?? null; } /** * Returns an array mapping runtime ID => blockstate data. - * @return BlockStateData[] - * @phpstan-return array + * @return BlockStateDictionaryEntry[] + * @phpstan-return array */ public function getStates() : array{ return $this->states; } - public static function loadFromString(string $contents) : self{ - return new self(array_map( + public static function loadFromString(string $blockPaletteContents, string $metaMapContents) : self{ + $metaMap = json_decode($metaMapContents, flags: JSON_THROW_ON_ERROR); + if(!is_array($metaMap)){ + throw new \InvalidArgumentException("Invalid metaMap, expected array for root type, got " . get_debug_type($metaMap)); + } + + $entries = []; + $states = array_map( fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), - (new NetworkNbtSerializer())->readMultiple($contents) - )); + (new NetworkNbtSerializer())->readMultiple($blockPaletteContents) + ); + + foreach($states as $i => $state){ + $meta = $metaMap[$i] ?? null; + if($meta === null){ + throw new \InvalidArgumentException("Missing associated meta value for state $i (" . $state->toNbt() . ")"); + } + if(!is_int($meta)){ + throw new \InvalidArgumentException("Invalid metaMap offset $i, expected int, got " . get_debug_type($meta)); + } + $entries[$i] = new BlockStateDictionaryEntry($state, $meta); + } + + return new self($entries); } } diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php new file mode 100644 index 000000000..53229963b --- /dev/null +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -0,0 +1,38 @@ +stateData; } + + public function getMeta() : int{ return $this->meta; } +} diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index c0373de11..9c9402d31 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -53,9 +53,12 @@ final class RuntimeBlockMapping{ private static function make() : self{ $canonicalBlockStatesFile = Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt"); - $contents = Utils::assumeNotFalse(file_get_contents($canonicalBlockStatesFile), "Missing required resource file"); + $canonicalBlockStatesRaw = Utils::assumeNotFalse(file_get_contents($canonicalBlockStatesFile), "Missing required resource file"); + + $metaMappingFile = Path::join(\pocketmine\BEDROCK_DATA_PATH, 'block_state_meta_map.json'); + $metaMappingRaw = Utils::assumeNotFalse(file_get_contents($metaMappingFile), "Missing required resource file"); return new self( - BlockStateDictionary::loadFromString($contents), + BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw), GlobalBlockStateHandlers::getSerializer() ); } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 653ffed75..4f58a2835 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -32,6 +32,7 @@ use pocketmine\block\VanillaBlocks; use pocketmine\crafting\ExactRecipeIngredient; use pocketmine\crafting\MetaWildcardRecipeIngredient; use pocketmine\crafting\RecipeIngredient; +use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\data\SavedDataLoadingException; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; @@ -126,11 +127,12 @@ class TypeConverter{ $meta = self::RECIPE_INPUT_WILDCARD_META; }elseif($ingredient instanceof ExactRecipeIngredient){ $item = $ingredient->getItem(); - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($item); - if($id < 256){ - //TODO: this is needed for block crafting recipes to work - we need to replace this with some kind of - //blockstate <-> meta mapping table so that we can remove the legacy code from the core - $meta = $item->getMeta(); + [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId($item); + if($blockRuntimeId !== ItemTranslator::NO_BLOCK_RUNTIME_ID){ + $meta = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->getMetaFromStateId($blockRuntimeId); + if($meta === null){ + throw new AssumptionFailedError("Every block state should have an associated meta value"); + } } }else{ throw new \LogicException("Unsupported recipe ingredient type " . get_class($ingredient) . ", only " . ExactRecipeIngredient::class . " and " . MetaWildcardRecipeIngredient::class . " are supported"); @@ -143,13 +145,21 @@ class TypeConverter{ return null; } + $itemId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromIntId($ingredient->getId()); + if($ingredient->getMeta() === self::RECIPE_INPUT_WILDCARD_META){ - $itemId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromIntId($ingredient->getId()); return new MetaWildcardRecipeIngredient($itemId); } - //TODO: this won't be handled properly for blockitems because a block runtimeID is expected rather than a meta value - $result = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), $ingredient->getMeta(), 0); + $meta = $ingredient->getMeta(); + $blockRuntimeId = null; + if(($blockId = BlockItemIdMap::getInstance()->lookupBlockId($itemId)) !== null){ + $blockRuntimeId = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->lookupStateIdFromIdMeta($blockId, $meta); + if($blockRuntimeId !== null){ + $meta = 0; + } + } + $result = ItemTranslator::getInstance()->fromNetworkId($ingredient->getId(), $meta, $blockRuntimeId ?? ItemTranslator::NO_BLOCK_RUNTIME_ID); return new ExactRecipeIngredient($result); } diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index 330e53123..a9992ec1a 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -23,14 +23,19 @@ declare(strict_types=1); namespace pocketmine\tools\generate_block_palette_spec; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; +use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\convert\BlockStateDictionary; +use pocketmine\network\mcpe\convert\BlockStateDictionaryEntry; +use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; +use function array_map; use function array_values; use function count; use function dirname; @@ -51,15 +56,26 @@ if(count($argv) !== 3){ [, $inputFile, $outputFile] = $argv; try{ - $palette = BlockStateDictionary::loadFromString(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))); + $states = array_map( + fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), + (new NetworkNbtSerializer())->readMultiple(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))) + ); }catch(NbtException){ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); } +$entries = []; +$fakeMeta = []; +foreach($states as $state){ + $fakeMeta[$state->getName()] ??= 0; + $entries[] = new BlockStateDictionaryEntry($state, $fakeMeta[$state->getName()]++); +} +$palette = new BlockStateDictionary($entries); $reportMap = []; -foreach($palette->getStates() as $state){ +foreach($palette->getStates() as $entry){ + $state = $entry->getStateData(); $name = $state->getName(); foreach($state->getStates() as $propertyName => $value){ if($value instanceof IntTag || $value instanceof StringTag){ From 3792ef5a50c3b9b8cdd16ecb72222b2e387a8c53 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 16:48:41 +0100 Subject: [PATCH 209/692] Move blockstate data runtime serialization to a more appropriate package --- src/block/Anvil.php | 4 ++-- src/block/Bamboo.php | 4 ++-- src/block/BambooSapling.php | 4 ++-- src/block/Barrel.php | 4 ++-- src/block/Bed.php | 4 ++-- src/block/Bedrock.php | 4 ++-- src/block/Bell.php | 8 ++++---- src/block/Block.php | 4 ++-- src/block/BrewingStand.php | 8 ++++---- src/block/Button.php | 4 ++-- src/block/Cactus.php | 4 ++-- src/block/Cake.php | 4 ++-- src/block/CocoaBlock.php | 4 ++-- src/block/Crops.php | 4 ++-- src/block/DaylightSensor.php | 4 ++-- src/block/DetectorRail.php | 4 ++-- src/block/Dirt.php | 4 ++-- src/block/Door.php | 4 ++-- src/block/DoublePlant.php | 4 ++-- src/block/EndPortalFrame.php | 4 ++-- src/block/Farmland.php | 4 ++-- src/block/FenceGate.php | 4 ++-- src/block/Fire.php | 4 ++-- src/block/FloorCoralFan.php | 4 ++-- src/block/FrostedIce.php | 4 ++-- src/block/Furnace.php | 4 ++-- src/block/Hopper.php | 4 ++-- src/block/ItemFrame.php | 4 ++-- src/block/Lantern.php | 4 ++-- src/block/Leaves.php | 4 ++-- src/block/Lectern.php | 4 ++-- src/block/Lever.php | 8 ++++---- src/block/Liquid.php | 4 ++-- src/block/NetherPortal.php | 4 ++-- src/block/NetherWartPlant.php | 4 ++-- src/block/Rail.php | 4 ++-- src/block/RedMushroomBlock.php | 8 ++++---- src/block/RedstoneComparator.php | 4 ++-- src/block/RedstoneLamp.php | 4 ++-- src/block/RedstoneOre.php | 4 ++-- src/block/RedstoneRepeater.php | 4 ++-- src/block/RedstoneTorch.php | 4 ++-- src/block/Sapling.php | 4 ++-- src/block/SeaPickle.php | 4 ++-- src/block/ShulkerBox.php | 4 ++-- src/block/SimplePressurePlate.php | 4 ++-- src/block/Skull.php | 8 ++++---- src/block/Slab.php | 8 ++++---- src/block/SnowLayer.php | 4 ++-- src/block/Sponge.php | 4 ++-- src/block/Stair.php | 4 ++-- src/block/StraightOnlyRail.php | 4 ++-- src/block/Sugarcane.php | 4 ++-- src/block/SweetBerryBush.php | 4 ++-- src/block/TNT.php | 4 ++-- src/block/Torch.php | 4 ++-- src/block/Trapdoor.php | 4 ++-- src/block/Tripwire.php | 4 ++-- src/block/TripwireHook.php | 4 ++-- src/block/Vine.php | 4 ++-- src/block/Wall.php | 4 ++-- src/block/WallCoralFan.php | 4 ++-- src/block/utils/AnalogRedstoneSignalEmitterTrait.php | 3 +++ src/block/utils/AnyFacingTrait.php | 2 ++ src/block/utils/ColoredTrait.php | 4 ++++ src/block/utils/CoralTypeTrait.php | 4 ++++ src/block/utils/HorizontalFacingTrait.php | 2 ++ src/block/utils/PillarRotationTrait.php | 2 ++ src/block/utils/RailPoweredByRedstoneTrait.php | 3 +++ src/block/utils/SignLikeRotationTrait.php | 2 ++ .../utils => data/runtime/block}/BlockDataReader.php | 3 ++- .../runtime/block}/BlockDataReaderHelper.php | 12 +++++++++++- .../utils => data/runtime/block}/BlockDataWriter.php | 3 ++- .../runtime/block}/BlockDataWriterHelper.php | 12 +++++++++++- 74 files changed, 184 insertions(+), 140 deletions(-) rename src/{block/utils => data/runtime/block}/BlockDataReader.php (97%) rename src/{block/utils => data/runtime/block}/BlockDataReaderHelper.php (94%) rename src/{block/utils => data/runtime/block}/BlockDataWriter.php (97%) rename src/{block/utils => data/runtime/block}/BlockDataWriterHelper.php (94%) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index a2aef2161..06a782ae8 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\inventory\AnvilInventory; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 61284cfdd..6011b88a1 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 6171657c4..05addc057 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 748bfd335..e26b4aa8e 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; diff --git a/src/block/Bed.php b/src/block/Bed.php index 46d21a23a..e58163c05 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Bed as TileBed; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 3528e8d42..8a187b741 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class Bedrock extends Opaque{ private bool $burnsForever = false; diff --git a/src/block/Bell.php b/src/block/Bell.php index 3388bb516..175be9d47 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -25,12 +25,12 @@ namespace pocketmine\block; use pocketmine\block\tile\Bell as TileBell; use pocketmine\block\utils\BellAttachmentType; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/Block.php b/src/block/Block.php index 6d9b2bd72..2c1ae5199 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -28,9 +28,9 @@ namespace pocketmine\block; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\Item; diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 5c732689e..cee9d0cc3 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\BrewingStand as TileBrewingStand; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; diff --git a/src/block/Button.php b/src/block/Button.php index 82db565ef..7e813af26 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 3b69e0f43..83b8dcca4 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\event\block\BlockGrowEvent; use pocketmine\event\entity\EntityDamageByBlockEvent; diff --git a/src/block/Cake.php b/src/block/Cake.php index 40b100f0b..1bd28aa57 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\FoodSource; use pocketmine\entity\Living; diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 572a098ee..1e06517fc 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; diff --git a/src/block/Crops.php b/src/block/Crops.php index a4976f044..15fc75752 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index da4c034a8..f2f2fd6c8 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index ecf7ee50d..61667e9b8 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 735e66527..f77baafc2 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Hoe; use pocketmine\item\Item; use pocketmine\math\Facing; diff --git a/src/block/Door.php b/src/block/Door.php index 7843a9377..c00b6d171 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index add4fce8e..29f567d12 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index aace740a6..f69262c97 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 97a24fa72..fbd2212d0 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\entity\EntityTrampleFarmlandEvent; diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 1541322bb..6f5f1c9a4 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/Fire.php b/src/block/Fire.php index d13ca247a..8805c5653 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\projectile\Arrow; use pocketmine\event\block\BlockBurnEvent; diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 6dcd5420a..3a37af749 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index be19be5b4..184f2ba87 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockMeltEvent; use function mt_rand; diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 0dc1e0d1c..46bd76081 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Furnace as TileFurnace; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; diff --git a/src/block/Hopper.php b/src/block/Hopper.php index f8ce02fd7..bba31f314 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -24,11 +24,11 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 762b5d6b0..38ac5fc44 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; diff --git a/src/block/Lantern.php b/src/block/Lantern.php index 54a7e1b8c..db560584c 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 1283f912a..550afa322 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\LeavesDecayEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 708dcd47d..e17d29961 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -24,11 +24,11 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Lectern as TileLectern; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\item\WritableBookBase; use pocketmine\math\AxisAlignedBB; diff --git a/src/block/Lever.php b/src/block/Lever.php index 652dd7286..d65b47849 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\LeverFacing; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/block/Liquid.php b/src/block/Liquid.php index dca825ad8..1ad1c112a 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\MinimumCostFlowCalculator; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\event\block\BlockFormEvent; use pocketmine\event\block\BlockSpreadEvent; diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 5317de232..883eb2899 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 9cd151657..5d6bc8a31 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Item; use pocketmine\math\Facing; diff --git a/src/block/Rail.php b/src/block/Rail.php index dc93f15d6..74f388647 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\Facing; use function array_keys; use function implode; diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 22a141d2a..2a4b9906b 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\MushroomBlockType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use function mt_rand; diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index cc2dbaa89..a531889d1 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -25,11 +25,11 @@ namespace pocketmine\block; use pocketmine\block\tile\Comparator; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 6a6919edc..e81f8e805 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\PoweredByRedstoneTrait; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 769521857..e0a183860 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index c56869f9a..5e3ff6ba2 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index ada02e26c..de6f1c92f 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class RedstoneTorch extends Torch{ protected bool $lit = true; diff --git a/src/block/Sapling.php b/src/block/Sapling.php index f2bfd2af4..39aaba3ba 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\TreeType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index c85d700a9..3dd1f74ad 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index bec196838..49aa3ae85 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index 7bdfc7118..ad60f6ba5 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; diff --git a/src/block/Skull.php b/src/block/Skull.php index 5eb2749e7..140c71574 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SkullType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; diff --git a/src/block/Slab.php b/src/block/Slab.php index 6abab61f6..e562c7adb 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -23,12 +23,12 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataReaderHelper; -use pocketmine\block\utils\BlockDataWriter; -use pocketmine\block\utils\BlockDataWriterHelper; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 9894dd43a..6642faaa8 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockMeltEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; diff --git a/src/block/Sponge.php b/src/block/Sponge.php index 9fca8e9dc..c9624cde3 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class Sponge extends Opaque{ protected bool $wet = false; diff --git a/src/block/Stair.php b/src/block/Stair.php index 9242b36ab..6ccfb1312 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\StairShape; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index c2c171642..93af1c4cc 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use function array_keys; use function implode; diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 320a484f8..9643b7c4f 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index a8c302d61..0220125c4 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\block\BlockGrowEvent; diff --git a/src/block/TNT.php b/src/block/TNT.php index bd7d13b43..b5f663a72 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; diff --git a/src/block/Torch.php b/src/block/Torch.php index 02cbec2d2..6d887f2c4 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 42f973a4b..4291e4ba4 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 954fa888a..025f218ce 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; class Tripwire extends Flowable{ protected bool $triggered = false; diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 2f76f184f..76cfa931c 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/block/Vine.php b/src/block/Vine.php index 1ac2157ef..e0bb154dc 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; diff --git a/src/block/Wall.php b/src/block/Wall.php index ae781b32d..15b6b6486 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WallConnectionType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 4ab9251c0..a0d710d70 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\BlockDataReader; -use pocketmine\block\utils\BlockDataWriter; use pocketmine\block\utils\HorizontalFacingTrait; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index aa037f1ca..513ca4776 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -23,6 +23,9 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; + trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 982d5623c..580dbbd66 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\Facing; trait AnyFacingTrait{ diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index afd060229..04d8996fd 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -25,6 +25,10 @@ namespace pocketmine\block\utils; use pocketmine\block\Block; use pocketmine\data\bedrock\DyeColorIdMap; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; trait ColoredTrait{ /** @var DyeColor */ diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 5cc3f0875..ab6fd66f1 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -24,6 +24,10 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataReaderHelper; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\block\BlockDataWriterHelper; trait CoralTypeTrait{ protected CoralType $coralType; diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 0da0a9ca1..cadcf2ede 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 1d4503ff7..03176ed92 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 9bc98303a..7a402d8e2 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -23,6 +23,9 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; + trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index e4ee5f868..b67829492 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use function floor; trait SignLikeRotationTrait{ diff --git a/src/block/utils/BlockDataReader.php b/src/data/runtime/block/BlockDataReader.php similarity index 97% rename from src/block/utils/BlockDataReader.php rename to src/data/runtime/block/BlockDataReader.php index dbb3f9386..5434c05b4 100644 --- a/src/block/utils/BlockDataReader.php +++ b/src/data/runtime/block/BlockDataReader.php @@ -21,8 +21,9 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\data\runtime\block; +use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; diff --git a/src/block/utils/BlockDataReaderHelper.php b/src/data/runtime/block/BlockDataReaderHelper.php similarity index 94% rename from src/block/utils/BlockDataReaderHelper.php rename to src/data/runtime/block/BlockDataReaderHelper.php index c0dba20ef..b8a3f7703 100644 --- a/src/block/utils/BlockDataReaderHelper.php +++ b/src/data/runtime/block/BlockDataReaderHelper.php @@ -21,7 +21,17 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\data\runtime\block; + +use pocketmine\block\utils\BellAttachmentType; +use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\LeverFacing; +use pocketmine\block\utils\MushroomBlockType; +use pocketmine\block\utils\SkullType; +use pocketmine\block\utils\SlabType; +use pocketmine\block\utils\StairShape; +use pocketmine\block\utils\TreeType; final class BlockDataReaderHelper{ diff --git a/src/block/utils/BlockDataWriter.php b/src/data/runtime/block/BlockDataWriter.php similarity index 97% rename from src/block/utils/BlockDataWriter.php rename to src/data/runtime/block/BlockDataWriter.php index 774a58484..a4d87a5df 100644 --- a/src/block/utils/BlockDataWriter.php +++ b/src/data/runtime/block/BlockDataWriter.php @@ -21,8 +21,9 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\data\runtime\block; +use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; diff --git a/src/block/utils/BlockDataWriterHelper.php b/src/data/runtime/block/BlockDataWriterHelper.php similarity index 94% rename from src/block/utils/BlockDataWriterHelper.php rename to src/data/runtime/block/BlockDataWriterHelper.php index f8f00060d..1a49fac72 100644 --- a/src/block/utils/BlockDataWriterHelper.php +++ b/src/data/runtime/block/BlockDataWriterHelper.php @@ -21,7 +21,17 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\data\runtime\block; + +use pocketmine\block\utils\BellAttachmentType; +use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\LeverFacing; +use pocketmine\block\utils\MushroomBlockType; +use pocketmine\block\utils\SkullType; +use pocketmine\block\utils\SlabType; +use pocketmine\block\utils\StairShape; +use pocketmine\block\utils\TreeType; final class BlockDataWriterHelper{ From b5914f4587240a346011df633f487196af011d58 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 16:58:28 +0100 Subject: [PATCH 210/692] phpstorm ... --- src/data/runtime/block/BlockDataReader.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/runtime/block/BlockDataReader.php b/src/data/runtime/block/BlockDataReader.php index 5434c05b4..5164ff53e 100644 --- a/src/data/runtime/block/BlockDataReader.php +++ b/src/data/runtime/block/BlockDataReader.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\runtime\block; +use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; From 9740891a2fdebce9275adc0139f8f1caa4a4056f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 17:01:10 +0100 Subject: [PATCH 211/692] Move BlockLegacyMetadata to pocketmine\data package --- src/block/BlockFactory.php | 2 +- src/block/BlockLegacyIdHelper.php | 1 + src/block/CoralBlock.php | 1 + src/block/Dirt.php | 1 + src/block/Rail.php | 1 + src/block/Sponge.php | 1 + src/block/StraightOnlyRail.php | 1 + src/block/TNT.php | 1 + src/block/utils/RailConnectionInfo.php | 2 +- src/data/bedrock/CoralTypeIdMap.php | 2 +- src/data/bedrock/MushroomBlockTypeIdMap.php | 2 +- src/{ => data/bedrock}/block/BlockLegacyMetadata.php | 2 +- .../bedrock/block/convert/BlockObjectToBlockStateSerializer.php | 2 +- src/data/bedrock/block/convert/BlockStateDeserializerHelper.php | 2 +- .../block/convert/BlockStateToBlockObjectDeserializer.php | 2 +- 15 files changed, 15 insertions(+), 8 deletions(-) rename src/{ => data/bedrock}/block/BlockLegacyMetadata.php (99%) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 41396b5f1..871008c7d 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockLegacyMetadata as Meta; use pocketmine\block\BlockToolType as ToolType; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Banner as TileBanner; @@ -54,6 +53,7 @@ use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\TreeType; +use pocketmine\data\bedrock\block\BlockLegacyMetadata as Meta; use pocketmine\item\Item; use pocketmine\item\ItemIds; use pocketmine\item\ToolTier; diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 5b83825b1..de98d2316 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -28,6 +28,7 @@ use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\TreeType; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\item\ItemIds; use pocketmine\utils\AssumptionFailedError; diff --git a/src/block/CoralBlock.php b/src/block/CoralBlock.php index 2075af358..336b171a9 100644 --- a/src/block/CoralBlock.php +++ b/src/block/CoralBlock.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use function mt_rand; diff --git a/src/block/Dirt.php b/src/block/Dirt.php index f77baafc2..1a0fcaaeb 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Hoe; diff --git a/src/block/Rail.php b/src/block/Rail.php index 74f388647..a98b51416 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\math\Facing; diff --git a/src/block/Sponge.php b/src/block/Sponge.php index c9624cde3..dc5f21d0a 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 93af1c4cc..0d125baa7 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use function array_keys; diff --git a/src/block/TNT.php b/src/block/TNT.php index b5f663a72..50803bbc9 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; diff --git a/src/block/utils/RailConnectionInfo.php b/src/block/utils/RailConnectionInfo.php index c12c53b31..f343bb726 100644 --- a/src/block/utils/RailConnectionInfo.php +++ b/src/block/utils/RailConnectionInfo.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\block\BlockLegacyMetadata; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\math\Facing; final class RailConnectionInfo{ diff --git a/src/data/bedrock/CoralTypeIdMap.php b/src/data/bedrock/CoralTypeIdMap.php index 134c0053b..fd1651206 100644 --- a/src/data/bedrock/CoralTypeIdMap.php +++ b/src/data/bedrock/CoralTypeIdMap.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; -use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\utils\CoralType; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\utils\SingletonTrait; use function array_key_exists; diff --git a/src/data/bedrock/MushroomBlockTypeIdMap.php b/src/data/bedrock/MushroomBlockTypeIdMap.php index 1e288cb84..2eec17549 100644 --- a/src/data/bedrock/MushroomBlockTypeIdMap.php +++ b/src/data/bedrock/MushroomBlockTypeIdMap.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; -use pocketmine\block\BlockLegacyMetadata as LegacyMeta; use pocketmine\block\utils\MushroomBlockType; +use pocketmine\data\bedrock\block\BlockLegacyMetadata as LegacyMeta; use pocketmine\utils\SingletonTrait; use function array_key_exists; diff --git a/src/block/BlockLegacyMetadata.php b/src/data/bedrock/block/BlockLegacyMetadata.php similarity index 99% rename from src/block/BlockLegacyMetadata.php rename to src/data/bedrock/block/BlockLegacyMetadata.php index aa46934e1..a465f1274 100644 --- a/src/block/BlockLegacyMetadata.php +++ b/src/data/bedrock/block/BlockLegacyMetadata.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\block; +namespace pocketmine\data\bedrock\block; /** * Constants for legacy metadata for various blocks. diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index ec3f51236..1ed913d2e 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -33,7 +33,6 @@ use pocketmine\block\Beetroot; use pocketmine\block\Bell; use pocketmine\block\Block; use pocketmine\block\BlockFactory; -use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\BoneBlock; use pocketmine\block\BrewingStand; use pocketmine\block\BrownMushroomBlock; @@ -139,6 +138,7 @@ use pocketmine\block\WoodenPressurePlate; use pocketmine\block\WoodenStairs; use pocketmine\block\WoodenTrapdoor; use pocketmine\block\Wool; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateNames as StateNames; use pocketmine\data\bedrock\block\BlockStateSerializeException; diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index a1c2719fc..cad6bfad8 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\Button; use pocketmine\block\Crops; use pocketmine\block\DaylightSensor; @@ -47,6 +46,7 @@ use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; use pocketmine\block\WeightedPressurePlate; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index ad0801c11..8002cd31e 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -25,13 +25,13 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; -use pocketmine\block\BlockLegacyMetadata; use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; +use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateDeserializer; From 323c56368427156bdf24d3f66dc7a12e1d29f600 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 17:29:28 +0100 Subject: [PATCH 212/692] Break Block's dependence on ItemFactory, and item legacy IDs let's GOOOOOOOOOOOOOOOOOOOOOOOOOOOOO --- src/block/BaseSign.php | 13 ++++- src/block/Block.php | 41 ++++++++++----- src/block/BlockFactory.php | 17 +++++- src/block/BlockLegacyIdHelper.php | 61 +++++++++++++--------- src/block/Tripwire.php | 6 +++ src/item/Item.php | 2 +- src/item/ItemBlock.php | 15 ++++-- src/item/ItemIdentifier.php | 5 +- src/network/mcpe/convert/TypeConverter.php | 26 --------- 9 files changed, 113 insertions(+), 73 deletions(-) diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index 6db874a25..415e45977 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -41,9 +41,16 @@ abstract class BaseSign extends Transparent{ protected SignText $text; protected ?int $editorEntityRuntimeId = null; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + /** @var \Closure() : Item */ + private \Closure $asItemCallback; + + /** + * @param \Closure() : Item $asItemCallback + */ + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, \Closure $asItemCallback){ parent::__construct($idInfo, $name, $breakInfo); $this->text = new SignText(); + $this->asItemCallback = $asItemCallback; } public function readStateFromWorld() : void{ @@ -139,4 +146,8 @@ abstract class BaseSign extends Transparent{ return false; } + + public function asItem() : Item{ + return ($this->asItemCallback)(); + } } diff --git a/src/block/Block.php b/src/block/Block.php index 2c1ae5199..358c665e8 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -34,7 +34,7 @@ use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; +use pocketmine\item\ItemBlock; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; use pocketmine\math\RayTraceResult; @@ -90,10 +90,7 @@ class Block{ } public function asItem() : Item{ - return ItemFactory::getInstance()->get( - $this->getLegacyItemId(), - $this->getLegacyItemMeta() - ); + return new ItemBlock($this); } public function getLegacyItemId() : int{ @@ -112,10 +109,9 @@ class Block{ public function getRequiredStateDataBits() : int{ return 0; } - final public function decodeStateData(int $data) : void{ + final public function decodeTypeData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); - $stateBits = $this->getRequiredStateDataBits(); - $givenBits = $typeBits + $stateBits; + $givenBits = $typeBits; $reader = new BlockDataReader($givenBits, $data); $this->decodeType($reader); @@ -123,6 +119,14 @@ class Block{ if($typeBits !== $readBits){ throw new \LogicException("Exactly $typeBits bits of type data were provided, but $readBits were read"); } + } + + final public function decodeStateData(int $data) : void{ + $typeBits = $this->getRequiredTypeDataBits(); + $stateBits = $this->getRequiredStateDataBits(); + $givenBits = $typeBits + $stateBits; + $reader = new BlockDataReader($givenBits, $data); + $this->decodeTypeData($reader->readInt($typeBits)); $this->decodeState($reader); $readBits = $reader->getOffset() - $typeBits; @@ -139,6 +143,20 @@ class Block{ //NOOP } + final public function computeTypeData() : int{ + $typeBits = $this->getRequiredTypeDataBits(); + $requiredBits = $typeBits; + $writer = new BlockDataWriter($requiredBits); + + $this->encodeType($writer); + $writtenBits = $writer->getOffset(); + if($typeBits !== $writtenBits){ + throw new \LogicException("Exactly $typeBits bits of type data were expected, but $writtenBits were written"); + } + + return $writer->getValue(); + } + /** * @internal */ @@ -147,12 +165,7 @@ class Block{ $stateBits = $this->getRequiredStateDataBits(); $requiredBits = $typeBits + $stateBits; $writer = new BlockDataWriter($requiredBits); - - $this->encodeType($writer); - $writtenBits = $writer->getOffset(); - if($typeBits !== $writtenBits){ - throw new \LogicException("Exactly $typeBits bits of type data were expected, but $writtenBits were written"); - } + $writer->writeInt($typeBits, $this->computeTypeData()); $this->encodeState($writer); $writtenBits = $writer->getOffset() - $typeBits; diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 871008c7d..f887e17a1 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -480,8 +480,9 @@ class BlockFactory{ $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($treeType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo)); $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($treeType), $name . " Trapdoor", $woodenDoorBreakInfo)); - $this->register(new FloorSign(BlockLegacyIdHelper::getWoodenFloorSignIdentifier($treeType), $name . " Sign", $signBreakInfo)); - $this->register(new WallSign(BlockLegacyIdHelper::getWoodenWallSignIdentifier($treeType), $name . " Wall Sign", $signBreakInfo)); + [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($treeType); + $this->register(new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $signAsItem)); + $this->register(new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $signAsItem)); } $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); @@ -923,6 +924,18 @@ class BlockFactory{ return $block; } + /** + * @internal + * Returns the default state of the block type associated with the given type ID. + */ + public function fromTypeId(int $typeId) : ?Block{ + if(isset($this->typeIndex[$typeId])){ + return clone $this->typeIndex[$typeId]; + } + + return null; + } + public function fromFullBlock(int $fullState) : Block{ return $this->get($fullState >> Block::INTERNAL_STATE_DATA_BITS, $fullState & Block::INTERNAL_STATE_DATA_MASK); } diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index de98d2316..0574e754a 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -30,6 +30,7 @@ use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\TreeType; use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\item\ItemIds; +use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; final class BlockLegacyIdHelper{ @@ -130,38 +131,48 @@ final class BlockLegacyIdHelper{ }, ItemIds::SAPLING, $treeType->getMagicNumber()); } - public static function getWoodenFloorSignIdentifier(TreeType $treeType) : BID{ + /** + * @return BID[]|\Closure[] + * @phpstan-return array{BID, BID, \Closure() : \pocketmine\item\Item} + */ + public static function getWoodenSignInfo(TreeType $treeType) : array{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_SIGN, ItemIds::SIGN, 0, TileSign::class); + return [ + new BID(Ids::OAK_SIGN, ItemIds::SIGN, 0, TileSign::class), + new BID(Ids::OAK_WALL_SIGN, ItemIds::SIGN, 0, TileSign::class), + fn() => VanillaItems::OAK_SIGN() + ]; case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class); + return [ + new BID(Ids::SPRUCE_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class), + new BID(Ids::SPRUCE_WALL_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class), + fn() => VanillaItems::SPRUCE_SIGN() + ]; case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class); + return [ + new BID(Ids::BIRCH_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class), + new BID(Ids::BIRCH_WALL_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class), + fn() => VanillaItems::BIRCH_SIGN() + ]; case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class); + return [ + new BID(Ids::JUNGLE_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class), + new BID(Ids::JUNGLE_WALL_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class), + fn() => VanillaItems::JUNGLE_SIGN() + ]; case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class); + return [ + new BID(Ids::ACACIA_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class), + new BID(Ids::ACACIA_WALL_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class), + fn() => VanillaItems::ACACIA_SIGN() + ]; case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class); - } - throw new AssumptionFailedError("Switch should cover all wood types"); - } - - public static function getWoodenWallSignIdentifier(TreeType $treeType) : BID{ - switch($treeType->id()){ - case TreeType::OAK()->id(): - return new BID(Ids::OAK_WALL_SIGN, ItemIds::SIGN, 0, TileSign::class); - case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_WALL_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class); - case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_WALL_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class); - case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_WALL_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class); - case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_WALL_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class); - case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_WALL_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class); + return [ + new BID(Ids::DARK_OAK_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class), + new BID(Ids::DARK_OAK_WALL_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class), + fn() => VanillaItems::DARK_OAK_SIGN() + ]; } throw new AssumptionFailedError("Switch should cover all wood types"); } diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 025f218ce..53722d996 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -25,6 +25,8 @@ namespace pocketmine\block; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\item\Item; +use pocketmine\item\VanillaItems; class Tripwire extends Flowable{ protected bool $triggered = false; @@ -79,4 +81,8 @@ class Tripwire extends Flowable{ $this->disarmed = $disarmed; return $this; } + + public function asItem() : Item{ + return VanillaItems::STRING(); + } } diff --git a/src/item/Item.php b/src/item/Item.php index 13d5ce80c..a22232b74 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -399,7 +399,7 @@ class Item implements \JsonSerializable{ } public function isNull() : bool{ - return $this->count <= 0 || $this->getId() === ItemIds::AIR; + return $this->count <= 0; } /** diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 6f7914098..ad4311a38 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -25,6 +25,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\BlockFactory; +use pocketmine\block\VanillaBlocks; /** * Class used for Items that directly represent blocks, such as stone, dirt, wood etc. @@ -33,15 +34,23 @@ use pocketmine\block\BlockFactory; * just place wheat crops when used on the ground). */ final class ItemBlock extends Item{ - private int $blockFullId; + private int $blockTypeId; + private int $blockTypeData; public function __construct(Block $block){ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); - $this->blockFullId = $block->getStateId(); + $this->blockTypeId = $block->getTypeId(); + $this->blockTypeData = $block->computeTypeData(); } public function getBlock(?int $clickedFace = null) : Block{ - return BlockFactory::getInstance()->fromFullBlock($this->blockFullId); + //TODO: HACKY MESS, CLEAN IT UP + $blockType = BlockFactory::getInstance()->fromTypeId($this->blockTypeId); + if($blockType === null){ + return VanillaBlocks::AIR(); + } + $blockType->decodeTypeData($this->blockTypeData); + return $blockType; } public function getFuelTime() : int{ diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index e69aa1efc..cf9729379 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -47,7 +47,10 @@ class ItemIdentifier{ public static function fromBlock(Block $block) : self{ //negative item type IDs are treated as block IDs //TODO: maybe an ItemBlockIdentifier is in order? - return new self(-$block->getTypeId(), $block->getLegacyItemId(), $block->getLegacyItemMeta()); + //TODO: this isn't vanilla-compliant, but it'll do for now - we only use the "legacy" item ID/meta for full type + //indexing right now, because item type IDs aren't granular enough + //this should be removed once that's addressed + return new self(-$block->getTypeId(), -$block->getTypeId(), $block->computeTypeData()); } public function getTypeId() : int{ return $this->typeId; } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 4f58a2835..72b883104 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -33,19 +33,15 @@ use pocketmine\crafting\ExactRecipeIngredient; use pocketmine\crafting\MetaWildcardRecipeIngredient; use pocketmine\crafting\RecipeIngredient; use pocketmine\data\bedrock\item\BlockItemIdMap; -use pocketmine\data\SavedDataLoadingException; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; use pocketmine\inventory\transaction\action\DropItemAction; use pocketmine\inventory\transaction\action\InventoryAction; use pocketmine\inventory\transaction\action\SlotChangeAction; use pocketmine\item\Item; -use pocketmine\item\ItemFactory; -use pocketmine\item\ItemIds; use pocketmine\item\VanillaItems; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\nbt\tag\IntTag; use pocketmine\network\mcpe\InventoryManager; use pocketmine\network\mcpe\protocol\types\GameMode as ProtocolGameMode; use pocketmine\network\mcpe\protocol\types\inventory\ContainerIds; @@ -211,28 +207,6 @@ class TypeConverter{ if($compound !== null){ $compound = clone $compound; - - $id = $meta = null; - if($itemResult->getId() === ItemIds::INFO_UPDATE && $itemResult->getMeta() === 0){ - if(($idTag = $compound->getTag(self::PM_ID_TAG)) instanceof IntTag){ - $id = $idTag->getValue(); - $compound->removeTag(self::PM_ID_TAG); - } - if(($metaTag = $compound->getTag(self::PM_META_TAG)) instanceof IntTag){ - $meta = $metaTag->getValue(); - $compound->removeTag(self::PM_META_TAG); - } - } - if($compound->count() === 0){ - $compound = null; - } - if($meta !== null){ - try{ - $itemResult = ItemFactory::getInstance()->get($id ?? $itemResult->getId(), $meta); - }catch(SavedDataLoadingException $e){ - throw new TypeConversionException("Failed loading network item: " . $e->getMessage(), 0, $e); - } - } } $itemResult->setCount($itemStack->getCount()); From b125d4d25f21b2b077ef0d1f9bbb43e7a8bcb628 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 17:48:04 +0100 Subject: [PATCH 213/692] Strip all remaining legacy item ID/meta stuff from blocks the doors are now finally open, we can: - make all the wood types dynamic - fix glazed terracotta - add all the new blocks LET'S GOOOOOOOOOOOO --- src/block/Anvil.php | 4 - src/block/Block.php | 12 - src/block/BlockFactory.php | 848 +++++++++++++++--------------- src/block/BlockIdentifier.php | 20 - src/block/BlockLegacyIdHelper.php | 191 ++++--- src/block/Coral.php | 5 - src/block/CoralBlock.php | 6 - src/block/Dirt.php | 5 - src/block/Sponge.php | 5 - src/block/TNT.php | 5 - src/block/UnknownBlock.php | 17 +- src/block/utils/ColoredTrait.php | 8 - tests/phpunit/block/BlockTest.php | 9 +- 13 files changed, 530 insertions(+), 605 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 06a782ae8..660554ac0 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -47,10 +47,6 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - protected function writeStateToItemMeta() : int{ - return $this->damage << 2; - } - public function getRequiredTypeDataBits() : int{ return 2; } protected function decodeType(BlockDataReader $r) : void{ diff --git a/src/block/Block.php b/src/block/Block.php index 358c665e8..0044fb5a7 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -93,18 +93,6 @@ class Block{ return new ItemBlock($this); } - public function getLegacyItemId() : int{ - return $this->idInfo->getLegacyItemId(); - } - - public function getLegacyItemMeta() : int{ - return $this->idInfo->getLegacyVariant() | $this->writeStateToItemMeta(); - } - - protected function writeStateToItemMeta() : int{ - return 0; - } - public function getRequiredTypeDataBits() : int{ return 0; } public function getRequiredStateDataBits() : int{ return 0; } diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index f887e17a1..44072f5de 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -53,9 +53,7 @@ use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\TreeType; -use pocketmine\data\bedrock\block\BlockLegacyMetadata as Meta; use pocketmine\item\Item; -use pocketmine\item\ItemIds; use pocketmine\item\ToolTier; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; @@ -105,10 +103,10 @@ class BlockFactory{ public function __construct(){ $railBreakInfo = new BlockBreakInfo(0.7); - $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL, ItemIds::ACTIVATOR_RAIL, 0), "Activator Rail", $railBreakInfo)); - $this->register(new Air(new BID(Ids::AIR, ItemIds::AIR, 0), "Air", BreakInfo::indestructible(-1.0))); - $this->register(new Anvil(new BID(Ids::ANVIL, ItemIds::ANVIL, 0), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new Bamboo(new BID(Ids::BAMBOO, ItemIds::BAMBOO, 0), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); + $this->register(new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); + $this->register(new Anvil(new BID(Ids::ANVIL), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ return 0.0; @@ -116,225 +114,225 @@ class BlockFactory{ return parent::getBreakTime($item); } })); - $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING, ItemIds::BAMBOO_SAPLING, 0), "Bamboo Sapling", BreakInfo::instant())); + $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", BreakInfo::instant())); $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new FloorBanner(new BID(Ids::BANNER, ItemIds::BANNER, 0, TileBanner::class), "Banner", $bannerBreakInfo)); - $this->register(new WallBanner(new BID(Ids::WALL_BANNER, ItemIds::BANNER, 0, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - $this->register(new Barrel(new BID(Ids::BARREL, ItemIds::BARREL, 0, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Transparent(new BID(Ids::BARRIER, ItemIds::BARRIER, 0), "Barrier", BreakInfo::indestructible())); - $this->register(new Beacon(new BID(Ids::BEACON, ItemIds::BEACON, 0, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - $this->register(new Bed(new BID(Ids::BED, ItemIds::BED, 0, TileBed::class), "Bed Block", new BreakInfo(0.2))); - $this->register(new Bedrock(new BID(Ids::BEDROCK, ItemIds::BEDROCK, 0), "Bedrock", BreakInfo::indestructible())); + $this->register(new FloorBanner(new BID(Ids::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); + $this->register(new WallBanner(new BID(Ids::WALL_BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); + $this->register(new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Transparent(new BID(Ids::BARRIER), "Barrier", BreakInfo::indestructible())); + $this->register(new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new BreakInfo(3.0))); + $this->register(new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); + $this->register(new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); - $this->register(new Beetroot(new BID(Ids::BEETROOTS, ItemIds::BEETROOT_BLOCK, 0), "Beetroot Block", BreakInfo::instant())); - $this->register(new Bell(new BID(Ids::BELL, ItemIds::BELL, 0, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new BlueIce(new BID(Ids::BLUE_ICE, ItemIds::BLUE_ICE, 0), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK, ItemIds::BONE_BLOCK, 0), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Bookshelf(new BID(Ids::BOOKSHELF, ItemIds::BOOKSHELF, 0), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, ItemIds::BREWING_STAND, 0, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); + $this->register(new Bell(new BID(Ids::BELL, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); + $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); + $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Stair(new BID(Ids::BRICK_STAIRS, ItemIds::BRICK_STAIRS, 0), "Brick Stairs", $bricksBreakInfo)); - $this->register(new Opaque(new BID(Ids::BRICKS, ItemIds::BRICK_BLOCK, 0), "Bricks", $bricksBreakInfo)); + $this->register(new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); + $this->register(new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); - $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM, ItemIds::BROWN_MUSHROOM, 0), "Brown Mushroom", BreakInfo::instant())); - $this->register(new Cactus(new BID(Ids::CACTUS, ItemIds::CACTUS, 0), "Cactus", new BreakInfo(0.4))); - $this->register(new Cake(new BID(Ids::CAKE, ItemIds::CAKE, 0), "Cake", new BreakInfo(0.5))); - $this->register(new Carrot(new BID(Ids::CARROTS, ItemIds::CARROTS, 0), "Carrot Block", BreakInfo::instant())); + $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", BreakInfo::instant())); + $this->register(new Cactus(new BID(Ids::CACTUS), "Cactus", new BreakInfo(0.4))); + $this->register(new Cake(new BID(Ids::CAKE), "Cake", new BreakInfo(0.5))); + $this->register(new Carrot(new BID(Ids::CARROTS), "Carrot Block", BreakInfo::instant())); $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); - $this->register(new Chest(new BID(Ids::CHEST, ItemIds::CHEST, 0, TileChest::class), "Chest", $chestBreakInfo)); - $this->register(new Clay(new BID(Ids::CLAY, ItemIds::CLAY_BLOCK, 0), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Coal(new BID(Ids::COAL, ItemIds::COAL_BLOCK, 0), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new CoalOre(new BID(Ids::COAL_ORE, ItemIds::COAL_ORE, 0), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); + $this->register(new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Coal(new BID(Ids::COAL), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE, ItemIds::COBBLESTONE, 0), "Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE, ItemIds::MOSSY_COBBLESTONE, 0), "Mossy Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS, ItemIds::COBBLESTONE_STAIRS, 0), "Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS, ItemIds::MOSSY_COBBLESTONE_STAIRS, 0), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->register(new Cobweb(new BID(Ids::COBWEB, ItemIds::COBWEB, 0), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - $this->register(new CocoaBlock(new BID(Ids::COCOA_POD, ItemIds::COCOA, 0), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK, ItemIds::CORAL_BLOCK, 0), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE, ItemIds::CRAFTING_TABLE, 0), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, ItemIds::DAYLIGHT_DETECTOR, 0, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new DeadBush(new BID(Ids::DEAD_BUSH, ItemIds::DEADBUSH, 0), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL, ItemIds::DETECTOR_RAIL, 0), "Detector Rail", $railBreakInfo)); + $this->register(new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); + $this->register(new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); + $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); - $this->register(new Opaque(new BID(Ids::DIAMOND, ItemIds::DIAMOND_BLOCK, 0), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE, ItemIds::DIAMOND_ORE, 0), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new Dirt(new BID(Ids::DIRT, ItemIds::DIRT, 0), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new DoublePlant(new BID(Ids::SUNFLOWER, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::LILAC, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::PEONY, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony", BreakInfo::instant())); - $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN, ItemIds::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG, ItemIds::DRAGON_EGG, 0), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new DriedKelp(new BID(Ids::DRIED_KELP, ItemIds::DRIED_KELP_BLOCK, 0), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - $this->register(new Opaque(new BID(Ids::EMERALD, ItemIds::EMERALD_BLOCK, 0), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE, ItemIds::EMERALD_ORE, 0), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, ItemIds::ENCHANTING_TABLE, 0, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME, ItemIds::END_PORTAL_FRAME, 0), "End Portal Frame", BreakInfo::indestructible())); - $this->register(new EndRod(new BID(Ids::END_ROD, ItemIds::END_ROD, 0), "End Rod", BreakInfo::instant())); - $this->register(new Opaque(new BID(Ids::END_STONE, ItemIds::END_STONE, 0), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + $this->register(new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", BreakInfo::instant())); + $this->register(new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); + $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); + $this->register(new Opaque(new BID(Ids::EMERALD), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); + $this->register(new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); + $this->register(new Opaque(new BID(Ids::END_STONE), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS, ItemIds::END_BRICKS, 0), "End Stone Bricks", $endBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS, ItemIds::END_BRICK_STAIRS, 0), "End Stone Brick Stairs", $endBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, ItemIds::ENDER_CHEST, 0, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); - $this->register(new Farmland(new BID(Ids::FARMLAND, ItemIds::FARMLAND, 0), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Fire(new BID(Ids::FIRE, ItemIds::FIRE, 0), "Fire Block", BreakInfo::instant())); - $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE, ItemIds::FLETCHING_TABLE, 0), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); - $this->register(new Flower(new BID(Ids::DANDELION, ItemIds::DANDELION, 0), "Dandelion", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::POPPY, ItemIds::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ALLIUM, ItemIds::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::AZURE_BLUET, ItemIds::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::BLUE_ORCHID, ItemIds::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::CORNFLOWER, ItemIds::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY, ItemIds::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ORANGE_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::OXEYE_DAISY, ItemIds::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::PINK_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::RED_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::WHITE_TULIP, ItemIds::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip", BreakInfo::instant())); - $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, ItemIds::FLOWER_POT, 0, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE, ItemIds::FROSTED_ICE, 0), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->register(new Furnace(new BID(Ids::FURNACE, ItemIds::FURNACE, 0, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, ItemIds::BLAST_FURNACE, 0, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::SMOKER, ItemIds::SMOKER, 0, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + $this->register(new Farmland(new BID(Ids::FARMLAND), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); + $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + $this->register(new Flower(new BID(Ids::DANDELION), "Dandelion", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::POPPY), "Poppy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ALLIUM), "Allium", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::CORNFLOWER), "Cornflower", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); + $this->register(new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); + $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); + $this->register(new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); - $this->register(new Glass(new BID(Ids::GLASS, ItemIds::GLASS, 0), "Glass", $glassBreakInfo)); - $this->register(new GlassPane(new BID(Ids::GLASS_PANE, ItemIds::GLASS_PANE, 0), "Glass Pane", $glassBreakInfo)); - $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN, ItemIds::GLOWINGOBSIDIAN, 0), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); - $this->register(new Glowstone(new BID(Ids::GLOWSTONE, ItemIds::GLOWSTONE, 0), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - $this->register(new Opaque(new BID(Ids::GOLD, ItemIds::GOLD_BLOCK, 0), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::GOLD_ORE, ItemIds::GOLD_ORE, 0), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); + $this->register(new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); + $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + $this->register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); + $this->register(new Opaque(new BID(Ids::GOLD), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::GOLD_ORE), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); - $this->register(new Grass(new BID(Ids::GRASS, ItemIds::GRASS, 0), "Grass", $grassBreakInfo)); - $this->register(new GrassPath(new BID(Ids::GRASS_PATH, ItemIds::GRASS_PATH, 0), "Grass Path", $grassBreakInfo)); - $this->register(new Gravel(new BID(Ids::GRAVEL, ItemIds::GRAVEL, 0), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); + $this->register(new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); + $this->register(new Gravel(new BID(Ids::GRAVEL), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY, ItemIds::HARDENED_CLAY, 0), "Hardened Clay", $hardenedClayBreakInfo)); + $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); - $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS, ItemIds::HARD_GLASS, 0), "Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE, ItemIds::HARD_GLASS_PANE, 0), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new HayBale(new BID(Ids::HAY_BALE, ItemIds::HAY_BALE, 0), "Hay Bale", new BreakInfo(0.5))); - $this->register(new Hopper(new BID(Ids::HOPPER, ItemIds::HOPPER, 0, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - $this->register(new Ice(new BID(Ids::ICE, ItemIds::ICE, 0), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); + $this->register(new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + $this->register(new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE, ItemIds::INFO_UPDATE, 0), "update!", $updateBlockBreakInfo)); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE2, ItemIds::INFO_UPDATE2, 0), "ate!upd", $updateBlockBreakInfo)); - $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK, ItemIds::INVISIBLEBEDROCK, 0), "Invisible Bedrock", BreakInfo::indestructible())); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); + $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::IRON, ItemIds::IRON_BLOCK, 0), "Iron Block", $ironBreakInfo)); - $this->register(new Thin(new BID(Ids::IRON_BARS, ItemIds::IRON_BARS, 0), "Iron Bars", $ironBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); + $this->register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); - $this->register(new Door(new BID(Ids::IRON_DOOR, ItemIds::IRON_DOOR, 0), "Iron Door", $ironDoorBreakInfo)); - $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR, ItemIds::IRON_TRAPDOOR, 0), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->register(new Opaque(new BID(Ids::IRON_ORE, ItemIds::IRON_ORE, 0), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, ItemIds::FRAME, 0, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - $this->register(new Jukebox(new BID(Ids::JUKEBOX, ItemIds::JUKEBOX, 0, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - $this->register(new Ladder(new BID(Ids::LADDER, ItemIds::LADDER, 0), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $this->register(new Lantern(new BID(Ids::LANTERN, ItemIds::LANTERN, 0), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI, ItemIds::LAPIS_BLOCK, 0), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE, ItemIds::LAPIS_ORE, 0), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new Lava(new BID(Ids::LAVA, ItemIds::FLOWING_LAVA, 0), "Lava", BreakInfo::indestructible(500.0))); - $this->register(new Lectern(new BID(Ids::LECTERN, ItemIds::LECTERN, 0, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); - $this->register(new Lever(new BID(Ids::LEVER, ItemIds::LEVER, 0), "Lever", new BreakInfo(0.5))); - $this->register(new Loom(new BID(Ids::LOOM, ItemIds::LOOM, 0), "Loom", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Magma(new BID(Ids::MAGMA, ItemIds::MAGMA, 0), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Melon(new BID(Ids::MELON, ItemIds::MELON_BLOCK, 0), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); - $this->register(new MelonStem(new BID(Ids::MELON_STEM, ItemIds::MELON_SEEDS, 0), "Melon Stem", BreakInfo::instant())); - $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, ItemIds::MOB_SPAWNER, 0, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Mycelium(new BID(Ids::MYCELIUM, ItemIds::MYCELIUM, 0), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + $this->register(new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); + $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); + $this->register(new Opaque(new BID(Ids::IRON_ORE), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + $this->register(new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + $this->register(new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + $this->register(new Lantern(new BID(Ids::LANTERN), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); + $this->register(new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + $this->register(new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); + $this->register(new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); + $this->register(new Magma(new BID(Ids::MAGMA), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + $this->register(new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); + $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::NETHER_BRICKS, ItemIds::NETHER_BRICK_BLOCK, 0), "Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS, ItemIds::RED_NETHER_BRICK, 0), "Red Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE, ItemIds::NETHER_BRICK_FENCE, 0), "Nether Brick Fence", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS, ItemIds::NETHER_BRICK_STAIRS, 0), "Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS, ItemIds::RED_NETHER_BRICK_STAIRS, 0), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL, ItemIds::PORTAL, 0), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE, ItemIds::NETHER_QUARTZ_ORE, 0), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE, ItemIds::NETHERREACTOR, 0), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK, ItemIds::NETHER_WART_BLOCK, 0), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART, ItemIds::NETHER_WART, 0), "Nether Wart", BreakInfo::instant())); - $this->register(new Netherrack(new BID(Ids::NETHERRACK, ItemIds::NETHERRACK, 0), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Note(new BID(Ids::NOTE_BLOCK, ItemIds::NOTEBLOCK, 0, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - $this->register(new Opaque(new BID(Ids::OBSIDIAN, ItemIds::OBSIDIAN, 0), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - $this->register(new PackedIce(new BID(Ids::PACKED_ICE, ItemIds::PACKED_ICE, 0), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Podzol(new BID(Ids::PODZOL, ItemIds::PODZOL, 0), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Potato(new BID(Ids::POTATOES, ItemIds::POTATOES, 0), "Potato Block", BreakInfo::instant())); - $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL, ItemIds::GOLDEN_RAIL, 0), "Powered Rail", $railBreakInfo)); + $this->register(new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); + $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); + $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); + $this->register(new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + $this->register(new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + $this->register(new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Podzol(new BID(Ids::PODZOL), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); + $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PRISMARINE, ItemIds::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE, ItemIds::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS, ItemIds::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS, ItemIds::PRISMARINE_BRICKS_STAIRS, 0), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS, ItemIds::DARK_PRISMARINE_STAIRS, 0), "Dark Prismarine Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS, ItemIds::PRISMARINE_STAIRS, 0), "Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new Pumpkin(new BID(Ids::PUMPKIN, ItemIds::PUMPKIN, 0), "Pumpkin", $pumpkinBreakInfo)); - $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN, ItemIds::CARVED_PUMPKIN, 0), "Carved Pumpkin", $pumpkinBreakInfo)); - $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN, ItemIds::JACK_O_LANTERN, 0), "Jack o'Lantern", $pumpkinBreakInfo)); + $this->register(new Pumpkin(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); + $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); + $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN), "Jack o'Lantern", $pumpkinBreakInfo)); - $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, ItemIds::PUMPKIN_SEEDS, 0), "Pumpkin Stem", BreakInfo::instant())); + $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PURPUR, ItemIds::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR, ItemIds::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); - $this->register(new Stair(new BID(Ids::PURPUR_STAIRS, ItemIds::PURPUR_STAIRS, 0), "Purpur Stairs", $purpurBreakInfo)); + $this->register(new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); + $this->register(new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Opaque(new BID(Ids::QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ, ItemIds::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ), "Smooth Quartz Block", $quartzBreakInfo)); - $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS, ItemIds::QUARTZ_STAIRS, 0), "Quartz Stairs", $quartzBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS, ItemIds::SMOOTH_QUARTZ_STAIRS, 0), "Smooth Quartz Stairs", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); - $this->register(new Rail(new BID(Ids::RAIL, ItemIds::RAIL, 0), "Rail", $railBreakInfo)); - $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM, ItemIds::RED_MUSHROOM, 0), "Red Mushroom", BreakInfo::instant())); - $this->register(new Redstone(new BID(Ids::REDSTONE, ItemIds::REDSTONE_BLOCK, 0), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, ItemIds::COMPARATOR, 0, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP, ItemIds::REDSTONE_LAMP, 0), "Redstone Lamp", new BreakInfo(0.3))); - $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE, ItemIds::REDSTONE_ORE, 0), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER, ItemIds::REPEATER, 0), "Redstone Repeater", BreakInfo::instant())); - $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH, ItemIds::REDSTONE_TORCH, 0), "Redstone Torch", BreakInfo::instant())); - $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, ItemIds::REDSTONE, 0), "Redstone", BreakInfo::instant())); - $this->register(new Reserved6(new BID(Ids::RESERVED6, ItemIds::RESERVED6, 0), "reserved6", BreakInfo::instant())); + $this->register(new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); + $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); + $this->register(new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); + $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); + $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); + $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); + $this->register(new Reserved6(new BID(Ids::RESERVED6), "reserved6", BreakInfo::instant())); $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); - $this->register(new Sand(new BID(Ids::SAND, ItemIds::SAND, 0), "Sand", $sandBreakInfo)); - $this->register(new Sand(new BID(Ids::RED_SAND, ItemIds::SAND, 1), "Red Sand", $sandBreakInfo)); + $this->register(new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); + $this->register(new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); - $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN, ItemIds::SEALANTERN, 0), "Sea Lantern", new BreakInfo(0.3))); - $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE, ItemIds::SEA_PICKLE, 0), "Sea Pickle", BreakInfo::instant())); - $this->register(new Skull(new BID(Ids::MOB_HEAD, ItemIds::SKULL, 0, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - $this->register(new Slime(new BID(Ids::SLIME, ItemIds::SLIME, 0), "Slime Block", BreakInfo::instant())); - $this->register(new Snow(new BID(Ids::SNOW, ItemIds::SNOW, 0), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER, ItemIds::SNOW_LAYER, 0), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SoulSand(new BID(Ids::SOUL_SAND, ItemIds::SOUL_SAND, 0), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Sponge(new BID(Ids::SPONGE, ItemIds::SPONGE, 0), "Sponge", new BreakInfo(0.6, ToolType::HOE))); + $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new BreakInfo(0.3))); + $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); + $this->register(new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + $this->register(new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); + $this->register(new Snow(new BID(Ids::SNOW), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, ItemIds::UNDYED_SHULKER_BOX, 0, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->register( - $stone = new class(new BID(Ids::STONE, ItemIds::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ + $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ public function getDropsForCompatibleTool(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; } @@ -344,103 +342,101 @@ class BlockFactory{ } } ); - $this->register(new Opaque(new BID(Ids::ANDESITE, ItemIds::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::DIORITE, ItemIds::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::GRANITE, ItemIds::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE, ItemIds::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE, ItemIds::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE, ItemIds::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::ANDESITE), "Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::DIORITE), "Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::GRANITE), "Granite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); - $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); - $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); - $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); - $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS, ItemIds::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); + $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS), "Stone Bricks", $stoneBreakInfo)); + $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS), "Mossy Stone Bricks", $stoneBreakInfo)); + $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS), "Cracked Stone Bricks", $stoneBreakInfo)); + $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS), "Chiseled Stone Bricks", $stoneBreakInfo)); $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE, ItemIds::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK, ItemIds::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); + $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); - $this->register(new Stair(new BID(Ids::STONE_STAIRS, ItemIds::NORMAL_STONE_STAIRS, 0), "Stone Stairs", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_STONE, ItemIds::SMOOTH_STONE, 0), "Smooth Stone", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS, ItemIds::ANDESITE_STAIRS, 0), "Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::DIORITE_STAIRS, ItemIds::DIORITE_STAIRS, 0), "Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::GRANITE_STAIRS, ItemIds::GRANITE_STAIRS, 0), "Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS, ItemIds::POLISHED_ANDESITE_STAIRS, 0), "Polished Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS, ItemIds::POLISHED_DIORITE_STAIRS, 0), "Polished Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS, ItemIds::POLISHED_GRANITE_STAIRS, 0), "Polished Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS, ItemIds::STONE_BRICK_STAIRS, 0), "Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS, ItemIds::MOSSY_STONE_BRICK_STAIRS, 0), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new StoneButton(new BID(Ids::STONE_BUTTON, ItemIds::STONE_BUTTON, 0), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Stonecutter(new BID(Ids::STONECUTTER, ItemIds::STONECUTTER_BLOCK, 0), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE, ItemIds::STONE_PRESSURE_PLATE, 0), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Stair(new BID(Ids::STONE_STAIRS), "Stone Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_STONE), "Smooth Stone", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS), "Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::DIORITE_STAIRS), "Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::GRANITE_STAIRS), "Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS), "Polished Andesite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS), "Polished Diorite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); + $this->register(new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); + $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - - $getStoneSlabId = static fn(int $blockTypeId, int $stoneSlabId, int $meta) => BlockLegacyIdHelper::getStoneSlabIdentifier($blockTypeId, $stoneSlabId, $meta); foreach([ - new Slab($getStoneSlabId(Ids::BRICK_SLAB, 1, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::COBBLESTONE_SLAB, 1, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::FAKE_WOODEN_SLAB, 1, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::NETHER_BRICK_SLAB, 1, Meta::STONE_SLAB_NETHER_BRICK), "Nether Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::QUARTZ_SLAB, 1, Meta::STONE_SLAB_QUARTZ), "Quartz", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::SANDSTONE_SLAB, 1, Meta::STONE_SLAB_SANDSTONE), "Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::SMOOTH_STONE_SLAB, 1, Meta::STONE_SLAB_SMOOTH_STONE), "Smooth Stone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::STONE_BRICK_SLAB, 1, Meta::STONE_SLAB_STONE_BRICK), "Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::DARK_PRISMARINE_SLAB, 2, Meta::STONE_SLAB2_DARK_PRISMARINE), "Dark Prismarine", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::MOSSY_COBBLESTONE_SLAB, 2, Meta::STONE_SLAB2_MOSSY_COBBLESTONE), "Mossy Cobblestone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::PRISMARINE_SLAB, 2, Meta::STONE_SLAB2_PRISMARINE), "Prismarine", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::PRISMARINE_BRICKS_SLAB, 2, Meta::STONE_SLAB2_PRISMARINE_BRICKS), "Prismarine Bricks", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::PURPUR_SLAB, 2, Meta::STONE_SLAB2_PURPUR), "Purpur", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::RED_NETHER_BRICK_SLAB, 2, Meta::STONE_SLAB2_RED_NETHER_BRICK), "Red Nether Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::RED_SANDSTONE_SLAB, 2, Meta::STONE_SLAB2_RED_SANDSTONE), "Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::SMOOTH_SANDSTONE_SLAB, 2, Meta::STONE_SLAB2_SMOOTH_SANDSTONE), "Smooth Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::ANDESITE_SLAB, 3, Meta::STONE_SLAB3_ANDESITE), "Andesite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::DIORITE_SLAB, 3, Meta::STONE_SLAB3_DIORITE), "Diorite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::END_STONE_BRICK_SLAB, 3, Meta::STONE_SLAB3_END_STONE_BRICK), "End Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::GRANITE_SLAB, 3, Meta::STONE_SLAB3_GRANITE), "Granite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::POLISHED_ANDESITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_ANDESITE), "Polished Andesite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::POLISHED_DIORITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_DIORITE), "Polished Diorite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::POLISHED_GRANITE_SLAB, 3, Meta::STONE_SLAB3_POLISHED_GRANITE), "Polished Granite", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::SMOOTH_RED_SANDSTONE_SLAB, 3, Meta::STONE_SLAB3_SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::CUT_RED_SANDSTONE_SLAB, 4, Meta::STONE_SLAB4_CUT_RED_SANDSTONE), "Cut Red Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::CUT_SANDSTONE_SLAB, 4, Meta::STONE_SLAB4_CUT_SANDSTONE), "Cut Sandstone", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::MOSSY_STONE_BRICK_SLAB, 4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::SMOOTH_QUARTZ_SLAB, 4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo), - new Slab($getStoneSlabId(Ids::STONE_SLAB, 4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::FAKE_WOODEN_SLAB), "Fake Wooden", $stoneSlabBreakInfo), + new Slab(new BID(Ids::NETHER_BRICK_SLAB), "Nether Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::QUARTZ_SLAB), "Quartz", $stoneSlabBreakInfo), + new Slab(new BID(Ids::SANDSTONE_SLAB), "Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::SMOOTH_STONE_SLAB), "Smooth Stone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::STONE_BRICK_SLAB), "Stone Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::DARK_PRISMARINE_SLAB), "Dark Prismarine", $stoneSlabBreakInfo), + new Slab(new BID(Ids::MOSSY_COBBLESTONE_SLAB), "Mossy Cobblestone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::PRISMARINE_SLAB), "Prismarine", $stoneSlabBreakInfo), + new Slab(new BID(Ids::PRISMARINE_BRICKS_SLAB), "Prismarine Bricks", $stoneSlabBreakInfo), + new Slab(new BID(Ids::PURPUR_SLAB), "Purpur", $stoneSlabBreakInfo), + new Slab(new BID(Ids::RED_NETHER_BRICK_SLAB), "Red Nether Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::RED_SANDSTONE_SLAB), "Red Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::SMOOTH_SANDSTONE_SLAB), "Smooth Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::ANDESITE_SLAB), "Andesite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::DIORITE_SLAB), "Diorite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::END_STONE_BRICK_SLAB), "End Stone Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::GRANITE_SLAB), "Granite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::POLISHED_ANDESITE_SLAB), "Polished Andesite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::POLISHED_DIORITE_SLAB), "Polished Diorite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::POLISHED_GRANITE_SLAB), "Polished Granite", $stoneSlabBreakInfo), + new Slab(new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB), "Smooth Red Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::CUT_RED_SANDSTONE_SLAB), "Cut Red Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::CUT_SANDSTONE_SLAB), "Cut Sandstone", $stoneSlabBreakInfo), + new Slab(new BID(Ids::MOSSY_STONE_BRICK_SLAB), "Mossy Stone Brick", $stoneSlabBreakInfo), + new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo), + new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo), ] as $slabType){ $this->register($slabType); } - $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER, ItemIds::STONECUTTER, 0), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Sugarcane(new BID(Ids::SUGARCANE, ItemIds::REEDS, 0), "Sugarcane", BreakInfo::instant())); - $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH, ItemIds::SWEET_BERRIES, 0), "Sweet Berry Bush", BreakInfo::instant())); - $this->register(new TNT(new BID(Ids::TNT, ItemIds::TNT, 0), "TNT", BreakInfo::instant())); - $this->register(new TallGrass(new BID(Ids::FERN, ItemIds::TALLGRASS, Meta::TALLGRASS_FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new TallGrass(new BID(Ids::TALL_GRASS, ItemIds::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); + $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); + $this->register(new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); + $this->register(new TallGrass(new BID(Ids::FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + $this->register(new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new Torch(new BID(Ids::BLUE_TORCH, ItemIds::COLORED_TORCH_BP, 0), "Blue Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::PURPLE_TORCH, ItemIds::COLORED_TORCH_BP, 8), "Purple Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::RED_TORCH, ItemIds::COLORED_TORCH_RG, 0), "Red Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::GREEN_TORCH, ItemIds::COLORED_TORCH_RG, 8), "Green Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::TORCH, ItemIds::TORCH, 0), "Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::PURPLE_TORCH), "Purple Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::RED_TORCH), "Red Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", BreakInfo::instant())); + $this->register(new Torch(new BID(Ids::TORCH), "Torch", BreakInfo::instant())); - $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, ItemIds::TRAPPED_CHEST, 0, TileChest::class), "Trapped Chest", $chestBreakInfo)); - $this->register(new Tripwire(new BID(Ids::TRIPWIRE, ItemIds::STRING, 0), "Tripwire", BreakInfo::instant())); - $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK, ItemIds::TRIPWIRE_HOOK, 0), "Tripwire Hook", BreakInfo::instant())); - $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH, ItemIds::UNDERWATER_TORCH, 0), "Underwater Torch", BreakInfo::instant())); - $this->register(new Vine(new BID(Ids::VINES, ItemIds::VINE, 0), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new Water(new BID(Ids::WATER, ItemIds::FLOWING_WATER, 0), "Water", BreakInfo::indestructible(500.0))); - $this->register(new WaterLily(new BID(Ids::LILY_PAD, ItemIds::LILY_PAD, 0), "Lily Pad", BreakInfo::instant())); + $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); + $this->register(new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); + $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); + $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); + $this->register(new Vine(new BID(Ids::VINES), "Vines", new BreakInfo(0.2, ToolType::AXE))); + $this->register(new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); + $this->register(new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, ItemIds::HEAVY_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); - $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, ItemIds::LIGHT_WEIGHTED_PRESSURE_PLATE, 0), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - $this->register(new Wheat(new BID(Ids::WHEAT, ItemIds::WHEAT_BLOCK, 0), "Wheat Block", BreakInfo::instant())); + $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); + $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); + $this->register(new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ @@ -486,19 +482,19 @@ class BlockFactory{ } $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS, ItemIds::RED_SANDSTONE_STAIRS, 0), "Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS, ItemIds::SMOOTH_RED_SANDSTONE_STAIRS, 0), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_NORMAL), "Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_CUT), "Cut Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE, ItemIds::RED_SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE), "Chiseled Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE), "Cut Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS, ItemIds::SANDSTONE_STAIRS, 0), "Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS, ItemIds::SMOOTH_SANDSTONE_STAIRS, 0), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_NORMAL), "Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_CHISELED), "Chiseled Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_CUT), "Cut Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE, ItemIds::SANDSTONE, Meta::SANDSTONE_SMOOTH), "Smooth Sandstone", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SANDSTONE), "Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE), "Chiseled Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); $glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); foreach(DyeColor::getAll() as $color){ @@ -507,16 +503,16 @@ class BlockFactory{ }; $this->register(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); } - $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, ItemIds::SHULKER_BOX, 0, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); - $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS, ItemIds::STAINED_GLASS, 0), "Stained Glass", $glassBreakInfo)); - $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE, ItemIds::STAINED_GLASS_PANE, 0), "Stained Glass Pane", $glassBreakInfo)); - $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY, ItemIds::STAINED_CLAY, 0), "Stained Clay", $hardenedClayBreakInfo)); - $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS, ItemIds::HARD_STAINED_GLASS, 0), "Stained Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE, ItemIds::HARD_STAINED_GLASS_PANE, 0), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new Carpet(new BID(Ids::CARPET, ItemIds::CARPET, 0), "Carpet", new BreakInfo(0.1))); - $this->register(new Concrete(new BID(Ids::CONCRETE, ItemIds::CONCRETE, 0), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, ItemIds::CONCRETE_POWDER, 0), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Wool(new BID(Ids::WOOL, ItemIds::WOOL, 0), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); + $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); + $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY), "Stained Clay", $hardenedClayBreakInfo)); + $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); + $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); + $this->register(new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); + $this->register(new Concrete(new BID(Ids::CONCRETE), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + $this->register(new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); if($item->getBlockToolType() === ToolType::SHEARS){ @@ -529,45 +525,45 @@ class BlockFactory{ //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_COBBLESTONE), "Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::ANDESITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_ANDESITE), "Andesite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_BRICK), "Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::DIORITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_DIORITE), "Diorite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_END_STONE_BRICK), "End Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::GRANITE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_GRANITE), "Granite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_STONE_BRICK), "Mossy Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_MOSSY_COBBLESTONE), "Mossy Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_NETHER_BRICK), "Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::PRISMARINE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_PRISMARINE), "Prismarine Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_RED_NETHER_BRICK), "Red Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_RED_SANDSTONE), "Red Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::SANDSTONE_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_SANDSTONE), "Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL, ItemIds::COBBLESTONE_WALL, Meta::WALL_STONE_BRICK), "Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::DIORITE_WALL), "Diorite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL), "End Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::GRANITE_WALL), "Granite Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL), "Mossy Stone Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL), "Mossy Cobblestone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL), "Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::PRISMARINE_WALL), "Prismarine Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL), "Red Nether Brick Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL), "Red Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::SANDSTONE_WALL), "Sandstone Wall", $wallBreakInfo)); + $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL), "Stone Brick Wall", $wallBreakInfo)); $this->registerElements(); $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER, ItemIds::CHEMISTRY_TABLE, Meta::CHEMISTRY_MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); + $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); - $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT, ItemIds::CHEMICAL_HEAT, 0), "Heat Block", $chemistryTableBreakInfo)); + $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT), "Heat Block", $chemistryTableBreakInfo)); $this->registerMushroomBlocks(); $this->register(new Coral( - new BID(Ids::CORAL, ItemIds::CORAL, 0), + new BID(Ids::CORAL), "Coral", BreakInfo::instant(), )); $this->register(new FloorCoralFan( - new BID(Ids::CORAL_FAN, ItemIds::CORAL_FAN, 0), + new BID(Ids::CORAL_FAN), "Coral Fan", BreakInfo::instant(), )); $this->register(new WallCoralFan( - new BID(Ids::WALL_CORAL_FAN, ItemIds::CORAL_FAN, 0), + new BID(Ids::WALL_CORAL_FAN), "Wall Coral Fan", BreakInfo::instant(), )); @@ -710,136 +706,136 @@ class BlockFactory{ private function registerMushroomBlocks() : void{ $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); - $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK, ItemIds::BROWN_MUSHROOM_BLOCK, 0), "Brown Mushroom Block", $mushroomBlockBreakInfo)); - $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK, ItemIds::RED_MUSHROOM_BLOCK, 0), "Red Mushroom Block", $mushroomBlockBreakInfo)); + $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block", $mushroomBlockBreakInfo)); + $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block", $mushroomBlockBreakInfo)); //finally, the stems - $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM, ItemIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); - $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM, ItemIds::BROWN_MUSHROOM_BLOCK, Meta::MUSHROOM_BLOCK_ALL_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); + $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); + $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); } private function registerElements() : void{ $instaBreak = BreakInfo::instant(); - $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO, ItemIds::ELEMENT_0, 0), "???", $instaBreak)); + $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO), "???", $instaBreak)); - $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN, ItemIds::ELEMENT_1, 0), "Hydrogen", $instaBreak, "h", 1, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_HELIUM, ItemIds::ELEMENT_2, 0), "Helium", $instaBreak, "he", 2, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM, ItemIds::ELEMENT_3, 0), "Lithium", $instaBreak, "li", 3, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM, ItemIds::ELEMENT_4, 0), "Beryllium", $instaBreak, "be", 4, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_BORON, ItemIds::ELEMENT_5, 0), "Boron", $instaBreak, "b", 5, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_CARBON, ItemIds::ELEMENT_6, 0), "Carbon", $instaBreak, "c", 6, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN, ItemIds::ELEMENT_7, 0), "Nitrogen", $instaBreak, "n", 7, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN, ItemIds::ELEMENT_8, 0), "Oxygen", $instaBreak, "o", 8, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE, ItemIds::ELEMENT_9, 0), "Fluorine", $instaBreak, "f", 9, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_NEON, ItemIds::ELEMENT_10, 0), "Neon", $instaBreak, "ne", 10, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_SODIUM, ItemIds::ELEMENT_11, 0), "Sodium", $instaBreak, "na", 11, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM, ItemIds::ELEMENT_12, 0), "Magnesium", $instaBreak, "mg", 12, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM, ItemIds::ELEMENT_13, 0), "Aluminum", $instaBreak, "al", 13, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_SILICON, ItemIds::ELEMENT_14, 0), "Silicon", $instaBreak, "si", 14, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS, ItemIds::ELEMENT_15, 0), "Phosphorus", $instaBreak, "p", 15, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_SULFUR, ItemIds::ELEMENT_16, 0), "Sulfur", $instaBreak, "s", 16, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE, ItemIds::ELEMENT_17, 0), "Chlorine", $instaBreak, "cl", 17, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_ARGON, ItemIds::ELEMENT_18, 0), "Argon", $instaBreak, "ar", 18, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM, ItemIds::ELEMENT_19, 0), "Potassium", $instaBreak, "k", 19, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM, ItemIds::ELEMENT_20, 0), "Calcium", $instaBreak, "ca", 20, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM, ItemIds::ELEMENT_21, 0), "Scandium", $instaBreak, "sc", 21, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM, ItemIds::ELEMENT_22, 0), "Titanium", $instaBreak, "ti", 22, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM, ItemIds::ELEMENT_23, 0), "Vanadium", $instaBreak, "v", 23, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM, ItemIds::ELEMENT_24, 0), "Chromium", $instaBreak, "cr", 24, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE, ItemIds::ELEMENT_25, 0), "Manganese", $instaBreak, "mn", 25, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRON, ItemIds::ELEMENT_26, 0), "Iron", $instaBreak, "fe", 26, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COBALT, ItemIds::ELEMENT_27, 0), "Cobalt", $instaBreak, "co", 27, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NICKEL, ItemIds::ELEMENT_28, 0), "Nickel", $instaBreak, "ni", 28, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPPER, ItemIds::ELEMENT_29, 0), "Copper", $instaBreak, "cu", 29, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZINC, ItemIds::ELEMENT_30, 0), "Zinc", $instaBreak, "zn", 30, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM, ItemIds::ELEMENT_31, 0), "Gallium", $instaBreak, "ga", 31, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM, ItemIds::ELEMENT_32, 0), "Germanium", $instaBreak, "ge", 32, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC, ItemIds::ELEMENT_33, 0), "Arsenic", $instaBreak, "as", 33, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM, ItemIds::ELEMENT_34, 0), "Selenium", $instaBreak, "se", 34, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_BROMINE, ItemIds::ELEMENT_35, 0), "Bromine", $instaBreak, "br", 35, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON, ItemIds::ELEMENT_36, 0), "Krypton", $instaBreak, "kr", 36, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM, ItemIds::ELEMENT_37, 0), "Rubidium", $instaBreak, "rb", 37, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM, ItemIds::ELEMENT_38, 0), "Strontium", $instaBreak, "sr", 38, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM, ItemIds::ELEMENT_39, 0), "Yttrium", $instaBreak, "y", 39, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM, ItemIds::ELEMENT_40, 0), "Zirconium", $instaBreak, "zr", 40, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM, ItemIds::ELEMENT_41, 0), "Niobium", $instaBreak, "nb", 41, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM, ItemIds::ELEMENT_42, 0), "Molybdenum", $instaBreak, "mo", 42, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM, ItemIds::ELEMENT_43, 0), "Technetium", $instaBreak, "tc", 43, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM, ItemIds::ELEMENT_44, 0), "Ruthenium", $instaBreak, "ru", 44, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM, ItemIds::ELEMENT_45, 0), "Rhodium", $instaBreak, "rh", 45, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM, ItemIds::ELEMENT_46, 0), "Palladium", $instaBreak, "pd", 46, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SILVER, ItemIds::ELEMENT_47, 0), "Silver", $instaBreak, "ag", 47, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM, ItemIds::ELEMENT_48, 0), "Cadmium", $instaBreak, "cd", 48, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_INDIUM, ItemIds::ELEMENT_49, 0), "Indium", $instaBreak, "in", 49, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TIN, ItemIds::ELEMENT_50, 0), "Tin", $instaBreak, "sn", 50, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY, ItemIds::ELEMENT_51, 0), "Antimony", $instaBreak, "sb", 51, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM, ItemIds::ELEMENT_52, 0), "Tellurium", $instaBreak, "te", 52, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_IODINE, ItemIds::ELEMENT_53, 0), "Iodine", $instaBreak, "i", 53, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_XENON, ItemIds::ELEMENT_54, 0), "Xenon", $instaBreak, "xe", 54, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_CESIUM, ItemIds::ELEMENT_55, 0), "Cesium", $instaBreak, "cs", 55, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BARIUM, ItemIds::ELEMENT_56, 0), "Barium", $instaBreak, "ba", 56, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM, ItemIds::ELEMENT_57, 0), "Lanthanum", $instaBreak, "la", 57, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_CERIUM, ItemIds::ELEMENT_58, 0), "Cerium", $instaBreak, "ce", 58, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM, ItemIds::ELEMENT_59, 0), "Praseodymium", $instaBreak, "pr", 59, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM, ItemIds::ELEMENT_60, 0), "Neodymium", $instaBreak, "nd", 60, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM, ItemIds::ELEMENT_61, 0), "Promethium", $instaBreak, "pm", 61, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM, ItemIds::ELEMENT_62, 0), "Samarium", $instaBreak, "sm", 62, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM, ItemIds::ELEMENT_63, 0), "Europium", $instaBreak, "eu", 63, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM, ItemIds::ELEMENT_64, 0), "Gadolinium", $instaBreak, "gd", 64, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM, ItemIds::ELEMENT_65, 0), "Terbium", $instaBreak, "tb", 65, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM, ItemIds::ELEMENT_66, 0), "Dysprosium", $instaBreak, "dy", 66, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM, ItemIds::ELEMENT_67, 0), "Holmium", $instaBreak, "ho", 67, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM, ItemIds::ELEMENT_68, 0), "Erbium", $instaBreak, "er", 68, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_THULIUM, ItemIds::ELEMENT_69, 0), "Thulium", $instaBreak, "tm", 69, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM, ItemIds::ELEMENT_70, 0), "Ytterbium", $instaBreak, "yb", 70, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM, ItemIds::ELEMENT_71, 0), "Lutetium", $instaBreak, "lu", 71, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM, ItemIds::ELEMENT_72, 0), "Hafnium", $instaBreak, "hf", 72, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM, ItemIds::ELEMENT_73, 0), "Tantalum", $instaBreak, "ta", 73, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN, ItemIds::ELEMENT_74, 0), "Tungsten", $instaBreak, "w", 74, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM, ItemIds::ELEMENT_75, 0), "Rhenium", $instaBreak, "re", 75, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM, ItemIds::ELEMENT_76, 0), "Osmium", $instaBreak, "os", 76, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM, ItemIds::ELEMENT_77, 0), "Iridium", $instaBreak, "ir", 77, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM, ItemIds::ELEMENT_78, 0), "Platinum", $instaBreak, "pt", 78, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GOLD, ItemIds::ELEMENT_79, 0), "Gold", $instaBreak, "au", 79, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MERCURY, ItemIds::ELEMENT_80, 0), "Mercury", $instaBreak, "hg", 80, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM, ItemIds::ELEMENT_81, 0), "Thallium", $instaBreak, "tl", 81, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LEAD, ItemIds::ELEMENT_82, 0), "Lead", $instaBreak, "pb", 82, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH, ItemIds::ELEMENT_83, 0), "Bismuth", $instaBreak, "bi", 83, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM, ItemIds::ELEMENT_84, 0), "Polonium", $instaBreak, "po", 84, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE, ItemIds::ELEMENT_85, 0), "Astatine", $instaBreak, "at", 85, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_RADON, ItemIds::ELEMENT_86, 0), "Radon", $instaBreak, "rn", 86, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM, ItemIds::ELEMENT_87, 0), "Francium", $instaBreak, "fr", 87, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_RADIUM, ItemIds::ELEMENT_88, 0), "Radium", $instaBreak, "ra", 88, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM, ItemIds::ELEMENT_89, 0), "Actinium", $instaBreak, "ac", 89, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_THORIUM, ItemIds::ELEMENT_90, 0), "Thorium", $instaBreak, "th", 90, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM, ItemIds::ELEMENT_91, 0), "Protactinium", $instaBreak, "pa", 91, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_URANIUM, ItemIds::ELEMENT_92, 0), "Uranium", $instaBreak, "u", 92, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM, ItemIds::ELEMENT_93, 0), "Neptunium", $instaBreak, "np", 93, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM, ItemIds::ELEMENT_94, 0), "Plutonium", $instaBreak, "pu", 94, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM, ItemIds::ELEMENT_95, 0), "Americium", $instaBreak, "am", 95, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CURIUM, ItemIds::ELEMENT_96, 0), "Curium", $instaBreak, "cm", 96, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM, ItemIds::ELEMENT_97, 0), "Berkelium", $instaBreak, "bk", 97, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM, ItemIds::ELEMENT_98, 0), "Californium", $instaBreak, "cf", 98, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM, ItemIds::ELEMENT_99, 0), "Einsteinium", $instaBreak, "es", 99, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM, ItemIds::ELEMENT_100, 0), "Fermium", $instaBreak, "fm", 100, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM, ItemIds::ELEMENT_101, 0), "Mendelevium", $instaBreak, "md", 101, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM, ItemIds::ELEMENT_102, 0), "Nobelium", $instaBreak, "no", 102, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM, ItemIds::ELEMENT_103, 0), "Lawrencium", $instaBreak, "lr", 103, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM, ItemIds::ELEMENT_104, 0), "Rutherfordium", $instaBreak, "rf", 104, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM, ItemIds::ELEMENT_105, 0), "Dubnium", $instaBreak, "db", 105, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM, ItemIds::ELEMENT_106, 0), "Seaborgium", $instaBreak, "sg", 106, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM, ItemIds::ELEMENT_107, 0), "Bohrium", $instaBreak, "bh", 107, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM, ItemIds::ELEMENT_108, 0), "Hassium", $instaBreak, "hs", 108, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM, ItemIds::ELEMENT_109, 0), "Meitnerium", $instaBreak, "mt", 109, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM, ItemIds::ELEMENT_110, 0), "Darmstadtium", $instaBreak, "ds", 110, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM, ItemIds::ELEMENT_111, 0), "Roentgenium", $instaBreak, "rg", 111, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM, ItemIds::ELEMENT_112, 0), "Copernicium", $instaBreak, "cn", 112, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM, ItemIds::ELEMENT_113, 0), "Nihonium", $instaBreak, "nh", 113, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM, ItemIds::ELEMENT_114, 0), "Flerovium", $instaBreak, "fl", 114, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM, ItemIds::ELEMENT_115, 0), "Moscovium", $instaBreak, "mc", 115, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM, ItemIds::ELEMENT_116, 0), "Livermorium", $instaBreak, "lv", 116, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE, ItemIds::ELEMENT_117, 0), "Tennessine", $instaBreak, "ts", 117, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON, ItemIds::ELEMENT_118, 0), "Oganesson", $instaBreak, "og", 118, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN), "Hydrogen", $instaBreak, "h", 1, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_HELIUM), "Helium", $instaBreak, "he", 2, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM), "Lithium", $instaBreak, "li", 3, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM), "Beryllium", $instaBreak, "be", 4, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_BORON), "Boron", $instaBreak, "b", 5, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_CARBON), "Carbon", $instaBreak, "c", 6, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN), "Nitrogen", $instaBreak, "n", 7, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN), "Oxygen", $instaBreak, "o", 8, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE), "Fluorine", $instaBreak, "f", 9, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_NEON), "Neon", $instaBreak, "ne", 10, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_SODIUM), "Sodium", $instaBreak, "na", 11, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM), "Magnesium", $instaBreak, "mg", 12, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM), "Aluminum", $instaBreak, "al", 13, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_SILICON), "Silicon", $instaBreak, "si", 14, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS), "Phosphorus", $instaBreak, "p", 15, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_SULFUR), "Sulfur", $instaBreak, "s", 16, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE), "Chlorine", $instaBreak, "cl", 17, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_ARGON), "Argon", $instaBreak, "ar", 18, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM), "Potassium", $instaBreak, "k", 19, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM), "Calcium", $instaBreak, "ca", 20, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM), "Scandium", $instaBreak, "sc", 21, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM), "Titanium", $instaBreak, "ti", 22, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM), "Vanadium", $instaBreak, "v", 23, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM), "Chromium", $instaBreak, "cr", 24, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE), "Manganese", $instaBreak, "mn", 25, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRON), "Iron", $instaBreak, "fe", 26, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COBALT), "Cobalt", $instaBreak, "co", 27, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NICKEL), "Nickel", $instaBreak, "ni", 28, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPPER), "Copper", $instaBreak, "cu", 29, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZINC), "Zinc", $instaBreak, "zn", 30, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM), "Gallium", $instaBreak, "ga", 31, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM), "Germanium", $instaBreak, "ge", 32, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC), "Arsenic", $instaBreak, "as", 33, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM), "Selenium", $instaBreak, "se", 34, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_BROMINE), "Bromine", $instaBreak, "br", 35, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON), "Krypton", $instaBreak, "kr", 36, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM), "Rubidium", $instaBreak, "rb", 37, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM), "Strontium", $instaBreak, "sr", 38, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM), "Yttrium", $instaBreak, "y", 39, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM), "Zirconium", $instaBreak, "zr", 40, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM), "Niobium", $instaBreak, "nb", 41, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM), "Molybdenum", $instaBreak, "mo", 42, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM), "Technetium", $instaBreak, "tc", 43, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM), "Ruthenium", $instaBreak, "ru", 44, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM), "Rhodium", $instaBreak, "rh", 45, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM), "Palladium", $instaBreak, "pd", 46, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SILVER), "Silver", $instaBreak, "ag", 47, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM), "Cadmium", $instaBreak, "cd", 48, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_INDIUM), "Indium", $instaBreak, "in", 49, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TIN), "Tin", $instaBreak, "sn", 50, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY), "Antimony", $instaBreak, "sb", 51, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM), "Tellurium", $instaBreak, "te", 52, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_IODINE), "Iodine", $instaBreak, "i", 53, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_XENON), "Xenon", $instaBreak, "xe", 54, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_CESIUM), "Cesium", $instaBreak, "cs", 55, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_BARIUM), "Barium", $instaBreak, "ba", 56, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM), "Lanthanum", $instaBreak, "la", 57, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_CERIUM), "Cerium", $instaBreak, "ce", 58, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM), "Praseodymium", $instaBreak, "pr", 59, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM), "Neodymium", $instaBreak, "nd", 60, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM), "Promethium", $instaBreak, "pm", 61, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM), "Samarium", $instaBreak, "sm", 62, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM), "Europium", $instaBreak, "eu", 63, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM), "Gadolinium", $instaBreak, "gd", 64, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM), "Terbium", $instaBreak, "tb", 65, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM), "Dysprosium", $instaBreak, "dy", 66, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM), "Holmium", $instaBreak, "ho", 67, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM), "Erbium", $instaBreak, "er", 68, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_THULIUM), "Thulium", $instaBreak, "tm", 69, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM), "Ytterbium", $instaBreak, "yb", 70, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM), "Lutetium", $instaBreak, "lu", 71, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM), "Hafnium", $instaBreak, "hf", 72, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM), "Tantalum", $instaBreak, "ta", 73, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN), "Tungsten", $instaBreak, "w", 74, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM), "Rhenium", $instaBreak, "re", 75, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM), "Osmium", $instaBreak, "os", 76, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM), "Iridium", $instaBreak, "ir", 77, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM), "Platinum", $instaBreak, "pt", 78, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_GOLD), "Gold", $instaBreak, "au", 79, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MERCURY), "Mercury", $instaBreak, "hg", 80, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM), "Thallium", $instaBreak, "tl", 81, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LEAD), "Lead", $instaBreak, "pb", 82, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH), "Bismuth", $instaBreak, "bi", 83, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM), "Polonium", $instaBreak, "po", 84, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE), "Astatine", $instaBreak, "at", 85, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_RADON), "Radon", $instaBreak, "rn", 86, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM), "Francium", $instaBreak, "fr", 87, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_RADIUM), "Radium", $instaBreak, "ra", 88, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM), "Actinium", $instaBreak, "ac", 89, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_THORIUM), "Thorium", $instaBreak, "th", 90, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM), "Protactinium", $instaBreak, "pa", 91, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_URANIUM), "Uranium", $instaBreak, "u", 92, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM), "Neptunium", $instaBreak, "np", 93, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM), "Plutonium", $instaBreak, "pu", 94, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM), "Americium", $instaBreak, "am", 95, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CURIUM), "Curium", $instaBreak, "cm", 96, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM), "Berkelium", $instaBreak, "bk", 97, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM), "Californium", $instaBreak, "cf", 98, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM), "Einsteinium", $instaBreak, "es", 99, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM), "Fermium", $instaBreak, "fm", 100, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM), "Mendelevium", $instaBreak, "md", 101, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM), "Nobelium", $instaBreak, "no", 102, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM), "Lawrencium", $instaBreak, "lr", 103, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM), "Rutherfordium", $instaBreak, "rf", 104, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM), "Dubnium", $instaBreak, "db", 105, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM), "Seaborgium", $instaBreak, "sg", 106, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM), "Bohrium", $instaBreak, "bh", 107, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM), "Hassium", $instaBreak, "hs", 108, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM), "Meitnerium", $instaBreak, "mt", 109, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM), "Darmstadtium", $instaBreak, "ds", 110, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM), "Roentgenium", $instaBreak, "rg", 111, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM), "Copernicium", $instaBreak, "cn", 112, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM), "Nihonium", $instaBreak, "nh", 113, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM), "Flerovium", $instaBreak, "fl", 114, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM), "Moscovium", $instaBreak, "mc", 115, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM), "Livermorium", $instaBreak, "lv", 116, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE), "Tennessine", $instaBreak, "ts", 117, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); } /** @@ -918,7 +914,7 @@ class BlockFactory{ if(isset($this->fullList[$index])) { //hot $block = clone $this->fullList[$index]; }else{ - $block = new UnknownBlock(new BID($typeId, $stateData, $stateData), BreakInfo::instant()); + $block = new UnknownBlock(new BID($typeId), BreakInfo::instant(), $stateData); } return $block; diff --git a/src/block/BlockIdentifier.php b/src/block/BlockIdentifier.php index f2c7fd2c9..847231682 100644 --- a/src/block/BlockIdentifier.php +++ b/src/block/BlockIdentifier.php @@ -32,17 +32,11 @@ class BlockIdentifier{ */ public function __construct( private int $blockTypeId, - private int $legacyItemId, - private int $legacyItemVariant, private ?string $tileClass = null ){ if($blockTypeId < 0){ throw new \InvalidArgumentException("Block type ID may not be negative"); } - if($legacyItemVariant < 0){ - throw new \InvalidArgumentException("Legacy item variant may not be negative"); - } - if($tileClass !== null){ Utils::testValidInstance($tileClass, Tile::class); } @@ -50,20 +44,6 @@ class BlockIdentifier{ public function getBlockTypeId() : int{ return $this->blockTypeId; } - /** - * @deprecated - */ - public function getLegacyVariant() : int{ - return $this->legacyItemVariant; - } - - /** - * @deprecated - */ - public function getLegacyItemId() : int{ - return $this->legacyItemId; - } - /** * @phpstan-return class-string|null */ diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 0574e754a..2d93b20d5 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -28,8 +28,6 @@ use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\TreeType; -use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\item\ItemIds; use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; @@ -44,7 +42,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_PLANKS, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_PLANKS, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::PLANKS, $treeType->getMagicNumber()); + }); } public static function getWoodenFenceIdentifier(TreeType $treeType) : BID{ @@ -56,7 +54,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_FENCE, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::FENCE, $treeType->getMagicNumber()); + }); } public static function getWoodenSlabIdentifier(TreeType $treeType) : BID{ @@ -68,17 +66,17 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_SLAB, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::WOODEN_SLAB, $treeType->getMagicNumber()); + }); } public static function getLogIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LOG, ItemIds::LOG, 0), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG, ItemIds::LOG, 1), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG, ItemIds::LOG, 2), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG, ItemIds::LOG, 3), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG, ItemIds::LOG2, 0), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG, ItemIds::LOG2, 1), + TreeType::OAK()->id() => new BID(Ids::OAK_LOG), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG), default => throw new AssumptionFailedError("All tree types should be covered") }; } @@ -92,7 +90,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_WOOD, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_WOOD, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::WOOD, $treeType->getMagicNumber()); + }); } public static function getAllSidedStrippedLogIdentifier(TreeType $treeType) : BID{ @@ -104,17 +102,17 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::STRIPPED_ACACIA_WOOD, TreeType::DARK_OAK()->id() => Ids::STRIPPED_DARK_OAK_WOOD, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::WOOD, $treeType->getMagicNumber() | BlockLegacyMetadata::WOOD_FLAG_STRIPPED); + }); } public static function getLeavesIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES, ItemIds::LEAVES, 0), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES, ItemIds::LEAVES, 1), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES, ItemIds::LEAVES, 2), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES, ItemIds::LEAVES, 3), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES, ItemIds::LEAVES2, 0), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES, ItemIds::LEAVES2, 1), + TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES), + TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES), + TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES), + TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES), + TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES), + TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES), default => throw new AssumptionFailedError("All tree types should be covered") }; } @@ -128,7 +126,7 @@ final class BlockLegacyIdHelper{ TreeType::ACACIA()->id() => Ids::ACACIA_SAPLING, TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SAPLING, default => throw new AssumptionFailedError("All tree types should be covered") - }, ItemIds::SAPLING, $treeType->getMagicNumber()); + }); } /** @@ -139,38 +137,38 @@ final class BlockLegacyIdHelper{ switch($treeType->id()){ case TreeType::OAK()->id(): return [ - new BID(Ids::OAK_SIGN, ItemIds::SIGN, 0, TileSign::class), - new BID(Ids::OAK_WALL_SIGN, ItemIds::SIGN, 0, TileSign::class), + new BID(Ids::OAK_SIGN, TileSign::class), + new BID(Ids::OAK_WALL_SIGN, TileSign::class), fn() => VanillaItems::OAK_SIGN() ]; case TreeType::SPRUCE()->id(): return [ - new BID(Ids::SPRUCE_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class), - new BID(Ids::SPRUCE_WALL_SIGN, ItemIds::SPRUCE_SIGN, 0, TileSign::class), + new BID(Ids::SPRUCE_SIGN, TileSign::class), + new BID(Ids::SPRUCE_WALL_SIGN, TileSign::class), fn() => VanillaItems::SPRUCE_SIGN() ]; case TreeType::BIRCH()->id(): return [ - new BID(Ids::BIRCH_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class), - new BID(Ids::BIRCH_WALL_SIGN, ItemIds::BIRCH_SIGN, 0, TileSign::class), + new BID(Ids::BIRCH_SIGN, TileSign::class), + new BID(Ids::BIRCH_WALL_SIGN, TileSign::class), fn() => VanillaItems::BIRCH_SIGN() ]; case TreeType::JUNGLE()->id(): return [ - new BID(Ids::JUNGLE_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class), - new BID(Ids::JUNGLE_WALL_SIGN, ItemIds::JUNGLE_SIGN, 0, TileSign::class), + new BID(Ids::JUNGLE_SIGN, TileSign::class), + new BID(Ids::JUNGLE_WALL_SIGN, TileSign::class), fn() => VanillaItems::JUNGLE_SIGN() ]; case TreeType::ACACIA()->id(): return [ - new BID(Ids::ACACIA_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class), - new BID(Ids::ACACIA_WALL_SIGN, ItemIds::ACACIA_SIGN, 0, TileSign::class), + new BID(Ids::ACACIA_SIGN, TileSign::class), + new BID(Ids::ACACIA_WALL_SIGN, TileSign::class), fn() => VanillaItems::ACACIA_SIGN() ]; case TreeType::DARK_OAK()->id(): return [ - new BID(Ids::DARK_OAK_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class), - new BID(Ids::DARK_OAK_WALL_SIGN, ItemIds::DARKOAK_SIGN, 0, TileSign::class), + new BID(Ids::DARK_OAK_SIGN, TileSign::class), + new BID(Ids::DARK_OAK_WALL_SIGN, TileSign::class), fn() => VanillaItems::DARK_OAK_SIGN() ]; } @@ -180,17 +178,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenTrapdoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_TRAPDOOR, ItemIds::WOODEN_TRAPDOOR, 0); + return new BID(Ids::OAK_TRAPDOOR); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_TRAPDOOR, ItemIds::SPRUCE_TRAPDOOR, 0); + return new BID(Ids::SPRUCE_TRAPDOOR); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_TRAPDOOR, ItemIds::BIRCH_TRAPDOOR, 0); + return new BID(Ids::BIRCH_TRAPDOOR); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_TRAPDOOR, ItemIds::JUNGLE_TRAPDOOR, 0); + return new BID(Ids::JUNGLE_TRAPDOOR); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_TRAPDOOR, ItemIds::ACACIA_TRAPDOOR, 0); + return new BID(Ids::ACACIA_TRAPDOOR); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_TRAPDOOR, ItemIds::DARK_OAK_TRAPDOOR, 0); + return new BID(Ids::DARK_OAK_TRAPDOOR); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -198,17 +196,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenButtonIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_BUTTON, ItemIds::WOODEN_BUTTON, 0); + return new BID(Ids::OAK_BUTTON); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_BUTTON, ItemIds::SPRUCE_BUTTON, 0); + return new BID(Ids::SPRUCE_BUTTON); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_BUTTON, ItemIds::BIRCH_BUTTON, 0); + return new BID(Ids::BIRCH_BUTTON); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_BUTTON, ItemIds::JUNGLE_BUTTON, 0); + return new BID(Ids::JUNGLE_BUTTON); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_BUTTON, ItemIds::ACACIA_BUTTON, 0); + return new BID(Ids::ACACIA_BUTTON); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_BUTTON, ItemIds::DARK_OAK_BUTTON, 0); + return new BID(Ids::DARK_OAK_BUTTON); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -216,17 +214,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenPressurePlateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_PRESSURE_PLATE, ItemIds::WOODEN_PRESSURE_PLATE, 0); + return new BID(Ids::OAK_PRESSURE_PLATE); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_PRESSURE_PLATE, ItemIds::SPRUCE_PRESSURE_PLATE, 0); + return new BID(Ids::SPRUCE_PRESSURE_PLATE); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_PRESSURE_PLATE, ItemIds::BIRCH_PRESSURE_PLATE, 0); + return new BID(Ids::BIRCH_PRESSURE_PLATE); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_PRESSURE_PLATE, ItemIds::JUNGLE_PRESSURE_PLATE, 0); + return new BID(Ids::JUNGLE_PRESSURE_PLATE); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_PRESSURE_PLATE, ItemIds::ACACIA_PRESSURE_PLATE, 0); + return new BID(Ids::ACACIA_PRESSURE_PLATE); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_PRESSURE_PLATE, ItemIds::DARK_OAK_PRESSURE_PLATE, 0); + return new BID(Ids::DARK_OAK_PRESSURE_PLATE); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -234,17 +232,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenDoorIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_DOOR, ItemIds::OAK_DOOR, 0); + return new BID(Ids::OAK_DOOR); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_DOOR, ItemIds::SPRUCE_DOOR, 0); + return new BID(Ids::SPRUCE_DOOR); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_DOOR, ItemIds::BIRCH_DOOR, 0); + return new BID(Ids::BIRCH_DOOR); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_DOOR, ItemIds::JUNGLE_DOOR, 0); + return new BID(Ids::JUNGLE_DOOR); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_DOOR, ItemIds::ACACIA_DOOR, 0); + return new BID(Ids::ACACIA_DOOR); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_DOOR, ItemIds::DARK_OAK_DOOR, 0); + return new BID(Ids::DARK_OAK_DOOR); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -252,17 +250,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenFenceGateIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_FENCE_GATE, ItemIds::OAK_FENCE_GATE, 0); + return new BID(Ids::OAK_FENCE_GATE); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_FENCE_GATE, ItemIds::SPRUCE_FENCE_GATE, 0); + return new BID(Ids::SPRUCE_FENCE_GATE); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_FENCE_GATE, ItemIds::BIRCH_FENCE_GATE, 0); + return new BID(Ids::BIRCH_FENCE_GATE); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_FENCE_GATE, ItemIds::JUNGLE_FENCE_GATE, 0); + return new BID(Ids::JUNGLE_FENCE_GATE); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_FENCE_GATE, ItemIds::ACACIA_FENCE_GATE, 0); + return new BID(Ids::ACACIA_FENCE_GATE); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_FENCE_GATE, ItemIds::DARK_OAK_FENCE_GATE, 0); + return new BID(Ids::DARK_OAK_FENCE_GATE); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -270,17 +268,17 @@ final class BlockLegacyIdHelper{ public static function getWoodenStairsIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::OAK_STAIRS, ItemIds::OAK_STAIRS, 0); + return new BID(Ids::OAK_STAIRS); case TreeType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_STAIRS, ItemIds::SPRUCE_STAIRS, 0); + return new BID(Ids::SPRUCE_STAIRS); case TreeType::BIRCH()->id(): - return new BID(Ids::BIRCH_STAIRS, ItemIds::BIRCH_STAIRS, 0); + return new BID(Ids::BIRCH_STAIRS); case TreeType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_STAIRS, ItemIds::JUNGLE_STAIRS, 0); + return new BID(Ids::JUNGLE_STAIRS); case TreeType::ACACIA()->id(): - return new BID(Ids::ACACIA_STAIRS, ItemIds::ACACIA_STAIRS, 0); + return new BID(Ids::ACACIA_STAIRS); case TreeType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_STAIRS, ItemIds::DARK_OAK_STAIRS, 0); + return new BID(Ids::DARK_OAK_STAIRS); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -288,17 +286,17 @@ final class BlockLegacyIdHelper{ public static function getStrippedLogIdentifier(TreeType $treeType) : BlockIdentifier{ switch($treeType->id()){ case TreeType::OAK()->id(): - return new BID(Ids::STRIPPED_OAK_LOG, ItemIds::STRIPPED_OAK_LOG, 0); + return new BID(Ids::STRIPPED_OAK_LOG); case TreeType::SPRUCE()->id(): - return new BID(Ids::STRIPPED_SPRUCE_LOG, ItemIds::STRIPPED_SPRUCE_LOG, 0); + return new BID(Ids::STRIPPED_SPRUCE_LOG); case TreeType::BIRCH()->id(): - return new BID(Ids::STRIPPED_BIRCH_LOG, ItemIds::STRIPPED_BIRCH_LOG, 0); + return new BID(Ids::STRIPPED_BIRCH_LOG); case TreeType::JUNGLE()->id(): - return new BID(Ids::STRIPPED_JUNGLE_LOG, ItemIds::STRIPPED_JUNGLE_LOG, 0); + return new BID(Ids::STRIPPED_JUNGLE_LOG); case TreeType::ACACIA()->id(): - return new BID(Ids::STRIPPED_ACACIA_LOG, ItemIds::STRIPPED_ACACIA_LOG, 0); + return new BID(Ids::STRIPPED_ACACIA_LOG); case TreeType::DARK_OAK()->id(): - return new BID(Ids::STRIPPED_DARK_OAK_LOG, ItemIds::STRIPPED_DARK_OAK_LOG, 0); + return new BID(Ids::STRIPPED_DARK_OAK_LOG); } throw new AssumptionFailedError("Switch should cover all wood types"); } @@ -306,51 +304,38 @@ final class BlockLegacyIdHelper{ public static function getGlazedTerracottaIdentifier(DyeColor $color) : BlockIdentifier{ switch($color->id()){ case DyeColor::WHITE()->id(): - return new BID(Ids::WHITE_GLAZED_TERRACOTTA, ItemIds::WHITE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::WHITE_GLAZED_TERRACOTTA); case DyeColor::ORANGE()->id(): - return new BID(Ids::ORANGE_GLAZED_TERRACOTTA, ItemIds::ORANGE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::ORANGE_GLAZED_TERRACOTTA); case DyeColor::MAGENTA()->id(): - return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA, ItemIds::MAGENTA_GLAZED_TERRACOTTA, 0); + return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA); case DyeColor::LIGHT_BLUE()->id(): - return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, ItemIds::LIGHT_BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA); case DyeColor::YELLOW()->id(): - return new BID(Ids::YELLOW_GLAZED_TERRACOTTA, ItemIds::YELLOW_GLAZED_TERRACOTTA, 0); + return new BID(Ids::YELLOW_GLAZED_TERRACOTTA); case DyeColor::LIME()->id(): - return new BID(Ids::LIME_GLAZED_TERRACOTTA, ItemIds::LIME_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIME_GLAZED_TERRACOTTA); case DyeColor::PINK()->id(): - return new BID(Ids::PINK_GLAZED_TERRACOTTA, ItemIds::PINK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PINK_GLAZED_TERRACOTTA); case DyeColor::GRAY()->id(): - return new BID(Ids::GRAY_GLAZED_TERRACOTTA, ItemIds::GRAY_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GRAY_GLAZED_TERRACOTTA); case DyeColor::LIGHT_GRAY()->id(): - return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, ItemIds::SILVER_GLAZED_TERRACOTTA, 0); + return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA); case DyeColor::CYAN()->id(): - return new BID(Ids::CYAN_GLAZED_TERRACOTTA, ItemIds::CYAN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::CYAN_GLAZED_TERRACOTTA); case DyeColor::PURPLE()->id(): - return new BID(Ids::PURPLE_GLAZED_TERRACOTTA, ItemIds::PURPLE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::PURPLE_GLAZED_TERRACOTTA); case DyeColor::BLUE()->id(): - return new BID(Ids::BLUE_GLAZED_TERRACOTTA, ItemIds::BLUE_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLUE_GLAZED_TERRACOTTA); case DyeColor::BROWN()->id(): - return new BID(Ids::BROWN_GLAZED_TERRACOTTA, ItemIds::BROWN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BROWN_GLAZED_TERRACOTTA); case DyeColor::GREEN()->id(): - return new BID(Ids::GREEN_GLAZED_TERRACOTTA, ItemIds::GREEN_GLAZED_TERRACOTTA, 0); + return new BID(Ids::GREEN_GLAZED_TERRACOTTA); case DyeColor::RED()->id(): - return new BID(Ids::RED_GLAZED_TERRACOTTA, ItemIds::RED_GLAZED_TERRACOTTA, 0); + return new BID(Ids::RED_GLAZED_TERRACOTTA); case DyeColor::BLACK()->id(): - return new BID(Ids::BLACK_GLAZED_TERRACOTTA, ItemIds::BLACK_GLAZED_TERRACOTTA, 0); + return new BID(Ids::BLACK_GLAZED_TERRACOTTA); } throw new AssumptionFailedError("Switch should cover all colours"); } - - public static function getStoneSlabIdentifier(int $blockTypeId, int $stoneSlabId, int $meta) : BID{ - $itemId = [ - 1 => ItemIds::STONE_SLAB, - 2 => ItemIds::STONE_SLAB2, - 3 => ItemIds::STONE_SLAB3, - 4 => ItemIds::STONE_SLAB4 - ][$stoneSlabId] ?? null; - if($itemId === null){ - throw new \InvalidArgumentException("Stone slab type should be 1, 2, 3 or 4"); - } - return new BID($blockTypeId, $itemId, $meta); - } } diff --git a/src/block/Coral.php b/src/block/Coral.php index 7cb301b2c..cde143384 100644 --- a/src/block/Coral.php +++ b/src/block/Coral.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -32,10 +31,6 @@ use pocketmine\world\BlockTransaction; final class Coral extends BaseCoral{ - protected function writeStateToItemMeta() : int{ - return CoralTypeIdMap::getInstance()->toId($this->coralType); - } - public function readStateFromWorld() : void{ //TODO: this hack ensures correct state of coral plants, because they don't retain their dead flag in metadata $world = $this->position->getWorld(); diff --git a/src/block/CoralBlock.php b/src/block/CoralBlock.php index 336b171a9..0ab831780 100644 --- a/src/block/CoralBlock.php +++ b/src/block/CoralBlock.php @@ -25,8 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; -use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\bedrock\CoralTypeIdMap; use pocketmine\item\Item; use function mt_rand; @@ -38,10 +36,6 @@ final class CoralBlock extends Opaque{ parent::__construct($idInfo, $name, $breakInfo); } - protected function writeStateToItemMeta() : int{ - return ($this->dead ? BlockLegacyMetadata::CORAL_BLOCK_FLAG_DEAD : 0) | CoralTypeIdMap::getInstance()->toId($this->coralType); - } - public function onNearbyBlockChange() : void{ if(!$this->dead){ $this->position->getWorld()->scheduleDelayedBlockUpdate($this->position, mt_rand(40, 200)); diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 1a0fcaaeb..e8ae43851 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Hoe; @@ -36,10 +35,6 @@ use pocketmine\world\sound\ItemUseOnBlockSound; class Dirt extends Opaque{ protected bool $coarse = false; - protected function writeStateToItemMeta() : int{ - return $this->coarse ? BlockLegacyMetadata::DIRT_FLAG_COARSE : 0; - } - public function getRequiredTypeDataBits() : int{ return 1; } protected function decodeType(BlockDataReader $r) : void{ diff --git a/src/block/Sponge.php b/src/block/Sponge.php index dc5f21d0a..ed25d8fb6 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,17 +23,12 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; class Sponge extends Opaque{ protected bool $wet = false; - protected function writeStateToItemMeta() : int{ - return $this->wet ? BlockLegacyMetadata::SPONGE_FLAG_WET : 0; - } - public function getRequiredTypeDataBits() : int{ return 1; } protected function decodeType(BlockDataReader $r) : void{ diff --git a/src/block/TNT.php b/src/block/TNT.php index 50803bbc9..a62f59e3c 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; @@ -46,10 +45,6 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - protected function writeStateToItemMeta() : int{ - return $this->worksUnderwater ? BlockLegacyMetadata::TNT_FLAG_UNDERWATER : 0; - } - public function getRequiredTypeDataBits() : int{ return 1; } protected function decodeType(BlockDataReader $r) : void{ diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 81a2af259..0bf147778 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -23,12 +23,27 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; class UnknownBlock extends Transparent{ - public function __construct(BlockIdentifier $idInfo, BlockBreakInfo $breakInfo){ + private int $stateData; + + public function __construct(BlockIdentifier $idInfo, BlockBreakInfo $breakInfo, int $stateData){ parent::__construct($idInfo, "Unknown", $breakInfo); + $this->stateData = $stateData; + } + + protected function decodeType(BlockDataReader $r) : void{ + //use type instead of state, so we don't lose any information like colour + //this might be an improperly registered plugin block + $this->stateData = $r->readInt(Block::INTERNAL_STATE_DATA_BITS); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeInt(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); } public function canBePlaced() : bool{ diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 04d8996fd..0b4cb1d6b 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataReaderHelper; use pocketmine\data\runtime\block\BlockDataWriter; @@ -34,13 +33,6 @@ trait ColoredTrait{ /** @var DyeColor */ private $color; - /** - * @see Block::writeStateToItemMeta() - */ - protected function writeStateToItemMeta() : int{ - return DyeColorIdMap::getInstance()->toId($this->color); - } - public function getRequiredTypeDataBits() : int{ return 4; } /** @see Block::decodeType() */ diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 45e9641a0..1e420beff 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use PHPUnit\Framework\TestCase; -use pocketmine\item\ItemIds; use function asort; use function file_get_contents; use function is_array; @@ -44,7 +43,7 @@ class BlockTest extends TestCase{ * Test registering a block which would overwrite another block, without forcing it */ public function testAccidentalOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, ItemIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); $this->expectException(\InvalidArgumentException::class); $this->blockFactory->register($block); } @@ -53,7 +52,7 @@ class BlockTest extends TestCase{ * Test registering a block deliberately overwriting another block works as expected */ public function testDeliberateOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE, ItemIds::COBBLESTONE, 0), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromFullBlock($block->getStateId())); } @@ -64,7 +63,7 @@ class BlockTest extends TestCase{ public function testRegisterNewBlock() : void{ for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i, $i + 10000, 0), "Strange New Block", BlockBreakInfo::instant()); + $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromFullBlock($b->getStateId())); return; @@ -79,7 +78,7 @@ class BlockTest extends TestCase{ */ public function testRegisterIdTooSmall() : void{ self::expectException(\InvalidArgumentException::class); - $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1, -1, 0), "Out Of Bounds Block", BlockBreakInfo::instant())); + $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1), "Out Of Bounds Block", BlockBreakInfo::instant())); } /** From 7430e1fbc0fc6ca2b04d0799cf408ff0a7a70973 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 17:51:48 +0100 Subject: [PATCH 214/692] Coral: remove obsolete workaround --- src/block/Coral.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/block/Coral.php b/src/block/Coral.php index cde143384..b621a3ab0 100644 --- a/src/block/Coral.php +++ b/src/block/Coral.php @@ -31,18 +31,6 @@ use pocketmine\world\BlockTransaction; final class Coral extends BaseCoral{ - public function readStateFromWorld() : void{ - //TODO: this hack ensures correct state of coral plants, because they don't retain their dead flag in metadata - $world = $this->position->getWorld(); - $this->dead = true; - foreach($this->position->sides() as $vector3){ - if($world->getBlock($vector3) instanceof Water){ - $this->dead = false; - break; - } - } - } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if(!$this->canBeSupportedBy($tx->fetchBlock($blockReplace->getPosition()->down()))){ return false; From 248eacd042606fb5572886621717b3e72a6906a2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 18:30:23 +0100 Subject: [PATCH 215/692] GlazedTerracotta: make colour dynamic, like all other coloured blocks made possible by stripping out legacy mess --- src/block/BlockFactory.php | 9 +---- src/block/BlockLegacyIdHelper.php | 39 ------------------- src/block/BlockTypeIds.php | 33 ++++++++-------- src/block/GlazedTerracotta.php | 8 ++++ src/block/VanillaBlocks.php | 34 +--------------- .../BlockObjectToBlockStateSerializer.php | 39 +++++++++++-------- .../convert/BlockStateDeserializerHelper.php | 7 +++- .../convert/BlockStateSerializerHelper.php | 4 -- .../BlockStateToBlockObjectDeserializer.php | 33 ++++++++-------- src/item/StringToItemParser.php | 18 +-------- .../block_factory_consistency_check.json | 2 +- 11 files changed, 74 insertions(+), 152 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 44072f5de..7f3f406ee 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -50,7 +50,6 @@ use pocketmine\block\tile\Note as TileNote; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; -use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\TreeType; use pocketmine\item\Item; @@ -496,13 +495,7 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); - $glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - foreach(DyeColor::getAll() as $color){ - $coloredName = function(string $name) use($color) : string{ - return $color->getDisplayName() . " " . $name; - }; - $this->register(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo)); - } + $this->register(new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 2d93b20d5..661e84994 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -26,7 +26,6 @@ namespace pocketmine\block; use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; -use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\TreeType; use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; @@ -300,42 +299,4 @@ final class BlockLegacyIdHelper{ } throw new AssumptionFailedError("Switch should cover all wood types"); } - - public static function getGlazedTerracottaIdentifier(DyeColor $color) : BlockIdentifier{ - switch($color->id()){ - case DyeColor::WHITE()->id(): - return new BID(Ids::WHITE_GLAZED_TERRACOTTA); - case DyeColor::ORANGE()->id(): - return new BID(Ids::ORANGE_GLAZED_TERRACOTTA); - case DyeColor::MAGENTA()->id(): - return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA); - case DyeColor::LIGHT_BLUE()->id(): - return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA); - case DyeColor::YELLOW()->id(): - return new BID(Ids::YELLOW_GLAZED_TERRACOTTA); - case DyeColor::LIME()->id(): - return new BID(Ids::LIME_GLAZED_TERRACOTTA); - case DyeColor::PINK()->id(): - return new BID(Ids::PINK_GLAZED_TERRACOTTA); - case DyeColor::GRAY()->id(): - return new BID(Ids::GRAY_GLAZED_TERRACOTTA); - case DyeColor::LIGHT_GRAY()->id(): - return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA); - case DyeColor::CYAN()->id(): - return new BID(Ids::CYAN_GLAZED_TERRACOTTA); - case DyeColor::PURPLE()->id(): - return new BID(Ids::PURPLE_GLAZED_TERRACOTTA); - case DyeColor::BLUE()->id(): - return new BID(Ids::BLUE_GLAZED_TERRACOTTA); - case DyeColor::BROWN()->id(): - return new BID(Ids::BROWN_GLAZED_TERRACOTTA); - case DyeColor::GREEN()->id(): - return new BID(Ids::GREEN_GLAZED_TERRACOTTA); - case DyeColor::RED()->id(): - return new BID(Ids::RED_GLAZED_TERRACOTTA); - case DyeColor::BLACK()->id(): - return new BID(Ids::BLACK_GLAZED_TERRACOTTA); - } - throw new AssumptionFailedError("Switch should cover all colours"); - } } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index ba211f59e..2fcfdb91f 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -87,9 +87,9 @@ final class BlockTypeIds{ public const BIRCH_TRAPDOOR = 10047; public const BIRCH_WALL_SIGN = 10048; public const BIRCH_WOOD = 10049; - public const BLACK_GLAZED_TERRACOTTA = 10050; + public const BLAST_FURNACE = 10051; - public const BLUE_GLAZED_TERRACOTTA = 10052; + public const BLUE_ICE = 10053; public const BLUE_ORCHID = 10054; public const BLUE_TORCH = 10055; @@ -100,7 +100,7 @@ final class BlockTypeIds{ public const BRICK_STAIRS = 10060; public const BRICK_WALL = 10061; public const BRICKS = 10062; - public const BROWN_GLAZED_TERRACOTTA = 10063; + public const BROWN_MUSHROOM = 10064; public const BROWN_MUSHROOM_BLOCK = 10065; public const CACTUS = 10066; @@ -136,7 +136,7 @@ final class BlockTypeIds{ public const CUT_RED_SANDSTONE_SLAB = 10096; public const CUT_SANDSTONE = 10097; public const CUT_SANDSTONE_SLAB = 10098; - public const CYAN_GLAZED_TERRACOTTA = 10099; + public const DANDELION = 10100; public const DARK_OAK_BUTTON = 10101; public const DARK_OAK_DOOR = 10102; @@ -322,8 +322,7 @@ final class BlockTypeIds{ public const GRASS = 10282; public const GRASS_PATH = 10283; public const GRAVEL = 10284; - public const GRAY_GLAZED_TERRACOTTA = 10285; - public const GREEN_GLAZED_TERRACOTTA = 10286; + public const GREEN_TORCH = 10287; public const HARDENED_CLAY = 10288; public const HARDENED_GLASS = 10289; @@ -372,15 +371,14 @@ final class BlockTypeIds{ public const LECTERN = 10332; public const LEGACY_STONECUTTER = 10333; public const LEVER = 10334; - public const LIGHT_BLUE_GLAZED_TERRACOTTA = 10335; - public const LIGHT_GRAY_GLAZED_TERRACOTTA = 10336; + public const LILAC = 10337; public const LILY_OF_THE_VALLEY = 10338; public const LILY_PAD = 10339; - public const LIME_GLAZED_TERRACOTTA = 10340; + public const LIT_PUMPKIN = 10341; public const LOOM = 10342; - public const MAGENTA_GLAZED_TERRACOTTA = 10343; + public const MAGMA = 10344; public const MATERIAL_REDUCER = 10345; public const MELON = 10346; @@ -425,12 +423,12 @@ final class BlockTypeIds{ public const OAK_WALL_SIGN = 10385; public const OAK_WOOD = 10386; public const OBSIDIAN = 10387; - public const ORANGE_GLAZED_TERRACOTTA = 10388; + public const ORANGE_TULIP = 10389; public const OXEYE_DAISY = 10390; public const PACKED_ICE = 10391; public const PEONY = 10392; - public const PINK_GLAZED_TERRACOTTA = 10393; + public const PINK_TULIP = 10394; public const PODZOL = 10395; public const POLISHED_ANDESITE = 10396; @@ -454,7 +452,7 @@ final class BlockTypeIds{ public const PRISMARINE_WALL = 10414; public const PUMPKIN = 10415; public const PUMPKIN_STEM = 10416; - public const PURPLE_GLAZED_TERRACOTTA = 10417; + public const PURPLE_TORCH = 10418; public const PURPUR = 10419; public const PURPUR_PILLAR = 10420; @@ -465,7 +463,7 @@ final class BlockTypeIds{ public const QUARTZ_SLAB = 10425; public const QUARTZ_STAIRS = 10426; public const RAIL = 10427; - public const RED_GLAZED_TERRACOTTA = 10428; + public const RED_MUSHROOM = 10429; public const RED_MUSHROOM_BLOCK = 10430; public const RED_NETHER_BRICK_SLAB = 10431; @@ -572,10 +570,11 @@ final class BlockTypeIds{ public const WEIGHTED_PRESSURE_PLATE_HEAVY = 10532; public const WEIGHTED_PRESSURE_PLATE_LIGHT = 10533; public const WHEAT = 10534; - public const WHITE_GLAZED_TERRACOTTA = 10535; + public const WHITE_TULIP = 10536; public const WOOL = 10537; - public const YELLOW_GLAZED_TERRACOTTA = 10538; - public const FIRST_UNUSED_BLOCK_ID = 10539; + public const GLAZED_TERRACOTTA = 10539; + + public const FIRST_UNUSED_BLOCK_ID = 10540; } diff --git a/src/block/GlazedTerracotta.php b/src/block/GlazedTerracotta.php index b782d5dbb..687c19a16 100644 --- a/src/block/GlazedTerracotta.php +++ b/src/block/GlazedTerracotta.php @@ -23,10 +23,18 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\ColoredTrait; +use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; class GlazedTerracotta extends Opaque{ + use ColoredTrait; use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; + + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + $this->color = DyeColor::BLACK(); + parent::__construct($idInfo, $name, $breakInfo); + } } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 070068ea1..11654965a 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -82,9 +82,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static WoodenTrapdoor BIRCH_TRAPDOOR() * @method static WallSign BIRCH_WALL_SIGN() * @method static Wood BIRCH_WOOD() - * @method static GlazedTerracotta BLACK_GLAZED_TERRACOTTA() * @method static Furnace BLAST_FURNACE() - * @method static GlazedTerracotta BLUE_GLAZED_TERRACOTTA() * @method static BlueIce BLUE_ICE() * @method static Flower BLUE_ORCHID() * @method static Torch BLUE_TORCH() @@ -95,7 +93,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab BRICK_SLAB() * @method static Stair BRICK_STAIRS() * @method static Wall BRICK_WALL() - * @method static GlazedTerracotta BROWN_GLAZED_TERRACOTTA() * @method static BrownMushroom BROWN_MUSHROOM() * @method static BrownMushroomBlock BROWN_MUSHROOM_BLOCK() * @method static Cactus CACTUS() @@ -131,7 +128,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab CUT_RED_SANDSTONE_SLAB() * @method static Opaque CUT_SANDSTONE() * @method static Slab CUT_SANDSTONE_SLAB() - * @method static GlazedTerracotta CYAN_GLAZED_TERRACOTTA() * @method static Flower DANDELION() * @method static WoodenButton DARK_OAK_BUTTON() * @method static WoodenDoor DARK_OAK_DOOR() @@ -306,6 +302,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Furnace FURNACE() * @method static Glass GLASS() * @method static GlassPane GLASS_PANE() + * @method static GlazedTerracotta GLAZED_TERRACOTTA() * @method static GlowingObsidian GLOWING_OBSIDIAN() * @method static Glowstone GLOWSTONE() * @method static Opaque GOLD() @@ -317,8 +314,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Grass GRASS() * @method static GrassPath GRASS_PATH() * @method static Gravel GRAVEL() - * @method static GlazedTerracotta GRAY_GLAZED_TERRACOTTA() - * @method static GlazedTerracotta GREEN_GLAZED_TERRACOTTA() * @method static Torch GREEN_TORCH() * @method static HardenedClay HARDENED_CLAY() * @method static HardenedGlass HARDENED_GLASS() @@ -367,15 +362,11 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Lectern LECTERN() * @method static Opaque LEGACY_STONECUTTER() * @method static Lever LEVER() - * @method static GlazedTerracotta LIGHT_BLUE_GLAZED_TERRACOTTA() - * @method static GlazedTerracotta LIGHT_GRAY_GLAZED_TERRACOTTA() * @method static DoublePlant LILAC() * @method static Flower LILY_OF_THE_VALLEY() * @method static WaterLily LILY_PAD() - * @method static GlazedTerracotta LIME_GLAZED_TERRACOTTA() * @method static LitPumpkin LIT_PUMPKIN() * @method static Loom LOOM() - * @method static GlazedTerracotta MAGENTA_GLAZED_TERRACOTTA() * @method static Magma MAGMA() * @method static ChemistryTable MATERIAL_REDUCER() * @method static Melon MELON() @@ -420,12 +411,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static WallSign OAK_WALL_SIGN() * @method static Wood OAK_WOOD() * @method static Opaque OBSIDIAN() - * @method static GlazedTerracotta ORANGE_GLAZED_TERRACOTTA() * @method static Flower ORANGE_TULIP() * @method static Flower OXEYE_DAISY() * @method static PackedIce PACKED_ICE() * @method static DoublePlant PEONY() - * @method static GlazedTerracotta PINK_GLAZED_TERRACOTTA() * @method static Flower PINK_TULIP() * @method static Podzol PODZOL() * @method static Opaque POLISHED_ANDESITE() @@ -449,7 +438,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Wall PRISMARINE_WALL() * @method static Pumpkin PUMPKIN() * @method static PumpkinStem PUMPKIN_STEM() - * @method static GlazedTerracotta PURPLE_GLAZED_TERRACOTTA() * @method static Torch PURPLE_TORCH() * @method static Opaque PURPUR() * @method static SimplePillar PURPUR_PILLAR() @@ -467,7 +455,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static RedstoneRepeater REDSTONE_REPEATER() * @method static RedstoneTorch REDSTONE_TORCH() * @method static RedstoneWire REDSTONE_WIRE() - * @method static GlazedTerracotta RED_GLAZED_TERRACOTTA() * @method static RedMushroom RED_MUSHROOM() * @method static RedMushroomBlock RED_MUSHROOM_BLOCK() * @method static Opaque RED_NETHER_BRICKS() @@ -567,10 +554,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() * @method static Wheat WHEAT() - * @method static GlazedTerracotta WHITE_GLAZED_TERRACOTTA() * @method static Flower WHITE_TULIP() * @method static Wool WOOL() - * @method static GlazedTerracotta YELLOW_GLAZED_TERRACOTTA() */ final class VanillaBlocks{ use CloningRegistryTrait; @@ -645,9 +630,7 @@ final class VanillaBlocks{ self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0)); self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0)); - self::register("black_glazed_terracotta", $factory->get(Ids::BLACK_GLAZED_TERRACOTTA, 0)); self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0)); - self::register("blue_glazed_terracotta", $factory->get(Ids::BLUE_GLAZED_TERRACOTTA, 0)); self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0)); self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0)); self::register("blue_torch", $factory->get(Ids::BLUE_TORCH, 1)); @@ -658,7 +641,6 @@ final class VanillaBlocks{ self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 0)); self::register("brick_wall", $factory->get(Ids::BRICK_WALL, 0)); self::register("bricks", $factory->get(Ids::BRICKS, 0)); - self::register("brown_glazed_terracotta", $factory->get(Ids::BROWN_GLAZED_TERRACOTTA, 0)); self::register("brown_mushroom", $factory->get(Ids::BROWN_MUSHROOM, 0)); self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10)); self::register("cactus", $factory->get(Ids::CACTUS, 0)); @@ -694,7 +676,6 @@ final class VanillaBlocks{ self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0)); self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0)); self::register("cut_sandstone_slab", $factory->get(Ids::CUT_SANDSTONE_SLAB, 0)); - self::register("cyan_glazed_terracotta", $factory->get(Ids::CYAN_GLAZED_TERRACOTTA, 0)); self::register("dandelion", $factory->get(Ids::DANDELION, 0)); self::register("dark_oak_button", $factory->get(Ids::DARK_OAK_BUTTON, 0)); self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR, 0)); @@ -869,6 +850,7 @@ final class VanillaBlocks{ self::register("furnace", $factory->get(Ids::FURNACE, 0)); self::register("glass", $factory->get(Ids::GLASS, 0)); self::register("glass_pane", $factory->get(Ids::GLASS_PANE, 0)); + self::register("glazed_terracotta", $factory->get(Ids::GLAZED_TERRACOTTA, 0)); self::register("glowing_obsidian", $factory->get(Ids::GLOWING_OBSIDIAN, 0)); self::register("glowstone", $factory->get(Ids::GLOWSTONE, 0)); self::register("gold", $factory->get(Ids::GOLD, 0)); @@ -880,8 +862,6 @@ final class VanillaBlocks{ self::register("grass", $factory->get(Ids::GRASS, 0)); self::register("grass_path", $factory->get(Ids::GRASS_PATH, 0)); self::register("gravel", $factory->get(Ids::GRAVEL, 0)); - self::register("gray_glazed_terracotta", $factory->get(Ids::GRAY_GLAZED_TERRACOTTA, 0)); - self::register("green_glazed_terracotta", $factory->get(Ids::GREEN_GLAZED_TERRACOTTA, 0)); self::register("green_torch", $factory->get(Ids::GREEN_TORCH, 1)); self::register("hardened_clay", $factory->get(Ids::HARDENED_CLAY, 0)); self::register("hardened_glass", $factory->get(Ids::HARDENED_GLASS, 0)); @@ -930,15 +910,11 @@ final class VanillaBlocks{ self::register("lectern", $factory->get(Ids::LECTERN, 0)); self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0)); self::register("lever", $factory->get(Ids::LEVER, 5)); - self::register("light_blue_glazed_terracotta", $factory->get(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 0)); - self::register("light_gray_glazed_terracotta", $factory->get(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, 0)); self::register("lilac", $factory->get(Ids::LILAC, 0)); self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0)); self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0)); - self::register("lime_glazed_terracotta", $factory->get(Ids::LIME_GLAZED_TERRACOTTA, 0)); self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0)); self::register("loom", $factory->get(Ids::LOOM, 0)); - self::register("magenta_glazed_terracotta", $factory->get(Ids::MAGENTA_GLAZED_TERRACOTTA, 0)); self::register("magma", $factory->get(Ids::MAGMA, 0)); self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); self::register("melon", $factory->get(Ids::MELON, 0)); @@ -983,12 +959,10 @@ final class VanillaBlocks{ self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0)); self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0)); self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0)); - self::register("orange_glazed_terracotta", $factory->get(Ids::ORANGE_GLAZED_TERRACOTTA, 0)); self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0)); self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0)); self::register("packed_ice", $factory->get(Ids::PACKED_ICE, 0)); self::register("peony", $factory->get(Ids::PEONY, 0)); - self::register("pink_glazed_terracotta", $factory->get(Ids::PINK_GLAZED_TERRACOTTA, 0)); self::register("pink_tulip", $factory->get(Ids::PINK_TULIP, 0)); self::register("podzol", $factory->get(Ids::PODZOL, 0)); self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0)); @@ -1012,7 +986,6 @@ final class VanillaBlocks{ self::register("prismarine_wall", $factory->get(Ids::PRISMARINE_WALL, 0)); self::register("pumpkin", $factory->get(Ids::PUMPKIN, 0)); self::register("pumpkin_stem", $factory->get(Ids::PUMPKIN_STEM, 0)); - self::register("purple_glazed_terracotta", $factory->get(Ids::PURPLE_GLAZED_TERRACOTTA, 0)); self::register("purple_torch", $factory->get(Ids::PURPLE_TORCH, 1)); self::register("purpur", $factory->get(Ids::PURPUR, 0)); self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 2)); @@ -1023,7 +996,6 @@ final class VanillaBlocks{ self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); self::register("rail", $factory->get(Ids::RAIL, 0)); - self::register("red_glazed_terracotta", $factory->get(Ids::RED_GLAZED_TERRACOTTA, 0)); self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0)); self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 10)); self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0)); @@ -1130,9 +1102,7 @@ final class VanillaBlocks{ self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0)); self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0)); self::register("wheat", $factory->get(Ids::WHEAT, 0)); - self::register("white_glazed_terracotta", $factory->get(Ids::WHITE_GLAZED_TERRACOTTA, 0)); self::register("white_tulip", $factory->get(Ids::WHITE_TULIP, 0)); self::register("wool", $factory->get(Ids::WOOL, 14)); - self::register("yellow_glazed_terracotta", $factory->get(Ids::YELLOW_GLAZED_TERRACOTTA, 0)); } } diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 1ed913d2e..04907a553 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -120,6 +120,7 @@ use pocketmine\block\TripwireHook; use pocketmine\block\UnderwaterTorch; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\block\Vine; @@ -329,9 +330,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::BLACK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLACK_GLAZED_TERRACOTTA))); $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); - $this->map(Blocks::BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLUE_GLAZED_TERRACOTTA))); $this->map(Blocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE)); $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); $this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); @@ -351,7 +350,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); $this->map(Blocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS))); $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); - $this->map(Blocks::BROWN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BROWN_GLAZED_TERRACOTTA))); $this->map(Blocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); $this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{ @@ -428,7 +426,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); - $this->map(Blocks::CYAN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::CYAN_GLAZED_TERRACOTTA))); $this->map(Blocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER)); $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); @@ -642,6 +639,28 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); $this->map(Blocks::GLASS(), fn() => new Writer(Ids::GLASS)); $this->map(Blocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE)); + $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ + return Writer::create(match ($color = $block->getColor()) { + DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA, + DyeColor::BLUE() => Ids::BLUE_GLAZED_TERRACOTTA, + DyeColor::BROWN() => Ids::BROWN_GLAZED_TERRACOTTA, + DyeColor::CYAN() => Ids::CYAN_GLAZED_TERRACOTTA, + DyeColor::GRAY() => Ids::GRAY_GLAZED_TERRACOTTA, + DyeColor::GREEN() => Ids::GREEN_GLAZED_TERRACOTTA, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, + DyeColor::LIGHT_GRAY() => Ids::SILVER_GLAZED_TERRACOTTA, + DyeColor::LIME() => Ids::LIME_GLAZED_TERRACOTTA, + DyeColor::MAGENTA() => Ids::MAGENTA_GLAZED_TERRACOTTA, + DyeColor::ORANGE() => Ids::ORANGE_GLAZED_TERRACOTTA, + DyeColor::PINK() => Ids::PINK_GLAZED_TERRACOTTA, + DyeColor::PURPLE() => Ids::PURPLE_GLAZED_TERRACOTTA, + DyeColor::RED() => Ids::RED_GLAZED_TERRACOTTA, + DyeColor::WHITE() => Ids::WHITE_GLAZED_TERRACOTTA, + DyeColor::YELLOW() => Ids::YELLOW_GLAZED_TERRACOTTA, + default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name()) + }) + ->writeHorizontalFacing($block->getFacing()); + }); $this->map(Blocks::GLOWING_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN)); $this->map(Blocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE)); $this->map(Blocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK)); @@ -653,8 +672,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::GRASS(), fn() => new Writer(Ids::GRASS)); $this->map(Blocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); $this->map(Blocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL)); - $this->map(Blocks::GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GRAY_GLAZED_TERRACOTTA))); - $this->map(Blocks::GREEN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GREEN_GLAZED_TERRACOTTA))); $this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); $this->map(Blocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY)); $this->map(Blocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS)); @@ -748,12 +765,9 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), }); }); - $this->map(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA))); - $this->map(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA))); $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); $this->map(Blocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY)); - $this->map(Blocks::LIME_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIME_GLAZED_TERRACOTTA))); $this->map(Blocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ return Writer::create(Ids::LIT_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); @@ -762,7 +776,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LOOM) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(Blocks::MAGENTA_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::MAGENTA_GLAZED_TERRACOTTA))); $this->map(Blocks::MAGMA(), fn() => new Writer(Ids::MAGMA)); $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); $this->map(Blocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK)); @@ -823,12 +836,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); $this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->map(Blocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN)); - $this->map(Blocks::ORANGE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::ORANGE_GLAZED_TERRACOTTA))); $this->map(Blocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); $this->map(Blocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); $this->map(Blocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE)); $this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(Blocks::PINK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PINK_GLAZED_TERRACOTTA))); $this->map(Blocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); $this->map(Blocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); @@ -861,7 +872,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeLegacyHorizontalFacing(Facing::SOUTH); //no longer used }); $this->map(Blocks::PUMPKIN_STEM(), fn(PumpkinStem $block) => Helper::encodeStem($block, new Writer(Ids::PUMPKIN_STEM))); - $this->map(Blocks::PURPLE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PURPLE_GLAZED_TERRACOTTA))); $this->map(Blocks::PURPLE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_BP))); $this->map(Blocks::PURPUR(), function() : Writer{ return Writer::create(Ids::PURPUR_BLOCK) @@ -905,7 +915,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::REDSTONE_WIRE) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(Blocks::RED_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::RED_GLAZED_TERRACOTTA))); $this->map(Blocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM)); $this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); $this->map(Blocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); @@ -1096,12 +1105,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); $this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); - $this->map(Blocks::WHITE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::WHITE_GLAZED_TERRACOTTA))); $this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); $this->map(Blocks::WOOL(), function(Wool $block) : Writer{ return Writer::create(Ids::WOOL) ->writeColor($block->getColor()); }); - $this->map(Blocks::YELLOW_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::YELLOW_GLAZED_TERRACOTTA))); } } diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index cad6bfad8..b662e847c 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -41,6 +41,7 @@ use pocketmine\block\Slab; use pocketmine\block\Stair; use pocketmine\block\Stem; use pocketmine\block\Trapdoor; +use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; @@ -125,8 +126,10 @@ final class BlockStateDeserializerHelper{ } /** @throws BlockStateDeserializeException */ - public static function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{ - return $block->setFacing($in->readHorizontalFacing()); + public static function decodeGlazedTerracotta(DyeColor $color, BlockStateReader $in) : GlazedTerracotta{ + return VanillaBlocks::GLAZED_TERRACOTTA() + ->setColor($color) + ->setFacing($in->readHorizontalFacing()); } /** @throws BlockStateDeserializeException */ diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index b65abbaae..5bc021940 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -31,7 +31,6 @@ use pocketmine\block\DoublePlant; use pocketmine\block\FenceGate; use pocketmine\block\FloorSign; use pocketmine\block\Furnace; -use pocketmine\block\GlazedTerracotta; use pocketmine\block\Leaves; use pocketmine\block\Liquid; use pocketmine\block\Log; @@ -114,9 +113,6 @@ final class BlockStateSerializerHelper{ return BlockStateWriter::create($block->isLit() ? $litId : $unlitId) ->writeHorizontalFacing($block->getFacing()); } - public static function encodeGlazedTerracotta(GlazedTerracotta $block, BlockStateWriter $out) : BlockStateWriter{ - return $out->writeHorizontalFacing($block->getFacing()); - } private static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{ return $out diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8002cd31e..e371e8243 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -28,6 +28,7 @@ use pocketmine\block\Block; use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; @@ -147,13 +148,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); - $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLACK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); $this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ $in->ignored(StateNames::DEPRECATED); @@ -168,7 +169,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); $this->map(Ids::BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BRICK_STAIRS(), $in)); - $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BROWN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); $this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); $this->map(Ids::CACTUS, function(Reader $in) : Block{ @@ -256,7 +257,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setCoralType(CoralType::HORN()); }); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); - $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::CYAN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); @@ -515,8 +516,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::GRASS, fn() => Blocks::GRASS()); $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); - $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GRAY_GLAZED_TERRACOTTA(), $in)); - $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GREEN_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); + $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); $this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{ @@ -607,9 +608,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::LEVER_DIRECTION, $value), }); }); - $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); - $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIME_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); $this->map(Ids::LIT_BLAST_FURNACE, function(Reader $in) : Block{ return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) @@ -659,7 +660,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::MAGENTA_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); $this->map(Ids::MELON_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::MELON_STEM(), $in)); @@ -693,9 +694,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); $this->map(Ids::OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::OAK_STAIRS(), $in)); $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); - $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::ORANGE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); - $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PINK_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); $this->map(Ids::PLANKS, function(Reader $in) : Block{ return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_OAK => Blocks::OAK_PLANKS(), @@ -739,7 +740,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::PUMPKIN(); }); $this->map(Ids::PUMPKIN_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::PUMPKIN_STEM(), $in)); - $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PURPLE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in)); $this->map(Ids::PURPUR_BLOCK, function(Reader $in) : Block{ $type = $in->readString(StateNames::CHISEL_TYPE); if($type === StringValues::CHISEL_TYPE_LINES){ @@ -793,7 +794,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::FLOWER_TYPE, $type), }; }); - $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::RED_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); $this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in)); $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); @@ -870,7 +871,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::DYED_SHULKER_BOX() ->setColor($in->readColor()); }); - $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in)); $this->map(Ids::SKULL, function(Reader $in) : Block{ return Blocks::MOB_HEAD() ->setFacing($in->readFacingWithoutDown()); @@ -1052,7 +1053,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); $this->map(Ids::WEB, fn() => Blocks::COBWEB()); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); - $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::WHITE_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); $this->map(Ids::WOOD, function(Reader $in) : Block{ $in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet $stripped = $in->readBool(StateNames::STRIPPED_BIT); @@ -1075,7 +1076,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setColor($in->readColor()); }); $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); - $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::YELLOW_GLAZED_TERRACOTTA(), $in)); + $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); //$this->map(Ids::ALLOW, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 7e69ebe39..8be5208bd 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -52,6 +52,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock($prefix("carpet"), fn() => Blocks::CARPET()->setColor($color)); $result->registerBlock($prefix("concrete"), fn() => Blocks::CONCRETE()->setColor($color)); $result->registerBlock($prefix("concrete_powder"), fn() => Blocks::CONCRETE_POWDER()->setColor($color)); + $result->registerBlock($prefix("glazed_terracotta"), fn() => Blocks::GLAZED_TERRACOTTA()->setColor($color)); $result->registerBlock($prefix("stained_clay"), fn() => Blocks::STAINED_CLAY()->setColor($color)); $result->registerBlock($prefix("stained_glass"), fn() => Blocks::STAINED_GLASS()->setColor($color)); $result->registerBlock($prefix("stained_glass_pane"), fn() => Blocks::STAINED_GLASS_PANE()->setColor($color)); @@ -131,9 +132,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()); $result->registerBlock("birch_wood_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("birch_wooden_stairs", fn() => Blocks::BIRCH_STAIRS()); - $result->registerBlock("black_glazed_terracotta", fn() => Blocks::BLACK_GLAZED_TERRACOTTA()); $result->registerBlock("blast_furnace", fn() => Blocks::BLAST_FURNACE()); - $result->registerBlock("blue_glazed_terracotta", fn() => Blocks::BLUE_GLAZED_TERRACOTTA()); $result->registerBlock("blue_ice", fn() => Blocks::BLUE_ICE()); $result->registerBlock("blue_orchid", fn() => Blocks::BLUE_ORCHID()); $result->registerBlock("blue_torch", fn() => Blocks::BLUE_TORCH()); @@ -147,7 +146,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("brick_wall", fn() => Blocks::BRICK_WALL()); $result->registerBlock("bricks", fn() => Blocks::BRICKS()); $result->registerBlock("bricks_block", fn() => Blocks::BRICKS()); - $result->registerBlock("brown_glazed_terracotta", fn() => Blocks::BROWN_GLAZED_TERRACOTTA()); $result->registerBlock("brown_mushroom", fn() => Blocks::BROWN_MUSHROOM()); $result->registerBlock("brown_mushroom_block", fn() => Blocks::BROWN_MUSHROOM_BLOCK()); $result->registerBlock("burning_furnace", fn() => Blocks::FURNACE()); @@ -205,7 +203,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cut_red_sandstone_slab", fn() => Blocks::CUT_RED_SANDSTONE_SLAB()); $result->registerBlock("cut_sandstone", fn() => Blocks::CUT_SANDSTONE()); $result->registerBlock("cut_sandstone_slab", fn() => Blocks::CUT_SANDSTONE_SLAB()); - $result->registerBlock("cyan_glazed_terracotta", fn() => Blocks::CYAN_GLAZED_TERRACOTTA()); $result->registerBlock("damaged_anvil", fn() => Blocks::ANVIL()->setDamage(2)); $result->registerBlock("dandelion", fn() => Blocks::DANDELION()); $result->registerBlock("dark_oak_button", fn() => Blocks::DARK_OAK_BUTTON()); @@ -558,8 +555,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("grass", fn() => Blocks::GRASS()); $result->registerBlock("grass_path", fn() => Blocks::GRASS_PATH()); $result->registerBlock("gravel", fn() => Blocks::GRAVEL()); - $result->registerBlock("gray_glazed_terracotta", fn() => Blocks::GRAY_GLAZED_TERRACOTTA()); - $result->registerBlock("green_glazed_terracotta", fn() => Blocks::GREEN_GLAZED_TERRACOTTA()); $result->registerBlock("green_torch", fn() => Blocks::GREEN_TORCH()); $result->registerBlock("hard_glass", fn() => Blocks::HARDENED_GLASS()); $result->registerBlock("hard_glass_pane", fn() => Blocks::HARDENED_GLASS_PANE()); @@ -635,13 +630,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("lectern", fn() => Blocks::LECTERN()); $result->registerBlock("legacy_stonecutter", fn() => Blocks::LEGACY_STONECUTTER()); $result->registerBlock("lever", fn() => Blocks::LEVER()); - $result->registerBlock("light_blue_glazed_terracotta", fn() => Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA()); - $result->registerBlock("light_gray_glazed_terracotta", fn() => Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA()); $result->registerBlock("light_weighted_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("lilac", fn() => Blocks::LILAC()); $result->registerBlock("lily_of_the_valley", fn() => Blocks::LILY_OF_THE_VALLEY()); $result->registerBlock("lily_pad", fn() => Blocks::LILY_PAD()); - $result->registerBlock("lime_glazed_terracotta", fn() => Blocks::LIME_GLAZED_TERRACOTTA()); $result->registerBlock("lit_blast_furnace", fn() => Blocks::BLAST_FURNACE()); $result->registerBlock("lit_furnace", fn() => Blocks::FURNACE()); $result->registerBlock("lit_pumpkin", fn() => Blocks::LIT_PUMPKIN()); @@ -652,7 +644,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("log", fn() => Blocks::OAK_LOG()); $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()); $result->registerBlock("loom", fn() => Blocks::LOOM()); - $result->registerBlock("magenta_glazed_terracotta", fn() => Blocks::MAGENTA_GLAZED_TERRACOTTA()); $result->registerBlock("magma", fn() => Blocks::MAGMA()); $result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER()); $result->registerBlock("melon_block", fn() => Blocks::MELON()); @@ -713,12 +704,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("oak_wood_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("oak_wooden_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("obsidian", fn() => Blocks::OBSIDIAN()); - $result->registerBlock("orange_glazed_terracotta", fn() => Blocks::ORANGE_GLAZED_TERRACOTTA()); $result->registerBlock("orange_tulip", fn() => Blocks::ORANGE_TULIP()); $result->registerBlock("oxeye_daisy", fn() => Blocks::OXEYE_DAISY()); $result->registerBlock("packed_ice", fn() => Blocks::PACKED_ICE()); $result->registerBlock("peony", fn() => Blocks::PEONY()); - $result->registerBlock("pink_glazed_terracotta", fn() => Blocks::PINK_GLAZED_TERRACOTTA()); $result->registerBlock("pink_tulip", fn() => Blocks::PINK_TULIP()); $result->registerBlock("plank", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("planks", fn() => Blocks::OAK_PLANKS()); @@ -751,7 +740,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("prismarine_wall", fn() => Blocks::PRISMARINE_WALL()); $result->registerBlock("pumpkin", fn() => Blocks::PUMPKIN()); $result->registerBlock("pumpkin_stem", fn() => Blocks::PUMPKIN_STEM()); - $result->registerBlock("purple_glazed_terracotta", fn() => Blocks::PURPLE_GLAZED_TERRACOTTA()); $result->registerBlock("purple_torch", fn() => Blocks::PURPLE_TORCH()); $result->registerBlock("purpur", fn() => Blocks::PURPUR()); $result->registerBlock("purpur_block", fn() => Blocks::PURPUR()); @@ -765,7 +753,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("quartz_stairs", fn() => Blocks::QUARTZ_STAIRS()); $result->registerBlock("rail", fn() => Blocks::RAIL()); $result->registerBlock("red_flower", fn() => Blocks::POPPY()); - $result->registerBlock("red_glazed_terracotta", fn() => Blocks::RED_GLAZED_TERRACOTTA()); $result->registerBlock("red_mushroom", fn() => Blocks::RED_MUSHROOM()); $result->registerBlock("red_mushroom_block", fn() => Blocks::RED_MUSHROOM_BLOCK()); $result->registerBlock("red_nether_brick", fn() => Blocks::RED_NETHER_BRICKS()); @@ -806,7 +793,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("sign_post", fn() => Blocks::OAK_SIGN()); - $result->registerBlock("silver_glazed_terracotta", fn() => Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA()); $result->registerBlock("skull_block", fn() => Blocks::MOB_HEAD()); $result->registerBlock("slab", fn() => Blocks::SMOOTH_STONE_SLAB()); $result->registerBlock("slabs", fn() => Blocks::SMOOTH_STONE_SLAB()); @@ -925,7 +911,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("weighted_pressure_plate_heavy", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY()); $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); - $result->registerBlock("white_glazed_terracotta", fn() => Blocks::WHITE_GLAZED_TERRACOTTA()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); $result->registerBlock("wood", fn() => Blocks::OAK_LOG()); $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()); @@ -946,7 +931,6 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("wool", fn() => Blocks::WOOL()); $result->registerBlock("workbench", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("yellow_flower", fn() => Blocks::DANDELION()); - $result->registerBlock("yellow_glazed_terracotta", fn() => Blocks::YELLOW_GLAZED_TERRACOTTA()); $result->register("acacia_boat", fn() => Items::ACACIA_BOAT()); $result->register("apple", fn() => Items::APPLE()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 44867a72f..ff7936de5 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5393920":"White Glazed Terracotta","5393921":"White Glazed Terracotta","5393922":"White Glazed Terracotta","5393923":"White Glazed Terracotta","5318656":"Orange Glazed Terracotta","5318657":"Orange Glazed Terracotta","5318658":"Orange Glazed Terracotta","5318659":"Orange Glazed Terracotta","5295616":"Magenta Glazed Terracotta","5295617":"Magenta Glazed Terracotta","5295618":"Magenta Glazed Terracotta","5295619":"Magenta Glazed Terracotta","5291520":"Light Blue Glazed Terracotta","5291521":"Light Blue Glazed Terracotta","5291522":"Light Blue Glazed Terracotta","5291523":"Light Blue Glazed Terracotta","5395456":"Yellow Glazed Terracotta","5395457":"Yellow Glazed Terracotta","5395458":"Yellow Glazed Terracotta","5395459":"Yellow Glazed Terracotta","5294080":"Lime Glazed Terracotta","5294081":"Lime Glazed Terracotta","5294082":"Lime Glazed Terracotta","5294083":"Lime Glazed Terracotta","5321216":"Pink Glazed Terracotta","5321217":"Pink Glazed Terracotta","5321218":"Pink Glazed Terracotta","5321219":"Pink Glazed Terracotta","5265920":"Gray Glazed Terracotta","5265921":"Gray Glazed Terracotta","5265922":"Gray Glazed Terracotta","5265923":"Gray Glazed Terracotta","5292032":"Light Gray Glazed Terracotta","5292033":"Light Gray Glazed Terracotta","5292034":"Light Gray Glazed Terracotta","5292035":"Light Gray Glazed Terracotta","5170688":"Cyan Glazed Terracotta","5170689":"Cyan Glazed Terracotta","5170690":"Cyan Glazed Terracotta","5170691":"Cyan Glazed Terracotta","5333504":"Purple Glazed Terracotta","5333505":"Purple Glazed Terracotta","5333506":"Purple Glazed Terracotta","5333507":"Purple Glazed Terracotta","5146624":"Blue Glazed Terracotta","5146625":"Blue Glazed Terracotta","5146626":"Blue Glazed Terracotta","5146627":"Blue Glazed Terracotta","5152256":"Brown Glazed Terracotta","5152257":"Brown Glazed Terracotta","5152258":"Brown Glazed Terracotta","5152259":"Brown Glazed Terracotta","5266432":"Green Glazed Terracotta","5266433":"Green Glazed Terracotta","5266434":"Green Glazed Terracotta","5266435":"Green Glazed Terracotta","5339136":"Red Glazed Terracotta","5339137":"Red Glazed Terracotta","5339138":"Red Glazed Terracotta","5339139":"Red Glazed Terracotta","5145600":"Black Glazed Terracotta","5145601":"Black Glazed Terracotta","5145602":"Black Glazed Terracotta","5145603":"Black Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file From ff90c83d66fb80f222f7ffe9e157d26d85d4e8ba Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 19:16:15 +0100 Subject: [PATCH 216/692] Implemented log stripping via axe right-click --- src/block/BlockFactory.php | 7 +- src/block/BlockLegacyIdHelper.php | 30 -------- src/block/BlockTypeIds.php | 13 +--- src/block/VanillaBlocks.php | 36 ++------- src/block/Wood.php | 30 ++++++-- .../BlockObjectToBlockStateSerializer.php | 30 ++------ .../convert/BlockStateDeserializerHelper.php | 8 ++ .../convert/BlockStateSerializerHelper.php | 15 ++-- .../BlockStateToBlockObjectDeserializer.php | 76 +++++++------------ src/item/StringToItemParser.php | 58 +++++++------- 10 files changed, 112 insertions(+), 191 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 7f3f406ee..00befb60e 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -461,11 +461,8 @@ class BlockFactory{ $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType, false)); - $this->register(new Log(BlockLegacyIdHelper::getStrippedLogIdentifier($treeType), "Stripped " . $name . " Log", $logBreakInfo, $treeType, true)); - - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType, false)); - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedStrippedLogIdentifier($treeType), "Stripped $name Wood", $logBreakInfo, $treeType, true)); + $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType)); + $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType)); $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 661e84994..7f16cb4b1 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -92,18 +92,6 @@ final class BlockLegacyIdHelper{ }); } - public static function getAllSidedStrippedLogIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::STRIPPED_OAK_WOOD, - TreeType::SPRUCE()->id() => Ids::STRIPPED_SPRUCE_WOOD, - TreeType::BIRCH()->id() => Ids::STRIPPED_BIRCH_WOOD, - TreeType::JUNGLE()->id() => Ids::STRIPPED_JUNGLE_WOOD, - TreeType::ACACIA()->id() => Ids::STRIPPED_ACACIA_WOOD, - TreeType::DARK_OAK()->id() => Ids::STRIPPED_DARK_OAK_WOOD, - default => throw new AssumptionFailedError("All tree types should be covered") - }); - } - public static function getLeavesIdentifier(TreeType $treeType) : BID{ return match($treeType->id()){ TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES), @@ -281,22 +269,4 @@ final class BlockLegacyIdHelper{ } throw new AssumptionFailedError("Switch should cover all wood types"); } - - public static function getStrippedLogIdentifier(TreeType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case TreeType::OAK()->id(): - return new BID(Ids::STRIPPED_OAK_LOG); - case TreeType::SPRUCE()->id(): - return new BID(Ids::STRIPPED_SPRUCE_LOG); - case TreeType::BIRCH()->id(): - return new BID(Ids::STRIPPED_BIRCH_LOG); - case TreeType::JUNGLE()->id(): - return new BID(Ids::STRIPPED_JUNGLE_LOG); - case TreeType::ACACIA()->id(): - return new BID(Ids::STRIPPED_ACACIA_LOG); - case TreeType::DARK_OAK()->id(): - return new BID(Ids::STRIPPED_DARK_OAK_LOG); - } - throw new AssumptionFailedError("Switch should cover all wood types"); - } } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 2fcfdb91f..93132dee0 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -541,18 +541,7 @@ final class BlockTypeIds{ public const STONE_SLAB = 10503; public const STONE_STAIRS = 10504; public const STONECUTTER = 10505; - public const STRIPPED_ACACIA_LOG = 10506; - public const STRIPPED_ACACIA_WOOD = 10507; - public const STRIPPED_BIRCH_LOG = 10508; - public const STRIPPED_BIRCH_WOOD = 10509; - public const STRIPPED_DARK_OAK_LOG = 10510; - public const STRIPPED_DARK_OAK_WOOD = 10511; - public const STRIPPED_JUNGLE_LOG = 10512; - public const STRIPPED_JUNGLE_WOOD = 10513; - public const STRIPPED_OAK_LOG = 10514; - public const STRIPPED_OAK_WOOD = 10515; - public const STRIPPED_SPRUCE_LOG = 10516; - public const STRIPPED_SPRUCE_WOOD = 10517; + public const SUGARCANE = 10518; public const SUNFLOWER = 10519; public const SWEET_BERRY_BUSH = 10520; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 11654965a..4ae0f759b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -525,18 +525,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static StonePressurePlate STONE_PRESSURE_PLATE() * @method static Slab STONE_SLAB() * @method static Stair STONE_STAIRS() - * @method static Log STRIPPED_ACACIA_LOG() - * @method static Wood STRIPPED_ACACIA_WOOD() - * @method static Log STRIPPED_BIRCH_LOG() - * @method static Wood STRIPPED_BIRCH_WOOD() - * @method static Log STRIPPED_DARK_OAK_LOG() - * @method static Wood STRIPPED_DARK_OAK_WOOD() - * @method static Log STRIPPED_JUNGLE_LOG() - * @method static Wood STRIPPED_JUNGLE_WOOD() - * @method static Log STRIPPED_OAK_LOG() - * @method static Wood STRIPPED_OAK_WOOD() - * @method static Log STRIPPED_SPRUCE_LOG() - * @method static Wood STRIPPED_SPRUCE_WOOD() * @method static Sugarcane SUGARCANE() * @method static DoublePlant SUNFLOWER() * @method static SweetBerryBush SWEET_BERRY_BUSH() @@ -585,7 +573,7 @@ final class VanillaBlocks{ self::register("acacia_fence", $factory->get(Ids::ACACIA_FENCE, 0)); self::register("acacia_fence_gate", $factory->get(Ids::ACACIA_FENCE_GATE, 0)); self::register("acacia_leaves", $factory->get(Ids::ACACIA_LEAVES, 0)); - self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 2)); + self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 4)); self::register("acacia_planks", $factory->get(Ids::ACACIA_PLANKS, 0)); self::register("acacia_pressure_plate", $factory->get(Ids::ACACIA_PRESSURE_PLATE, 0)); self::register("acacia_sapling", $factory->get(Ids::ACACIA_SAPLING, 0)); @@ -620,7 +608,7 @@ final class VanillaBlocks{ self::register("birch_fence", $factory->get(Ids::BIRCH_FENCE, 0)); self::register("birch_fence_gate", $factory->get(Ids::BIRCH_FENCE_GATE, 0)); self::register("birch_leaves", $factory->get(Ids::BIRCH_LEAVES, 0)); - self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 2)); + self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 4)); self::register("birch_planks", $factory->get(Ids::BIRCH_PLANKS, 0)); self::register("birch_pressure_plate", $factory->get(Ids::BIRCH_PRESSURE_PLATE, 0)); self::register("birch_sapling", $factory->get(Ids::BIRCH_SAPLING, 0)); @@ -682,7 +670,7 @@ final class VanillaBlocks{ self::register("dark_oak_fence", $factory->get(Ids::DARK_OAK_FENCE, 0)); self::register("dark_oak_fence_gate", $factory->get(Ids::DARK_OAK_FENCE_GATE, 0)); self::register("dark_oak_leaves", $factory->get(Ids::DARK_OAK_LEAVES, 0)); - self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 2)); + self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 4)); self::register("dark_oak_planks", $factory->get(Ids::DARK_OAK_PLANKS, 0)); self::register("dark_oak_pressure_plate", $factory->get(Ids::DARK_OAK_PRESSURE_PLATE, 0)); self::register("dark_oak_sapling", $factory->get(Ids::DARK_OAK_SAPLING, 0)); @@ -890,7 +878,7 @@ final class VanillaBlocks{ self::register("jungle_fence", $factory->get(Ids::JUNGLE_FENCE, 0)); self::register("jungle_fence_gate", $factory->get(Ids::JUNGLE_FENCE_GATE, 0)); self::register("jungle_leaves", $factory->get(Ids::JUNGLE_LEAVES, 0)); - self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 2)); + self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 4)); self::register("jungle_planks", $factory->get(Ids::JUNGLE_PLANKS, 0)); self::register("jungle_pressure_plate", $factory->get(Ids::JUNGLE_PRESSURE_PLATE, 0)); self::register("jungle_sapling", $factory->get(Ids::JUNGLE_SAPLING, 0)); @@ -948,7 +936,7 @@ final class VanillaBlocks{ self::register("oak_fence", $factory->get(Ids::OAK_FENCE, 0)); self::register("oak_fence_gate", $factory->get(Ids::OAK_FENCE_GATE, 0)); self::register("oak_leaves", $factory->get(Ids::OAK_LEAVES, 0)); - self::register("oak_log", $factory->get(Ids::OAK_LOG, 2)); + self::register("oak_log", $factory->get(Ids::OAK_LOG, 4)); self::register("oak_planks", $factory->get(Ids::OAK_PLANKS, 0)); self::register("oak_pressure_plate", $factory->get(Ids::OAK_PRESSURE_PLATE, 0)); self::register("oak_sapling", $factory->get(Ids::OAK_SAPLING, 0)); @@ -1048,7 +1036,7 @@ final class VanillaBlocks{ self::register("spruce_fence", $factory->get(Ids::SPRUCE_FENCE, 0)); self::register("spruce_fence_gate", $factory->get(Ids::SPRUCE_FENCE_GATE, 0)); self::register("spruce_leaves", $factory->get(Ids::SPRUCE_LEAVES, 0)); - self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 2)); + self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 4)); self::register("spruce_planks", $factory->get(Ids::SPRUCE_PLANKS, 0)); self::register("spruce_pressure_plate", $factory->get(Ids::SPRUCE_PRESSURE_PLATE, 0)); self::register("spruce_sapling", $factory->get(Ids::SPRUCE_SAPLING, 0)); @@ -1073,18 +1061,6 @@ final class VanillaBlocks{ self::register("stone_slab", $factory->get(Ids::STONE_SLAB, 0)); self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 0)); self::register("stonecutter", $factory->get(Ids::STONECUTTER, 0)); - self::register("stripped_acacia_log", $factory->get(Ids::STRIPPED_ACACIA_LOG, 2)); - self::register("stripped_acacia_wood", $factory->get(Ids::STRIPPED_ACACIA_WOOD, 0)); - self::register("stripped_birch_log", $factory->get(Ids::STRIPPED_BIRCH_LOG, 2)); - self::register("stripped_birch_wood", $factory->get(Ids::STRIPPED_BIRCH_WOOD, 0)); - self::register("stripped_dark_oak_log", $factory->get(Ids::STRIPPED_DARK_OAK_LOG, 2)); - self::register("stripped_dark_oak_wood", $factory->get(Ids::STRIPPED_DARK_OAK_WOOD, 0)); - self::register("stripped_jungle_log", $factory->get(Ids::STRIPPED_JUNGLE_LOG, 2)); - self::register("stripped_jungle_wood", $factory->get(Ids::STRIPPED_JUNGLE_WOOD, 0)); - self::register("stripped_oak_log", $factory->get(Ids::STRIPPED_OAK_LOG, 2)); - self::register("stripped_oak_wood", $factory->get(Ids::STRIPPED_OAK_WOOD, 0)); - self::register("stripped_spruce_log", $factory->get(Ids::STRIPPED_SPRUCE_LOG, 2)); - self::register("stripped_spruce_wood", $factory->get(Ids::STRIPPED_SPRUCE_WOOD, 0)); self::register("sugarcane", $factory->get(Ids::SUGARCANE, 0)); self::register("sunflower", $factory->get(Ids::SUNFLOWER, 0)); self::register("sweet_berry_bush", $factory->get(Ids::SWEET_BERRY_BUSH, 0)); diff --git a/src/block/Wood.php b/src/block/Wood.php index a71f490fa..a31699db5 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -24,6 +24,9 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\TreeType; +use pocketmine\data\runtime\block\BlockDataReader; +use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -32,14 +35,23 @@ class Wood extends Opaque{ private TreeType $treeType; - private bool $stripped; + private bool $stripped = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType, bool $stripped){ - $this->stripped = $stripped; //TODO: this should be dynamic, but right now legacy shit gets in the way + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType){ parent::__construct($idInfo, $name, $breakInfo); $this->treeType = $treeType; } + public function getRequiredTypeDataBits() : int{ return 1; } + + protected function decodeType(BlockDataReader $r) : void{ + $this->stripped = $r->readBool(); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeBool($this->stripped); + } + /** * TODO: this is ad hoc, but add an interface for this to all tree-related blocks */ @@ -49,6 +61,12 @@ class Wood extends Opaque{ public function isStripped() : bool{ return $this->stripped; } + /** @return $this */ + public function setStripped(bool $stripped) : self{ + $this->stripped = $stripped; + return $this; + } + public function getFuelTime() : int{ return 300; } @@ -62,8 +80,10 @@ class Wood extends Opaque{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if(!$this->stripped && ($item->getBlockToolType() & BlockToolType::AXE) !== 0){ - //TODO: strip logs; can't implement this yet because of legacy limitations :( + if(!$this->stripped && $item instanceof Axe){ + $item->applyDamage(1); + $this->stripped = true; + $this->position->getWorld()->setBlock($this->position, $this); return true; } return false; diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 04907a553..854367f43 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -231,7 +231,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); @@ -319,7 +319,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); @@ -433,7 +433,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); @@ -720,7 +720,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); $this->map(Blocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); - $this->map(Blocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE)); + $this->map(Blocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG)); $this->map(Blocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); @@ -824,7 +824,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); $this->map(Blocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); - $this->map(Blocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK)); + $this->map(Blocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG)); $this->map(Blocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); @@ -974,7 +974,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); $this->map(Blocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); - $this->map(Blocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE)); + $this->map(Blocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG)); $this->map(Blocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); @@ -1016,24 +1016,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); $this->map(Blocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); $this->map(Blocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); - $this->map(Blocks::STRIPPED_ACACIA_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_ACACIA_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_BIRCH_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_BIRCH_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_DARK_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_DARK_OAK_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_JUNGLE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_JUNGLE_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_OAK_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_OAK_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::STRIPPED_SPRUCE_LOG(), fn(Log $block) => Writer::create(Ids::STRIPPED_SPRUCE_LOG) - ->writePillarAxis($block->getAxis())); - $this->map(Blocks::STRIPPED_SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->map(Blocks::SUGARCANE(), function(Sugarcane $block) : Writer{ return Writer::create(Ids::REEDS) ->writeInt(StateNames::AGE, $block->getAge()); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index b662e847c..8c7d73fb9 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -33,6 +33,7 @@ use pocketmine\block\FloorCoralFan; use pocketmine\block\FloorSign; use pocketmine\block\GlazedTerracotta; use pocketmine\block\Liquid; +use pocketmine\block\Log; use pocketmine\block\RedMushroomBlock; use pocketmine\block\RedstoneComparator; use pocketmine\block\RedstoneRepeater; @@ -149,6 +150,13 @@ final class BlockStateDeserializerHelper{ return self::decodeLiquid($block, $in, true); } + /** @throws BlockStateDeserializeException */ + public static function decodeLog(Log $block, bool $stripped, BlockStateReader $in) : Log{ + return $block + ->setAxis($in->readPillarAxis()) + ->setStripped($stripped); + } + /** @throws BlockStateDeserializeException */ public static function decodeMushroomBlock(RedMushroomBlock $block, BlockStateReader $in) : Block{ switch($type = $in->readBoundedInt(BlockStateNames::HUGE_MUSHROOM_BITS, 0, 15)){ diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 5bc021940..d7fc9a28f 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -140,14 +140,17 @@ final class BlockStateSerializerHelper{ ->writePillarAxis($block->getAxis()); } - public static function encodeLog1(Log $block, string $type) : BlockStateWriter{ - return self::encodeLog($block, BlockStateWriter::create(Ids::LOG) - ->writeString(BlockStateNames::OLD_LOG_TYPE, $type)); + public static function encodeLog1(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ + return self::encodeLog($block, $block->isStripped() ? + BlockStateWriter::create($strippedId) : + BlockStateWriter::create(Ids::LOG)->writeString(BlockStateNames::OLD_LOG_TYPE, $unstrippedType)); } - public static function encodeLog2(Log $block, string $type) : BlockStateWriter{ - return self::encodeLog($block, BlockStateWriter::create(Ids::LOG2) - ->writeString(BlockStateNames::NEW_LOG_TYPE, $type)); + public static function encodeLog2(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ + return self::encodeLog($block, $block->isStripped() ? + BlockStateWriter::create($strippedId) : + BlockStateWriter::create(Ids::LOG2)->writeString(BlockStateNames::NEW_LOG_TYPE, $unstrippedType) + ); } public static function encodeMushroomBlock(RedMushroomBlock $block, BlockStateWriter $out) : BlockStateWriter{ diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index e371e8243..8f8b13f8f 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -638,24 +638,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LOG, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), - default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::LOG2, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), - default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), - }) - ->setAxis($in->readPillarAxis()); - }); + $this->map(Ids::LOG, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ + StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), + StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), + StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), + StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), + default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), + }, false, $in)); + $this->map(Ids::LOG2, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ + StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), + StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), + default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), + }, false, $in)); $this->map(Ids::LOOM, function(Reader $in) : Block{ return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); @@ -959,30 +953,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::STONECUTTER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::STRIPPED_ACACIA_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_ACACIA_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_BIRCH_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_BIRCH_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_DARK_OAK_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_DARK_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_JUNGLE_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_JUNGLE_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_OAK_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_OAK_LOG() - ->setAxis($in->readPillarAxis()); - }); - $this->map(Ids::STRIPPED_SPRUCE_LOG, function(Reader $in) : Block{ - return Blocks::STRIPPED_SPRUCE_LOG() - ->setAxis($in->readPillarAxis()); - }); + $this->map(Ids::STRIPPED_ACACIA_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::ACACIA_LOG(), true, $in)); + $this->map(Ids::STRIPPED_BIRCH_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::BIRCH_LOG(), true, $in)); + $this->map(Ids::STRIPPED_DARK_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::DARK_OAK_LOG(), true, $in)); + $this->map(Ids::STRIPPED_JUNGLE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::JUNGLE_LOG(), true, $in)); + $this->map(Ids::STRIPPED_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::OAK_LOG(), true, $in)); + $this->map(Ids::STRIPPED_SPRUCE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::SPRUCE_LOG(), true, $in)); $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 $growth = $in->readBoundedInt(StateNames::GROWTH, 0, 7); @@ -1057,15 +1033,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WOOD, function(Reader $in) : Block{ $in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet $stripped = $in->readBool(StateNames::STRIPPED_BIT); - return match($woodType = $in->readString(StateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => $stripped ? Blocks::STRIPPED_ACACIA_WOOD() : Blocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => $stripped ? Blocks::STRIPPED_BIRCH_WOOD() : Blocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => $stripped ? Blocks::STRIPPED_DARK_OAK_WOOD() : Blocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => $stripped ? Blocks::STRIPPED_JUNGLE_WOOD() : Blocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => $stripped ? Blocks::STRIPPED_OAK_WOOD() : Blocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => $stripped ? Blocks::STRIPPED_SPRUCE_WOOD() : Blocks::SPRUCE_WOOD(), + return (match($woodType = $in->readString(StateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => Blocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_WOOD(), default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType), - }; + })->setStripped($stripped); }); $this->map(Ids::WOODEN_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::OAK_BUTTON(), $in)); $this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 8be5208bd..440734556 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -77,7 +77,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("acacia_fence", fn() => Blocks::ACACIA_FENCE()); $result->registerBlock("acacia_fence_gate", fn() => Blocks::ACACIA_FENCE_GATE()); $result->registerBlock("acacia_leaves", fn() => Blocks::ACACIA_LEAVES()); - $result->registerBlock("acacia_log", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("acacia_log", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("acacia_planks", fn() => Blocks::ACACIA_PLANKS()); $result->registerBlock("acacia_pressure_plate", fn() => Blocks::ACACIA_PRESSURE_PLATE()); $result->registerBlock("acacia_sapling", fn() => Blocks::ACACIA_SAPLING()); @@ -87,7 +87,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("acacia_standing_sign", fn() => Blocks::ACACIA_SIGN()); $result->registerBlock("acacia_trapdoor", fn() => Blocks::ACACIA_TRAPDOOR()); $result->registerBlock("acacia_wall_sign", fn() => Blocks::ACACIA_WALL_SIGN()); - $result->registerBlock("acacia_wood", fn() => Blocks::ACACIA_WOOD()); + $result->registerBlock("acacia_wood", fn() => Blocks::ACACIA_WOOD()->setStripped(false)); $result->registerBlock("acacia_wood_stairs", fn() => Blocks::ACACIA_STAIRS()); $result->registerBlock("acacia_wooden_stairs", fn() => Blocks::ACACIA_STAIRS()); $result->registerBlock("activator_rail", fn() => Blocks::ACTIVATOR_RAIL()); @@ -119,7 +119,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_fence", fn() => Blocks::BIRCH_FENCE()); $result->registerBlock("birch_fence_gate", fn() => Blocks::BIRCH_FENCE_GATE()); $result->registerBlock("birch_leaves", fn() => Blocks::BIRCH_LEAVES()); - $result->registerBlock("birch_log", fn() => Blocks::BIRCH_LOG()); + $result->registerBlock("birch_log", fn() => Blocks::BIRCH_LOG()->setStripped(false)); $result->registerBlock("birch_planks", fn() => Blocks::BIRCH_PLANKS()); $result->registerBlock("birch_pressure_plate", fn() => Blocks::BIRCH_PRESSURE_PLATE()); $result->registerBlock("birch_sapling", fn() => Blocks::BIRCH_SAPLING()); @@ -129,7 +129,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_standing_sign", fn() => Blocks::BIRCH_SIGN()); $result->registerBlock("birch_trapdoor", fn() => Blocks::BIRCH_TRAPDOOR()); $result->registerBlock("birch_wall_sign", fn() => Blocks::BIRCH_WALL_SIGN()); - $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()); + $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(false)); $result->registerBlock("birch_wood_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("birch_wooden_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("blast_furnace", fn() => Blocks::BLAST_FURNACE()); @@ -211,7 +211,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("dark_oak_fence", fn() => Blocks::DARK_OAK_FENCE()); $result->registerBlock("dark_oak_fence_gate", fn() => Blocks::DARK_OAK_FENCE_GATE()); $result->registerBlock("dark_oak_leaves", fn() => Blocks::DARK_OAK_LEAVES()); - $result->registerBlock("dark_oak_log", fn() => Blocks::DARK_OAK_LOG()); + $result->registerBlock("dark_oak_log", fn() => Blocks::DARK_OAK_LOG()->setStripped(false)); $result->registerBlock("dark_oak_planks", fn() => Blocks::DARK_OAK_PLANKS()); $result->registerBlock("dark_oak_pressure_plate", fn() => Blocks::DARK_OAK_PRESSURE_PLATE()); $result->registerBlock("dark_oak_sapling", fn() => Blocks::DARK_OAK_SAPLING()); @@ -221,7 +221,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("dark_oak_standing_sign", fn() => Blocks::DARK_OAK_SIGN()); $result->registerBlock("dark_oak_trapdoor", fn() => Blocks::DARK_OAK_TRAPDOOR()); $result->registerBlock("dark_oak_wall_sign", fn() => Blocks::DARK_OAK_WALL_SIGN()); - $result->registerBlock("dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()); + $result->registerBlock("dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()->setStripped(false)); $result->registerBlock("dark_oak_wood_stairs", fn() => Blocks::DARK_OAK_STAIRS()); $result->registerBlock("dark_oak_wooden_stairs", fn() => Blocks::DARK_OAK_STAIRS()); $result->registerBlock("dark_prismarine", fn() => Blocks::DARK_PRISMARINE()); @@ -601,7 +601,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("jungle_fence", fn() => Blocks::JUNGLE_FENCE()); $result->registerBlock("jungle_fence_gate", fn() => Blocks::JUNGLE_FENCE_GATE()); $result->registerBlock("jungle_leaves", fn() => Blocks::JUNGLE_LEAVES()); - $result->registerBlock("jungle_log", fn() => Blocks::JUNGLE_LOG()); + $result->registerBlock("jungle_log", fn() => Blocks::JUNGLE_LOG()->setStripped(false)); $result->registerBlock("jungle_planks", fn() => Blocks::JUNGLE_PLANKS()); $result->registerBlock("jungle_pressure_plate", fn() => Blocks::JUNGLE_PRESSURE_PLATE()); $result->registerBlock("jungle_sapling", fn() => Blocks::JUNGLE_SAPLING()); @@ -611,7 +611,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("jungle_standing_sign", fn() => Blocks::JUNGLE_SIGN()); $result->registerBlock("jungle_trapdoor", fn() => Blocks::JUNGLE_TRAPDOOR()); $result->registerBlock("jungle_wall_sign", fn() => Blocks::JUNGLE_WALL_SIGN()); - $result->registerBlock("jungle_wood", fn() => Blocks::JUNGLE_WOOD()); + $result->registerBlock("jungle_wood", fn() => Blocks::JUNGLE_WOOD()->setStripped(false)); $result->registerBlock("jungle_wood_stairs", fn() => Blocks::JUNGLE_STAIRS()); $result->registerBlock("jungle_wooden_stairs", fn() => Blocks::JUNGLE_STAIRS()); $result->registerBlock("lab_table", fn() => Blocks::LAB_TABLE()); @@ -641,8 +641,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("lit_redstone_ore", fn() => Blocks::REDSTONE_ORE()->setLit(true)); $result->registerBlock("lit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); $result->registerBlock("lit_smoker", fn() => Blocks::SMOKER()); - $result->registerBlock("log", fn() => Blocks::OAK_LOG()); - $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("log", fn() => Blocks::OAK_LOG()->setStripped(false)); + $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("loom", fn() => Blocks::LOOM()); $result->registerBlock("magma", fn() => Blocks::MAGMA()); $result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER()); @@ -690,7 +690,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("oak_fence", fn() => Blocks::OAK_FENCE()); $result->registerBlock("oak_fence_gate", fn() => Blocks::OAK_FENCE_GATE()); $result->registerBlock("oak_leaves", fn() => Blocks::OAK_LEAVES()); - $result->registerBlock("oak_log", fn() => Blocks::OAK_LOG()); + $result->registerBlock("oak_log", fn() => Blocks::OAK_LOG()->setStripped(false)); $result->registerBlock("oak_planks", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("oak_pressure_plate", fn() => Blocks::OAK_PRESSURE_PLATE()); $result->registerBlock("oak_sapling", fn() => Blocks::OAK_SAPLING()); @@ -700,7 +700,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("oak_standing_sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("oak_trapdoor", fn() => Blocks::OAK_TRAPDOOR()); $result->registerBlock("oak_wall_sign", fn() => Blocks::OAK_WALL_SIGN()); - $result->registerBlock("oak_wood", fn() => Blocks::OAK_WOOD()); + $result->registerBlock("oak_wood", fn() => Blocks::OAK_WOOD()->setStripped(false)); $result->registerBlock("oak_wood_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("oak_wooden_stairs", fn() => Blocks::OAK_STAIRS()); $result->registerBlock("obsidian", fn() => Blocks::OBSIDIAN()); @@ -821,7 +821,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("spruce_fence", fn() => Blocks::SPRUCE_FENCE()); $result->registerBlock("spruce_fence_gate", fn() => Blocks::SPRUCE_FENCE_GATE()); $result->registerBlock("spruce_leaves", fn() => Blocks::SPRUCE_LEAVES()); - $result->registerBlock("spruce_log", fn() => Blocks::SPRUCE_LOG()); + $result->registerBlock("spruce_log", fn() => Blocks::SPRUCE_LOG()->setStripped(false)); $result->registerBlock("spruce_planks", fn() => Blocks::SPRUCE_PLANKS()); $result->registerBlock("spruce_pressure_plate", fn() => Blocks::SPRUCE_PRESSURE_PLATE()); $result->registerBlock("spruce_sapling", fn() => Blocks::SPRUCE_SAPLING()); @@ -831,7 +831,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("spruce_standing_sign", fn() => Blocks::SPRUCE_SIGN()); $result->registerBlock("spruce_trapdoor", fn() => Blocks::SPRUCE_TRAPDOOR()); $result->registerBlock("spruce_wall_sign", fn() => Blocks::SPRUCE_WALL_SIGN()); - $result->registerBlock("spruce_wood", fn() => Blocks::SPRUCE_WOOD()); + $result->registerBlock("spruce_wood", fn() => Blocks::SPRUCE_WOOD()->setStripped(false)); $result->registerBlock("spruce_wood_stairs", fn() => Blocks::SPRUCE_STAIRS()); $result->registerBlock("spruce_wooden_stairs", fn() => Blocks::SPRUCE_STAIRS()); $result->registerBlock("stained_clay", fn() => Blocks::STAINED_CLAY()); @@ -861,18 +861,18 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("stonebrick", fn() => Blocks::STONE_BRICKS()); $result->registerBlock("stonecutter", fn() => Blocks::STONECUTTER()); $result->registerBlock("stonecutter_block", fn() => Blocks::STONECUTTER()); - $result->registerBlock("stripped_acacia_log", fn() => Blocks::STRIPPED_ACACIA_LOG()); - $result->registerBlock("stripped_acacia_wood", fn() => Blocks::STRIPPED_ACACIA_WOOD()); - $result->registerBlock("stripped_birch_log", fn() => Blocks::STRIPPED_BIRCH_LOG()); - $result->registerBlock("stripped_birch_wood", fn() => Blocks::STRIPPED_BIRCH_WOOD()); - $result->registerBlock("stripped_dark_oak_log", fn() => Blocks::STRIPPED_DARK_OAK_LOG()); - $result->registerBlock("stripped_dark_oak_wood", fn() => Blocks::STRIPPED_DARK_OAK_WOOD()); - $result->registerBlock("stripped_jungle_log", fn() => Blocks::STRIPPED_JUNGLE_LOG()); - $result->registerBlock("stripped_jungle_wood", fn() => Blocks::STRIPPED_JUNGLE_WOOD()); - $result->registerBlock("stripped_oak_log", fn() => Blocks::STRIPPED_OAK_LOG()); - $result->registerBlock("stripped_oak_wood", fn() => Blocks::STRIPPED_OAK_WOOD()); - $result->registerBlock("stripped_spruce_log", fn() => Blocks::STRIPPED_SPRUCE_LOG()); - $result->registerBlock("stripped_spruce_wood", fn() => Blocks::STRIPPED_SPRUCE_WOOD()); + $result->registerBlock("stripped_acacia_log", fn() => Blocks::ACACIA_LOG()->setStripped(true)); + $result->registerBlock("stripped_acacia_wood", fn() => Blocks::ACACIA_WOOD()->setStripped(true)); + $result->registerBlock("stripped_birch_log", fn() => Blocks::BIRCH_LOG()->setStripped(true)); + $result->registerBlock("stripped_birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(true)); + $result->registerBlock("stripped_dark_oak_log", fn() => Blocks::DARK_OAK_LOG()->setStripped(true)); + $result->registerBlock("stripped_dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()->setStripped(true)); + $result->registerBlock("stripped_jungle_log", fn() => Blocks::JUNGLE_LOG()->setStripped(true)); + $result->registerBlock("stripped_jungle_wood", fn() => Blocks::JUNGLE_WOOD()->setStripped(true)); + $result->registerBlock("stripped_oak_log", fn() => Blocks::OAK_LOG()->setStripped(true)); + $result->registerBlock("stripped_oak_wood", fn() => Blocks::OAK_WOOD()->setStripped(true)); + $result->registerBlock("stripped_spruce_log", fn() => Blocks::SPRUCE_LOG()->setStripped(true)); + $result->registerBlock("stripped_spruce_wood", fn() => Blocks::SPRUCE_WOOD()->setStripped(true)); $result->registerBlock("sugar_cane", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugar_canes", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugarcane", fn() => Blocks::SUGARCANE()); @@ -890,7 +890,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("tripwire", fn() => Blocks::TRIPWIRE()); $result->registerBlock("tripwire_hook", fn() => Blocks::TRIPWIRE_HOOK()); $result->registerBlock("trunk", fn() => Blocks::OAK_PLANKS()); - $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("underwater_torch", fn() => Blocks::UNDERWATER_TORCH()); $result->registerBlock("undyed_shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("unlit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); @@ -912,8 +912,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); - $result->registerBlock("wood", fn() => Blocks::OAK_LOG()); - $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()); + $result->registerBlock("wood", fn() => Blocks::OAK_LOG()->setStripped(false)); + $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("wood_door_block", fn() => Blocks::OAK_DOOR()); $result->registerBlock("wood_slab", fn() => Blocks::OAK_SLAB()); $result->registerBlock("wood_slabs", fn() => Blocks::OAK_SLAB()); From bcdbb09c2cf6b9e28271522fca4c147ccbe14219 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 20:19:58 +0100 Subject: [PATCH 217/692] Updated BlockFactory consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index ff7936de5..c4cff8e6e 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5383168":"Stripped Oak Log","5383169":"Stripped Oak Log","5383170":"Stripped Oak Log","5317632":"Oak Wood","5383680":"Stripped Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5384192":"Stripped Spruce Log","5384193":"Stripped Spruce Log","5384194":"Stripped Spruce Log","5370880":"Spruce Wood","5384704":"Stripped Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5380096":"Stripped Birch Log","5380097":"Stripped Birch Log","5380098":"Stripped Birch Log","5145088":"Birch Wood","5380608":"Stripped Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5382144":"Stripped Jungle Log","5382145":"Stripped Jungle Log","5382146":"Stripped Jungle Log","5285888":"Jungle Wood","5382656":"Stripped Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5379072":"Stripped Acacia Log","5379073":"Stripped Acacia Log","5379074":"Stripped Acacia Log","5127680":"Acacia Wood","5379584":"Stripped Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5381120":"Stripped Dark Oak Log","5381121":"Stripped Dark Oak Log","5381122":"Stripped Dark Oak Log","5178880":"Dark Oak Wood","5381632":"Stripped Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file From d49597fe5f0c03c0c71bb0855f41a77d8152d722 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 20:50:26 +0100 Subject: [PATCH 218/692] BlockStateToBlockObjectDeserializer: make stairs less annoying to implement --- .../BlockStateToBlockObjectDeserializer.php | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8f8b13f8f..602802deb 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; +use pocketmine\block\Stair; use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CoralType; @@ -70,12 +71,19 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->deserializeFuncs[$id] = $c; } + /** + * @phpstan-param \Closure() : Stair $getBlock + */ + public function mapStairs(string $id, \Closure $getBlock) : void{ + $this->map($id, fn(Reader $in) : Stair => Helper::decodeStairs($getBlock(), $in)); + } + private function registerDeserializers() : void{ $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); $this->map(Ids::ACACIA_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::ACACIA_FENCE_GATE(), $in)); $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::ACACIA_PRESSURE_PLATE(), $in)); - $this->map(Ids::ACACIA_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::ACACIA_STAIRS(), $in)); + $this->mapStairs(Ids::ACACIA_STAIRS, fn() => Blocks::ACACIA_STAIRS()); $this->map(Ids::ACACIA_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::ACACIA_SIGN(), $in)); $this->map(Ids::ACACIA_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::ACACIA_TRAPDOOR(), $in)); $this->map(Ids::ACACIA_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::ACACIA_WALL_SIGN(), $in)); @@ -85,7 +93,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); $this->map(Ids::AIR, fn() => Blocks::AIR()); - $this->map(Ids::ANDESITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::ANDESITE_STAIRS(), $in)); + $this->mapStairs(Ids::ANDESITE_STAIRS, fn() => Blocks::ANDESITE_STAIRS()); $this->map(Ids::ANVIL, function(Reader $in) : Block{ return Blocks::ANVIL() ->setDamage(match($value = $in->readString(StateNames::DAMAGE)){ @@ -144,7 +152,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::BIRCH_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::BIRCH_DOOR(), $in)); $this->map(Ids::BIRCH_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::BIRCH_FENCE_GATE(), $in)); $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::BIRCH_PRESSURE_PLATE(), $in)); - $this->map(Ids::BIRCH_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BIRCH_STAIRS(), $in)); + $this->mapStairs(Ids::BIRCH_STAIRS, fn() => Blocks::BIRCH_STAIRS()); $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); @@ -168,7 +176,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT)); }); $this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); - $this->map(Ids::BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::BRICK_STAIRS, fn() => Blocks::BRICK_STAIRS()); $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); $this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); @@ -262,9 +270,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::DARK_OAK_PRESSURE_PLATE(), $in)); - $this->map(Ids::DARK_OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DARK_OAK_STAIRS(), $in)); + $this->mapStairs(Ids::DARK_OAK_STAIRS, fn() => Blocks::DARK_OAK_STAIRS()); $this->map(Ids::DARK_OAK_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::DARK_OAK_TRAPDOOR(), $in)); - $this->map(Ids::DARK_PRISMARINE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DARK_PRISMARINE_STAIRS(), $in)); + $this->mapStairs(Ids::DARK_PRISMARINE_STAIRS, fn() => Blocks::DARK_PRISMARINE_STAIRS()); $this->map(Ids::DARKOAK_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::DARK_OAK_SIGN(), $in)); $this->map(Ids::DARKOAK_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::DARK_OAK_WALL_SIGN(), $in)); $this->map(Ids::DAYLIGHT_DETECTOR, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) @@ -279,7 +287,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::DIAMOND_BLOCK, fn() => Blocks::DIAMOND()); $this->map(Ids::DIAMOND_ORE, fn() => Blocks::DIAMOND_ORE()); - $this->map(Ids::DIORITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::DIORITE_STAIRS(), $in)); + $this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS()); $this->map(Ids::DIRT, function(Reader $in) : Block{ return Blocks::DIRT() ->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){ @@ -443,7 +451,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::EMERALD_BLOCK, fn() => Blocks::EMERALD()); $this->map(Ids::EMERALD_ORE, fn() => Blocks::EMERALD_ORE()); $this->map(Ids::ENCHANTING_TABLE, fn() => Blocks::ENCHANTING_TABLE()); - $this->map(Ids::END_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::END_STONE_BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::END_BRICK_STAIRS, fn() => Blocks::END_STONE_BRICK_STAIRS()); $this->map(Ids::END_BRICKS, fn() => Blocks::END_STONE_BRICKS()); $this->map(Ids::END_PORTAL_FRAME, function(Reader $in) : Block{ return Blocks::END_PORTAL_FRAME() @@ -512,7 +520,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); - $this->map(Ids::GRANITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::GRANITE_STAIRS(), $in)); + $this->mapStairs(Ids::GRANITE_STAIRS, fn() => Blocks::GRANITE_STAIRS()); $this->map(Ids::GRASS, fn() => Blocks::GRASS()); $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); @@ -553,7 +561,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::JUNGLE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::JUNGLE_DOOR(), $in)); $this->map(Ids::JUNGLE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::JUNGLE_FENCE_GATE(), $in)); $this->map(Ids::JUNGLE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::JUNGLE_PRESSURE_PLATE(), $in)); - $this->map(Ids::JUNGLE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::JUNGLE_STAIRS(), $in)); + $this->mapStairs(Ids::JUNGLE_STAIRS, fn() => Blocks::JUNGLE_STAIRS()); $this->map(Ids::JUNGLE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::JUNGLE_SIGN(), $in)); $this->map(Ids::JUNGLE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::JUNGLE_TRAPDOOR(), $in)); $this->map(Ids::JUNGLE_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::JUNGLE_WALL_SIGN(), $in)); @@ -671,12 +679,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; }); $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); - $this->map(Ids::MOSSY_COBBLESTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), $in)); - $this->map(Ids::MOSSY_STONE_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::MOSSY_COBBLESTONE_STAIRS, fn() => Blocks::MOSSY_COBBLESTONE_STAIRS()); + $this->mapStairs(Ids::MOSSY_STONE_BRICK_STAIRS, fn() => Blocks::MOSSY_STONE_BRICK_STAIRS()); $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); - $this->map(Ids::NETHER_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::NETHER_BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::NETHER_BRICK_STAIRS, fn() => Blocks::NETHER_BRICK_STAIRS()); $this->map(Ids::NETHER_WART, function(Reader $in) : Block{ return Blocks::NETHER_WART() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); @@ -684,9 +692,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); - $this->map(Ids::NORMAL_STONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::STONE_STAIRS(), $in)); + $this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS()); $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); - $this->map(Ids::OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::OAK_STAIRS(), $in)); + $this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS()); $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); @@ -703,9 +711,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; }); $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); - $this->map(Ids::POLISHED_ANDESITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_ANDESITE_STAIRS(), $in)); - $this->map(Ids::POLISHED_DIORITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_DIORITE_STAIRS(), $in)); - $this->map(Ids::POLISHED_GRANITE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::POLISHED_GRANITE_STAIRS(), $in)); + $this->mapStairs(Ids::POLISHED_ANDESITE_STAIRS, fn() => Blocks::POLISHED_ANDESITE_STAIRS()); + $this->mapStairs(Ids::POLISHED_DIORITE_STAIRS, fn() => Blocks::POLISHED_DIORITE_STAIRS()); + $this->mapStairs(Ids::POLISHED_GRANITE_STAIRS, fn() => Blocks::POLISHED_GRANITE_STAIRS()); $this->map(Ids::PORTAL, function(Reader $in) : Block{ return Blocks::NETHER_PORTAL() ->setAxis(match($value = $in->readString(StateNames::PORTAL_AXIS)){ @@ -727,8 +735,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::PRISMARINE_BLOCK_TYPE, $type), }; }); - $this->map(Ids::PRISMARINE_BRICKS_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_BRICKS_STAIRS(), $in)); - $this->map(Ids::PRISMARINE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PRISMARINE_STAIRS(), $in)); + $this->mapStairs(Ids::PRISMARINE_BRICKS_STAIRS, fn() => Blocks::PRISMARINE_BRICKS_STAIRS()); + $this->mapStairs(Ids::PRISMARINE_STAIRS, fn() => Blocks::PRISMARINE_STAIRS()); $this->map(Ids::PUMPKIN, function(Reader $in) : Block{ $in->ignored(StateNames::DIRECTION); //obsolete return Blocks::PUMPKIN(); @@ -749,7 +757,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; } }); - $this->map(Ids::PURPUR_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::PURPUR_STAIRS(), $in)); + $this->mapStairs(Ids::PURPUR_STAIRS, fn() => Blocks::PURPUR_STAIRS()); $this->map(Ids::QUARTZ_BLOCK, function(Reader $in) : Block{ switch($type = $in->readString(StateNames::CHISEL_TYPE)){ case StringValues::CHISEL_TYPE_CHISELED: @@ -767,7 +775,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize } }); $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); - $this->map(Ids::QUARTZ_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::QUARTZ_STAIRS(), $in)); + $this->mapStairs(Ids::QUARTZ_STAIRS, fn() => Blocks::QUARTZ_STAIRS()); $this->map(Ids::RAIL, function(Reader $in) : Block{ return Blocks::RAIL() ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 9)); @@ -792,7 +800,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); $this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in)); $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); - $this->map(Ids::RED_NETHER_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::RED_NETHER_BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::RED_NETHER_BRICK_STAIRS, fn() => Blocks::RED_NETHER_BRICK_STAIRS()); $this->map(Ids::RED_SANDSTONE, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::SAND_STONE_TYPE)){ StringValues::SAND_STONE_TYPE_CUT => Blocks::CUT_RED_SANDSTONE(), @@ -802,7 +810,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::SAND_STONE_TYPE, $type), }; }); - $this->map(Ids::RED_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::RED_SANDSTONE_STAIRS(), $in)); + $this->mapStairs(Ids::RED_SANDSTONE_STAIRS, fn() => Blocks::RED_SANDSTONE_STAIRS()); $this->map(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); $this->map(Ids::REDSTONE_LAMP, function() : Block{ return Blocks::REDSTONE_LAMP() @@ -842,7 +850,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::SAND_STONE_TYPE, $type), }; }); - $this->map(Ids::SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SANDSTONE_STAIRS(), $in)); + $this->mapStairs(Ids::SANDSTONE_STAIRS, fn() => Blocks::SANDSTONE_STAIRS()); $this->map(Ids::SAPLING, function(Reader $in) : Block{ return (match($type = $in->readString(StateNames::SAPLING_TYPE)){ StringValues::SAPLING_TYPE_ACACIA => Blocks::ACACIA_SAPLING(), @@ -876,9 +884,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::SMOOTH_QUARTZ_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), $in)); - $this->map(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), $in)); - $this->map(Ids::SMOOTH_SANDSTONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), $in)); + $this->mapStairs(Ids::SMOOTH_QUARTZ_STAIRS, fn() => Blocks::SMOOTH_QUARTZ_STAIRS()); + $this->mapStairs(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_RED_SANDSTONE_STAIRS()); + $this->mapStairs(Ids::SMOOTH_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_SANDSTONE_STAIRS()); $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); $this->map(Ids::SNOW, fn() => Blocks::SNOW()); $this->map(Ids::SNOW_LAYER, function(Reader $in) : Block{ @@ -897,7 +905,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::SPRUCE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::SPRUCE_DOOR(), $in)); $this->map(Ids::SPRUCE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::SPRUCE_FENCE_GATE(), $in)); $this->map(Ids::SPRUCE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::SPRUCE_PRESSURE_PLATE(), $in)); - $this->map(Ids::SPRUCE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::SPRUCE_STAIRS(), $in)); + $this->mapStairs(Ids::SPRUCE_STAIRS, fn() => Blocks::SPRUCE_STAIRS()); $this->map(Ids::SPRUCE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::SPRUCE_SIGN(), $in)); $this->map(Ids::SPRUCE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::SPRUCE_TRAPDOOR(), $in)); $this->map(Ids::SPRUCE_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::SPRUCE_WALL_SIGN(), $in)); @@ -930,14 +938,14 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::STONE_TYPE, $type), }; }); - $this->map(Ids::STONE_BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::STONE_BRICK_STAIRS(), $in)); + $this->mapStairs(Ids::STONE_BRICK_STAIRS, fn() => Blocks::STONE_BRICK_STAIRS()); $this->map(Ids::STONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::STONE_BUTTON(), $in)); $this->map(Ids::STONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::STONE_PRESSURE_PLATE(), $in)); $this->map(Ids::STONE_BLOCK_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); $this->map(Ids::STONE_BLOCK_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); $this->map(Ids::STONE_BLOCK_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); $this->map(Ids::STONE_BLOCK_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::COBBLESTONE_STAIRS(), $in)); + $this->mapStairs(Ids::STONE_STAIRS, fn() => Blocks::COBBLESTONE_STAIRS()); $this->map(Ids::STONEBRICK, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::STONE_BRICK_TYPE)){ StringValues::STONE_BRICK_TYPE_SMOOTH, //TODO: bug in vanilla From 451971b866d253d50215dd8fe9cce78cbdac96c7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 20:57:18 +0100 Subject: [PATCH 219/692] BlockObjectToBlockStateSerializer: make stairs less annoying to implement --- .../BlockObjectToBlockStateSerializer.php | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 854367f43..59f38aa4a 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -186,6 +186,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; } + public function mapStairs(Stair $block, string $id) : void{ + $this->map($block, fn(Stair $block) => Helper::encodeStairs($block, Writer::create($id))); + } + /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $blockState @@ -326,7 +330,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); $this->map(Blocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); $this->map(Blocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::BIRCH_STAIRS))); + $this->mapStairs(Blocks::BIRCH_STAIRS(), Ids::BIRCH_STAIRS); $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); @@ -348,7 +352,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); - $this->map(Blocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS))); + $this->mapStairs(Blocks::BRICK_STAIRS(), Ids::BRICK_STAIRS); $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); $this->map(Blocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); @@ -383,7 +387,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::COAL_ORE(), fn() => new Writer(Ids::COAL_ORE)); $this->map(Blocks::COBBLESTONE(), fn() => new Writer(Ids::COBBLESTONE)); $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); - $this->map(Blocks::COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_STAIRS))); + $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); $this->map(Blocks::COBWEB(), fn() => new Writer(Ids::WEB)); $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ @@ -440,14 +444,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); $this->map(Blocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_OAK_STAIRS))); + $this->mapStairs(Blocks::DARK_OAK_STAIRS(), Ids::DARK_OAK_STAIRS); $this->map(Blocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); $this->map(Blocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); $this->map(Blocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->map(Blocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); $this->map(Blocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); - $this->map(Blocks::DARK_PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DARK_PRISMARINE_STAIRS))); + $this->mapStairs(Blocks::DARK_PRISMARINE_STAIRS(), Ids::DARK_PRISMARINE_STAIRS); $this->map(Blocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); @@ -462,7 +466,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::DIAMOND_ORE(), fn() => new Writer(Ids::DIAMOND_ORE)); $this->map(Blocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); $this->map(Blocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); - $this->map(Blocks::DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::DIORITE_STAIRS))); + $this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS); $this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); $this->map(Blocks::DIRT(), function(Dirt $block) : Writer{ return Writer::create(Ids::DIRT) @@ -614,7 +618,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); $this->map(Blocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); $this->map(Blocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); - $this->map(Blocks::END_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::END_BRICK_STAIRS))); + $this->mapStairs(Blocks::END_STONE_BRICK_STAIRS(), Ids::END_BRICK_STAIRS); $this->map(Blocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); $this->map(Blocks::FAKE_WOODEN_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_WOOD)); $this->map(Blocks::FARMLAND(), function(Farmland $block) : Writer{ @@ -667,7 +671,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::GOLD_ORE(), fn() => new Writer(Ids::GOLD_ORE)); $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); - $this->map(Blocks::GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::GRANITE_STAIRS))); + $this->mapStairs(Blocks::GRANITE_STAIRS(), Ids::GRANITE_STAIRS); $this->map(Blocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); $this->map(Blocks::GRASS(), fn() => new Writer(Ids::GRASS)); $this->map(Blocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); @@ -727,7 +731,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::JUNGLE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::JUNGLE_STANDING_SIGN))); $this->map(Blocks::JUNGLE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_JUNGLE)); - $this->map(Blocks::JUNGLE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::JUNGLE_STAIRS))); + $this->mapStairs(Blocks::JUNGLE_STAIRS(), Ids::JUNGLE_STAIRS); $this->map(Blocks::JUNGLE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::JUNGLE_TRAPDOOR))); $this->map(Blocks::JUNGLE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::JUNGLE_WALL_SIGN))); $this->map(Blocks::JUNGLE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); @@ -787,11 +791,11 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); $this->map(Blocks::MOSSY_COBBLESTONE(), fn() => new Writer(Ids::MOSSY_COBBLESTONE)); $this->map(Blocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); - $this->map(Blocks::MOSSY_COBBLESTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_COBBLESTONE_STAIRS))); + $this->mapStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), Ids::MOSSY_COBBLESTONE_STAIRS); $this->map(Blocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); $this->map(Blocks::MOSSY_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_MOSSY)); $this->map(Blocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); - $this->map(Blocks::MOSSY_STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::MOSSY_STONE_BRICK_STAIRS))); + $this->mapStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), Ids::MOSSY_STONE_BRICK_STAIRS); $this->map(Blocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); @@ -800,7 +804,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::NETHER_BRICKS(), fn() => new Writer(Ids::NETHER_BRICK)); $this->map(Blocks::NETHER_BRICK_FENCE(), fn() => new Writer(Ids::NETHER_BRICK_FENCE)); $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); - $this->map(Blocks::NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NETHER_BRICK_STAIRS))); + $this->mapStairs(Blocks::NETHER_BRICK_STAIRS(), Ids::NETHER_BRICK_STAIRS); $this->map(Blocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); $this->map(Blocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ return Writer::create(Ids::PORTAL) @@ -831,7 +835,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_OAK)); $this->map(Blocks::OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::STANDING_SIGN))); $this->map(Blocks::OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_OAK)); - $this->map(Blocks::OAK_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::OAK_STAIRS))); + $this->mapStairs(Blocks::OAK_STAIRS(), Ids::OAK_STAIRS); $this->map(Blocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); $this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); $this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); @@ -844,13 +848,13 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); $this->map(Blocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); - $this->map(Blocks::POLISHED_ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_ANDESITE_STAIRS))); + $this->mapStairs(Blocks::POLISHED_ANDESITE_STAIRS(), Ids::POLISHED_ANDESITE_STAIRS); $this->map(Blocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); $this->map(Blocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); - $this->map(Blocks::POLISHED_DIORITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_DIORITE_STAIRS))); + $this->mapStairs(Blocks::POLISHED_DIORITE_STAIRS(), Ids::POLISHED_DIORITE_STAIRS); $this->map(Blocks::POLISHED_GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE_SMOOTH)); $this->map(Blocks::POLISHED_GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_GRANITE)); - $this->map(Blocks::POLISHED_GRANITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::POLISHED_GRANITE_STAIRS))); + $this->mapStairs(Blocks::POLISHED_GRANITE_STAIRS(), Ids::POLISHED_GRANITE_STAIRS); $this->map(Blocks::POPPY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_POPPY)); $this->map(Blocks::POTATOES(), fn(Potato $block) => Helper::encodeCrops($block, new Writer(Ids::POTATOES))); $this->map(Blocks::POWERED_RAIL(), function(PoweredRail $block) : Writer{ @@ -863,9 +867,9 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::PRISMARINE_BRICKS(), fn() => Writer::create(Ids::PRISMARINE) ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_BRICKS)); $this->map(Blocks::PRISMARINE_BRICKS_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_BRICK)); - $this->map(Blocks::PRISMARINE_BRICKS_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_BRICKS_STAIRS))); + $this->mapStairs(Blocks::PRISMARINE_BRICKS_STAIRS(), Ids::PRISMARINE_BRICKS_STAIRS); $this->map(Blocks::PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_ROUGH)); - $this->map(Blocks::PRISMARINE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PRISMARINE_STAIRS))); + $this->mapStairs(Blocks::PRISMARINE_STAIRS(), Ids::PRISMARINE_STAIRS); $this->map(Blocks::PRISMARINE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_PRISMARINE)); $this->map(Blocks::PUMPKIN(), function() : Writer{ return Writer::create(Ids::PUMPKIN) @@ -884,11 +888,11 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writePillarAxis($block->getAxis()); }); $this->map(Blocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); - $this->map(Blocks::PURPUR_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::PURPUR_STAIRS))); + $this->mapStairs(Blocks::PURPUR_STAIRS(), Ids::PURPUR_STAIRS); $this->map(Blocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); $this->map(Blocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); $this->map(Blocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); - $this->map(Blocks::QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::QUARTZ_STAIRS))); + $this->mapStairs(Blocks::QUARTZ_STAIRS(), Ids::QUARTZ_STAIRS); $this->map(Blocks::RAIL(), function(Rail $block) : Writer{ return Writer::create(Ids::RAIL) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); @@ -919,13 +923,13 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); $this->map(Blocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); $this->map(Blocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); - $this->map(Blocks::RED_NETHER_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_NETHER_BRICK_STAIRS))); + $this->mapStairs(Blocks::RED_NETHER_BRICK_STAIRS(), Ids::RED_NETHER_BRICK_STAIRS); $this->map(Blocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); $this->map(Blocks::RED_SAND(), fn() => Writer::create(Ids::SAND) ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_RED)); $this->map(Blocks::RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); $this->map(Blocks::RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_SANDSTONE)); - $this->map(Blocks::RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::RED_SANDSTONE_STAIRS))); + $this->mapStairs(Blocks::RED_SANDSTONE_STAIRS(), Ids::RED_SANDSTONE_STAIRS); $this->map(Blocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); $this->map(Blocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); $this->map(Blocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); @@ -935,7 +939,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); $this->map(Blocks::SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_DEFAULT)); $this->map(Blocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); - $this->map(Blocks::SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SANDSTONE_STAIRS))); + $this->mapStairs(Blocks::SANDSTONE_STAIRS(), Ids::SANDSTONE_STAIRS); $this->map(Blocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); $this->map(Blocks::SEA_LANTERN(), fn() => new Writer(Ids::SEA_LANTERN)); $this->map(Blocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ @@ -948,13 +952,13 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); $this->map(Blocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); - $this->map(Blocks::SMOOTH_QUARTZ_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_QUARTZ_STAIRS))); + $this->mapStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), Ids::SMOOTH_QUARTZ_STAIRS); $this->map(Blocks::SMOOTH_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); $this->map(Blocks::SMOOTH_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_SMOOTH_RED_SANDSTONE)); - $this->map(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_RED_SANDSTONE_STAIRS))); + $this->mapStairs(Blocks::SMOOTH_RED_SANDSTONE_STAIRS(), Ids::SMOOTH_RED_SANDSTONE_STAIRS); $this->map(Blocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); $this->map(Blocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); - $this->map(Blocks::SMOOTH_SANDSTONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::SMOOTH_SANDSTONE_STAIRS))); + $this->mapStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), Ids::SMOOTH_SANDSTONE_STAIRS); $this->map(Blocks::SMOOTH_STONE(), fn() => new Writer(Ids::SMOOTH_STONE)); $this->map(Blocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); $this->map(Blocks::SNOW(), fn() => new Writer(Ids::SNOW)); @@ -981,7 +985,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SPRUCE_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::SPRUCE_STANDING_SIGN))); $this->map(Blocks::SPRUCE_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_SPRUCE)); - $this->map(Blocks::SPRUCE_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::SPRUCE_STAIRS))); + $this->mapStairs(Blocks::SPRUCE_STAIRS(), Ids::SPRUCE_STAIRS); $this->map(Blocks::SPRUCE_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::SPRUCE_TRAPDOOR))); $this->map(Blocks::SPRUCE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::SPRUCE_WALL_SIGN))); $this->map(Blocks::SPRUCE_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); @@ -1010,12 +1014,12 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeHorizontalFacing($block->getFacing())); $this->map(Blocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); $this->map(Blocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); - $this->map(Blocks::STONE_BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::STONE_BRICK_STAIRS))); + $this->mapStairs(Blocks::STONE_BRICK_STAIRS(), Ids::STONE_BRICK_STAIRS); $this->map(Blocks::STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_STONE_BRICK)); $this->map(Blocks::STONE_BUTTON(), fn(StoneButton $block) => Helper::encodeButton($block, new Writer(Ids::STONE_BUTTON))); $this->map(Blocks::STONE_PRESSURE_PLATE(), fn(StonePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::STONE_PRESSURE_PLATE))); $this->map(Blocks::STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_STONE)); - $this->map(Blocks::STONE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::NORMAL_STONE_STAIRS))); + $this->mapStairs(Blocks::STONE_STAIRS(), Ids::NORMAL_STONE_STAIRS); $this->map(Blocks::SUGARCANE(), function(Sugarcane $block) : Writer{ return Writer::create(Ids::REEDS) ->writeInt(StateNames::AGE, $block->getAge()); From 7750f9581ae8740aeae146c315580e80092334cf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 21:03:25 +0100 Subject: [PATCH 220/692] BlockObjectToBlockStateSerializer: make adding stateless blocks less annoying --- .../BlockObjectToBlockStateSerializer.php | 392 +++++++++--------- 1 file changed, 198 insertions(+), 194 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 59f38aa4a..dc2f77238 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -186,6 +186,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; } + public function mapSimple(Block $block, string $id) : void{ + $this->map($block, fn() => Writer::create($id)); + } + public function mapStairs(Stair $block, string $id) : void{ $this->map($block, fn(Stair $block) => Helper::encodeStairs($block, Writer::create($id))); } @@ -251,7 +255,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::RAIL_DATA_BIT, $block->isPowered()) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(Blocks::AIR(), fn() => new Writer(Ids::AIR)); + $this->mapSimple(Blocks::AIR(), Ids::AIR); $this->map(Blocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); $this->map(Blocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); @@ -297,8 +301,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::OPEN_BIT, $block->isOpen()) ->writeFacingDirection($block->getFacing()); }); - $this->map(Blocks::BARRIER(), fn() => new Writer(Ids::BARRIER)); - $this->map(Blocks::BEACON(), fn() => new Writer(Ids::BEACON)); + $this->mapSimple(Blocks::BARRIER(), Ids::BARRIER); + $this->mapSimple(Blocks::BEACON(), Ids::BEACON); $this->map(Blocks::BED(), function(Bed $block) : Writer{ return Writer::create(Ids::BED) ->writeBool(StateNames::HEAD_PIECE_BIT, $block->isHeadPart()) @@ -335,7 +339,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); - $this->map(Blocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE)); + $this->mapSimple(Blocks::BLUE_ICE(), Ids::BLUE_ICE); $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); $this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); $this->map(Blocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ @@ -343,18 +347,18 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::DEPRECATED, 0) ->writePillarAxis($block->getAxis()); }); - $this->map(Blocks::BOOKSHELF(), fn() => new Writer(Ids::BOOKSHELF)); + $this->mapSimple(Blocks::BOOKSHELF(), Ids::BOOKSHELF); $this->map(Blocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ return Writer::create(Ids::BREWING_STAND) ->writeBool(StateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) ->writeBool(StateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) ->writeBool(StateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); }); - $this->map(Blocks::BRICKS(), fn() => new Writer(Ids::BRICK_BLOCK)); + $this->mapSimple(Blocks::BRICKS(), Ids::BRICK_BLOCK); $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); $this->mapStairs(Blocks::BRICK_STAIRS(), Ids::BRICK_STAIRS); $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); - $this->map(Blocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM)); + $this->mapSimple(Blocks::BROWN_MUSHROOM(), Ids::BROWN_MUSHROOM); $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); $this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{ return Writer::create(Ids::CACTUS) @@ -373,7 +377,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CARVED_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(Blocks::CHEMICAL_HEAT(), fn() => new Writer(Ids::CHEMICAL_HEAT)); + $this->mapSimple(Blocks::CHEMICAL_HEAT(), Ids::CHEMICAL_HEAT); $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ return Writer::create(Ids::CHEST) ->writeHorizontalFacing($block->getFacing()); @@ -382,14 +386,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); $this->map(Blocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); - $this->map(Blocks::CLAY(), fn() => new Writer(Ids::CLAY)); - $this->map(Blocks::COAL(), fn() => new Writer(Ids::COAL_BLOCK)); - $this->map(Blocks::COAL_ORE(), fn() => new Writer(Ids::COAL_ORE)); - $this->map(Blocks::COBBLESTONE(), fn() => new Writer(Ids::COBBLESTONE)); + $this->mapSimple(Blocks::CLAY(), Ids::CLAY); + $this->mapSimple(Blocks::COAL(), Ids::COAL_BLOCK); + $this->mapSimple(Blocks::COAL_ORE(), Ids::COAL_ORE); + $this->mapSimple(Blocks::COBBLESTONE(), Ids::COBBLESTONE); $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); - $this->map(Blocks::COBWEB(), fn() => new Writer(Ids::WEB)); + $this->mapSimple(Blocks::COBWEB(), Ids::WEB); $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ return Writer::create(Ids::COCOA) ->writeInt(StateNames::AGE, $block->getAge()) @@ -425,12 +429,12 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); - $this->map(Blocks::CRAFTING_TABLE(), fn() => new Writer(Ids::CRAFTING_TABLE)); + $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); - $this->map(Blocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER)); + $this->mapSimple(Blocks::DANDELION(), Ids::YELLOW_FLOWER); $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); $this->map(Blocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) @@ -456,14 +460,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(Blocks::DEAD_BUSH(), fn() => new Writer(Ids::DEADBUSH)); + $this->mapSimple(Blocks::DEAD_BUSH(), Ids::DEADBUSH); $this->map(Blocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ return Writer::create(Ids::DETECTOR_RAIL) ->writeBool(StateNames::RAIL_DATA_BIT, $block->isActivated()) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(Blocks::DIAMOND(), fn() => new Writer(Ids::DIAMOND_BLOCK)); - $this->map(Blocks::DIAMOND_ORE(), fn() => new Writer(Ids::DIAMOND_ORE)); + $this->mapSimple(Blocks::DIAMOND(), Ids::DIAMOND_BLOCK); + $this->mapSimple(Blocks::DIAMOND_ORE(), Ids::DIAMOND_ORE); $this->map(Blocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); $this->map(Blocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); $this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS); @@ -473,135 +477,135 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); }); $this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); - $this->map(Blocks::DRAGON_EGG(), fn() => new Writer(Ids::DRAGON_EGG)); - $this->map(Blocks::DRIED_KELP(), fn() => new Writer(Ids::DRIED_KELP_BLOCK)); + $this->mapSimple(Blocks::DRAGON_EGG(), Ids::DRAGON_EGG); + $this->mapSimple(Blocks::DRIED_KELP(), Ids::DRIED_KELP_BLOCK); $this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ return Writer::create(Ids::SHULKER_BOX) ->writeColor($block->getColor()); }); - $this->map(Blocks::ELEMENT_ACTINIUM(), fn() => new Writer(Ids::ELEMENT_89)); - $this->map(Blocks::ELEMENT_ALUMINUM(), fn() => new Writer(Ids::ELEMENT_13)); - $this->map(Blocks::ELEMENT_AMERICIUM(), fn() => new Writer(Ids::ELEMENT_95)); - $this->map(Blocks::ELEMENT_ANTIMONY(), fn() => new Writer(Ids::ELEMENT_51)); - $this->map(Blocks::ELEMENT_ARGON(), fn() => new Writer(Ids::ELEMENT_18)); - $this->map(Blocks::ELEMENT_ARSENIC(), fn() => new Writer(Ids::ELEMENT_33)); - $this->map(Blocks::ELEMENT_ASTATINE(), fn() => new Writer(Ids::ELEMENT_85)); - $this->map(Blocks::ELEMENT_BARIUM(), fn() => new Writer(Ids::ELEMENT_56)); - $this->map(Blocks::ELEMENT_BERKELIUM(), fn() => new Writer(Ids::ELEMENT_97)); - $this->map(Blocks::ELEMENT_BERYLLIUM(), fn() => new Writer(Ids::ELEMENT_4)); - $this->map(Blocks::ELEMENT_BISMUTH(), fn() => new Writer(Ids::ELEMENT_83)); - $this->map(Blocks::ELEMENT_BOHRIUM(), fn() => new Writer(Ids::ELEMENT_107)); - $this->map(Blocks::ELEMENT_BORON(), fn() => new Writer(Ids::ELEMENT_5)); - $this->map(Blocks::ELEMENT_BROMINE(), fn() => new Writer(Ids::ELEMENT_35)); - $this->map(Blocks::ELEMENT_CADMIUM(), fn() => new Writer(Ids::ELEMENT_48)); - $this->map(Blocks::ELEMENT_CALCIUM(), fn() => new Writer(Ids::ELEMENT_20)); - $this->map(Blocks::ELEMENT_CALIFORNIUM(), fn() => new Writer(Ids::ELEMENT_98)); - $this->map(Blocks::ELEMENT_CARBON(), fn() => new Writer(Ids::ELEMENT_6)); - $this->map(Blocks::ELEMENT_CERIUM(), fn() => new Writer(Ids::ELEMENT_58)); - $this->map(Blocks::ELEMENT_CESIUM(), fn() => new Writer(Ids::ELEMENT_55)); - $this->map(Blocks::ELEMENT_CHLORINE(), fn() => new Writer(Ids::ELEMENT_17)); - $this->map(Blocks::ELEMENT_CHROMIUM(), fn() => new Writer(Ids::ELEMENT_24)); - $this->map(Blocks::ELEMENT_COBALT(), fn() => new Writer(Ids::ELEMENT_27)); + $this->mapSimple(Blocks::ELEMENT_ACTINIUM(), Ids::ELEMENT_89); + $this->mapSimple(Blocks::ELEMENT_ALUMINUM(), Ids::ELEMENT_13); + $this->mapSimple(Blocks::ELEMENT_AMERICIUM(), Ids::ELEMENT_95); + $this->mapSimple(Blocks::ELEMENT_ANTIMONY(), Ids::ELEMENT_51); + $this->mapSimple(Blocks::ELEMENT_ARGON(), Ids::ELEMENT_18); + $this->mapSimple(Blocks::ELEMENT_ARSENIC(), Ids::ELEMENT_33); + $this->mapSimple(Blocks::ELEMENT_ASTATINE(), Ids::ELEMENT_85); + $this->mapSimple(Blocks::ELEMENT_BARIUM(), Ids::ELEMENT_56); + $this->mapSimple(Blocks::ELEMENT_BERKELIUM(), Ids::ELEMENT_97); + $this->mapSimple(Blocks::ELEMENT_BERYLLIUM(), Ids::ELEMENT_4); + $this->mapSimple(Blocks::ELEMENT_BISMUTH(), Ids::ELEMENT_83); + $this->mapSimple(Blocks::ELEMENT_BOHRIUM(), Ids::ELEMENT_107); + $this->mapSimple(Blocks::ELEMENT_BORON(), Ids::ELEMENT_5); + $this->mapSimple(Blocks::ELEMENT_BROMINE(), Ids::ELEMENT_35); + $this->mapSimple(Blocks::ELEMENT_CADMIUM(), Ids::ELEMENT_48); + $this->mapSimple(Blocks::ELEMENT_CALCIUM(), Ids::ELEMENT_20); + $this->mapSimple(Blocks::ELEMENT_CALIFORNIUM(), Ids::ELEMENT_98); + $this->mapSimple(Blocks::ELEMENT_CARBON(), Ids::ELEMENT_6); + $this->mapSimple(Blocks::ELEMENT_CERIUM(), Ids::ELEMENT_58); + $this->mapSimple(Blocks::ELEMENT_CESIUM(), Ids::ELEMENT_55); + $this->mapSimple(Blocks::ELEMENT_CHLORINE(), Ids::ELEMENT_17); + $this->mapSimple(Blocks::ELEMENT_CHROMIUM(), Ids::ELEMENT_24); + $this->mapSimple(Blocks::ELEMENT_COBALT(), Ids::ELEMENT_27); $this->map(Blocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(Blocks::ELEMENT_COPERNICIUM(), fn() => new Writer(Ids::ELEMENT_112)); - $this->map(Blocks::ELEMENT_COPPER(), fn() => new Writer(Ids::ELEMENT_29)); - $this->map(Blocks::ELEMENT_CURIUM(), fn() => new Writer(Ids::ELEMENT_96)); - $this->map(Blocks::ELEMENT_DARMSTADTIUM(), fn() => new Writer(Ids::ELEMENT_110)); - $this->map(Blocks::ELEMENT_DUBNIUM(), fn() => new Writer(Ids::ELEMENT_105)); - $this->map(Blocks::ELEMENT_DYSPROSIUM(), fn() => new Writer(Ids::ELEMENT_66)); - $this->map(Blocks::ELEMENT_EINSTEINIUM(), fn() => new Writer(Ids::ELEMENT_99)); - $this->map(Blocks::ELEMENT_ERBIUM(), fn() => new Writer(Ids::ELEMENT_68)); - $this->map(Blocks::ELEMENT_EUROPIUM(), fn() => new Writer(Ids::ELEMENT_63)); - $this->map(Blocks::ELEMENT_FERMIUM(), fn() => new Writer(Ids::ELEMENT_100)); - $this->map(Blocks::ELEMENT_FLEROVIUM(), fn() => new Writer(Ids::ELEMENT_114)); - $this->map(Blocks::ELEMENT_FLUORINE(), fn() => new Writer(Ids::ELEMENT_9)); - $this->map(Blocks::ELEMENT_FRANCIUM(), fn() => new Writer(Ids::ELEMENT_87)); - $this->map(Blocks::ELEMENT_GADOLINIUM(), fn() => new Writer(Ids::ELEMENT_64)); - $this->map(Blocks::ELEMENT_GALLIUM(), fn() => new Writer(Ids::ELEMENT_31)); - $this->map(Blocks::ELEMENT_GERMANIUM(), fn() => new Writer(Ids::ELEMENT_32)); - $this->map(Blocks::ELEMENT_GOLD(), fn() => new Writer(Ids::ELEMENT_79)); - $this->map(Blocks::ELEMENT_HAFNIUM(), fn() => new Writer(Ids::ELEMENT_72)); - $this->map(Blocks::ELEMENT_HASSIUM(), fn() => new Writer(Ids::ELEMENT_108)); - $this->map(Blocks::ELEMENT_HELIUM(), fn() => new Writer(Ids::ELEMENT_2)); - $this->map(Blocks::ELEMENT_HOLMIUM(), fn() => new Writer(Ids::ELEMENT_67)); - $this->map(Blocks::ELEMENT_HYDROGEN(), fn() => new Writer(Ids::ELEMENT_1)); - $this->map(Blocks::ELEMENT_INDIUM(), fn() => new Writer(Ids::ELEMENT_49)); - $this->map(Blocks::ELEMENT_IODINE(), fn() => new Writer(Ids::ELEMENT_53)); - $this->map(Blocks::ELEMENT_IRIDIUM(), fn() => new Writer(Ids::ELEMENT_77)); - $this->map(Blocks::ELEMENT_IRON(), fn() => new Writer(Ids::ELEMENT_26)); - $this->map(Blocks::ELEMENT_KRYPTON(), fn() => new Writer(Ids::ELEMENT_36)); - $this->map(Blocks::ELEMENT_LANTHANUM(), fn() => new Writer(Ids::ELEMENT_57)); - $this->map(Blocks::ELEMENT_LAWRENCIUM(), fn() => new Writer(Ids::ELEMENT_103)); - $this->map(Blocks::ELEMENT_LEAD(), fn() => new Writer(Ids::ELEMENT_82)); - $this->map(Blocks::ELEMENT_LITHIUM(), fn() => new Writer(Ids::ELEMENT_3)); - $this->map(Blocks::ELEMENT_LIVERMORIUM(), fn() => new Writer(Ids::ELEMENT_116)); - $this->map(Blocks::ELEMENT_LUTETIUM(), fn() => new Writer(Ids::ELEMENT_71)); - $this->map(Blocks::ELEMENT_MAGNESIUM(), fn() => new Writer(Ids::ELEMENT_12)); - $this->map(Blocks::ELEMENT_MANGANESE(), fn() => new Writer(Ids::ELEMENT_25)); - $this->map(Blocks::ELEMENT_MEITNERIUM(), fn() => new Writer(Ids::ELEMENT_109)); - $this->map(Blocks::ELEMENT_MENDELEVIUM(), fn() => new Writer(Ids::ELEMENT_101)); - $this->map(Blocks::ELEMENT_MERCURY(), fn() => new Writer(Ids::ELEMENT_80)); - $this->map(Blocks::ELEMENT_MOLYBDENUM(), fn() => new Writer(Ids::ELEMENT_42)); - $this->map(Blocks::ELEMENT_MOSCOVIUM(), fn() => new Writer(Ids::ELEMENT_115)); - $this->map(Blocks::ELEMENT_NEODYMIUM(), fn() => new Writer(Ids::ELEMENT_60)); - $this->map(Blocks::ELEMENT_NEON(), fn() => new Writer(Ids::ELEMENT_10)); - $this->map(Blocks::ELEMENT_NEPTUNIUM(), fn() => new Writer(Ids::ELEMENT_93)); - $this->map(Blocks::ELEMENT_NICKEL(), fn() => new Writer(Ids::ELEMENT_28)); - $this->map(Blocks::ELEMENT_NIHONIUM(), fn() => new Writer(Ids::ELEMENT_113)); - $this->map(Blocks::ELEMENT_NIOBIUM(), fn() => new Writer(Ids::ELEMENT_41)); - $this->map(Blocks::ELEMENT_NITROGEN(), fn() => new Writer(Ids::ELEMENT_7)); - $this->map(Blocks::ELEMENT_NOBELIUM(), fn() => new Writer(Ids::ELEMENT_102)); - $this->map(Blocks::ELEMENT_OGANESSON(), fn() => new Writer(Ids::ELEMENT_118)); - $this->map(Blocks::ELEMENT_OSMIUM(), fn() => new Writer(Ids::ELEMENT_76)); - $this->map(Blocks::ELEMENT_OXYGEN(), fn() => new Writer(Ids::ELEMENT_8)); - $this->map(Blocks::ELEMENT_PALLADIUM(), fn() => new Writer(Ids::ELEMENT_46)); - $this->map(Blocks::ELEMENT_PHOSPHORUS(), fn() => new Writer(Ids::ELEMENT_15)); - $this->map(Blocks::ELEMENT_PLATINUM(), fn() => new Writer(Ids::ELEMENT_78)); - $this->map(Blocks::ELEMENT_PLUTONIUM(), fn() => new Writer(Ids::ELEMENT_94)); - $this->map(Blocks::ELEMENT_POLONIUM(), fn() => new Writer(Ids::ELEMENT_84)); - $this->map(Blocks::ELEMENT_POTASSIUM(), fn() => new Writer(Ids::ELEMENT_19)); - $this->map(Blocks::ELEMENT_PRASEODYMIUM(), fn() => new Writer(Ids::ELEMENT_59)); - $this->map(Blocks::ELEMENT_PROMETHIUM(), fn() => new Writer(Ids::ELEMENT_61)); - $this->map(Blocks::ELEMENT_PROTACTINIUM(), fn() => new Writer(Ids::ELEMENT_91)); - $this->map(Blocks::ELEMENT_RADIUM(), fn() => new Writer(Ids::ELEMENT_88)); - $this->map(Blocks::ELEMENT_RADON(), fn() => new Writer(Ids::ELEMENT_86)); - $this->map(Blocks::ELEMENT_RHENIUM(), fn() => new Writer(Ids::ELEMENT_75)); - $this->map(Blocks::ELEMENT_RHODIUM(), fn() => new Writer(Ids::ELEMENT_45)); - $this->map(Blocks::ELEMENT_ROENTGENIUM(), fn() => new Writer(Ids::ELEMENT_111)); - $this->map(Blocks::ELEMENT_RUBIDIUM(), fn() => new Writer(Ids::ELEMENT_37)); - $this->map(Blocks::ELEMENT_RUTHENIUM(), fn() => new Writer(Ids::ELEMENT_44)); - $this->map(Blocks::ELEMENT_RUTHERFORDIUM(), fn() => new Writer(Ids::ELEMENT_104)); - $this->map(Blocks::ELEMENT_SAMARIUM(), fn() => new Writer(Ids::ELEMENT_62)); - $this->map(Blocks::ELEMENT_SCANDIUM(), fn() => new Writer(Ids::ELEMENT_21)); - $this->map(Blocks::ELEMENT_SEABORGIUM(), fn() => new Writer(Ids::ELEMENT_106)); - $this->map(Blocks::ELEMENT_SELENIUM(), fn() => new Writer(Ids::ELEMENT_34)); - $this->map(Blocks::ELEMENT_SILICON(), fn() => new Writer(Ids::ELEMENT_14)); - $this->map(Blocks::ELEMENT_SILVER(), fn() => new Writer(Ids::ELEMENT_47)); - $this->map(Blocks::ELEMENT_SODIUM(), fn() => new Writer(Ids::ELEMENT_11)); - $this->map(Blocks::ELEMENT_STRONTIUM(), fn() => new Writer(Ids::ELEMENT_38)); - $this->map(Blocks::ELEMENT_SULFUR(), fn() => new Writer(Ids::ELEMENT_16)); - $this->map(Blocks::ELEMENT_TANTALUM(), fn() => new Writer(Ids::ELEMENT_73)); - $this->map(Blocks::ELEMENT_TECHNETIUM(), fn() => new Writer(Ids::ELEMENT_43)); - $this->map(Blocks::ELEMENT_TELLURIUM(), fn() => new Writer(Ids::ELEMENT_52)); - $this->map(Blocks::ELEMENT_TENNESSINE(), fn() => new Writer(Ids::ELEMENT_117)); - $this->map(Blocks::ELEMENT_TERBIUM(), fn() => new Writer(Ids::ELEMENT_65)); - $this->map(Blocks::ELEMENT_THALLIUM(), fn() => new Writer(Ids::ELEMENT_81)); - $this->map(Blocks::ELEMENT_THORIUM(), fn() => new Writer(Ids::ELEMENT_90)); - $this->map(Blocks::ELEMENT_THULIUM(), fn() => new Writer(Ids::ELEMENT_69)); - $this->map(Blocks::ELEMENT_TIN(), fn() => new Writer(Ids::ELEMENT_50)); - $this->map(Blocks::ELEMENT_TITANIUM(), fn() => new Writer(Ids::ELEMENT_22)); - $this->map(Blocks::ELEMENT_TUNGSTEN(), fn() => new Writer(Ids::ELEMENT_74)); - $this->map(Blocks::ELEMENT_URANIUM(), fn() => new Writer(Ids::ELEMENT_92)); - $this->map(Blocks::ELEMENT_VANADIUM(), fn() => new Writer(Ids::ELEMENT_23)); - $this->map(Blocks::ELEMENT_XENON(), fn() => new Writer(Ids::ELEMENT_54)); - $this->map(Blocks::ELEMENT_YTTERBIUM(), fn() => new Writer(Ids::ELEMENT_70)); - $this->map(Blocks::ELEMENT_YTTRIUM(), fn() => new Writer(Ids::ELEMENT_39)); - $this->map(Blocks::ELEMENT_ZERO(), fn() => new Writer(Ids::ELEMENT_0)); - $this->map(Blocks::ELEMENT_ZINC(), fn() => new Writer(Ids::ELEMENT_30)); - $this->map(Blocks::ELEMENT_ZIRCONIUM(), fn() => new Writer(Ids::ELEMENT_40)); - $this->map(Blocks::EMERALD(), fn() => new Writer(Ids::EMERALD_BLOCK)); - $this->map(Blocks::EMERALD_ORE(), fn() => new Writer(Ids::EMERALD_ORE)); - $this->map(Blocks::ENCHANTING_TABLE(), fn() => new Writer(Ids::ENCHANTING_TABLE)); + $this->mapSimple(Blocks::ELEMENT_COPERNICIUM(), Ids::ELEMENT_112); + $this->mapSimple(Blocks::ELEMENT_COPPER(), Ids::ELEMENT_29); + $this->mapSimple(Blocks::ELEMENT_CURIUM(), Ids::ELEMENT_96); + $this->mapSimple(Blocks::ELEMENT_DARMSTADTIUM(), Ids::ELEMENT_110); + $this->mapSimple(Blocks::ELEMENT_DUBNIUM(), Ids::ELEMENT_105); + $this->mapSimple(Blocks::ELEMENT_DYSPROSIUM(), Ids::ELEMENT_66); + $this->mapSimple(Blocks::ELEMENT_EINSTEINIUM(), Ids::ELEMENT_99); + $this->mapSimple(Blocks::ELEMENT_ERBIUM(), Ids::ELEMENT_68); + $this->mapSimple(Blocks::ELEMENT_EUROPIUM(), Ids::ELEMENT_63); + $this->mapSimple(Blocks::ELEMENT_FERMIUM(), Ids::ELEMENT_100); + $this->mapSimple(Blocks::ELEMENT_FLEROVIUM(), Ids::ELEMENT_114); + $this->mapSimple(Blocks::ELEMENT_FLUORINE(), Ids::ELEMENT_9); + $this->mapSimple(Blocks::ELEMENT_FRANCIUM(), Ids::ELEMENT_87); + $this->mapSimple(Blocks::ELEMENT_GADOLINIUM(), Ids::ELEMENT_64); + $this->mapSimple(Blocks::ELEMENT_GALLIUM(), Ids::ELEMENT_31); + $this->mapSimple(Blocks::ELEMENT_GERMANIUM(), Ids::ELEMENT_32); + $this->mapSimple(Blocks::ELEMENT_GOLD(), Ids::ELEMENT_79); + $this->mapSimple(Blocks::ELEMENT_HAFNIUM(), Ids::ELEMENT_72); + $this->mapSimple(Blocks::ELEMENT_HASSIUM(), Ids::ELEMENT_108); + $this->mapSimple(Blocks::ELEMENT_HELIUM(), Ids::ELEMENT_2); + $this->mapSimple(Blocks::ELEMENT_HOLMIUM(), Ids::ELEMENT_67); + $this->mapSimple(Blocks::ELEMENT_HYDROGEN(), Ids::ELEMENT_1); + $this->mapSimple(Blocks::ELEMENT_INDIUM(), Ids::ELEMENT_49); + $this->mapSimple(Blocks::ELEMENT_IODINE(), Ids::ELEMENT_53); + $this->mapSimple(Blocks::ELEMENT_IRIDIUM(), Ids::ELEMENT_77); + $this->mapSimple(Blocks::ELEMENT_IRON(), Ids::ELEMENT_26); + $this->mapSimple(Blocks::ELEMENT_KRYPTON(), Ids::ELEMENT_36); + $this->mapSimple(Blocks::ELEMENT_LANTHANUM(), Ids::ELEMENT_57); + $this->mapSimple(Blocks::ELEMENT_LAWRENCIUM(), Ids::ELEMENT_103); + $this->mapSimple(Blocks::ELEMENT_LEAD(), Ids::ELEMENT_82); + $this->mapSimple(Blocks::ELEMENT_LITHIUM(), Ids::ELEMENT_3); + $this->mapSimple(Blocks::ELEMENT_LIVERMORIUM(), Ids::ELEMENT_116); + $this->mapSimple(Blocks::ELEMENT_LUTETIUM(), Ids::ELEMENT_71); + $this->mapSimple(Blocks::ELEMENT_MAGNESIUM(), Ids::ELEMENT_12); + $this->mapSimple(Blocks::ELEMENT_MANGANESE(), Ids::ELEMENT_25); + $this->mapSimple(Blocks::ELEMENT_MEITNERIUM(), Ids::ELEMENT_109); + $this->mapSimple(Blocks::ELEMENT_MENDELEVIUM(), Ids::ELEMENT_101); + $this->mapSimple(Blocks::ELEMENT_MERCURY(), Ids::ELEMENT_80); + $this->mapSimple(Blocks::ELEMENT_MOLYBDENUM(), Ids::ELEMENT_42); + $this->mapSimple(Blocks::ELEMENT_MOSCOVIUM(), Ids::ELEMENT_115); + $this->mapSimple(Blocks::ELEMENT_NEODYMIUM(), Ids::ELEMENT_60); + $this->mapSimple(Blocks::ELEMENT_NEON(), Ids::ELEMENT_10); + $this->mapSimple(Blocks::ELEMENT_NEPTUNIUM(), Ids::ELEMENT_93); + $this->mapSimple(Blocks::ELEMENT_NICKEL(), Ids::ELEMENT_28); + $this->mapSimple(Blocks::ELEMENT_NIHONIUM(), Ids::ELEMENT_113); + $this->mapSimple(Blocks::ELEMENT_NIOBIUM(), Ids::ELEMENT_41); + $this->mapSimple(Blocks::ELEMENT_NITROGEN(), Ids::ELEMENT_7); + $this->mapSimple(Blocks::ELEMENT_NOBELIUM(), Ids::ELEMENT_102); + $this->mapSimple(Blocks::ELEMENT_OGANESSON(), Ids::ELEMENT_118); + $this->mapSimple(Blocks::ELEMENT_OSMIUM(), Ids::ELEMENT_76); + $this->mapSimple(Blocks::ELEMENT_OXYGEN(), Ids::ELEMENT_8); + $this->mapSimple(Blocks::ELEMENT_PALLADIUM(), Ids::ELEMENT_46); + $this->mapSimple(Blocks::ELEMENT_PHOSPHORUS(), Ids::ELEMENT_15); + $this->mapSimple(Blocks::ELEMENT_PLATINUM(), Ids::ELEMENT_78); + $this->mapSimple(Blocks::ELEMENT_PLUTONIUM(), Ids::ELEMENT_94); + $this->mapSimple(Blocks::ELEMENT_POLONIUM(), Ids::ELEMENT_84); + $this->mapSimple(Blocks::ELEMENT_POTASSIUM(), Ids::ELEMENT_19); + $this->mapSimple(Blocks::ELEMENT_PRASEODYMIUM(), Ids::ELEMENT_59); + $this->mapSimple(Blocks::ELEMENT_PROMETHIUM(), Ids::ELEMENT_61); + $this->mapSimple(Blocks::ELEMENT_PROTACTINIUM(), Ids::ELEMENT_91); + $this->mapSimple(Blocks::ELEMENT_RADIUM(), Ids::ELEMENT_88); + $this->mapSimple(Blocks::ELEMENT_RADON(), Ids::ELEMENT_86); + $this->mapSimple(Blocks::ELEMENT_RHENIUM(), Ids::ELEMENT_75); + $this->mapSimple(Blocks::ELEMENT_RHODIUM(), Ids::ELEMENT_45); + $this->mapSimple(Blocks::ELEMENT_ROENTGENIUM(), Ids::ELEMENT_111); + $this->mapSimple(Blocks::ELEMENT_RUBIDIUM(), Ids::ELEMENT_37); + $this->mapSimple(Blocks::ELEMENT_RUTHENIUM(), Ids::ELEMENT_44); + $this->mapSimple(Blocks::ELEMENT_RUTHERFORDIUM(), Ids::ELEMENT_104); + $this->mapSimple(Blocks::ELEMENT_SAMARIUM(), Ids::ELEMENT_62); + $this->mapSimple(Blocks::ELEMENT_SCANDIUM(), Ids::ELEMENT_21); + $this->mapSimple(Blocks::ELEMENT_SEABORGIUM(), Ids::ELEMENT_106); + $this->mapSimple(Blocks::ELEMENT_SELENIUM(), Ids::ELEMENT_34); + $this->mapSimple(Blocks::ELEMENT_SILICON(), Ids::ELEMENT_14); + $this->mapSimple(Blocks::ELEMENT_SILVER(), Ids::ELEMENT_47); + $this->mapSimple(Blocks::ELEMENT_SODIUM(), Ids::ELEMENT_11); + $this->mapSimple(Blocks::ELEMENT_STRONTIUM(), Ids::ELEMENT_38); + $this->mapSimple(Blocks::ELEMENT_SULFUR(), Ids::ELEMENT_16); + $this->mapSimple(Blocks::ELEMENT_TANTALUM(), Ids::ELEMENT_73); + $this->mapSimple(Blocks::ELEMENT_TECHNETIUM(), Ids::ELEMENT_43); + $this->mapSimple(Blocks::ELEMENT_TELLURIUM(), Ids::ELEMENT_52); + $this->mapSimple(Blocks::ELEMENT_TENNESSINE(), Ids::ELEMENT_117); + $this->mapSimple(Blocks::ELEMENT_TERBIUM(), Ids::ELEMENT_65); + $this->mapSimple(Blocks::ELEMENT_THALLIUM(), Ids::ELEMENT_81); + $this->mapSimple(Blocks::ELEMENT_THORIUM(), Ids::ELEMENT_90); + $this->mapSimple(Blocks::ELEMENT_THULIUM(), Ids::ELEMENT_69); + $this->mapSimple(Blocks::ELEMENT_TIN(), Ids::ELEMENT_50); + $this->mapSimple(Blocks::ELEMENT_TITANIUM(), Ids::ELEMENT_22); + $this->mapSimple(Blocks::ELEMENT_TUNGSTEN(), Ids::ELEMENT_74); + $this->mapSimple(Blocks::ELEMENT_URANIUM(), Ids::ELEMENT_92); + $this->mapSimple(Blocks::ELEMENT_VANADIUM(), Ids::ELEMENT_23); + $this->mapSimple(Blocks::ELEMENT_XENON(), Ids::ELEMENT_54); + $this->mapSimple(Blocks::ELEMENT_YTTERBIUM(), Ids::ELEMENT_70); + $this->mapSimple(Blocks::ELEMENT_YTTRIUM(), Ids::ELEMENT_39); + $this->mapSimple(Blocks::ELEMENT_ZERO(), Ids::ELEMENT_0); + $this->mapSimple(Blocks::ELEMENT_ZINC(), Ids::ELEMENT_30); + $this->mapSimple(Blocks::ELEMENT_ZIRCONIUM(), Ids::ELEMENT_40); + $this->mapSimple(Blocks::EMERALD(), Ids::EMERALD_BLOCK); + $this->mapSimple(Blocks::EMERALD_ORE(), Ids::EMERALD_ORE); + $this->mapSimple(Blocks::ENCHANTING_TABLE(), Ids::ENCHANTING_TABLE); $this->map(Blocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ return Writer::create(Ids::ENDER_CHEST) ->writeHorizontalFacing($block->getFacing()); @@ -615,8 +619,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::END_ROD) ->writeEndRodFacingDirection($block->getFacing()); }); - $this->map(Blocks::END_STONE(), fn() => new Writer(Ids::END_STONE)); - $this->map(Blocks::END_STONE_BRICKS(), fn() => new Writer(Ids::END_BRICKS)); + $this->mapSimple(Blocks::END_STONE(), Ids::END_STONE); + $this->mapSimple(Blocks::END_STONE_BRICKS(), Ids::END_BRICKS); $this->map(Blocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); $this->mapStairs(Blocks::END_STONE_BRICK_STAIRS(), Ids::END_BRICK_STAIRS); $this->map(Blocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); @@ -631,7 +635,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::FIRE) ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(Blocks::FLETCHING_TABLE(), fn() => new Writer(Ids::FLETCHING_TABLE)); + $this->mapSimple(Blocks::FLETCHING_TABLE(), Ids::FLETCHING_TABLE); $this->map(Blocks::FLOWER_POT(), function() : Writer{ return Writer::create(Ids::FLOWER_POT) ->writeBool(StateNames::UPDATE_BIT, true); //to keep MCPE happy @@ -641,8 +645,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::AGE, $block->getAge()); }); $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); - $this->map(Blocks::GLASS(), fn() => new Writer(Ids::GLASS)); - $this->map(Blocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE)); + $this->mapSimple(Blocks::GLASS(), Ids::GLASS); + $this->mapSimple(Blocks::GLASS_PANE(), Ids::GLASS_PANE); $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ return Writer::create(match ($color = $block->getColor()) { DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA, @@ -665,21 +669,21 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }) ->writeHorizontalFacing($block->getFacing()); }); - $this->map(Blocks::GLOWING_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN)); - $this->map(Blocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE)); - $this->map(Blocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK)); - $this->map(Blocks::GOLD_ORE(), fn() => new Writer(Ids::GOLD_ORE)); + $this->mapSimple(Blocks::GLOWING_OBSIDIAN(), Ids::GLOWINGOBSIDIAN); + $this->mapSimple(Blocks::GLOWSTONE(), Ids::GLOWSTONE); + $this->mapSimple(Blocks::GOLD(), Ids::GOLD_BLOCK); + $this->mapSimple(Blocks::GOLD_ORE(), Ids::GOLD_ORE); $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); $this->mapStairs(Blocks::GRANITE_STAIRS(), Ids::GRANITE_STAIRS); $this->map(Blocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); - $this->map(Blocks::GRASS(), fn() => new Writer(Ids::GRASS)); - $this->map(Blocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH)); - $this->map(Blocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL)); + $this->mapSimple(Blocks::GRASS(), Ids::GRASS); + $this->mapSimple(Blocks::GRASS_PATH(), Ids::GRASS_PATH); + $this->mapSimple(Blocks::GRAVEL(), Ids::GRAVEL); $this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); - $this->map(Blocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY)); - $this->map(Blocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS)); - $this->map(Blocks::HARDENED_GLASS_PANE(), fn() => new Writer(Ids::HARD_GLASS_PANE)); + $this->mapSimple(Blocks::HARDENED_CLAY(), Ids::HARDENED_CLAY); + $this->mapSimple(Blocks::HARDENED_GLASS(), Ids::HARD_GLASS); + $this->mapSimple(Blocks::HARDENED_GLASS_PANE(), Ids::HARD_GLASS_PANE); $this->map(Blocks::HAY_BALE(), function(HayBale $block) : Writer{ return Writer::create(Ids::HAY_BLOCK) ->writeInt(StateNames::DEPRECATED, 0) @@ -690,7 +694,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::TOGGLE_BIT, $block->isPowered()) ->writeFacingWithoutUp($block->getFacing()); }); - $this->map(Blocks::ICE(), fn() => new Writer(Ids::ICE)); + $this->mapSimple(Blocks::ICE(), Ids::ICE); $this->map(Blocks::INFESTED_CHISELED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK)); $this->map(Blocks::INFESTED_COBBLESTONE(), fn() => Writer::create(Ids::MONSTER_EGG) @@ -703,13 +707,13 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE)); $this->map(Blocks::INFESTED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); - $this->map(Blocks::INFO_UPDATE(), fn() => new Writer(Ids::INFO_UPDATE)); - $this->map(Blocks::INFO_UPDATE2(), fn() => new Writer(Ids::INFO_UPDATE2)); - $this->map(Blocks::INVISIBLE_BEDROCK(), fn() => new Writer(Ids::INVISIBLE_BEDROCK)); - $this->map(Blocks::IRON(), fn() => new Writer(Ids::IRON_BLOCK)); - $this->map(Blocks::IRON_BARS(), fn() => new Writer(Ids::IRON_BARS)); + $this->mapSimple(Blocks::INFO_UPDATE(), Ids::INFO_UPDATE); + $this->mapSimple(Blocks::INFO_UPDATE2(), Ids::INFO_UPDATE2); + $this->mapSimple(Blocks::INVISIBLE_BEDROCK(), Ids::INVISIBLE_BEDROCK); + $this->mapSimple(Blocks::IRON(), Ids::IRON_BLOCK); + $this->mapSimple(Blocks::IRON_BARS(), Ids::IRON_BARS); $this->map(Blocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); - $this->map(Blocks::IRON_ORE(), fn() => new Writer(Ids::IRON_ORE)); + $this->mapSimple(Blocks::IRON_ORE(), Ids::IRON_ORE); $this->map(Blocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); $this->map(Blocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ return Writer::create(Ids::FRAME) @@ -717,7 +721,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) ->writeFacingDirection($block->getFacing()); }); - $this->map(Blocks::JUKEBOX(), fn() => new Writer(Ids::JUKEBOX)); + $this->mapSimple(Blocks::JUKEBOX(), Ids::JUKEBOX); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); $this->map(Blocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); $this->map(Blocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) @@ -744,8 +748,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LANTERN) ->writeBool(StateNames::HANGING, $block->isHanging()); }); - $this->map(Blocks::LAPIS_LAZULI(), fn() => new Writer(Ids::LAPIS_BLOCK)); - $this->map(Blocks::LAPIS_LAZULI_ORE(), fn() => new Writer(Ids::LAPIS_ORE)); + $this->mapSimple(Blocks::LAPIS_LAZULI(), Ids::LAPIS_BLOCK); + $this->mapSimple(Blocks::LAPIS_LAZULI_ORE(), Ids::LAPIS_ORE); $this->map(Blocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_FERN, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA)); $this->map(Blocks::LECTERN(), function(Lectern $block) : Writer{ @@ -753,7 +757,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::POWERED_BIT, $block->isProducingSignal()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(Blocks::LEGACY_STONECUTTER(), fn() => new Writer(Ids::STONECUTTER)); + $this->mapSimple(Blocks::LEGACY_STONECUTTER(), Ids::STONECUTTER); $this->map(Blocks::LEVER(), function(Lever $block) : Writer{ return Writer::create(Ids::LEVER) ->writeBool(StateNames::OPEN_BIT, $block->isActivated()) @@ -771,7 +775,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); - $this->map(Blocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY)); + $this->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY); $this->map(Blocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ return Writer::create(Ids::LIT_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); @@ -780,16 +784,16 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LOOM) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->map(Blocks::MAGMA(), fn() => new Writer(Ids::MAGMA)); + $this->mapSimple(Blocks::MAGMA(), Ids::MAGMA); $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(Blocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK)); + $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); $this->map(Blocks::MOB_HEAD(), function(Skull $block) : Writer{ return Writer::create(Ids::SKULL) ->writeFacingWithoutDown($block->getFacing()); }); - $this->map(Blocks::MONSTER_SPAWNER(), fn() => new Writer(Ids::MOB_SPAWNER)); - $this->map(Blocks::MOSSY_COBBLESTONE(), fn() => new Writer(Ids::MOSSY_COBBLESTONE)); + $this->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER); + $this->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE); $this->map(Blocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); $this->mapStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), Ids::MOSSY_COBBLESTONE_STAIRS); $this->map(Blocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); @@ -799,10 +803,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); - $this->map(Blocks::MYCELIUM(), fn() => new Writer(Ids::MYCELIUM)); - $this->map(Blocks::NETHERRACK(), fn() => new Writer(Ids::NETHERRACK)); - $this->map(Blocks::NETHER_BRICKS(), fn() => new Writer(Ids::NETHER_BRICK)); - $this->map(Blocks::NETHER_BRICK_FENCE(), fn() => new Writer(Ids::NETHER_BRICK_FENCE)); + $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); + $this->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK); + $this->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK); + $this->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE); $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); $this->mapStairs(Blocks::NETHER_BRICK_STAIRS(), Ids::NETHER_BRICK_STAIRS); $this->map(Blocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); @@ -814,14 +818,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), }); }); - $this->map(Blocks::NETHER_QUARTZ_ORE(), fn() => new Writer(Ids::QUARTZ_ORE)); - $this->map(Blocks::NETHER_REACTOR_CORE(), fn() => new Writer(Ids::NETHERREACTOR)); + $this->mapSimple(Blocks::NETHER_QUARTZ_ORE(), Ids::QUARTZ_ORE); + $this->mapSimple(Blocks::NETHER_REACTOR_CORE(), Ids::NETHERREACTOR); $this->map(Blocks::NETHER_WART(), function(NetherWartPlant $block) : Writer{ return Writer::create(Ids::NETHER_WART) ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->map(Blocks::NETHER_WART_BLOCK(), fn() => new Writer(Ids::NETHER_WART_BLOCK)); - $this->map(Blocks::NOTE_BLOCK(), fn() => new Writer(Ids::NOTEBLOCK)); + $this->mapSimple(Blocks::NETHER_WART_BLOCK(), Ids::NETHER_WART_BLOCK); + $this->mapSimple(Blocks::NOTE_BLOCK(), Ids::NOTEBLOCK); $this->map(Blocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); $this->map(Blocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); $this->map(Blocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) @@ -839,13 +843,13 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); $this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); $this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN)); + $this->mapSimple(Blocks::OBSIDIAN(), Ids::OBSIDIAN); $this->map(Blocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); $this->map(Blocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); - $this->map(Blocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE)); + $this->mapSimple(Blocks::PACKED_ICE(), Ids::PACKED_ICE); $this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); - $this->map(Blocks::PODZOL(), fn() => new Writer(Ids::PODZOL)); + $this->mapSimple(Blocks::PODZOL(), Ids::PODZOL); $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); $this->map(Blocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); $this->mapStairs(Blocks::POLISHED_ANDESITE_STAIRS(), Ids::POLISHED_ANDESITE_STAIRS); @@ -897,7 +901,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::RAIL) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->map(Blocks::REDSTONE(), fn() => new Writer(Ids::REDSTONE_BLOCK)); + $this->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK); $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : Writer{ return Writer::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) ->writeBool(StateNames::OUTPUT_LIT_BIT, $block->isPowered()) @@ -919,9 +923,9 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::REDSTONE_WIRE) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->map(Blocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM)); + $this->mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM); $this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); - $this->map(Blocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK)); + $this->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK); $this->map(Blocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); $this->mapStairs(Blocks::RED_NETHER_BRICK_STAIRS(), Ids::RED_NETHER_BRICK_STAIRS); $this->map(Blocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); @@ -933,7 +937,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); $this->map(Blocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); $this->map(Blocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); - $this->map(Blocks::RESERVED6(), fn() => new Writer(Ids::RESERVED6)); + $this->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6); $this->map(Blocks::ROSE_BUSH(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_ROSE, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::SAND(), fn() => Writer::create(Ids::SAND) ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); @@ -941,14 +945,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); $this->mapStairs(Blocks::SANDSTONE_STAIRS(), Ids::SANDSTONE_STAIRS); $this->map(Blocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); - $this->map(Blocks::SEA_LANTERN(), fn() => new Writer(Ids::SEA_LANTERN)); + $this->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN); $this->map(Blocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ return Writer::create(Ids::SEA_PICKLE) ->writeBool(StateNames::DEAD_BIT, !$block->isUnderwater()) ->writeInt(StateNames::CLUSTER_COUNT, $block->getCount() - 1); }); - $this->map(Blocks::SHULKER_BOX(), fn() => new Writer(Ids::UNDYED_SHULKER_BOX)); - $this->map(Blocks::SLIME(), fn() => new Writer(Ids::SLIME)); + $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); + $this->mapSimple(Blocks::SLIME(), Ids::SLIME); $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); $this->map(Blocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); @@ -959,15 +963,15 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); $this->map(Blocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); $this->mapStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), Ids::SMOOTH_SANDSTONE_STAIRS); - $this->map(Blocks::SMOOTH_STONE(), fn() => new Writer(Ids::SMOOTH_STONE)); + $this->mapSimple(Blocks::SMOOTH_STONE(), Ids::SMOOTH_STONE); $this->map(Blocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); - $this->map(Blocks::SNOW(), fn() => new Writer(Ids::SNOW)); + $this->mapSimple(Blocks::SNOW(), Ids::SNOW); $this->map(Blocks::SNOW_LAYER(), function(SnowLayer $block) : Writer{ return Writer::create(Ids::SNOW_LAYER) ->writeBool(StateNames::COVERED_BIT, false) ->writeInt(StateNames::HEIGHT, $block->getLayers() - 1); }); - $this->map(Blocks::SOUL_SAND(), fn() => new Writer(Ids::SOUL_SAND)); + $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); $this->map(Blocks::SPONGE(), function(Sponge $block) : Writer{ return Writer::create(Ids::SPONGE) ->writeString(StateNames::SPONGE_TYPE, $block->isWet() ? StringValues::SPONGE_TYPE_WET : StringValues::SPONGE_TYPE_DRY); From b661c9491521d526e0a2d0c194c7abb0ad67e85d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 21:34:20 +0100 Subject: [PATCH 221/692] StringToItemParser: added glazed_terracotta alias --- src/item/StringToItemParser.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 440734556..58e57a7c0 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -538,6 +538,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("glass", fn() => Blocks::GLASS()); $result->registerBlock("glass_pane", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glass_panel", fn() => Blocks::GLASS_PANE()); + $result->registerBlock("glazed_terracotta", fn() => Blocks::GLAZED_TERRACOTTA()); $result->registerBlock("glowing_obsidian", fn() => Blocks::GLOWING_OBSIDIAN()); $result->registerBlock("glowing_redstone_ore", fn() => Blocks::REDSTONE_ORE()->setLit(true)); $result->registerBlock("glowingobsidian", fn() => Blocks::GLOWING_OBSIDIAN()); From 172214386a7754885cf3e51db23ce57bcd4a567a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 21:53:59 +0100 Subject: [PATCH 222/692] Added a batch of simple blocks from 1.16 and 1.17 --- src/block/BlockFactory.php | 43 ++++++ src/block/BlockTypeIds.php | 24 ++- src/block/VanillaBlocks.php | 42 +++++ .../BlockObjectToBlockStateSerializer.php | 34 +++++ .../convert/BlockStateSerializerHelper.php | 2 +- .../BlockStateToBlockObjectDeserializer.php | 144 +++++------------- src/item/StringToItemParser.php | 21 +++ 7 files changed, 203 insertions(+), 107 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 00befb60e..22fbb8dc3 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -558,6 +558,9 @@ class BlockFactory{ BreakInfo::instant(), )); + $this->registerBlocksR16(); + $this->registerBlocksR17(); + //region --- auto-generated TODOs for bedrock-1.11.0 --- //TODO: minecraft:bubble_column //TODO: minecraft:campfire @@ -828,6 +831,46 @@ class BlockFactory{ $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); } + private function registerBlocksR16() : void{ + //for some reason, slabs have weird hardness like the legacy ones + $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + + $this->register(new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel()))); + + $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); + $this->register(new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); + + $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); ++$this->register(new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); + $this->register(new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); + $this->register(new Wall(new BID(Ids::BLACKSTONE_WALL), "Blackstone Wall", $blackstoneBreakInfo)); + + //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) + $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); + $this->register(new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); + $this->register(new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new BreakInfo(0.5, ToolType::PICKAXE))); //same as regular stone button + $this->register(new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //same as regular stone pressure plate + $this->register(new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); + $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_POLISHED_BLACKSTONE), "Chiseled Polished Blackstone", $blackstoneBreakInfo)); + + $prefix = fn(string $thing) => "Polished Blackstone Brick" . ($thing !== "" ? " $thing" : ""); + $this->register(new Opaque(new BID(Ids::POLISHED_BLACKSTONE_BRICKS), "Polished Blackstone Bricks", $blackstoneBreakInfo)); + $this->register(new Slab(new BID(Ids::POLISHED_BLACKSTONE_BRICK_SLAB), "Polished Blackstone Brick", $slabBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); + $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); + } + + private function registerBlocksR17() : void{ + //in java this can be acquired using any tool - seems to be a parity issue in bedrock + $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + } + /** * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading * from disk, and also when being read at runtime. diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 93132dee0..d45af897e 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -564,6 +564,26 @@ final class BlockTypeIds{ public const WOOL = 10537; public const GLAZED_TERRACOTTA = 10539; - - public const FIRST_UNUSED_BLOCK_ID = 10540; + public const AMETHYST = 10540; + public const ANCIENT_DEBRIS = 10541; + public const BASALT = 10542; + public const POLISHED_BASALT = 10543; + public const SMOOTH_BASALT = 10544; + public const BLACKSTONE = 10545; + public const BLACKSTONE_SLAB = 10546; + public const BLACKSTONE_STAIRS = 10547; + public const BLACKSTONE_WALL = 10548; + public const POLISHED_BLACKSTONE = 10549; + public const POLISHED_BLACKSTONE_BUTTON = 10550; + public const POLISHED_BLACKSTONE_PRESSURE_PLATE = 10551; + public const POLISHED_BLACKSTONE_SLAB = 10552; + public const POLISHED_BLACKSTONE_STAIRS = 10553; + public const POLISHED_BLACKSTONE_WALL = 10554; + public const CHISELED_POLISHED_BLACKSTONE = 10555; + public const POLISHED_BLACKSTONE_BRICKS = 10556; + public const POLISHED_BLACKSTONE_BRICK_SLAB = 10557; + public const POLISHED_BLACKSTONE_BRICK_STAIRS = 10558; + public const POLISHED_BLACKSTONE_BRICK_WALL = 10559; + public const CRACKED_POLISHED_BLACKSTONE_BRICKS = 10560; + public const FIRST_UNUSED_BLOCK_ID = 10561; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 4ae0f759b..1524063c4 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -51,6 +51,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Air AIR() * @method static Flower ALLIUM() * @method static MushroomStem ALL_SIDED_MUSHROOM_STEM() + * @method static Opaque AMETHYST() + * @method static Opaque ANCIENT_DEBRIS() * @method static Opaque ANDESITE() * @method static Slab ANDESITE_SLAB() * @method static Stair ANDESITE_STAIRS() @@ -62,6 +64,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static FloorBanner BANNER() * @method static Barrel BARREL() * @method static Transparent BARRIER() + * @method static SimplePillar BASALT() * @method static Beacon BEACON() * @method static Bed BED() * @method static Bedrock BEDROCK() @@ -82,6 +85,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static WoodenTrapdoor BIRCH_TRAPDOOR() * @method static WallSign BIRCH_WALL_SIGN() * @method static Wood BIRCH_WOOD() + * @method static Opaque BLACKSTONE() + * @method static Slab BLACKSTONE_SLAB() + * @method static Stair BLACKSTONE_STAIRS() + * @method static Wall BLACKSTONE_WALL() * @method static Furnace BLAST_FURNACE() * @method static BlueIce BLUE_ICE() * @method static Flower BLUE_ORCHID() @@ -102,6 +109,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CarvedPumpkin CARVED_PUMPKIN() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() + * @method static Opaque CHISELED_POLISHED_BLACKSTONE() * @method static SimplePillar CHISELED_QUARTZ() * @method static Opaque CHISELED_RED_SANDSTONE() * @method static Opaque CHISELED_SANDSTONE() @@ -122,6 +130,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CoralBlock CORAL_BLOCK() * @method static FloorCoralFan CORAL_FAN() * @method static Flower CORNFLOWER() + * @method static Opaque CRACKED_POLISHED_BLACKSTONE_BRICKS() * @method static Opaque CRACKED_STONE_BRICKS() * @method static CraftingTable CRAFTING_TABLE() * @method static Opaque CUT_RED_SANDSTONE() @@ -420,6 +429,17 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Opaque POLISHED_ANDESITE() * @method static Slab POLISHED_ANDESITE_SLAB() * @method static Stair POLISHED_ANDESITE_STAIRS() + * @method static SimplePillar POLISHED_BASALT() + * @method static Opaque POLISHED_BLACKSTONE() + * @method static Opaque POLISHED_BLACKSTONE_BRICKS() + * @method static Slab POLISHED_BLACKSTONE_BRICK_SLAB() + * @method static Stair POLISHED_BLACKSTONE_BRICK_STAIRS() + * @method static Wall POLISHED_BLACKSTONE_BRICK_WALL() + * @method static StoneButton POLISHED_BLACKSTONE_BUTTON() + * @method static StonePressurePlate POLISHED_BLACKSTONE_PRESSURE_PLATE() + * @method static Slab POLISHED_BLACKSTONE_SLAB() + * @method static Stair POLISHED_BLACKSTONE_STAIRS() + * @method static Wall POLISHED_BLACKSTONE_WALL() * @method static Opaque POLISHED_DIORITE() * @method static Slab POLISHED_DIORITE_SLAB() * @method static Stair POLISHED_DIORITE_STAIRS() @@ -480,6 +500,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ShulkerBox SHULKER_BOX() * @method static Slime SLIME() * @method static Furnace SMOKER() + * @method static Opaque SMOOTH_BASALT() * @method static Opaque SMOOTH_QUARTZ() * @method static Slab SMOOTH_QUARTZ_SLAB() * @method static Stair SMOOTH_QUARTZ_STAIRS() @@ -587,6 +608,8 @@ final class VanillaBlocks{ self::register("air", $factory->get(Ids::AIR, 0)); self::register("all_sided_mushroom_stem", $factory->get(Ids::ALL_SIDED_MUSHROOM_STEM, 0)); self::register("allium", $factory->get(Ids::ALLIUM, 0)); + self::register("amethyst", $factory->get(Ids::AMETHYST, 0)); + self::register("ancient_debris", $factory->get(Ids::ANCIENT_DEBRIS, 0)); self::register("andesite", $factory->get(Ids::ANDESITE, 0)); self::register("andesite_slab", $factory->get(Ids::ANDESITE_SLAB, 0)); self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 0)); @@ -598,6 +621,7 @@ final class VanillaBlocks{ self::register("banner", $factory->get(Ids::BANNER, 0)); self::register("barrel", $factory->get(Ids::BARREL, 0)); self::register("barrier", $factory->get(Ids::BARRIER, 0)); + self::register("basalt", $factory->get(Ids::BASALT, 2)); self::register("beacon", $factory->get(Ids::BEACON, 0)); self::register("bed", $factory->get(Ids::BED, 13)); self::register("bedrock", $factory->get(Ids::BEDROCK, 0)); @@ -618,6 +642,10 @@ final class VanillaBlocks{ self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0)); self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0)); + self::register("blackstone", $factory->get(Ids::BLACKSTONE, 0)); + self::register("blackstone_slab", $factory->get(Ids::BLACKSTONE_SLAB, 0)); + self::register("blackstone_stairs", $factory->get(Ids::BLACKSTONE_STAIRS, 0)); + self::register("blackstone_wall", $factory->get(Ids::BLACKSTONE_WALL, 0)); self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0)); self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0)); self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0)); @@ -638,6 +666,7 @@ final class VanillaBlocks{ self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); self::register("chemical_heat", $factory->get(Ids::CHEMICAL_HEAT, 0)); self::register("chest", $factory->get(Ids::CHEST, 0)); + self::register("chiseled_polished_blackstone", $factory->get(Ids::CHISELED_POLISHED_BLACKSTONE, 0)); self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 2)); self::register("chiseled_red_sandstone", $factory->get(Ids::CHISELED_RED_SANDSTONE, 0)); self::register("chiseled_sandstone", $factory->get(Ids::CHISELED_SANDSTONE, 0)); @@ -658,6 +687,7 @@ final class VanillaBlocks{ self::register("coral_block", $factory->get(Ids::CORAL_BLOCK, 4)); self::register("coral_fan", $factory->get(Ids::CORAL_FAN, 4)); self::register("cornflower", $factory->get(Ids::CORNFLOWER, 0)); + self::register("cracked_polished_blackstone_bricks", $factory->get(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, 0)); self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); self::register("cut_red_sandstone", $factory->get(Ids::CUT_RED_SANDSTONE, 0)); @@ -956,6 +986,17 @@ final class VanillaBlocks{ self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0)); self::register("polished_andesite_slab", $factory->get(Ids::POLISHED_ANDESITE_SLAB, 0)); self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 0)); + self::register("polished_basalt", $factory->get(Ids::POLISHED_BASALT, 2)); + self::register("polished_blackstone", $factory->get(Ids::POLISHED_BLACKSTONE, 0)); + self::register("polished_blackstone_brick_slab", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, 0)); + self::register("polished_blackstone_brick_stairs", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, 0)); + self::register("polished_blackstone_brick_wall", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_WALL, 0)); + self::register("polished_blackstone_bricks", $factory->get(Ids::POLISHED_BLACKSTONE_BRICKS, 0)); + self::register("polished_blackstone_button", $factory->get(Ids::POLISHED_BLACKSTONE_BUTTON, 0)); + self::register("polished_blackstone_pressure_plate", $factory->get(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, 0)); + self::register("polished_blackstone_slab", $factory->get(Ids::POLISHED_BLACKSTONE_SLAB, 0)); + self::register("polished_blackstone_stairs", $factory->get(Ids::POLISHED_BLACKSTONE_STAIRS, 0)); + self::register("polished_blackstone_wall", $factory->get(Ids::POLISHED_BLACKSTONE_WALL, 0)); self::register("polished_diorite", $factory->get(Ids::POLISHED_DIORITE, 0)); self::register("polished_diorite_slab", $factory->get(Ids::POLISHED_DIORITE_SLAB, 0)); self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 0)); @@ -1016,6 +1057,7 @@ final class VanillaBlocks{ self::register("shulker_box", $factory->get(Ids::SHULKER_BOX, 0)); self::register("slime", $factory->get(Ids::SLIME, 0)); self::register("smoker", $factory->get(Ids::SMOKER, 0)); + self::register("smooth_basalt", $factory->get(Ids::SMOOTH_BASALT, 0)); self::register("smooth_quartz", $factory->get(Ids::SMOOTH_QUARTZ, 0)); self::register("smooth_quartz_slab", $factory->get(Ids::SMOOTH_QUARTZ_SLAB, 0)); self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index dc2f77238..c9322c825 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -36,6 +36,7 @@ use pocketmine\block\BlockFactory; use pocketmine\block\BoneBlock; use pocketmine\block\BrewingStand; use pocketmine\block\BrownMushroomBlock; +use pocketmine\block\Button; use pocketmine\block\Cactus; use pocketmine\block\Cake; use pocketmine\block\Carpet; @@ -96,6 +97,7 @@ use pocketmine\block\RedstoneWire; use pocketmine\block\Sapling; use pocketmine\block\SeaPickle; use pocketmine\block\SimplePillar; +use pocketmine\block\SimplePressurePlate; use pocketmine\block\Skull; use pocketmine\block\Slab; use pocketmine\block\SnowLayer; @@ -190,6 +192,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map($block, fn() => Writer::create($id)); } + public function mapSlab(Slab $block, string $singleId, string $doubleId) : void{ + $this->map($block, fn(Slab $block) => Helper::encodeSlab($block, $singleId, $doubleId)); + } + public function mapStairs(Stair $block, string $id) : void{ $this->map($block, fn(Stair $block) => Helper::encodeStairs($block, Writer::create($id))); } @@ -259,6 +265,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); $this->map(Blocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); + $this->mapSimple(Blocks::AMETHYST(), Ids::AMETHYST_BLOCK); + $this->mapSimple(Blocks::ANCIENT_DEBRIS(), Ids::ANCIENT_DEBRIS); $this->map(Blocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); $this->map(Blocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); $this->map(Blocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); @@ -302,6 +310,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeFacingDirection($block->getFacing()); }); $this->mapSimple(Blocks::BARRIER(), Ids::BARRIER); + $this->map(Blocks::BASALT(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::BASALT) + ->writePillarAxis($block->getAxis()); + }); $this->mapSimple(Blocks::BEACON(), Ids::BEACON); $this->map(Blocks::BED(), function(Bed $block) : Writer{ return Writer::create(Ids::BED) @@ -338,6 +350,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->mapSimple(Blocks::BLACKSTONE(), Ids::BLACKSTONE); + $this->mapSlab(Blocks::BLACKSTONE_SLAB(), Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB); + $this->mapStairs(Blocks::BLACKSTONE_STAIRS(), Ids::BLACKSTONE_STAIRS); + $this->map(Blocks::BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::BLACKSTONE_WALL))); $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); $this->mapSimple(Blocks::BLUE_ICE(), Ids::BLUE_ICE); $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); @@ -382,6 +398,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CHEST) ->writeHorizontalFacing($block->getFacing()); }); + $this->mapSimple(Blocks::CHISELED_POLISHED_BLACKSTONE(), Ids::CHISELED_POLISHED_BLACKSTONE); $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); @@ -428,6 +445,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); }); $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); + $this->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS); $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); @@ -853,6 +871,21 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); $this->map(Blocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); $this->mapStairs(Blocks::POLISHED_ANDESITE_STAIRS(), Ids::POLISHED_ANDESITE_STAIRS); + $this->map(Blocks::POLISHED_BASALT(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::POLISHED_BASALT) + ->writePillarAxis($block->getAxis()); + }); + $this->mapSimple(Blocks::POLISHED_BLACKSTONE(), Ids::POLISHED_BLACKSTONE); + $this->mapSimple(Blocks::POLISHED_BLACKSTONE_BRICKS(), Ids::POLISHED_BLACKSTONE_BRICKS); + $this->mapSlab(Blocks::POLISHED_BLACKSTONE_BRICK_SLAB(), Ids::POLISHED_BLACKSTONE_BRICK_SLAB, Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB); + $this->mapStairs(Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS(), Ids::POLISHED_BLACKSTONE_BRICK_STAIRS); + $this->map(Blocks::POLISHED_BLACKSTONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_BRICK_WALL))); + $this->map(Blocks::POLISHED_BLACKSTONE_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::POLISHED_BLACKSTONE_BUTTON))); + $this->map(Blocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE))); + $this->mapSlab(Blocks::POLISHED_BLACKSTONE_SLAB(), Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB); + $this->mapStairs(Blocks::POLISHED_BLACKSTONE_STAIRS(), Ids::POLISHED_BLACKSTONE_STAIRS); + $this->map(Blocks::POLISHED_BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_WALL))); + $this->map(Blocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); $this->map(Blocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); $this->mapStairs(Blocks::POLISHED_DIORITE_STAIRS(), Ids::POLISHED_DIORITE_STAIRS); @@ -954,6 +987,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); $this->mapSimple(Blocks::SLIME(), Ids::SLIME); $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); + $this->mapSimple(Blocks::SMOOTH_BASALT(), Ids::SMOOTH_BASALT); $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); $this->map(Blocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); $this->mapStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), Ids::SMOOTH_QUARTZ_STAIRS); diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index d7fc9a28f..b072da122 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -185,7 +185,7 @@ final class BlockStateSerializerHelper{ ->writeInt(BlockStateNames::REDSTONE_SIGNAL, $block->isPressed() ? 15 : 0); } - private static function encodeSlab(Slab $block, string $singleId, string $doubleId) : BlockStateWriter{ + public static function encodeSlab(Slab $block, string $singleId, string $doubleId) : BlockStateWriter{ $slabType = $block->getSlabType(); return BlockStateWriter::create($slabType->equals(SlabType::DOUBLE()) ? $doubleId : $singleId) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 602802deb..8c9f26dda 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; +use pocketmine\block\Slab; use pocketmine\block\Stair; use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; @@ -71,6 +72,17 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->deserializeFuncs[$id] = $c; } + /** + * @phpstan-param \Closure() : Slab $getBlock + */ + public function mapSlab(string $singleId, string $doubleId, \Closure $getBlock) : void{ + $this->map($singleId, fn(Reader $in) : Slab => $getBlock()->setSlabType($in->readSlabPosition())); + $this->map($doubleId, function(Reader $in) use ($getBlock) : Slab{ + $in->ignored(StateNames::TOP_SLOT_BIT); + return $getBlock()->setSlabType(SlabType::DOUBLE()); + }); + } + /** * @phpstan-param \Closure() : Stair $getBlock */ @@ -93,6 +105,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); $this->map(Ids::AIR, fn() => Blocks::AIR()); + $this->map(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); + $this->map(Ids::ANCIENT_DEBRIS, fn() => Blocks::ANCIENT_DEBRIS()); $this->mapStairs(Ids::ANDESITE_STAIRS, fn() => Blocks::ANDESITE_STAIRS()); $this->map(Ids::ANVIL, function(Reader $in) : Block{ return Blocks::ANVIL() @@ -130,6 +144,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setOpen($in->readBool(StateNames::OPEN_BIT)); }); $this->map(Ids::BARRIER, fn() => Blocks::BARRIER()); + $this->map(Ids::BASALT, function(Reader $in){ + return Blocks::BASALT() + ->setAxis($in->readPillarAxis()); + }); $this->map(Ids::BEACON, fn() => Blocks::BEACON()); $this->map(Ids::BED, function(Reader $in) : Block{ return Blocks::BED() @@ -156,6 +174,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); + $this->map(Ids::BLACKSTONE, fn() => Blocks::BLACKSTONE()); + $this->mapSlab(Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::BLACKSTONE_SLAB()); + $this->mapStairs(Ids::BLACKSTONE_STAIRS, fn() => Blocks::BLACKSTONE_STAIRS()); + $this->map(Ids::BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::BLACKSTONE_WALL(), $in)); $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ return Blocks::BLAST_FURNACE() @@ -211,6 +233,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CHEST() ->setFacing($in->readHorizontalFacing()); }); + $this->map(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); $this->map(Ids::CLAY, fn() => Blocks::CLAY()); $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); @@ -264,6 +287,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType(CoralType::HORN()); }); + $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); @@ -712,6 +736,21 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); $this->mapStairs(Ids::POLISHED_ANDESITE_STAIRS, fn() => Blocks::POLISHED_ANDESITE_STAIRS()); + $this->map(Ids::POLISHED_BASALT, function(Reader $in) : Block{ + return Blocks::POLISHED_BASALT() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); + $this->map(Ids::POLISHED_BLACKSTONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::POLISHED_BLACKSTONE_BUTTON(), $in)); + $this->mapSlab(Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::POLISHED_BLACKSTONE_SLAB()); + $this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::POLISHED_BLACKSTONE_STAIRS, fn() => Blocks::POLISHED_BLACKSTONE_STAIRS()); + $this->map(Ids::POLISHED_BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_BLACKSTONE_WALL(), $in)); + $this->map(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); + $this->mapSlab(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_SLAB()); + $this->mapStairs(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS()); + $this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_BLACKSTONE_BRICK_WALL(), $in)); + $this->mapStairs(Ids::POLISHED_DIORITE_STAIRS, fn() => Blocks::POLISHED_DIORITE_STAIRS()); $this->mapStairs(Ids::POLISHED_GRANITE_STAIRS, fn() => Blocks::POLISHED_GRANITE_STAIRS()); $this->map(Ids::PORTAL, function(Reader $in) : Block{ @@ -884,6 +923,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); + $this->map(Ids::SMOOTH_BASALT, fn() => Blocks::SMOOTH_BASALT()); $this->mapStairs(Ids::SMOOTH_QUARTZ_STAIRS, fn() => Blocks::SMOOTH_QUARTZ_STAIRS()); $this->mapStairs(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_RED_SANDSTONE_STAIRS()); $this->mapStairs(Ids::SMOOTH_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_SANDSTONE_STAIRS()); @@ -1064,18 +1104,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::ALLOW, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::AMETHYST_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::AMETHYST_CLUSTER, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::ANCIENT_DEBRIS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::AZALEA, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); @@ -1093,12 +1127,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * update_bit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BASALT, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); //$this->map(Ids::BEE_NEST, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1284,9 +1312,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::CHISELED_NETHER_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CHISELED_POLISHED_BLACKSTONE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::CHORUS_FLOWER, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1362,9 +1387,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::CRACKED_NETHER_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::CRIMSON_BUTTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1918,89 +1940,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * hanging (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::POLISHED_BASALT, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_BUTTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::POLISHED_BLACKSTONE_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); //$this->map(Ids::POLISHED_DEEPSLATE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); @@ -2146,9 +2085,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::SMITHING_TABLE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::SMOOTH_BASALT, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::SOUL_CAMPFIRE, function(Reader $in) : Block{ /* * TODO: Un-implemented block diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 58e57a7c0..dd4ceb4f5 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -95,6 +95,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("air", fn() => Blocks::AIR()); $result->registerBlock("all_sided_mushroom_stem", fn() => Blocks::ALL_SIDED_MUSHROOM_STEM()); $result->registerBlock("allium", fn() => Blocks::ALLIUM()); + $result->registerBlock("amethyst_block", fn() => Blocks::AMETHYST()); + $result->registerBlock("ancient_debris", fn() => Blocks::ANCIENT_DEBRIS()); $result->registerBlock("andesite", fn() => Blocks::ANDESITE()); $result->registerBlock("andesite_slab", fn() => Blocks::ANDESITE_SLAB()); $result->registerBlock("andesite_stairs", fn() => Blocks::ANDESITE_STAIRS()); @@ -107,6 +109,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("banner", fn() => Blocks::BANNER()); $result->registerBlock("barrel", fn() => Blocks::BARREL()); $result->registerBlock("barrier", fn() => Blocks::BARRIER()); + $result->registerBlock("basalt", fn() => Blocks::BASALT()); $result->registerBlock("beacon", fn() => Blocks::BEACON()); $result->registerBlock("bed_block", fn() => Blocks::BED()); $result->registerBlock("bedrock", fn() => Blocks::BEDROCK()); @@ -132,6 +135,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(false)); $result->registerBlock("birch_wood_stairs", fn() => Blocks::BIRCH_STAIRS()); $result->registerBlock("birch_wooden_stairs", fn() => Blocks::BIRCH_STAIRS()); + $result->registerBlock("blackstone", fn() => Blocks::BLACKSTONE()); + $result->registerBlock("blackstone_slab", fn() => Blocks::BLACKSTONE_SLAB()); + $result->registerBlock("blackstone_stairs", fn() => Blocks::BLACKSTONE_STAIRS()); + $result->registerBlock("blackstone_wall", fn() => Blocks::BLACKSTONE_WALL()); $result->registerBlock("blast_furnace", fn() => Blocks::BLAST_FURNACE()); $result->registerBlock("blue_ice", fn() => Blocks::BLUE_ICE()); $result->registerBlock("blue_orchid", fn() => Blocks::BLUE_ORCHID()); @@ -161,6 +168,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("chemistry_table", fn() => Blocks::COMPOUND_CREATOR()); $result->registerBlock("chest", fn() => Blocks::CHEST()); $result->registerBlock("chipped_anvil", fn() => Blocks::ANVIL()->setDamage(1)); + $result->registerBlock("chiseled_polished_blackstone", fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); $result->registerBlock("chiseled_quartz", fn() => Blocks::CHISELED_QUARTZ()); $result->registerBlock("chiseled_red_sandstone", fn() => Blocks::CHISELED_RED_SANDSTONE()); $result->registerBlock("chiseled_sandstone", fn() => Blocks::CHISELED_SANDSTONE()); @@ -197,6 +205,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("coral_fan_hang2", fn() => Blocks::WALL_CORAL_FAN()->setCoralType(CoralType::BUBBLE())); $result->registerBlock("coral_fan_hang3", fn() => Blocks::WALL_CORAL_FAN()->setCoralType(CoralType::HORN())); $result->registerBlock("cornflower", fn() => Blocks::CORNFLOWER()); + $result->registerBlock("cracked_polished_blackstone_bricks", fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("cut_red_sandstone", fn() => Blocks::CUT_RED_SANDSTONE()); @@ -716,6 +725,17 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("polished_andesite", fn() => Blocks::POLISHED_ANDESITE()); $result->registerBlock("polished_andesite_slab", fn() => Blocks::POLISHED_ANDESITE_SLAB()); $result->registerBlock("polished_andesite_stairs", fn() => Blocks::POLISHED_ANDESITE_STAIRS()); + $result->registerBlock("polished_basalt", fn() => Blocks::POLISHED_BASALT()); + $result->registerBlock("polished_blackstone", fn() => Blocks::POLISHED_BLACKSTONE()); + $result->registerBlock("polished_blackstone_brick_slab", fn() => Blocks::POLISHED_BLACKSTONE_BRICK_SLAB()); + $result->registerBlock("polished_blackstone_brick_stairs", fn() => Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS()); + $result->registerBlock("polished_blackstone_brick_wall", fn() => Blocks::POLISHED_BLACKSTONE_BRICK_WALL()); + $result->registerBlock("polished_blackstone_bricks", fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); + $result->registerBlock("polished_blackstone_button", fn() => Blocks::POLISHED_BLACKSTONE_BUTTON()); + $result->registerBlock("polished_blackstone_pressure_plate", fn() => Blocks::POLISHED_BLACKSTONE_PRESSURE_PLATE()); + $result->registerBlock("polished_blackstone_slab", fn() => Blocks::POLISHED_BLACKSTONE_SLAB()); + $result->registerBlock("polished_blackstone_stairs", fn() => Blocks::POLISHED_BLACKSTONE_STAIRS()); + $result->registerBlock("polished_blackstone_wall", fn() => Blocks::POLISHED_BLACKSTONE_WALL()); $result->registerBlock("polished_diorite", fn() => Blocks::POLISHED_DIORITE()); $result->registerBlock("polished_diorite_slab", fn() => Blocks::POLISHED_DIORITE_SLAB()); $result->registerBlock("polished_diorite_stairs", fn() => Blocks::POLISHED_DIORITE_STAIRS()); @@ -800,6 +820,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("slime", fn() => Blocks::SLIME()); $result->registerBlock("slime_block", fn() => Blocks::SLIME()); $result->registerBlock("smoker", fn() => Blocks::SMOKER()); + $result->registerBlock("smooth_basalt", fn() => Blocks::SMOOTH_BASALT()); $result->registerBlock("smooth_quartz", fn() => Blocks::SMOOTH_QUARTZ()); $result->registerBlock("smooth_quartz_slab", fn() => Blocks::SMOOTH_QUARTZ_SLAB()); $result->registerBlock("smooth_quartz_stairs", fn() => Blocks::SMOOTH_QUARTZ_STAIRS()); From c4fc352db12e5b52e3efb7ba61488e89e387499f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 21:54:36 +0100 Subject: [PATCH 223/692] Remove empty line --- .../bedrock/block/convert/BlockObjectToBlockStateSerializer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index c9322c825..de8f40d6d 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -885,7 +885,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSlab(Blocks::POLISHED_BLACKSTONE_SLAB(), Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB); $this->mapStairs(Blocks::POLISHED_BLACKSTONE_STAIRS(), Ids::POLISHED_BLACKSTONE_STAIRS); $this->map(Blocks::POLISHED_BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_WALL))); - $this->map(Blocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); $this->map(Blocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); $this->mapStairs(Blocks::POLISHED_DIORITE_STAIRS(), Ids::POLISHED_DIORITE_STAIRS); From c84033213fee438e9c2270dcfc74f347259b2693 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 21:55:35 +0100 Subject: [PATCH 224/692] Updated BlockFactory consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index c4cff8e6e..28cc75775 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst"},"stateDataBits":9} \ No newline at end of file From 30149c6ed4aed9f017e8c12d21c22055946a1cf5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 22:06:47 +0100 Subject: [PATCH 225/692] wtf happened here ... --- src/block/BlockFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 22fbb8dc3..9f10ebdfb 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -844,7 +844,7 @@ class BlockFactory{ $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->register(new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); -+$this->register(new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); + $this->register(new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); $this->register(new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); $this->register(new Wall(new BID(Ids::BLACKSTONE_WALL), "Blackstone Wall", $blackstoneBreakInfo)); From 2a0fade893d200ea523823f866e4ff1869557bfc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 22:39:11 +0100 Subject: [PATCH 226/692] Implemented Light blocks --- src/block/BlockFactory.php | 5 ++ src/block/BlockTypeIds.php | 4 +- src/block/Light.php | 57 +++++++++++++++++++ src/block/VanillaBlocks.php | 2 + .../BlockObjectToBlockStateSerializer.php | 5 ++ .../BlockStateToBlockObjectDeserializer.php | 5 ++ src/item/StringToItemParser.php | 8 +++ .../block_factory_consistency_check.json | 2 +- 8 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 src/block/Light.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 9f10ebdfb..452de0bce 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -558,6 +558,7 @@ class BlockFactory{ BreakInfo::instant(), )); + $this->registerBlocksR13(); $this->registerBlocksR16(); $this->registerBlocksR17(); @@ -831,6 +832,10 @@ class BlockFactory{ $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); } + private function registerBlocksR13() : void{ + $this->register(new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); + } + private function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index d45af897e..ee232f860 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -585,5 +585,7 @@ final class BlockTypeIds{ public const POLISHED_BLACKSTONE_BRICK_STAIRS = 10558; public const POLISHED_BLACKSTONE_BRICK_WALL = 10559; public const CRACKED_POLISHED_BLACKSTONE_BRICKS = 10560; - public const FIRST_UNUSED_BLOCK_ID = 10561; + public const LIGHT = 10561; + + public const FIRST_UNUSED_BLOCK_ID = 10562; } diff --git a/src/block/Light.php b/src/block/Light.php new file mode 100644 index 000000000..21937a80f --- /dev/null +++ b/src/block/Light.php @@ -0,0 +1,57 @@ +level = $r->readBoundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL); + } + + protected function encodeType(BlockDataWriter $w) : void{ + $w->writeInt(4, $this->level); + } + + public function getLightLevel() : int{ return $this->level; } + + /** @return $this */ + public function setLightLevel(int $level) : self{ + if($level < self::MIN_LIGHT_LEVEL || $level > self::MAX_LIGHT_LEVEL){ + throw new \InvalidArgumentException("Light level must be in the range " . self::MIN_LIGHT_LEVEL . " ... " . self::MAX_LIGHT_LEVEL); + } + $this->level = $level; + return $this; + } + + public function canBeReplaced() : bool{ return true; } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 1524063c4..576999020 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -371,6 +371,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Lectern LECTERN() * @method static Opaque LEGACY_STONECUTTER() * @method static Lever LEVER() + * @method static Light LIGHT() * @method static DoublePlant LILAC() * @method static Flower LILY_OF_THE_VALLEY() * @method static WaterLily LILY_PAD() @@ -928,6 +929,7 @@ final class VanillaBlocks{ self::register("lectern", $factory->get(Ids::LECTERN, 0)); self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0)); self::register("lever", $factory->get(Ids::LEVER, 5)); + self::register("light", $factory->get(Ids::LIGHT, 15)); self::register("lilac", $factory->get(Ids::LILAC, 0)); self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0)); self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index de8f40d6d..7ac6b3dbd 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -77,6 +77,7 @@ use pocketmine\block\Lava; use pocketmine\block\Leaves; use pocketmine\block\Lectern; use pocketmine\block\Lever; +use pocketmine\block\Light; use pocketmine\block\LitPumpkin; use pocketmine\block\Log; use pocketmine\block\Loom; @@ -791,6 +792,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()), }); }); + $this->map(Blocks::LIGHT(), function(Light $block) : Writer{ + return Writer::create(Ids::LIGHT_BLOCK) + ->writeInt(StateNames::BLOCK_LIGHT_LEVEL, $block->getLightLevel()); + }); $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); $this->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8c9f26dda..94568e17c 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; +use pocketmine\block\Light; use pocketmine\block\Slab; use pocketmine\block\Stair; use pocketmine\block\SweetBerryBush; @@ -640,6 +641,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::LEVER_DIRECTION, $value), }); }); + $this->map(Ids::LIGHT_BLOCK, function(Reader $in) : Block{ + return Blocks::LIGHT() + ->setLightLevel($in->readBoundedInt(StateNames::BLOCK_LIGHT_LEVEL, Light::MIN_LIGHT_LEVEL, Light::MAX_LIGHT_LEVEL)); + }); $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index dd4ceb4f5..7df60292f 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; +use pocketmine\block\Light; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; @@ -70,6 +71,11 @@ final class StringToItemParser extends StringToTParser{ //wall and floor coral fans are the same item $result->registerBlock($prefix("coral_fan"), fn() => Blocks::CORAL_FAN()->setCoralType($coralType)); } + for($i = Light::MIN_LIGHT_LEVEL; $i < Light::MAX_LIGHT_LEVEL; $i++){ + //helper aliases, since we don't support passing data values in /give + $result->registerBlock("light_$i", fn() => Blocks::LIGHT()->setLightLevel($i)); + $result->registerBlock("light_block_$i", fn() => Blocks::LIGHT()->setLightLevel($i)); + } $result->registerBlock("acacia_button", fn() => Blocks::ACACIA_BUTTON()); $result->registerBlock("acacia_door", fn() => Blocks::ACACIA_DOOR()); @@ -640,6 +646,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("lectern", fn() => Blocks::LECTERN()); $result->registerBlock("legacy_stonecutter", fn() => Blocks::LEGACY_STONECUTTER()); $result->registerBlock("lever", fn() => Blocks::LEVER()); + $result->registerBlock("light", fn() => Blocks::LIGHT()); + $result->registerBlock("light_block", fn() => Blocks::LIGHT()); $result->registerBlock("light_weighted_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("lilac", fn() => Blocks::LILAC()); $result->registerBlock("lily_of_the_valley", fn() => Blocks::LILY_OF_THE_VALLEY()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 28cc75775..47a442eed 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst"},"stateDataBits":9} \ No newline at end of file From 0d0296d5357e5a31e21859bfd5f47fc8fc90d418 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 22:48:10 +0100 Subject: [PATCH 227/692] Light block brightness can be changed by right-clicking on it --- src/block/Light.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/block/Light.php b/src/block/Light.php index 21937a80f..6f2ccbf57 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -25,6 +25,9 @@ namespace pocketmine\block; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\item\Item; +use pocketmine\math\Vector3; +use pocketmine\player\Player; final class Light extends Flowable{ public const MIN_LIGHT_LEVEL = 0; @@ -54,4 +57,14 @@ final class Light extends Flowable{ } public function canBeReplaced() : bool{ return true; } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + $this->level = $this->level === self::MAX_LIGHT_LEVEL ? + self::MIN_LIGHT_LEVEL : + $this->level + 1; + + $this->position->getWorld()->setBlock($this->position, $this); + + return true; + } } From 0e0b858b696df4d9a4113e9ae121e73e63a4f285 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 23:17:10 +0100 Subject: [PATCH 228/692] Added raw copper, gold and iron blocks --- src/block/BlockFactory.php | 4 ++++ src/block/BlockTypeIds.php | 5 ++++- src/block/VanillaBlocks.php | 6 ++++++ .../block/convert/BlockObjectToBlockStateSerializer.php | 3 +++ .../block/convert/BlockStateToBlockObjectDeserializer.php | 3 +++ src/item/StringToItemParser.php | 3 +++ 6 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 452de0bce..1e022136d 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -874,6 +874,10 @@ class BlockFactory{ private function registerBlocksR17() : void{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); } /** diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index ee232f860..589d6634b 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -586,6 +586,9 @@ final class BlockTypeIds{ public const POLISHED_BLACKSTONE_BRICK_WALL = 10559; public const CRACKED_POLISHED_BLACKSTONE_BRICKS = 10560; public const LIGHT = 10561; + public const RAW_COPPER = 10562; + public const RAW_GOLD = 10563; + public const RAW_IRON = 10564; - public const FIRST_UNUSED_BLOCK_ID = 10562; + public const FIRST_UNUSED_BLOCK_ID = 10565; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 576999020..2b45c1d7d 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -469,6 +469,9 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab QUARTZ_SLAB() * @method static Stair QUARTZ_STAIRS() * @method static Rail RAIL() + * @method static Opaque RAW_COPPER() + * @method static Opaque RAW_GOLD() + * @method static Opaque RAW_IRON() * @method static Redstone REDSTONE() * @method static RedstoneComparator REDSTONE_COMPARATOR() * @method static RedstoneLamp REDSTONE_LAMP() @@ -1027,6 +1030,9 @@ final class VanillaBlocks{ self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); self::register("rail", $factory->get(Ids::RAIL, 0)); + self::register("raw_copper", $factory->get(Ids::RAW_COPPER, 0)); + self::register("raw_gold", $factory->get(Ids::RAW_GOLD, 0)); + self::register("raw_iron", $factory->get(Ids::RAW_IRON, 0)); self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0)); self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 10)); self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 7ac6b3dbd..6eb2a5d90 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -938,6 +938,9 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::RAIL) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); + $this->mapSimple(Blocks::RAW_COPPER(), Ids::RAW_COPPER_BLOCK); + $this->mapSimple(Blocks::RAW_GOLD(), Ids::RAW_GOLD_BLOCK); + $this->mapSimple(Blocks::RAW_IRON(), Ids::RAW_IRON_BLOCK); $this->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK); $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : Writer{ return Writer::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 94568e17c..4cd0e6967 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -824,6 +824,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::RAIL() ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 9)); }); + $this->map(Ids::RAW_COPPER_BLOCK, fn() => Blocks::RAW_COPPER()); + $this->map(Ids::RAW_GOLD_BLOCK, fn() => Blocks::RAW_GOLD()); + $this->map(Ids::RAW_IRON_BLOCK, fn() => Blocks::RAW_IRON()); $this->map(Ids::RED_FLOWER, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::FLOWER_TYPE)){ StringValues::FLOWER_TYPE_ALLIUM => Blocks::ALLIUM(), diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 7df60292f..5f1d7b2b4 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -781,6 +781,9 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("quartz_slab", fn() => Blocks::QUARTZ_SLAB()); $result->registerBlock("quartz_stairs", fn() => Blocks::QUARTZ_STAIRS()); $result->registerBlock("rail", fn() => Blocks::RAIL()); + $result->registerBlock("raw_copper_block", fn() => Blocks::RAW_COPPER()); + $result->registerBlock("raw_gold_block", fn() => Blocks::RAW_GOLD()); + $result->registerBlock("raw_iron_block", fn() => Blocks::RAW_IRON()); $result->registerBlock("red_flower", fn() => Blocks::POPPY()); $result->registerBlock("red_mushroom", fn() => Blocks::RED_MUSHROOM()); $result->registerBlock("red_mushroom_block", fn() => Blocks::RED_MUSHROOM_BLOCK()); From b818ed0d08586550ccbc9a0626346dde495ec630 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 23:17:46 +0100 Subject: [PATCH 229/692] Regenerated TODO list --- .../BlockStateToBlockObjectDeserializer.php | 236 ++++++++++++++---- 1 file changed, 183 insertions(+), 53 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 4cd0e6967..04717200c 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -1170,38 +1170,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * lit (ByteTag) = 0, 1 */ //}); - //$this->map(Ids::BLACKSTONE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::BLACKSTONE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BLACKSTONE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BLACKSTONE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::BLACKSTONE_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); //$this->map(Ids::BLUE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1680,6 +1648,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::FLOWERING_AZALEA, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); + //$this->map(Ids::FROG_SPAWN, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); //$this->map(Ids::GILDED_BLACKSTONE, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); @@ -1771,12 +1742,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 */ //}); - //$this->map(Ids::LIGHT_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * block_light_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); //$this->map(Ids::LIGHT_BLUE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1841,6 +1806,111 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * lit (ByteTag) = 0, 1 */ //}); + //$this->map(Ids::MANGROVE_BUTTON, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * button_pressed_bit (ByteTag) = 0, 1 + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::MANGROVE_DOOR, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * door_hinge_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + * upper_block_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_DOUBLE_SLAB, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_FENCE, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MANGROVE_FENCE_GATE, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * in_wall_bit (ByteTag) = 0, 1 + * open_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_LEAVES, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * persistent_bit (ByteTag) = 0, 1 + * update_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_LOG, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::MANGROVE_PLANKS, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MANGROVE_PRESSURE_PLATE, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::MANGROVE_PROPAGULE, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * hanging (ByteTag) = 0, 1 + * propagule_stage (IntTag) = 0, 1, 2, 3, 4 + */ + //}); + //$this->map(Ids::MANGROVE_ROOTS, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MANGROVE_SLAB, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_STAIRS, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::MANGROVE_STANDING_SIGN, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + */ + //}); + //$this->map(Ids::MANGROVE_TRAPDOOR, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * direction (IntTag) = 0, 1, 2, 3 + * open_bit (ByteTag) = 0, 1 + * upside_down_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MANGROVE_WALL_SIGN, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 + */ + //}); + //$this->map(Ids::MANGROVE_WOOD, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + * stripped_bit (ByteTag) = 0, 1 + */ + //}); //$this->map(Ids::MEDIUM_AMETHYST_BUD, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1853,13 +1923,45 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::MOSS_CARPET, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MOVINGBLOCK, function(Reader $in) : Block{ + //$this->map(Ids::MOVING_BLOCK, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MYSTERIOUS_FRAME, function(Reader $in) : Block{ + //$this->map(Ids::MUD, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::MYSTERIOUS_FRAME_SLOT, function(Reader $in) : Block{ + //$this->map(Ids::MUD_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MUD_BRICK_SLAB, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * top_slot_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MUD_BRICK_STAIRS, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * upside_down_bit (ByteTag) = 0, 1 + * weirdo_direction (IntTag) = 0, 1, 2, 3 + */ + //}); + //$this->map(Ids::MUD_BRICK_WALL, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * wall_connection_type_east (StringTag) = none, short, tall + * wall_connection_type_north (StringTag) = none, short, tall + * wall_connection_type_south (StringTag) = none, short, tall + * wall_connection_type_west (StringTag) = none, short, tall + * wall_post_bit (ByteTag) = 0, 1 + */ + //}); + //$this->map(Ids::MUD_BRICKS, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::MUDDY_MANGROVE_ROOTS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); //$this->map(Ids::NETHER_GOLD_ORE, function(Reader $in) : Block{ @@ -1878,6 +1980,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * powered_bit (ByteTag) = 0, 1 */ //}); + //$this->map(Ids::OCHRE_FROGLIGHT, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); //$this->map(Ids::ORANGE_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1916,6 +2024,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * top_slot_bit (ByteTag) = 0, 1 */ //}); + //$this->map(Ids::PACKED_MUD, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); + //$this->map(Ids::PEARLESCENT_FROGLIGHT, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); //$this->map(Ids::PINK_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -1935,7 +2052,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::PISTONARMCOLLISION, function(Reader $in) : Block{ + //$this->map(Ids::PISTON_ARM_COLLISION, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 @@ -1999,15 +2116,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::QUARTZ_BRICKS, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::RAW_COPPER_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::RAW_GOLD_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::RAW_IRON_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); //$this->map(Ids::RED_CANDLE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -2021,6 +2129,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * lit (ByteTag) = 0, 1 */ //}); + //$this->map(Ids::REINFORCED_DEEPSLATE, function(Reader $in) : Block{ + /* TODO: Un-implemented block */ + //}); //$this->map(Ids::REPEATING_COMMAND_BLOCK, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -2060,6 +2171,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize /* * TODO: Un-implemented block * active (ByteTag) = 0, 1 + * can_summon (ByteTag) = 0, 1 */ //}); //$this->map(Ids::SCULK_VEIN, function(Reader $in) : Block{ @@ -2124,13 +2236,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::SPORE_BLOSSOM, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); - //$this->map(Ids::STICKYPISTONARMCOLLISION, function(Reader $in) : Block{ + //$this->map(Ids::STICKY_PISTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 */ //}); - //$this->map(Ids::STICKY_PISTON, function(Reader $in) : Block{ + //$this->map(Ids::STICKY_PISTON_ARM_COLLISION, function(Reader $in) : Block{ /* * TODO: Un-implemented block * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 @@ -2148,6 +2260,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize * pillar_axis (StringTag) = x, y, z */ //}); + //$this->map(Ids::STRIPPED_MANGROVE_LOG, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); + //$this->map(Ids::STRIPPED_MANGROVE_WOOD, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); //$this->map(Ids::STRIPPED_WARPED_HYPHAE, function(Reader $in) : Block{ /* * TODO: Un-implemented block @@ -2197,6 +2321,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize //$this->map(Ids::UNKNOWN, function(Reader $in) : Block{ /* TODO: Un-implemented block */ //}); + //$this->map(Ids::VERDANT_FROGLIGHT, function(Reader $in) : Block{ + /* + * TODO: Un-implemented block + * pillar_axis (StringTag) = x, y, z + */ + //}); //$this->map(Ids::WARPED_BUTTON, function(Reader $in) : Block{ /* * TODO: Un-implemented block From 3f937605ac89ca45fae04b90bcb0a14f0b296c91 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Jul 2022 23:54:51 +0100 Subject: [PATCH 230/692] Added calcite --- src/block/BlockFactory.php | 2 ++ src/block/BlockTypeIds.php | 3 ++- src/block/VanillaBlocks.php | 2 ++ .../block/convert/BlockObjectToBlockStateSerializer.php | 1 + .../block/convert/BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 1e022136d..1a88083b2 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -875,6 +875,8 @@ class BlockFactory{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 589d6634b..eddb34a55 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -589,6 +589,7 @@ final class BlockTypeIds{ public const RAW_COPPER = 10562; public const RAW_GOLD = 10563; public const RAW_IRON = 10564; + public const CALCITE = 10565; - public const FIRST_UNUSED_BLOCK_ID = 10565; + public const FIRST_UNUSED_BLOCK_ID = 10566; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 2b45c1d7d..509c2a5eb 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -104,6 +104,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static BrownMushroomBlock BROWN_MUSHROOM_BLOCK() * @method static Cactus CACTUS() * @method static Cake CAKE() + * @method static Opaque CALCITE() * @method static Carpet CARPET() * @method static Carrot CARROTS() * @method static CarvedPumpkin CARVED_PUMPKIN() @@ -665,6 +666,7 @@ final class VanillaBlocks{ self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10)); self::register("cactus", $factory->get(Ids::CACTUS, 0)); self::register("cake", $factory->get(Ids::CAKE, 0)); + self::register("calcite", $factory->get(Ids::CALCITE, 0)); self::register("carpet", $factory->get(Ids::CARPET, 14)); self::register("carrots", $factory->get(Ids::CARROTS, 0)); self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 6eb2a5d90..eb78550ef 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -385,6 +385,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CAKE) ->writeInt(StateNames::BITE_COUNTER, $block->getBites()); }); + $this->mapSimple(Blocks::CALCITE(), Ids::CALCITE); $this->map(Blocks::CARPET(), function(Carpet $block) : Writer{ return Writer::create(Ids::CARPET) ->writeColor($block->getColor()); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 04717200c..dc20af369 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -211,6 +211,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CAKE() ->setBites($in->readBoundedInt(StateNames::BITE_COUNTER, 0, 6)); }); + $this->map(Ids::CALCITE, fn() => Blocks::CALCITE()); $this->map(Ids::CARPET, function(Reader $in) : Block{ return Blocks::CARPET() ->setColor($in->readColor()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 5f1d7b2b4..d2c1385e5 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -166,6 +166,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cactus", fn() => Blocks::CACTUS()); $result->registerBlock("cake", fn() => Blocks::CAKE()); $result->registerBlock("cake_block", fn() => Blocks::CAKE()); + $result->registerBlock("calcite", fn() => Blocks::CALCITE()); $result->registerBlock("carpet", fn() => Blocks::CARPET()); $result->registerBlock("carrot_block", fn() => Blocks::CARROTS()); $result->registerBlock("carrots", fn() => Blocks::CARROTS()); From 017ebb9b47a343449d082e07c0562e2b2b7bfd39 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 00:02:03 +0100 Subject: [PATCH 231/692] Updated consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 47a442eed..ec2e587d6 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block"},"stateDataBits":9} \ No newline at end of file From db9c7de35c4f87ab6800407834bb19f0a3ef9b7a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 00:47:42 +0100 Subject: [PATCH 232/692] Remove obsolete shim items for Bed and Skull now that the colour and skull type are included in the block type data, it's no longer necessary to maintain shim items to retain this information in the item data. --- src/block/Bed.php | 6 +-- src/block/Skull.php | 6 --- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 9 ++-- src/item/Bed.php | 62 ---------------------- src/item/ItemFactory.php | 6 --- src/item/ItemTypeIds.php | 4 +- src/item/Skull.php | 57 -------------------- src/item/StringToItemParser.php | 18 +++---- src/item/VanillaItems.php | 4 -- 10 files changed, 18 insertions(+), 156 deletions(-) delete mode 100644 src/item/Bed.php delete mode 100644 src/item/Skull.php diff --git a/src/block/Bed.php b/src/block/Bed.php index e58163c05..81cbd73cc 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -33,7 +33,6 @@ use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; -use pocketmine\item\VanillaItems; use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -220,8 +219,5 @@ class Bed extends Transparent{ return !$block->getSupportType(Facing::UP)->equals(SupportType::NONE()); } - public function asItem() : Item{ - //TODO: we might be able to get rid of this - return VanillaItems::BED()->setColor($this->color); - } + public function getMaxStackSize() : int{ return 1; } } diff --git a/src/block/Skull.php b/src/block/Skull.php index 140c71574..26354c8cd 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -31,7 +31,6 @@ use pocketmine\data\runtime\block\BlockDataReaderHelper; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\data\runtime\block\BlockDataWriterHelper; use pocketmine\item\Item; -use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -153,9 +152,4 @@ class Skull extends Flowable{ } return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - - public function asItem() : Item{ - //TODO: we might be able to get rid of this - return VanillaItems::MOB_HEAD()->setSkullType($this->skullType); - } } diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index b48da118d..5008b3345 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -536,7 +536,7 @@ final class ItemDeserializer{ }catch(\InvalidArgumentException $e){ throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); } - return Items::MOB_HEAD()->setSkullType($skullType); + return Blocks::MOB_HEAD()->setSkullType($skullType)->asItem(); }); //TODO: minecraft:skull_banner_pattern $this->map(Ids::SLIME_BALL, fn() => Items::SLIMEBALL()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index eec454f5a..47c84f6e7 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -23,7 +23,9 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; +use pocketmine\block\Bed; use pocketmine\block\Block; +use pocketmine\block\Skull; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateSerializeException; @@ -34,13 +36,11 @@ use pocketmine\data\bedrock\item\ItemTypeIds as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\item\Banner; -use pocketmine\item\Bed; use pocketmine\item\CoralFan; use pocketmine\item\Dye; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\Potion; -use pocketmine\item\Skull; use pocketmine\item\SplashPotion; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; @@ -240,6 +240,9 @@ final class ItemSerializer{ $this->mapBlock(Blocks::REDSTONE_REPEATER(), self::id(Ids::REPEATER)); $this->mapBlock(Blocks::SPRUCE_DOOR(), self::id(Ids::SPRUCE_DOOR)); $this->mapBlock(Blocks::SUGARCANE(), self::id(Ids::SUGAR_CANE)); + + $this->mapBlock(Blocks::BED(), fn(Bed $block) => new Data(Ids::BED, DyeColorIdMap::getInstance()->toId($block->getColor()))); + $this->mapBlock(Blocks::MOB_HEAD(), fn(Skull $block) => new Data(Ids::SKULL, $block->getSkullType()->getMagicNumber())); } private function registerSerializers() : void{ @@ -256,7 +259,6 @@ final class ItemSerializer{ $this->map(Items::ARROW(), self::id(Ids::ARROW)); $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); - $this->map(Items::BED(), fn(Bed $item) => new Data(Ids::BED, DyeColorIdMap::getInstance()->toId($item->getColor()))); $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); $this->map(Items::BEETROOT_SEEDS(), self::id(Ids::BEETROOT_SEEDS)); $this->map(Items::BEETROOT_SOUP(), self::id(Ids::BEETROOT_SOUP)); @@ -419,7 +421,6 @@ final class ItemSerializer{ $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); $this->map(Items::MINECART(), self::id(Ids::MINECART)); - $this->map(Items::MOB_HEAD(), fn(Skull $item) => new Data(Ids::SKULL, $item->getSkullType()->getMagicNumber())); $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); diff --git a/src/item/Bed.php b/src/item/Bed.php deleted file mode 100644 index d2dca80cf..000000000 --- a/src/item/Bed.php +++ /dev/null @@ -1,62 +0,0 @@ -color = DyeColor::WHITE(); - parent::__construct($identifier, $name); - } - - public function getMeta() : int{ - return DyeColorIdMap::getInstance()->toId($this->color); - } - - public function getColor() : DyeColor{ - return $this->color; - } - - /** - * @return $this - */ - public function setColor(DyeColor $color) : self{ - $this->color = $color; - return $this; - } - - public function getBlock(?int $clickedFace = null) : Block{ - return VanillaBlocks::BED()->setColor($this->color); - } - - public function getMaxStackSize() : int{ - return 1; - } -} diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index c297d9c53..6804356ae 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -27,7 +27,6 @@ use pocketmine\block\BlockFactory; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\RecordType; -use pocketmine\block\utils\SkullType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; @@ -268,15 +267,10 @@ class ItemFactory{ $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK, LegacyIds::WRITABLE_BOOK, 0), "Book & Quill")); $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, LegacyIds::WRITTEN_BOOK, 0), "Written Book")); - foreach(SkullType::getAll() as $skullType){ - $this->register((new Skull(new IID(Ids::MOB_HEAD, LegacyIds::SKULL, 0), "Mob Head"))->setSkullType($skullType)); - } - foreach(DyeColor::getAll() as $color){ //TODO: use colour object directly //TODO: add interface to dye-colour objects $this->register((new Dye(new IID(Ids::DYE, LegacyIds::DYE, 0), "Dye"))->setColor($color)); - $this->register((new Bed(new IID(Ids::BED, LegacyIds::BED, 0), "Bed"))->setColor($color)); $this->register((new Banner( new IID(Ids::BANNER, LegacyIds::BANNER, 0), Blocks::BANNER(), diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index 043414fd9..d60371ec5 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -43,7 +43,7 @@ final class ItemTypeIds{ public const BAKED_POTATO = 20004; public const BAMBOO = 20005; public const BANNER = 20006; - public const BED = 20007; + public const BEETROOT = 20008; public const BEETROOT_SEEDS = 20009; public const BEETROOT_SOUP = 20010; @@ -189,7 +189,7 @@ final class ItemTypeIds{ public const MELON_SEEDS = 20150; public const MILK_BUCKET = 20151; public const MINECART = 20152; - public const MOB_HEAD = 20153; + public const MUSHROOM_STEW = 20154; public const NAUTILUS_SHELL = 20155; public const NETHER_BRICK = 20156; diff --git a/src/item/Skull.php b/src/item/Skull.php deleted file mode 100644 index c95746515..000000000 --- a/src/item/Skull.php +++ /dev/null @@ -1,57 +0,0 @@ -skullType = SkullType::SKELETON(); - parent::__construct($identifier, $name); - } - - public function getMeta() : int{ - return $this->skullType->getMagicNumber(); - } - - public function getBlock(?int $clickedFace = null) : Block{ - //TODO: we ought to be able to represent this as a regular ItemBlock - //but that's not currently possible because the skulltype isn't part of the internal block runtimeID - return VanillaBlocks::MOB_HEAD()->setSkullType($this->skullType); - } - - public function getSkullType() : SkullType{ - return $this->skullType; - } - - /** @return $this */ - public function setSkullType(SkullType $skullType) : self{ - $this->skullType = $skullType; - return $this; - } -} diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index d2c1385e5..a6a1d33bf 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -117,6 +117,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("barrier", fn() => Blocks::BARRIER()); $result->registerBlock("basalt", fn() => Blocks::BASALT()); $result->registerBlock("beacon", fn() => Blocks::BEACON()); + $result->registerBlock("bed", fn() => Blocks::BED()); $result->registerBlock("bed_block", fn() => Blocks::BED()); $result->registerBlock("bedrock", fn() => Blocks::BEDROCK()); $result->registerBlock("beetroot_block", fn() => Blocks::BEETROOTS()); @@ -215,6 +216,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cracked_polished_blackstone_bricks", fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); + $result->registerBlock("creeper_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::CREEPER())); $result->registerBlock("cut_red_sandstone", fn() => Blocks::CUT_RED_SANDSTONE()); $result->registerBlock("cut_red_sandstone_slab", fn() => Blocks::CUT_RED_SANDSTONE_SLAB()); $result->registerBlock("cut_sandstone", fn() => Blocks::CUT_SANDSTONE()); @@ -275,6 +277,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("double_wooden_slab", fn() => Blocks::OAK_SLAB()->setSlabType(SlabType::DOUBLE())); $result->registerBlock("double_wooden_slabs", fn() => Blocks::OAK_SLAB()->setSlabType(SlabType::DOUBLE())); $result->registerBlock("dragon_egg", fn() => Blocks::DRAGON_EGG()); + $result->registerBlock("dragon_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::DRAGON())); $result->registerBlock("dried_kelp_block", fn() => Blocks::DRIED_KELP()); $result->registerBlock("dyed_shulker_box", fn() => Blocks::DYED_SHULKER_BOX()); $result->registerBlock("element_0", fn() => Blocks::ELEMENT_ZERO()); @@ -667,6 +670,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER()); $result->registerBlock("melon_block", fn() => Blocks::MELON()); $result->registerBlock("melon_stem", fn() => Blocks::MELON_STEM()); + $result->registerBlock("mob_head", fn() => Blocks::MOB_HEAD()); $result->registerBlock("mob_head_block", fn() => Blocks::MOB_HEAD()); $result->registerBlock("mob_spawner", fn() => Blocks::MONSTER_SPAWNER()); $result->registerBlock("monster_egg", fn() => Blocks::INFESTED_STONE()); @@ -730,6 +734,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("pink_tulip", fn() => Blocks::PINK_TULIP()); $result->registerBlock("plank", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("planks", fn() => Blocks::OAK_PLANKS()); + $result->registerBlock("player_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::PLAYER())); $result->registerBlock("podzol", fn() => Blocks::PODZOL()); $result->registerBlock("polished_andesite", fn() => Blocks::POLISHED_ANDESITE()); $result->registerBlock("polished_andesite_slab", fn() => Blocks::POLISHED_ANDESITE_SLAB()); @@ -826,6 +831,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("sign_post", fn() => Blocks::OAK_SIGN()); + $result->registerBlock("skeleton_skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::SKELETON())); + $result->registerBlock("skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::SKELETON())); $result->registerBlock("skull_block", fn() => Blocks::MOB_HEAD()); $result->registerBlock("slab", fn() => Blocks::SMOOTH_STONE_SLAB()); $result->registerBlock("slabs", fn() => Blocks::SMOOTH_STONE_SLAB()); @@ -946,6 +953,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); + $result->registerBlock("wither_skeleton_skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::WITHER_SKELETON())); $result->registerBlock("wood", fn() => Blocks::OAK_LOG()->setStripped(false)); $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("wood_door_block", fn() => Blocks::OAK_DOOR()); @@ -965,6 +973,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("wool", fn() => Blocks::WOOL()); $result->registerBlock("workbench", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("yellow_flower", fn() => Blocks::DANDELION()); + $result->registerBlock("zombie_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); $result->register("acacia_boat", fn() => Items::ACACIA_BOAT()); $result->register("apple", fn() => Items::APPLE()); @@ -975,7 +984,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("awkward_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::AWKWARD())); $result->register("baked_potato", fn() => Items::BAKED_POTATO()); $result->register("baked_potatoes", fn() => Items::BAKED_POTATO()); - $result->register("bed", fn() => Items::BED()); $result->register("beef", fn() => Items::RAW_BEEF()); $result->register("beetroot", fn() => Items::BEETROOT()); $result->register("beetroot_seed", fn() => Items::BEETROOT_SEEDS()); @@ -1065,7 +1073,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("cooked_rabbit", fn() => Items::COOKED_RABBIT()); $result->register("cooked_salmon", fn() => Items::COOKED_SALMON()); $result->register("cookie", fn() => Items::COOKIE()); - $result->register("creeper_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::CREEPER())); $result->register("dark_oak_boat", fn() => Items::DARK_OAK_BOAT()); $result->register("diamond", fn() => Items::DIAMOND()); $result->register("diamond_axe", fn() => Items::DIAMOND_AXE()); @@ -1078,7 +1085,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("diamond_shovel", fn() => Items::DIAMOND_SHOVEL()); $result->register("diamond_sword", fn() => Items::DIAMOND_SWORD()); $result->register("dragon_breath", fn() => Items::DRAGON_BREATH()); - $result->register("dragon_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::DRAGON())); $result->register("dried_kelp", fn() => Items::DRIED_KELP()); $result->register("dye", fn() => Items::INK_SAC()); $result->register("egg", fn() => Items::EGG()); @@ -1190,7 +1196,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("melon_slice", fn() => Items::MELON()); $result->register("milk_bucket", fn() => Items::MILK_BUCKET()); $result->register("minecart", fn() => Items::MINECART()); - $result->register("mob_head", fn() => Items::MOB_HEAD()); $result->register("mundane_potion", fn() => Items::POTION()->setType(PotionType::MUNDANE())); $result->register("mundane_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::MUNDANE())); $result->register("mushroom_stew", fn() => Items::MUSHROOM_STEW()); @@ -1210,7 +1215,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("oak_boat", fn() => Items::OAK_BOAT()); $result->register("painting", fn() => Items::PAINTING()); $result->register("paper", fn() => Items::PAPER()); - $result->register("player_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::PLAYER())); $result->register("poison_potion", fn() => Items::POTION()->setType(PotionType::POISON())); $result->register("poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::POISON())); $result->register("poisonous_potato", fn() => Items::POISONOUS_POTATO()); @@ -1259,8 +1263,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("seeds", fn() => Items::WHEAT_SEEDS()); $result->register("shears", fn() => Items::SHEARS()); $result->register("shulker_shell", fn() => Items::SHULKER_SHELL()); - $result->register("skeleton_skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::SKELETON())); - $result->register("skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::SKELETON())); $result->register("slime_ball", fn() => Items::SLIMEBALL()); $result->register("slimeball", fn() => Items::SLIMEBALL()); $result->register("slow_falling_potion", fn() => Items::POTION()->setType(PotionType::SLOW_FALLING())); @@ -1321,7 +1323,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("wheat", fn() => Items::WHEAT()); $result->register("wheat_seeds", fn() => Items::WHEAT_SEEDS()); $result->register("wither_potion", fn() => Items::POTION()->setType(PotionType::WITHER())); - $result->register("wither_skeleton_skull", fn() => Items::MOB_HEAD()->setSkullType(SkullType::WITHER_SKELETON())); $result->register("wither_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::WITHER())); $result->register("wooden_axe", fn() => Items::WOODEN_AXE()); $result->register("wooden_hoe", fn() => Items::WOODEN_HOE()); @@ -1330,7 +1331,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("wooden_sword", fn() => Items::WOODEN_SWORD()); $result->register("writable_book", fn() => Items::WRITABLE_BOOK()); $result->register("written_book", fn() => Items::WRITTEN_BOOK()); - $result->register("zombie_head", fn() => Items::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); $result->register("zombie_spawn_egg", fn() => Items::ZOMBIE_SPAWN_EGG()); return $result; diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 955de8a61..6daf64ff8 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -40,7 +40,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static BakedPotato BAKED_POTATO() * @method static Bamboo BAMBOO() * @method static Banner BANNER() - * @method static Bed BED() * @method static Beetroot BEETROOT() * @method static BeetrootSeeds BEETROOT_SEEDS() * @method static BeetrootSoup BEETROOT_SOUP() @@ -186,7 +185,6 @@ use pocketmine\utils\CloningRegistryTrait; * @method static MelonSeeds MELON_SEEDS() * @method static MilkBucket MILK_BUCKET() * @method static Minecart MINECART() - * @method static Skull MOB_HEAD() * @method static MushroomStew MUSHROOM_STEW() * @method static Item NAUTILUS_SHELL() * @method static Item NETHER_BRICK() @@ -294,7 +292,6 @@ final class VanillaItems{ self::register("baked_potato", $factory->get(Ids::BAKED_POTATO)); self::register("bamboo", $factory->get(Ids::BAMBOO)); self::register("banner", $factory->get(Ids::BANNER)); - self::register("bed", $factory->get(Ids::BED)); self::register("beetroot", $factory->get(Ids::BEETROOT)); self::register("beetroot_seeds", $factory->get(Ids::BEETROOT_SEEDS)); self::register("beetroot_soup", $factory->get(Ids::BEETROOT_SOUP)); @@ -440,7 +437,6 @@ final class VanillaItems{ self::register("melon_seeds", $factory->get(Ids::MELON_SEEDS)); self::register("milk_bucket", $factory->get(Ids::BUCKET, 1)); self::register("minecart", $factory->get(Ids::MINECART)); - self::register("mob_head", $factory->get(Ids::MOB_HEAD)); self::register("mushroom_stew", $factory->get(Ids::MUSHROOM_STEW)); self::register("nautilus_shell", $factory->get(Ids::NAUTILUS_SHELL)); self::register("nether_brick", $factory->get(Ids::NETHERBRICK)); From c7ba791ff89d479f839ea06e269ff2654c94cfd2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 00:49:57 +0100 Subject: [PATCH 233/692] Block: remove obsolete note from Block::isSameType() --- src/block/Block.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 0044fb5a7..baad10b8f 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -216,9 +216,6 @@ class Block{ /** * Returns whether the given block has an equivalent type to this one. This compares the type IDs. - * - * Note: This ignores additional IDs used to represent additional states. This means that, for example, a lit - * furnace and unlit furnace are considered the same type. */ public function isSameType(Block $other) : bool{ return $this->getTypeId() === $other->getTypeId(); From 89632f35149229d050919048de703454d44256c3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 01:43:27 +0100 Subject: [PATCH 234/692] Added deepslate, cobbled/tiles/bricks walls/slabs/stairs/cubes --- src/block/BlockFactory.php | 27 +++++++++++++++++ src/block/BlockTypeIds.php | 17 ++++++++++- src/block/VanillaBlocks.php | 30 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 18 +++++++++++ .../BlockStateToBlockObjectDeserializer.php | 18 +++++++++++ src/item/StringToItemParser.php | 15 ++++++++++ .../block_factory_consistency_check.json | 2 +- 7 files changed, 125 insertions(+), 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 1a88083b2..ec5c0f4ce 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -880,6 +880,33 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + + //TODO: check blast resistance + $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); + + //TODO: check blast resistance + $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); + $this->register(new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); + $this->register(new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); + + //TODO: check blast resistance + $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); + $this->register(new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); + $this->register(new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); + $this->register(new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); + $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); + + //TODO: check blast resistance + $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); + $this->register(new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); + $this->register(new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); + $this->register(new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); } /** diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index eddb34a55..4eb4c07b8 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -590,6 +590,21 @@ final class BlockTypeIds{ public const RAW_GOLD = 10563; public const RAW_IRON = 10564; public const CALCITE = 10565; + public const DEEPSLATE = 10566; + public const DEEPSLATE_BRICKS = 10567; + public const DEEPSLATE_BRICK_SLAB = 10568; + public const DEEPSLATE_BRICK_STAIRS = 10569; + public const DEEPSLATE_BRICK_WALL = 10570; + public const CRACKED_DEEPSLATE_BRICKS = 10571; + public const DEEPSLATE_TILES = 10572; + public const DEEPSLATE_TILE_SLAB = 10573; + public const DEEPSLATE_TILE_STAIRS = 10574; + public const DEEPSLATE_TILE_WALL = 10575; + public const CRACKED_DEEPSLATE_TILES = 10576; + public const COBBLED_DEEPSLATE = 10577; + public const COBBLED_DEEPSLATE_SLAB = 10578; + public const COBBLED_DEEPSLATE_STAIRS = 10579; + public const COBBLED_DEEPSLATE_WALL = 10580; - public const FIRST_UNUSED_BLOCK_ID = 10566; + public const FIRST_UNUSED_BLOCK_ID = 10581; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 509c2a5eb..fa748d393 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -118,6 +118,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Clay CLAY() * @method static Coal COAL() * @method static CoalOre COAL_ORE() + * @method static Opaque COBBLED_DEEPSLATE() + * @method static Slab COBBLED_DEEPSLATE_SLAB() + * @method static Stair COBBLED_DEEPSLATE_STAIRS() + * @method static Wall COBBLED_DEEPSLATE_WALL() * @method static Opaque COBBLESTONE() * @method static Slab COBBLESTONE_SLAB() * @method static Stair COBBLESTONE_STAIRS() @@ -131,6 +135,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CoralBlock CORAL_BLOCK() * @method static FloorCoralFan CORAL_FAN() * @method static Flower CORNFLOWER() + * @method static Opaque CRACKED_DEEPSLATE_BRICKS() + * @method static Opaque CRACKED_DEEPSLATE_TILES() * @method static Opaque CRACKED_POLISHED_BLACKSTONE_BRICKS() * @method static Opaque CRACKED_STONE_BRICKS() * @method static CraftingTable CRAFTING_TABLE() @@ -159,6 +165,15 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Stair DARK_PRISMARINE_STAIRS() * @method static DaylightSensor DAYLIGHT_SENSOR() * @method static DeadBush DEAD_BUSH() + * @method static SimplePillar DEEPSLATE() + * @method static Opaque DEEPSLATE_BRICKS() + * @method static Slab DEEPSLATE_BRICK_SLAB() + * @method static Stair DEEPSLATE_BRICK_STAIRS() + * @method static Wall DEEPSLATE_BRICK_WALL() + * @method static Opaque DEEPSLATE_TILES() + * @method static Slab DEEPSLATE_TILE_SLAB() + * @method static Stair DEEPSLATE_TILE_STAIRS() + * @method static Wall DEEPSLATE_TILE_WALL() * @method static DetectorRail DETECTOR_RAIL() * @method static Opaque DIAMOND() * @method static DiamondOre DIAMOND_ORE() @@ -680,6 +695,10 @@ final class VanillaBlocks{ self::register("clay", $factory->get(Ids::CLAY, 0)); self::register("coal", $factory->get(Ids::COAL, 0)); self::register("coal_ore", $factory->get(Ids::COAL_ORE, 0)); + self::register("cobbled_deepslate", $factory->get(Ids::COBBLED_DEEPSLATE, 0)); + self::register("cobbled_deepslate_slab", $factory->get(Ids::COBBLED_DEEPSLATE_SLAB, 0)); + self::register("cobbled_deepslate_stairs", $factory->get(Ids::COBBLED_DEEPSLATE_STAIRS, 0)); + self::register("cobbled_deepslate_wall", $factory->get(Ids::COBBLED_DEEPSLATE_WALL, 0)); self::register("cobblestone", $factory->get(Ids::COBBLESTONE, 0)); self::register("cobblestone_slab", $factory->get(Ids::COBBLESTONE_SLAB, 0)); self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 0)); @@ -693,6 +712,8 @@ final class VanillaBlocks{ self::register("coral_block", $factory->get(Ids::CORAL_BLOCK, 4)); self::register("coral_fan", $factory->get(Ids::CORAL_FAN, 4)); self::register("cornflower", $factory->get(Ids::CORNFLOWER, 0)); + self::register("cracked_deepslate_bricks", $factory->get(Ids::CRACKED_DEEPSLATE_BRICKS, 0)); + self::register("cracked_deepslate_tiles", $factory->get(Ids::CRACKED_DEEPSLATE_TILES, 0)); self::register("cracked_polished_blackstone_bricks", $factory->get(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, 0)); self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); @@ -721,6 +742,15 @@ final class VanillaBlocks{ self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0)); self::register("daylight_sensor", $factory->get(Ids::DAYLIGHT_SENSOR, 0)); self::register("dead_bush", $factory->get(Ids::DEAD_BUSH, 0)); + self::register("deepslate", $factory->get(Ids::DEEPSLATE, 2)); + self::register("deepslate_brick_slab", $factory->get(Ids::DEEPSLATE_BRICK_SLAB, 0)); + self::register("deepslate_brick_stairs", $factory->get(Ids::DEEPSLATE_BRICK_STAIRS, 0)); + self::register("deepslate_brick_wall", $factory->get(Ids::DEEPSLATE_BRICK_WALL, 0)); + self::register("deepslate_bricks", $factory->get(Ids::DEEPSLATE_BRICKS, 0)); + self::register("deepslate_tile_slab", $factory->get(Ids::DEEPSLATE_TILE_SLAB, 0)); + self::register("deepslate_tile_stairs", $factory->get(Ids::DEEPSLATE_TILE_STAIRS, 0)); + self::register("deepslate_tile_wall", $factory->get(Ids::DEEPSLATE_TILE_WALL, 0)); + self::register("deepslate_tiles", $factory->get(Ids::DEEPSLATE_TILES, 0)); self::register("detector_rail", $factory->get(Ids::DETECTOR_RAIL, 0)); self::register("diamond", $factory->get(Ids::DIAMOND, 0)); self::register("diamond_ore", $factory->get(Ids::DIAMOND_ORE, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index eb78550ef..1ad041277 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -408,6 +408,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::CLAY(), Ids::CLAY); $this->mapSimple(Blocks::COAL(), Ids::COAL_BLOCK); $this->mapSimple(Blocks::COAL_ORE(), Ids::COAL_ORE); + $this->mapSimple(Blocks::COBBLED_DEEPSLATE(), Ids::COBBLED_DEEPSLATE); + $this->mapSlab(Blocks::COBBLED_DEEPSLATE_SLAB(), Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB); + $this->mapStairs(Blocks::COBBLED_DEEPSLATE_STAIRS(), Ids::COBBLED_DEEPSLATE_STAIRS); + $this->map(Blocks::COBBLED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::COBBLED_DEEPSLATE_WALL))); $this->mapSimple(Blocks::COBBLESTONE(), Ids::COBBLESTONE); $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); @@ -447,6 +451,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); }); $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); + $this->mapSimple(Blocks::CRACKED_DEEPSLATE_BRICKS(), Ids::CRACKED_DEEPSLATE_BRICKS); + $this->mapSimple(Blocks::CRACKED_DEEPSLATE_TILES(), Ids::CRACKED_DEEPSLATE_TILES); $this->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS); $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); @@ -481,6 +487,18 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); $this->mapSimple(Blocks::DEAD_BUSH(), Ids::DEADBUSH); + $this->map(Blocks::DEEPSLATE(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::DEEPSLATE) + ->writePillarAxis($block->getAxis()); + }); + $this->mapSimple(Blocks::DEEPSLATE_BRICKS(), Ids::DEEPSLATE_BRICKS); + $this->mapSlab(Blocks::DEEPSLATE_BRICK_SLAB(), Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB); + $this->mapStairs(Blocks::DEEPSLATE_BRICK_STAIRS(), Ids::DEEPSLATE_BRICK_STAIRS); + $this->map(Blocks::DEEPSLATE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_BRICK_WALL))); + $this->mapSimple(Blocks::DEEPSLATE_TILES(), Ids::DEEPSLATE_TILES); + $this->mapSlab(Blocks::DEEPSLATE_TILE_SLAB(), Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB); + $this->mapStairs(Blocks::DEEPSLATE_TILE_STAIRS(), Ids::DEEPSLATE_TILE_STAIRS); + $this->map(Blocks::DEEPSLATE_TILE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_TILE_WALL))); $this->map(Blocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ return Writer::create(Ids::DETECTOR_RAIL) ->writeBool(StateNames::RAIL_DATA_BIT, $block->isActivated()) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index dc20af369..a61433cc5 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -239,6 +239,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CLAY, fn() => Blocks::CLAY()); $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); + $this->map(Ids::COBBLED_DEEPSLATE, fn() => Blocks::COBBLED_DEEPSLATE()); + $this->mapSlab(Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::COBBLED_DEEPSLATE_SLAB()); + $this->mapStairs(Ids::COBBLED_DEEPSLATE_STAIRS, fn() => Blocks::COBBLED_DEEPSLATE_STAIRS()); + $this->map(Ids::COBBLED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::COBBLED_DEEPSLATE_WALL(), $in)); $this->map(Ids::COBBLESTONE, fn() => Blocks::COBBLESTONE()); $this->map(Ids::COBBLESTONE_WALL, fn(Reader $in) => Helper::mapLegacyWallType($in)); $this->map(Ids::COCOA, function(Reader $in) : Block{ @@ -289,6 +293,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType(CoralType::HORN()); }); + $this->map(Ids::CRACKED_DEEPSLATE_BRICKS, fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); + $this->map(Ids::CRACKED_DEEPSLATE_TILES, fn() => Blocks::CRACKED_DEEPSLATE_TILES()); $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); @@ -306,6 +312,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) ->setInverted(true)); $this->map(Ids::DEADBUSH, fn() => Blocks::DEAD_BUSH()); + $this->map(Ids::DEEPSLATE, function(Reader $in) : Block{ + return Blocks::DEEPSLATE() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::DEEPSLATE_BRICKS, fn() => Blocks::DEEPSLATE_BRICKS()); + $this->mapSlab(Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_BRICK_SLAB()); + $this->mapStairs(Ids::DEEPSLATE_BRICK_STAIRS, fn() => Blocks::DEEPSLATE_BRICK_STAIRS()); + $this->map(Ids::DEEPSLATE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_BRICK_WALL(), $in)); + $this->map(Ids::DEEPSLATE_TILES, fn() => Blocks::DEEPSLATE_TILES()); + $this->mapSlab(Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_TILE_SLAB()); + $this->mapStairs(Ids::DEEPSLATE_TILE_STAIRS, fn() => Blocks::DEEPSLATE_TILE_STAIRS()); + $this->map(Ids::DEEPSLATE_TILE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_TILE_WALL(), $in)); $this->map(Ids::DETECTOR_RAIL, function(Reader $in) : Block{ return Blocks::DETECTOR_RAIL() ->setActivated($in->readBool(StateNames::RAIL_DATA_BIT)) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a6a1d33bf..1e8b00dc2 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -188,6 +188,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cobble", fn() => Blocks::COBBLESTONE()); $result->registerBlock("cobble_stairs", fn() => Blocks::COBBLESTONE_STAIRS()); $result->registerBlock("cobble_wall", fn() => Blocks::COBBLESTONE_WALL()); + $result->registerBlock("cobbled_deepslate", fn() => Blocks::COBBLED_DEEPSLATE()); + $result->registerBlock("cobbled_deepslate_slab", fn() => Blocks::COBBLED_DEEPSLATE_SLAB()); + $result->registerBlock("cobbled_deepslate_stairs", fn() => Blocks::COBBLED_DEEPSLATE_STAIRS()); + $result->registerBlock("cobbled_deepslate_wall", fn() => Blocks::COBBLED_DEEPSLATE_WALL()); $result->registerBlock("cobblestone", fn() => Blocks::COBBLESTONE()); $result->registerBlock("cobblestone_slab", fn() => Blocks::COBBLESTONE_SLAB()); $result->registerBlock("cobblestone_stairs", fn() => Blocks::COBBLESTONE_STAIRS()); @@ -213,6 +217,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("coral_fan_hang2", fn() => Blocks::WALL_CORAL_FAN()->setCoralType(CoralType::BUBBLE())); $result->registerBlock("coral_fan_hang3", fn() => Blocks::WALL_CORAL_FAN()->setCoralType(CoralType::HORN())); $result->registerBlock("cornflower", fn() => Blocks::CORNFLOWER()); + $result->registerBlock("cracked_deepslate_bricks", fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); + $result->registerBlock("cracked_deepslate_tiles", fn() => Blocks::CRACKED_DEEPSLATE_TILES()); $result->registerBlock("cracked_polished_blackstone_bricks", fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); @@ -254,6 +260,15 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("daylight_sensor_inverted", fn() => Blocks::DAYLIGHT_SENSOR()->setInverted(true)); $result->registerBlock("dead_bush", fn() => Blocks::DEAD_BUSH()); $result->registerBlock("deadbush", fn() => Blocks::DEAD_BUSH()); + $result->registerBlock("deepslate", fn() => Blocks::DEEPSLATE()); + $result->registerBlock("deepslate_bricks", fn() => Blocks::DEEPSLATE_BRICKS()); + $result->registerBlock("deepslate_brick_slab", fn() => Blocks::DEEPSLATE_BRICK_SLAB()); + $result->registerBlock("deepslate_brick_stairs", fn() => Blocks::DEEPSLATE_BRICK_STAIRS()); + $result->registerBlock("deepslate_brick_wall", fn() => Blocks::DEEPSLATE_BRICK_WALL()); + $result->registerBlock("deepslate_tiles", fn() => Blocks::DEEPSLATE_TILES()); + $result->registerBlock("deepslate_tile_slab", fn() => Blocks::DEEPSLATE_TILE_SLAB()); + $result->registerBlock("deepslate_tile_stairs", fn() => Blocks::DEEPSLATE_TILE_STAIRS()); + $result->registerBlock("deepslate_tile_wall", fn() => Blocks::DEEPSLATE_TILE_WALL()); $result->registerBlock("detector_rail", fn() => Blocks::DETECTOR_RAIL()); $result->registerBlock("diamond_block", fn() => Blocks::DIAMOND()); $result->registerBlock("diamond_ore", fn() => Blocks::DIAMOND_ORE()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index ec2e587d6..32606ee1d 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From a3016abf538758ecd87a44e22359b35b962ff0ea Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 02:00:43 +0100 Subject: [PATCH 235/692] Added polished deepslate block/slab/stair/wall --- src/block/BlockFactory.php | 7 +++++++ src/block/BlockTypeIds.php | 6 +++++- src/block/VanillaBlocks.php | 8 ++++++++ .../block/convert/BlockObjectToBlockStateSerializer.php | 4 ++++ .../block/convert/BlockStateToBlockObjectDeserializer.php | 5 ++++- src/item/StringToItemParser.php | 4 ++++ tests/phpunit/block/block_factory_consistency_check.json | 2 +- 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index ec5c0f4ce..299c30c14 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -907,6 +907,13 @@ class BlockFactory{ $this->register(new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); $this->register(new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); $this->register(new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); + + //TODO: check blast resistance + $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); + $this->register(new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); + $this->register(new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); } /** diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 4eb4c07b8..744e1c67b 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -605,6 +605,10 @@ final class BlockTypeIds{ public const COBBLED_DEEPSLATE_SLAB = 10578; public const COBBLED_DEEPSLATE_STAIRS = 10579; public const COBBLED_DEEPSLATE_WALL = 10580; + public const POLISHED_DEEPSLATE = 10581; + public const POLISHED_DEEPSLATE_SLAB = 10582; + public const POLISHED_DEEPSLATE_STAIRS = 10583; + public const POLISHED_DEEPSLATE_WALL = 10584; - public const FIRST_UNUSED_BLOCK_ID = 10581; + public const FIRST_UNUSED_BLOCK_ID = 10585; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index fa748d393..55c8873cc 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -457,6 +457,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab POLISHED_BLACKSTONE_SLAB() * @method static Stair POLISHED_BLACKSTONE_STAIRS() * @method static Wall POLISHED_BLACKSTONE_WALL() + * @method static Opaque POLISHED_DEEPSLATE() + * @method static Slab POLISHED_DEEPSLATE_SLAB() + * @method static Stair POLISHED_DEEPSLATE_STAIRS() + * @method static Wall POLISHED_DEEPSLATE_WALL() * @method static Opaque POLISHED_DIORITE() * @method static Slab POLISHED_DIORITE_SLAB() * @method static Stair POLISHED_DIORITE_STAIRS() @@ -1034,6 +1038,10 @@ final class VanillaBlocks{ self::register("polished_blackstone_slab", $factory->get(Ids::POLISHED_BLACKSTONE_SLAB, 0)); self::register("polished_blackstone_stairs", $factory->get(Ids::POLISHED_BLACKSTONE_STAIRS, 0)); self::register("polished_blackstone_wall", $factory->get(Ids::POLISHED_BLACKSTONE_WALL, 0)); + self::register("polished_deepslate", $factory->get(Ids::POLISHED_DEEPSLATE, 0)); + self::register("polished_deepslate_slab", $factory->get(Ids::POLISHED_DEEPSLATE_SLAB, 0)); + self::register("polished_deepslate_stairs", $factory->get(Ids::POLISHED_DEEPSLATE_STAIRS, 0)); + self::register("polished_deepslate_wall", $factory->get(Ids::POLISHED_DEEPSLATE_WALL, 0)); self::register("polished_diorite", $factory->get(Ids::POLISHED_DIORITE, 0)); self::register("polished_diorite_slab", $factory->get(Ids::POLISHED_DIORITE_SLAB, 0)); self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 1ad041277..723c6cd4a 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -909,6 +909,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSlab(Blocks::POLISHED_BLACKSTONE_SLAB(), Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB); $this->mapStairs(Blocks::POLISHED_BLACKSTONE_STAIRS(), Ids::POLISHED_BLACKSTONE_STAIRS); $this->map(Blocks::POLISHED_BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_WALL))); + $this->mapSimple(Blocks::POLISHED_DEEPSLATE(), Ids::POLISHED_DEEPSLATE); + $this->mapSlab(Blocks::POLISHED_DEEPSLATE_SLAB(), Ids::POLISHED_DEEPSLATE_SLAB, Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB); + $this->mapStairs(Blocks::POLISHED_DEEPSLATE_STAIRS(), Ids::POLISHED_DEEPSLATE_STAIRS); + $this->map(Blocks::POLISHED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_DEEPSLATE_WALL))); $this->map(Blocks::POLISHED_DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE_SMOOTH)); $this->map(Blocks::POLISHED_DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_DIORITE)); $this->mapStairs(Blocks::POLISHED_DIORITE_STAIRS(), Ids::POLISHED_DIORITE_STAIRS); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index a61433cc5..dbaab7c39 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -774,7 +774,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->mapSlab(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_SLAB()); $this->mapStairs(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS()); $this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_BLACKSTONE_BRICK_WALL(), $in)); - + $this->map(Ids::POLISHED_DEEPSLATE, fn() => Blocks::POLISHED_DEEPSLATE()); + $this->mapSlab(Ids::POLISHED_DEEPSLATE_SLAB, Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::POLISHED_DEEPSLATE_SLAB()); + $this->mapStairs(Ids::POLISHED_DEEPSLATE_STAIRS, fn() => Blocks::POLISHED_DEEPSLATE_STAIRS()); + $this->map(Ids::POLISHED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_DEEPSLATE_WALL(), $in)); $this->mapStairs(Ids::POLISHED_DIORITE_STAIRS, fn() => Blocks::POLISHED_DIORITE_STAIRS()); $this->mapStairs(Ids::POLISHED_GRANITE_STAIRS, fn() => Blocks::POLISHED_GRANITE_STAIRS()); $this->map(Ids::PORTAL, function(Reader $in) : Block{ diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 1e8b00dc2..fdcf2aa55 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -765,6 +765,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("polished_blackstone_slab", fn() => Blocks::POLISHED_BLACKSTONE_SLAB()); $result->registerBlock("polished_blackstone_stairs", fn() => Blocks::POLISHED_BLACKSTONE_STAIRS()); $result->registerBlock("polished_blackstone_wall", fn() => Blocks::POLISHED_BLACKSTONE_WALL()); + $result->registerBlock("polished_deepslate", fn() => Blocks::POLISHED_DEEPSLATE()); + $result->registerBlock("polished_deepslate_slab", fn() => Blocks::POLISHED_DEEPSLATE_SLAB()); + $result->registerBlock("polished_deepslate_stairs", fn() => Blocks::POLISHED_DEEPSLATE_STAIRS()); + $result->registerBlock("polished_deepslate_wall", fn() => Blocks::POLISHED_DEEPSLATE_WALL()); $result->registerBlock("polished_diorite", fn() => Blocks::POLISHED_DIORITE()); $result->registerBlock("polished_diorite_slab", fn() => Blocks::POLISHED_DIORITE_SLAB()); $result->registerBlock("polished_diorite_stairs", fn() => Blocks::POLISHED_DIORITE_STAIRS()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 32606ee1d..a57a32f2e 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From 227a48147392262ca207e5f50a4c55c30481dfe3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 02:01:28 +0100 Subject: [PATCH 236/692] generate-block-palette-spec: include blocks with no properties --- tools/generate-block-palette-spec.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index a9992ec1a..c3b04b0e5 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -77,6 +77,7 @@ $reportMap = []; foreach($palette->getStates() as $entry){ $state = $entry->getStateData(); $name = $state->getName(); + $reportMap[$name] ??= []; foreach($state->getStates() as $propertyName => $value){ if($value instanceof IntTag || $value instanceof StringTag){ $rawValue = $value->getValue(); From 4acf7aadbd0c50da0a4178ddab471718f298f1ef Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 02:11:28 +0100 Subject: [PATCH 237/692] Added quartz bricks --- src/block/BlockFactory.php | 1 + src/block/BlockTypeIds.php | 3 ++- src/block/VanillaBlocks.php | 2 ++ .../block/convert/BlockObjectToBlockStateSerializer.php | 1 + .../block/convert/BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + tests/phpunit/block/block_factory_consistency_check.json | 2 +- 7 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 299c30c14..01f22655e 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -299,6 +299,7 @@ class BlockFactory{ $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ), "Smooth Quartz Block", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::QUARTZ_BRICKS), "Quartz Bricks", $quartzBreakInfo)); $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 744e1c67b..8a832de7d 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -609,6 +609,7 @@ final class BlockTypeIds{ public const POLISHED_DEEPSLATE_SLAB = 10582; public const POLISHED_DEEPSLATE_STAIRS = 10583; public const POLISHED_DEEPSLATE_WALL = 10584; + public const QUARTZ_BRICKS = 10585; - public const FIRST_UNUSED_BLOCK_ID = 10585; + public const FIRST_UNUSED_BLOCK_ID = 10586; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 55c8873cc..c65d7e116 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -485,6 +485,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab PURPUR_SLAB() * @method static Stair PURPUR_STAIRS() * @method static Opaque QUARTZ() + * @method static Opaque QUARTZ_BRICKS() * @method static SimplePillar QUARTZ_PILLAR() * @method static Slab QUARTZ_SLAB() * @method static Stair QUARTZ_STAIRS() @@ -1066,6 +1067,7 @@ final class VanillaBlocks{ self::register("purpur_slab", $factory->get(Ids::PURPUR_SLAB, 0)); self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 0)); self::register("quartz", $factory->get(Ids::QUARTZ, 0)); + self::register("quartz_bricks", $factory->get(Ids::QUARTZ_BRICKS, 0)); self::register("quartz_pillar", $factory->get(Ids::QUARTZ_PILLAR, 2)); self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 723c6cd4a..9e578ec6b 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -954,6 +954,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); $this->mapStairs(Blocks::PURPUR_STAIRS(), Ids::PURPUR_STAIRS); $this->map(Blocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); + $this->mapSimple(Blocks::QUARTZ_BRICKS(), Ids::QUARTZ_BRICKS); $this->map(Blocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); $this->map(Blocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); $this->mapStairs(Blocks::QUARTZ_STAIRS(), Ids::QUARTZ_STAIRS); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index dbaab7c39..33a3fbf78 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -840,6 +840,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return throw $in->badValueException(StateNames::CHISEL_TYPE, $type); } }); + $this->map(Ids::QUARTZ_BRICKS, fn() => Blocks::QUARTZ_BRICKS()); $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); $this->mapStairs(Ids::QUARTZ_STAIRS, fn() => Blocks::QUARTZ_STAIRS()); $this->map(Ids::RAIL, function(Reader $in) : Block{ diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index fdcf2aa55..4a3dd7832 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -801,6 +801,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("purpur_slab", fn() => Blocks::PURPUR_SLAB()); $result->registerBlock("purpur_stairs", fn() => Blocks::PURPUR_STAIRS()); $result->registerBlock("quartz_block", fn() => Blocks::QUARTZ()); + $result->registerBlock("quartz_bricks", fn() => Blocks::QUARTZ_BRICKS()); $result->registerBlock("quartz_ore", fn() => Blocks::NETHER_QUARTZ_ORE()); $result->registerBlock("quartz_pillar", fn() => Blocks::QUARTZ_PILLAR()); $result->registerBlock("quartz_slab", fn() => Blocks::QUARTZ_SLAB()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index a57a32f2e..8797f8b86 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From e302e5a85f73fe90fedcb5750b6804b343bbff6a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 03:04:06 +0100 Subject: [PATCH 238/692] Implemented chiseled deepslate, chiseled nether brick and cracked nether brick --- src/block/BlockFactory.php | 6 ++++++ src/block/BlockTypeIds.php | 5 ++++- src/block/VanillaBlocks.php | 6 ++++++ .../block/convert/BlockObjectToBlockStateSerializer.php | 3 +++ .../block/convert/BlockStateToBlockObjectDeserializer.php | 3 +++ src/item/StringToItemParser.php | 3 +++ tests/phpunit/block/block_factory_consistency_check.json | 2 +- 7 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 01f22655e..4376ce978 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -261,6 +261,9 @@ class BlockFactory{ $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::CHISELED_NETHER_BRICKS), "Chiseled Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); + $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); @@ -886,6 +889,9 @@ class BlockFactory{ $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->register(new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); + //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 + $this->register(new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + //TODO: check blast resistance $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->register(new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 8a832de7d..e8dfc65aa 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -610,6 +610,9 @@ final class BlockTypeIds{ public const POLISHED_DEEPSLATE_STAIRS = 10583; public const POLISHED_DEEPSLATE_WALL = 10584; public const QUARTZ_BRICKS = 10585; + public const CHISELED_DEEPSLATE = 10586; + public const CHISELED_NETHER_BRICKS = 10587; + public const CRACKED_NETHER_BRICKS = 10588; - public const FIRST_UNUSED_BLOCK_ID = 10586; + public const FIRST_UNUSED_BLOCK_ID = 10589; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index c65d7e116..44880e53a 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -110,6 +110,8 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CarvedPumpkin CARVED_PUMPKIN() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() + * @method static Opaque CHISELED_DEEPSLATE() + * @method static Opaque CHISELED_NETHER_BRICKS() * @method static Opaque CHISELED_POLISHED_BLACKSTONE() * @method static SimplePillar CHISELED_QUARTZ() * @method static Opaque CHISELED_RED_SANDSTONE() @@ -137,6 +139,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Flower CORNFLOWER() * @method static Opaque CRACKED_DEEPSLATE_BRICKS() * @method static Opaque CRACKED_DEEPSLATE_TILES() + * @method static Opaque CRACKED_NETHER_BRICKS() * @method static Opaque CRACKED_POLISHED_BLACKSTONE_BRICKS() * @method static Opaque CRACKED_STONE_BRICKS() * @method static CraftingTable CRAFTING_TABLE() @@ -692,6 +695,8 @@ final class VanillaBlocks{ self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); self::register("chemical_heat", $factory->get(Ids::CHEMICAL_HEAT, 0)); self::register("chest", $factory->get(Ids::CHEST, 0)); + self::register("chiseled_deepslate", $factory->get(Ids::CHISELED_DEEPSLATE, 0)); + self::register("chiseled_nether_bricks", $factory->get(Ids::CHISELED_NETHER_BRICKS, 0)); self::register("chiseled_polished_blackstone", $factory->get(Ids::CHISELED_POLISHED_BLACKSTONE, 0)); self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 2)); self::register("chiseled_red_sandstone", $factory->get(Ids::CHISELED_RED_SANDSTONE, 0)); @@ -719,6 +724,7 @@ final class VanillaBlocks{ self::register("cornflower", $factory->get(Ids::CORNFLOWER, 0)); self::register("cracked_deepslate_bricks", $factory->get(Ids::CRACKED_DEEPSLATE_BRICKS, 0)); self::register("cracked_deepslate_tiles", $factory->get(Ids::CRACKED_DEEPSLATE_TILES, 0)); + self::register("cracked_nether_bricks", $factory->get(Ids::CRACKED_NETHER_BRICKS, 0)); self::register("cracked_polished_blackstone_bricks", $factory->get(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, 0)); self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 9e578ec6b..f3ca59ac4 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -400,6 +400,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CHEST) ->writeHorizontalFacing($block->getFacing()); }); + $this->mapSimple(Blocks::CHISELED_DEEPSLATE(), Ids::CHISELED_DEEPSLATE); + $this->mapSimple(Blocks::CHISELED_NETHER_BRICKS(), Ids::CHISELED_NETHER_BRICKS); $this->mapSimple(Blocks::CHISELED_POLISHED_BLACKSTONE(), Ids::CHISELED_POLISHED_BLACKSTONE); $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); @@ -453,6 +455,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); $this->mapSimple(Blocks::CRACKED_DEEPSLATE_BRICKS(), Ids::CRACKED_DEEPSLATE_BRICKS); $this->mapSimple(Blocks::CRACKED_DEEPSLATE_TILES(), Ids::CRACKED_DEEPSLATE_TILES); + $this->mapSimple(Blocks::CRACKED_NETHER_BRICKS(), Ids::CRACKED_NETHER_BRICKS); $this->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS); $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 33a3fbf78..d2ea5ff99 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -235,6 +235,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CHEST() ->setFacing($in->readHorizontalFacing()); }); + $this->map(Ids::CHISELED_DEEPSLATE, fn() => Blocks::CHISELED_DEEPSLATE()); + $this->map(Ids::CHISELED_NETHER_BRICKS, fn() => Blocks::CHISELED_NETHER_BRICKS()); $this->map(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); $this->map(Ids::CLAY, fn() => Blocks::CLAY()); $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); @@ -295,6 +297,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::CRACKED_DEEPSLATE_BRICKS, fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); $this->map(Ids::CRACKED_DEEPSLATE_TILES, fn() => Blocks::CRACKED_DEEPSLATE_TILES()); + $this->map(Ids::CRACKED_NETHER_BRICKS, fn() => Blocks::CRACKED_NETHER_BRICKS()); $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 4a3dd7832..d8d54924e 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -176,6 +176,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("chemistry_table", fn() => Blocks::COMPOUND_CREATOR()); $result->registerBlock("chest", fn() => Blocks::CHEST()); $result->registerBlock("chipped_anvil", fn() => Blocks::ANVIL()->setDamage(1)); + $result->registerBlock("chiseled_deepslate", fn() => Blocks::CHISELED_DEEPSLATE()); + $result->registerBlock("chiseled_nether_bricks", fn() => Blocks::CHISELED_NETHER_BRICKS()); $result->registerBlock("chiseled_polished_blackstone", fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); $result->registerBlock("chiseled_quartz", fn() => Blocks::CHISELED_QUARTZ()); $result->registerBlock("chiseled_red_sandstone", fn() => Blocks::CHISELED_RED_SANDSTONE()); @@ -219,6 +221,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cornflower", fn() => Blocks::CORNFLOWER()); $result->registerBlock("cracked_deepslate_bricks", fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); $result->registerBlock("cracked_deepslate_tiles", fn() => Blocks::CRACKED_DEEPSLATE_TILES()); + $result->registerBlock("cracked_nether_bricks", fn() => Blocks::CRACKED_NETHER_BRICKS()); $result->registerBlock("cracked_polished_blackstone_bricks", fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 8797f8b86..ac0dcf19c 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From 3e7d34c8adf47fd79a38184d42705d70c3804668 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 14:33:42 +0100 Subject: [PATCH 239/692] BlockFactory: remove TODO list we're tracking this somewhere else now --- src/block/BlockFactory.php | 134 ------------------------------------- 1 file changed, 134 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 4376ce978..cb65adad3 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -565,140 +565,6 @@ class BlockFactory{ $this->registerBlocksR13(); $this->registerBlocksR16(); $this->registerBlocksR17(); - - //region --- auto-generated TODOs for bedrock-1.11.0 --- - //TODO: minecraft:bubble_column - //TODO: minecraft:campfire - //TODO: minecraft:cartography_table - //TODO: minecraft:cauldron - //TODO: minecraft:chain_command_block - //TODO: minecraft:chorus_flower - //TODO: minecraft:chorus_plant - //TODO: minecraft:command_block - //TODO: minecraft:composter - //TODO: minecraft:conduit - //TODO: minecraft:dispenser - //TODO: minecraft:dropper - //TODO: minecraft:end_gateway - //TODO: minecraft:end_portal - //TODO: minecraft:grindstone - //TODO: minecraft:jigsaw - //TODO: minecraft:kelp - //TODO: minecraft:lava_cauldron - //TODO: minecraft:movingBlock - //TODO: minecraft:observer - //TODO: minecraft:piston - //TODO: minecraft:pistonArmCollision - //TODO: minecraft:repeating_command_block - //TODO: minecraft:scaffolding - //TODO: minecraft:seagrass - //TODO: minecraft:smithing_table - //TODO: minecraft:sticky_piston - //TODO: minecraft:structure_block - //TODO: minecraft:turtle_egg - //endregion - - //region --- auto-generated TODOs for bedrock-1.13.0 --- - //TODO: minecraft:camera - //TODO: minecraft:light_block - //TODO: minecraft:stickyPistonArmCollision - //TODO: minecraft:structure_void - //TODO: minecraft:wither_rose - //endregion - - //region --- auto-generated TODOs for bedrock-1.14.0 --- - //TODO: minecraft:bee_nest - //TODO: minecraft:beehive - //TODO: minecraft:honey_block - //TODO: minecraft:honeycomb_block - //endregion - - //region --- auto-generated TODOs for bedrock-1.16.0 --- - //TODO: minecraft:allow - //TODO: minecraft:ancient_debris - //TODO: minecraft:basalt - //TODO: minecraft:blackstone - //TODO: minecraft:blackstone_double_slab - //TODO: minecraft:blackstone_slab - //TODO: minecraft:blackstone_stairs - //TODO: minecraft:blackstone_wall - //TODO: minecraft:border_block - //TODO: minecraft:chain - //TODO: minecraft:chiseled_nether_bricks - //TODO: minecraft:chiseled_polished_blackstone - //TODO: minecraft:cracked_nether_bricks - //TODO: minecraft:cracked_polished_blackstone_bricks - //TODO: minecraft:crimson_button - //TODO: minecraft:crimson_door - //TODO: minecraft:crimson_double_slab - //TODO: minecraft:crimson_fence - //TODO: minecraft:crimson_fence_gate - //TODO: minecraft:crimson_fungus - //TODO: minecraft:crimson_hyphae - //TODO: minecraft:crimson_nylium - //TODO: minecraft:crimson_planks - //TODO: minecraft:crimson_pressure_plate - //TODO: minecraft:crimson_roots - //TODO: minecraft:crimson_slab - //TODO: minecraft:crimson_stairs - //TODO: minecraft:crimson_standing_sign - //TODO: minecraft:crimson_stem - //TODO: minecraft:crimson_trapdoor - //TODO: minecraft:crimson_wall_sign - //TODO: minecraft:crying_obsidian - //TODO: minecraft:deny - //TODO: minecraft:gilded_blackstone - //TODO: minecraft:lodestone - //TODO: minecraft:nether_gold_ore - //TODO: minecraft:nether_sprouts - //TODO: minecraft:netherite_block - //TODO: minecraft:polished_basalt - //TODO: minecraft:polished_blackstone - //TODO: minecraft:polished_blackstone_brick_double_slab - //TODO: minecraft:polished_blackstone_brick_slab - //TODO: minecraft:polished_blackstone_brick_stairs - //TODO: minecraft:polished_blackstone_brick_wall - //TODO: minecraft:polished_blackstone_bricks - //TODO: minecraft:polished_blackstone_button - //TODO: minecraft:polished_blackstone_double_slab - //TODO: minecraft:polished_blackstone_pressure_plate - //TODO: minecraft:polished_blackstone_slab - //TODO: minecraft:polished_blackstone_stairs - //TODO: minecraft:polished_blackstone_wall - //TODO: minecraft:quartz_bricks - //TODO: minecraft:respawn_anchor - //TODO: minecraft:shroomlight - //TODO: minecraft:soul_campfire - //TODO: minecraft:soul_fire - //TODO: minecraft:soul_lantern - //TODO: minecraft:soul_soil - //TODO: minecraft:soul_torch - //TODO: minecraft:stripped_crimson_hyphae - //TODO: minecraft:stripped_crimson_stem - //TODO: minecraft:stripped_warped_hyphae - //TODO: minecraft:stripped_warped_stem - //TODO: minecraft:target - //TODO: minecraft:twisting_vines - //TODO: minecraft:warped_button - //TODO: minecraft:warped_door - //TODO: minecraft:warped_double_slab - //TODO: minecraft:warped_fence - //TODO: minecraft:warped_fence_gate - //TODO: minecraft:warped_fungus - //TODO: minecraft:warped_hyphae - //TODO: minecraft:warped_nylium - //TODO: minecraft:warped_planks - //TODO: minecraft:warped_pressure_plate - //TODO: minecraft:warped_roots - //TODO: minecraft:warped_slab - //TODO: minecraft:warped_stairs - //TODO: minecraft:warped_standing_sign - //TODO: minecraft:warped_stem - //TODO: minecraft:warped_trapdoor - //TODO: minecraft:warped_wall_sign - //TODO: minecraft:warped_wart_block - //TODO: minecraft:weeping_vines - //endregion } private function registerMushroomBlocks() : void{ From 33eef99d1fdbe1f5276cf46ebf0affa45698adbc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 17:27:25 +0100 Subject: [PATCH 240/692] Added axis support for all-sided logs --- src/block/BlockFactory.php | 2 +- src/block/Log.php | 30 ------------------- src/block/VanillaBlocks.php | 24 +++++++-------- src/block/Wood.php | 2 ++ .../BlockObjectToBlockStateSerializer.php | 13 ++++---- .../convert/BlockStateDeserializerHelper.php | 4 +-- .../convert/BlockStateSerializerHelper.php | 10 +++---- .../BlockStateToBlockObjectDeserializer.php | 22 ++++++-------- .../block_factory_consistency_check.json | 2 +- 9 files changed, 37 insertions(+), 72 deletions(-) delete mode 100644 src/block/Log.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index cb65adad3..22aede663 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -465,7 +465,7 @@ class BlockFactory{ $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - $this->register(new Log(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType)); + $this->register(new Wood(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType)); $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType)); $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); diff --git a/src/block/Log.php b/src/block/Log.php deleted file mode 100644 index 09b064855..000000000 --- a/src/block/Log.php +++ /dev/null @@ -1,30 +0,0 @@ -get(Ids::ACACIA_STAIRS, 0)); self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 0)); self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 0)); - self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 0)); + self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 4)); self::register("activator_rail", $factory->get(Ids::ACTIVATOR_RAIL, 0)); self::register("air", $factory->get(Ids::AIR, 0)); self::register("all_sided_mushroom_stem", $factory->get(Ids::ALL_SIDED_MUSHROOM_STEM, 0)); @@ -669,7 +669,7 @@ final class VanillaBlocks{ self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 0)); self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0)); - self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0)); + self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 4)); self::register("blackstone", $factory->get(Ids::BLACKSTONE, 0)); self::register("blackstone_slab", $factory->get(Ids::BLACKSTONE_SLAB, 0)); self::register("blackstone_stairs", $factory->get(Ids::BLACKSTONE_STAIRS, 0)); @@ -747,7 +747,7 @@ final class VanillaBlocks{ self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 0)); self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 0)); self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 0)); - self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 0)); + self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 4)); self::register("dark_prismarine", $factory->get(Ids::DARK_PRISMARINE, 0)); self::register("dark_prismarine_slab", $factory->get(Ids::DARK_PRISMARINE_SLAB, 0)); self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0)); @@ -964,7 +964,7 @@ final class VanillaBlocks{ self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 0)); self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 0)); self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 0)); - self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 0)); + self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 4)); self::register("lab_table", $factory->get(Ids::LAB_TABLE, 0)); self::register("ladder", $factory->get(Ids::LADDER, 0)); self::register("lantern", $factory->get(Ids::LANTERN, 0)); @@ -1023,7 +1023,7 @@ final class VanillaBlocks{ self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 0)); self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 0)); self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0)); - self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0)); + self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 4)); self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0)); self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0)); self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0)); @@ -1143,7 +1143,7 @@ final class VanillaBlocks{ self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 0)); self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 0)); self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 0)); - self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 0)); + self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 4)); self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 14)); self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 14)); self::register("stained_glass_pane", $factory->get(Ids::STAINED_GLASS_PANE, 14)); diff --git a/src/block/Wood.php b/src/block/Wood.php index a31699db5..3202dfa0d 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\PillarRotationTrait; use pocketmine\block\utils\TreeType; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; @@ -32,6 +33,7 @@ use pocketmine\math\Vector3; use pocketmine\player\Player; class Wood extends Opaque{ + use PillarRotationTrait; private TreeType $treeType; diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index f3ca59ac4..b7329f989 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -79,7 +79,6 @@ use pocketmine\block\Lectern; use pocketmine\block\Lever; use pocketmine\block\Light; use pocketmine\block\LitPumpkin; -use pocketmine\block\Log; use pocketmine\block\Loom; use pocketmine\block\MelonStem; use pocketmine\block\NetherPortal; @@ -246,7 +245,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); + $this->map(Blocks::ACACIA_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); @@ -340,7 +339,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); + $this->map(Blocks::BIRCH_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); @@ -470,7 +469,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_LOG(), fn(Log $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); + $this->map(Blocks::DARK_OAK_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); @@ -769,7 +768,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); $this->map(Blocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); - $this->map(Blocks::JUNGLE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG)); + $this->map(Blocks::JUNGLE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG)); $this->map(Blocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); @@ -877,7 +876,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); $this->map(Blocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); - $this->map(Blocks::OAK_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG)); + $this->map(Blocks::OAK_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG)); $this->map(Blocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); @@ -1050,7 +1049,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); $this->map(Blocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); - $this->map(Blocks::SPRUCE_LOG(), fn(Log $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG)); + $this->map(Blocks::SPRUCE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG)); $this->map(Blocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index 8c7d73fb9..e7ebc5185 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -33,7 +33,6 @@ use pocketmine\block\FloorCoralFan; use pocketmine\block\FloorSign; use pocketmine\block\GlazedTerracotta; use pocketmine\block\Liquid; -use pocketmine\block\Log; use pocketmine\block\RedMushroomBlock; use pocketmine\block\RedstoneComparator; use pocketmine\block\RedstoneRepeater; @@ -48,6 +47,7 @@ use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; use pocketmine\block\WeightedPressurePlate; +use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateNames; @@ -151,7 +151,7 @@ final class BlockStateDeserializerHelper{ } /** @throws BlockStateDeserializeException */ - public static function decodeLog(Log $block, bool $stripped, BlockStateReader $in) : Log{ + public static function decodeLog(Wood $block, bool $stripped, BlockStateReader $in) : Wood{ return $block ->setAxis($in->readPillarAxis()) ->setStripped($stripped); diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index b072da122..56fe6ab08 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -33,7 +33,6 @@ use pocketmine\block\FloorSign; use pocketmine\block\Furnace; use pocketmine\block\Leaves; use pocketmine\block\Liquid; -use pocketmine\block\Log; use pocketmine\block\RedMushroomBlock; use pocketmine\block\Sapling; use pocketmine\block\SimplePressurePlate; @@ -49,7 +48,6 @@ use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; -use pocketmine\math\Axis; use pocketmine\math\Facing; final class BlockStateSerializerHelper{ @@ -57,7 +55,7 @@ final class BlockStateSerializerHelper{ public static function encodeAllSidedLog(Wood $block) : BlockStateWriter{ return BlockStateWriter::create(Ids::WOOD) ->writeBool(BlockStateNames::STRIPPED_BIT, $block->isStripped()) - ->writePillarAxis(Axis::Y) //TODO: our implementation doesn't support this yet + ->writePillarAxis($block->getAxis()) ->writeTreeType($block->getTreeType()); } @@ -135,18 +133,18 @@ final class BlockStateSerializerHelper{ ->writeInt(BlockStateNames::LIQUID_DEPTH, $block->getDecay() | ($block->isFalling() ? 0x8 : 0)); } - private static function encodeLog(Log $block, BlockStateWriter $out) : BlockStateWriter{ + private static function encodeLog(Wood $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writePillarAxis($block->getAxis()); } - public static function encodeLog1(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ + public static function encodeLog1(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ return self::encodeLog($block, $block->isStripped() ? BlockStateWriter::create($strippedId) : BlockStateWriter::create(Ids::LOG)->writeString(BlockStateNames::OLD_LOG_TYPE, $unstrippedType)); } - public static function encodeLog2(Log $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ + public static function encodeLog2(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ return self::encodeLog($block, $block->isStripped() ? BlockStateWriter::create($strippedId) : BlockStateWriter::create(Ids::LOG2)->writeString(BlockStateNames::NEW_LOG_TYPE, $unstrippedType) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index d2ea5ff99..f2309ee47 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -1112,19 +1112,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WEB, fn() => Blocks::COBWEB()); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); - $this->map(Ids::WOOD, function(Reader $in) : Block{ - $in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet - $stripped = $in->readBool(StateNames::STRIPPED_BIT); - return (match($woodType = $in->readString(StateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), - StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), - StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_WOOD(), - StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_WOOD(), - StringValues::WOOD_TYPE_OAK => Blocks::OAK_WOOD(), - StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_WOOD(), - default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType), - })->setStripped($stripped); - }); + $this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){ + StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), + StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), + StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_WOOD(), + StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_WOOD(), + StringValues::WOOD_TYPE_OAK => Blocks::OAK_WOOD(), + StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_WOOD(), + default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodType), + }, $in->readBool(StateNames::STRIPPED_BIT), $in)); $this->map(Ids::WOODEN_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::OAK_BUTTON(), $in)); $this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in)); $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in)); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index ac0dcf19c..7911379d2 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From 6176f0d9dfb62bc46f2b4a1d1b3618670354280c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 18:43:29 +0100 Subject: [PATCH 241/692] Regenerate ItemTypeIds --- src/data/bedrock/item/ItemTypeIds.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/item/ItemTypeIds.php b/src/data/bedrock/item/ItemTypeIds.php index 8658507e1..67429e9d0 100644 --- a/src/data/bedrock/item/ItemTypeIds.php +++ b/src/data/bedrock/item/ItemTypeIds.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\item; final class ItemTypeIds{ public const ACACIA_BOAT = "minecraft:acacia_boat"; + public const ACACIA_CHEST_BOAT = "minecraft:acacia_chest_boat"; public const ACACIA_DOOR = "minecraft:acacia_door"; public const ACACIA_SIGN = "minecraft:acacia_sign"; public const AGENT_SPAWN_EGG = "minecraft:agent_spawn_egg"; @@ -47,6 +48,7 @@ final class ItemTypeIds{ public const BEETROOT_SEEDS = "minecraft:beetroot_seeds"; public const BEETROOT_SOUP = "minecraft:beetroot_soup"; public const BIRCH_BOAT = "minecraft:birch_boat"; + public const BIRCH_CHEST_BOAT = "minecraft:birch_chest_boat"; public const BIRCH_DOOR = "minecraft:birch_door"; public const BIRCH_SIGN = "minecraft:birch_sign"; public const BLACK_DYE = "minecraft:black_dye"; @@ -81,6 +83,7 @@ final class ItemTypeIds{ public const CHAINMAIL_HELMET = "minecraft:chainmail_helmet"; public const CHAINMAIL_LEGGINGS = "minecraft:chainmail_leggings"; public const CHARCOAL = "minecraft:charcoal"; + public const CHEST_BOAT = "minecraft:chest_boat"; public const CHEST_MINECART = "minecraft:chest_minecart"; public const CHICKEN = "minecraft:chicken"; public const CHICKEN_SPAWN_EGG = "minecraft:chicken_spawn_egg"; @@ -113,6 +116,7 @@ final class ItemTypeIds{ public const CROSSBOW = "minecraft:crossbow"; public const CYAN_DYE = "minecraft:cyan_dye"; public const DARK_OAK_BOAT = "minecraft:dark_oak_boat"; + public const DARK_OAK_CHEST_BOAT = "minecraft:dark_oak_chest_boat"; public const DARK_OAK_DOOR = "minecraft:dark_oak_door"; public const DARK_OAK_SIGN = "minecraft:dark_oak_sign"; public const DIAMOND = "minecraft:diamond"; @@ -126,12 +130,14 @@ final class ItemTypeIds{ public const DIAMOND_PICKAXE = "minecraft:diamond_pickaxe"; public const DIAMOND_SHOVEL = "minecraft:diamond_shovel"; public const DIAMOND_SWORD = "minecraft:diamond_sword"; + public const DISC_FRAGMENT_5 = "minecraft:disc_fragment_5"; public const DOLPHIN_SPAWN_EGG = "minecraft:dolphin_spawn_egg"; public const DONKEY_SPAWN_EGG = "minecraft:donkey_spawn_egg"; public const DRAGON_BREATH = "minecraft:dragon_breath"; public const DRIED_KELP = "minecraft:dried_kelp"; public const DROWNED_SPAWN_EGG = "minecraft:drowned_spawn_egg"; public const DYE = "minecraft:dye"; + public const ECHO_SHARD = "minecraft:echo_shard"; public const EGG = "minecraft:egg"; public const ELDER_GUARDIAN_SPAWN_EGG = "minecraft:elder_guardian_spawn_egg"; public const ELYTRA = "minecraft:elytra"; @@ -151,7 +157,6 @@ final class ItemTypeIds{ public const FIELD_MASONED_BANNER_PATTERN = "minecraft:field_masoned_banner_pattern"; public const FILLED_MAP = "minecraft:filled_map"; public const FIRE_CHARGE = "minecraft:fire_charge"; - public const FIREFLY_SPAWN_EGG = "minecraft:firefly_spawn_egg"; public const FIREWORK_ROCKET = "minecraft:firework_rocket"; public const FIREWORK_STAR = "minecraft:firework_star"; public const FISHING_ROD = "minecraft:fishing_rod"; @@ -217,6 +222,7 @@ final class ItemTypeIds{ public const IRON_SHOVEL = "minecraft:iron_shovel"; public const IRON_SWORD = "minecraft:iron_sword"; public const JUNGLE_BOAT = "minecraft:jungle_boat"; + public const JUNGLE_CHEST_BOAT = "minecraft:jungle_chest_boat"; public const JUNGLE_DOOR = "minecraft:jungle_door"; public const JUNGLE_SIGN = "minecraft:jungle_sign"; public const KELP = "minecraft:kelp"; @@ -238,6 +244,10 @@ final class ItemTypeIds{ public const MAGENTA_DYE = "minecraft:magenta_dye"; public const MAGMA_CREAM = "minecraft:magma_cream"; public const MAGMA_CUBE_SPAWN_EGG = "minecraft:magma_cube_spawn_egg"; + public const MANGROVE_BOAT = "minecraft:mangrove_boat"; + public const MANGROVE_CHEST_BOAT = "minecraft:mangrove_chest_boat"; + public const MANGROVE_DOOR = "minecraft:mangrove_door"; + public const MANGROVE_SIGN = "minecraft:mangrove_sign"; public const MEDICINE = "minecraft:medicine"; public const MELON_SEEDS = "minecraft:melon_seeds"; public const MELON_SLICE = "minecraft:melon_slice"; @@ -249,6 +259,7 @@ final class ItemTypeIds{ public const MUSHROOM_STEW = "minecraft:mushroom_stew"; public const MUSIC_DISC_11 = "minecraft:music_disc_11"; public const MUSIC_DISC_13 = "minecraft:music_disc_13"; + public const MUSIC_DISC_5 = "minecraft:music_disc_5"; public const MUSIC_DISC_BLOCKS = "minecraft:music_disc_blocks"; public const MUSIC_DISC_CAT = "minecraft:music_disc_cat"; public const MUSIC_DISC_CHIRP = "minecraft:music_disc_chirp"; @@ -281,6 +292,7 @@ final class ItemTypeIds{ public const NETHERITE_SWORD = "minecraft:netherite_sword"; public const NPC_SPAWN_EGG = "minecraft:npc_spawn_egg"; public const OAK_BOAT = "minecraft:oak_boat"; + public const OAK_CHEST_BOAT = "minecraft:oak_chest_boat"; public const OAK_SIGN = "minecraft:oak_sign"; public const OCELOT_SPAWN_EGG = "minecraft:ocelot_spawn_egg"; public const ORANGE_DYE = "minecraft:orange_dye"; @@ -322,6 +334,7 @@ final class ItemTypeIds{ public const RAW_COPPER = "minecraft:raw_copper"; public const RAW_GOLD = "minecraft:raw_gold"; public const RAW_IRON = "minecraft:raw_iron"; + public const RECOVERY_COMPASS = "minecraft:recovery_compass"; public const RED_DYE = "minecraft:red_dye"; public const REDSTONE = "minecraft:redstone"; public const REPEATER = "minecraft:repeater"; @@ -351,6 +364,7 @@ final class ItemTypeIds{ public const SPIDER_SPAWN_EGG = "minecraft:spider_spawn_egg"; public const SPLASH_POTION = "minecraft:splash_potion"; public const SPRUCE_BOAT = "minecraft:spruce_boat"; + public const SPRUCE_CHEST_BOAT = "minecraft:spruce_chest_boat"; public const SPRUCE_DOOR = "minecraft:spruce_door"; public const SPRUCE_SIGN = "minecraft:spruce_sign"; public const SPYGLASS = "minecraft:spyglass"; @@ -382,6 +396,7 @@ final class ItemTypeIds{ public const VILLAGER_SPAWN_EGG = "minecraft:villager_spawn_egg"; public const VINDICATOR_SPAWN_EGG = "minecraft:vindicator_spawn_egg"; public const WANDERING_TRADER_SPAWN_EGG = "minecraft:wandering_trader_spawn_egg"; + public const WARDEN_SPAWN_EGG = "minecraft:warden_spawn_egg"; public const WARPED_DOOR = "minecraft:warped_door"; public const WARPED_FUNGUS_ON_A_STICK = "minecraft:warped_fungus_on_a_stick"; public const WARPED_SIGN = "minecraft:warped_sign"; From dd615c775d33e4af6850dafe75d99ec44d3bd085 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 19:01:34 +0100 Subject: [PATCH 242/692] Added various blocks made from mangrove, crimson and warped wood --- src/block/BlockFactory.php | 35 +-- src/block/BlockLegacyIdHelper.php | 212 +++++++++++------- src/block/BlockTypeIds.php | 36 ++- src/block/CocoaBlock.php | 4 +- src/block/FenceGate.php | 6 +- src/block/Planks.php | 13 +- src/block/VanillaBlocks.php | 66 ++++++ src/block/Wood.php | 21 +- src/block/WoodenButton.php | 3 + src/block/WoodenDoor.php | 4 +- src/block/WoodenFence.php | 7 +- src/block/WoodenPressurePlate.php | 3 + src/block/WoodenSlab.php | 7 +- src/block/WoodenStairs.php | 3 + src/block/WoodenTrapdoor.php | 3 + src/block/utils/WoodType.php | 82 +++++++ src/block/utils/WoodTypeTrait.php | 40 ++++ .../BlockObjectToBlockStateSerializer.php | 43 ++++ .../convert/BlockStateSerializerHelper.php | 9 +- .../BlockStateToBlockObjectDeserializer.php | 42 ++++ .../block/convert/BlockStateWriter.php | 18 +- src/data/bedrock/item/ItemDeserializer.php | 5 +- src/data/bedrock/item/ItemSerializer.php | 3 + src/item/StringToItemParser.php | 39 ++++ 24 files changed, 568 insertions(+), 136 deletions(-) create mode 100644 src/block/utils/WoodType.php create mode 100644 src/block/utils/WoodTypeTrait.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 22aede663..5ee4c0be8 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -52,6 +52,7 @@ use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WoodType; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\utils\AssumptionFailedError; @@ -458,29 +459,33 @@ class BlockFactory{ foreach(TreeType::getAll() as $treeType){ $name = $treeType->getDisplayName(); - $this->register(new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($treeType), $name . " Planks", $planksBreakInfo)); $this->register(new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); - $this->register(new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($treeType), $name . " Fence", $planksBreakInfo)); - $this->register(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($treeType), $name, $planksBreakInfo)); - $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - $this->register(new Wood(BlockLegacyIdHelper::getLogIdentifier($treeType), $name . " Log", $logBreakInfo, $treeType)); - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($treeType), $name . " Wood", $logBreakInfo, $treeType)); - - $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($treeType), $name . " Fence Gate", $planksBreakInfo)); - $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($treeType), $name . " Stairs", $planksBreakInfo)); - $this->register(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($treeType), $name . " Door", $woodenDoorBreakInfo)); - - $this->register(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($treeType), $name . " Button", $woodenButtonBreakInfo)); - $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($treeType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo)); - $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($treeType), $name . " Trapdoor", $woodenDoorBreakInfo)); - [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($treeType); $this->register(new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $signAsItem)); $this->register(new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $signAsItem)); } + foreach(WoodType::getAll() as $woodType){ + $name = $woodType->getDisplayName(); + + $this->register(new Wood(BlockLegacyIdHelper::getLogIdentifier($woodType), $name . " " . ($woodType->getStandardLogSuffix() ?? "Log"), $logBreakInfo, $woodType)); + $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($woodType), $name . " " . ($woodType->getAllSidedLogSuffix() ?? "Wood"), $logBreakInfo, $woodType)); + + $this->register(new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($woodType), $name . " Planks", $planksBreakInfo, $woodType)); + $this->register(new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($woodType), $name . " Fence", $planksBreakInfo, $woodType)); + $this->register(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType)); + + $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($woodType), $name . " Fence Gate", $planksBreakInfo, $woodType)); + $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($woodType), $name . " Stairs", $planksBreakInfo, $woodType)); + $this->register(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($woodType), $name . " Door", $woodenDoorBreakInfo, $woodType)); + + $this->register(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); + $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); + $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); + } + $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 7f16cb4b1..462257252 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -27,67 +27,83 @@ use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WoodType; use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; final class BlockLegacyIdHelper{ - public static function getWoodenPlanksIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_PLANKS, - TreeType::SPRUCE()->id() => Ids::SPRUCE_PLANKS, - TreeType::BIRCH()->id() => Ids::BIRCH_PLANKS, - TreeType::JUNGLE()->id() => Ids::JUNGLE_PLANKS, - TreeType::ACACIA()->id() => Ids::ACACIA_PLANKS, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_PLANKS, + public static function getWoodenPlanksIdentifier(WoodType $type) : BID{ + return new BID(match($type->id()){ + WoodType::OAK()->id() => Ids::OAK_PLANKS, + WoodType::SPRUCE()->id() => Ids::SPRUCE_PLANKS, + WoodType::BIRCH()->id() => Ids::BIRCH_PLANKS, + WoodType::JUNGLE()->id() => Ids::JUNGLE_PLANKS, + WoodType::ACACIA()->id() => Ids::ACACIA_PLANKS, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_PLANKS, + WoodType::MANGROVE()->id() => Ids::MANGROVE_PLANKS, + WoodType::CRIMSON()->id() => Ids::CRIMSON_PLANKS, + WoodType::WARPED()->id() => Ids::WARPED_PLANKS, default => throw new AssumptionFailedError("All tree types should be covered") }); } - public static function getWoodenFenceIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_FENCE, - TreeType::SPRUCE()->id() => Ids::SPRUCE_FENCE, - TreeType::BIRCH()->id() => Ids::BIRCH_FENCE, - TreeType::JUNGLE()->id() => Ids::JUNGLE_FENCE, - TreeType::ACACIA()->id() => Ids::ACACIA_FENCE, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE, + public static function getWoodenFenceIdentifier(WoodType $type) : BID{ + return new BID(match($type->id()){ + WoodType::OAK()->id() => Ids::OAK_FENCE, + WoodType::SPRUCE()->id() => Ids::SPRUCE_FENCE, + WoodType::BIRCH()->id() => Ids::BIRCH_FENCE, + WoodType::JUNGLE()->id() => Ids::JUNGLE_FENCE, + WoodType::ACACIA()->id() => Ids::ACACIA_FENCE, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE, + WoodType::MANGROVE()->id() => Ids::MANGROVE_FENCE, + WoodType::CRIMSON()->id() => Ids::CRIMSON_FENCE, + WoodType::WARPED()->id() => Ids::WARPED_FENCE, default => throw new AssumptionFailedError("All tree types should be covered") }); } - public static function getWoodenSlabIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_SLAB, - TreeType::SPRUCE()->id() => Ids::SPRUCE_SLAB, - TreeType::BIRCH()->id() => Ids::BIRCH_SLAB, - TreeType::JUNGLE()->id() => Ids::JUNGLE_SLAB, - TreeType::ACACIA()->id() => Ids::ACACIA_SLAB, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, + public static function getWoodenSlabIdentifier(WoodType $type) : BID{ + return new BID(match($type->id()){ + WoodType::OAK()->id() => Ids::OAK_SLAB, + WoodType::SPRUCE()->id() => Ids::SPRUCE_SLAB, + WoodType::BIRCH()->id() => Ids::BIRCH_SLAB, + WoodType::JUNGLE()->id() => Ids::JUNGLE_SLAB, + WoodType::ACACIA()->id() => Ids::ACACIA_SLAB, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_SLAB, + WoodType::MANGROVE()->id() => Ids::MANGROVE_SLAB, + WoodType::CRIMSON()->id() => Ids::CRIMSON_SLAB, + WoodType::WARPED()->id() => Ids::WARPED_SLAB, default => throw new AssumptionFailedError("All tree types should be covered") }); } - public static function getLogIdentifier(TreeType $treeType) : BID{ + public static function getLogIdentifier(WoodType $treeType) : BID{ return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LOG), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LOG), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LOG), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG), + WoodType::OAK()->id() => new BID(Ids::OAK_LOG), + WoodType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG), + WoodType::BIRCH()->id() => new BID(Ids::BIRCH_LOG), + WoodType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG), + WoodType::ACACIA()->id() => new BID(Ids::ACACIA_LOG), + WoodType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG), + WoodType::MANGROVE()->id() => new BID(Ids::MANGROVE_LOG), + WoodType::CRIMSON()->id() => new BID(Ids::CRIMSON_STEM), + WoodType::WARPED()->id() => new BID(Ids::WARPED_STEM), default => throw new AssumptionFailedError("All tree types should be covered") }; } - public static function getAllSidedLogIdentifier(TreeType $treeType) : BID{ + public static function getAllSidedLogIdentifier(WoodType $treeType) : BID{ return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_WOOD, - TreeType::SPRUCE()->id() => Ids::SPRUCE_WOOD, - TreeType::BIRCH()->id() => Ids::BIRCH_WOOD, - TreeType::JUNGLE()->id() => Ids::JUNGLE_WOOD, - TreeType::ACACIA()->id() => Ids::ACACIA_WOOD, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_WOOD, + WoodType::OAK()->id() => Ids::OAK_WOOD, + WoodType::SPRUCE()->id() => Ids::SPRUCE_WOOD, + WoodType::BIRCH()->id() => Ids::BIRCH_WOOD, + WoodType::JUNGLE()->id() => Ids::JUNGLE_WOOD, + WoodType::ACACIA()->id() => Ids::ACACIA_WOOD, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_WOOD, + WoodType::MANGROVE()->id() => Ids::MANGROVE_WOOD, + WoodType::CRIMSON()->id() => Ids::CRIMSON_HYPHAE, + WoodType::WARPED()->id() => Ids::WARPED_HYPHAE, default => throw new AssumptionFailedError("All tree types should be covered") }); } @@ -162,110 +178,146 @@ final class BlockLegacyIdHelper{ throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenTrapdoorIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_TRAPDOOR); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_TRAPDOOR); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_TRAPDOOR); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_TRAPDOOR); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_TRAPDOOR); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_TRAPDOOR); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_TRAPDOOR); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_TRAPDOOR); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_TRAPDOOR); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenButtonIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenButtonIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_BUTTON); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_BUTTON); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_BUTTON); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_BUTTON); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_BUTTON); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_BUTTON); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_BUTTON); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_BUTTON); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_BUTTON); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenPressurePlateIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenPressurePlateIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_PRESSURE_PLATE); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_PRESSURE_PLATE); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_PRESSURE_PLATE); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_PRESSURE_PLATE); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_PRESSURE_PLATE); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_PRESSURE_PLATE); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_PRESSURE_PLATE); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_PRESSURE_PLATE); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_PRESSURE_PLATE); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenDoorIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenDoorIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_DOOR); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_DOOR); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_DOOR); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_DOOR); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_DOOR); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_DOOR); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_DOOR); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_DOOR); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_DOOR); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenFenceGateIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenFenceGateIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_FENCE_GATE); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_FENCE_GATE); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_FENCE_GATE); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_FENCE_GATE); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_FENCE_GATE); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_FENCE_GATE); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_FENCE_GATE); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_FENCE_GATE); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_FENCE_GATE); } throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenStairsIdentifier(TreeType $treeType) : BlockIdentifier{ + public static function getWoodenStairsIdentifier(WoodType $treeType) : BlockIdentifier{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return new BID(Ids::OAK_STAIRS); - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return new BID(Ids::SPRUCE_STAIRS); - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return new BID(Ids::BIRCH_STAIRS); - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return new BID(Ids::JUNGLE_STAIRS); - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return new BID(Ids::ACACIA_STAIRS); - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return new BID(Ids::DARK_OAK_STAIRS); + case WoodType::MANGROVE()->id(): + return new BID(Ids::MANGROVE_STAIRS); + case WoodType::CRIMSON()->id(): + return new BID(Ids::CRIMSON_STAIRS); + case WoodType::WARPED()->id(): + return new BID(Ids::WARPED_STAIRS); } throw new AssumptionFailedError("Switch should cover all wood types"); } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index e8dfc65aa..deca05b42 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -614,5 +614,39 @@ final class BlockTypeIds{ public const CHISELED_NETHER_BRICKS = 10587; public const CRACKED_NETHER_BRICKS = 10588; - public const FIRST_UNUSED_BLOCK_ID = 10589; + public const MANGROVE_PLANKS = 10595; + public const CRIMSON_PLANKS = 10596; + public const WARPED_PLANKS = 10597; + public const MANGROVE_FENCE = 10598; + public const CRIMSON_FENCE = 10599; + public const WARPED_FENCE = 10600; + public const MANGROVE_SLAB = 10601; + public const CRIMSON_SLAB = 10602; + public const WARPED_SLAB = 10603; + public const MANGROVE_LOG = 10604; + public const CRIMSON_STEM = 10605; + public const WARPED_STEM = 10606; + public const MANGROVE_WOOD = 10607; + public const CRIMSON_HYPHAE = 10608; + public const WARPED_HYPHAE = 10609; + public const MANGROVE_TRAPDOOR = 10610; + public const CRIMSON_TRAPDOOR = 10611; + public const WARPED_TRAPDOOR = 10612; + public const MANGROVE_BUTTON = 10613; + public const CRIMSON_BUTTON = 10614; + public const WARPED_BUTTON = 10615; + public const MANGROVE_PRESSURE_PLATE = 10616; + public const CRIMSON_PRESSURE_PLATE = 10617; + public const WARPED_PRESSURE_PLATE = 10618; + public const MANGROVE_DOOR = 10619; + public const CRIMSON_DOOR = 10620; + public const WARPED_DOOR = 10621; + public const MANGROVE_FENCE_GATE = 10622; + public const CRIMSON_FENCE_GATE = 10623; + public const WARPED_FENCE_GATE = 10624; + public const MANGROVE_STAIRS = 10625; + public const CRIMSON_STAIRS = 10626; + public const WARPED_STAIRS = 10627; + + public const FIRST_UNUSED_BLOCK_ID = 10628; } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 1e06517fc..f0f9b2464 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -25,7 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WoodType; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\event\block\BlockGrowEvent; @@ -89,7 +89,7 @@ class CocoaBlock extends Transparent{ } private function canAttachTo(Block $block) : bool{ - return $block instanceof Wood && $block->getTreeType()->equals(TreeType::JUNGLE()); + return $block instanceof Wood && $block->getWoodType()->equals(WoodType::JUNGLE()); } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 6f5f1c9a4..b9bc95e18 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; +use pocketmine\block\utils\WoodTypeTrait; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Item; @@ -36,6 +37,7 @@ use pocketmine\world\BlockTransaction; use pocketmine\world\sound\DoorSound; class FenceGate extends Transparent{ + use WoodTypeTrait; use HorizontalFacingTrait; protected bool $open = false; @@ -126,10 +128,10 @@ class FenceGate extends Transparent{ } public function getFlameEncouragement() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function getFlammability() : int{ - return 20; + return $this->woodType->isFlammable() ? 20 : 0; } } diff --git a/src/block/Planks.php b/src/block/Planks.php index 9f780694a..23c9fe4a8 100644 --- a/src/block/Planks.php +++ b/src/block/Planks.php @@ -23,17 +23,26 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodType; +use pocketmine\block\utils\WoodTypeTrait; + class Planks extends Opaque{ + use WoodTypeTrait; + + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, WoodType $woodType){ + $this->woodType = $woodType; + parent::__construct($idInfo, $name, $breakInfo); + } public function getFuelTime() : int{ return 300; } public function getFlameEncouragement() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function getFlammability() : int{ - return 20; + return $this->woodType->isFlammable() ? 20 : 0; } } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 3bbce12ce..ae1852c0d 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -143,6 +143,17 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Opaque CRACKED_POLISHED_BLACKSTONE_BRICKS() * @method static Opaque CRACKED_STONE_BRICKS() * @method static CraftingTable CRAFTING_TABLE() + * @method static WoodenButton CRIMSON_BUTTON() + * @method static WoodenDoor CRIMSON_DOOR() + * @method static WoodenFence CRIMSON_FENCE() + * @method static FenceGate CRIMSON_FENCE_GATE() + * @method static Wood CRIMSON_HYPHAE() + * @method static Planks CRIMSON_PLANKS() + * @method static WoodenPressurePlate CRIMSON_PRESSURE_PLATE() + * @method static WoodenSlab CRIMSON_SLAB() + * @method static WoodenStairs CRIMSON_STAIRS() + * @method static Wood CRIMSON_STEM() + * @method static WoodenTrapdoor CRIMSON_TRAPDOOR() * @method static Opaque CUT_RED_SANDSTONE() * @method static Slab CUT_RED_SANDSTONE_SLAB() * @method static Opaque CUT_SANDSTONE() @@ -397,6 +408,17 @@ use pocketmine\utils\CloningRegistryTrait; * @method static LitPumpkin LIT_PUMPKIN() * @method static Loom LOOM() * @method static Magma MAGMA() + * @method static WoodenButton MANGROVE_BUTTON() + * @method static WoodenDoor MANGROVE_DOOR() + * @method static WoodenFence MANGROVE_FENCE() + * @method static FenceGate MANGROVE_FENCE_GATE() + * @method static Wood MANGROVE_LOG() + * @method static Planks MANGROVE_PLANKS() + * @method static WoodenPressurePlate MANGROVE_PRESSURE_PLATE() + * @method static WoodenSlab MANGROVE_SLAB() + * @method static WoodenStairs MANGROVE_STAIRS() + * @method static WoodenTrapdoor MANGROVE_TRAPDOOR() + * @method static Wood MANGROVE_WOOD() * @method static ChemistryTable MATERIAL_REDUCER() * @method static Melon MELON() * @method static MelonStem MELON_STEM() @@ -587,6 +609,17 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Vine VINES() * @method static WallBanner WALL_BANNER() * @method static WallCoralFan WALL_CORAL_FAN() + * @method static WoodenButton WARPED_BUTTON() + * @method static WoodenDoor WARPED_DOOR() + * @method static WoodenFence WARPED_FENCE() + * @method static FenceGate WARPED_FENCE_GATE() + * @method static Wood WARPED_HYPHAE() + * @method static Planks WARPED_PLANKS() + * @method static WoodenPressurePlate WARPED_PRESSURE_PLATE() + * @method static WoodenSlab WARPED_SLAB() + * @method static WoodenStairs WARPED_STAIRS() + * @method static Wood WARPED_STEM() + * @method static WoodenTrapdoor WARPED_TRAPDOOR() * @method static Water WATER() * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() @@ -728,6 +761,17 @@ final class VanillaBlocks{ self::register("cracked_polished_blackstone_bricks", $factory->get(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, 0)); self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); + self::register("crimson_button", $factory->get(Ids::CRIMSON_BUTTON, 0)); + self::register("crimson_door", $factory->get(Ids::CRIMSON_DOOR, 0)); + self::register("crimson_fence", $factory->get(Ids::CRIMSON_FENCE, 0)); + self::register("crimson_fence_gate", $factory->get(Ids::CRIMSON_FENCE_GATE, 0)); + self::register("crimson_hyphae", $factory->get(Ids::CRIMSON_HYPHAE, 4)); + self::register("crimson_planks", $factory->get(Ids::CRIMSON_PLANKS, 0)); + self::register("crimson_pressure_plate", $factory->get(Ids::CRIMSON_PRESSURE_PLATE, 0)); + self::register("crimson_slab", $factory->get(Ids::CRIMSON_SLAB, 0)); + self::register("crimson_stairs", $factory->get(Ids::CRIMSON_STAIRS, 0)); + self::register("crimson_stem", $factory->get(Ids::CRIMSON_STEM, 4)); + self::register("crimson_trapdoor", $factory->get(Ids::CRIMSON_TRAPDOOR, 0)); self::register("cut_red_sandstone", $factory->get(Ids::CUT_RED_SANDSTONE, 0)); self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0)); self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0)); @@ -982,6 +1026,17 @@ final class VanillaBlocks{ self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0)); self::register("loom", $factory->get(Ids::LOOM, 0)); self::register("magma", $factory->get(Ids::MAGMA, 0)); + self::register("mangrove_button", $factory->get(Ids::MANGROVE_BUTTON, 0)); + self::register("mangrove_door", $factory->get(Ids::MANGROVE_DOOR, 0)); + self::register("mangrove_fence", $factory->get(Ids::MANGROVE_FENCE, 0)); + self::register("mangrove_fence_gate", $factory->get(Ids::MANGROVE_FENCE_GATE, 0)); + self::register("mangrove_log", $factory->get(Ids::MANGROVE_LOG, 4)); + self::register("mangrove_planks", $factory->get(Ids::MANGROVE_PLANKS, 0)); + self::register("mangrove_pressure_plate", $factory->get(Ids::MANGROVE_PRESSURE_PLATE, 0)); + self::register("mangrove_slab", $factory->get(Ids::MANGROVE_SLAB, 0)); + self::register("mangrove_stairs", $factory->get(Ids::MANGROVE_STAIRS, 0)); + self::register("mangrove_trapdoor", $factory->get(Ids::MANGROVE_TRAPDOOR, 0)); + self::register("mangrove_wood", $factory->get(Ids::MANGROVE_WOOD, 4)); self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); self::register("melon", $factory->get(Ids::MELON, 0)); self::register("melon_stem", $factory->get(Ids::MELON_STEM, 0)); @@ -1172,6 +1227,17 @@ final class VanillaBlocks{ self::register("vines", $factory->get(Ids::VINES, 0)); self::register("wall_banner", $factory->get(Ids::WALL_BANNER, 0)); self::register("wall_coral_fan", $factory->get(Ids::WALL_CORAL_FAN, 4)); + self::register("warped_button", $factory->get(Ids::WARPED_BUTTON, 0)); + self::register("warped_door", $factory->get(Ids::WARPED_DOOR, 0)); + self::register("warped_fence", $factory->get(Ids::WARPED_FENCE, 0)); + self::register("warped_fence_gate", $factory->get(Ids::WARPED_FENCE_GATE, 0)); + self::register("warped_hyphae", $factory->get(Ids::WARPED_HYPHAE, 4)); + self::register("warped_planks", $factory->get(Ids::WARPED_PLANKS, 0)); + self::register("warped_pressure_plate", $factory->get(Ids::WARPED_PRESSURE_PLATE, 0)); + self::register("warped_slab", $factory->get(Ids::WARPED_SLAB, 0)); + self::register("warped_stairs", $factory->get(Ids::WARPED_STAIRS, 0)); + self::register("warped_stem", $factory->get(Ids::WARPED_STEM, 4)); + self::register("warped_trapdoor", $factory->get(Ids::WARPED_TRAPDOOR, 0)); self::register("water", $factory->get(Ids::WATER, 0)); self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0)); self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0)); diff --git a/src/block/Wood.php b/src/block/Wood.php index 3202dfa0d..46bb4afa6 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\PillarRotationTrait; -use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WoodTypeTrait; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; use pocketmine\item\Axe; @@ -34,16 +34,10 @@ use pocketmine\player\Player; class Wood extends Opaque{ use PillarRotationTrait; - - private TreeType $treeType; + use WoodTypeTrait; private bool $stripped = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType){ - parent::__construct($idInfo, $name, $breakInfo); - $this->treeType = $treeType; - } - public function getRequiredTypeDataBits() : int{ return 1; } protected function decodeType(BlockDataReader $r) : void{ @@ -54,13 +48,6 @@ class Wood extends Opaque{ $w->writeBool($this->stripped); } - /** - * TODO: this is ad hoc, but add an interface for this to all tree-related blocks - */ - public function getTreeType() : TreeType{ - return $this->treeType; - } - public function isStripped() : bool{ return $this->stripped; } /** @return $this */ @@ -74,11 +61,11 @@ class Wood extends Opaque{ } public function getFlameEncouragement() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function getFlammability() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/WoodenButton.php b/src/block/WoodenButton.php index 3116840b2..d1123ec2d 100644 --- a/src/block/WoodenButton.php +++ b/src/block/WoodenButton.php @@ -23,7 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenButton extends Button{ + use WoodTypeTrait; protected function getActivationTime() : int{ return 30; diff --git a/src/block/WoodenDoor.php b/src/block/WoodenDoor.php index c77253e69..e398812cd 100644 --- a/src/block/WoodenDoor.php +++ b/src/block/WoodenDoor.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -class WoodenDoor extends Door{ +use pocketmine\block\utils\WoodTypeTrait; +class WoodenDoor extends Door{ + use WoodTypeTrait; } diff --git a/src/block/WoodenFence.php b/src/block/WoodenFence.php index a84abef5f..88d444f51 100644 --- a/src/block/WoodenFence.php +++ b/src/block/WoodenFence.php @@ -23,17 +23,20 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenFence extends Fence{ + use WoodTypeTrait; public function getFuelTime() : int{ return 300; } public function getFlameEncouragement() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function getFlammability() : int{ - return 20; + return $this->woodType->isFlammable() ? 20 : 0; } } diff --git a/src/block/WoodenPressurePlate.php b/src/block/WoodenPressurePlate.php index 163789b2f..baaf44c2c 100644 --- a/src/block/WoodenPressurePlate.php +++ b/src/block/WoodenPressurePlate.php @@ -23,7 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenPressurePlate extends SimplePressurePlate{ + use WoodTypeTrait; public function getFuelTime() : int{ return 300; diff --git a/src/block/WoodenSlab.php b/src/block/WoodenSlab.php index f1fc42b66..b6f6647da 100644 --- a/src/block/WoodenSlab.php +++ b/src/block/WoodenSlab.php @@ -23,17 +23,20 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenSlab extends Slab{ + use WoodTypeTrait; public function getFuelTime() : int{ return 300; } public function getFlameEncouragement() : int{ - return 5; + return $this->woodType->isFlammable() ? 5 : 0; } public function getFlammability() : int{ - return 20; + return $this->woodType->isFlammable() ? 20 : 0; } } diff --git a/src/block/WoodenStairs.php b/src/block/WoodenStairs.php index 9c2f16a15..30fa7e602 100644 --- a/src/block/WoodenStairs.php +++ b/src/block/WoodenStairs.php @@ -23,7 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenStairs extends Stair{ + use WoodTypeTrait; public function getFlameEncouragement() : int{ return 5; diff --git a/src/block/WoodenTrapdoor.php b/src/block/WoodenTrapdoor.php index 83b3fb6c8..c0a6623a1 100644 --- a/src/block/WoodenTrapdoor.php +++ b/src/block/WoodenTrapdoor.php @@ -23,7 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\WoodTypeTrait; + class WoodenTrapdoor extends Trapdoor{ + use WoodTypeTrait; public function getFuelTime() : int{ return 300; diff --git a/src/block/utils/WoodType.php b/src/block/utils/WoodType.php new file mode 100644 index 000000000..e31f3a6da --- /dev/null +++ b/src/block/utils/WoodType.php @@ -0,0 +1,82 @@ +Enum___construct($enumName); + } + + public function getDisplayName() : string{ return $this->displayName; } + + public function isFlammable() : bool{ return $this->flammable; } + + /** @return string|null */ + public function getStandardLogSuffix() : ?string{ return $this->standardLogSuffix; } + + /** @return string|null */ + public function getAllSidedLogSuffix() : ?string{ return $this->allSidedLogSuffix; } +} diff --git a/src/block/utils/WoodTypeTrait.php b/src/block/utils/WoodTypeTrait.php new file mode 100644 index 000000000..0ecd4e6f1 --- /dev/null +++ b/src/block/utils/WoodTypeTrait.php @@ -0,0 +1,40 @@ +woodType = $woodType; + parent::__construct($idInfo, $name, $breakInfo); + } + + public function getWoodType() : WoodType{ + return $this->woodType; + } +} diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index b7329f989..ec5942cda 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -458,6 +458,17 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS); $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); + $this->map(Blocks::CRIMSON_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::CRIMSON_BUTTON))); + $this->map(Blocks::CRIMSON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::CRIMSON_DOOR))); + $this->mapSimple(Blocks::CRIMSON_FENCE(), Ids::CRIMSON_FENCE); + $this->map(Blocks::CRIMSON_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::CRIMSON_FENCE_GATE))); + $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); + $this->mapSimple(Blocks::CRIMSON_PLANKS(), Ids::CRIMSON_PLANKS); + $this->map(Blocks::CRIMSON_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::CRIMSON_PRESSURE_PLATE))); + $this->mapSlab(Blocks::CRIMSON_SLAB(), Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB); + $this->mapStairs(Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS); + $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); + $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); @@ -829,6 +840,27 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeLegacyHorizontalFacing($block->getFacing()); }); $this->mapSimple(Blocks::MAGMA(), Ids::MAGMA); + $this->map(Blocks::MANGROVE_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::MANGROVE_BUTTON))); + $this->map(Blocks::MANGROVE_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::MANGROVE_DOOR))); + $this->mapSimple(Blocks::MANGROVE_FENCE(), Ids::MANGROVE_FENCE); + $this->map(Blocks::MANGROVE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::MANGROVE_FENCE_GATE))); + $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); + $this->mapSimple(Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS); + $this->map(Blocks::MANGROVE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::MANGROVE_PRESSURE_PLATE))); + $this->mapSlab(Blocks::MANGROVE_SLAB(), Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB); + $this->mapStairs(Blocks::MANGROVE_STAIRS(), Ids::MANGROVE_STAIRS); + $this->map(Blocks::MANGROVE_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::MANGROVE_TRAPDOOR))); + $this->map(Blocks::MANGROVE_WOOD(), function(Wood $block) : Writer{ + //we can't use the standard method for this because mangrove_wood has a useless property attached to it + if(!$block->isStripped()){ + return Writer::create(Ids::MANGROVE_WOOD) + ->writePillarAxis($block->getAxis()) + ->writeBool(StateNames::STRIPPED_BIT, false); //this is useless, but it has to be written + }else{ + return Writer::create(Ids::STRIPPED_MANGROVE_WOOD) + ->writePillarAxis($block->getAxis()); + } + }); $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); @@ -1152,6 +1184,17 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::DEAD_BIT, $block->isDead()) ->writeCoralFacing($block->getFacing()); }); + $this->map(Blocks::WARPED_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::WARPED_BUTTON))); + $this->map(Blocks::WARPED_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::WARPED_DOOR))); + $this->mapSimple(Blocks::WARPED_FENCE(), Ids::WARPED_FENCE); + $this->map(Blocks::WARPED_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::WARPED_FENCE_GATE))); + $this->map(Blocks::WARPED_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_HYPHAE, Ids::STRIPPED_WARPED_HYPHAE)); + $this->mapSimple(Blocks::WARPED_PLANKS(), Ids::WARPED_PLANKS); + $this->map(Blocks::WARPED_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WARPED_PRESSURE_PLATE))); + $this->mapSlab(Blocks::WARPED_SLAB(), Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB); + $this->mapStairs(Blocks::WARPED_STAIRS(), Ids::WARPED_STAIRS); + $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); + $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 56fe6ab08..9ef70b361 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -56,7 +56,7 @@ final class BlockStateSerializerHelper{ return BlockStateWriter::create(Ids::WOOD) ->writeBool(BlockStateNames::STRIPPED_BIT, $block->isStripped()) ->writePillarAxis($block->getAxis()) - ->writeTreeType($block->getTreeType()); + ->writeLegacyWoodType($block->getWoodType()); } public static function encodeButton(Button $block, BlockStateWriter $out) : BlockStateWriter{ @@ -151,6 +151,13 @@ final class BlockStateSerializerHelper{ ); } + public static function encodeNewLog(Wood $block, string $unstrippedId, string $strippedId) : BlockStateWriter{ + return self::encodeLog($block, $block->isStripped() ? + BlockStateWriter::create($strippedId) : + BlockStateWriter::create($unstrippedId) + ); + } + public static function encodeMushroomBlock(RedMushroomBlock $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, MushroomBlockTypeIdMap::getInstance()->toId($block->getMushroomBlockType())); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f2309ee47..1dbdf8a32 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -300,6 +300,17 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CRACKED_NETHER_BRICKS, fn() => Blocks::CRACKED_NETHER_BRICKS()); $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); + $this->map(Ids::CRIMSON_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::CRIMSON_BUTTON(), $in)); + $this->map(Ids::CRIMSON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::CRIMSON_DOOR(), $in)); + $this->mapSlab(Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB, fn() => Blocks::CRIMSON_SLAB()); + $this->map(Ids::CRIMSON_FENCE, fn() => Blocks::CRIMSON_FENCE()); + $this->map(Ids::CRIMSON_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::CRIMSON_FENCE_GATE(), $in)); + $this->map(Ids::CRIMSON_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_HYPHAE(), false, $in)); + $this->map(Ids::CRIMSON_PLANKS, fn() => Blocks::CRIMSON_PLANKS()); + $this->map(Ids::CRIMSON_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::CRIMSON_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::CRIMSON_STAIRS, fn() => Blocks::CRIMSON_STAIRS()); + $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); + $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); @@ -715,6 +726,20 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); + $this->map(Ids::MANGROVE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::MANGROVE_BUTTON(), $in)); + $this->map(Ids::MANGROVE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::MANGROVE_DOOR(), $in)); + $this->mapSlab(Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB, fn() => Blocks::MANGROVE_SLAB()); + $this->map(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); + $this->map(Ids::MANGROVE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::MANGROVE_FENCE_GATE(), $in)); + $this->map(Ids::MANGROVE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_LOG(), false, $in)); + $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); + $this->map(Ids::MANGROVE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::MANGROVE_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::MANGROVE_STAIRS, fn() => Blocks::MANGROVE_STAIRS()); + $this->map(Ids::MANGROVE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::MANGROVE_TRAPDOOR(), $in)); + $this->map(Ids::MANGROVE_WOOD, function(Reader $in){ + $in->ignored(StateNames::STRIPPED_BIT); //this is also ignored by vanilla + return Helper::decodeLog(Blocks::MANGROVE_WOOD(), false, $in); + }); $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); $this->map(Ids::MELON_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::MELON_STEM(), $in)); $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); @@ -1037,10 +1062,16 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::STRIPPED_ACACIA_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::ACACIA_LOG(), true, $in)); $this->map(Ids::STRIPPED_BIRCH_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::BIRCH_LOG(), true, $in)); + $this->map(Ids::STRIPPED_CRIMSON_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_HYPHAE(), true, $in)); + $this->map(Ids::STRIPPED_CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), true, $in)); $this->map(Ids::STRIPPED_DARK_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::DARK_OAK_LOG(), true, $in)); $this->map(Ids::STRIPPED_JUNGLE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::JUNGLE_LOG(), true, $in)); + $this->map(Ids::STRIPPED_MANGROVE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_LOG(), true, $in)); + $this->map(Ids::STRIPPED_MANGROVE_WOOD, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_WOOD(), true, $in)); $this->map(Ids::STRIPPED_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::OAK_LOG(), true, $in)); $this->map(Ids::STRIPPED_SPRUCE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::SPRUCE_LOG(), true, $in)); + $this->map(Ids::STRIPPED_WARPED_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_HYPHAE(), true, $in)); + $this->map(Ids::STRIPPED_WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), true, $in)); $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 $growth = $in->readBoundedInt(StateNames::GROWTH, 0, 7); @@ -1107,6 +1138,17 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()); }); $this->map(Ids::WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::OAK_WALL_SIGN(), $in)); + $this->map(Ids::WARPED_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::WARPED_BUTTON(), $in)); + $this->map(Ids::WARPED_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::WARPED_DOOR(), $in)); + $this->mapSlab(Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB, fn() => Blocks::WARPED_SLAB()); + $this->map(Ids::WARPED_FENCE, fn() => Blocks::WARPED_FENCE()); + $this->map(Ids::WARPED_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::WARPED_FENCE_GATE(), $in)); + $this->map(Ids::WARPED_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_HYPHAE(), false, $in)); + $this->map(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); + $this->map(Ids::WARPED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::WARPED_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::WARPED_STAIRS, fn() => Blocks::WARPED_STAIRS()); + $this->map(Ids::WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), false, $in)); + $this->map(Ids::WARPED_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::WARPED_TRAPDOOR(), $in)); $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); $this->map(Ids::WEB, fn() => Blocks::COBWEB()); diff --git a/src/data/bedrock/block/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php index 4186972dd..285a52aa1 100644 --- a/src/data/bedrock/block/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -27,8 +27,8 @@ use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SlabType; -use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WallConnectionType; +use pocketmine\block\utils\WoodType; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockStateSerializeException; @@ -226,15 +226,15 @@ final class BlockStateWriter{ } /** @return $this */ - public function writeTreeType(TreeType $treeType) : self{ + public function writeLegacyWoodType(WoodType $treeType) : self{ $this->writeString(BlockStateNames::WOOD_TYPE, match($treeType->id()){ - TreeType::OAK()->id() => StringValues::WOOD_TYPE_OAK, - TreeType::SPRUCE()->id() => StringValues::WOOD_TYPE_SPRUCE, - TreeType::BIRCH()->id() => StringValues::WOOD_TYPE_BIRCH, - TreeType::JUNGLE()->id() => StringValues::WOOD_TYPE_JUNGLE, - TreeType::ACACIA()->id() => StringValues::WOOD_TYPE_ACACIA, - TreeType::DARK_OAK()->id() => StringValues::WOOD_TYPE_DARK_OAK, - default => throw new BlockStateSerializeException("Invalid Tree type " . $treeType->name()) + WoodType::OAK()->id() => StringValues::WOOD_TYPE_OAK, + WoodType::SPRUCE()->id() => StringValues::WOOD_TYPE_SPRUCE, + WoodType::BIRCH()->id() => StringValues::WOOD_TYPE_BIRCH, + WoodType::JUNGLE()->id() => StringValues::WOOD_TYPE_JUNGLE, + WoodType::ACACIA()->id() => StringValues::WOOD_TYPE_ACACIA, + WoodType::DARK_OAK()->id() => StringValues::WOOD_TYPE_DARK_OAK, + default => throw new BlockStateSerializeException("Invalid Wood type " . $treeType->name()) }); return $this; } diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 5008b3345..1fff31589 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -270,7 +270,7 @@ final class ItemDeserializer{ //TODO: minecraft:cow_spawn_egg //TODO: minecraft:creeper_banner_pattern //TODO: minecraft:creeper_spawn_egg - //TODO: minecraft:crimson_door + $this->map(Ids::CRIMSON_DOOR, fn() => Blocks::CRIMSON_DOOR()->asItem()); //TODO: minecraft:crimson_sign //TODO: minecraft:crossbow $this->map(Ids::CYAN_DYE, fn() => Items::DYE()->setColor(DyeColor::CYAN())); @@ -421,6 +421,7 @@ final class ItemDeserializer{ $this->map(Ids::MAGENTA_DYE, fn() => Items::DYE()->setColor(DyeColor::MAGENTA())); $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); //TODO: minecraft:magma_cube_spawn_egg + $this->map(Ids::MANGROVE_DOOR, fn() => Blocks::MANGROVE_DOOR()->asItem()); //TODO: minecraft:medicine $this->map(Ids::MELON_SEEDS, fn() => Items::MELON_SEEDS()); $this->map(Ids::MELON_SLICE, fn() => Items::MELON()); @@ -592,7 +593,7 @@ final class ItemDeserializer{ $this->map(Ids::VILLAGER_SPAWN_EGG, fn() => Items::VILLAGER_SPAWN_EGG()); //TODO: minecraft:vindicator_spawn_egg //TODO: minecraft:wandering_trader_spawn_egg - //TODO: minecraft:warped_door + $this->map(Ids::WARPED_DOOR, fn() => Blocks::WARPED_DOOR()->asItem()); //TODO: minecraft:warped_fungus_on_a_stick //TODO: minecraft:warped_sign $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 47c84f6e7..e45c98f3f 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -228,18 +228,21 @@ final class ItemSerializer{ $this->mapBlock(Blocks::BIRCH_DOOR(), self::id(Ids::BIRCH_DOOR)); $this->mapBlock(Blocks::BREWING_STAND(), self::id(Ids::BREWING_STAND)); $this->mapBlock(Blocks::CAKE(), self::id(Ids::CAKE)); + $this->mapBlock(Blocks::CRIMSON_DOOR(), self::id(Ids::CRIMSON_DOOR)); $this->mapBlock(Blocks::DARK_OAK_DOOR(), self::id(Ids::DARK_OAK_DOOR)); $this->mapBlock(Blocks::FLOWER_POT(), self::id(Ids::FLOWER_POT)); $this->mapBlock(Blocks::HOPPER(), self::id(Ids::HOPPER)); $this->mapBlock(Blocks::IRON_DOOR(), self::id(Ids::IRON_DOOR)); $this->mapBlock(Blocks::ITEM_FRAME(), self::id(Ids::FRAME)); $this->mapBlock(Blocks::JUNGLE_DOOR(), self::id(Ids::JUNGLE_DOOR)); + $this->mapBlock(Blocks::MANGROVE_DOOR(), self::id(Ids::MANGROVE_DOOR)); $this->mapBlock(Blocks::NETHER_WART(), self::id(Ids::NETHER_WART)); $this->mapBlock(Blocks::OAK_DOOR(), self::id(Ids::WOODEN_DOOR)); $this->mapBlock(Blocks::REDSTONE_COMPARATOR(), self::id(Ids::COMPARATOR)); $this->mapBlock(Blocks::REDSTONE_REPEATER(), self::id(Ids::REPEATER)); $this->mapBlock(Blocks::SPRUCE_DOOR(), self::id(Ids::SPRUCE_DOOR)); $this->mapBlock(Blocks::SUGARCANE(), self::id(Ids::SUGAR_CANE)); + $this->mapBlock(Blocks::WARPED_DOOR(), self::id(Ids::WARPED_DOOR)); $this->mapBlock(Blocks::BED(), fn(Bed $block) => new Data(Ids::BED, DyeColorIdMap::getInstance()->toId($block->getColor()))); $this->mapBlock(Blocks::MOB_HEAD(), fn(Skull $block) => new Data(Ids::SKULL, $block->getSkullType()->getMagicNumber())); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index d8d54924e..97c9bbdb8 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -226,6 +226,17 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("creeper_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::CREEPER())); + $result->registerBlock("crimson_button", fn() => Blocks::CRIMSON_BUTTON()); + $result->registerBlock("crimson_door", fn() => Blocks::CRIMSON_DOOR()); + $result->registerBlock("crimson_fence", fn() => Blocks::CRIMSON_FENCE()); + $result->registerBlock("crimson_fence_gate", fn() => Blocks::CRIMSON_FENCE_GATE()); + $result->registerBlock("crimson_hyphae", fn() => Blocks::CRIMSON_HYPHAE()->setStripped(false)); + $result->registerBlock("crimson_planks", fn() => Blocks::CRIMSON_PLANKS()); + $result->registerBlock("crimson_pressure_plate", fn() => Blocks::CRIMSON_PRESSURE_PLATE()); + $result->registerBlock("crimson_slab", fn() => Blocks::CRIMSON_SLAB()); + $result->registerBlock("crimson_stairs", fn() => Blocks::CRIMSON_STAIRS()); + $result->registerBlock("crimson_stem", fn() => Blocks::CRIMSON_STEM()->setStripped(false)); + $result->registerBlock("crimson_trapdoor", fn() => Blocks::CRIMSON_TRAPDOOR()); $result->registerBlock("cut_red_sandstone", fn() => Blocks::CUT_RED_SANDSTONE()); $result->registerBlock("cut_red_sandstone_slab", fn() => Blocks::CUT_RED_SANDSTONE_SLAB()); $result->registerBlock("cut_sandstone", fn() => Blocks::CUT_SANDSTONE()); @@ -685,6 +696,17 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("log2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("loom", fn() => Blocks::LOOM()); $result->registerBlock("magma", fn() => Blocks::MAGMA()); + $result->registerBlock("mangrove_button", fn() => Blocks::MANGROVE_BUTTON()); + $result->registerBlock("mangrove_door", fn() => Blocks::MANGROVE_DOOR()); + $result->registerBlock("mangrove_fence", fn() => Blocks::MANGROVE_FENCE()); + $result->registerBlock("mangrove_fence_gate", fn() => Blocks::MANGROVE_FENCE_GATE()); + $result->registerBlock("mangrove_log", fn() => Blocks::MANGROVE_LOG()->setStripped(false)); + $result->registerBlock("mangrove_planks", fn() => Blocks::MANGROVE_PLANKS()); + $result->registerBlock("mangrove_pressure_plate", fn() => Blocks::MANGROVE_PRESSURE_PLATE()); + $result->registerBlock("mangrove_slab", fn() => Blocks::MANGROVE_SLAB()); + $result->registerBlock("mangrove_stairs", fn() => Blocks::MANGROVE_STAIRS()); + $result->registerBlock("mangrove_trapdoor", fn() => Blocks::MANGROVE_TRAPDOOR()); + $result->registerBlock("mangrove_wood", fn() => Blocks::MANGROVE_WOOD()->setStripped(false)); $result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER()); $result->registerBlock("melon_block", fn() => Blocks::MELON()); $result->registerBlock("melon_stem", fn() => Blocks::MELON_STEM()); @@ -929,14 +951,20 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("stripped_acacia_wood", fn() => Blocks::ACACIA_WOOD()->setStripped(true)); $result->registerBlock("stripped_birch_log", fn() => Blocks::BIRCH_LOG()->setStripped(true)); $result->registerBlock("stripped_birch_wood", fn() => Blocks::BIRCH_WOOD()->setStripped(true)); + $result->registerBlock("stripped_crimson_hyphae", fn() => Blocks::CRIMSON_HYPHAE()->setStripped(true)); + $result->registerBlock("stripped_crimson_stem", fn() => Blocks::CRIMSON_STEM()->setStripped(true)); $result->registerBlock("stripped_dark_oak_log", fn() => Blocks::DARK_OAK_LOG()->setStripped(true)); $result->registerBlock("stripped_dark_oak_wood", fn() => Blocks::DARK_OAK_WOOD()->setStripped(true)); $result->registerBlock("stripped_jungle_log", fn() => Blocks::JUNGLE_LOG()->setStripped(true)); $result->registerBlock("stripped_jungle_wood", fn() => Blocks::JUNGLE_WOOD()->setStripped(true)); + $result->registerBlock("stripped_mangrove_log", fn() => Blocks::MANGROVE_LOG()->setStripped(true)); + $result->registerBlock("stripped_mangrove_wood", fn() => Blocks::MANGROVE_WOOD()->setStripped(true)); $result->registerBlock("stripped_oak_log", fn() => Blocks::OAK_LOG()->setStripped(true)); $result->registerBlock("stripped_oak_wood", fn() => Blocks::OAK_WOOD()->setStripped(true)); $result->registerBlock("stripped_spruce_log", fn() => Blocks::SPRUCE_LOG()->setStripped(true)); $result->registerBlock("stripped_spruce_wood", fn() => Blocks::SPRUCE_WOOD()->setStripped(true)); + $result->registerBlock("stripped_warped_hyphae", fn() => Blocks::WARPED_HYPHAE()->setStripped(true)); + $result->registerBlock("stripped_warped_stem", fn() => Blocks::WARPED_STEM()->setStripped(true)); $result->registerBlock("sugar_cane", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugar_canes", fn() => Blocks::SUGARCANE()); $result->registerBlock("sugarcane", fn() => Blocks::SUGARCANE()); @@ -968,6 +996,17 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("wall_banner", fn() => Blocks::WALL_BANNER()); $result->registerBlock("wall_coral_fan", fn() => Blocks::WALL_CORAL_FAN()); $result->registerBlock("wall_sign", fn() => Blocks::OAK_WALL_SIGN()); + $result->registerBlock("warped_button", fn() => Blocks::WARPED_BUTTON()); + $result->registerBlock("warped_door", fn() => Blocks::WARPED_DOOR()); + $result->registerBlock("warped_fence", fn() => Blocks::WARPED_FENCE()); + $result->registerBlock("warped_fence_gate", fn() => Blocks::WARPED_FENCE_GATE()); + $result->registerBlock("warped_hyphae", fn() => Blocks::WARPED_HYPHAE()->setStripped(false)); + $result->registerBlock("warped_planks", fn() => Blocks::WARPED_PLANKS()); + $result->registerBlock("warped_pressure_plate", fn() => Blocks::WARPED_PRESSURE_PLATE()); + $result->registerBlock("warped_slab", fn() => Blocks::WARPED_SLAB()); + $result->registerBlock("warped_stairs", fn() => Blocks::WARPED_STAIRS()); + $result->registerBlock("warped_stem", fn() => Blocks::WARPED_STEM()->setStripped(false)); + $result->registerBlock("warped_trapdoor", fn() => Blocks::WARPED_TRAPDOOR()); $result->registerBlock("water", fn() => Blocks::WATER()); $result->registerBlock("water_lily", fn() => Blocks::LILY_PAD()); $result->registerBlock("waterlily", fn() => Blocks::LILY_PAD()); From 386c385a0807ad2998a80144f585a57e5f12424a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 19:07:45 +0100 Subject: [PATCH 243/692] Updated BlockFactory consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 7911379d2..c906ca37e 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5313536":"Oak Planks","5314560":"Oak Sapling","5314561":"Oak Sapling","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366784":"Spruce Planks","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140992":"Birch Planks","5142016":"Birch Sapling","5142017":"Birch Sapling","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281792":"Jungle Planks","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123584":"Acacia Planks","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174784":"Dark Oak Planks","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From ce59228688da87133d32bc59b6483552523ce1f6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 19:45:13 +0100 Subject: [PATCH 244/692] BlockLegacyMetadata: remove unused constants --- .../bedrock/block/BlockLegacyMetadata.php | 231 ------------------ 1 file changed, 231 deletions(-) diff --git a/src/data/bedrock/block/BlockLegacyMetadata.php b/src/data/bedrock/block/BlockLegacyMetadata.php index a465f1274..a8b39201a 100644 --- a/src/data/bedrock/block/BlockLegacyMetadata.php +++ b/src/data/bedrock/block/BlockLegacyMetadata.php @@ -32,123 +32,12 @@ final class BlockLegacyMetadata{ //NOOP } - public const ANVIL_NORMAL = 0; - public const ANVIL_SLIGHTLY_DAMAGED = 4; - public const ANVIL_VERY_DAMAGED = 8; - - public const BAMBOO_FLAG_THICK = 0x01; - public const BAMBOO_FLAG_READY = 0x08; - - public const BAMBOO_LEAF_SIZE_SHIFT = 1; - public const BAMBOO_LEAF_SIZE_MASK = 0x03; - - public const BAMBOO_SAPLING_FLAG_READY = 0x01; - - public const BARREL_FLAG_OPEN = 0x08; - - public const BED_FLAG_HEAD = 0x08; - public const BED_FLAG_OCCUPIED = 0x04; - - public const BEDROCK_FLAG_INFINIBURN = 0x01; - - public const BELL_ATTACHMENT_FLOOR = 0; - public const BELL_ATTACHMENT_CEILING = 1; - public const BELL_ATTACHMENT_ONE_WALL = 2; - public const BELL_ATTACHMENT_TWO_WALLS = 3; - - public const BREWING_STAND_FLAG_EAST = 0x01; - public const BREWING_STAND_FLAG_SOUTHWEST = 0x02; - public const BREWING_STAND_FLAG_NORTHWEST = 0x04; - - public const BUTTON_FLAG_POWERED = 0x08; - - public const CHEMISTRY_COMPOUND_CREATOR = 0; - public const CHEMISTRY_MATERIAL_REDUCER = 4; - public const CHEMISTRY_ELEMENT_CONSTRUCTOR = 8; - public const CHEMISTRY_LAB_TABLE = 12; - - public const COLORED_TORCH_BP_BLUE = 0; - public const COLORED_TORCH_BP_PURPLE = 8; - public const COLORED_TORCH_RG_RED = 0; - public const COLORED_TORCH_RG_GREEN = 8; - - public const CORAL_BLOCK_FLAG_DEAD = 0x8; - - public const CORAL_FAN_EAST_WEST = 0; - public const CORAL_FAN_NORTH_SOUTH = 1; - public const CORAL_FAN_TYPE_MASK = 0x7; - - public const CORAL_FAN_HANG_FLAG_DEAD = 0x2; - - public const CORAL_FAN_HANG_TUBE = 0; - public const CORAL_FAN_HANG_BRAIN = 1; - public const CORAL_FAN_HANG2_BUBBLE = 0; - public const CORAL_FAN_HANG2_FIRE = 1; - public const CORAL_FAN_HANG3_HORN = 0; - public const CORAL_FAN_HANG_TYPE_MASK = 0x1; - public const CORAL_VARIANT_TUBE = 0; public const CORAL_VARIANT_BRAIN = 1; public const CORAL_VARIANT_BUBBLE = 2; public const CORAL_VARIANT_FIRE = 3; public const CORAL_VARIANT_HORN = 4; - public const DIRT_FLAG_COARSE = 0x1; - - public const DOOR_FLAG_TOP = 0x08; - public const DOOR_BOTTOM_FLAG_OPEN = 0x04; - public const DOOR_TOP_FLAG_RIGHT = 0x01; - - public const DOUBLE_PLANT_SUNFLOWER = 0; - public const DOUBLE_PLANT_LILAC = 1; - public const DOUBLE_PLANT_TALLGRASS = 2; - public const DOUBLE_PLANT_LARGE_FERN = 3; - public const DOUBLE_PLANT_ROSE_BUSH = 4; - public const DOUBLE_PLANT_PEONY = 5; - - public const DOUBLE_PLANT_FLAG_TOP = 0x08; - - public const END_PORTAL_FRAME_FLAG_EYE = 0x04; - - public const FENCE_GATE_FLAG_OPEN = 0x04; - public const FENCE_GATE_FLAG_IN_WALL = 0x08; - - public const FLOWER_POPPY = 0; - public const FLOWER_BLUE_ORCHID = 1; - public const FLOWER_ALLIUM = 2; - public const FLOWER_AZURE_BLUET = 3; - public const FLOWER_RED_TULIP = 4; - public const FLOWER_ORANGE_TULIP = 5; - public const FLOWER_WHITE_TULIP = 6; - public const FLOWER_PINK_TULIP = 7; - public const FLOWER_OXEYE_DAISY = 8; - public const FLOWER_CORNFLOWER = 9; - public const FLOWER_LILY_OF_THE_VALLEY = 10; - - public const FLOWER_POT_FLAG_OCCUPIED = 0x01; - - public const HOPPER_FLAG_POWERED = 0x08; - - public const INFESTED_STONE = 0; - public const INFESTED_COBBLESTONE = 1; - public const INFESTED_STONE_BRICK = 2; - public const INFESTED_STONE_BRICK_MOSSY = 3; - public const INFESTED_STONE_BRICK_CRACKED = 4; - public const INFESTED_STONE_BRICK_CHISELED = 5; - - public const ITEM_FRAME_FLAG_HAS_MAP = 0x04; - - public const LANTERN_FLAG_HANGING = 0x01; - - public const LEAVES_FLAG_NO_DECAY = 0x04; - public const LEAVES_FLAG_CHECK_DECAY = 0x08; - - public const LECTERN_FLAG_POWERED = 0x04; - - public const LEVER_FLAG_POWERED = 0x08; - - public const LIQUID_FLAG_FALLING = 0x08; - public const MUSHROOM_BLOCK_ALL_PORES = 0; public const MUSHROOM_BLOCK_CAP_NORTHWEST_CORNER = 1; public const MUSHROOM_BLOCK_CAP_NORTH_SIDE = 2; @@ -164,27 +53,6 @@ final class BlockLegacyMetadata{ public const MUSHROOM_BLOCK_ALL_CAP = 14; public const MUSHROOM_BLOCK_ALL_STEM = 15; - public const NETHER_PORTAL_AXIS_X = 1; - public const NETHER_PORTAL_AXIS_Z = 2; - - public const NETHER_REACTOR_INACTIVE = 0; - public const NETHER_REACTOR_ACTIVE = 1; - public const NETHER_REACTOR_USED = 2; - - public const PRESSURE_PLATE_FLAG_POWERED = 0x01; - - public const PRISMARINE_NORMAL = 0; - public const PRISMARINE_DARK = 1; - public const PRISMARINE_BRICKS = 2; - - public const PURPUR_NORMAL = 0; - public const PURPUR_PILLAR = 2; - - public const QUARTZ_NORMAL = 0; - public const QUARTZ_CHISELED = 1; - public const QUARTZ_PILLAR = 2; - public const QUARTZ_SMOOTH = 3; - public const RAIL_STRAIGHT_NORTH_SOUTH = 0; public const RAIL_STRAIGHT_EAST_WEST = 1; public const RAIL_ASCENDING_EAST = 2; @@ -196,107 +64,8 @@ final class BlockLegacyMetadata{ public const RAIL_CURVE_NORTHWEST = 8; public const RAIL_CURVE_NORTHEAST = 9; - public const REDSTONE_COMPARATOR_FLAG_SUBTRACT = 0x04; - public const REDSTONE_COMPARATOR_FLAG_POWERED = 0x08; - - public const REDSTONE_RAIL_FLAG_POWERED = 0x08; - - public const SANDSTONE_NORMAL = 0; - public const SANDSTONE_CHISELED = 1; - public const SANDSTONE_CUT = 2; - public const SANDSTONE_SMOOTH = 3; - - public const SAPLING_FLAG_READY = 0x08; - - public const SEA_PICKLE_FLAG_NOT_UNDERWATER = 0x04; - - public const SKULL_FLAG_NO_DROPS = 0x08; - - public const SLAB_FLAG_UPPER = 0x08; - - public const SPONGE_FLAG_WET = 0x01; - - public const STAIR_FLAG_UPSIDE_DOWN = 0x04; - - public const STONE_NORMAL = 0; - public const STONE_GRANITE = 1; - public const STONE_POLISHED_GRANITE = 2; - public const STONE_DIORITE = 3; - public const STONE_POLISHED_DIORITE = 4; - public const STONE_ANDESITE = 5; - public const STONE_POLISHED_ANDESITE = 6; - - public const STONE_BRICK_NORMAL = 0; - public const STONE_BRICK_MOSSY = 1; - public const STONE_BRICK_CRACKED = 2; - public const STONE_BRICK_CHISELED = 3; - - public const STONE_SLAB_SMOOTH_STONE = 0; - public const STONE_SLAB_SANDSTONE = 1; - public const STONE_SLAB_FAKE_WOODEN = 2; - public const STONE_SLAB_COBBLESTONE = 3; - public const STONE_SLAB_BRICK = 4; - public const STONE_SLAB_STONE_BRICK = 5; - public const STONE_SLAB_QUARTZ = 6; - public const STONE_SLAB_NETHER_BRICK = 7; - public const STONE_SLAB2_RED_SANDSTONE = 0; - public const STONE_SLAB2_PURPUR = 1; - public const STONE_SLAB2_PRISMARINE = 2; - public const STONE_SLAB2_DARK_PRISMARINE = 3; - public const STONE_SLAB2_PRISMARINE_BRICKS = 4; - public const STONE_SLAB2_MOSSY_COBBLESTONE = 5; - public const STONE_SLAB2_SMOOTH_SANDSTONE = 6; - public const STONE_SLAB2_RED_NETHER_BRICK = 7; - public const STONE_SLAB3_END_STONE_BRICK = 0; - public const STONE_SLAB3_SMOOTH_RED_SANDSTONE = 1; - public const STONE_SLAB3_POLISHED_ANDESITE = 2; - public const STONE_SLAB3_ANDESITE = 3; - public const STONE_SLAB3_DIORITE = 4; - public const STONE_SLAB3_POLISHED_DIORITE = 5; - public const STONE_SLAB3_GRANITE = 6; - public const STONE_SLAB3_POLISHED_GRANITE = 7; - public const STONE_SLAB4_MOSSY_STONE_BRICK = 0; - public const STONE_SLAB4_SMOOTH_QUARTZ = 1; - public const STONE_SLAB4_STONE = 2; - public const STONE_SLAB4_CUT_SANDSTONE = 3; - public const STONE_SLAB4_CUT_RED_SANDSTONE = 4; - - public const TALLGRASS_NORMAL = 1; - public const TALLGRASS_FERN = 2; - - public const TNT_FLAG_UNSTABLE = 0x01; - public const TNT_FLAG_UNDERWATER = 0x02; - - public const TRAPDOOR_FLAG_UPPER = 0x04; - public const TRAPDOOR_FLAG_OPEN = 0x08; - - public const TRIPWIRE_FLAG_TRIGGERED = 0x01; - public const TRIPWIRE_FLAG_SUSPENDED = 0x02; - public const TRIPWIRE_FLAG_CONNECTED = 0x04; - public const TRIPWIRE_FLAG_DISARMED = 0x08; - - public const TRIPWIRE_HOOK_FLAG_CONNECTED = 0x04; - public const TRIPWIRE_HOOK_FLAG_POWERED = 0x08; - public const VINE_FLAG_SOUTH = 0x01; public const VINE_FLAG_WEST = 0x02; public const VINE_FLAG_NORTH = 0x04; public const VINE_FLAG_EAST = 0x08; - - public const WALL_COBBLESTONE = 0; - public const WALL_MOSSY_COBBLESTONE = 1; - public const WALL_GRANITE = 2; - public const WALL_DIORITE = 3; - public const WALL_ANDESITE = 4; - public const WALL_SANDSTONE = 5; - public const WALL_BRICK = 6; - public const WALL_STONE_BRICK = 7; - public const WALL_MOSSY_STONE_BRICK = 8; - public const WALL_NETHER_BRICK = 9; - public const WALL_END_STONE_BRICK = 10; - public const WALL_PRISMARINE = 11; - public const WALL_RED_SANDSTONE = 12; - public const WALL_RED_NETHER_BRICK = 13; - - public const WOOD_FLAG_STRIPPED = 0x8; } From 6604d22cebe55f2b0d1a28b9b7b56c883eb33028 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 19:53:34 +0100 Subject: [PATCH 245/692] BlockLegacyIdHelper: clean up code --- src/block/BlockLegacyIdHelper.php | 236 ++++++++++++------------------ 1 file changed, 91 insertions(+), 145 deletions(-) diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 462257252..57386510f 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -79,18 +79,18 @@ final class BlockLegacyIdHelper{ } public static function getLogIdentifier(WoodType $treeType) : BID{ - return match($treeType->id()){ - WoodType::OAK()->id() => new BID(Ids::OAK_LOG), - WoodType::SPRUCE()->id() => new BID(Ids::SPRUCE_LOG), - WoodType::BIRCH()->id() => new BID(Ids::BIRCH_LOG), - WoodType::JUNGLE()->id() => new BID(Ids::JUNGLE_LOG), - WoodType::ACACIA()->id() => new BID(Ids::ACACIA_LOG), - WoodType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LOG), - WoodType::MANGROVE()->id() => new BID(Ids::MANGROVE_LOG), - WoodType::CRIMSON()->id() => new BID(Ids::CRIMSON_STEM), - WoodType::WARPED()->id() => new BID(Ids::WARPED_STEM), + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_LOG, + WoodType::SPRUCE()->id() => Ids::SPRUCE_LOG, + WoodType::BIRCH()->id() => Ids::BIRCH_LOG, + WoodType::JUNGLE()->id() => Ids::JUNGLE_LOG, + WoodType::ACACIA()->id() => Ids::ACACIA_LOG, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_LOG, + WoodType::MANGROVE()->id() => Ids::MANGROVE_LOG, + WoodType::CRIMSON()->id() => Ids::CRIMSON_STEM, + WoodType::WARPED()->id() => Ids::WARPED_STEM, default => throw new AssumptionFailedError("All tree types should be covered") - }; + }); } public static function getAllSidedLogIdentifier(WoodType $treeType) : BID{ @@ -109,15 +109,15 @@ final class BlockLegacyIdHelper{ } public static function getLeavesIdentifier(TreeType $treeType) : BID{ - return match($treeType->id()){ - TreeType::OAK()->id() => new BID(Ids::OAK_LEAVES), - TreeType::SPRUCE()->id() => new BID(Ids::SPRUCE_LEAVES), - TreeType::BIRCH()->id() => new BID(Ids::BIRCH_LEAVES), - TreeType::JUNGLE()->id() => new BID(Ids::JUNGLE_LEAVES), - TreeType::ACACIA()->id() => new BID(Ids::ACACIA_LEAVES), - TreeType::DARK_OAK()->id() => new BID(Ids::DARK_OAK_LEAVES), + return new BID(match($treeType->id()){ + TreeType::OAK()->id() => Ids::OAK_LEAVES, + TreeType::SPRUCE()->id() => Ids::SPRUCE_LEAVES, + TreeType::BIRCH()->id() => Ids::BIRCH_LEAVES, + TreeType::JUNGLE()->id() => Ids::JUNGLE_LEAVES, + TreeType::ACACIA()->id() => Ids::ACACIA_LEAVES, + TreeType::DARK_OAK()->id() => Ids::DARK_OAK_LEAVES, default => throw new AssumptionFailedError("All tree types should be covered") - }; + }); } public static function getSaplingIdentifier(TreeType $treeType) : BID{ @@ -179,146 +179,92 @@ final class BlockLegacyIdHelper{ } public static function getWoodenTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_TRAPDOOR); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_TRAPDOOR); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_TRAPDOOR); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_TRAPDOOR); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_TRAPDOOR); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_TRAPDOOR); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_TRAPDOOR); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_TRAPDOOR); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_TRAPDOOR); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_TRAPDOOR, + WoodType::SPRUCE()->id() => Ids::SPRUCE_TRAPDOOR, + WoodType::BIRCH()->id() => Ids::BIRCH_TRAPDOOR, + WoodType::JUNGLE()->id() => Ids::JUNGLE_TRAPDOOR, + WoodType::ACACIA()->id() => Ids::ACACIA_TRAPDOOR, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_TRAPDOOR, + WoodType::MANGROVE()->id() => Ids::MANGROVE_TRAPDOOR, + WoodType::CRIMSON()->id() => Ids::CRIMSON_TRAPDOOR, + WoodType::WARPED()->id() => Ids::WARPED_TRAPDOOR, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } public static function getWoodenButtonIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_BUTTON); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_BUTTON); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_BUTTON); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_BUTTON); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_BUTTON); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_BUTTON); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_BUTTON); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_BUTTON); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_BUTTON); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_BUTTON, + WoodType::SPRUCE()->id() => Ids::SPRUCE_BUTTON, + WoodType::BIRCH()->id() => Ids::BIRCH_BUTTON, + WoodType::JUNGLE()->id() => Ids::JUNGLE_BUTTON, + WoodType::ACACIA()->id() => Ids::ACACIA_BUTTON, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_BUTTON, + WoodType::MANGROVE()->id() => Ids::MANGROVE_BUTTON, + WoodType::CRIMSON()->id() => Ids::CRIMSON_BUTTON, + WoodType::WARPED()->id() => Ids::WARPED_BUTTON, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } public static function getWoodenPressurePlateIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_PRESSURE_PLATE); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_PRESSURE_PLATE); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_PRESSURE_PLATE); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_PRESSURE_PLATE); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_PRESSURE_PLATE); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_PRESSURE_PLATE); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_PRESSURE_PLATE); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_PRESSURE_PLATE); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_PRESSURE_PLATE); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_PRESSURE_PLATE, + WoodType::SPRUCE()->id() => Ids::SPRUCE_PRESSURE_PLATE, + WoodType::BIRCH()->id() => Ids::BIRCH_PRESSURE_PLATE, + WoodType::JUNGLE()->id() => Ids::JUNGLE_PRESSURE_PLATE, + WoodType::ACACIA()->id() => Ids::ACACIA_PRESSURE_PLATE, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_PRESSURE_PLATE, + WoodType::MANGROVE()->id() => Ids::MANGROVE_PRESSURE_PLATE, + WoodType::CRIMSON()->id() => Ids::CRIMSON_PRESSURE_PLATE, + WoodType::WARPED()->id() => Ids::WARPED_PRESSURE_PLATE, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } public static function getWoodenDoorIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_DOOR); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_DOOR); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_DOOR); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_DOOR); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_DOOR); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_DOOR); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_DOOR); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_DOOR); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_DOOR); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_DOOR, + WoodType::SPRUCE()->id() => Ids::SPRUCE_DOOR, + WoodType::BIRCH()->id() => Ids::BIRCH_DOOR, + WoodType::JUNGLE()->id() => Ids::JUNGLE_DOOR, + WoodType::ACACIA()->id() => Ids::ACACIA_DOOR, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_DOOR, + WoodType::MANGROVE()->id() => Ids::MANGROVE_DOOR, + WoodType::CRIMSON()->id() => Ids::CRIMSON_DOOR, + WoodType::WARPED()->id() => Ids::WARPED_DOOR, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } public static function getWoodenFenceGateIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_FENCE_GATE); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_FENCE_GATE); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_FENCE_GATE); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_FENCE_GATE); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_FENCE_GATE); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_FENCE_GATE); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_FENCE_GATE); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_FENCE_GATE); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_FENCE_GATE); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_FENCE_GATE, + WoodType::SPRUCE()->id() => Ids::SPRUCE_FENCE_GATE, + WoodType::BIRCH()->id() => Ids::BIRCH_FENCE_GATE, + WoodType::JUNGLE()->id() => Ids::JUNGLE_FENCE_GATE, + WoodType::ACACIA()->id() => Ids::ACACIA_FENCE_GATE, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_FENCE_GATE, + WoodType::MANGROVE()->id() => Ids::MANGROVE_FENCE_GATE, + WoodType::CRIMSON()->id() => Ids::CRIMSON_FENCE_GATE, + WoodType::WARPED()->id() => Ids::WARPED_FENCE_GATE, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } public static function getWoodenStairsIdentifier(WoodType $treeType) : BlockIdentifier{ - switch($treeType->id()){ - case WoodType::OAK()->id(): - return new BID(Ids::OAK_STAIRS); - case WoodType::SPRUCE()->id(): - return new BID(Ids::SPRUCE_STAIRS); - case WoodType::BIRCH()->id(): - return new BID(Ids::BIRCH_STAIRS); - case WoodType::JUNGLE()->id(): - return new BID(Ids::JUNGLE_STAIRS); - case WoodType::ACACIA()->id(): - return new BID(Ids::ACACIA_STAIRS); - case WoodType::DARK_OAK()->id(): - return new BID(Ids::DARK_OAK_STAIRS); - case WoodType::MANGROVE()->id(): - return new BID(Ids::MANGROVE_STAIRS); - case WoodType::CRIMSON()->id(): - return new BID(Ids::CRIMSON_STAIRS); - case WoodType::WARPED()->id(): - return new BID(Ids::WARPED_STAIRS); - } - throw new AssumptionFailedError("Switch should cover all wood types"); + return new BID(match($treeType->id()){ + WoodType::OAK()->id() => Ids::OAK_STAIRS, + WoodType::SPRUCE()->id() => Ids::SPRUCE_STAIRS, + WoodType::BIRCH()->id() => Ids::BIRCH_STAIRS, + WoodType::JUNGLE()->id() => Ids::JUNGLE_STAIRS, + WoodType::ACACIA()->id() => Ids::ACACIA_STAIRS, + WoodType::DARK_OAK()->id() => Ids::DARK_OAK_STAIRS, + WoodType::MANGROVE()->id() => Ids::MANGROVE_STAIRS, + WoodType::CRIMSON()->id() => Ids::CRIMSON_STAIRS, + WoodType::WARPED()->id() => Ids::WARPED_STAIRS, + default => throw new AssumptionFailedError("All wood types should be covered") + }); } } From cbebb70af6814227ec89317837a5f808190769b6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 19:58:04 +0100 Subject: [PATCH 246/692] Planks: remove useless constructor --- src/block/Planks.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/block/Planks.php b/src/block/Planks.php index 23c9fe4a8..0eca22c24 100644 --- a/src/block/Planks.php +++ b/src/block/Planks.php @@ -23,17 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\WoodType; use pocketmine\block\utils\WoodTypeTrait; class Planks extends Opaque{ use WoodTypeTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, WoodType $woodType){ - $this->woodType = $woodType; - parent::__construct($idInfo, $name, $breakInfo); - } - public function getFuelTime() : int{ return 300; } From 2c33d8429e3cdf0c44d44e99e73d1bb97e4942f0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 3 Jul 2022 20:08:56 +0100 Subject: [PATCH 247/692] tests: remove unnecessary Block::getName() override --- tests/phpunit/block/OutOfBoundsBlock.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/phpunit/block/OutOfBoundsBlock.php b/tests/phpunit/block/OutOfBoundsBlock.php index 21cbf9a9f..6a4a2edcb 100644 --- a/tests/phpunit/block/OutOfBoundsBlock.php +++ b/tests/phpunit/block/OutOfBoundsBlock.php @@ -25,7 +25,4 @@ namespace pocketmine\block; class OutOfBoundsBlock extends Block{ - public function getName() : string{ - return "Out of Bounds Block"; - } } From 17abd50f69d5c2cc379aabf8920e0fe38bd636ae Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 14:56:50 +0100 Subject: [PATCH 248/692] Publish script used to generate BlockTypeNames, BlockStateNames and BlockStateStringValues --- build/generate-block-serializer-consts.php | 181 ++++++++++++++++++ src/data/bedrock/block/BlockStateNames.php | 6 + .../bedrock/block/BlockStateStringValues.php | 6 + src/data/bedrock/block/BlockTypeNames.php | 1 - 4 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 build/generate-block-serializer-consts.php diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php new file mode 100644 index 000000000..b1dd98c65 --- /dev/null +++ b/build/generate-block-serializer-consts.php @@ -0,0 +1,181 @@ + + */ + public array $seenTypes = []; + /** + * @var string[][] + * @phpstan-var array> + */ + public array $seenStateValues = []; +} + +function generateBlockPaletteReport(BlockStateDictionary $dictionary) : BlockPaletteReport{ + $result = new BlockPaletteReport(); + + foreach($dictionary->getStates() as $state){ + $stateData = $state->getStateData(); + $name = $stateData->getName(); + $result->seenTypes[$name] = $name; + foreach($stateData->getStates() as $k => $v){ + $result->seenStateValues[$k][$v->getValue()] = $v->getValue(); + asort($result->seenStateValues[$k]); + } + } + + ksort($result->seenTypes, SORT_STRING); + ksort($result->seenStateValues, SORT_STRING); + return $result; +} + +function constifyMcId(string $id) : string{ + return strtoupper(explode(":", $id, 2)[1]); +} + +function generateClassHeader(string $className) : string{ + $namespace = substr($className, 0, strrpos($className, "\\")); + $shortName = substr($className, strrpos($className, "\\") + 1); + return <<
$seenIds + */ +function generateBlockIds(array $seenIds) : void{ + $output = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/block/BlockTypeNames.php', 'wb')); + + fwrite($output, generateClassHeader(BlockTypeNames::class)); + + foreach($seenIds as $id){ + fwrite($output, "\tpublic const " . constifyMcId($id) . " = \"" . $id . "\";\n"); + } + + fwrite($output, "}\n"); + fclose($output); +} + +function generateBlockStateNames(BlockPaletteReport $data) : void{ + $output = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/block/BlockStateNames.php', 'wb')); + + fwrite($output, generateClassHeader(BlockStateNames::class)); + foreach(Utils::stringifyKeys($data->seenStateValues) as $state => $values){ + $constName = mb_strtoupper($state, 'US-ASCII'); + fwrite($output, "\tpublic const $constName = \"$state\";\n"); + } + + fwrite($output, "}\n"); + fclose($output); +} + +function generateBlockStringValues(BlockPaletteReport $data) : void{ + $output = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/block/BlockStateStringValues.php', 'wb')); + + fwrite($output, generateClassHeader(BlockStateStringValues::class)); + foreach(Utils::stringifyKeys($data->seenStateValues) as $stateName => $values){ + $anyWritten = false; + sort($values, SORT_STRING); + foreach($values as $value){ + if(!is_string($value)){ + continue; + } + $anyWritten = true; + $constName = mb_strtoupper($stateName . "_" . $value, 'US-ASCII'); + fwrite($output, "\tpublic const $constName = \"$value\";\n"); + } + if($anyWritten){ + fwrite($output, "\n"); + } + } + fwrite($output, "}\n"); + fclose($output); +} + +if(count($argv) !== 2){ + fwrite(STDERR, "This script regenerates BlockTypeNames, BlockStateNames and BlockStateStringValues from a given palette file\n"); + fwrite(STDERR, "Required arguments: path to block palette file\n"); + exit(1); +} + +$palettePath = $argv[1]; +$paletteRaw = file_get_contents($palettePath); +if($paletteRaw === false){ + fwrite(STDERR, "Failed to read block palette file\n"); + exit(1); +} + +try{ + $states = array_map( + fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), + (new NetworkNbtSerializer())->readMultiple($paletteRaw) + ); +}catch(NbtException){ + fwrite(STDERR, "Invalid block palette file $argv[1]\n"); + exit(1); +} +$entries = []; +$fakeMeta = []; +foreach($states as $state){ + $fakeMeta[$state->getName()] ??= 0; + $entries[] = new BlockStateDictionaryEntry($state, $fakeMeta[$state->getName()]++); +} +$dictionary = new BlockStateDictionary($entries); +$report = generateBlockPaletteReport($dictionary); +generateBlockIds($report->seenTypes); +generateBlockStateNames($report); +generateBlockStringValues($report); + +echo "Done. Don't forget to run CS fixup after generating code.\n"; diff --git a/src/data/bedrock/block/BlockStateNames.php b/src/data/bedrock/block/BlockStateNames.php index cfd90f1c3..31973c01e 100644 --- a/src/data/bedrock/block/BlockStateNames.php +++ b/src/data/bedrock/block/BlockStateNames.php @@ -23,7 +23,13 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; +/** + * This class is generated automatically from the block palette for the current version. Do not edit it manually. + */ final class BlockStateNames{ + private function __construct(){ + //NOOP + } public const ACTIVE = "active"; public const AGE = "age"; diff --git a/src/data/bedrock/block/BlockStateStringValues.php b/src/data/bedrock/block/BlockStateStringValues.php index 711bd58fa..128e04d38 100644 --- a/src/data/bedrock/block/BlockStateStringValues.php +++ b/src/data/bedrock/block/BlockStateStringValues.php @@ -23,7 +23,13 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; +/** + * This class is generated automatically from the block palette for the current version. Do not edit it manually. + */ final class BlockStateStringValues{ + private function __construct(){ + //NOOP + } public const ATTACHMENT_HANGING = "hanging"; public const ATTACHMENT_MULTIPLE = "multiple"; diff --git a/src/data/bedrock/block/BlockTypeNames.php b/src/data/bedrock/block/BlockTypeNames.php index 9eee5d134..9df763773 100644 --- a/src/data/bedrock/block/BlockTypeNames.php +++ b/src/data/bedrock/block/BlockTypeNames.php @@ -765,5 +765,4 @@ final class BlockTypeNames{ public const YELLOW_CANDLE_CAKE = "minecraft:yellow_candle_cake"; public const YELLOW_FLOWER = "minecraft:yellow_flower"; public const YELLOW_GLAZED_TERRACOTTA = "minecraft:yellow_glazed_terracotta"; - } From 03b80770541fd3e9084fc8998d0170f77a3ed677 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 14:58:21 +0100 Subject: [PATCH 249/692] generate-block-serializer-consts: don't pollute the global namespace --- build/generate-block-serializer-consts.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php index b1dd98c65..0f9b47251 100644 --- a/build/generate-block-serializer-consts.php +++ b/build/generate-block-serializer-consts.php @@ -21,6 +21,8 @@ declare(strict_types=1); +namespace pocketmine\build\generate_block_serializer_consts; + use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockStateStringValues; From afd37ca892a2714571050f74db8f52620ed5b68b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 15:13:48 +0100 Subject: [PATCH 250/692] Fix PHPStan errors --- build/generate-block-serializer-consts.php | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php index 0f9b47251..d2ea78481 100644 --- a/build/generate-block-serializer-consts.php +++ b/build/generate-block-serializer-consts.php @@ -33,7 +33,25 @@ use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\network\mcpe\convert\BlockStateDictionaryEntry; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; +use function array_map; +use function array_values; +use function asort; +use function count; +use function dirname; +use function explode; +use function fclose; +use function file_get_contents; +use function fopen; +use function fwrite; +use function is_string; +use function ksort; +use function mb_strtoupper; +use function sort; +use function strrpos; +use function strtoupper; +use function substr; require dirname(__DIR__) . '/vendor/autoload.php'; @@ -45,7 +63,7 @@ class BlockPaletteReport{ public array $seenTypes = []; /** * @var string[][] - * @phpstan-var array> + * @phpstan-var array> */ public array $seenStateValues = []; } @@ -73,8 +91,12 @@ function constifyMcId(string $id) : string{ } function generateClassHeader(string $className) : string{ - $namespace = substr($className, 0, strrpos($className, "\\")); - $shortName = substr($className, strrpos($className, "\\") + 1); + $backslashPos = strrpos($className, "\\"); + if($backslashPos === false){ + throw new AssumptionFailedError("Expected a namespaced class FQN"); + } + $namespace = substr($className, 0, $backslashPos); + $shortName = substr($className, $backslashPos + 1); return <<
seenTypes); +generateBlockIds(array_values($report->seenTypes)); generateBlockStateNames($report); generateBlockStringValues($report); From d9c61f0492c2d9f66f34e65fa22232708db2db23 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 15:43:13 +0100 Subject: [PATCH 251/692] Publish script used to generate ItemTypeIds --- build/generate-item-ids.php | 95 +++++++++++++++++++ src/data/bedrock/item/ItemTypeIds.php | 3 + .../mcpe/convert/GlobalItemTypeDictionary.php | 22 +---- .../ItemTypeDictionaryFromDataHelper.php | 52 ++++++++++ 4 files changed, 152 insertions(+), 20 deletions(-) create mode 100644 build/generate-item-ids.php create mode 100644 src/network/mcpe/convert/ItemTypeDictionaryFromDataHelper.php diff --git a/build/generate-item-ids.php b/build/generate-item-ids.php new file mode 100644 index 000000000..c0aa11180 --- /dev/null +++ b/build/generate-item-ids.php @@ -0,0 +1,95 @@ +getEntries() as $entry){ + if($entry->getNumericId() < 256){ //blockitems are serialized via BlockStateSerializer + continue; + } + $ids[$entry->getStringId()] = $entry->getStringId(); + } + asort($ids, SORT_STRING); + + $file = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/item/ItemTypeIds.php', 'wb')); + + fwrite($file, <<<'HEADER' + $entry){ - if(!is_array($entry) || !is_string($name) || !isset($entry["component_based"], $entry["runtime_id"]) || !is_bool($entry["component_based"]) || !is_int($entry["runtime_id"])){ - throw new AssumptionFailedError("Invalid item list format"); - } - $params[] = new ItemTypeEntry($name, $entry["runtime_id"], $entry["component_based"]); - } - return new self(new ItemTypeDictionary($params)); + $dictionary = ItemTypeDictionaryFromDataHelper::loadFromString($data); + return new self($dictionary); } public function __construct( diff --git a/src/network/mcpe/convert/ItemTypeDictionaryFromDataHelper.php b/src/network/mcpe/convert/ItemTypeDictionaryFromDataHelper.php new file mode 100644 index 000000000..5d06758ef --- /dev/null +++ b/src/network/mcpe/convert/ItemTypeDictionaryFromDataHelper.php @@ -0,0 +1,52 @@ + $entry){ + if(!is_array($entry) || !is_string($name) || !isset($entry["component_based"], $entry["runtime_id"]) || !is_bool($entry["component_based"]) || !is_int($entry["runtime_id"])){ + throw new AssumptionFailedError("Invalid item list format"); + } + $params[] = new ItemTypeEntry($name, $entry["runtime_id"], $entry["component_based"]); + } + return new ItemTypeDictionary($params); + } +} From e44a291697b7e3633be6ae2e01eb7f650590b502 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 15:46:24 +0100 Subject: [PATCH 252/692] Rename ItemTypeIds -> ItemTypeNames for consistency's sake --- .../{generate-item-ids.php => generate-item-type-names.php} | 6 +++--- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 2 +- .../bedrock/item/{ItemTypeIds.php => ItemTypeNames.php} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename build/{generate-item-ids.php => generate-item-type-names.php} (92%) rename src/data/bedrock/item/{ItemTypeIds.php => ItemTypeNames.php} (99%) diff --git a/build/generate-item-ids.php b/build/generate-item-type-names.php similarity index 92% rename from build/generate-item-ids.php rename to build/generate-item-type-names.php index c0aa11180..2da9b263e 100644 --- a/build/generate-item-ids.php +++ b/build/generate-item-type-names.php @@ -53,7 +53,7 @@ function generateItemIds(ItemTypeDictionary $dictionary) : void{ } asort($ids, SORT_STRING); - $file = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/item/ItemTypeIds.php', 'wb')); + $file = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => fopen(dirname(__DIR__) . '/src/data/bedrock/item/ItemTypeNames.php', 'wb')); fwrite($file, <<<'HEADER' Date: Mon, 4 Jul 2022 15:47:28 +0100 Subject: [PATCH 253/692] ItemTranslator: use GlobalItemDataHandlers this ensures that plugin serializers will actually be used on the network. --- src/network/mcpe/convert/ItemTranslator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index b04e9f624..eb36ecdd2 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -32,7 +32,7 @@ use pocketmine\item\Item; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; -use pocketmine\world\format\io\GlobalBlockStateHandlers; +use pocketmine\world\format\io\GlobalItemDataHandlers; /** * This class handles translation between network item ID+metadata to PocketMine-MP internal ID+metadata and vice versa. @@ -46,8 +46,8 @@ final class ItemTranslator{ return new self( GlobalItemTypeDictionary::getInstance()->getDictionary(), RuntimeBlockMapping::getInstance()->getBlockStateDictionary(), - new ItemSerializer(GlobalBlockStateHandlers::getSerializer()), - new ItemDeserializer(GlobalBlockStateHandlers::getDeserializer()) + GlobalItemDataHandlers::getSerializer(), + GlobalItemDataHandlers::getDeserializer() ); } From 45be6e19f31af63494d5e3d02b7e7aa2cb08fc7a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 16:17:27 +0100 Subject: [PATCH 254/692] Update BedrockBlockUpgradeSchema --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 8b5a59aab..fb0e297d2 100644 --- a/composer.lock +++ b/composer.lock @@ -253,12 +253,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "c7aa3e04ae36dbb9a97905a2595f4453d914aa5c" + "reference": "680ed5e351b92959c365b36bebc2698228b59834" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/c7aa3e04ae36dbb9a97905a2595f4453d914aa5c", - "reference": "c7aa3e04ae36dbb9a97905a2595f4453d914aa5c", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/680ed5e351b92959c365b36bebc2698228b59834", + "reference": "680ed5e351b92959c365b36bebc2698228b59834", "shasum": "" }, "default-branch": true, @@ -272,7 +272,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-06-08T13:20:45+00:00" + "time": "2022-07-03T19:17:51+00:00" }, { "name": "pocketmine/bedrock-data", From 59c5770cf269ba66f2f08cecef6f8b9b1d3dbbb3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 20:11:39 +0100 Subject: [PATCH 255/692] Durable: do not write Damage tag if damage is zero fixes creative inventory getting borked to hell --- src/item/Durable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/Durable.php b/src/item/Durable.php index a2300576b..5d5bc9092 100644 --- a/src/item/Durable.php +++ b/src/item/Durable.php @@ -131,6 +131,6 @@ abstract class Durable extends Item{ protected function serializeCompoundTag(CompoundTag $tag) : void{ parent::serializeCompoundTag($tag); $this->unbreakable ? $tag->setByte("Unbreakable", 1) : $tag->removeTag("Unbreakable"); - $tag->setInt("Damage", $this->damage); + $this->damage !== 0 ? $tag->setInt("Damage", $this->damage) : $tag->removeTag("Damage"); } } From 9f0b32e748e4052a4f81d841817d15adca5a05bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 20:28:07 +0100 Subject: [PATCH 256/692] Updated creative and crafting data to 1.19 --- composer.lock | 8 +- src/Server.php | 2 +- src/crafting/CraftingManager.php | 4 +- .../CraftingManagerFromDataHelper.php | 280 +++++++++++++----- src/crafting/PotionContainerChangeRecipe.php | 10 +- src/crafting/PotionTypeRecipe.php | 16 +- src/crafting/json/FurnaceRecipeData.php | 42 +++ src/crafting/json/ItemStackData.php | 43 +++ .../json/PotionContainerChangeRecipeData.php | 41 +++ src/crafting/json/PotionTypeRecipeData.php | 41 +++ src/crafting/json/RecipeIngredientData.php | 40 +++ src/crafting/json/ShapedRecipeData.php | 72 +++++ src/crafting/json/ShapelessRecipeData.php | 61 ++++ src/data/bedrock/item/BlockItemIdMap.php | 17 +- src/inventory/CreativeInventory.php | 23 +- src/network/mcpe/cache/CraftingDataCache.php | 6 +- tests/phpstan/configs/actual-problems.neon | 15 - 17 files changed, 592 insertions(+), 129 deletions(-) create mode 100644 src/crafting/json/FurnaceRecipeData.php create mode 100644 src/crafting/json/ItemStackData.php create mode 100644 src/crafting/json/PotionContainerChangeRecipeData.php create mode 100644 src/crafting/json/PotionTypeRecipeData.php create mode 100644 src/crafting/json/RecipeIngredientData.php create mode 100644 src/crafting/json/ShapedRecipeData.php create mode 100644 src/crafting/json/ShapelessRecipeData.php diff --git a/composer.lock b/composer.lock index fb0e297d2..d946ebef0 100644 --- a/composer.lock +++ b/composer.lock @@ -280,12 +280,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "a546e15f6a8d7498fb25d5a02ce16184a429bb78" + "reference": "01948a627448395d9946c2e6a5e8332a8456eaa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/a546e15f6a8d7498fb25d5a02ce16184a429bb78", - "reference": "a546e15f6a8d7498fb25d5a02ce16184a429bb78", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/01948a627448395d9946c2e6a5e8332a8456eaa0", + "reference": "01948a627448395d9946c2e6a5e8332a8456eaa0", "shasum": "" }, "type": "library", @@ -298,7 +298,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-07-02T15:28:28+00:00" + "time": "2022-07-04T16:59:39+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", diff --git a/src/Server.php b/src/Server.php index 3128a7c39..66bcc1c66 100644 --- a/src/Server.php +++ b/src/Server.php @@ -963,7 +963,7 @@ class Server{ $this->commandMap = new SimpleCommandMap($this); - $this->craftingManager = CraftingManagerFromDataHelper::make(Path::join(\pocketmine\BEDROCK_DATA_PATH, "recipes.json")); + $this->craftingManager = CraftingManagerFromDataHelper::make(Path::join(\pocketmine\BEDROCK_DATA_PATH, "recipes")); $this->resourceManager = new ResourcePackManager(Path::join($this->getDataPath(), "resource_packs"), $this->logger); diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index 777776f1f..42e0db705 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -264,13 +264,13 @@ class CraftingManager{ } foreach($this->potionContainerChangeRecipes as $recipe){ - if($recipe->getIngredient()->equals($ingredient) && $recipe->getResultFor($input) !== null){ + if($recipe->getIngredient()->accepts($ingredient) && $recipe->getResultFor($input) !== null){ return $this->brewingRecipeCache[$inputHash][$ingredientHash] = $recipe; } } foreach($this->potionTypeRecipes as $recipe){ - if($recipe->getIngredient()->equals($ingredient) && $recipe->getResultFor($input) !== null){ + if($recipe->getIngredient()->accepts($ingredient) && $recipe->getResultFor($input) !== null){ return $this->brewingRecipeCache[$inputHash][$ingredientHash] = $recipe; } } diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index cb639209a..9767bb5ff 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -23,61 +23,205 @@ declare(strict_types=1); namespace pocketmine\crafting; +use pocketmine\crafting\json\FurnaceRecipeData; +use pocketmine\crafting\json\ItemStackData; +use pocketmine\crafting\json\PotionContainerChangeRecipeData; +use pocketmine\crafting\json\PotionTypeRecipeData; +use pocketmine\crafting\json\RecipeIngredientData; +use pocketmine\crafting\json\ShapedRecipeData; +use pocketmine\crafting\json\ShapelessRecipeData; +use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; -use pocketmine\data\bedrock\item\upgrade\LegacyItemIdToStringIdMap; +use pocketmine\data\bedrock\item\SavedItemData; +use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\data\SavedDataLoadingException; +use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\item\Item; +use pocketmine\nbt\LittleEndianNbtSerializer; +use pocketmine\nbt\tag\CompoundTag; +use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalItemDataHandlers; -use function array_map; +use Webmozart\PathUtil\Path; +use function base64_decode; use function file_get_contents; +use function get_debug_type; use function is_array; -use function is_int; +use function is_object; use function json_decode; final class CraftingManagerFromDataHelper{ - /** - * @param mixed[] $data - */ - private static function deserializeIngredient(array $data) : ?RecipeIngredient{ - if(!isset($data["id"]) || !is_int($data["id"])){ - throw new \InvalidArgumentException("Invalid input data, expected int ID"); - } - if(isset($data["damage"]) && $data["damage"] === -1){ - try{ - $typeData = GlobalItemDataHandlers::getUpgrader()->upgradeItemTypeDataInt($data["id"], 0, 1, null); - }catch(ItemTypeDeserializeException){ - //probably unknown item - return null; + + private static function deserializeItemStackFromNameMeta(string $name, int $meta) : ?Item{ + $blockName = BlockItemIdMap::getInstance()->lookupBlockId($name); + if($blockName !== null){ + $blockStateDictionary = RuntimeBlockMapping::getInstance()->getBlockStateDictionary(); + $blockRuntimeId = $blockStateDictionary->lookupStateIdFromIdMeta($name, $meta === RecipeIngredientData::WILDCARD_META_VALUE ? 0 : $meta); + if($blockRuntimeId === null){ + throw new \InvalidArgumentException("$blockName with meta $meta doesn't map to any known blockstate"); } - - return new MetaWildcardRecipeIngredient($typeData->getTypeData()->getName()); + $blockStateData = $blockStateDictionary->getDataFromStateId($blockRuntimeId); + if($blockStateData === null){ + throw new AssumptionFailedError("We just looked up the runtime ID for this state, so it can't possibly be null"); + } + }else{ + $blockStateData = null; } - //TODO: we need to stop using jsonDeserialize for this + //TODO: for wildcards, we only need a way to check if the item serializer recognizes the ID; we don't need to + //deserialize the whole itemstack, which might give bogus results anyway if meta 0 isn't recognized + $itemTypeData = new SavedItemData( + $name, + $meta === RecipeIngredientData::WILDCARD_META_VALUE ? 0 : $meta, + $blockStateData, + null + ); + try{ - $item = Item::legacyJsonDeserialize($data); - }catch(SavedDataLoadingException){ - //unknown item + return GlobalItemDataHandlers::getDeserializer()->deserializeType($itemTypeData); + }catch(ItemTypeDeserializeException){ + //probably unknown item return null; } - - return new ExactRecipeIngredient($item); } - public static function make(string $filePath) : CraftingManager{ - $recipes = json_decode(Utils::assumeNotFalse(file_get_contents($filePath), "Missing required resource file"), true); - if(!is_array($recipes)){ - throw new AssumptionFailedError("recipes.json root should contain a map of recipe types"); + private static function deserializeIngredient(RecipeIngredientData $data) : ?RecipeIngredient{ + if(isset($data->count) && $data->count !== 1){ + //every case we've seen so far where this isn't the case, it's been a bug and the count was ignored anyway + //e.g. gold blocks crafted from 9 ingots, but each input item individually had a count of 9 + throw new SavedDataLoadingException("Recipe inputs should have a count of exactly 1"); } + + $itemStack = self::deserializeItemStackFromNameMeta($data->name, $data->meta); + if($itemStack === null){ + //probably unknown item + return null; + } + return $data->meta === RecipeIngredientData::WILDCARD_META_VALUE ? + new MetaWildcardRecipeIngredient($data->name) : + new ExactRecipeIngredient($itemStack); + } + + public static function deserializeItemStack(ItemStackData $data) : ?Item{ + //count, name, block_name, block_states, meta, nbt, can_place_on, can_destroy + $name = $data->name; + $meta = $data->meta ?? 0; + $count = $data->count ?? 1; + + $blockStatesRaw = $data->block_states ?? null; + $nbtRaw = $data->nbt ?? null; + $canPlaceOn = $data->can_place_on ?? []; + $canDestroy = $data->can_destroy ?? []; + + $blockName = BlockItemIdMap::getInstance()->lookupBlockId($name); + if($blockName !== null){ + if($meta !== 0){ + throw new \InvalidArgumentException("Meta should not be specified for blockitems"); + } + $blockStatesTag = $blockStatesRaw === null ? + CompoundTag::create() : + (new LittleEndianNbtSerializer()) + ->read(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => base64_decode($blockStatesRaw, true))) + ->mustGetCompoundTag(); + $blockStateData = new BlockStateData($blockName, $blockStatesTag, BlockStateData::CURRENT_VERSION); + }else{ + $blockStateData = null; + } + + $nbt = $nbtRaw === null ? null : (new LittleEndianNbtSerializer()) + ->read(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => base64_decode($nbtRaw, true))) + ->mustGetCompoundTag(); + + $itemStackData = new SavedItemStackData( + new SavedItemData( + $name, + $meta, + $blockStateData, + $nbt + ), + $count, + null, + null, + $canPlaceOn, + $canDestroy, + ); + + try{ + return GlobalItemDataHandlers::getDeserializer()->deserializeStack($itemStackData); + }catch(ItemTypeDeserializeException){ + //probably unknown item + return null; + } + } + + /** + * @return mixed[] + * + * @phpstan-template TData of object + * @phpstan-param class-string $modelCLass + * @phpstan-return list + */ + public static function loadJsonArrayOfObjectsFile(string $filePath, string $modelCLass) : array{ + $recipes = json_decode(Utils::assumeNotFalse(file_get_contents($filePath), "Missing required resource file")); + if(!is_array($recipes)){ + throw new AssumptionFailedError("$filePath root should be an array, got " . get_debug_type($recipes)); + } + + $mapper = new \JsonMapper(); + $mapper->bStrictObjectTypeChecking = true; + $mapper->bExceptionOnUndefinedProperty = true; + $mapper->bExceptionOnMissingData = true; + + return self::loadJsonObjectListIntoModel($mapper, $modelCLass, $recipes); + } + + /** + * @phpstan-template TRecipeData of object + * @phpstan-param class-string $modelClass + * @phpstan-return TRecipeData + */ + private static function loadJsonObjectIntoModel(\JsonMapper $mapper, string $modelClass, object $data) : object{ + //JsonMapper does this for subtypes, but not for the base type :( + try{ + return $mapper->map($data, (new \ReflectionClass($modelClass))->newInstanceWithoutConstructor()); + }catch(\JsonMapper_Exception $e){ + throw new SavedDataLoadingException($e->getMessage(), 0, $e); + } + } + + /** + * @param mixed[] $data + * @return object[] + * + * @phpstan-template TRecipeData of object + * @phpstan-param class-string $modelClass + * @phpstan-return list + */ + private static function loadJsonObjectListIntoModel(\JsonMapper $mapper, string $modelClass, array $data) : array{ + $result = []; + foreach($data as $i => $item){ + if(!is_object($item)){ + throw new SavedDataLoadingException("Invalid entry at index $i: expected object, got " . get_debug_type($item)); + } + try{ + $result[] = self::loadJsonObjectIntoModel($mapper, $modelClass, $item); + }catch(SavedDataLoadingException $e){ + throw new SavedDataLoadingException("Invalid entry at index $i: " . $e->getMessage(), 0, $e); + } + } + return $result; + } + + public static function make(string $directoryPath) : CraftingManager{ $result = new CraftingManager(); $ingredientDeserializerFunc = \Closure::fromCallable([self::class, "deserializeIngredient"]); - $itemDeserializerFunc = \Closure::fromCallable([Item::class, 'legacyJsonDeserialize']); + $itemDeserializerFunc = \Closure::fromCallable([self::class, 'deserializeItemStack']); - foreach($recipes["shapeless"] as $recipe){ - $recipeType = match($recipe["block"]){ + foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'shapeless_crafting.json'), ShapelessRecipeData::class) as $recipe){ + $recipeType = match($recipe->block){ "crafting_table" => ShapelessRecipeType::CRAFTING(), "stonecutter" => ShapelessRecipeType::STONECUTTER(), //TODO: Cartography Table @@ -87,18 +231,20 @@ final class CraftingManagerFromDataHelper{ continue; } $inputs = []; - foreach($recipe["input"] as $inputData){ + foreach($recipe->input as $inputData){ $input = $ingredientDeserializerFunc($inputData); if($input === null){ //unknown input item continue 2; } $inputs[] = $input; } - try{ - $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - }catch(SavedDataLoadingException){ - //unknown output item - continue; + $outputs = []; + foreach($recipe->output as $outputData){ + $output = $itemDeserializerFunc($outputData); + if($output === null){ //unknown output item + continue 2; + } + $outputs[] = $output; } $result->registerShapelessRecipe(new ShapelessRecipe( $inputs, @@ -106,32 +252,34 @@ final class CraftingManagerFromDataHelper{ $recipeType )); } - foreach($recipes["shaped"] as $recipe){ - if($recipe["block"] !== "crafting_table"){ //TODO: filter others out for now to avoid breaking economics + foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'shaped_crafting.json'), ShapedRecipeData::class) as $recipe){ + if($recipe->block !== "crafting_table"){ //TODO: filter others out for now to avoid breaking economics continue; } $inputs = []; - foreach($recipe["input"] as $symbol => $inputData){ + foreach(Utils::stringifyKeys($recipe->input) as $symbol => $inputData){ $input = $ingredientDeserializerFunc($inputData); if($input === null){ //unknown input item continue 2; } $inputs[$symbol] = $input; } - try{ - $outputs = array_map($itemDeserializerFunc, $recipe["output"]); - }catch(SavedDataLoadingException){ - //unknown output item - continue; + $outputs = []; + foreach($recipe->output as $outputData){ + $output = $itemDeserializerFunc($outputData); + if($output === null){ //unknown output item + continue 2; + } + $outputs[] = $output; } $result->registerShapedRecipe(new ShapedRecipe( - $recipe["shape"], + $recipe->shape, $inputs, $outputs )); } - foreach($recipes["smelting"] as $recipe){ - $furnaceType = match ($recipe["block"]){ + foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'smelting.json'), FurnaceRecipeData::class) as $recipe){ + $furnaceType = match ($recipe->block){ "furnace" => FurnaceType::FURNACE(), "blast_furnace" => FurnaceType::BLAST_FURNACE(), "smoker" => FurnaceType::SMOKER(), @@ -141,12 +289,11 @@ final class CraftingManagerFromDataHelper{ if($furnaceType === null){ continue; } - try{ - $output = Item::legacyJsonDeserialize($recipe["output"]); - }catch(SavedDataLoadingException){ + $output = self::deserializeItemStack($recipe->output); + if($output === null){ continue; } - $input = self::deserializeIngredient($recipe["input"]); + $input = self::deserializeIngredient($recipe->input); if($input === null){ continue; } @@ -155,13 +302,12 @@ final class CraftingManagerFromDataHelper{ $input )); } - foreach($recipes["potion_type"] as $recipe){ - try{ - $input = Item::legacyJsonDeserialize($recipe["input"]); - $ingredient = Item::legacyJsonDeserialize($recipe["ingredient"]); - $output = Item::legacyJsonDeserialize($recipe["output"]); - }catch(SavedDataLoadingException){ - //unknown item + + foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'potion_type.json'), PotionTypeRecipeData::class) as $recipe){ + $input = self::deserializeIngredient($recipe->input); + $ingredient = self::deserializeIngredient($recipe->ingredient); + $output = self::deserializeItemStack($recipe->output); + if($input === null || $ingredient === null || $output === null){ continue; } $result->registerPotionTypeRecipe(new PotionTypeRecipe( @@ -170,18 +316,16 @@ final class CraftingManagerFromDataHelper{ $output )); } - foreach($recipes["potion_container_change"] as $recipe){ - try{ - $ingredient = Item::legacyJsonDeserialize($recipe["ingredient"]); - }catch(SavedDataLoadingException){ - //unknown item + foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'potion_container_change.json'), PotionContainerChangeRecipeData::class) as $recipe){ + $ingredient = self::deserializeIngredient($recipe->ingredient); + if($ingredient === null){ continue; } - //TODO: we'll be able to get rid of these conversions once the crafting data is updated - $inputId = LegacyItemIdToStringIdMap::getInstance()->legacyToString($recipe["input_item_id"]); - $outputId = LegacyItemIdToStringIdMap::getInstance()->legacyToString($recipe["output_item_id"]); - if($inputId === null || $outputId === null){ + $inputId = $recipe->input_item_name; + $outputId = $recipe->output_item_name; + + if(self::deserializeItemStackFromNameMeta($inputId, 0) === null || self::deserializeItemStackFromNameMeta($outputId, 0) === null){ //unknown item continue; } diff --git a/src/crafting/PotionContainerChangeRecipe.php b/src/crafting/PotionContainerChangeRecipe.php index d358c28e2..3530aee68 100644 --- a/src/crafting/PotionContainerChangeRecipe.php +++ b/src/crafting/PotionContainerChangeRecipe.php @@ -31,18 +31,16 @@ class PotionContainerChangeRecipe implements BrewingRecipe{ public function __construct( private string $inputItemId, - private Item $ingredient, + private RecipeIngredient $ingredient, private string $outputItemId - ){ - $this->ingredient = clone $ingredient; - } + ){} public function getInputItemId() : string{ return $this->inputItemId; } - public function getIngredient() : Item{ - return clone $this->ingredient; + public function getIngredient() : RecipeIngredient{ + return $this->ingredient; } public function getOutputItemId() : string{ diff --git a/src/crafting/PotionTypeRecipe.php b/src/crafting/PotionTypeRecipe.php index 4d450450e..1d0b1b580 100644 --- a/src/crafting/PotionTypeRecipe.php +++ b/src/crafting/PotionTypeRecipe.php @@ -28,21 +28,19 @@ use pocketmine\item\Item; class PotionTypeRecipe implements BrewingRecipe{ public function __construct( - private Item $input, - private Item $ingredient, + private RecipeIngredient $input, + private RecipeIngredient $ingredient, private Item $output ){ - $this->input = clone $input; - $this->ingredient = clone $ingredient; $this->output = clone $output; } - public function getInput() : Item{ - return clone $this->input; + public function getInput() : RecipeIngredient{ + return $this->input; } - public function getIngredient() : Item{ - return clone $this->ingredient; + public function getIngredient() : RecipeIngredient{ + return $this->ingredient; } public function getOutput() : Item{ @@ -50,6 +48,6 @@ class PotionTypeRecipe implements BrewingRecipe{ } public function getResultFor(Item $input) : ?Item{ - return $input->equals($this->input, true, false) ? $this->getOutput() : null; + return $this->input->accepts($input) ? $this->getOutput() : null; } } diff --git a/src/crafting/json/FurnaceRecipeData.php b/src/crafting/json/FurnaceRecipeData.php new file mode 100644 index 000000000..c5513030b --- /dev/null +++ b/src/crafting/json/FurnaceRecipeData.php @@ -0,0 +1,42 @@ +input = $input; + $this->output = $output; + $this->block = $block; + } +} diff --git a/src/crafting/json/ItemStackData.php b/src/crafting/json/ItemStackData.php new file mode 100644 index 000000000..032c7da7d --- /dev/null +++ b/src/crafting/json/ItemStackData.php @@ -0,0 +1,43 @@ +name = $name; + } +} diff --git a/src/crafting/json/PotionContainerChangeRecipeData.php b/src/crafting/json/PotionContainerChangeRecipeData.php new file mode 100644 index 000000000..4664a0ae9 --- /dev/null +++ b/src/crafting/json/PotionContainerChangeRecipeData.php @@ -0,0 +1,41 @@ +input_item_name = $input_item_name; + $this->ingredient = $ingredient; + $this->output_item_name = $output_item_name; + } +} diff --git a/src/crafting/json/PotionTypeRecipeData.php b/src/crafting/json/PotionTypeRecipeData.php new file mode 100644 index 000000000..d50005893 --- /dev/null +++ b/src/crafting/json/PotionTypeRecipeData.php @@ -0,0 +1,41 @@ +input = $input; + $this->ingredient = $ingredient; + $this->output = $output; + } +} diff --git a/src/crafting/json/RecipeIngredientData.php b/src/crafting/json/RecipeIngredientData.php new file mode 100644 index 000000000..ece2a6f62 --- /dev/null +++ b/src/crafting/json/RecipeIngredientData.php @@ -0,0 +1,40 @@ +name = $name; + $this->meta = $meta; + } +} diff --git a/src/crafting/json/ShapedRecipeData.php b/src/crafting/json/ShapedRecipeData.php new file mode 100644 index 000000000..abf37098e --- /dev/null +++ b/src/crafting/json/ShapedRecipeData.php @@ -0,0 +1,72 @@ + + */ + public array $shape; + + /** + * @required + * @var RecipeIngredientData[] + * @phpstan-var array + */ + public array $input; + + /** + * @required + * @var ItemStackData[] + * @phpstan-var list + */ + public array $output; + + /** @required */ + public string $block; + + /** @required */ + public int $priority; + + /** + * TODO: convert this to use promoted properties - avoiding them for now since it would break JsonMapper + * + * @param string[] $shape + * @param RecipeIngredientData[] $input + * @param ItemStackData[] $output + * + * @phpstan-param list $shape + * @phpstan-param array $input + * @phpstan-param list $output + */ + public function __construct(array $shape, array $input, array $output, string $block, int $priority){ + $this->block = $block; + $this->priority = $priority; + $this->shape = $shape; + $this->input = $input; + $this->output = $output; + } +} diff --git a/src/crafting/json/ShapelessRecipeData.php b/src/crafting/json/ShapelessRecipeData.php new file mode 100644 index 000000000..453b349dd --- /dev/null +++ b/src/crafting/json/ShapelessRecipeData.php @@ -0,0 +1,61 @@ + + */ + public array $input; + + /** + * @required + * @var ItemStackData[] + * @phpstan-var list + */ + public array $output; + + /** @required */ + public string $block; + + /** @required */ + public int $priority; + + /** + * @param RecipeIngredientData[] $input + * @param ItemStackData[] $output + * + * @phpstan-param list $input + * @phpstan-param list $output + */ + public function __construct(array $input, array $output, string $block, int $priority){ + $this->block = $block; + $this->priority = $priority; + $this->input = $input; + $this->output = $output; + } +} diff --git a/src/data/bedrock/item/BlockItemIdMap.php b/src/data/bedrock/item/BlockItemIdMap.php index 5d1376aef..89ae14f78 100644 --- a/src/data/bedrock/item/BlockItemIdMap.php +++ b/src/data/bedrock/item/BlockItemIdMap.php @@ -27,7 +27,7 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Webmozart\PathUtil\Path; -use function array_search; +use function array_flip; use function file_get_contents; use function is_array; use function json_decode; @@ -52,20 +52,25 @@ final class BlockItemIdMap{ return new self($map); } + /** + * @var string[] + * @phpstan-var array + */ + private array $itemToBlockId; + /** * @param string[] $blockToItemId * @phpstan-param array $blockToItemId */ - public function __construct(private array $blockToItemId){} + public function __construct(private array $blockToItemId){ + $this->itemToBlockId = array_flip($this->blockToItemId); + } public function lookupItemId(string $blockId) : ?string{ return $this->blockToItemId[$blockId] ?? null; } public function lookupBlockId(string $itemId) : ?string{ - //we don't need this for any functionality, so we're not concerned about performance here - //however, it might be nice to have for debugging - $blockId = array_search($itemId, $this->blockToItemId, true); - return $blockId !== false ? $blockId : null; + return $this->itemToBlockId[$itemId] ?? null; } } diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 9c405b92c..5dd293b4c 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -23,13 +23,11 @@ declare(strict_types=1); namespace pocketmine\inventory; -use pocketmine\data\SavedDataLoadingException; +use pocketmine\crafting\CraftingManagerFromDataHelper; +use pocketmine\crafting\json\ItemStackData; use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; -use function file_get_contents; -use function is_array; -use function json_decode; final class CreativeInventory{ use SingletonTrait; @@ -38,18 +36,13 @@ final class CreativeInventory{ private array $creative = []; private function __construct(){ - $creativeItems = json_decode(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "creativeitems.json")), true); - if(!is_array($creativeItems)){ - throw new SavedDataLoadingException("Invalid creative items file, expected array as root type"); - } - + $creativeItems = CraftingManagerFromDataHelper::loadJsonArrayOfObjectsFile( + Path::join(\pocketmine\BEDROCK_DATA_PATH, "creativeitems.json"), + ItemStackData::class + ); foreach($creativeItems as $data){ - if(!is_array($data)){ - throw new SavedDataLoadingException("Invalid creative items file, expected array as item type"); - } - try{ - $item = Item::legacyJsonDeserialize($data); - }catch(SavedDataLoadingException){ + $item = CraftingManagerFromDataHelper::deserializeItemStack($data); + if($item === null){ //unknown item continue; } diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 6d86b8555..84ff5e739 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -149,8 +149,8 @@ final class CraftingDataCache{ $potionTypeRecipes = []; foreach($manager->getPotionTypeRecipes() as $recipe){ - $input = $converter->coreItemStackToNet($recipe->getInput()); - $ingredient = $converter->coreItemStackToNet($recipe->getIngredient()); + $input = $converter->coreRecipeIngredientToNet($recipe->getInput()); + $ingredient = $converter->coreRecipeIngredientToNet($recipe->getIngredient()); $output = $converter->coreItemStackToNet($recipe->getOutput()); $potionTypeRecipes[] = new ProtocolPotionTypeRecipe( $input->getId(), @@ -166,7 +166,7 @@ final class CraftingDataCache{ $itemTypeDictionary = GlobalItemTypeDictionary::getInstance()->getDictionary(); foreach($manager->getPotionContainerChangeRecipes() as $recipe){ $input = $itemTypeDictionary->fromStringId($recipe->getInputItemId()); - $ingredient = $converter->coreItemStackToNet($recipe->getIngredient()); + $ingredient = $converter->coreRecipeIngredientToNet($recipe->getIngredient()); $output = $itemTypeDictionary->fromStringId($recipe->getOutputItemId()); $potionContainerChangeRecipes[] = new ProtocolPotionContainerChangeRecipe( $input, diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 2ec7031d0..8a98fd4a0 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -575,21 +575,6 @@ parameters: count: 1 path: ../../../src/entity/projectile/Projectile.php - - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" - count: 1 - path: ../../../src/inventory/CreativeInventory.php - - - - message: "#^Parameter \\#1 \\$data of static method pocketmine\\\\item\\\\Item\\:\\:jsonDeserialize\\(\\) expects array, mixed given\\.$#" - count: 1 - path: ../../../src/inventory/CreativeInventory.php - - - - message: "#^Parameter \\#1 \\$json of function json_decode expects string, string\\|false given\\.$#" - count: 1 - path: ../../../src/inventory/CreativeInventory.php - - message: "#^Parameter \\#2 \\$recipe of class pocketmine\\\\event\\\\inventory\\\\CraftItemEvent constructor expects pocketmine\\\\crafting\\\\CraftingRecipe, pocketmine\\\\crafting\\\\CraftingRecipe\\|null given\\.$#" count: 1 From 56cf59355f5a296be598a966b343473f25c2cce5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 21:38:18 +0100 Subject: [PATCH 257/692] Use more consistent exceptions --- src/crafting/CraftingManagerFromDataHelper.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 9767bb5ff..db7afe52e 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -60,7 +60,7 @@ final class CraftingManagerFromDataHelper{ $blockStateDictionary = RuntimeBlockMapping::getInstance()->getBlockStateDictionary(); $blockRuntimeId = $blockStateDictionary->lookupStateIdFromIdMeta($name, $meta === RecipeIngredientData::WILDCARD_META_VALUE ? 0 : $meta); if($blockRuntimeId === null){ - throw new \InvalidArgumentException("$blockName with meta $meta doesn't map to any known blockstate"); + throw new SavedDataLoadingException("$blockName with meta $meta doesn't map to any known blockstate"); } $blockStateData = $blockStateDictionary->getDataFromStateId($blockRuntimeId); if($blockStateData === null){ @@ -118,7 +118,7 @@ final class CraftingManagerFromDataHelper{ $blockName = BlockItemIdMap::getInstance()->lookupBlockId($name); if($blockName !== null){ if($meta !== 0){ - throw new \InvalidArgumentException("Meta should not be specified for blockitems"); + throw new SavedDataLoadingException("Meta should not be specified for blockitems"); } $blockStatesTag = $blockStatesRaw === null ? CompoundTag::create() : @@ -166,7 +166,7 @@ final class CraftingManagerFromDataHelper{ public static function loadJsonArrayOfObjectsFile(string $filePath, string $modelCLass) : array{ $recipes = json_decode(Utils::assumeNotFalse(file_get_contents($filePath), "Missing required resource file")); if(!is_array($recipes)){ - throw new AssumptionFailedError("$filePath root should be an array, got " . get_debug_type($recipes)); + throw new SavedDataLoadingException("$filePath root should be an array, got " . get_debug_type($recipes)); } $mapper = new \JsonMapper(); From 4909c0f2574753e020e393617dd9345f22bc5bc6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 22:15:50 +0100 Subject: [PATCH 258/692] Fixed schema loading when the file path contains at least 4 numbers in a row this spectactularly stupid bug could also have been addressed using a [^\/] in place of the . in the pattern, but I thought it made sense to make it impossible for this to happen again by making sure the regex only sees the file name. fixes #5129 --- .../bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php | 7 ++++--- .../bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 525c1c3bf..e6fe5c8dc 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -259,10 +259,11 @@ final class BlockStateUpgradeSchemaUtils{ $iterator = new \RegexIterator( new \FilesystemIterator( $path, - \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS + \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::SKIP_DOTS ), - '/\/(\d{4}).*\.json$/', - \RegexIterator::GET_MATCH + '/^(\d{4}).*\.json$/', + \RegexIterator::GET_MATCH, + \RegexIterator::USE_KEY ); $result = []; diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php index 9e95bf4a2..441ca02ee 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php @@ -42,10 +42,11 @@ final class ItemIdMetaUpgradeSchemaUtils{ $iterator = new \RegexIterator( new \FilesystemIterator( $path, - \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS + \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::SKIP_DOTS ), - '/\/(\d{4}).*\.json$/', - \RegexIterator::GET_MATCH + '/^(\d{4}).*\.json$/', + \RegexIterator::GET_MATCH, + \RegexIterator::USE_KEY ); $result = []; From d9544b5d0e958b019864f6b51f577aa9c499b409 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 4 Jul 2022 22:31:59 +0100 Subject: [PATCH 259/692] Added soul fire --- src/block/BaseFire.php | 61 +++++++++++++++++++ src/block/BlockFactory.php | 2 + src/block/BlockTypeIds.php | 3 + src/block/Fire.php | 44 ++----------- src/block/SoulFire.php | 45 ++++++++++++++ src/block/VanillaBlocks.php | 2 + .../BlockObjectToBlockStateSerializer.php | 4 ++ .../BlockStateToBlockObjectDeserializer.php | 4 ++ src/player/Player.php | 2 +- .../block_factory_consistency_check.json | 2 +- 10 files changed, 128 insertions(+), 41 deletions(-) create mode 100644 src/block/BaseFire.php create mode 100644 src/block/SoulFire.php diff --git a/src/block/BaseFire.php b/src/block/BaseFire.php new file mode 100644 index 000000000..f60b7677d --- /dev/null +++ b/src/block/BaseFire.php @@ -0,0 +1,61 @@ +attack($ev); + + $ev = new EntityCombustByBlockEvent($this, $entity, 8); + if($entity instanceof Arrow){ + $ev->cancel(); + } + $ev->call(); + if(!$ev->isCancelled()){ + $entity->setOnFire($ev->getDuration()); + } + return true; + } + + public function getDropsForCompatibleTool(Item $item) : array{ + return []; + } +} diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 5ee4c0be8..7dd853c21 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -744,6 +744,8 @@ class BlockFactory{ $this->register(new Stair(new BID(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); $this->register(new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); + + $this->register(new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); } private function registerBlocksR17() : void{ diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index deca05b42..4a1822944 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -614,6 +614,9 @@ final class BlockTypeIds{ public const CHISELED_NETHER_BRICKS = 10587; public const CRACKED_NETHER_BRICKS = 10588; + public const SOUL_SOIL = 10592; + public const SOUL_FIRE = 10593; + public const MANGROVE_PLANKS = 10595; public const CRIMSON_PLANKS = 10596; public const WARPED_PLANKS = 10597; diff --git a/src/block/Fire.php b/src/block/Fire.php index 8805c5653..c04926cc8 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -25,14 +25,8 @@ namespace pocketmine\block; use pocketmine\data\runtime\block\BlockDataReader; use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\entity\Entity; -use pocketmine\entity\projectile\Arrow; use pocketmine\event\block\BlockBurnEvent; use pocketmine\event\block\BlockSpreadEvent; -use pocketmine\event\entity\EntityCombustByBlockEvent; -use pocketmine\event\entity\EntityDamageByBlockEvent; -use pocketmine\event\entity\EntityDamageEvent; -use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\world\format\Chunk; use pocketmine\world\World; @@ -41,7 +35,7 @@ use function max; use function min; use function mt_rand; -class Fire extends Flowable{ +class Fire extends BaseFire{ public const MAX_AGE = 15; protected int $age = 0; @@ -67,39 +61,11 @@ class Fire extends Flowable{ return $this; } - public function hasEntityCollision() : bool{ - return true; - } - - public function getLightLevel() : int{ - return 15; - } - - public function canBeReplaced() : bool{ - return true; - } - - public function onEntityInside(Entity $entity) : bool{ - $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); - $entity->attack($ev); - - $ev = new EntityCombustByBlockEvent($this, $entity, 8); - if($entity instanceof Arrow){ - $ev->cancel(); - } - $ev->call(); - if(!$ev->isCancelled()){ - $entity->setOnFire($ev->getDuration()); - } - return true; - } - - public function getDropsForCompatibleTool(Item $item) : array{ - return []; - } - public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->isTransparent() && !$this->hasAdjacentFlammableBlocks()){ + $down = $this->getSide(Facing::DOWN); + if(SoulFire::canBeSupportedBy($down)){ + $this->position->getWorld()->setBlock($this->position, VanillaBlocks::SOUL_FIRE()); + }elseif($down->isTransparent() && !$this->hasAdjacentFlammableBlocks()){ $this->position->getWorld()->setBlock($this->position, VanillaBlocks::AIR()); }else{ $this->position->getWorld()->scheduleDelayedBlockUpdate($this->position, mt_rand(30, 40)); diff --git a/src/block/SoulFire.php b/src/block/SoulFire.php new file mode 100644 index 000000000..61d7b37ed --- /dev/null +++ b/src/block/SoulFire.php @@ -0,0 +1,45 @@ +getTypeId(); + return $id === BlockTypeIds::SOUL_SAND || $id === BlockTypeIds::SOUL_SOIL; + } + + public function onNearbyBlockChange() : void{ + if(!self::canBeSupportedBy($this->getSide(Facing::DOWN))){ + $this->position->getWorld()->setBlock($this->position, VanillaBlocks::AIR()); + } + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index ae1852c0d..d99d702b1 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -564,6 +564,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab SMOOTH_STONE_SLAB() * @method static Snow SNOW() * @method static SnowLayer SNOW_LAYER() + * @method static SoulFire SOUL_FIRE() * @method static SoulSand SOUL_SAND() * @method static Sponge SPONGE() * @method static WoodenButton SPRUCE_BUTTON() @@ -1182,6 +1183,7 @@ final class VanillaBlocks{ self::register("smooth_stone_slab", $factory->get(Ids::SMOOTH_STONE_SLAB, 0)); self::register("snow", $factory->get(Ids::SNOW, 0)); self::register("snow_layer", $factory->get(Ids::SNOW_LAYER, 0)); + self::register("soul_fire", $factory->get(Ids::SOUL_FIRE, 0)); self::register("soul_sand", $factory->get(Ids::SOUL_SAND, 0)); self::register("sponge", $factory->get(Ids::SPONGE, 0)); self::register("spruce_button", $factory->get(Ids::SPRUCE_BUTTON, 0)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index ec5942cda..93daadec2 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1070,6 +1070,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::COVERED_BIT, false) ->writeInt(StateNames::HEIGHT, $block->getLayers() - 1); }); + $this->map(Blocks::SOUL_FIRE(), function() : Writer{ + return Writer::create(Ids::SOUL_FIRE) + ->writeInt(StateNames::AGE, 0); //useless for soul fire, we don't track it + }); $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); $this->map(Blocks::SPONGE(), function(Sponge $block) : Writer{ return Writer::create(Ids::SPONGE) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 1dbdf8a32..74e483fb7 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -992,6 +992,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $in->ignored(StateNames::COVERED_BIT); //seems to be useless return Blocks::SNOW_LAYER()->setLayers($in->readBoundedInt(StateNames::HEIGHT, 0, 7) + 1); }); + $this->map(Ids::SOUL_FIRE, function(Reader $in) : Block{ + $in->ignored(StateNames::AGE); //this is useless for soul fire, since it doesn't have the logic associated + return Blocks::SOUL_FIRE(); + }); $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); $this->map(Ids::SPONGE, function(Reader $in) : Block{ return Blocks::SPONGE()->setWet(match($type = $in->readString(StateNames::SPONGE_TYPE)){ diff --git a/src/player/Player.php b/src/player/Player.php index 2cf6a7db8..f2b8f1486 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -1613,7 +1613,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ } $block = $target->getSide($face); - if($block->getTypeId() === BlockTypeIds::FIRE){ + if($block->getTypeId() === BlockTypeIds::FIRE || $block->getTypeId() === BlockTypeIds::SOUL_FIRE){ $this->getWorld()->setBlock($block->getPosition(), VanillaBlocks::AIR()); $this->getWorld()->addSound($block->getPosition()->add(0.5, 0.5, 0.5), new FireExtinguishSound()); return true; diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index c906ca37e..ed0a668cb 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5423616":"Soul Fire","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From bd773c2f84770c5bd6f2569798dcad98bc900785 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 13:40:07 +0100 Subject: [PATCH 260/692] VanillaBlocks: use BlockFactory::fromTypeId() --- src/block/BlockFactory.php | 9 +- src/block/VanillaBlocks.php | 1190 +++++++++++++++++------------------ src/item/ItemBlock.php | 5 +- 3 files changed, 602 insertions(+), 602 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 7dd853c21..5c6928920 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -882,12 +882,12 @@ class BlockFactory{ * @internal * Returns the default state of the block type associated with the given type ID. */ - public function fromTypeId(int $typeId) : ?Block{ + public function fromTypeId(int $typeId) : Block{ if(isset($this->typeIndex[$typeId])){ return clone $this->typeIndex[$typeId]; } - return null; + throw new \InvalidArgumentException("Block ID $typeId is not registered"); } public function fromFullBlock(int $fullState) : Block{ @@ -897,9 +897,8 @@ class BlockFactory{ /** * Returns whether a specified block state is already registered in the block factory. */ - public function isRegistered(int $typeId, int $stateData = 0) : bool{ - $index = ($typeId << Block::INTERNAL_STATE_DATA_BITS) | $stateData; - $b = $this->fullList[$index] ?? null; + public function isRegistered(int $typeId) : bool{ + $b = $this->typeIndex[$typeId] ?? null; return $b !== null && !($b instanceof UnknownBlock); } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index d99d702b1..a851ccc39 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -651,600 +651,600 @@ final class VanillaBlocks{ protected static function setup() : void{ $factory = BlockFactory::getInstance(); - self::register("acacia_button", $factory->get(Ids::ACACIA_BUTTON, 0)); - self::register("acacia_door", $factory->get(Ids::ACACIA_DOOR, 0)); - self::register("acacia_fence", $factory->get(Ids::ACACIA_FENCE, 0)); - self::register("acacia_fence_gate", $factory->get(Ids::ACACIA_FENCE_GATE, 0)); - self::register("acacia_leaves", $factory->get(Ids::ACACIA_LEAVES, 0)); - self::register("acacia_log", $factory->get(Ids::ACACIA_LOG, 4)); - self::register("acacia_planks", $factory->get(Ids::ACACIA_PLANKS, 0)); - self::register("acacia_pressure_plate", $factory->get(Ids::ACACIA_PRESSURE_PLATE, 0)); - self::register("acacia_sapling", $factory->get(Ids::ACACIA_SAPLING, 0)); - self::register("acacia_sign", $factory->get(Ids::ACACIA_SIGN, 0)); - self::register("acacia_slab", $factory->get(Ids::ACACIA_SLAB, 0)); - self::register("acacia_stairs", $factory->get(Ids::ACACIA_STAIRS, 0)); - self::register("acacia_trapdoor", $factory->get(Ids::ACACIA_TRAPDOOR, 0)); - self::register("acacia_wall_sign", $factory->get(Ids::ACACIA_WALL_SIGN, 0)); - self::register("acacia_wood", $factory->get(Ids::ACACIA_WOOD, 4)); - self::register("activator_rail", $factory->get(Ids::ACTIVATOR_RAIL, 0)); - self::register("air", $factory->get(Ids::AIR, 0)); - self::register("all_sided_mushroom_stem", $factory->get(Ids::ALL_SIDED_MUSHROOM_STEM, 0)); - self::register("allium", $factory->get(Ids::ALLIUM, 0)); - self::register("amethyst", $factory->get(Ids::AMETHYST, 0)); - self::register("ancient_debris", $factory->get(Ids::ANCIENT_DEBRIS, 0)); - self::register("andesite", $factory->get(Ids::ANDESITE, 0)); - self::register("andesite_slab", $factory->get(Ids::ANDESITE_SLAB, 0)); - self::register("andesite_stairs", $factory->get(Ids::ANDESITE_STAIRS, 0)); - self::register("andesite_wall", $factory->get(Ids::ANDESITE_WALL, 0)); - self::register("anvil", $factory->get(Ids::ANVIL, 0)); - self::register("azure_bluet", $factory->get(Ids::AZURE_BLUET, 0)); - self::register("bamboo", $factory->get(Ids::BAMBOO, 0)); - self::register("bamboo_sapling", $factory->get(Ids::BAMBOO_SAPLING, 0)); - self::register("banner", $factory->get(Ids::BANNER, 0)); - self::register("barrel", $factory->get(Ids::BARREL, 0)); - self::register("barrier", $factory->get(Ids::BARRIER, 0)); - self::register("basalt", $factory->get(Ids::BASALT, 2)); - self::register("beacon", $factory->get(Ids::BEACON, 0)); - self::register("bed", $factory->get(Ids::BED, 13)); - self::register("bedrock", $factory->get(Ids::BEDROCK, 0)); - self::register("beetroots", $factory->get(Ids::BEETROOTS, 0)); - self::register("bell", $factory->get(Ids::BELL, 1)); - self::register("birch_button", $factory->get(Ids::BIRCH_BUTTON, 0)); - self::register("birch_door", $factory->get(Ids::BIRCH_DOOR, 0)); - self::register("birch_fence", $factory->get(Ids::BIRCH_FENCE, 0)); - self::register("birch_fence_gate", $factory->get(Ids::BIRCH_FENCE_GATE, 0)); - self::register("birch_leaves", $factory->get(Ids::BIRCH_LEAVES, 0)); - self::register("birch_log", $factory->get(Ids::BIRCH_LOG, 4)); - self::register("birch_planks", $factory->get(Ids::BIRCH_PLANKS, 0)); - self::register("birch_pressure_plate", $factory->get(Ids::BIRCH_PRESSURE_PLATE, 0)); - self::register("birch_sapling", $factory->get(Ids::BIRCH_SAPLING, 0)); - self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN, 0)); - self::register("birch_slab", $factory->get(Ids::BIRCH_SLAB, 0)); - self::register("birch_stairs", $factory->get(Ids::BIRCH_STAIRS, 0)); - self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0)); - self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0)); - self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 4)); - self::register("blackstone", $factory->get(Ids::BLACKSTONE, 0)); - self::register("blackstone_slab", $factory->get(Ids::BLACKSTONE_SLAB, 0)); - self::register("blackstone_stairs", $factory->get(Ids::BLACKSTONE_STAIRS, 0)); - self::register("blackstone_wall", $factory->get(Ids::BLACKSTONE_WALL, 0)); - self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0)); - self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0)); - self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0)); - self::register("blue_torch", $factory->get(Ids::BLUE_TORCH, 1)); - self::register("bone_block", $factory->get(Ids::BONE_BLOCK, 2)); - self::register("bookshelf", $factory->get(Ids::BOOKSHELF, 0)); - self::register("brewing_stand", $factory->get(Ids::BREWING_STAND, 0)); - self::register("brick_slab", $factory->get(Ids::BRICK_SLAB, 0)); - self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 0)); - self::register("brick_wall", $factory->get(Ids::BRICK_WALL, 0)); - self::register("bricks", $factory->get(Ids::BRICKS, 0)); - self::register("brown_mushroom", $factory->get(Ids::BROWN_MUSHROOM, 0)); - self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10)); - self::register("cactus", $factory->get(Ids::CACTUS, 0)); - self::register("cake", $factory->get(Ids::CAKE, 0)); - self::register("calcite", $factory->get(Ids::CALCITE, 0)); - self::register("carpet", $factory->get(Ids::CARPET, 14)); - self::register("carrots", $factory->get(Ids::CARROTS, 0)); - self::register("carved_pumpkin", $factory->get(Ids::CARVED_PUMPKIN, 0)); - self::register("chemical_heat", $factory->get(Ids::CHEMICAL_HEAT, 0)); - self::register("chest", $factory->get(Ids::CHEST, 0)); - self::register("chiseled_deepslate", $factory->get(Ids::CHISELED_DEEPSLATE, 0)); - self::register("chiseled_nether_bricks", $factory->get(Ids::CHISELED_NETHER_BRICKS, 0)); - self::register("chiseled_polished_blackstone", $factory->get(Ids::CHISELED_POLISHED_BLACKSTONE, 0)); - self::register("chiseled_quartz", $factory->get(Ids::CHISELED_QUARTZ, 2)); - self::register("chiseled_red_sandstone", $factory->get(Ids::CHISELED_RED_SANDSTONE, 0)); - self::register("chiseled_sandstone", $factory->get(Ids::CHISELED_SANDSTONE, 0)); - self::register("chiseled_stone_bricks", $factory->get(Ids::CHISELED_STONE_BRICKS, 0)); - self::register("clay", $factory->get(Ids::CLAY, 0)); - self::register("coal", $factory->get(Ids::COAL, 0)); - self::register("coal_ore", $factory->get(Ids::COAL_ORE, 0)); - self::register("cobbled_deepslate", $factory->get(Ids::COBBLED_DEEPSLATE, 0)); - self::register("cobbled_deepslate_slab", $factory->get(Ids::COBBLED_DEEPSLATE_SLAB, 0)); - self::register("cobbled_deepslate_stairs", $factory->get(Ids::COBBLED_DEEPSLATE_STAIRS, 0)); - self::register("cobbled_deepslate_wall", $factory->get(Ids::COBBLED_DEEPSLATE_WALL, 0)); - self::register("cobblestone", $factory->get(Ids::COBBLESTONE, 0)); - self::register("cobblestone_slab", $factory->get(Ids::COBBLESTONE_SLAB, 0)); - self::register("cobblestone_stairs", $factory->get(Ids::COBBLESTONE_STAIRS, 0)); - self::register("cobblestone_wall", $factory->get(Ids::COBBLESTONE_WALL, 0)); - self::register("cobweb", $factory->get(Ids::COBWEB, 0)); - self::register("cocoa_pod", $factory->get(Ids::COCOA_POD, 0)); - self::register("compound_creator", $factory->get(Ids::COMPOUND_CREATOR, 0)); - self::register("concrete", $factory->get(Ids::CONCRETE, 14)); - self::register("concrete_powder", $factory->get(Ids::CONCRETE_POWDER, 14)); - self::register("coral", $factory->get(Ids::CORAL, 4)); - self::register("coral_block", $factory->get(Ids::CORAL_BLOCK, 4)); - self::register("coral_fan", $factory->get(Ids::CORAL_FAN, 4)); - self::register("cornflower", $factory->get(Ids::CORNFLOWER, 0)); - self::register("cracked_deepslate_bricks", $factory->get(Ids::CRACKED_DEEPSLATE_BRICKS, 0)); - self::register("cracked_deepslate_tiles", $factory->get(Ids::CRACKED_DEEPSLATE_TILES, 0)); - self::register("cracked_nether_bricks", $factory->get(Ids::CRACKED_NETHER_BRICKS, 0)); - self::register("cracked_polished_blackstone_bricks", $factory->get(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, 0)); - self::register("cracked_stone_bricks", $factory->get(Ids::CRACKED_STONE_BRICKS, 0)); - self::register("crafting_table", $factory->get(Ids::CRAFTING_TABLE, 0)); - self::register("crimson_button", $factory->get(Ids::CRIMSON_BUTTON, 0)); - self::register("crimson_door", $factory->get(Ids::CRIMSON_DOOR, 0)); - self::register("crimson_fence", $factory->get(Ids::CRIMSON_FENCE, 0)); - self::register("crimson_fence_gate", $factory->get(Ids::CRIMSON_FENCE_GATE, 0)); - self::register("crimson_hyphae", $factory->get(Ids::CRIMSON_HYPHAE, 4)); - self::register("crimson_planks", $factory->get(Ids::CRIMSON_PLANKS, 0)); - self::register("crimson_pressure_plate", $factory->get(Ids::CRIMSON_PRESSURE_PLATE, 0)); - self::register("crimson_slab", $factory->get(Ids::CRIMSON_SLAB, 0)); - self::register("crimson_stairs", $factory->get(Ids::CRIMSON_STAIRS, 0)); - self::register("crimson_stem", $factory->get(Ids::CRIMSON_STEM, 4)); - self::register("crimson_trapdoor", $factory->get(Ids::CRIMSON_TRAPDOOR, 0)); - self::register("cut_red_sandstone", $factory->get(Ids::CUT_RED_SANDSTONE, 0)); - self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0)); - self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0)); - self::register("cut_sandstone_slab", $factory->get(Ids::CUT_SANDSTONE_SLAB, 0)); - self::register("dandelion", $factory->get(Ids::DANDELION, 0)); - self::register("dark_oak_button", $factory->get(Ids::DARK_OAK_BUTTON, 0)); - self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR, 0)); - self::register("dark_oak_fence", $factory->get(Ids::DARK_OAK_FENCE, 0)); - self::register("dark_oak_fence_gate", $factory->get(Ids::DARK_OAK_FENCE_GATE, 0)); - self::register("dark_oak_leaves", $factory->get(Ids::DARK_OAK_LEAVES, 0)); - self::register("dark_oak_log", $factory->get(Ids::DARK_OAK_LOG, 4)); - self::register("dark_oak_planks", $factory->get(Ids::DARK_OAK_PLANKS, 0)); - self::register("dark_oak_pressure_plate", $factory->get(Ids::DARK_OAK_PRESSURE_PLATE, 0)); - self::register("dark_oak_sapling", $factory->get(Ids::DARK_OAK_SAPLING, 0)); - self::register("dark_oak_sign", $factory->get(Ids::DARK_OAK_SIGN, 0)); - self::register("dark_oak_slab", $factory->get(Ids::DARK_OAK_SLAB, 0)); - self::register("dark_oak_stairs", $factory->get(Ids::DARK_OAK_STAIRS, 0)); - self::register("dark_oak_trapdoor", $factory->get(Ids::DARK_OAK_TRAPDOOR, 0)); - self::register("dark_oak_wall_sign", $factory->get(Ids::DARK_OAK_WALL_SIGN, 0)); - self::register("dark_oak_wood", $factory->get(Ids::DARK_OAK_WOOD, 4)); - self::register("dark_prismarine", $factory->get(Ids::DARK_PRISMARINE, 0)); - self::register("dark_prismarine_slab", $factory->get(Ids::DARK_PRISMARINE_SLAB, 0)); - self::register("dark_prismarine_stairs", $factory->get(Ids::DARK_PRISMARINE_STAIRS, 0)); - self::register("daylight_sensor", $factory->get(Ids::DAYLIGHT_SENSOR, 0)); - self::register("dead_bush", $factory->get(Ids::DEAD_BUSH, 0)); - self::register("deepslate", $factory->get(Ids::DEEPSLATE, 2)); - self::register("deepslate_brick_slab", $factory->get(Ids::DEEPSLATE_BRICK_SLAB, 0)); - self::register("deepslate_brick_stairs", $factory->get(Ids::DEEPSLATE_BRICK_STAIRS, 0)); - self::register("deepslate_brick_wall", $factory->get(Ids::DEEPSLATE_BRICK_WALL, 0)); - self::register("deepslate_bricks", $factory->get(Ids::DEEPSLATE_BRICKS, 0)); - self::register("deepslate_tile_slab", $factory->get(Ids::DEEPSLATE_TILE_SLAB, 0)); - self::register("deepslate_tile_stairs", $factory->get(Ids::DEEPSLATE_TILE_STAIRS, 0)); - self::register("deepslate_tile_wall", $factory->get(Ids::DEEPSLATE_TILE_WALL, 0)); - self::register("deepslate_tiles", $factory->get(Ids::DEEPSLATE_TILES, 0)); - self::register("detector_rail", $factory->get(Ids::DETECTOR_RAIL, 0)); - self::register("diamond", $factory->get(Ids::DIAMOND, 0)); - self::register("diamond_ore", $factory->get(Ids::DIAMOND_ORE, 0)); - self::register("diorite", $factory->get(Ids::DIORITE, 0)); - self::register("diorite_slab", $factory->get(Ids::DIORITE_SLAB, 0)); - self::register("diorite_stairs", $factory->get(Ids::DIORITE_STAIRS, 0)); - self::register("diorite_wall", $factory->get(Ids::DIORITE_WALL, 0)); - self::register("dirt", $factory->get(Ids::DIRT, 0)); - self::register("double_tallgrass", $factory->get(Ids::DOUBLE_TALLGRASS, 0)); - self::register("dragon_egg", $factory->get(Ids::DRAGON_EGG, 0)); - self::register("dried_kelp", $factory->get(Ids::DRIED_KELP, 0)); - self::register("dyed_shulker_box", $factory->get(Ids::DYED_SHULKER_BOX, 14)); - self::register("element_actinium", $factory->get(Ids::ELEMENT_ACTINIUM, 0)); - self::register("element_aluminum", $factory->get(Ids::ELEMENT_ALUMINUM, 0)); - self::register("element_americium", $factory->get(Ids::ELEMENT_AMERICIUM, 0)); - self::register("element_antimony", $factory->get(Ids::ELEMENT_ANTIMONY, 0)); - self::register("element_argon", $factory->get(Ids::ELEMENT_ARGON, 0)); - self::register("element_arsenic", $factory->get(Ids::ELEMENT_ARSENIC, 0)); - self::register("element_astatine", $factory->get(Ids::ELEMENT_ASTATINE, 0)); - self::register("element_barium", $factory->get(Ids::ELEMENT_BARIUM, 0)); - self::register("element_berkelium", $factory->get(Ids::ELEMENT_BERKELIUM, 0)); - self::register("element_beryllium", $factory->get(Ids::ELEMENT_BERYLLIUM, 0)); - self::register("element_bismuth", $factory->get(Ids::ELEMENT_BISMUTH, 0)); - self::register("element_bohrium", $factory->get(Ids::ELEMENT_BOHRIUM, 0)); - self::register("element_boron", $factory->get(Ids::ELEMENT_BORON, 0)); - self::register("element_bromine", $factory->get(Ids::ELEMENT_BROMINE, 0)); - self::register("element_cadmium", $factory->get(Ids::ELEMENT_CADMIUM, 0)); - self::register("element_calcium", $factory->get(Ids::ELEMENT_CALCIUM, 0)); - self::register("element_californium", $factory->get(Ids::ELEMENT_CALIFORNIUM, 0)); - self::register("element_carbon", $factory->get(Ids::ELEMENT_CARBON, 0)); - self::register("element_cerium", $factory->get(Ids::ELEMENT_CERIUM, 0)); - self::register("element_cesium", $factory->get(Ids::ELEMENT_CESIUM, 0)); - self::register("element_chlorine", $factory->get(Ids::ELEMENT_CHLORINE, 0)); - self::register("element_chromium", $factory->get(Ids::ELEMENT_CHROMIUM, 0)); - self::register("element_cobalt", $factory->get(Ids::ELEMENT_COBALT, 0)); - self::register("element_constructor", $factory->get(Ids::ELEMENT_CONSTRUCTOR, 0)); - self::register("element_copernicium", $factory->get(Ids::ELEMENT_COPERNICIUM, 0)); - self::register("element_copper", $factory->get(Ids::ELEMENT_COPPER, 0)); - self::register("element_curium", $factory->get(Ids::ELEMENT_CURIUM, 0)); - self::register("element_darmstadtium", $factory->get(Ids::ELEMENT_DARMSTADTIUM, 0)); - self::register("element_dubnium", $factory->get(Ids::ELEMENT_DUBNIUM, 0)); - self::register("element_dysprosium", $factory->get(Ids::ELEMENT_DYSPROSIUM, 0)); - self::register("element_einsteinium", $factory->get(Ids::ELEMENT_EINSTEINIUM, 0)); - self::register("element_erbium", $factory->get(Ids::ELEMENT_ERBIUM, 0)); - self::register("element_europium", $factory->get(Ids::ELEMENT_EUROPIUM, 0)); - self::register("element_fermium", $factory->get(Ids::ELEMENT_FERMIUM, 0)); - self::register("element_flerovium", $factory->get(Ids::ELEMENT_FLEROVIUM, 0)); - self::register("element_fluorine", $factory->get(Ids::ELEMENT_FLUORINE, 0)); - self::register("element_francium", $factory->get(Ids::ELEMENT_FRANCIUM, 0)); - self::register("element_gadolinium", $factory->get(Ids::ELEMENT_GADOLINIUM, 0)); - self::register("element_gallium", $factory->get(Ids::ELEMENT_GALLIUM, 0)); - self::register("element_germanium", $factory->get(Ids::ELEMENT_GERMANIUM, 0)); - self::register("element_gold", $factory->get(Ids::ELEMENT_GOLD, 0)); - self::register("element_hafnium", $factory->get(Ids::ELEMENT_HAFNIUM, 0)); - self::register("element_hassium", $factory->get(Ids::ELEMENT_HASSIUM, 0)); - self::register("element_helium", $factory->get(Ids::ELEMENT_HELIUM, 0)); - self::register("element_holmium", $factory->get(Ids::ELEMENT_HOLMIUM, 0)); - self::register("element_hydrogen", $factory->get(Ids::ELEMENT_HYDROGEN, 0)); - self::register("element_indium", $factory->get(Ids::ELEMENT_INDIUM, 0)); - self::register("element_iodine", $factory->get(Ids::ELEMENT_IODINE, 0)); - self::register("element_iridium", $factory->get(Ids::ELEMENT_IRIDIUM, 0)); - self::register("element_iron", $factory->get(Ids::ELEMENT_IRON, 0)); - self::register("element_krypton", $factory->get(Ids::ELEMENT_KRYPTON, 0)); - self::register("element_lanthanum", $factory->get(Ids::ELEMENT_LANTHANUM, 0)); - self::register("element_lawrencium", $factory->get(Ids::ELEMENT_LAWRENCIUM, 0)); - self::register("element_lead", $factory->get(Ids::ELEMENT_LEAD, 0)); - self::register("element_lithium", $factory->get(Ids::ELEMENT_LITHIUM, 0)); - self::register("element_livermorium", $factory->get(Ids::ELEMENT_LIVERMORIUM, 0)); - self::register("element_lutetium", $factory->get(Ids::ELEMENT_LUTETIUM, 0)); - self::register("element_magnesium", $factory->get(Ids::ELEMENT_MAGNESIUM, 0)); - self::register("element_manganese", $factory->get(Ids::ELEMENT_MANGANESE, 0)); - self::register("element_meitnerium", $factory->get(Ids::ELEMENT_MEITNERIUM, 0)); - self::register("element_mendelevium", $factory->get(Ids::ELEMENT_MENDELEVIUM, 0)); - self::register("element_mercury", $factory->get(Ids::ELEMENT_MERCURY, 0)); - self::register("element_molybdenum", $factory->get(Ids::ELEMENT_MOLYBDENUM, 0)); - self::register("element_moscovium", $factory->get(Ids::ELEMENT_MOSCOVIUM, 0)); - self::register("element_neodymium", $factory->get(Ids::ELEMENT_NEODYMIUM, 0)); - self::register("element_neon", $factory->get(Ids::ELEMENT_NEON, 0)); - self::register("element_neptunium", $factory->get(Ids::ELEMENT_NEPTUNIUM, 0)); - self::register("element_nickel", $factory->get(Ids::ELEMENT_NICKEL, 0)); - self::register("element_nihonium", $factory->get(Ids::ELEMENT_NIHONIUM, 0)); - self::register("element_niobium", $factory->get(Ids::ELEMENT_NIOBIUM, 0)); - self::register("element_nitrogen", $factory->get(Ids::ELEMENT_NITROGEN, 0)); - self::register("element_nobelium", $factory->get(Ids::ELEMENT_NOBELIUM, 0)); - self::register("element_oganesson", $factory->get(Ids::ELEMENT_OGANESSON, 0)); - self::register("element_osmium", $factory->get(Ids::ELEMENT_OSMIUM, 0)); - self::register("element_oxygen", $factory->get(Ids::ELEMENT_OXYGEN, 0)); - self::register("element_palladium", $factory->get(Ids::ELEMENT_PALLADIUM, 0)); - self::register("element_phosphorus", $factory->get(Ids::ELEMENT_PHOSPHORUS, 0)); - self::register("element_platinum", $factory->get(Ids::ELEMENT_PLATINUM, 0)); - self::register("element_plutonium", $factory->get(Ids::ELEMENT_PLUTONIUM, 0)); - self::register("element_polonium", $factory->get(Ids::ELEMENT_POLONIUM, 0)); - self::register("element_potassium", $factory->get(Ids::ELEMENT_POTASSIUM, 0)); - self::register("element_praseodymium", $factory->get(Ids::ELEMENT_PRASEODYMIUM, 0)); - self::register("element_promethium", $factory->get(Ids::ELEMENT_PROMETHIUM, 0)); - self::register("element_protactinium", $factory->get(Ids::ELEMENT_PROTACTINIUM, 0)); - self::register("element_radium", $factory->get(Ids::ELEMENT_RADIUM, 0)); - self::register("element_radon", $factory->get(Ids::ELEMENT_RADON, 0)); - self::register("element_rhenium", $factory->get(Ids::ELEMENT_RHENIUM, 0)); - self::register("element_rhodium", $factory->get(Ids::ELEMENT_RHODIUM, 0)); - self::register("element_roentgenium", $factory->get(Ids::ELEMENT_ROENTGENIUM, 0)); - self::register("element_rubidium", $factory->get(Ids::ELEMENT_RUBIDIUM, 0)); - self::register("element_ruthenium", $factory->get(Ids::ELEMENT_RUTHENIUM, 0)); - self::register("element_rutherfordium", $factory->get(Ids::ELEMENT_RUTHERFORDIUM, 0)); - self::register("element_samarium", $factory->get(Ids::ELEMENT_SAMARIUM, 0)); - self::register("element_scandium", $factory->get(Ids::ELEMENT_SCANDIUM, 0)); - self::register("element_seaborgium", $factory->get(Ids::ELEMENT_SEABORGIUM, 0)); - self::register("element_selenium", $factory->get(Ids::ELEMENT_SELENIUM, 0)); - self::register("element_silicon", $factory->get(Ids::ELEMENT_SILICON, 0)); - self::register("element_silver", $factory->get(Ids::ELEMENT_SILVER, 0)); - self::register("element_sodium", $factory->get(Ids::ELEMENT_SODIUM, 0)); - self::register("element_strontium", $factory->get(Ids::ELEMENT_STRONTIUM, 0)); - self::register("element_sulfur", $factory->get(Ids::ELEMENT_SULFUR, 0)); - self::register("element_tantalum", $factory->get(Ids::ELEMENT_TANTALUM, 0)); - self::register("element_technetium", $factory->get(Ids::ELEMENT_TECHNETIUM, 0)); - self::register("element_tellurium", $factory->get(Ids::ELEMENT_TELLURIUM, 0)); - self::register("element_tennessine", $factory->get(Ids::ELEMENT_TENNESSINE, 0)); - self::register("element_terbium", $factory->get(Ids::ELEMENT_TERBIUM, 0)); - self::register("element_thallium", $factory->get(Ids::ELEMENT_THALLIUM, 0)); - self::register("element_thorium", $factory->get(Ids::ELEMENT_THORIUM, 0)); - self::register("element_thulium", $factory->get(Ids::ELEMENT_THULIUM, 0)); - self::register("element_tin", $factory->get(Ids::ELEMENT_TIN, 0)); - self::register("element_titanium", $factory->get(Ids::ELEMENT_TITANIUM, 0)); - self::register("element_tungsten", $factory->get(Ids::ELEMENT_TUNGSTEN, 0)); - self::register("element_uranium", $factory->get(Ids::ELEMENT_URANIUM, 0)); - self::register("element_vanadium", $factory->get(Ids::ELEMENT_VANADIUM, 0)); - self::register("element_xenon", $factory->get(Ids::ELEMENT_XENON, 0)); - self::register("element_ytterbium", $factory->get(Ids::ELEMENT_YTTERBIUM, 0)); - self::register("element_yttrium", $factory->get(Ids::ELEMENT_YTTRIUM, 0)); - self::register("element_zero", $factory->get(Ids::ELEMENT_ZERO, 0)); - self::register("element_zinc", $factory->get(Ids::ELEMENT_ZINC, 0)); - self::register("element_zirconium", $factory->get(Ids::ELEMENT_ZIRCONIUM, 0)); - self::register("emerald", $factory->get(Ids::EMERALD, 0)); - self::register("emerald_ore", $factory->get(Ids::EMERALD_ORE, 0)); - self::register("enchanting_table", $factory->get(Ids::ENCHANTING_TABLE, 0)); - self::register("end_portal_frame", $factory->get(Ids::END_PORTAL_FRAME, 0)); - self::register("end_rod", $factory->get(Ids::END_ROD, 0)); - self::register("end_stone", $factory->get(Ids::END_STONE, 0)); - self::register("end_stone_brick_slab", $factory->get(Ids::END_STONE_BRICK_SLAB, 0)); - self::register("end_stone_brick_stairs", $factory->get(Ids::END_STONE_BRICK_STAIRS, 0)); - self::register("end_stone_brick_wall", $factory->get(Ids::END_STONE_BRICK_WALL, 0)); - self::register("end_stone_bricks", $factory->get(Ids::END_STONE_BRICKS, 0)); - self::register("ender_chest", $factory->get(Ids::ENDER_CHEST, 0)); - self::register("fake_wooden_slab", $factory->get(Ids::FAKE_WOODEN_SLAB, 0)); - self::register("farmland", $factory->get(Ids::FARMLAND, 0)); - self::register("fern", $factory->get(Ids::FERN, 0)); - self::register("fire", $factory->get(Ids::FIRE, 0)); - self::register("fletching_table", $factory->get(Ids::FLETCHING_TABLE, 0)); - self::register("flower_pot", $factory->get(Ids::FLOWER_POT, 0)); - self::register("frosted_ice", $factory->get(Ids::FROSTED_ICE, 0)); - self::register("furnace", $factory->get(Ids::FURNACE, 0)); - self::register("glass", $factory->get(Ids::GLASS, 0)); - self::register("glass_pane", $factory->get(Ids::GLASS_PANE, 0)); - self::register("glazed_terracotta", $factory->get(Ids::GLAZED_TERRACOTTA, 0)); - self::register("glowing_obsidian", $factory->get(Ids::GLOWING_OBSIDIAN, 0)); - self::register("glowstone", $factory->get(Ids::GLOWSTONE, 0)); - self::register("gold", $factory->get(Ids::GOLD, 0)); - self::register("gold_ore", $factory->get(Ids::GOLD_ORE, 0)); - self::register("granite", $factory->get(Ids::GRANITE, 0)); - self::register("granite_slab", $factory->get(Ids::GRANITE_SLAB, 0)); - self::register("granite_stairs", $factory->get(Ids::GRANITE_STAIRS, 0)); - self::register("granite_wall", $factory->get(Ids::GRANITE_WALL, 0)); - self::register("grass", $factory->get(Ids::GRASS, 0)); - self::register("grass_path", $factory->get(Ids::GRASS_PATH, 0)); - self::register("gravel", $factory->get(Ids::GRAVEL, 0)); - self::register("green_torch", $factory->get(Ids::GREEN_TORCH, 1)); - self::register("hardened_clay", $factory->get(Ids::HARDENED_CLAY, 0)); - self::register("hardened_glass", $factory->get(Ids::HARDENED_GLASS, 0)); - self::register("hardened_glass_pane", $factory->get(Ids::HARDENED_GLASS_PANE, 0)); - self::register("hay_bale", $factory->get(Ids::HAY_BALE, 2)); - self::register("hopper", $factory->get(Ids::HOPPER, 0)); - self::register("ice", $factory->get(Ids::ICE, 0)); - self::register("infested_chiseled_stone_brick", $factory->get(Ids::INFESTED_CHISELED_STONE_BRICK, 0)); - self::register("infested_cobblestone", $factory->get(Ids::INFESTED_COBBLESTONE, 0)); - self::register("infested_cracked_stone_brick", $factory->get(Ids::INFESTED_CRACKED_STONE_BRICK, 0)); - self::register("infested_mossy_stone_brick", $factory->get(Ids::INFESTED_MOSSY_STONE_BRICK, 0)); - self::register("infested_stone", $factory->get(Ids::INFESTED_STONE, 0)); - self::register("infested_stone_brick", $factory->get(Ids::INFESTED_STONE_BRICK, 0)); - self::register("info_update", $factory->get(Ids::INFO_UPDATE, 0)); - self::register("info_update2", $factory->get(Ids::INFO_UPDATE2, 0)); - self::register("invisible_bedrock", $factory->get(Ids::INVISIBLE_BEDROCK, 0)); - self::register("iron", $factory->get(Ids::IRON, 0)); - self::register("iron_bars", $factory->get(Ids::IRON_BARS, 0)); - self::register("iron_door", $factory->get(Ids::IRON_DOOR, 0)); - self::register("iron_ore", $factory->get(Ids::IRON_ORE, 0)); - self::register("iron_trapdoor", $factory->get(Ids::IRON_TRAPDOOR, 0)); - self::register("item_frame", $factory->get(Ids::ITEM_FRAME, 0)); - self::register("jukebox", $factory->get(Ids::JUKEBOX, 0)); - self::register("jungle_button", $factory->get(Ids::JUNGLE_BUTTON, 0)); - self::register("jungle_door", $factory->get(Ids::JUNGLE_DOOR, 0)); - self::register("jungle_fence", $factory->get(Ids::JUNGLE_FENCE, 0)); - self::register("jungle_fence_gate", $factory->get(Ids::JUNGLE_FENCE_GATE, 0)); - self::register("jungle_leaves", $factory->get(Ids::JUNGLE_LEAVES, 0)); - self::register("jungle_log", $factory->get(Ids::JUNGLE_LOG, 4)); - self::register("jungle_planks", $factory->get(Ids::JUNGLE_PLANKS, 0)); - self::register("jungle_pressure_plate", $factory->get(Ids::JUNGLE_PRESSURE_PLATE, 0)); - self::register("jungle_sapling", $factory->get(Ids::JUNGLE_SAPLING, 0)); - self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN, 0)); - self::register("jungle_slab", $factory->get(Ids::JUNGLE_SLAB, 0)); - self::register("jungle_stairs", $factory->get(Ids::JUNGLE_STAIRS, 0)); - self::register("jungle_trapdoor", $factory->get(Ids::JUNGLE_TRAPDOOR, 0)); - self::register("jungle_wall_sign", $factory->get(Ids::JUNGLE_WALL_SIGN, 0)); - self::register("jungle_wood", $factory->get(Ids::JUNGLE_WOOD, 4)); - self::register("lab_table", $factory->get(Ids::LAB_TABLE, 0)); - self::register("ladder", $factory->get(Ids::LADDER, 0)); - self::register("lantern", $factory->get(Ids::LANTERN, 0)); - self::register("lapis_lazuli", $factory->get(Ids::LAPIS_LAZULI, 0)); - self::register("lapis_lazuli_ore", $factory->get(Ids::LAPIS_LAZULI_ORE, 0)); - self::register("large_fern", $factory->get(Ids::LARGE_FERN, 0)); - self::register("lava", $factory->get(Ids::LAVA, 0)); - self::register("lectern", $factory->get(Ids::LECTERN, 0)); - self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0)); - self::register("lever", $factory->get(Ids::LEVER, 5)); - self::register("light", $factory->get(Ids::LIGHT, 15)); - self::register("lilac", $factory->get(Ids::LILAC, 0)); - self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0)); - self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0)); - self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0)); - self::register("loom", $factory->get(Ids::LOOM, 0)); - self::register("magma", $factory->get(Ids::MAGMA, 0)); - self::register("mangrove_button", $factory->get(Ids::MANGROVE_BUTTON, 0)); - self::register("mangrove_door", $factory->get(Ids::MANGROVE_DOOR, 0)); - self::register("mangrove_fence", $factory->get(Ids::MANGROVE_FENCE, 0)); - self::register("mangrove_fence_gate", $factory->get(Ids::MANGROVE_FENCE_GATE, 0)); - self::register("mangrove_log", $factory->get(Ids::MANGROVE_LOG, 4)); - self::register("mangrove_planks", $factory->get(Ids::MANGROVE_PLANKS, 0)); - self::register("mangrove_pressure_plate", $factory->get(Ids::MANGROVE_PRESSURE_PLATE, 0)); - self::register("mangrove_slab", $factory->get(Ids::MANGROVE_SLAB, 0)); - self::register("mangrove_stairs", $factory->get(Ids::MANGROVE_STAIRS, 0)); - self::register("mangrove_trapdoor", $factory->get(Ids::MANGROVE_TRAPDOOR, 0)); - self::register("mangrove_wood", $factory->get(Ids::MANGROVE_WOOD, 4)); - self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0)); - self::register("melon", $factory->get(Ids::MELON, 0)); - self::register("melon_stem", $factory->get(Ids::MELON_STEM, 0)); - self::register("mob_head", $factory->get(Ids::MOB_HEAD, 19)); - self::register("monster_spawner", $factory->get(Ids::MONSTER_SPAWNER, 0)); - self::register("mossy_cobblestone", $factory->get(Ids::MOSSY_COBBLESTONE, 0)); - self::register("mossy_cobblestone_slab", $factory->get(Ids::MOSSY_COBBLESTONE_SLAB, 0)); - self::register("mossy_cobblestone_stairs", $factory->get(Ids::MOSSY_COBBLESTONE_STAIRS, 0)); - self::register("mossy_cobblestone_wall", $factory->get(Ids::MOSSY_COBBLESTONE_WALL, 0)); - self::register("mossy_stone_brick_slab", $factory->get(Ids::MOSSY_STONE_BRICK_SLAB, 0)); - self::register("mossy_stone_brick_stairs", $factory->get(Ids::MOSSY_STONE_BRICK_STAIRS, 0)); - self::register("mossy_stone_brick_wall", $factory->get(Ids::MOSSY_STONE_BRICK_WALL, 0)); - self::register("mossy_stone_bricks", $factory->get(Ids::MOSSY_STONE_BRICKS, 0)); - self::register("mushroom_stem", $factory->get(Ids::MUSHROOM_STEM, 0)); - self::register("mycelium", $factory->get(Ids::MYCELIUM, 0)); - self::register("nether_brick_fence", $factory->get(Ids::NETHER_BRICK_FENCE, 0)); - self::register("nether_brick_slab", $factory->get(Ids::NETHER_BRICK_SLAB, 0)); - self::register("nether_brick_stairs", $factory->get(Ids::NETHER_BRICK_STAIRS, 0)); - self::register("nether_brick_wall", $factory->get(Ids::NETHER_BRICK_WALL, 0)); - self::register("nether_bricks", $factory->get(Ids::NETHER_BRICKS, 0)); - self::register("nether_portal", $factory->get(Ids::NETHER_PORTAL, 0)); - self::register("nether_quartz_ore", $factory->get(Ids::NETHER_QUARTZ_ORE, 0)); - self::register("nether_reactor_core", $factory->get(Ids::NETHER_REACTOR_CORE, 0)); - self::register("nether_wart", $factory->get(Ids::NETHER_WART, 0)); - self::register("nether_wart_block", $factory->get(Ids::NETHER_WART_BLOCK, 0)); - self::register("netherrack", $factory->get(Ids::NETHERRACK, 0)); - self::register("note_block", $factory->get(Ids::NOTE_BLOCK, 0)); - self::register("oak_button", $factory->get(Ids::OAK_BUTTON, 0)); - self::register("oak_door", $factory->get(Ids::OAK_DOOR, 0)); - self::register("oak_fence", $factory->get(Ids::OAK_FENCE, 0)); - self::register("oak_fence_gate", $factory->get(Ids::OAK_FENCE_GATE, 0)); - self::register("oak_leaves", $factory->get(Ids::OAK_LEAVES, 0)); - self::register("oak_log", $factory->get(Ids::OAK_LOG, 4)); - self::register("oak_planks", $factory->get(Ids::OAK_PLANKS, 0)); - self::register("oak_pressure_plate", $factory->get(Ids::OAK_PRESSURE_PLATE, 0)); - self::register("oak_sapling", $factory->get(Ids::OAK_SAPLING, 0)); - self::register("oak_sign", $factory->get(Ids::OAK_SIGN, 0)); - self::register("oak_slab", $factory->get(Ids::OAK_SLAB, 0)); - self::register("oak_stairs", $factory->get(Ids::OAK_STAIRS, 0)); - self::register("oak_trapdoor", $factory->get(Ids::OAK_TRAPDOOR, 0)); - self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0)); - self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 4)); - self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0)); - self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0)); - self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0)); - self::register("packed_ice", $factory->get(Ids::PACKED_ICE, 0)); - self::register("peony", $factory->get(Ids::PEONY, 0)); - self::register("pink_tulip", $factory->get(Ids::PINK_TULIP, 0)); - self::register("podzol", $factory->get(Ids::PODZOL, 0)); - self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0)); - self::register("polished_andesite_slab", $factory->get(Ids::POLISHED_ANDESITE_SLAB, 0)); - self::register("polished_andesite_stairs", $factory->get(Ids::POLISHED_ANDESITE_STAIRS, 0)); - self::register("polished_basalt", $factory->get(Ids::POLISHED_BASALT, 2)); - self::register("polished_blackstone", $factory->get(Ids::POLISHED_BLACKSTONE, 0)); - self::register("polished_blackstone_brick_slab", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, 0)); - self::register("polished_blackstone_brick_stairs", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, 0)); - self::register("polished_blackstone_brick_wall", $factory->get(Ids::POLISHED_BLACKSTONE_BRICK_WALL, 0)); - self::register("polished_blackstone_bricks", $factory->get(Ids::POLISHED_BLACKSTONE_BRICKS, 0)); - self::register("polished_blackstone_button", $factory->get(Ids::POLISHED_BLACKSTONE_BUTTON, 0)); - self::register("polished_blackstone_pressure_plate", $factory->get(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, 0)); - self::register("polished_blackstone_slab", $factory->get(Ids::POLISHED_BLACKSTONE_SLAB, 0)); - self::register("polished_blackstone_stairs", $factory->get(Ids::POLISHED_BLACKSTONE_STAIRS, 0)); - self::register("polished_blackstone_wall", $factory->get(Ids::POLISHED_BLACKSTONE_WALL, 0)); - self::register("polished_deepslate", $factory->get(Ids::POLISHED_DEEPSLATE, 0)); - self::register("polished_deepslate_slab", $factory->get(Ids::POLISHED_DEEPSLATE_SLAB, 0)); - self::register("polished_deepslate_stairs", $factory->get(Ids::POLISHED_DEEPSLATE_STAIRS, 0)); - self::register("polished_deepslate_wall", $factory->get(Ids::POLISHED_DEEPSLATE_WALL, 0)); - self::register("polished_diorite", $factory->get(Ids::POLISHED_DIORITE, 0)); - self::register("polished_diorite_slab", $factory->get(Ids::POLISHED_DIORITE_SLAB, 0)); - self::register("polished_diorite_stairs", $factory->get(Ids::POLISHED_DIORITE_STAIRS, 0)); - self::register("polished_granite", $factory->get(Ids::POLISHED_GRANITE, 0)); - self::register("polished_granite_slab", $factory->get(Ids::POLISHED_GRANITE_SLAB, 0)); - self::register("polished_granite_stairs", $factory->get(Ids::POLISHED_GRANITE_STAIRS, 0)); - self::register("poppy", $factory->get(Ids::POPPY, 0)); - self::register("potatoes", $factory->get(Ids::POTATOES, 0)); - self::register("powered_rail", $factory->get(Ids::POWERED_RAIL, 0)); - self::register("prismarine", $factory->get(Ids::PRISMARINE, 0)); - self::register("prismarine_bricks", $factory->get(Ids::PRISMARINE_BRICKS, 0)); - self::register("prismarine_bricks_slab", $factory->get(Ids::PRISMARINE_BRICKS_SLAB, 0)); - self::register("prismarine_bricks_stairs", $factory->get(Ids::PRISMARINE_BRICKS_STAIRS, 0)); - self::register("prismarine_slab", $factory->get(Ids::PRISMARINE_SLAB, 0)); - self::register("prismarine_stairs", $factory->get(Ids::PRISMARINE_STAIRS, 0)); - self::register("prismarine_wall", $factory->get(Ids::PRISMARINE_WALL, 0)); - self::register("pumpkin", $factory->get(Ids::PUMPKIN, 0)); - self::register("pumpkin_stem", $factory->get(Ids::PUMPKIN_STEM, 0)); - self::register("purple_torch", $factory->get(Ids::PURPLE_TORCH, 1)); - self::register("purpur", $factory->get(Ids::PURPUR, 0)); - self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 2)); - self::register("purpur_slab", $factory->get(Ids::PURPUR_SLAB, 0)); - self::register("purpur_stairs", $factory->get(Ids::PURPUR_STAIRS, 0)); - self::register("quartz", $factory->get(Ids::QUARTZ, 0)); - self::register("quartz_bricks", $factory->get(Ids::QUARTZ_BRICKS, 0)); - self::register("quartz_pillar", $factory->get(Ids::QUARTZ_PILLAR, 2)); - self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0)); - self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0)); - self::register("rail", $factory->get(Ids::RAIL, 0)); - self::register("raw_copper", $factory->get(Ids::RAW_COPPER, 0)); - self::register("raw_gold", $factory->get(Ids::RAW_GOLD, 0)); - self::register("raw_iron", $factory->get(Ids::RAW_IRON, 0)); - self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0)); - self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 10)); - self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0)); - self::register("red_nether_brick_stairs", $factory->get(Ids::RED_NETHER_BRICK_STAIRS, 0)); - self::register("red_nether_brick_wall", $factory->get(Ids::RED_NETHER_BRICK_WALL, 0)); - self::register("red_nether_bricks", $factory->get(Ids::RED_NETHER_BRICKS, 0)); - self::register("red_sand", $factory->get(Ids::RED_SAND, 0)); - self::register("red_sandstone", $factory->get(Ids::RED_SANDSTONE, 0)); - self::register("red_sandstone_slab", $factory->get(Ids::RED_SANDSTONE_SLAB, 0)); - self::register("red_sandstone_stairs", $factory->get(Ids::RED_SANDSTONE_STAIRS, 0)); - self::register("red_sandstone_wall", $factory->get(Ids::RED_SANDSTONE_WALL, 0)); - self::register("red_torch", $factory->get(Ids::RED_TORCH, 1)); - self::register("red_tulip", $factory->get(Ids::RED_TULIP, 0)); - self::register("redstone", $factory->get(Ids::REDSTONE, 0)); - self::register("redstone_comparator", $factory->get(Ids::REDSTONE_COMPARATOR, 0)); - self::register("redstone_lamp", $factory->get(Ids::REDSTONE_LAMP, 0)); - self::register("redstone_ore", $factory->get(Ids::REDSTONE_ORE, 0)); - self::register("redstone_repeater", $factory->get(Ids::REDSTONE_REPEATER, 0)); - self::register("redstone_torch", $factory->get(Ids::REDSTONE_TORCH, 9)); - self::register("redstone_wire", $factory->get(Ids::REDSTONE_WIRE, 0)); - self::register("reserved6", $factory->get(Ids::RESERVED6, 0)); - self::register("rose_bush", $factory->get(Ids::ROSE_BUSH, 0)); - self::register("sand", $factory->get(Ids::SAND, 0)); - self::register("sandstone", $factory->get(Ids::SANDSTONE, 0)); - self::register("sandstone_slab", $factory->get(Ids::SANDSTONE_SLAB, 0)); - self::register("sandstone_stairs", $factory->get(Ids::SANDSTONE_STAIRS, 0)); - self::register("sandstone_wall", $factory->get(Ids::SANDSTONE_WALL, 0)); - self::register("sea_lantern", $factory->get(Ids::SEA_LANTERN, 0)); - self::register("sea_pickle", $factory->get(Ids::SEA_PICKLE, 0)); - self::register("shulker_box", $factory->get(Ids::SHULKER_BOX, 0)); - self::register("slime", $factory->get(Ids::SLIME, 0)); - self::register("smoker", $factory->get(Ids::SMOKER, 0)); - self::register("smooth_basalt", $factory->get(Ids::SMOOTH_BASALT, 0)); - self::register("smooth_quartz", $factory->get(Ids::SMOOTH_QUARTZ, 0)); - self::register("smooth_quartz_slab", $factory->get(Ids::SMOOTH_QUARTZ_SLAB, 0)); - self::register("smooth_quartz_stairs", $factory->get(Ids::SMOOTH_QUARTZ_STAIRS, 0)); - self::register("smooth_red_sandstone", $factory->get(Ids::SMOOTH_RED_SANDSTONE, 0)); - self::register("smooth_red_sandstone_slab", $factory->get(Ids::SMOOTH_RED_SANDSTONE_SLAB, 0)); - self::register("smooth_red_sandstone_stairs", $factory->get(Ids::SMOOTH_RED_SANDSTONE_STAIRS, 0)); - self::register("smooth_sandstone", $factory->get(Ids::SMOOTH_SANDSTONE, 0)); - self::register("smooth_sandstone_slab", $factory->get(Ids::SMOOTH_SANDSTONE_SLAB, 0)); - self::register("smooth_sandstone_stairs", $factory->get(Ids::SMOOTH_SANDSTONE_STAIRS, 0)); - self::register("smooth_stone", $factory->get(Ids::SMOOTH_STONE, 0)); - self::register("smooth_stone_slab", $factory->get(Ids::SMOOTH_STONE_SLAB, 0)); - self::register("snow", $factory->get(Ids::SNOW, 0)); - self::register("snow_layer", $factory->get(Ids::SNOW_LAYER, 0)); - self::register("soul_fire", $factory->get(Ids::SOUL_FIRE, 0)); - self::register("soul_sand", $factory->get(Ids::SOUL_SAND, 0)); - self::register("sponge", $factory->get(Ids::SPONGE, 0)); - self::register("spruce_button", $factory->get(Ids::SPRUCE_BUTTON, 0)); - self::register("spruce_door", $factory->get(Ids::SPRUCE_DOOR, 0)); - self::register("spruce_fence", $factory->get(Ids::SPRUCE_FENCE, 0)); - self::register("spruce_fence_gate", $factory->get(Ids::SPRUCE_FENCE_GATE, 0)); - self::register("spruce_leaves", $factory->get(Ids::SPRUCE_LEAVES, 0)); - self::register("spruce_log", $factory->get(Ids::SPRUCE_LOG, 4)); - self::register("spruce_planks", $factory->get(Ids::SPRUCE_PLANKS, 0)); - self::register("spruce_pressure_plate", $factory->get(Ids::SPRUCE_PRESSURE_PLATE, 0)); - self::register("spruce_sapling", $factory->get(Ids::SPRUCE_SAPLING, 0)); - self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN, 0)); - self::register("spruce_slab", $factory->get(Ids::SPRUCE_SLAB, 0)); - self::register("spruce_stairs", $factory->get(Ids::SPRUCE_STAIRS, 0)); - self::register("spruce_trapdoor", $factory->get(Ids::SPRUCE_TRAPDOOR, 0)); - self::register("spruce_wall_sign", $factory->get(Ids::SPRUCE_WALL_SIGN, 0)); - self::register("spruce_wood", $factory->get(Ids::SPRUCE_WOOD, 4)); - self::register("stained_clay", $factory->get(Ids::STAINED_CLAY, 14)); - self::register("stained_glass", $factory->get(Ids::STAINED_GLASS, 14)); - self::register("stained_glass_pane", $factory->get(Ids::STAINED_GLASS_PANE, 14)); - self::register("stained_hardened_glass", $factory->get(Ids::STAINED_HARDENED_GLASS, 14)); - self::register("stained_hardened_glass_pane", $factory->get(Ids::STAINED_HARDENED_GLASS_PANE, 14)); - self::register("stone", $factory->get(Ids::STONE, 0)); - self::register("stone_brick_slab", $factory->get(Ids::STONE_BRICK_SLAB, 0)); - self::register("stone_brick_stairs", $factory->get(Ids::STONE_BRICK_STAIRS, 0)); - self::register("stone_brick_wall", $factory->get(Ids::STONE_BRICK_WALL, 0)); - self::register("stone_bricks", $factory->get(Ids::STONE_BRICKS, 0)); - self::register("stone_button", $factory->get(Ids::STONE_BUTTON, 0)); - self::register("stone_pressure_plate", $factory->get(Ids::STONE_PRESSURE_PLATE, 0)); - self::register("stone_slab", $factory->get(Ids::STONE_SLAB, 0)); - self::register("stone_stairs", $factory->get(Ids::STONE_STAIRS, 0)); - self::register("stonecutter", $factory->get(Ids::STONECUTTER, 0)); - self::register("sugarcane", $factory->get(Ids::SUGARCANE, 0)); - self::register("sunflower", $factory->get(Ids::SUNFLOWER, 0)); - self::register("sweet_berry_bush", $factory->get(Ids::SWEET_BERRY_BUSH, 0)); - self::register("tall_grass", $factory->get(Ids::TALL_GRASS, 0)); - self::register("tnt", $factory->get(Ids::TNT, 0)); - self::register("torch", $factory->get(Ids::TORCH, 1)); - self::register("trapped_chest", $factory->get(Ids::TRAPPED_CHEST, 0)); - self::register("tripwire", $factory->get(Ids::TRIPWIRE, 0)); - self::register("tripwire_hook", $factory->get(Ids::TRIPWIRE_HOOK, 0)); - self::register("underwater_torch", $factory->get(Ids::UNDERWATER_TORCH, 1)); - self::register("vines", $factory->get(Ids::VINES, 0)); - self::register("wall_banner", $factory->get(Ids::WALL_BANNER, 0)); - self::register("wall_coral_fan", $factory->get(Ids::WALL_CORAL_FAN, 4)); - self::register("warped_button", $factory->get(Ids::WARPED_BUTTON, 0)); - self::register("warped_door", $factory->get(Ids::WARPED_DOOR, 0)); - self::register("warped_fence", $factory->get(Ids::WARPED_FENCE, 0)); - self::register("warped_fence_gate", $factory->get(Ids::WARPED_FENCE_GATE, 0)); - self::register("warped_hyphae", $factory->get(Ids::WARPED_HYPHAE, 4)); - self::register("warped_planks", $factory->get(Ids::WARPED_PLANKS, 0)); - self::register("warped_pressure_plate", $factory->get(Ids::WARPED_PRESSURE_PLATE, 0)); - self::register("warped_slab", $factory->get(Ids::WARPED_SLAB, 0)); - self::register("warped_stairs", $factory->get(Ids::WARPED_STAIRS, 0)); - self::register("warped_stem", $factory->get(Ids::WARPED_STEM, 4)); - self::register("warped_trapdoor", $factory->get(Ids::WARPED_TRAPDOOR, 0)); - self::register("water", $factory->get(Ids::WATER, 0)); - self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0)); - self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0)); - self::register("wheat", $factory->get(Ids::WHEAT, 0)); - self::register("white_tulip", $factory->get(Ids::WHITE_TULIP, 0)); - self::register("wool", $factory->get(Ids::WOOL, 14)); + self::register("acacia_button", $factory->fromTypeId(Ids::ACACIA_BUTTON)); + self::register("acacia_door", $factory->fromTypeId(Ids::ACACIA_DOOR)); + self::register("acacia_fence", $factory->fromTypeId(Ids::ACACIA_FENCE)); + self::register("acacia_fence_gate", $factory->fromTypeId(Ids::ACACIA_FENCE_GATE)); + self::register("acacia_leaves", $factory->fromTypeId(Ids::ACACIA_LEAVES)); + self::register("acacia_log", $factory->fromTypeId(Ids::ACACIA_LOG)); + self::register("acacia_planks", $factory->fromTypeId(Ids::ACACIA_PLANKS)); + self::register("acacia_pressure_plate", $factory->fromTypeId(Ids::ACACIA_PRESSURE_PLATE)); + self::register("acacia_sapling", $factory->fromTypeId(Ids::ACACIA_SAPLING)); + self::register("acacia_sign", $factory->fromTypeId(Ids::ACACIA_SIGN)); + self::register("acacia_slab", $factory->fromTypeId(Ids::ACACIA_SLAB)); + self::register("acacia_stairs", $factory->fromTypeId(Ids::ACACIA_STAIRS)); + self::register("acacia_trapdoor", $factory->fromTypeId(Ids::ACACIA_TRAPDOOR)); + self::register("acacia_wall_sign", $factory->fromTypeId(Ids::ACACIA_WALL_SIGN)); + self::register("acacia_wood", $factory->fromTypeId(Ids::ACACIA_WOOD)); + self::register("activator_rail", $factory->fromTypeId(Ids::ACTIVATOR_RAIL)); + self::register("air", $factory->fromTypeId(Ids::AIR)); + self::register("all_sided_mushroom_stem", $factory->fromTypeId(Ids::ALL_SIDED_MUSHROOM_STEM)); + self::register("allium", $factory->fromTypeId(Ids::ALLIUM)); + self::register("amethyst", $factory->fromTypeId(Ids::AMETHYST)); + self::register("ancient_debris", $factory->fromTypeId(Ids::ANCIENT_DEBRIS)); + self::register("andesite", $factory->fromTypeId(Ids::ANDESITE)); + self::register("andesite_slab", $factory->fromTypeId(Ids::ANDESITE_SLAB)); + self::register("andesite_stairs", $factory->fromTypeId(Ids::ANDESITE_STAIRS)); + self::register("andesite_wall", $factory->fromTypeId(Ids::ANDESITE_WALL)); + self::register("anvil", $factory->fromTypeId(Ids::ANVIL)); + self::register("azure_bluet", $factory->fromTypeId(Ids::AZURE_BLUET)); + self::register("bamboo", $factory->fromTypeId(Ids::BAMBOO)); + self::register("bamboo_sapling", $factory->fromTypeId(Ids::BAMBOO_SAPLING)); + self::register("banner", $factory->fromTypeId(Ids::BANNER)); + self::register("barrel", $factory->fromTypeId(Ids::BARREL)); + self::register("barrier", $factory->fromTypeId(Ids::BARRIER)); + self::register("basalt", $factory->fromTypeId(Ids::BASALT)); + self::register("beacon", $factory->fromTypeId(Ids::BEACON)); + self::register("bed", $factory->fromTypeId(Ids::BED)); + self::register("bedrock", $factory->fromTypeId(Ids::BEDROCK)); + self::register("beetroots", $factory->fromTypeId(Ids::BEETROOTS)); + self::register("bell", $factory->fromTypeId(Ids::BELL)); + self::register("birch_button", $factory->fromTypeId(Ids::BIRCH_BUTTON)); + self::register("birch_door", $factory->fromTypeId(Ids::BIRCH_DOOR)); + self::register("birch_fence", $factory->fromTypeId(Ids::BIRCH_FENCE)); + self::register("birch_fence_gate", $factory->fromTypeId(Ids::BIRCH_FENCE_GATE)); + self::register("birch_leaves", $factory->fromTypeId(Ids::BIRCH_LEAVES)); + self::register("birch_log", $factory->fromTypeId(Ids::BIRCH_LOG)); + self::register("birch_planks", $factory->fromTypeId(Ids::BIRCH_PLANKS)); + self::register("birch_pressure_plate", $factory->fromTypeId(Ids::BIRCH_PRESSURE_PLATE)); + self::register("birch_sapling", $factory->fromTypeId(Ids::BIRCH_SAPLING)); + self::register("birch_sign", $factory->fromTypeId(Ids::BIRCH_SIGN)); + self::register("birch_slab", $factory->fromTypeId(Ids::BIRCH_SLAB)); + self::register("birch_stairs", $factory->fromTypeId(Ids::BIRCH_STAIRS)); + self::register("birch_trapdoor", $factory->fromTypeId(Ids::BIRCH_TRAPDOOR)); + self::register("birch_wall_sign", $factory->fromTypeId(Ids::BIRCH_WALL_SIGN)); + self::register("birch_wood", $factory->fromTypeId(Ids::BIRCH_WOOD)); + self::register("blackstone", $factory->fromTypeId(Ids::BLACKSTONE)); + self::register("blackstone_slab", $factory->fromTypeId(Ids::BLACKSTONE_SLAB)); + self::register("blackstone_stairs", $factory->fromTypeId(Ids::BLACKSTONE_STAIRS)); + self::register("blackstone_wall", $factory->fromTypeId(Ids::BLACKSTONE_WALL)); + self::register("blast_furnace", $factory->fromTypeId(Ids::BLAST_FURNACE)); + self::register("blue_ice", $factory->fromTypeId(Ids::BLUE_ICE)); + self::register("blue_orchid", $factory->fromTypeId(Ids::BLUE_ORCHID)); + self::register("blue_torch", $factory->fromTypeId(Ids::BLUE_TORCH)); + self::register("bone_block", $factory->fromTypeId(Ids::BONE_BLOCK)); + self::register("bookshelf", $factory->fromTypeId(Ids::BOOKSHELF)); + self::register("brewing_stand", $factory->fromTypeId(Ids::BREWING_STAND)); + self::register("brick_slab", $factory->fromTypeId(Ids::BRICK_SLAB)); + self::register("brick_stairs", $factory->fromTypeId(Ids::BRICK_STAIRS)); + self::register("brick_wall", $factory->fromTypeId(Ids::BRICK_WALL)); + self::register("bricks", $factory->fromTypeId(Ids::BRICKS)); + self::register("brown_mushroom", $factory->fromTypeId(Ids::BROWN_MUSHROOM)); + self::register("brown_mushroom_block", $factory->fromTypeId(Ids::BROWN_MUSHROOM_BLOCK)); + self::register("cactus", $factory->fromTypeId(Ids::CACTUS)); + self::register("cake", $factory->fromTypeId(Ids::CAKE)); + self::register("calcite", $factory->fromTypeId(Ids::CALCITE)); + self::register("carpet", $factory->fromTypeId(Ids::CARPET)); + self::register("carrots", $factory->fromTypeId(Ids::CARROTS)); + self::register("carved_pumpkin", $factory->fromTypeId(Ids::CARVED_PUMPKIN)); + self::register("chemical_heat", $factory->fromTypeId(Ids::CHEMICAL_HEAT)); + self::register("chest", $factory->fromTypeId(Ids::CHEST)); + self::register("chiseled_deepslate", $factory->fromTypeId(Ids::CHISELED_DEEPSLATE)); + self::register("chiseled_nether_bricks", $factory->fromTypeId(Ids::CHISELED_NETHER_BRICKS)); + self::register("chiseled_polished_blackstone", $factory->fromTypeId(Ids::CHISELED_POLISHED_BLACKSTONE)); + self::register("chiseled_quartz", $factory->fromTypeId(Ids::CHISELED_QUARTZ)); + self::register("chiseled_red_sandstone", $factory->fromTypeId(Ids::CHISELED_RED_SANDSTONE)); + self::register("chiseled_sandstone", $factory->fromTypeId(Ids::CHISELED_SANDSTONE)); + self::register("chiseled_stone_bricks", $factory->fromTypeId(Ids::CHISELED_STONE_BRICKS)); + self::register("clay", $factory->fromTypeId(Ids::CLAY)); + self::register("coal", $factory->fromTypeId(Ids::COAL)); + self::register("coal_ore", $factory->fromTypeId(Ids::COAL_ORE)); + self::register("cobbled_deepslate", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE)); + self::register("cobbled_deepslate_slab", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_SLAB)); + self::register("cobbled_deepslate_stairs", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_STAIRS)); + self::register("cobbled_deepslate_wall", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_WALL)); + self::register("cobblestone", $factory->fromTypeId(Ids::COBBLESTONE)); + self::register("cobblestone_slab", $factory->fromTypeId(Ids::COBBLESTONE_SLAB)); + self::register("cobblestone_stairs", $factory->fromTypeId(Ids::COBBLESTONE_STAIRS)); + self::register("cobblestone_wall", $factory->fromTypeId(Ids::COBBLESTONE_WALL)); + self::register("cobweb", $factory->fromTypeId(Ids::COBWEB)); + self::register("cocoa_pod", $factory->fromTypeId(Ids::COCOA_POD)); + self::register("compound_creator", $factory->fromTypeId(Ids::COMPOUND_CREATOR)); + self::register("concrete", $factory->fromTypeId(Ids::CONCRETE)); + self::register("concrete_powder", $factory->fromTypeId(Ids::CONCRETE_POWDER)); + self::register("coral", $factory->fromTypeId(Ids::CORAL)); + self::register("coral_block", $factory->fromTypeId(Ids::CORAL_BLOCK)); + self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); + self::register("cornflower", $factory->fromTypeId(Ids::CORNFLOWER)); + self::register("cracked_deepslate_bricks", $factory->fromTypeId(Ids::CRACKED_DEEPSLATE_BRICKS)); + self::register("cracked_deepslate_tiles", $factory->fromTypeId(Ids::CRACKED_DEEPSLATE_TILES)); + self::register("cracked_nether_bricks", $factory->fromTypeId(Ids::CRACKED_NETHER_BRICKS)); + self::register("cracked_polished_blackstone_bricks", $factory->fromTypeId(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS)); + self::register("cracked_stone_bricks", $factory->fromTypeId(Ids::CRACKED_STONE_BRICKS)); + self::register("crafting_table", $factory->fromTypeId(Ids::CRAFTING_TABLE)); + self::register("crimson_button", $factory->fromTypeId(Ids::CRIMSON_BUTTON)); + self::register("crimson_door", $factory->fromTypeId(Ids::CRIMSON_DOOR)); + self::register("crimson_fence", $factory->fromTypeId(Ids::CRIMSON_FENCE)); + self::register("crimson_fence_gate", $factory->fromTypeId(Ids::CRIMSON_FENCE_GATE)); + self::register("crimson_hyphae", $factory->fromTypeId(Ids::CRIMSON_HYPHAE)); + self::register("crimson_planks", $factory->fromTypeId(Ids::CRIMSON_PLANKS)); + self::register("crimson_pressure_plate", $factory->fromTypeId(Ids::CRIMSON_PRESSURE_PLATE)); + self::register("crimson_slab", $factory->fromTypeId(Ids::CRIMSON_SLAB)); + self::register("crimson_stairs", $factory->fromTypeId(Ids::CRIMSON_STAIRS)); + self::register("crimson_stem", $factory->fromTypeId(Ids::CRIMSON_STEM)); + self::register("crimson_trapdoor", $factory->fromTypeId(Ids::CRIMSON_TRAPDOOR)); + self::register("cut_red_sandstone", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE)); + self::register("cut_red_sandstone_slab", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE_SLAB)); + self::register("cut_sandstone", $factory->fromTypeId(Ids::CUT_SANDSTONE)); + self::register("cut_sandstone_slab", $factory->fromTypeId(Ids::CUT_SANDSTONE_SLAB)); + self::register("dandelion", $factory->fromTypeId(Ids::DANDELION)); + self::register("dark_oak_button", $factory->fromTypeId(Ids::DARK_OAK_BUTTON)); + self::register("dark_oak_door", $factory->fromTypeId(Ids::DARK_OAK_DOOR)); + self::register("dark_oak_fence", $factory->fromTypeId(Ids::DARK_OAK_FENCE)); + self::register("dark_oak_fence_gate", $factory->fromTypeId(Ids::DARK_OAK_FENCE_GATE)); + self::register("dark_oak_leaves", $factory->fromTypeId(Ids::DARK_OAK_LEAVES)); + self::register("dark_oak_log", $factory->fromTypeId(Ids::DARK_OAK_LOG)); + self::register("dark_oak_planks", $factory->fromTypeId(Ids::DARK_OAK_PLANKS)); + self::register("dark_oak_pressure_plate", $factory->fromTypeId(Ids::DARK_OAK_PRESSURE_PLATE)); + self::register("dark_oak_sapling", $factory->fromTypeId(Ids::DARK_OAK_SAPLING)); + self::register("dark_oak_sign", $factory->fromTypeId(Ids::DARK_OAK_SIGN)); + self::register("dark_oak_slab", $factory->fromTypeId(Ids::DARK_OAK_SLAB)); + self::register("dark_oak_stairs", $factory->fromTypeId(Ids::DARK_OAK_STAIRS)); + self::register("dark_oak_trapdoor", $factory->fromTypeId(Ids::DARK_OAK_TRAPDOOR)); + self::register("dark_oak_wall_sign", $factory->fromTypeId(Ids::DARK_OAK_WALL_SIGN)); + self::register("dark_oak_wood", $factory->fromTypeId(Ids::DARK_OAK_WOOD)); + self::register("dark_prismarine", $factory->fromTypeId(Ids::DARK_PRISMARINE)); + self::register("dark_prismarine_slab", $factory->fromTypeId(Ids::DARK_PRISMARINE_SLAB)); + self::register("dark_prismarine_stairs", $factory->fromTypeId(Ids::DARK_PRISMARINE_STAIRS)); + self::register("daylight_sensor", $factory->fromTypeId(Ids::DAYLIGHT_SENSOR)); + self::register("dead_bush", $factory->fromTypeId(Ids::DEAD_BUSH)); + self::register("deepslate", $factory->fromTypeId(Ids::DEEPSLATE)); + self::register("deepslate_brick_slab", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_SLAB)); + self::register("deepslate_brick_stairs", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_STAIRS)); + self::register("deepslate_brick_wall", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_WALL)); + self::register("deepslate_bricks", $factory->fromTypeId(Ids::DEEPSLATE_BRICKS)); + self::register("deepslate_tile_slab", $factory->fromTypeId(Ids::DEEPSLATE_TILE_SLAB)); + self::register("deepslate_tile_stairs", $factory->fromTypeId(Ids::DEEPSLATE_TILE_STAIRS)); + self::register("deepslate_tile_wall", $factory->fromTypeId(Ids::DEEPSLATE_TILE_WALL)); + self::register("deepslate_tiles", $factory->fromTypeId(Ids::DEEPSLATE_TILES)); + self::register("detector_rail", $factory->fromTypeId(Ids::DETECTOR_RAIL)); + self::register("diamond", $factory->fromTypeId(Ids::DIAMOND)); + self::register("diamond_ore", $factory->fromTypeId(Ids::DIAMOND_ORE)); + self::register("diorite", $factory->fromTypeId(Ids::DIORITE)); + self::register("diorite_slab", $factory->fromTypeId(Ids::DIORITE_SLAB)); + self::register("diorite_stairs", $factory->fromTypeId(Ids::DIORITE_STAIRS)); + self::register("diorite_wall", $factory->fromTypeId(Ids::DIORITE_WALL)); + self::register("dirt", $factory->fromTypeId(Ids::DIRT)); + self::register("double_tallgrass", $factory->fromTypeId(Ids::DOUBLE_TALLGRASS)); + self::register("dragon_egg", $factory->fromTypeId(Ids::DRAGON_EGG)); + self::register("dried_kelp", $factory->fromTypeId(Ids::DRIED_KELP)); + self::register("dyed_shulker_box", $factory->fromTypeId(Ids::DYED_SHULKER_BOX)); + self::register("element_actinium", $factory->fromTypeId(Ids::ELEMENT_ACTINIUM)); + self::register("element_aluminum", $factory->fromTypeId(Ids::ELEMENT_ALUMINUM)); + self::register("element_americium", $factory->fromTypeId(Ids::ELEMENT_AMERICIUM)); + self::register("element_antimony", $factory->fromTypeId(Ids::ELEMENT_ANTIMONY)); + self::register("element_argon", $factory->fromTypeId(Ids::ELEMENT_ARGON)); + self::register("element_arsenic", $factory->fromTypeId(Ids::ELEMENT_ARSENIC)); + self::register("element_astatine", $factory->fromTypeId(Ids::ELEMENT_ASTATINE)); + self::register("element_barium", $factory->fromTypeId(Ids::ELEMENT_BARIUM)); + self::register("element_berkelium", $factory->fromTypeId(Ids::ELEMENT_BERKELIUM)); + self::register("element_beryllium", $factory->fromTypeId(Ids::ELEMENT_BERYLLIUM)); + self::register("element_bismuth", $factory->fromTypeId(Ids::ELEMENT_BISMUTH)); + self::register("element_bohrium", $factory->fromTypeId(Ids::ELEMENT_BOHRIUM)); + self::register("element_boron", $factory->fromTypeId(Ids::ELEMENT_BORON)); + self::register("element_bromine", $factory->fromTypeId(Ids::ELEMENT_BROMINE)); + self::register("element_cadmium", $factory->fromTypeId(Ids::ELEMENT_CADMIUM)); + self::register("element_calcium", $factory->fromTypeId(Ids::ELEMENT_CALCIUM)); + self::register("element_californium", $factory->fromTypeId(Ids::ELEMENT_CALIFORNIUM)); + self::register("element_carbon", $factory->fromTypeId(Ids::ELEMENT_CARBON)); + self::register("element_cerium", $factory->fromTypeId(Ids::ELEMENT_CERIUM)); + self::register("element_cesium", $factory->fromTypeId(Ids::ELEMENT_CESIUM)); + self::register("element_chlorine", $factory->fromTypeId(Ids::ELEMENT_CHLORINE)); + self::register("element_chromium", $factory->fromTypeId(Ids::ELEMENT_CHROMIUM)); + self::register("element_cobalt", $factory->fromTypeId(Ids::ELEMENT_COBALT)); + self::register("element_constructor", $factory->fromTypeId(Ids::ELEMENT_CONSTRUCTOR)); + self::register("element_copernicium", $factory->fromTypeId(Ids::ELEMENT_COPERNICIUM)); + self::register("element_copper", $factory->fromTypeId(Ids::ELEMENT_COPPER)); + self::register("element_curium", $factory->fromTypeId(Ids::ELEMENT_CURIUM)); + self::register("element_darmstadtium", $factory->fromTypeId(Ids::ELEMENT_DARMSTADTIUM)); + self::register("element_dubnium", $factory->fromTypeId(Ids::ELEMENT_DUBNIUM)); + self::register("element_dysprosium", $factory->fromTypeId(Ids::ELEMENT_DYSPROSIUM)); + self::register("element_einsteinium", $factory->fromTypeId(Ids::ELEMENT_EINSTEINIUM)); + self::register("element_erbium", $factory->fromTypeId(Ids::ELEMENT_ERBIUM)); + self::register("element_europium", $factory->fromTypeId(Ids::ELEMENT_EUROPIUM)); + self::register("element_fermium", $factory->fromTypeId(Ids::ELEMENT_FERMIUM)); + self::register("element_flerovium", $factory->fromTypeId(Ids::ELEMENT_FLEROVIUM)); + self::register("element_fluorine", $factory->fromTypeId(Ids::ELEMENT_FLUORINE)); + self::register("element_francium", $factory->fromTypeId(Ids::ELEMENT_FRANCIUM)); + self::register("element_gadolinium", $factory->fromTypeId(Ids::ELEMENT_GADOLINIUM)); + self::register("element_gallium", $factory->fromTypeId(Ids::ELEMENT_GALLIUM)); + self::register("element_germanium", $factory->fromTypeId(Ids::ELEMENT_GERMANIUM)); + self::register("element_gold", $factory->fromTypeId(Ids::ELEMENT_GOLD)); + self::register("element_hafnium", $factory->fromTypeId(Ids::ELEMENT_HAFNIUM)); + self::register("element_hassium", $factory->fromTypeId(Ids::ELEMENT_HASSIUM)); + self::register("element_helium", $factory->fromTypeId(Ids::ELEMENT_HELIUM)); + self::register("element_holmium", $factory->fromTypeId(Ids::ELEMENT_HOLMIUM)); + self::register("element_hydrogen", $factory->fromTypeId(Ids::ELEMENT_HYDROGEN)); + self::register("element_indium", $factory->fromTypeId(Ids::ELEMENT_INDIUM)); + self::register("element_iodine", $factory->fromTypeId(Ids::ELEMENT_IODINE)); + self::register("element_iridium", $factory->fromTypeId(Ids::ELEMENT_IRIDIUM)); + self::register("element_iron", $factory->fromTypeId(Ids::ELEMENT_IRON)); + self::register("element_krypton", $factory->fromTypeId(Ids::ELEMENT_KRYPTON)); + self::register("element_lanthanum", $factory->fromTypeId(Ids::ELEMENT_LANTHANUM)); + self::register("element_lawrencium", $factory->fromTypeId(Ids::ELEMENT_LAWRENCIUM)); + self::register("element_lead", $factory->fromTypeId(Ids::ELEMENT_LEAD)); + self::register("element_lithium", $factory->fromTypeId(Ids::ELEMENT_LITHIUM)); + self::register("element_livermorium", $factory->fromTypeId(Ids::ELEMENT_LIVERMORIUM)); + self::register("element_lutetium", $factory->fromTypeId(Ids::ELEMENT_LUTETIUM)); + self::register("element_magnesium", $factory->fromTypeId(Ids::ELEMENT_MAGNESIUM)); + self::register("element_manganese", $factory->fromTypeId(Ids::ELEMENT_MANGANESE)); + self::register("element_meitnerium", $factory->fromTypeId(Ids::ELEMENT_MEITNERIUM)); + self::register("element_mendelevium", $factory->fromTypeId(Ids::ELEMENT_MENDELEVIUM)); + self::register("element_mercury", $factory->fromTypeId(Ids::ELEMENT_MERCURY)); + self::register("element_molybdenum", $factory->fromTypeId(Ids::ELEMENT_MOLYBDENUM)); + self::register("element_moscovium", $factory->fromTypeId(Ids::ELEMENT_MOSCOVIUM)); + self::register("element_neodymium", $factory->fromTypeId(Ids::ELEMENT_NEODYMIUM)); + self::register("element_neon", $factory->fromTypeId(Ids::ELEMENT_NEON)); + self::register("element_neptunium", $factory->fromTypeId(Ids::ELEMENT_NEPTUNIUM)); + self::register("element_nickel", $factory->fromTypeId(Ids::ELEMENT_NICKEL)); + self::register("element_nihonium", $factory->fromTypeId(Ids::ELEMENT_NIHONIUM)); + self::register("element_niobium", $factory->fromTypeId(Ids::ELEMENT_NIOBIUM)); + self::register("element_nitrogen", $factory->fromTypeId(Ids::ELEMENT_NITROGEN)); + self::register("element_nobelium", $factory->fromTypeId(Ids::ELEMENT_NOBELIUM)); + self::register("element_oganesson", $factory->fromTypeId(Ids::ELEMENT_OGANESSON)); + self::register("element_osmium", $factory->fromTypeId(Ids::ELEMENT_OSMIUM)); + self::register("element_oxygen", $factory->fromTypeId(Ids::ELEMENT_OXYGEN)); + self::register("element_palladium", $factory->fromTypeId(Ids::ELEMENT_PALLADIUM)); + self::register("element_phosphorus", $factory->fromTypeId(Ids::ELEMENT_PHOSPHORUS)); + self::register("element_platinum", $factory->fromTypeId(Ids::ELEMENT_PLATINUM)); + self::register("element_plutonium", $factory->fromTypeId(Ids::ELEMENT_PLUTONIUM)); + self::register("element_polonium", $factory->fromTypeId(Ids::ELEMENT_POLONIUM)); + self::register("element_potassium", $factory->fromTypeId(Ids::ELEMENT_POTASSIUM)); + self::register("element_praseodymium", $factory->fromTypeId(Ids::ELEMENT_PRASEODYMIUM)); + self::register("element_promethium", $factory->fromTypeId(Ids::ELEMENT_PROMETHIUM)); + self::register("element_protactinium", $factory->fromTypeId(Ids::ELEMENT_PROTACTINIUM)); + self::register("element_radium", $factory->fromTypeId(Ids::ELEMENT_RADIUM)); + self::register("element_radon", $factory->fromTypeId(Ids::ELEMENT_RADON)); + self::register("element_rhenium", $factory->fromTypeId(Ids::ELEMENT_RHENIUM)); + self::register("element_rhodium", $factory->fromTypeId(Ids::ELEMENT_RHODIUM)); + self::register("element_roentgenium", $factory->fromTypeId(Ids::ELEMENT_ROENTGENIUM)); + self::register("element_rubidium", $factory->fromTypeId(Ids::ELEMENT_RUBIDIUM)); + self::register("element_ruthenium", $factory->fromTypeId(Ids::ELEMENT_RUTHENIUM)); + self::register("element_rutherfordium", $factory->fromTypeId(Ids::ELEMENT_RUTHERFORDIUM)); + self::register("element_samarium", $factory->fromTypeId(Ids::ELEMENT_SAMARIUM)); + self::register("element_scandium", $factory->fromTypeId(Ids::ELEMENT_SCANDIUM)); + self::register("element_seaborgium", $factory->fromTypeId(Ids::ELEMENT_SEABORGIUM)); + self::register("element_selenium", $factory->fromTypeId(Ids::ELEMENT_SELENIUM)); + self::register("element_silicon", $factory->fromTypeId(Ids::ELEMENT_SILICON)); + self::register("element_silver", $factory->fromTypeId(Ids::ELEMENT_SILVER)); + self::register("element_sodium", $factory->fromTypeId(Ids::ELEMENT_SODIUM)); + self::register("element_strontium", $factory->fromTypeId(Ids::ELEMENT_STRONTIUM)); + self::register("element_sulfur", $factory->fromTypeId(Ids::ELEMENT_SULFUR)); + self::register("element_tantalum", $factory->fromTypeId(Ids::ELEMENT_TANTALUM)); + self::register("element_technetium", $factory->fromTypeId(Ids::ELEMENT_TECHNETIUM)); + self::register("element_tellurium", $factory->fromTypeId(Ids::ELEMENT_TELLURIUM)); + self::register("element_tennessine", $factory->fromTypeId(Ids::ELEMENT_TENNESSINE)); + self::register("element_terbium", $factory->fromTypeId(Ids::ELEMENT_TERBIUM)); + self::register("element_thallium", $factory->fromTypeId(Ids::ELEMENT_THALLIUM)); + self::register("element_thorium", $factory->fromTypeId(Ids::ELEMENT_THORIUM)); + self::register("element_thulium", $factory->fromTypeId(Ids::ELEMENT_THULIUM)); + self::register("element_tin", $factory->fromTypeId(Ids::ELEMENT_TIN)); + self::register("element_titanium", $factory->fromTypeId(Ids::ELEMENT_TITANIUM)); + self::register("element_tungsten", $factory->fromTypeId(Ids::ELEMENT_TUNGSTEN)); + self::register("element_uranium", $factory->fromTypeId(Ids::ELEMENT_URANIUM)); + self::register("element_vanadium", $factory->fromTypeId(Ids::ELEMENT_VANADIUM)); + self::register("element_xenon", $factory->fromTypeId(Ids::ELEMENT_XENON)); + self::register("element_ytterbium", $factory->fromTypeId(Ids::ELEMENT_YTTERBIUM)); + self::register("element_yttrium", $factory->fromTypeId(Ids::ELEMENT_YTTRIUM)); + self::register("element_zero", $factory->fromTypeId(Ids::ELEMENT_ZERO)); + self::register("element_zinc", $factory->fromTypeId(Ids::ELEMENT_ZINC)); + self::register("element_zirconium", $factory->fromTypeId(Ids::ELEMENT_ZIRCONIUM)); + self::register("emerald", $factory->fromTypeId(Ids::EMERALD)); + self::register("emerald_ore", $factory->fromTypeId(Ids::EMERALD_ORE)); + self::register("enchanting_table", $factory->fromTypeId(Ids::ENCHANTING_TABLE)); + self::register("end_portal_frame", $factory->fromTypeId(Ids::END_PORTAL_FRAME)); + self::register("end_rod", $factory->fromTypeId(Ids::END_ROD)); + self::register("end_stone", $factory->fromTypeId(Ids::END_STONE)); + self::register("end_stone_brick_slab", $factory->fromTypeId(Ids::END_STONE_BRICK_SLAB)); + self::register("end_stone_brick_stairs", $factory->fromTypeId(Ids::END_STONE_BRICK_STAIRS)); + self::register("end_stone_brick_wall", $factory->fromTypeId(Ids::END_STONE_BRICK_WALL)); + self::register("end_stone_bricks", $factory->fromTypeId(Ids::END_STONE_BRICKS)); + self::register("ender_chest", $factory->fromTypeId(Ids::ENDER_CHEST)); + self::register("fake_wooden_slab", $factory->fromTypeId(Ids::FAKE_WOODEN_SLAB)); + self::register("farmland", $factory->fromTypeId(Ids::FARMLAND)); + self::register("fern", $factory->fromTypeId(Ids::FERN)); + self::register("fire", $factory->fromTypeId(Ids::FIRE)); + self::register("fletching_table", $factory->fromTypeId(Ids::FLETCHING_TABLE)); + self::register("flower_pot", $factory->fromTypeId(Ids::FLOWER_POT)); + self::register("frosted_ice", $factory->fromTypeId(Ids::FROSTED_ICE)); + self::register("furnace", $factory->fromTypeId(Ids::FURNACE)); + self::register("glass", $factory->fromTypeId(Ids::GLASS)); + self::register("glass_pane", $factory->fromTypeId(Ids::GLASS_PANE)); + self::register("glazed_terracotta", $factory->fromTypeId(Ids::GLAZED_TERRACOTTA)); + self::register("glowing_obsidian", $factory->fromTypeId(Ids::GLOWING_OBSIDIAN)); + self::register("glowstone", $factory->fromTypeId(Ids::GLOWSTONE)); + self::register("gold", $factory->fromTypeId(Ids::GOLD)); + self::register("gold_ore", $factory->fromTypeId(Ids::GOLD_ORE)); + self::register("granite", $factory->fromTypeId(Ids::GRANITE)); + self::register("granite_slab", $factory->fromTypeId(Ids::GRANITE_SLAB)); + self::register("granite_stairs", $factory->fromTypeId(Ids::GRANITE_STAIRS)); + self::register("granite_wall", $factory->fromTypeId(Ids::GRANITE_WALL)); + self::register("grass", $factory->fromTypeId(Ids::GRASS)); + self::register("grass_path", $factory->fromTypeId(Ids::GRASS_PATH)); + self::register("gravel", $factory->fromTypeId(Ids::GRAVEL)); + self::register("green_torch", $factory->fromTypeId(Ids::GREEN_TORCH)); + self::register("hardened_clay", $factory->fromTypeId(Ids::HARDENED_CLAY)); + self::register("hardened_glass", $factory->fromTypeId(Ids::HARDENED_GLASS)); + self::register("hardened_glass_pane", $factory->fromTypeId(Ids::HARDENED_GLASS_PANE)); + self::register("hay_bale", $factory->fromTypeId(Ids::HAY_BALE)); + self::register("hopper", $factory->fromTypeId(Ids::HOPPER)); + self::register("ice", $factory->fromTypeId(Ids::ICE)); + self::register("infested_chiseled_stone_brick", $factory->fromTypeId(Ids::INFESTED_CHISELED_STONE_BRICK)); + self::register("infested_cobblestone", $factory->fromTypeId(Ids::INFESTED_COBBLESTONE)); + self::register("infested_cracked_stone_brick", $factory->fromTypeId(Ids::INFESTED_CRACKED_STONE_BRICK)); + self::register("infested_mossy_stone_brick", $factory->fromTypeId(Ids::INFESTED_MOSSY_STONE_BRICK)); + self::register("infested_stone", $factory->fromTypeId(Ids::INFESTED_STONE)); + self::register("infested_stone_brick", $factory->fromTypeId(Ids::INFESTED_STONE_BRICK)); + self::register("info_update", $factory->fromTypeId(Ids::INFO_UPDATE)); + self::register("info_update2", $factory->fromTypeId(Ids::INFO_UPDATE2)); + self::register("invisible_bedrock", $factory->fromTypeId(Ids::INVISIBLE_BEDROCK)); + self::register("iron", $factory->fromTypeId(Ids::IRON)); + self::register("iron_bars", $factory->fromTypeId(Ids::IRON_BARS)); + self::register("iron_door", $factory->fromTypeId(Ids::IRON_DOOR)); + self::register("iron_ore", $factory->fromTypeId(Ids::IRON_ORE)); + self::register("iron_trapdoor", $factory->fromTypeId(Ids::IRON_TRAPDOOR)); + self::register("item_frame", $factory->fromTypeId(Ids::ITEM_FRAME)); + self::register("jukebox", $factory->fromTypeId(Ids::JUKEBOX)); + self::register("jungle_button", $factory->fromTypeId(Ids::JUNGLE_BUTTON)); + self::register("jungle_door", $factory->fromTypeId(Ids::JUNGLE_DOOR)); + self::register("jungle_fence", $factory->fromTypeId(Ids::JUNGLE_FENCE)); + self::register("jungle_fence_gate", $factory->fromTypeId(Ids::JUNGLE_FENCE_GATE)); + self::register("jungle_leaves", $factory->fromTypeId(Ids::JUNGLE_LEAVES)); + self::register("jungle_log", $factory->fromTypeId(Ids::JUNGLE_LOG)); + self::register("jungle_planks", $factory->fromTypeId(Ids::JUNGLE_PLANKS)); + self::register("jungle_pressure_plate", $factory->fromTypeId(Ids::JUNGLE_PRESSURE_PLATE)); + self::register("jungle_sapling", $factory->fromTypeId(Ids::JUNGLE_SAPLING)); + self::register("jungle_sign", $factory->fromTypeId(Ids::JUNGLE_SIGN)); + self::register("jungle_slab", $factory->fromTypeId(Ids::JUNGLE_SLAB)); + self::register("jungle_stairs", $factory->fromTypeId(Ids::JUNGLE_STAIRS)); + self::register("jungle_trapdoor", $factory->fromTypeId(Ids::JUNGLE_TRAPDOOR)); + self::register("jungle_wall_sign", $factory->fromTypeId(Ids::JUNGLE_WALL_SIGN)); + self::register("jungle_wood", $factory->fromTypeId(Ids::JUNGLE_WOOD)); + self::register("lab_table", $factory->fromTypeId(Ids::LAB_TABLE)); + self::register("ladder", $factory->fromTypeId(Ids::LADDER)); + self::register("lantern", $factory->fromTypeId(Ids::LANTERN)); + self::register("lapis_lazuli", $factory->fromTypeId(Ids::LAPIS_LAZULI)); + self::register("lapis_lazuli_ore", $factory->fromTypeId(Ids::LAPIS_LAZULI_ORE)); + self::register("large_fern", $factory->fromTypeId(Ids::LARGE_FERN)); + self::register("lava", $factory->fromTypeId(Ids::LAVA)); + self::register("lectern", $factory->fromTypeId(Ids::LECTERN)); + self::register("legacy_stonecutter", $factory->fromTypeId(Ids::LEGACY_STONECUTTER)); + self::register("lever", $factory->fromTypeId(Ids::LEVER)); + self::register("light", $factory->fromTypeId(Ids::LIGHT)); + self::register("lilac", $factory->fromTypeId(Ids::LILAC)); + self::register("lily_of_the_valley", $factory->fromTypeId(Ids::LILY_OF_THE_VALLEY)); + self::register("lily_pad", $factory->fromTypeId(Ids::LILY_PAD)); + self::register("lit_pumpkin", $factory->fromTypeId(Ids::LIT_PUMPKIN)); + self::register("loom", $factory->fromTypeId(Ids::LOOM)); + self::register("magma", $factory->fromTypeId(Ids::MAGMA)); + self::register("mangrove_button", $factory->fromTypeId(Ids::MANGROVE_BUTTON)); + self::register("mangrove_door", $factory->fromTypeId(Ids::MANGROVE_DOOR)); + self::register("mangrove_fence", $factory->fromTypeId(Ids::MANGROVE_FENCE)); + self::register("mangrove_fence_gate", $factory->fromTypeId(Ids::MANGROVE_FENCE_GATE)); + self::register("mangrove_log", $factory->fromTypeId(Ids::MANGROVE_LOG)); + self::register("mangrove_planks", $factory->fromTypeId(Ids::MANGROVE_PLANKS)); + self::register("mangrove_pressure_plate", $factory->fromTypeId(Ids::MANGROVE_PRESSURE_PLATE)); + self::register("mangrove_slab", $factory->fromTypeId(Ids::MANGROVE_SLAB)); + self::register("mangrove_stairs", $factory->fromTypeId(Ids::MANGROVE_STAIRS)); + self::register("mangrove_trapdoor", $factory->fromTypeId(Ids::MANGROVE_TRAPDOOR)); + self::register("mangrove_wood", $factory->fromTypeId(Ids::MANGROVE_WOOD)); + self::register("material_reducer", $factory->fromTypeId(Ids::MATERIAL_REDUCER)); + self::register("melon", $factory->fromTypeId(Ids::MELON)); + self::register("melon_stem", $factory->fromTypeId(Ids::MELON_STEM)); + self::register("mob_head", $factory->fromTypeId(Ids::MOB_HEAD)); + self::register("monster_spawner", $factory->fromTypeId(Ids::MONSTER_SPAWNER)); + self::register("mossy_cobblestone", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE)); + self::register("mossy_cobblestone_slab", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_SLAB)); + self::register("mossy_cobblestone_stairs", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_STAIRS)); + self::register("mossy_cobblestone_wall", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_WALL)); + self::register("mossy_stone_brick_slab", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_SLAB)); + self::register("mossy_stone_brick_stairs", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_STAIRS)); + self::register("mossy_stone_brick_wall", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_WALL)); + self::register("mossy_stone_bricks", $factory->fromTypeId(Ids::MOSSY_STONE_BRICKS)); + self::register("mushroom_stem", $factory->fromTypeId(Ids::MUSHROOM_STEM)); + self::register("mycelium", $factory->fromTypeId(Ids::MYCELIUM)); + self::register("nether_brick_fence", $factory->fromTypeId(Ids::NETHER_BRICK_FENCE)); + self::register("nether_brick_slab", $factory->fromTypeId(Ids::NETHER_BRICK_SLAB)); + self::register("nether_brick_stairs", $factory->fromTypeId(Ids::NETHER_BRICK_STAIRS)); + self::register("nether_brick_wall", $factory->fromTypeId(Ids::NETHER_BRICK_WALL)); + self::register("nether_bricks", $factory->fromTypeId(Ids::NETHER_BRICKS)); + self::register("nether_portal", $factory->fromTypeId(Ids::NETHER_PORTAL)); + self::register("nether_quartz_ore", $factory->fromTypeId(Ids::NETHER_QUARTZ_ORE)); + self::register("nether_reactor_core", $factory->fromTypeId(Ids::NETHER_REACTOR_CORE)); + self::register("nether_wart", $factory->fromTypeId(Ids::NETHER_WART)); + self::register("nether_wart_block", $factory->fromTypeId(Ids::NETHER_WART_BLOCK)); + self::register("netherrack", $factory->fromTypeId(Ids::NETHERRACK)); + self::register("note_block", $factory->fromTypeId(Ids::NOTE_BLOCK)); + self::register("oak_button", $factory->fromTypeId(Ids::OAK_BUTTON)); + self::register("oak_door", $factory->fromTypeId(Ids::OAK_DOOR)); + self::register("oak_fence", $factory->fromTypeId(Ids::OAK_FENCE)); + self::register("oak_fence_gate", $factory->fromTypeId(Ids::OAK_FENCE_GATE)); + self::register("oak_leaves", $factory->fromTypeId(Ids::OAK_LEAVES)); + self::register("oak_log", $factory->fromTypeId(Ids::OAK_LOG)); + self::register("oak_planks", $factory->fromTypeId(Ids::OAK_PLANKS)); + self::register("oak_pressure_plate", $factory->fromTypeId(Ids::OAK_PRESSURE_PLATE)); + self::register("oak_sapling", $factory->fromTypeId(Ids::OAK_SAPLING)); + self::register("oak_sign", $factory->fromTypeId(Ids::OAK_SIGN)); + self::register("oak_slab", $factory->fromTypeId(Ids::OAK_SLAB)); + self::register("oak_stairs", $factory->fromTypeId(Ids::OAK_STAIRS)); + self::register("oak_trapdoor", $factory->fromTypeId(Ids::OAK_TRAPDOOR)); + self::register("oak_wall_sign", $factory->fromTypeId(Ids::OAK_WALL_SIGN)); + self::register("oak_wood", $factory->fromTypeId(Ids::OAK_WOOD)); + self::register("obsidian", $factory->fromTypeId(Ids::OBSIDIAN)); + self::register("orange_tulip", $factory->fromTypeId(Ids::ORANGE_TULIP)); + self::register("oxeye_daisy", $factory->fromTypeId(Ids::OXEYE_DAISY)); + self::register("packed_ice", $factory->fromTypeId(Ids::PACKED_ICE)); + self::register("peony", $factory->fromTypeId(Ids::PEONY)); + self::register("pink_tulip", $factory->fromTypeId(Ids::PINK_TULIP)); + self::register("podzol", $factory->fromTypeId(Ids::PODZOL)); + self::register("polished_andesite", $factory->fromTypeId(Ids::POLISHED_ANDESITE)); + self::register("polished_andesite_slab", $factory->fromTypeId(Ids::POLISHED_ANDESITE_SLAB)); + self::register("polished_andesite_stairs", $factory->fromTypeId(Ids::POLISHED_ANDESITE_STAIRS)); + self::register("polished_basalt", $factory->fromTypeId(Ids::POLISHED_BASALT)); + self::register("polished_blackstone", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE)); + self::register("polished_blackstone_brick_slab", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_SLAB)); + self::register("polished_blackstone_brick_stairs", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS)); + self::register("polished_blackstone_brick_wall", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_WALL)); + self::register("polished_blackstone_bricks", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICKS)); + self::register("polished_blackstone_button", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BUTTON)); + self::register("polished_blackstone_pressure_plate", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE)); + self::register("polished_blackstone_slab", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_SLAB)); + self::register("polished_blackstone_stairs", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_STAIRS)); + self::register("polished_blackstone_wall", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_WALL)); + self::register("polished_deepslate", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE)); + self::register("polished_deepslate_slab", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_SLAB)); + self::register("polished_deepslate_stairs", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_STAIRS)); + self::register("polished_deepslate_wall", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_WALL)); + self::register("polished_diorite", $factory->fromTypeId(Ids::POLISHED_DIORITE)); + self::register("polished_diorite_slab", $factory->fromTypeId(Ids::POLISHED_DIORITE_SLAB)); + self::register("polished_diorite_stairs", $factory->fromTypeId(Ids::POLISHED_DIORITE_STAIRS)); + self::register("polished_granite", $factory->fromTypeId(Ids::POLISHED_GRANITE)); + self::register("polished_granite_slab", $factory->fromTypeId(Ids::POLISHED_GRANITE_SLAB)); + self::register("polished_granite_stairs", $factory->fromTypeId(Ids::POLISHED_GRANITE_STAIRS)); + self::register("poppy", $factory->fromTypeId(Ids::POPPY)); + self::register("potatoes", $factory->fromTypeId(Ids::POTATOES)); + self::register("powered_rail", $factory->fromTypeId(Ids::POWERED_RAIL)); + self::register("prismarine", $factory->fromTypeId(Ids::PRISMARINE)); + self::register("prismarine_bricks", $factory->fromTypeId(Ids::PRISMARINE_BRICKS)); + self::register("prismarine_bricks_slab", $factory->fromTypeId(Ids::PRISMARINE_BRICKS_SLAB)); + self::register("prismarine_bricks_stairs", $factory->fromTypeId(Ids::PRISMARINE_BRICKS_STAIRS)); + self::register("prismarine_slab", $factory->fromTypeId(Ids::PRISMARINE_SLAB)); + self::register("prismarine_stairs", $factory->fromTypeId(Ids::PRISMARINE_STAIRS)); + self::register("prismarine_wall", $factory->fromTypeId(Ids::PRISMARINE_WALL)); + self::register("pumpkin", $factory->fromTypeId(Ids::PUMPKIN)); + self::register("pumpkin_stem", $factory->fromTypeId(Ids::PUMPKIN_STEM)); + self::register("purple_torch", $factory->fromTypeId(Ids::PURPLE_TORCH)); + self::register("purpur", $factory->fromTypeId(Ids::PURPUR)); + self::register("purpur_pillar", $factory->fromTypeId(Ids::PURPUR_PILLAR)); + self::register("purpur_slab", $factory->fromTypeId(Ids::PURPUR_SLAB)); + self::register("purpur_stairs", $factory->fromTypeId(Ids::PURPUR_STAIRS)); + self::register("quartz", $factory->fromTypeId(Ids::QUARTZ)); + self::register("quartz_bricks", $factory->fromTypeId(Ids::QUARTZ_BRICKS)); + self::register("quartz_pillar", $factory->fromTypeId(Ids::QUARTZ_PILLAR)); + self::register("quartz_slab", $factory->fromTypeId(Ids::QUARTZ_SLAB)); + self::register("quartz_stairs", $factory->fromTypeId(Ids::QUARTZ_STAIRS)); + self::register("rail", $factory->fromTypeId(Ids::RAIL)); + self::register("raw_copper", $factory->fromTypeId(Ids::RAW_COPPER)); + self::register("raw_gold", $factory->fromTypeId(Ids::RAW_GOLD)); + self::register("raw_iron", $factory->fromTypeId(Ids::RAW_IRON)); + self::register("red_mushroom", $factory->fromTypeId(Ids::RED_MUSHROOM)); + self::register("red_mushroom_block", $factory->fromTypeId(Ids::RED_MUSHROOM_BLOCK)); + self::register("red_nether_brick_slab", $factory->fromTypeId(Ids::RED_NETHER_BRICK_SLAB)); + self::register("red_nether_brick_stairs", $factory->fromTypeId(Ids::RED_NETHER_BRICK_STAIRS)); + self::register("red_nether_brick_wall", $factory->fromTypeId(Ids::RED_NETHER_BRICK_WALL)); + self::register("red_nether_bricks", $factory->fromTypeId(Ids::RED_NETHER_BRICKS)); + self::register("red_sand", $factory->fromTypeId(Ids::RED_SAND)); + self::register("red_sandstone", $factory->fromTypeId(Ids::RED_SANDSTONE)); + self::register("red_sandstone_slab", $factory->fromTypeId(Ids::RED_SANDSTONE_SLAB)); + self::register("red_sandstone_stairs", $factory->fromTypeId(Ids::RED_SANDSTONE_STAIRS)); + self::register("red_sandstone_wall", $factory->fromTypeId(Ids::RED_SANDSTONE_WALL)); + self::register("red_torch", $factory->fromTypeId(Ids::RED_TORCH)); + self::register("red_tulip", $factory->fromTypeId(Ids::RED_TULIP)); + self::register("redstone", $factory->fromTypeId(Ids::REDSTONE)); + self::register("redstone_comparator", $factory->fromTypeId(Ids::REDSTONE_COMPARATOR)); + self::register("redstone_lamp", $factory->fromTypeId(Ids::REDSTONE_LAMP)); + self::register("redstone_ore", $factory->fromTypeId(Ids::REDSTONE_ORE)); + self::register("redstone_repeater", $factory->fromTypeId(Ids::REDSTONE_REPEATER)); + self::register("redstone_torch", $factory->fromTypeId(Ids::REDSTONE_TORCH)); + self::register("redstone_wire", $factory->fromTypeId(Ids::REDSTONE_WIRE)); + self::register("reserved6", $factory->fromTypeId(Ids::RESERVED6)); + self::register("rose_bush", $factory->fromTypeId(Ids::ROSE_BUSH)); + self::register("sand", $factory->fromTypeId(Ids::SAND)); + self::register("sandstone", $factory->fromTypeId(Ids::SANDSTONE)); + self::register("sandstone_slab", $factory->fromTypeId(Ids::SANDSTONE_SLAB)); + self::register("sandstone_stairs", $factory->fromTypeId(Ids::SANDSTONE_STAIRS)); + self::register("sandstone_wall", $factory->fromTypeId(Ids::SANDSTONE_WALL)); + self::register("sea_lantern", $factory->fromTypeId(Ids::SEA_LANTERN)); + self::register("sea_pickle", $factory->fromTypeId(Ids::SEA_PICKLE)); + self::register("shulker_box", $factory->fromTypeId(Ids::SHULKER_BOX)); + self::register("slime", $factory->fromTypeId(Ids::SLIME)); + self::register("smoker", $factory->fromTypeId(Ids::SMOKER)); + self::register("smooth_basalt", $factory->fromTypeId(Ids::SMOOTH_BASALT)); + self::register("smooth_quartz", $factory->fromTypeId(Ids::SMOOTH_QUARTZ)); + self::register("smooth_quartz_slab", $factory->fromTypeId(Ids::SMOOTH_QUARTZ_SLAB)); + self::register("smooth_quartz_stairs", $factory->fromTypeId(Ids::SMOOTH_QUARTZ_STAIRS)); + self::register("smooth_red_sandstone", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE)); + self::register("smooth_red_sandstone_slab", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE_SLAB)); + self::register("smooth_red_sandstone_stairs", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE_STAIRS)); + self::register("smooth_sandstone", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE)); + self::register("smooth_sandstone_slab", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE_SLAB)); + self::register("smooth_sandstone_stairs", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE_STAIRS)); + self::register("smooth_stone", $factory->fromTypeId(Ids::SMOOTH_STONE)); + self::register("smooth_stone_slab", $factory->fromTypeId(Ids::SMOOTH_STONE_SLAB)); + self::register("snow", $factory->fromTypeId(Ids::SNOW)); + self::register("snow_layer", $factory->fromTypeId(Ids::SNOW_LAYER)); + self::register("soul_fire", $factory->fromTypeId(Ids::SOUL_FIRE)); + self::register("soul_sand", $factory->fromTypeId(Ids::SOUL_SAND)); + self::register("sponge", $factory->fromTypeId(Ids::SPONGE)); + self::register("spruce_button", $factory->fromTypeId(Ids::SPRUCE_BUTTON)); + self::register("spruce_door", $factory->fromTypeId(Ids::SPRUCE_DOOR)); + self::register("spruce_fence", $factory->fromTypeId(Ids::SPRUCE_FENCE)); + self::register("spruce_fence_gate", $factory->fromTypeId(Ids::SPRUCE_FENCE_GATE)); + self::register("spruce_leaves", $factory->fromTypeId(Ids::SPRUCE_LEAVES)); + self::register("spruce_log", $factory->fromTypeId(Ids::SPRUCE_LOG)); + self::register("spruce_planks", $factory->fromTypeId(Ids::SPRUCE_PLANKS)); + self::register("spruce_pressure_plate", $factory->fromTypeId(Ids::SPRUCE_PRESSURE_PLATE)); + self::register("spruce_sapling", $factory->fromTypeId(Ids::SPRUCE_SAPLING)); + self::register("spruce_sign", $factory->fromTypeId(Ids::SPRUCE_SIGN)); + self::register("spruce_slab", $factory->fromTypeId(Ids::SPRUCE_SLAB)); + self::register("spruce_stairs", $factory->fromTypeId(Ids::SPRUCE_STAIRS)); + self::register("spruce_trapdoor", $factory->fromTypeId(Ids::SPRUCE_TRAPDOOR)); + self::register("spruce_wall_sign", $factory->fromTypeId(Ids::SPRUCE_WALL_SIGN)); + self::register("spruce_wood", $factory->fromTypeId(Ids::SPRUCE_WOOD)); + self::register("stained_clay", $factory->fromTypeId(Ids::STAINED_CLAY)); + self::register("stained_glass", $factory->fromTypeId(Ids::STAINED_GLASS)); + self::register("stained_glass_pane", $factory->fromTypeId(Ids::STAINED_GLASS_PANE)); + self::register("stained_hardened_glass", $factory->fromTypeId(Ids::STAINED_HARDENED_GLASS)); + self::register("stained_hardened_glass_pane", $factory->fromTypeId(Ids::STAINED_HARDENED_GLASS_PANE)); + self::register("stone", $factory->fromTypeId(Ids::STONE)); + self::register("stone_brick_slab", $factory->fromTypeId(Ids::STONE_BRICK_SLAB)); + self::register("stone_brick_stairs", $factory->fromTypeId(Ids::STONE_BRICK_STAIRS)); + self::register("stone_brick_wall", $factory->fromTypeId(Ids::STONE_BRICK_WALL)); + self::register("stone_bricks", $factory->fromTypeId(Ids::STONE_BRICKS)); + self::register("stone_button", $factory->fromTypeId(Ids::STONE_BUTTON)); + self::register("stone_pressure_plate", $factory->fromTypeId(Ids::STONE_PRESSURE_PLATE)); + self::register("stone_slab", $factory->fromTypeId(Ids::STONE_SLAB)); + self::register("stone_stairs", $factory->fromTypeId(Ids::STONE_STAIRS)); + self::register("stonecutter", $factory->fromTypeId(Ids::STONECUTTER)); + self::register("sugarcane", $factory->fromTypeId(Ids::SUGARCANE)); + self::register("sunflower", $factory->fromTypeId(Ids::SUNFLOWER)); + self::register("sweet_berry_bush", $factory->fromTypeId(Ids::SWEET_BERRY_BUSH)); + self::register("tall_grass", $factory->fromTypeId(Ids::TALL_GRASS)); + self::register("tnt", $factory->fromTypeId(Ids::TNT)); + self::register("torch", $factory->fromTypeId(Ids::TORCH)); + self::register("trapped_chest", $factory->fromTypeId(Ids::TRAPPED_CHEST)); + self::register("tripwire", $factory->fromTypeId(Ids::TRIPWIRE)); + self::register("tripwire_hook", $factory->fromTypeId(Ids::TRIPWIRE_HOOK)); + self::register("underwater_torch", $factory->fromTypeId(Ids::UNDERWATER_TORCH)); + self::register("vines", $factory->fromTypeId(Ids::VINES)); + self::register("wall_banner", $factory->fromTypeId(Ids::WALL_BANNER)); + self::register("wall_coral_fan", $factory->fromTypeId(Ids::WALL_CORAL_FAN)); + self::register("warped_button", $factory->fromTypeId(Ids::WARPED_BUTTON)); + self::register("warped_door", $factory->fromTypeId(Ids::WARPED_DOOR)); + self::register("warped_fence", $factory->fromTypeId(Ids::WARPED_FENCE)); + self::register("warped_fence_gate", $factory->fromTypeId(Ids::WARPED_FENCE_GATE)); + self::register("warped_hyphae", $factory->fromTypeId(Ids::WARPED_HYPHAE)); + self::register("warped_planks", $factory->fromTypeId(Ids::WARPED_PLANKS)); + self::register("warped_pressure_plate", $factory->fromTypeId(Ids::WARPED_PRESSURE_PLATE)); + self::register("warped_slab", $factory->fromTypeId(Ids::WARPED_SLAB)); + self::register("warped_stairs", $factory->fromTypeId(Ids::WARPED_STAIRS)); + self::register("warped_stem", $factory->fromTypeId(Ids::WARPED_STEM)); + self::register("warped_trapdoor", $factory->fromTypeId(Ids::WARPED_TRAPDOOR)); + self::register("water", $factory->fromTypeId(Ids::WATER)); + self::register("weighted_pressure_plate_heavy", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY)); + self::register("weighted_pressure_plate_light", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT)); + self::register("wheat", $factory->fromTypeId(Ids::WHEAT)); + self::register("white_tulip", $factory->fromTypeId(Ids::WHITE_TULIP)); + self::register("wool", $factory->fromTypeId(Ids::WOOL)); } } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index ad4311a38..c36b78608 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -45,10 +45,11 @@ final class ItemBlock extends Item{ public function getBlock(?int $clickedFace = null) : Block{ //TODO: HACKY MESS, CLEAN IT UP - $blockType = BlockFactory::getInstance()->fromTypeId($this->blockTypeId); - if($blockType === null){ + $factory = BlockFactory::getInstance(); + if(!$factory->isRegistered($this->blockTypeId)){ return VanillaBlocks::AIR(); } + $blockType = BlockFactory::getInstance()->fromTypeId($this->blockTypeId); $blockType->decodeTypeData($this->blockTypeData); return $blockType; } From a059d03b37bda3482fa24413ba09651e41ab83eb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 13:43:26 +0100 Subject: [PATCH 261/692] Remove BlockFactory::get(), optimise fromFullBlock() pathway --- src/block/BlockFactory.php | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 5c6928920..c5ad465b1 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -854,30 +854,6 @@ class BlockFactory{ } } - /** - * @internal - * @see VanillaBlocks - * - * Deserializes a block from the provided type ID and internal state data. - */ - public function get(int $typeId, int $stateData) : Block{ - if($stateData < 0 || $stateData >= (1 << Block::INTERNAL_STATE_DATA_BITS)){ - throw new \InvalidArgumentException("Block meta value $stateData is out of bounds"); - } - - $index = ($typeId << Block::INTERNAL_STATE_DATA_BITS) | $stateData; - if($index < 0){ - throw new \InvalidArgumentException("Block ID $typeId is out of bounds"); - } - if(isset($this->fullList[$index])) { //hot - $block = clone $this->fullList[$index]; - }else{ - $block = new UnknownBlock(new BID($typeId), BreakInfo::instant(), $stateData); - } - - return $block; - } - /** * @internal * Returns the default state of the block type associated with the given type ID. @@ -891,7 +867,18 @@ class BlockFactory{ } public function fromFullBlock(int $fullState) : Block{ - return $this->get($fullState >> Block::INTERNAL_STATE_DATA_BITS, $fullState & Block::INTERNAL_STATE_DATA_MASK); + if($fullState < 0){ + throw new \InvalidArgumentException("Block state ID cannot be negative"); + } + if(isset($this->fullList[$fullState])) { //hot + $block = clone $this->fullList[$fullState]; + }else{ + $typeId = $fullState >> Block::INTERNAL_STATE_DATA_BITS; + $stateData = $fullState & Block::INTERNAL_STATE_DATA_MASK; + $block = new UnknownBlock(new BID($typeId), BreakInfo::instant(), $stateData); + } + + return $block; } /** From 0a23e91329a8358d2c8f6dede25bd0f6b28d25ce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 13:46:19 +0100 Subject: [PATCH 262/692] Rename BlockFactory::fromFullBlock() -> BlockFactory::fromStateId() --- src/block/BlockFactory.php | 12 ++++++------ src/block/InfestedStone.php | 2 +- src/block/tile/FlowerPot.php | 2 +- .../convert/BlockObjectToBlockStateSerializer.php | 2 +- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/entity/object/FallingBlock.php | 2 +- src/item/ItemBlockWallOrFloor.php | 4 ++-- src/item/ItemFactory.php | 2 +- src/world/SimpleChunkManager.php | 2 +- src/world/World.php | 8 ++++---- src/world/generator/populator/GroundCover.php | 4 ++-- tests/phpunit/block/BlockTest.php | 8 ++++---- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index c5ad465b1..4efc04cb6 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -866,15 +866,15 @@ class BlockFactory{ throw new \InvalidArgumentException("Block ID $typeId is not registered"); } - public function fromFullBlock(int $fullState) : Block{ - if($fullState < 0){ + public function fromStateId(int $stateId) : Block{ + if($stateId < 0){ throw new \InvalidArgumentException("Block state ID cannot be negative"); } - if(isset($this->fullList[$fullState])) { //hot - $block = clone $this->fullList[$fullState]; + if(isset($this->fullList[$stateId])) { //hot + $block = clone $this->fullList[$stateId]; }else{ - $typeId = $fullState >> Block::INTERNAL_STATE_DATA_BITS; - $stateData = $fullState & Block::INTERNAL_STATE_DATA_MASK; + $typeId = $stateId >> Block::INTERNAL_STATE_DATA_BITS; + $stateData = $stateId & Block::INTERNAL_STATE_DATA_MASK; $block = new UnknownBlock(new BID($typeId), BreakInfo::instant(), $stateData); } diff --git a/src/block/InfestedStone.php b/src/block/InfestedStone.php index 6fbda8eea..7700b572c 100644 --- a/src/block/InfestedStone.php +++ b/src/block/InfestedStone.php @@ -35,7 +35,7 @@ final class InfestedStone extends Opaque{ } public function getImitatedBlock() : Block{ - return BlockFactory::getInstance()->fromFullBlock($this->imitated); + return BlockFactory::getInstance()->fromStateId($this->imitated); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index ec5987346..3544cd5fb 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -64,7 +64,7 @@ class FlowerPot extends Spawnable{ }catch(BlockStateDeserializeException $e){ throw new SavedDataLoadingException("Error deserializing plant for flower pot: " . $e->getMessage(), 0, $e); } - $this->setPlant(BlockFactory::getInstance()->fromFullBlock($blockStateId)); + $this->setPlant(BlockFactory::getInstance()->fromStateId($blockStateId)); } } diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 93daadec2..f114ed97d 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -172,7 +172,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ public function serialize(int $stateId) : BlockStateData{ //TODO: singleton usage not ideal - return $this->serializeBlock(BlockFactory::getInstance()->fromFullBlock($stateId)); + return $this->serializeBlock(BlockFactory::getInstance()->fromStateId($stateId)); } /** diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 287e63398..2d8570b5b 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -76,7 +76,7 @@ final class ItemDeserializer{ } //TODO: worth caching this or not? - return BlockFactory::getInstance()->fromFullBlock($block)->asItem(); + return BlockFactory::getInstance()->fromStateId($block)->asItem(); } $id = $data->getName(); if(!isset($this->deserializers[$id])){ diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index a7e495a24..39fc2320a 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -90,7 +90,7 @@ class FallingBlock extends Entity{ throw new SavedDataLoadingException($e->getMessage(), 0, $e); } - return $factory->fromFullBlock($blockStateId); + return $factory->fromStateId($blockStateId); } public function canCollideWith(Entity $entity) : bool{ diff --git a/src/item/ItemBlockWallOrFloor.php b/src/item/ItemBlockWallOrFloor.php index cb706965a..bd1213b34 100644 --- a/src/item/ItemBlockWallOrFloor.php +++ b/src/item/ItemBlockWallOrFloor.php @@ -40,9 +40,9 @@ class ItemBlockWallOrFloor extends Item{ public function getBlock(?int $clickedFace = null) : Block{ if($clickedFace !== null && Facing::axis($clickedFace) !== Axis::Y){ - return BlockFactory::getInstance()->fromFullBlock($this->wallVariant); + return BlockFactory::getInstance()->fromStateId($this->wallVariant); } - return BlockFactory::getInstance()->fromFullBlock($this->floorVariant); + return BlockFactory::getInstance()->fromStateId($this->floorVariant); } public function getFuelTime() : int{ diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 6804356ae..0de8cfcd8 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -473,7 +473,7 @@ class ItemFactory{ if($blockStateData !== null){ try{ $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); - $item = new ItemBlock(BlockFactory::getInstance()->fromFullBlock($blockStateId)); + $item = new ItemBlock(BlockFactory::getInstance()->fromStateId($blockStateId)); }catch(BlockStateDeserializeException $e){ throw new SavedDataLoadingException("Failed to deserialize itemblock: " . $e->getMessage(), 0, $e); } diff --git a/src/world/SimpleChunkManager.php b/src/world/SimpleChunkManager.php index e2ed3138e..85849c450 100644 --- a/src/world/SimpleChunkManager.php +++ b/src/world/SimpleChunkManager.php @@ -41,7 +41,7 @@ class SimpleChunkManager implements ChunkManager{ public function getBlockAt(int $x, int $y, int $z) : Block{ if($this->isInWorld($x, $y, $z) && ($chunk = $this->getChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null){ - return BlockFactory::getInstance()->fromFullBlock($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); + return BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); } return VanillaBlocks::AIR(); } diff --git a/src/world/World.php b/src/world/World.php index 2dfb00497..fab04e87d 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -444,7 +444,7 @@ class World implements ChunkManager{ if($blockStateData === null){ continue; } - $block = BlockFactory::getInstance()->fromFullBlock(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); + $block = BlockFactory::getInstance()->fromStateId(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); }else{ //TODO: we probably ought to log an error here continue; @@ -1112,7 +1112,7 @@ class World implements ChunkManager{ $state = $subChunk->getFullBlock($x, $y, $z); if(isset($this->randomTickBlocks[$state])){ - $block = $blockFactory->fromFullBlock($state); + $block = $blockFactory->fromStateId($state); $block->position($this, $chunkX * Chunk::EDGE_LENGTH + $x, ($Y << SubChunk::COORD_BIT_SIZE) + $y, $chunkZ * Chunk::EDGE_LENGTH + $z); $block->onRandomTick(); } @@ -1528,7 +1528,7 @@ class World implements ChunkManager{ $chunk = $this->chunks[$chunkHash] ?? null; if($chunk !== null){ - $block = BlockFactory::getInstance()->fromFullBlock($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); + $block = BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); }else{ $addToCache = false; $block = VanillaBlocks::AIR(); @@ -2146,7 +2146,7 @@ class World implements ChunkManager{ $localY = $tilePosition->getFloorY(); $localZ = $tilePosition->getFloorZ() & Chunk::COORD_MASK; - $newBlock = BlockFactory::getInstance()->fromFullBlock($chunk->getFullBlock($localX, $localY, $localZ)); + $newBlock = BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($localX, $localY, $localZ)); $expectedTileClass = $newBlock->getIdInfo()->getTileClass(); if( $expectedTileClass === null || //new block doesn't expect a tile diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 193905cce..2aa6cca9b 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -51,7 +51,7 @@ class GroundCover implements Populator{ $startY = 127; for(; $startY > 0; --$startY){ - if(!$factory->fromFullBlock($chunk->getFullBlock($x, $startY, $z))->isTransparent()){ + if(!$factory->fromStateId($chunk->getFullBlock($x, $startY, $z))->isTransparent()){ break; } } @@ -59,7 +59,7 @@ class GroundCover implements Populator{ $endY = $startY - count($cover); for($y = $startY; $y > $endY && $y >= 0; --$y){ $b = $cover[$startY - $y]; - $id = $factory->fromFullBlock($chunk->getFullBlock($x, $y, $z)); + $id = $factory->fromStateId($chunk->getFullBlock($x, $y, $z)); if($id->getTypeId() === BlockTypeIds::AIR && $b->isSolid()){ break; } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 1e420beff..3b8d704d9 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -54,7 +54,7 @@ class BlockTest extends TestCase{ public function testDeliberateOverrideBlock() : void{ $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); $this->blockFactory->register($block, true); - self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromFullBlock($block->getStateId())); + self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromStateId($block->getStateId())); } /** @@ -65,7 +65,7 @@ class BlockTest extends TestCase{ if(!$this->blockFactory->isRegistered($i)){ $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", BlockBreakInfo::instant()); $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromFullBlock($b->getStateId())); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); return; } } @@ -88,8 +88,8 @@ class BlockTest extends TestCase{ */ public function testBlockFactoryClone() : void{ foreach($this->blockFactory->getAllKnownStates() as $k => $state){ - $b1 = $this->blockFactory->fromFullBlock($k); - $b2 = $this->blockFactory->fromFullBlock($k); + $b1 = $this->blockFactory->fromStateId($k); + $b2 = $this->blockFactory->fromStateId($k); self::assertNotSame($b1, $b2); } } From 1714e2fd351a1c38523ef719a8fed88aae22ffc1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 14:07:34 +0100 Subject: [PATCH 263/692] CoralFan: fixed coralType not being initialized --- src/item/CoralFan.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index 8beceee14..d6aae4f8c 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; +use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\CoralTypeIdMap; @@ -34,6 +35,7 @@ final class CoralFan extends Item{ use CoralTypeTrait; public function __construct(private ItemIdentifierFlattened $identifierFlattened){ + $this->coralType = CoralType::TUBE(); parent::__construct($this->identifierFlattened, VanillaBlocks::CORAL_FAN()->getName()); } From 325f1cf82e21fc3ba6cc9f0dd87c36723bb21ec4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 14:13:37 +0100 Subject: [PATCH 264/692] Generalize runtime block data serialization we want to reuse this code for item type data --- src/block/Anvil.php | 12 +- src/block/Bamboo.php | 8 +- src/block/BambooSapling.php | 8 +- src/block/Barrel.php | 8 +- src/block/Bed.php | 8 +- src/block/Bedrock.php | 8 +- src/block/Bell.php | 16 +- src/block/Block.php | 20 +- src/block/BlockFactory.php | 6 +- src/block/BrewingStand.php | 31 +++- src/block/Button.php | 8 +- src/block/Cactus.php | 8 +- src/block/Cake.php | 8 +- src/block/CocoaBlock.php | 8 +- src/block/Crops.php | 8 +- src/block/DaylightSensor.php | 8 +- src/block/DetectorRail.php | 8 +- src/block/Dirt.php | 8 +- src/block/Door.php | 8 +- src/block/DoublePlant.php | 8 +- src/block/EndPortalFrame.php | 8 +- src/block/Farmland.php | 8 +- src/block/FenceGate.php | 8 +- src/block/Fire.php | 8 +- src/block/FloorCoralFan.php | 8 +- src/block/FrostedIce.php | 8 +- src/block/Furnace.php | 8 +- src/block/Hopper.php | 12 +- src/block/ItemFrame.php | 8 +- src/block/Lantern.php | 8 +- src/block/Leaves.php | 8 +- src/block/Lectern.php | 8 +- src/block/Lever.php | 16 +- src/block/Light.php | 8 +- src/block/Liquid.php | 8 +- src/block/NetherPortal.php | 8 +- src/block/NetherWartPlant.php | 8 +- src/block/Rail.php | 12 +- src/block/RedMushroomBlock.php | 16 +- src/block/RedstoneComparator.php | 8 +- src/block/RedstoneLamp.php | 8 +- src/block/RedstoneOre.php | 8 +- src/block/RedstoneRepeater.php | 8 +- src/block/RedstoneTorch.php | 8 +- src/block/Sapling.php | 8 +- src/block/SeaPickle.php | 8 +- src/block/ShulkerBox.php | 8 +- src/block/SimplePressurePlate.php | 8 +- src/block/Skull.php | 24 +-- src/block/Slab.php | 16 +- src/block/SnowLayer.php | 8 +- src/block/Sponge.php | 8 +- src/block/Stair.php | 8 +- src/block/StraightOnlyRail.php | 12 +- src/block/Sugarcane.php | 8 +- src/block/SweetBerryBush.php | 8 +- src/block/TNT.php | 12 +- src/block/Torch.php | 12 +- src/block/Trapdoor.php | 8 +- src/block/Tripwire.php | 8 +- src/block/TripwireHook.php | 8 +- src/block/UnknownBlock.php | 8 +- src/block/Vine.php | 8 +- src/block/Wall.php | 8 +- src/block/WallCoralFan.php | 8 +- src/block/Wood.php | 8 +- .../AnalogRedstoneSignalEmitterTrait.php | 8 +- src/block/utils/AnyFacingTrait.php | 8 +- src/block/utils/ColoredTrait.php | 16 +- src/block/utils/CoralTypeTrait.php | 16 +- src/block/utils/HorizontalFacingTrait.php | 8 +- src/block/utils/PillarRotationTrait.php | 8 +- .../utils/RailPoweredByRedstoneTrait.php | 8 +- src/block/utils/SignLikeRotationTrait.php | 8 +- ...InvalidSerializedRuntimeDataException.php} | 4 +- ...ckDataReader.php => RuntimeDataReader.php} | 11 +- ...ckDataWriter.php => RuntimeDataWriter.php} | 4 +- src/data/runtime/RuntimeEnumDeserializer.php | 108 +++++++++++ ...erHelper.php => RuntimeEnumSerializer.php} | 88 ++------- .../runtime/block/BlockDataReaderHelper.php | 174 ------------------ 80 files changed, 494 insertions(+), 608 deletions(-) rename src/{block/utils/InvalidBlockStateException.php => data/runtime/InvalidSerializedRuntimeDataException.php} (86%) rename src/data/runtime/{block/BlockDataReader.php => RuntimeDataReader.php} (89%) rename src/data/runtime/{block/BlockDataWriter.php => RuntimeDataWriter.php} (97%) create mode 100644 src/data/runtime/RuntimeEnumDeserializer.php rename src/data/runtime/{block/BlockDataWriterHelper.php => RuntimeEnumSerializer.php} (55%) delete mode 100644 src/data/runtime/block/BlockDataReaderHelper.php diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 660554ac0..a859210fd 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -28,8 +28,8 @@ use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -49,21 +49,21 @@ class Anvil extends Transparent implements Fallable{ public function getRequiredTypeDataBits() : int{ return 2; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeInt(2, $this->getDamage()); } public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->setFacing($r->readHorizontalFacing()); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->getFacing()); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 6011b88a1..eaf6c26db 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; @@ -58,13 +58,13 @@ class Bamboo extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->setLeafSize($r->readBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES)); $this->setThick($r->readBool()); $this->setReady($r->readBool()); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(2, $this->getLeafSize()); $w->writeBool($this->isThick()); $w->writeBool($this->isReady()); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 05addc057..e1f23c565 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; @@ -39,11 +39,11 @@ final class BambooSapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->setReady($r->readBool()); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->isReady()); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index e26b4aa8e..2efef6bbc 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -41,12 +41,12 @@ class Barrel extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->setFacing($r->readFacing()); $this->setOpen($r->readBool()); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->getFacing()); $w->writeBool($this->isOpen()); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 81cbd73cc..4fd65e909 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -28,8 +28,8 @@ use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; @@ -56,13 +56,13 @@ class Bed extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->occupied = $r->readBool(); $this->head = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->occupied); $w->writeBool($this->head); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 8a187b741..ac8e95037 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -23,19 +23,19 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; class Bedrock extends Opaque{ private bool $burnsForever = false; public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->burnsForever = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index 175be9d47..bc13a3324 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -27,10 +27,10 @@ use pocketmine\block\tile\Bell as TileBell; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -51,13 +51,13 @@ final class Bell extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ - $this->attachmentType = BlockDataReaderHelper::readBellAttachmentType($r); + protected function decodeState(RuntimeDataReader $r) : void{ + $this->attachmentType = RuntimeEnumDeserializer::readBellAttachmentType($r); $this->facing = $r->readHorizontalFacing(); } - protected function encodeState(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeBellAttachmentType($w, $this->attachmentType); + protected function encodeState(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeBellAttachmentType($w, $this->attachmentType); $w->writeHorizontalFacing($this->facing); } diff --git a/src/block/Block.php b/src/block/Block.php index baad10b8f..2d55a3879 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -29,8 +29,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\Item; @@ -100,7 +100,7 @@ class Block{ final public function decodeTypeData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); $givenBits = $typeBits; - $reader = new BlockDataReader($givenBits, $data); + $reader = new RuntimeDataReader($givenBits, $data); $this->decodeType($reader); $readBits = $reader->getOffset(); @@ -113,7 +113,7 @@ class Block{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); $givenBits = $typeBits + $stateBits; - $reader = new BlockDataReader($givenBits, $data); + $reader = new RuntimeDataReader($givenBits, $data); $this->decodeTypeData($reader->readInt($typeBits)); $this->decodeState($reader); @@ -123,18 +123,18 @@ class Block{ } } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ //NOOP } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ //NOOP } final public function computeTypeData() : int{ $typeBits = $this->getRequiredTypeDataBits(); $requiredBits = $typeBits; - $writer = new BlockDataWriter($requiredBits); + $writer = new RuntimeDataWriter($requiredBits); $this->encodeType($writer); $writtenBits = $writer->getOffset(); @@ -152,7 +152,7 @@ class Block{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); $requiredBits = $typeBits + $stateBits; - $writer = new BlockDataWriter($requiredBits); + $writer = new RuntimeDataWriter($requiredBits); $writer->writeInt($typeBits, $this->computeTypeData()); $this->encodeState($writer); @@ -164,11 +164,11 @@ class Block{ return $writer->getValue(); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ //NOOP } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ //NOOP } diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 4efc04cb6..1bc685686 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -50,9 +50,9 @@ use pocketmine\block\tile\Note as TileNote; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WoodType; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\item\Item; use pocketmine\item\ToolTier; use pocketmine\utils\AssumptionFailedError; @@ -829,9 +829,9 @@ class BlockFactory{ $v->decodeStateData($stateData); if($v->computeStateData() !== $stateData){ //if the fullID comes back different, this is a broken state that we can't rely on; map it to default - throw new InvalidBlockStateException("Corrupted state"); + throw new InvalidSerializedRuntimeDataException("Corrupted state"); } - }catch(InvalidBlockStateException $e){ //invalid property combination, leave it + }catch(InvalidSerializedRuntimeDataException $e){ //invalid property combination, leave it continue; } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index cee9d0cc3..463ef5adb 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -26,10 +26,8 @@ namespace pocketmine\block; use pocketmine\block\tile\BrewingStand as TileBrewingStand; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -48,12 +46,29 @@ class BrewingStand extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ - $this->setSlots(BlockDataReaderHelper::readBrewingStandSlotKeySet($r)); + protected function decodeState(RuntimeDataReader $r) : void{ + $result = []; + foreach([ + BrewingStandSlot::EAST(), + BrewingStandSlot::NORTHWEST(), + BrewingStandSlot::SOUTHWEST(), + ] as $member){ + if($r->readBool()){ + $result[$member->id()] = $member; + } + } + + $this->setSlots($result); } - protected function encodeState(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeBrewingStandSlotKeySet($w, $this->slots); + protected function encodeState(RuntimeDataWriter $w) : void{ + foreach([ + \pocketmine\block\utils\BrewingStandSlot::EAST(), + \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), + \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), + ] as $member){ + $w->writeBool(isset($this->slots[$member->id()])); + } } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Button.php b/src/block/Button.php index 7e813af26..6cdcae351 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -41,12 +41,12 @@ abstract class Button extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readFacing(); $this->pressed = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); $w->writeBool($this->pressed); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 83b8dcca4..cc8c602bf 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\event\block\BlockGrowEvent; use pocketmine\event\entity\EntityDamageByBlockEvent; @@ -44,11 +44,11 @@ class Cactus extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 1bd28aa57..cbb8f9389 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\FoodSource; use pocketmine\entity\Living; @@ -43,11 +43,11 @@ class Cake extends Transparent implements FoodSource{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->bites = $r->readBoundedInt(3, 0, self::MAX_BITES); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->bites); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index f0f9b2464..5056598c3 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WoodType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -49,12 +49,12 @@ class CocoaBlock extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeInt(2, $this->age); } diff --git a/src/block/Crops.php b/src/block/Crops.php index 15fc75752..f916dfb7d 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -41,11 +41,11 @@ abstract class Crops extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(3, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index f2f2fd6c8..8718b89c2 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -44,12 +44,12 @@ class DaylightSensor extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->signalStrength = $r->readBoundedInt(4, 0, 15); $this->inverted = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->signalStrength); $w->writeBool($this->inverted); } diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 61667e9b8..716597214 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -23,20 +23,20 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ parent::decodeState($r); $this->activated = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ parent::encodeState($w); $w->writeBool($this->activated); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index e8ae43851..a3c6da660 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Hoe; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -37,11 +37,11 @@ class Dirt extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->coarse = $r->readBool(); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeBool($this->coarse); } diff --git a/src/block/Door.php b/src/block/Door.php index c00b6d171..6657a18f0 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -44,14 +44,14 @@ class Door extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->top = $r->readBool(); $this->hingeRight = $r->readBool(); $this->open = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->top); $w->writeBool($this->hingeRight); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 29f567d12..f291298f4 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -36,11 +36,11 @@ class DoublePlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->top = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index f69262c97..5cc4294c8 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -38,12 +38,12 @@ class EndPortalFrame extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->eye = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->eye); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index fbd2212d0..989254bc9 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\entity\EntityTrampleFarmlandEvent; @@ -40,11 +40,11 @@ class Farmland extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->wetness = $r->readBoundedInt(3, 0, self::MAX_WETNESS); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index b9bc95e18..4fa531363 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WoodTypeTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -45,13 +45,13 @@ class FenceGate extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->open = $r->readBool(); $this->inWall = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->open); $w->writeBool($this->inWall); diff --git a/src/block/Fire.php b/src/block/Fire.php index c04926cc8..a176941cd 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockBurnEvent; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\math\Facing; @@ -42,11 +42,11 @@ class Fire extends BaseFire{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 3a37af749..24769ae5b 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; @@ -40,11 +40,11 @@ final class FloorCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->axis = $r->readHorizontalAxis(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalAxis($this->axis); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 184f2ba87..60a42a4a5 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockMeltEvent; use function mt_rand; @@ -35,11 +35,11 @@ class FrostedIce extends Ice{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(2, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 46bd76081..c1b29c986 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Furnace as TileFurnace; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -41,12 +41,12 @@ class Furnace extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->lit = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->lit); } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index bba31f314..c1d01654c 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -24,11 +24,11 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -43,16 +43,16 @@ class Hopper extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::UP){ - throw new InvalidBlockStateException("Hopper may not face upward"); + throw new InvalidSerializedRuntimeDataException("Hopper may not face upward"); } $this->facing = $facing; $this->powered = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); $w->writeBool($this->powered); } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 38ac5fc44..cbaed26ec 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -49,12 +49,12 @@ class ItemFrame extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readFacing(); $this->hasMap = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); $w->writeBool($this->hasMap); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index db560584c..bd620a58d 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -39,11 +39,11 @@ class Lantern extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->hanging = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 550afa322..93c423e06 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\LeavesDecayEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -50,12 +50,12 @@ class Leaves extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->noDecay = $r->readBool(); $this->checkDecay = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->noDecay); $w->writeBool($this->checkDecay); } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index e17d29961..6e7026ff8 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -27,8 +27,8 @@ use pocketmine\block\tile\Lectern as TileLectern; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\item\WritableBookBase; use pocketmine\math\AxisAlignedBB; @@ -49,12 +49,12 @@ class Lectern extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->producingSignal = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->producingSignal); } diff --git a/src/block/Lever.php b/src/block/Lever.php index d65b47849..d25ce1c44 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\LeverFacing; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -49,13 +49,13 @@ class Lever extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ - $this->facing = BlockDataReaderHelper::readLeverFacing($r); + protected function decodeState(RuntimeDataReader $r) : void{ + $this->facing = RuntimeEnumDeserializer::readLeverFacing($r); $this->activated = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeLeverFacing($w, $this->facing); + protected function encodeState(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeLeverFacing($w, $this->facing); $w->writeBool($this->activated); } diff --git a/src/block/Light.php b/src/block/Light.php index 6f2ccbf57..f21fc35f9 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -37,11 +37,11 @@ final class Light extends Flowable{ public function getRequiredTypeDataBits() : int{ return 4; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->level = $r->readBoundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 1ad1c112a..93c8219f5 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\MinimumCostFlowCalculator; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\event\block\BlockFormEvent; use pocketmine\event\block\BlockSpreadEvent; @@ -51,13 +51,13 @@ abstract class Liquid extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->decay = $r->readBoundedInt(3, 0, self::MAX_DECAY); $this->falling = $r->readBool(); $this->still = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->decay); $w->writeBool($this->falling); $w->writeBool($this->still); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 883eb2899..0c957a617 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -37,11 +37,11 @@ class NetherPortal extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->axis = $r->readHorizontalAxis(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalAxis($this->axis); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 5d6bc8a31..d6c2287b1 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -40,11 +40,11 @@ class NetherWartPlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(2, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index a98b51416..5cce50949 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Facing; use function array_keys; use function implode; @@ -38,15 +38,15 @@ class Rail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $railShape = $r->readInt(4); if(!isset(RailConnectionInfo::CONNECTIONS[$railShape]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$railShape])){ - throw new InvalidBlockStateException("Invalid rail shape $railShape"); + throw new InvalidSerializedRuntimeDataException("Invalid rail shape $railShape"); } $this->railShape = $railShape; } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 2a4b9906b..17f9d4490 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\MushroomBlockType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use function mt_rand; @@ -41,12 +41,12 @@ class RedMushroomBlock extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ - $this->mushroomBlockType = BlockDataReaderHelper::readMushroomBlockType($r); + protected function decodeState(RuntimeDataReader $r) : void{ + $this->mushroomBlockType = RuntimeEnumDeserializer::readMushroomBlockType($r); } - protected function encodeState(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeMushroomBlockType($w, $this->mushroomBlockType); + protected function encodeState(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeMushroomBlockType($w, $this->mushroomBlockType); } public function getMushroomBlockType() : MushroomBlockType{ return $this->mushroomBlockType; } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index a531889d1..769c7ef96 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -28,8 +28,8 @@ use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -47,14 +47,14 @@ class RedstoneComparator extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->isSubtractMode = $r->readBool(); $this->powered = $r->readBool(); //TODO: this doesn't call the decoder from AnalogRedstoneSignalEmitter } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->isSubtractMode); $w->writeBool($this->powered); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index e81f8e805..4b10797a4 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -24,19 +24,19 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\PoweredByRedstoneTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->powered = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index e0a183860..1a7ed5e3b 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; @@ -36,11 +36,11 @@ class RedstoneOre extends Opaque{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->lit = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 5e3ff6ba2..3b77bb262 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -46,13 +46,13 @@ class RedstoneRepeater extends Flowable{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->delay = $r->readBoundedInt(2, self::MIN_DELAY - 1, self::MAX_DELAY - 1) + 1; $this->powered = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeInt(2, $this->delay - 1); $w->writeBool($this->powered); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index de6f1c92f..420a07098 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -23,20 +23,20 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; class RedstoneTorch extends Torch{ protected bool $lit = true; public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ parent::decodeState($r); $this->lit = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ parent::encodeState($w); $w->writeBool($this->lit); } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 39aaba3ba..82afb3334 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\TreeType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -49,11 +49,11 @@ class Sapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->ready = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index 3dd1f74ad..4be3b89d7 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; @@ -41,12 +41,12 @@ class SeaPickle extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->count = $r->readBoundedInt(2, self::MIN_COUNT - 1, self::MAX_COUNT - 1) + 1; $this->underwater = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(2, $this->count - 1); $w->writeBool($this->underwater); } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index 49aa3ae85..f37a8a73f 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -37,11 +37,11 @@ class ShulkerBox extends Opaque{ public function getRequiredStateDataBits() : int{ return 0; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ //NOOP - we don't read or write facing here, because the tile persists it } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index ad60f6ba5..cf203e35f 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -23,19 +23,19 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->pressed = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 26354c8cd..4dbdfb823 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -24,12 +24,12 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SkullType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -55,25 +55,25 @@ class Skull extends Flowable{ public function getRequiredTypeDataBits() : int{ return 3; } - protected function decodeType(BlockDataReader $r) : void{ - $this->skullType = BlockDataReaderHelper::readSkullType($r); + protected function decodeType(RuntimeDataReader $r) : void{ + $this->skullType = RuntimeEnumDeserializer::readSkullType($r); } - protected function encodeType(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeSkullType($w, $this->skullType); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeSkullType($w, $this->skullType); } public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::DOWN){ - throw new InvalidBlockStateException("Skull may not face down"); + throw new InvalidSerializedRuntimeDataException("Skull may not face down"); } $this->facing = $facing; } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); } diff --git a/src/block/Slab.php b/src/block/Slab.php index e562c7adb..a1604d79c 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -25,10 +25,10 @@ namespace pocketmine\block; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -46,12 +46,12 @@ class Slab extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ - $this->slabType = BlockDataReaderHelper::readSlabType($r); + protected function decodeState(RuntimeDataReader $r) : void{ + $this->slabType = RuntimeEnumDeserializer::readSlabType($r); } - protected function encodeState(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeSlabType($w, $this->slabType); + protected function encodeState(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeSlabType($w, $this->slabType); } public function isTransparent() : bool{ diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 6642faaa8..d629d4d04 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockMeltEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -49,11 +49,11 @@ class SnowLayer extends Flowable implements Fallable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS - 1, self::MAX_LAYERS - 1) + 1; } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->layers - 1); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index ed25d8fb6..d2752a18f 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,19 +23,19 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; class Sponge extends Opaque{ protected bool $wet = false; public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->wet = $r->readBool(); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeBool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index 6ccfb1312..67a3d7b40 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -26,8 +26,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\StairShape; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -49,12 +49,12 @@ class Stair extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->upsideDown = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->upsideDown); } diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 0d125baa7..1c09c3cae 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use function array_keys; use function implode; @@ -40,15 +40,15 @@ class StraightOnlyRail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $railShape = $r->readInt(3); if(!isset(RailConnectionInfo::CONNECTIONS[$railShape])){ - throw new InvalidBlockStateException("No rail shape matches meta $railShape"); + throw new InvalidSerializedRuntimeDataException("No rail shape matches meta $railShape"); } $this->railShape = $railShape; } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 9643b7c4f..f91f13a5e 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -40,11 +40,11 @@ class Sugarcane extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 0220125c4..54e785664 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\block\BlockGrowEvent; @@ -48,11 +48,11 @@ class SweetBerryBush extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->age = $r->readBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(3, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index a62f59e3c..30ebb42f6 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; @@ -47,21 +47,21 @@ class TNT extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->worksUnderwater = $r->readBool(); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeBool($this->worksUnderwater); } public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->unstable = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index 6d887f2c4..dbb9014a8 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -40,15 +40,15 @@ class Torch extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $facing = $r->readFacing(); if($facing === Facing::DOWN){ - throw new InvalidBlockStateException("Torch cannot have a DOWN facing"); + throw new InvalidSerializedRuntimeDataException("Torch cannot have a DOWN facing"); } $this->facing = $facing; } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 4291e4ba4..74306d35e 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -43,13 +43,13 @@ class Trapdoor extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->top = $r->readBool(); $this->open = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->top); $w->writeBool($this->open); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 53722d996..1971b391c 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -36,14 +36,14 @@ class Tripwire extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->triggered = $r->readBool(); $this->suspended = $r->readBool(); $this->connected = $r->readBool(); $this->disarmed = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeBool($this->triggered); $w->writeBool($this->suspended); $w->writeBool($this->connected); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 76cfa931c..bd240d20e 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -41,13 +41,13 @@ class TripwireHook extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); $this->connected = $r->readBool(); $this->powered = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->connected); $w->writeBool($this->powered); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 0bf147778..753aee99d 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; class UnknownBlock extends Transparent{ @@ -36,13 +36,13 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $this->stateData = $r->readInt(Block::INTERNAL_STATE_DATA_BITS); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeInt(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); } diff --git a/src/block/Vine.php b/src/block/Vine.php index e0bb154dc..d716b5eb8 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -42,13 +42,13 @@ class Vine extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ foreach(Facing::HORIZONTAL as $facing){ $this->setFace($facing, $r->readBool()); } } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ foreach(Facing::HORIZONTAL as $facing){ $w->writeBool($this->hasFace($facing)); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 15b6b6486..e3ceff6ce 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WallConnectionType; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -45,12 +45,12 @@ class Wall extends Transparent{ public function getRequiredStateDataBits() : int{ return 9; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->connections = $r->readWallConnections(); $this->post = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeWallConnections($this->connections); $w->writeBool($this->post); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index a0d710d70..9164c2cf1 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; @@ -39,11 +39,11 @@ final class WallCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index 46bb4afa6..d31d65f0e 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -25,8 +25,8 @@ namespace pocketmine\block; use pocketmine\block\utils\PillarRotationTrait; use pocketmine\block\utils\WoodTypeTrait; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\math\Vector3; @@ -40,11 +40,11 @@ class Wood extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(BlockDataReader $r) : void{ + protected function decodeType(RuntimeDataReader $r) : void{ $this->stripped = $r->readBool(); } - protected function encodeType(BlockDataWriter $w) : void{ + protected function encodeType(RuntimeDataWriter $w) : void{ $w->writeBool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 513ca4776..22d266aa7 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -23,19 +23,19 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->signalStrength = $r->readBoundedInt(4, 0, 15); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 580dbbd66..c6ccd5645 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Facing; trait AnyFacingTrait{ @@ -32,11 +32,11 @@ trait AnyFacingTrait{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readFacing(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeFacing($this->facing); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 0b4cb1d6b..3529f45af 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; trait ColoredTrait{ /** @var DyeColor */ @@ -36,13 +36,13 @@ trait ColoredTrait{ public function getRequiredTypeDataBits() : int{ return 4; } /** @see Block::decodeType() */ - protected function decodeType(BlockDataReader $r) : void{ - $this->color = BlockDataReaderHelper::readDyeColor($r); + protected function decodeType(RuntimeDataReader $r) : void{ + $this->color = RuntimeEnumDeserializer::readDyeColor($r); } /** @see Block::encodeType() */ - protected function encodeType(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeDyeColor($w, $this->color); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeDyeColor($w, $this->color); } public function getColor() : DyeColor{ return $this->color; } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index ab6fd66f1..2e301f302 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataReaderHelper; -use pocketmine\data\runtime\block\BlockDataWriter; -use pocketmine\data\runtime\block\BlockDataWriterHelper; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumDeserializer; +use pocketmine\data\runtime\RuntimeEnumSerializer; trait CoralTypeTrait{ protected CoralType $coralType; @@ -36,14 +36,14 @@ trait CoralTypeTrait{ public function getRequiredTypeDataBits() : int{ return 4; } /** @see Block::decodeType() */ - protected function decodeType(BlockDataReader $r) : void{ - $this->coralType = BlockDataReaderHelper::readCoralType($r); + protected function decodeType(RuntimeDataReader $r) : void{ + $this->coralType = RuntimeEnumDeserializer::readCoralType($r); $this->dead = $r->readBool(); } /** @see Block::encodeType() */ - protected function encodeType(BlockDataWriter $w) : void{ - BlockDataWriterHelper::writeCoralType($w, $this->coralType); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeCoralType($w, $this->coralType); $w->writeBool($this->dead); } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index cadcf2ede..c20bab71e 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -33,11 +33,11 @@ trait HorizontalFacingTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 03176ed92..c8fe6216b 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -24,8 +24,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -38,11 +38,11 @@ trait PillarRotationTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->axis = $r->readAxis(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeAxis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 7a402d8e2..361129518 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -23,20 +23,20 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ parent::decodeState($r); $this->powered = $r->readBool(); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ parent::encodeState($w); $w->writeBool($this->powered); } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index b67829492..e5773dbbd 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\block\BlockDataReader; -use pocketmine\data\runtime\block\BlockDataWriter; +use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataWriter; use function floor; trait SignLikeRotationTrait{ @@ -33,11 +33,11 @@ trait SignLikeRotationTrait{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(BlockDataReader $r) : void{ + protected function decodeState(RuntimeDataReader $r) : void{ $this->rotation = $r->readBoundedInt(4, 0, 15); } - protected function encodeState(BlockDataWriter $w) : void{ + protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeInt(4, $this->rotation); } diff --git a/src/block/utils/InvalidBlockStateException.php b/src/data/runtime/InvalidSerializedRuntimeDataException.php similarity index 86% rename from src/block/utils/InvalidBlockStateException.php rename to src/data/runtime/InvalidSerializedRuntimeDataException.php index f42581340..899a206f6 100644 --- a/src/block/utils/InvalidBlockStateException.php +++ b/src/data/runtime/InvalidSerializedRuntimeDataException.php @@ -21,8 +21,8 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\data\runtime; -class InvalidBlockStateException extends \UnexpectedValueException{ +final class InvalidSerializedRuntimeDataException extends \UnexpectedValueException{ } diff --git a/src/data/runtime/block/BlockDataReader.php b/src/data/runtime/RuntimeDataReader.php similarity index 89% rename from src/data/runtime/block/BlockDataReader.php rename to src/data/runtime/RuntimeDataReader.php index 5164ff53e..46c59cb27 100644 --- a/src/data/runtime/block/BlockDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -21,15 +21,14 @@ declare(strict_types=1); -namespace pocketmine\data\runtime\block; +namespace pocketmine\data\runtime; -use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; -final class BlockDataReader{ +final class RuntimeDataReader{ private int $offset = 0; @@ -52,7 +51,7 @@ final class BlockDataReader{ public function readBoundedInt(int $bits, int $min, int $max) : int{ $result = $this->readInt($bits); if($result < $min || $result > $max){ - throw new InvalidBlockStateException("Value is outside the range $min - $max"); + throw new InvalidSerializedRuntimeDataException("Value is outside the range $min - $max"); } return $result; } @@ -79,7 +78,7 @@ final class BlockDataReader{ 3 => Facing::SOUTH, 4 => Facing::WEST, 5 => Facing::EAST, - default => throw new InvalidBlockStateException("Invalid facing value") + default => throw new InvalidSerializedRuntimeDataException("Invalid facing value") }; } @@ -88,7 +87,7 @@ final class BlockDataReader{ 0 => Axis::X, 1 => Axis::Z, 2 => Axis::Y, - default => throw new InvalidBlockStateException("Invalid axis value") + default => throw new InvalidSerializedRuntimeDataException("Invalid axis value") }; } diff --git a/src/data/runtime/block/BlockDataWriter.php b/src/data/runtime/RuntimeDataWriter.php similarity index 97% rename from src/data/runtime/block/BlockDataWriter.php rename to src/data/runtime/RuntimeDataWriter.php index a4d87a5df..c00759237 100644 --- a/src/data/runtime/block/BlockDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -21,14 +21,14 @@ declare(strict_types=1); -namespace pocketmine\data\runtime\block; +namespace pocketmine\data\runtime; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; -final class BlockDataWriter{ +final class RuntimeDataWriter{ private int $value = 0; private int $offset = 0; diff --git a/src/data/runtime/RuntimeEnumDeserializer.php b/src/data/runtime/RuntimeEnumDeserializer.php new file mode 100644 index 000000000..80739026c --- /dev/null +++ b/src/data/runtime/RuntimeEnumDeserializer.php @@ -0,0 +1,108 @@ +readInt(2)){ + 0 => \pocketmine\block\utils\BellAttachmentType::CEILING(), + 1 => \pocketmine\block\utils\BellAttachmentType::FLOOR(), + 2 => \pocketmine\block\utils\BellAttachmentType::ONE_WALL(), + 3 => \pocketmine\block\utils\BellAttachmentType::TWO_WALLS(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for BellAttachmentType") + }; + } + + public static function readCoralType(RuntimeDataReader $r) : \pocketmine\block\utils\CoralType{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\CoralType::BRAIN(), + 1 => \pocketmine\block\utils\CoralType::BUBBLE(), + 2 => \pocketmine\block\utils\CoralType::FIRE(), + 3 => \pocketmine\block\utils\CoralType::HORN(), + 4 => \pocketmine\block\utils\CoralType::TUBE(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for CoralType") + }; + } + + public static function readDyeColor(RuntimeDataReader $r) : \pocketmine\block\utils\DyeColor{ + return match($r->readInt(4)){ + 0 => \pocketmine\block\utils\DyeColor::BLACK(), + 1 => \pocketmine\block\utils\DyeColor::BLUE(), + 2 => \pocketmine\block\utils\DyeColor::BROWN(), + 3 => \pocketmine\block\utils\DyeColor::CYAN(), + 4 => \pocketmine\block\utils\DyeColor::GRAY(), + 5 => \pocketmine\block\utils\DyeColor::GREEN(), + 6 => \pocketmine\block\utils\DyeColor::LIGHT_BLUE(), + 7 => \pocketmine\block\utils\DyeColor::LIGHT_GRAY(), + 8 => \pocketmine\block\utils\DyeColor::LIME(), + 9 => \pocketmine\block\utils\DyeColor::MAGENTA(), + 10 => \pocketmine\block\utils\DyeColor::ORANGE(), + 11 => \pocketmine\block\utils\DyeColor::PINK(), + 12 => \pocketmine\block\utils\DyeColor::PURPLE(), + 13 => \pocketmine\block\utils\DyeColor::RED(), + 14 => \pocketmine\block\utils\DyeColor::WHITE(), + 15 => \pocketmine\block\utils\DyeColor::YELLOW(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for DyeColor") + }; + } + + public static function readLeverFacing(RuntimeDataReader $r) : \pocketmine\block\utils\LeverFacing{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), + 1 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z(), + 2 => \pocketmine\block\utils\LeverFacing::EAST(), + 3 => \pocketmine\block\utils\LeverFacing::NORTH(), + 4 => \pocketmine\block\utils\LeverFacing::SOUTH(), + 5 => \pocketmine\block\utils\LeverFacing::UP_AXIS_X(), + 6 => \pocketmine\block\utils\LeverFacing::UP_AXIS_Z(), + 7 => \pocketmine\block\utils\LeverFacing::WEST(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for LeverFacing") + }; + } + + public static function readMushroomBlockType(RuntimeDataReader $r) : \pocketmine\block\utils\MushroomBlockType{ + return match($r->readInt(4)){ + 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), + 1 => \pocketmine\block\utils\MushroomBlockType::CAP_EAST(), + 2 => \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE(), + 3 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTH(), + 4 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHEAST(), + 5 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHWEST(), + 6 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTH(), + 7 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHEAST(), + 8 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHWEST(), + 9 => \pocketmine\block\utils\MushroomBlockType::CAP_WEST(), + 10 => \pocketmine\block\utils\MushroomBlockType::PORES(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for MushroomBlockType") + }; + } + + public static function readSkullType(RuntimeDataReader $r) : \pocketmine\block\utils\SkullType{ + return match($r->readInt(3)){ + 0 => \pocketmine\block\utils\SkullType::CREEPER(), + 1 => \pocketmine\block\utils\SkullType::DRAGON(), + 2 => \pocketmine\block\utils\SkullType::PLAYER(), + 3 => \pocketmine\block\utils\SkullType::SKELETON(), + 4 => \pocketmine\block\utils\SkullType::WITHER_SKELETON(), + 5 => \pocketmine\block\utils\SkullType::ZOMBIE(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for SkullType") + }; + } + + public static function readSlabType(RuntimeDataReader $r) : \pocketmine\block\utils\SlabType{ + return match($r->readInt(2)){ + 0 => \pocketmine\block\utils\SlabType::BOTTOM(), + 1 => \pocketmine\block\utils\SlabType::DOUBLE(), + 2 => \pocketmine\block\utils\SlabType::TOP(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for SlabType") + }; + } + +} diff --git a/src/data/runtime/block/BlockDataWriterHelper.php b/src/data/runtime/RuntimeEnumSerializer.php similarity index 55% rename from src/data/runtime/block/BlockDataWriterHelper.php rename to src/data/runtime/RuntimeEnumSerializer.php index 1a49fac72..728fdf827 100644 --- a/src/data/runtime/block/BlockDataWriterHelper.php +++ b/src/data/runtime/RuntimeEnumSerializer.php @@ -1,41 +1,16 @@ writeInt(2, match($value){ \pocketmine\block\utils\BellAttachmentType::CEILING() => 0, \pocketmine\block\utils\BellAttachmentType::FLOOR() => 1, @@ -45,21 +20,7 @@ final class BlockDataWriterHelper{ }); } - /** - * @param \pocketmine\block\utils\BrewingStandSlot[] $value - * @phpstan-param array $value - */ - public static function writeBrewingStandSlotKeySet(BlockDataWriter $w, array $value) : void{ - foreach([ - \pocketmine\block\utils\BrewingStandSlot::EAST(), - \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), - \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), - ] as $member){ - $w->writeBool(isset($value[$member->id()])); - } - } - - public static function writeCoralType(BlockDataWriter $w, CoralType $value) : void{ + public static function writeCoralType(RuntimeDataWriter $w, \pocketmine\block\utils\CoralType $value) : void{ $w->writeInt(3, match($value){ \pocketmine\block\utils\CoralType::BRAIN() => 0, \pocketmine\block\utils\CoralType::BUBBLE() => 1, @@ -70,7 +31,7 @@ final class BlockDataWriterHelper{ }); } - public static function writeDyeColor(BlockDataWriter $w, DyeColor $value) : void{ + public static function writeDyeColor(RuntimeDataWriter $w, \pocketmine\block\utils\DyeColor $value) : void{ $w->writeInt(4, match($value){ \pocketmine\block\utils\DyeColor::BLACK() => 0, \pocketmine\block\utils\DyeColor::BLUE() => 1, @@ -92,7 +53,7 @@ final class BlockDataWriterHelper{ }); } - public static function writeLeverFacing(BlockDataWriter $w, LeverFacing $value) : void{ + public static function writeLeverFacing(RuntimeDataWriter $w, \pocketmine\block\utils\LeverFacing $value) : void{ $w->writeInt(3, match($value){ \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z() => 1, @@ -106,7 +67,7 @@ final class BlockDataWriterHelper{ }); } - public static function writeMushroomBlockType(BlockDataWriter $w, MushroomBlockType $value) : void{ + public static function writeMushroomBlockType(RuntimeDataWriter $w, \pocketmine\block\utils\MushroomBlockType $value) : void{ $w->writeInt(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, \pocketmine\block\utils\MushroomBlockType::CAP_EAST() => 1, @@ -123,7 +84,7 @@ final class BlockDataWriterHelper{ }); } - public static function writeSkullType(BlockDataWriter $w, SkullType $value) : void{ + public static function writeSkullType(RuntimeDataWriter $w, \pocketmine\block\utils\SkullType $value) : void{ $w->writeInt(3, match($value){ \pocketmine\block\utils\SkullType::CREEPER() => 0, \pocketmine\block\utils\SkullType::DRAGON() => 1, @@ -135,7 +96,7 @@ final class BlockDataWriterHelper{ }); } - public static function writeSlabType(BlockDataWriter $w, SlabType $value) : void{ + public static function writeSlabType(RuntimeDataWriter $w, \pocketmine\block\utils\SlabType $value) : void{ $w->writeInt(2, match($value){ \pocketmine\block\utils\SlabType::BOTTOM() => 0, \pocketmine\block\utils\SlabType::DOUBLE() => 1, @@ -144,27 +105,4 @@ final class BlockDataWriterHelper{ }); } - public static function writeStairShape(BlockDataWriter $w, StairShape $value) : void{ - $w->writeInt(3, match($value){ - \pocketmine\block\utils\StairShape::INNER_LEFT() => 0, - \pocketmine\block\utils\StairShape::INNER_RIGHT() => 1, - \pocketmine\block\utils\StairShape::OUTER_LEFT() => 2, - \pocketmine\block\utils\StairShape::OUTER_RIGHT() => 3, - \pocketmine\block\utils\StairShape::STRAIGHT() => 4, - default => throw new \pocketmine\utils\AssumptionFailedError("All StairShape cases should be covered") - }); - } - - public static function writeTreeType(BlockDataWriter $w, TreeType $value) : void{ - $w->writeInt(3, match($value){ - \pocketmine\block\utils\TreeType::ACACIA() => 0, - \pocketmine\block\utils\TreeType::BIRCH() => 1, - \pocketmine\block\utils\TreeType::DARK_OAK() => 2, - \pocketmine\block\utils\TreeType::JUNGLE() => 3, - \pocketmine\block\utils\TreeType::OAK() => 4, - \pocketmine\block\utils\TreeType::SPRUCE() => 5, - default => throw new \pocketmine\utils\AssumptionFailedError("All TreeType cases should be covered") - }); - } - } diff --git a/src/data/runtime/block/BlockDataReaderHelper.php b/src/data/runtime/block/BlockDataReaderHelper.php deleted file mode 100644 index b8a3f7703..000000000 --- a/src/data/runtime/block/BlockDataReaderHelper.php +++ /dev/null @@ -1,174 +0,0 @@ -readInt(2)){ - 0 => \pocketmine\block\utils\BellAttachmentType::CEILING(), - 1 => \pocketmine\block\utils\BellAttachmentType::FLOOR(), - 2 => \pocketmine\block\utils\BellAttachmentType::ONE_WALL(), - 3 => \pocketmine\block\utils\BellAttachmentType::TWO_WALLS(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for BellAttachmentType") - }; - } - - /** - * @return \pocketmine\block\utils\BrewingStandSlot[] - * @phpstan-return array - */ - public static function readBrewingStandSlotKeySet(BlockDataReader $r) : array{ - $result = []; - foreach([ - \pocketmine\block\utils\BrewingStandSlot::EAST(), - \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), - \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), - ] as $member){ - if($r->readBool()){ - $result[$member->id()] = $member; - } - } - return $result; - } - - public static function readCoralType(BlockDataReader $r) : CoralType{ - return match($r->readInt(3)){ - 0 => \pocketmine\block\utils\CoralType::BRAIN(), - 1 => \pocketmine\block\utils\CoralType::BUBBLE(), - 2 => \pocketmine\block\utils\CoralType::FIRE(), - 3 => \pocketmine\block\utils\CoralType::HORN(), - 4 => \pocketmine\block\utils\CoralType::TUBE(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for CoralType") - }; - } - - public static function readDyeColor(BlockDataReader $r) : DyeColor{ - return match($r->readInt(4)){ - 0 => \pocketmine\block\utils\DyeColor::BLACK(), - 1 => \pocketmine\block\utils\DyeColor::BLUE(), - 2 => \pocketmine\block\utils\DyeColor::BROWN(), - 3 => \pocketmine\block\utils\DyeColor::CYAN(), - 4 => \pocketmine\block\utils\DyeColor::GRAY(), - 5 => \pocketmine\block\utils\DyeColor::GREEN(), - 6 => \pocketmine\block\utils\DyeColor::LIGHT_BLUE(), - 7 => \pocketmine\block\utils\DyeColor::LIGHT_GRAY(), - 8 => \pocketmine\block\utils\DyeColor::LIME(), - 9 => \pocketmine\block\utils\DyeColor::MAGENTA(), - 10 => \pocketmine\block\utils\DyeColor::ORANGE(), - 11 => \pocketmine\block\utils\DyeColor::PINK(), - 12 => \pocketmine\block\utils\DyeColor::PURPLE(), - 13 => \pocketmine\block\utils\DyeColor::RED(), - 14 => \pocketmine\block\utils\DyeColor::WHITE(), - 15 => \pocketmine\block\utils\DyeColor::YELLOW(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for DyeColor") - }; - } - - public static function readLeverFacing(BlockDataReader $r) : LeverFacing{ - return match($r->readInt(3)){ - 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), - 1 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z(), - 2 => \pocketmine\block\utils\LeverFacing::EAST(), - 3 => \pocketmine\block\utils\LeverFacing::NORTH(), - 4 => \pocketmine\block\utils\LeverFacing::SOUTH(), - 5 => \pocketmine\block\utils\LeverFacing::UP_AXIS_X(), - 6 => \pocketmine\block\utils\LeverFacing::UP_AXIS_Z(), - 7 => \pocketmine\block\utils\LeverFacing::WEST(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for LeverFacing") - }; - } - - public static function readMushroomBlockType(BlockDataReader $r) : MushroomBlockType{ - return match($r->readInt(4)){ - 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), - 1 => \pocketmine\block\utils\MushroomBlockType::CAP_EAST(), - 2 => \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE(), - 3 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTH(), - 4 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHEAST(), - 5 => \pocketmine\block\utils\MushroomBlockType::CAP_NORTHWEST(), - 6 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTH(), - 7 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHEAST(), - 8 => \pocketmine\block\utils\MushroomBlockType::CAP_SOUTHWEST(), - 9 => \pocketmine\block\utils\MushroomBlockType::CAP_WEST(), - 10 => \pocketmine\block\utils\MushroomBlockType::PORES(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for MushroomBlockType") - }; - } - - public static function readSkullType(BlockDataReader $r) : SkullType{ - return match($r->readInt(3)){ - 0 => \pocketmine\block\utils\SkullType::CREEPER(), - 1 => \pocketmine\block\utils\SkullType::DRAGON(), - 2 => \pocketmine\block\utils\SkullType::PLAYER(), - 3 => \pocketmine\block\utils\SkullType::SKELETON(), - 4 => \pocketmine\block\utils\SkullType::WITHER_SKELETON(), - 5 => \pocketmine\block\utils\SkullType::ZOMBIE(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for SkullType") - }; - } - - public static function readSlabType(BlockDataReader $r) : SlabType{ - return match($r->readInt(2)){ - 0 => \pocketmine\block\utils\SlabType::BOTTOM(), - 1 => \pocketmine\block\utils\SlabType::DOUBLE(), - 2 => \pocketmine\block\utils\SlabType::TOP(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for SlabType") - }; - } - - public static function readStairShape(BlockDataReader $r) : StairShape{ - return match($r->readInt(3)){ - 0 => \pocketmine\block\utils\StairShape::INNER_LEFT(), - 1 => \pocketmine\block\utils\StairShape::INNER_RIGHT(), - 2 => \pocketmine\block\utils\StairShape::OUTER_LEFT(), - 3 => \pocketmine\block\utils\StairShape::OUTER_RIGHT(), - 4 => \pocketmine\block\utils\StairShape::STRAIGHT(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for StairShape") - }; - } - - public static function readTreeType(BlockDataReader $r) : TreeType{ - return match($r->readInt(3)){ - 0 => \pocketmine\block\utils\TreeType::ACACIA(), - 1 => \pocketmine\block\utils\TreeType::BIRCH(), - 2 => \pocketmine\block\utils\TreeType::DARK_OAK(), - 3 => \pocketmine\block\utils\TreeType::JUNGLE(), - 4 => \pocketmine\block\utils\TreeType::OAK(), - 5 => \pocketmine\block\utils\TreeType::SPRUCE(), - default => throw new \pocketmine\block\utils\InvalidBlockStateException("Invalid serialized value for TreeType") - }; - } - -} From 6be92ea6f76753cdcdfe192a3954d8357bd3de3a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 14:14:27 +0100 Subject: [PATCH 265/692] fix CS --- src/block/BrewingStand.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 463ef5adb..ee39b0ea3 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -63,9 +63,9 @@ class BrewingStand extends Transparent{ protected function encodeState(RuntimeDataWriter $w) : void{ foreach([ - \pocketmine\block\utils\BrewingStandSlot::EAST(), - \pocketmine\block\utils\BrewingStandSlot::NORTHWEST(), - \pocketmine\block\utils\BrewingStandSlot::SOUTHWEST(), + BrewingStandSlot::EAST(), + BrewingStandSlot::NORTHWEST(), + BrewingStandSlot::SOUTHWEST(), ] as $member){ $w->writeBool(isset($this->slots[$member->id()])); } From 4e71cc7d79f003af126379acc81751bcb16df0d8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 14:26:02 +0100 Subject: [PATCH 266/692] Remove ItemFactory::get(), use ItemFactory::fromTypeId() for VanillaItems soon we'll invert the dependency and set up all this stuff in VanillaItems directly, rendering ItemFactory (mostly) unnecessary. --- src/item/ItemFactory.php | 162 ++---- src/item/VanillaItems.php | 460 +++++++++--------- .../item/ItemSerializerDeserializerTest.php | 2 +- tests/phpunit/item/ItemFactoryTest.php | 46 -- 4 files changed, 263 insertions(+), 407 deletions(-) delete mode 100644 tests/phpunit/item/ItemFactoryTest.php diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 0de8cfcd8..2b3fdd3fe 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -24,15 +24,11 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\BlockFactory; -use pocketmine\block\utils\CoralType; -use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\RecordType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\EntityLegacyIds; -use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\Squid; @@ -43,13 +39,9 @@ use pocketmine\item\ItemIdentifier as IID; use pocketmine\item\ItemIds as LegacyIds; use pocketmine\item\ItemTypeIds as Ids; use pocketmine\math\Vector3; -use pocketmine\nbt\NbtException; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; -use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\World; -use function min; /** * Manages deserializing item types from their legacy ID/metadata. @@ -86,11 +78,7 @@ class ItemFactory{ $this->register(new Clownfish(new IID(Ids::CLOWNFISH, LegacyIds::CLOWNFISH, 0), "Clownfish")); $this->register(new Coal(new IID(Ids::COAL, LegacyIds::COAL, 0), "Coal")); - $identifier = new ItemIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, [LegacyIds::CORAL_FAN_DEAD]); - foreach(CoralType::getAll() as $coralType){ - $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(false), true); - $this->register((new CoralFan($identifier))->setCoralType($coralType)->setDead(true), true); - } + $this->register(new CoralFan(new ItemIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, [LegacyIds::CORAL_FAN_DEAD]))); $this->register(new Coal(new IID(Ids::CHARCOAL, LegacyIds::COAL, 1), "Charcoal")); $this->register(new CocoaBeans(new IID(Ids::COCOA_BEANS, LegacyIds::DYE, 3), "Cocoa Beans")); @@ -191,31 +179,9 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::SCUTE, LegacyIds::TURTLE_SHELL_PIECE, 0), "Scute")); $this->register(new Item(new IID(Ids::WHEAT, LegacyIds::WHEAT, 0), "Wheat")); - //these blocks have special legacy item IDs, so they need to be registered explicitly - $this->register(new ItemBlock(Blocks::ACACIA_DOOR())); - $this->register(new ItemBlock(Blocks::BIRCH_DOOR())); - $this->register(new ItemBlock(Blocks::BREWING_STAND())); - $this->register(new ItemBlock(Blocks::CAKE())); - $this->register(new ItemBlock(Blocks::REDSTONE_COMPARATOR())); - $this->register(new ItemBlock(Blocks::DARK_OAK_DOOR())); - $this->register(new ItemBlock(Blocks::FLOWER_POT())); - $this->register(new ItemBlock(Blocks::HOPPER())); - $this->register(new ItemBlock(Blocks::IRON_DOOR())); - $this->register(new ItemBlock(Blocks::ITEM_FRAME())); - $this->register(new ItemBlock(Blocks::JUNGLE_DOOR())); - $this->register(new ItemBlock(Blocks::NETHER_WART())); - $this->register(new ItemBlock(Blocks::OAK_DOOR())); - $this->register(new ItemBlock(Blocks::REDSTONE_REPEATER())); - $this->register(new ItemBlock(Blocks::SPRUCE_DOOR())); - $this->register(new ItemBlock(Blocks::SUGARCANE())); - //the meta values for buckets are intentionally hardcoded because block IDs will change in the future - $waterBucket = new LiquidBucket(new IID(Ids::WATER_BUCKET, LegacyIds::BUCKET, 8), "Water Bucket", Blocks::WATER()); - $this->register($waterBucket); - $this->remap(LegacyIds::BUCKET, 9, $waterBucket); - $lavaBucket = new LiquidBucket(new IID(Ids::LAVA_BUCKET, LegacyIds::BUCKET, 10), "Lava Bucket", Blocks::LAVA()); - $this->register($lavaBucket); - $this->remap(LegacyIds::BUCKET, 11, $lavaBucket); + $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET, LegacyIds::BUCKET, 8), "Water Bucket", Blocks::WATER())); + $this->register(new LiquidBucket(new IID(Ids::LAVA_BUCKET, LegacyIds::BUCKET, 10), "Lava Bucket", Blocks::LAVA())); $this->register(new Melon(new IID(Ids::MELON, LegacyIds::MELON, 0), "Melon")); $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS, LegacyIds::MELON_SEEDS, 0), "Melon Seeds")); $this->register(new MilkBucket(new IID(Ids::MILK_BUCKET, LegacyIds::BUCKET, 1), "Milk Bucket")); @@ -267,21 +233,16 @@ class ItemFactory{ $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK, LegacyIds::WRITABLE_BOOK, 0), "Book & Quill")); $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, LegacyIds::WRITTEN_BOOK, 0), "Written Book")); - foreach(DyeColor::getAll() as $color){ - //TODO: use colour object directly - //TODO: add interface to dye-colour objects - $this->register((new Dye(new IID(Ids::DYE, LegacyIds::DYE, 0), "Dye"))->setColor($color)); - $this->register((new Banner( - new IID(Ids::BANNER, LegacyIds::BANNER, 0), - Blocks::BANNER(), - Blocks::WALL_BANNER() - ))->setColor($color)); - } + //TODO: add interface to dye-colour objects + $this->register(new Dye(new IID(Ids::DYE, LegacyIds::DYE, 0), "Dye")); + $this->register(new Banner( + new IID(Ids::BANNER, LegacyIds::BANNER, 0), + Blocks::BANNER(), + Blocks::WALL_BANNER() + )); - foreach(PotionType::getAll() as $type){ - $this->register((new Potion(new IID(Ids::POTION, LegacyIds::POTION, 0), "Potion"))->setType($type)); - $this->register((new SplashPotion(new IID(Ids::SPLASH_POTION, LegacyIds::SPLASH_POTION, 0), "Splash Potion"))->setType($type)); - } + $this->register(new Potion(new IID(Ids::POTION, LegacyIds::POTION, 0), "Potion")); + $this->register(new SplashPotion(new IID(Ids::SPLASH_POTION, LegacyIds::SPLASH_POTION, 0), "Splash Potion")); foreach(TreeType::getAll() as $type){ //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency @@ -420,112 +381,51 @@ class ItemFactory{ * $override parameter. */ public function register(Item $item, bool $override = false) : void{ - $id = $item->getId(); - $variant = $item->getMeta(); + $id = $item->getTypeId(); - if(!$override && $this->isRegistered($id, $variant)){ + if(!$override && $this->isRegistered($id)){ throw new \RuntimeException("Trying to overwrite an already registered item"); } - $this->list[self::getListOffset($id, $variant)] = clone $item; - } - - public function remap(int $legacyId, int $legacyMeta, Item $item, bool $override = false) : void{ - if(!$override && $this->isRegistered($legacyId, $legacyMeta)){ - throw new \RuntimeException("Trying to overwrite an already registered item"); - } - - $this->list[self::getListOffset($legacyId, $legacyMeta)] = clone $item; + $this->list[$id] = clone $item; } private static function itemToBlockId(int $id) : int{ - return $id < 0 ? 255 - $id : $id; + if($id > 0){ + throw new \InvalidArgumentException("ID $id is not a block ID"); + } + return -$id; } /** - * @deprecated This method should ONLY be used for deserializing data, e.g. from a config or database. For all other - * purposes, use VanillaItems. - * @see VanillaItems - * - * Deserializes an item from the provided legacy ID, legacy meta, count and NBT. - * - * @throws SavedDataLoadingException + * @internal */ - public function get(int $id, int $meta = 0, int $count = 1, ?CompoundTag $tags = null) : Item{ - /** @var Item|null $item */ - $item = null; - - if($id < -0x8000 || $id > 0x7fff){ - throw new SavedDataLoadingException("Legacy ID must be in the range " . -0x8000 . " ... " . 0x7fff); + public function fromTypeId(int $typeId) : Item{ + if(isset($this->list[$typeId])){ + return clone $this->list[$typeId]; } - if($meta < 0 || $meta > 0x7ffe){ //0x7fff would cause problems with recipe wildcards - throw new SavedDataLoadingException("Meta cannot be negative or larger than " . 0x7ffe); + if($typeId <= 0){ + return BlockFactory::getInstance()->fromTypeId(self::itemToBlockId($typeId))->asItem(); } - if(isset($this->list[$offset = self::getListOffset($id, $meta)])){ - $item = clone $this->list[$offset]; - }elseif(isset($this->list[$zero = self::getListOffset($id, 0)]) && $this->list[$zero] instanceof Durable){ - $item = clone $this->list[$zero]; - $item->setDamage(min($meta, $this->list[$zero]->getMaxDurability())); - }elseif($id < 256){ //intentionally includes negatives, for extended block IDs - //TODO: do not assume that item IDs and block IDs are the same or related - $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $meta & 0xf); - if($blockStateData !== null){ - try{ - $blockStateId = GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); - $item = new ItemBlock(BlockFactory::getInstance()->fromStateId($blockStateId)); - }catch(BlockStateDeserializeException $e){ - throw new SavedDataLoadingException("Failed to deserialize itemblock: " . $e->getMessage(), 0, $e); - } - } - } - - if($item === null){ - throw new SavedDataLoadingException("No registered item is associated with this ID and meta"); - } - - $item->setCount($count); - if($tags !== null){ - try{ - $item->setNamedTag($tags); - }catch(NbtException $e){ - throw new SavedDataLoadingException("Invalid item NBT: " . $e->getMessage(), 0, $e); - } - } - return $item; + throw new \InvalidArgumentException("No item with type ID $typeId is registered"); } /** * Returns whether the specified item ID is already registered in the item factory. */ - public function isRegistered(int $id, int $variant = 0) : bool{ - if($id < 256){ - $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta(self::itemToBlockId($id), $variant & 0xf); - if($blockStateData === null){ - return false; - } - try{ - GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData); - return true; - }catch(BlockStateDeserializeException){ - return false; - } + public function isRegistered(int $id) : bool{ + if($id <= 0){ + return BlockFactory::getInstance()->isRegistered(self::itemToBlockId($id)); } - return isset($this->list[self::getListOffset($id, $variant)]); - } - - private static function getListOffset(int $id, int $variant) : int{ - if($id < -0x8000 || $id > 0x7fff){ - throw new \InvalidArgumentException("ID must be in range " . -0x8000 . " - " . 0x7fff); - } - return (($id & 0xffff) << 16) | ($variant & 0xffff); + return isset($this->list[$id]); } /** * @return Item[] */ - public function getAllRegistered() : array{ + public function getAllKnownTypes() : array{ return $this->list; } } diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 6daf64ff8..481e16d7e 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\item\ItemIds as Ids; +use pocketmine\block\VanillaBlocks; +use pocketmine\item\ItemTypeIds as Ids; use pocketmine\utils\CloningRegistryTrait; /** @@ -284,233 +285,234 @@ final class VanillaItems{ protected static function setup() : void{ $factory = ItemFactory::getInstance(); - self::register("acacia_boat", $factory->get(Ids::BOAT, 4)); - self::register("acacia_sign", $factory->get(Ids::ACACIA_SIGN)); - self::register("air", $factory->get(Ids::AIR, 0, 0)); - self::register("apple", $factory->get(Ids::APPLE)); - self::register("arrow", $factory->get(Ids::ARROW)); - self::register("baked_potato", $factory->get(Ids::BAKED_POTATO)); - self::register("bamboo", $factory->get(Ids::BAMBOO)); - self::register("banner", $factory->get(Ids::BANNER)); - self::register("beetroot", $factory->get(Ids::BEETROOT)); - self::register("beetroot_seeds", $factory->get(Ids::BEETROOT_SEEDS)); - self::register("beetroot_soup", $factory->get(Ids::BEETROOT_SOUP)); - self::register("birch_boat", $factory->get(Ids::BOAT, 2)); - self::register("birch_sign", $factory->get(Ids::BIRCH_SIGN)); - self::register("blaze_powder", $factory->get(Ids::BLAZE_POWDER)); - self::register("blaze_rod", $factory->get(Ids::BLAZE_ROD)); - self::register("bleach", $factory->get(Ids::BLEACH)); - self::register("bone", $factory->get(Ids::BONE)); - self::register("bone_meal", $factory->get(Ids::DYE, 15)); - self::register("book", $factory->get(Ids::BOOK)); - self::register("bow", $factory->get(Ids::BOW)); - self::register("bowl", $factory->get(Ids::BOWL)); - self::register("bread", $factory->get(Ids::BREAD)); - self::register("brick", $factory->get(Ids::BRICK)); - self::register("bucket", $factory->get(Ids::BUCKET)); - self::register("carrot", $factory->get(Ids::CARROT)); - self::register("chainmail_boots", $factory->get(Ids::CHAINMAIL_BOOTS)); - self::register("chainmail_chestplate", $factory->get(Ids::CHAINMAIL_CHESTPLATE)); - self::register("chainmail_helmet", $factory->get(Ids::CHAINMAIL_HELMET)); - self::register("chainmail_leggings", $factory->get(Ids::CHAINMAIL_LEGGINGS)); - self::register("charcoal", $factory->get(Ids::COAL, 1)); - self::register("chemical_aluminium_oxide", $factory->get(Ids::COMPOUND, 13)); - self::register("chemical_ammonia", $factory->get(Ids::COMPOUND, 36)); - self::register("chemical_barium_sulphate", $factory->get(Ids::COMPOUND, 20)); - self::register("chemical_benzene", $factory->get(Ids::COMPOUND, 33)); - self::register("chemical_boron_trioxide", $factory->get(Ids::COMPOUND, 14)); - self::register("chemical_calcium_bromide", $factory->get(Ids::COMPOUND, 7)); - self::register("chemical_calcium_chloride", $factory->get(Ids::COMPOUND, 25)); - self::register("chemical_cerium_chloride", $factory->get(Ids::COMPOUND, 23)); - self::register("chemical_charcoal", $factory->get(Ids::COMPOUND, 11)); - self::register("chemical_crude_oil", $factory->get(Ids::COMPOUND, 29)); - self::register("chemical_glue", $factory->get(Ids::COMPOUND, 27)); - self::register("chemical_hydrogen_peroxide", $factory->get(Ids::COMPOUND, 35)); - self::register("chemical_hypochlorite", $factory->get(Ids::COMPOUND, 28)); - self::register("chemical_ink", $factory->get(Ids::COMPOUND, 34)); - self::register("chemical_iron_sulphide", $factory->get(Ids::COMPOUND, 4)); - self::register("chemical_latex", $factory->get(Ids::COMPOUND, 30)); - self::register("chemical_lithium_hydride", $factory->get(Ids::COMPOUND, 5)); - self::register("chemical_luminol", $factory->get(Ids::COMPOUND, 10)); - self::register("chemical_magnesium_nitrate", $factory->get(Ids::COMPOUND, 3)); - self::register("chemical_magnesium_oxide", $factory->get(Ids::COMPOUND, 8)); - self::register("chemical_magnesium_salts", $factory->get(Ids::COMPOUND, 18)); - self::register("chemical_mercuric_chloride", $factory->get(Ids::COMPOUND, 22)); - self::register("chemical_polyethylene", $factory->get(Ids::COMPOUND, 16)); - self::register("chemical_potassium_chloride", $factory->get(Ids::COMPOUND, 21)); - self::register("chemical_potassium_iodide", $factory->get(Ids::COMPOUND, 31)); - self::register("chemical_rubbish", $factory->get(Ids::COMPOUND, 17)); - self::register("chemical_salt", $factory->get(Ids::COMPOUND)); - self::register("chemical_soap", $factory->get(Ids::COMPOUND, 15)); - self::register("chemical_sodium_acetate", $factory->get(Ids::COMPOUND, 9)); - self::register("chemical_sodium_fluoride", $factory->get(Ids::COMPOUND, 32)); - self::register("chemical_sodium_hydride", $factory->get(Ids::COMPOUND, 6)); - self::register("chemical_sodium_hydroxide", $factory->get(Ids::COMPOUND, 2)); - self::register("chemical_sodium_hypochlorite", $factory->get(Ids::COMPOUND, 37)); - self::register("chemical_sodium_oxide", $factory->get(Ids::COMPOUND, 1)); - self::register("chemical_sugar", $factory->get(Ids::COMPOUND, 12)); - self::register("chemical_sulphate", $factory->get(Ids::COMPOUND, 19)); - self::register("chemical_tungsten_chloride", $factory->get(Ids::COMPOUND, 24)); - self::register("chemical_water", $factory->get(Ids::COMPOUND, 26)); - self::register("chorus_fruit", $factory->get(Ids::CHORUS_FRUIT)); - self::register("clay", $factory->get(Ids::CLAY)); - self::register("clock", $factory->get(Ids::CLOCK)); - self::register("clownfish", $factory->get(Ids::CLOWNFISH)); - self::register("coal", $factory->get(Ids::COAL)); - self::register("cocoa_beans", $factory->get(Ids::DYE, 3)); - self::register("compass", $factory->get(Ids::COMPASS)); - self::register("cooked_chicken", $factory->get(Ids::COOKED_CHICKEN)); - self::register("cooked_fish", $factory->get(Ids::COOKED_FISH)); - self::register("cooked_mutton", $factory->get(Ids::COOKED_MUTTON)); - self::register("cooked_porkchop", $factory->get(Ids::COOKED_PORKCHOP)); - self::register("cooked_rabbit", $factory->get(Ids::COOKED_RABBIT)); - self::register("cooked_salmon", $factory->get(Ids::COOKED_SALMON)); - self::register("cookie", $factory->get(Ids::COOKIE)); - self::register("coral_fan", $factory->get(Ids::CORAL_FAN)); - self::register("dark_oak_boat", $factory->get(Ids::BOAT, 5)); - self::register("dark_oak_sign", $factory->get(Ids::DARKOAK_SIGN)); - self::register("diamond", $factory->get(Ids::DIAMOND)); - self::register("diamond_axe", $factory->get(Ids::DIAMOND_AXE)); - self::register("diamond_boots", $factory->get(Ids::DIAMOND_BOOTS)); - self::register("diamond_chestplate", $factory->get(Ids::DIAMOND_CHESTPLATE)); - self::register("diamond_helmet", $factory->get(Ids::DIAMOND_HELMET)); - self::register("diamond_hoe", $factory->get(Ids::DIAMOND_HOE)); - self::register("diamond_leggings", $factory->get(Ids::DIAMOND_LEGGINGS)); - self::register("diamond_pickaxe", $factory->get(Ids::DIAMOND_PICKAXE)); - self::register("diamond_shovel", $factory->get(Ids::DIAMOND_SHOVEL)); - self::register("diamond_sword", $factory->get(Ids::DIAMOND_SWORD)); - self::register("dragon_breath", $factory->get(Ids::DRAGON_BREATH)); - self::register("dried_kelp", $factory->get(Ids::DRIED_KELP)); - self::register("dye", $factory->get(Ids::DYE, 1)); - self::register("egg", $factory->get(Ids::EGG)); - self::register("emerald", $factory->get(Ids::EMERALD)); - self::register("enchanted_golden_apple", $factory->get(Ids::APPLEENCHANTED)); - self::register("ender_pearl", $factory->get(Ids::ENDER_PEARL)); - self::register("experience_bottle", $factory->get(Ids::BOTTLE_O_ENCHANTING)); - self::register("feather", $factory->get(Ids::FEATHER)); - self::register("fermented_spider_eye", $factory->get(Ids::FERMENTED_SPIDER_EYE)); - self::register("fishing_rod", $factory->get(Ids::FISHING_ROD)); - self::register("flint", $factory->get(Ids::FLINT)); - self::register("flint_and_steel", $factory->get(Ids::FLINT_AND_STEEL)); - self::register("ghast_tear", $factory->get(Ids::GHAST_TEAR)); - self::register("glass_bottle", $factory->get(Ids::GLASS_BOTTLE)); - self::register("glistering_melon", $factory->get(Ids::GLISTERING_MELON)); - self::register("glowstone_dust", $factory->get(Ids::GLOWSTONE_DUST)); - self::register("gold_ingot", $factory->get(Ids::GOLD_INGOT)); - self::register("gold_nugget", $factory->get(Ids::GOLDEN_NUGGET)); - self::register("golden_apple", $factory->get(Ids::GOLDEN_APPLE)); - self::register("golden_axe", $factory->get(Ids::GOLDEN_AXE)); - self::register("golden_boots", $factory->get(Ids::GOLDEN_BOOTS)); - self::register("golden_carrot", $factory->get(Ids::GOLDEN_CARROT)); - self::register("golden_chestplate", $factory->get(Ids::GOLDEN_CHESTPLATE)); - self::register("golden_helmet", $factory->get(Ids::GOLDEN_HELMET)); - self::register("golden_hoe", $factory->get(Ids::GOLDEN_HOE)); - self::register("golden_leggings", $factory->get(Ids::GOLDEN_LEGGINGS)); - self::register("golden_pickaxe", $factory->get(Ids::GOLDEN_PICKAXE)); - self::register("golden_shovel", $factory->get(Ids::GOLDEN_SHOVEL)); - self::register("golden_sword", $factory->get(Ids::GOLDEN_SWORD)); - self::register("gunpowder", $factory->get(Ids::GUNPOWDER)); - self::register("heart_of_the_sea", $factory->get(Ids::HEART_OF_THE_SEA)); - self::register("ink_sac", $factory->get(Ids::DYE)); - self::register("iron_axe", $factory->get(Ids::IRON_AXE)); - self::register("iron_boots", $factory->get(Ids::IRON_BOOTS)); - self::register("iron_chestplate", $factory->get(Ids::IRON_CHESTPLATE)); - self::register("iron_helmet", $factory->get(Ids::IRON_HELMET)); - self::register("iron_hoe", $factory->get(Ids::IRON_HOE)); - self::register("iron_ingot", $factory->get(Ids::IRON_INGOT)); - self::register("iron_leggings", $factory->get(Ids::IRON_LEGGINGS)); - self::register("iron_nugget", $factory->get(Ids::IRON_NUGGET)); - self::register("iron_pickaxe", $factory->get(Ids::IRON_PICKAXE)); - self::register("iron_shovel", $factory->get(Ids::IRON_SHOVEL)); - self::register("iron_sword", $factory->get(Ids::IRON_SWORD)); - self::register("jungle_boat", $factory->get(Ids::BOAT, 3)); - self::register("jungle_sign", $factory->get(Ids::JUNGLE_SIGN)); - self::register("lapis_lazuli", $factory->get(Ids::DYE, 4)); - self::register("lava_bucket", $factory->get(Ids::BUCKET, 10)); - self::register("leather", $factory->get(Ids::LEATHER)); - self::register("leather_boots", $factory->get(Ids::LEATHER_BOOTS)); - self::register("leather_cap", $factory->get(Ids::LEATHER_CAP)); - self::register("leather_pants", $factory->get(Ids::LEATHER_LEGGINGS)); - self::register("leather_tunic", $factory->get(Ids::LEATHER_CHESTPLATE)); - self::register("magma_cream", $factory->get(Ids::MAGMA_CREAM)); - self::register("melon", $factory->get(Ids::MELON)); - self::register("melon_seeds", $factory->get(Ids::MELON_SEEDS)); - self::register("milk_bucket", $factory->get(Ids::BUCKET, 1)); - self::register("minecart", $factory->get(Ids::MINECART)); - self::register("mushroom_stew", $factory->get(Ids::MUSHROOM_STEW)); - self::register("nautilus_shell", $factory->get(Ids::NAUTILUS_SHELL)); - self::register("nether_brick", $factory->get(Ids::NETHERBRICK)); - self::register("nether_quartz", $factory->get(Ids::NETHER_QUARTZ)); - self::register("nether_star", $factory->get(Ids::NETHERSTAR)); - self::register("oak_boat", $factory->get(Ids::BOAT)); - self::register("oak_sign", $factory->get(Ids::SIGN)); - self::register("painting", $factory->get(Ids::PAINTING)); - self::register("paper", $factory->get(Ids::PAPER)); - self::register("poisonous_potato", $factory->get(Ids::POISONOUS_POTATO)); - self::register("popped_chorus_fruit", $factory->get(Ids::CHORUS_FRUIT_POPPED)); - self::register("potato", $factory->get(Ids::POTATO)); - self::register("potion", $factory->get(Ids::POTION)); - self::register("prismarine_crystals", $factory->get(Ids::PRISMARINE_CRYSTALS)); - self::register("prismarine_shard", $factory->get(Ids::PRISMARINE_SHARD)); - self::register("pufferfish", $factory->get(Ids::PUFFERFISH)); - self::register("pumpkin_pie", $factory->get(Ids::PUMPKIN_PIE)); - self::register("pumpkin_seeds", $factory->get(Ids::PUMPKIN_SEEDS)); - self::register("rabbit_foot", $factory->get(Ids::RABBIT_FOOT)); - self::register("rabbit_hide", $factory->get(Ids::RABBIT_HIDE)); - self::register("rabbit_stew", $factory->get(Ids::RABBIT_STEW)); - self::register("raw_beef", $factory->get(Ids::BEEF)); - self::register("raw_chicken", $factory->get(Ids::CHICKEN)); - self::register("raw_fish", $factory->get(Ids::FISH)); - self::register("raw_mutton", $factory->get(Ids::MUTTON)); - self::register("raw_porkchop", $factory->get(Ids::PORKCHOP)); - self::register("raw_rabbit", $factory->get(Ids::RABBIT)); - self::register("raw_salmon", $factory->get(Ids::RAW_SALMON)); - self::register("record_11", $factory->get(Ids::RECORD_11)); - self::register("record_13", $factory->get(Ids::RECORD_13)); - self::register("record_blocks", $factory->get(Ids::RECORD_BLOCKS)); - self::register("record_cat", $factory->get(Ids::RECORD_CAT)); - self::register("record_chirp", $factory->get(Ids::RECORD_CHIRP)); - self::register("record_far", $factory->get(Ids::RECORD_FAR)); - self::register("record_mall", $factory->get(Ids::RECORD_MALL)); - self::register("record_mellohi", $factory->get(Ids::RECORD_MELLOHI)); - self::register("record_stal", $factory->get(Ids::RECORD_STAL)); - self::register("record_strad", $factory->get(Ids::RECORD_STRAD)); - self::register("record_wait", $factory->get(Ids::RECORD_WAIT)); - self::register("record_ward", $factory->get(Ids::RECORD_WARD)); - self::register("redstone_dust", $factory->get(Ids::REDSTONE)); - self::register("rotten_flesh", $factory->get(Ids::ROTTEN_FLESH)); - self::register("scute", $factory->get(Ids::TURTLE_SHELL_PIECE)); - self::register("shears", $factory->get(Ids::SHEARS)); - self::register("shulker_shell", $factory->get(Ids::SHULKER_SHELL)); - self::register("slimeball", $factory->get(Ids::SLIMEBALL)); - self::register("snowball", $factory->get(Ids::SNOWBALL)); - self::register("spider_eye", $factory->get(Ids::SPIDER_EYE)); - self::register("splash_potion", $factory->get(Ids::SPLASH_POTION)); - self::register("spruce_boat", $factory->get(Ids::BOAT, 1)); - self::register("spruce_sign", $factory->get(Ids::SPRUCE_SIGN)); - self::register("squid_spawn_egg", $factory->get(Ids::SPAWN_EGG, 17)); - self::register("steak", $factory->get(Ids::COOKED_BEEF)); - self::register("stick", $factory->get(Ids::STICK)); - self::register("stone_axe", $factory->get(Ids::STONE_AXE)); - self::register("stone_hoe", $factory->get(Ids::STONE_HOE)); - self::register("stone_pickaxe", $factory->get(Ids::STONE_PICKAXE)); - self::register("stone_shovel", $factory->get(Ids::STONE_SHOVEL)); - self::register("stone_sword", $factory->get(Ids::STONE_SWORD)); - self::register("string", $factory->get(Ids::STRING)); - self::register("sugar", $factory->get(Ids::SUGAR)); - self::register("sweet_berries", $factory->get(Ids::SWEET_BERRIES)); - self::register("totem", $factory->get(Ids::TOTEM)); - self::register("villager_spawn_egg", $factory->get(Ids::SPAWN_EGG, 15)); - self::register("water_bucket", $factory->get(Ids::BUCKET, 8)); - self::register("wheat", $factory->get(Ids::WHEAT)); - self::register("wheat_seeds", $factory->get(Ids::SEEDS)); - self::register("wooden_axe", $factory->get(Ids::WOODEN_AXE)); - self::register("wooden_hoe", $factory->get(Ids::WOODEN_HOE)); - self::register("wooden_pickaxe", $factory->get(Ids::WOODEN_PICKAXE)); - self::register("wooden_shovel", $factory->get(Ids::WOODEN_SHOVEL)); - self::register("wooden_sword", $factory->get(Ids::WOODEN_SWORD)); - self::register("writable_book", $factory->get(Ids::WRITABLE_BOOK)); - self::register("written_book", $factory->get(Ids::WRITTEN_BOOK)); - self::register("zombie_spawn_egg", $factory->get(Ids::SPAWN_EGG, 32)); + self::register("air", VanillaBlocks::AIR()->asItem()->setCount(0)); + + self::register("acacia_boat", $factory->fromTypeId(Ids::ACACIA_BOAT)); + self::register("acacia_sign", $factory->fromTypeId(Ids::ACACIA_SIGN)); + self::register("apple", $factory->fromTypeId(Ids::APPLE)); + self::register("arrow", $factory->fromTypeId(Ids::ARROW)); + self::register("baked_potato", $factory->fromTypeId(Ids::BAKED_POTATO)); + self::register("bamboo", $factory->fromTypeId(Ids::BAMBOO)); + self::register("banner", $factory->fromTypeId(Ids::BANNER)); + self::register("beetroot", $factory->fromTypeId(Ids::BEETROOT)); + self::register("beetroot_seeds", $factory->fromTypeId(Ids::BEETROOT_SEEDS)); + self::register("beetroot_soup", $factory->fromTypeId(Ids::BEETROOT_SOUP)); + self::register("birch_boat", $factory->fromTypeId(Ids::BIRCH_BOAT)); + self::register("birch_sign", $factory->fromTypeId(Ids::BIRCH_SIGN)); + self::register("blaze_powder", $factory->fromTypeId(Ids::BLAZE_POWDER)); + self::register("blaze_rod", $factory->fromTypeId(Ids::BLAZE_ROD)); + self::register("bleach", $factory->fromTypeId(Ids::BLEACH)); + self::register("bone", $factory->fromTypeId(Ids::BONE)); + self::register("bone_meal", $factory->fromTypeId(Ids::BONE_MEAL)); + self::register("book", $factory->fromTypeId(Ids::BOOK)); + self::register("bow", $factory->fromTypeId(Ids::BOW)); + self::register("bowl", $factory->fromTypeId(Ids::BOWL)); + self::register("bread", $factory->fromTypeId(Ids::BREAD)); + self::register("brick", $factory->fromTypeId(Ids::BRICK)); + self::register("bucket", $factory->fromTypeId(Ids::BUCKET)); + self::register("carrot", $factory->fromTypeId(Ids::CARROT)); + self::register("chainmail_boots", $factory->fromTypeId(Ids::CHAINMAIL_BOOTS)); + self::register("chainmail_chestplate", $factory->fromTypeId(Ids::CHAINMAIL_CHESTPLATE)); + self::register("chainmail_helmet", $factory->fromTypeId(Ids::CHAINMAIL_HELMET)); + self::register("chainmail_leggings", $factory->fromTypeId(Ids::CHAINMAIL_LEGGINGS)); + self::register("charcoal", $factory->fromTypeId(Ids::CHARCOAL)); + self::register("chemical_aluminium_oxide", $factory->fromTypeId(Ids::CHEMICAL_ALUMINIUM_OXIDE)); + self::register("chemical_ammonia", $factory->fromTypeId(Ids::CHEMICAL_AMMONIA)); + self::register("chemical_barium_sulphate", $factory->fromTypeId(Ids::CHEMICAL_BARIUM_SULPHATE)); + self::register("chemical_benzene", $factory->fromTypeId(Ids::CHEMICAL_BENZENE)); + self::register("chemical_boron_trioxide", $factory->fromTypeId(Ids::CHEMICAL_BORON_TRIOXIDE)); + self::register("chemical_calcium_bromide", $factory->fromTypeId(Ids::CHEMICAL_CALCIUM_BROMIDE)); + self::register("chemical_calcium_chloride", $factory->fromTypeId(Ids::CHEMICAL_CALCIUM_CHLORIDE)); + self::register("chemical_cerium_chloride", $factory->fromTypeId(Ids::CHEMICAL_CERIUM_CHLORIDE)); + self::register("chemical_charcoal", $factory->fromTypeId(Ids::CHEMICAL_CHARCOAL)); + self::register("chemical_crude_oil", $factory->fromTypeId(Ids::CHEMICAL_CRUDE_OIL)); + self::register("chemical_glue", $factory->fromTypeId(Ids::CHEMICAL_GLUE)); + self::register("chemical_hydrogen_peroxide", $factory->fromTypeId(Ids::CHEMICAL_HYDROGEN_PEROXIDE)); + self::register("chemical_hypochlorite", $factory->fromTypeId(Ids::CHEMICAL_HYPOCHLORITE)); + self::register("chemical_ink", $factory->fromTypeId(Ids::CHEMICAL_INK)); + self::register("chemical_iron_sulphide", $factory->fromTypeId(Ids::CHEMICAL_IRON_SULPHIDE)); + self::register("chemical_latex", $factory->fromTypeId(Ids::CHEMICAL_LATEX)); + self::register("chemical_lithium_hydride", $factory->fromTypeId(Ids::CHEMICAL_LITHIUM_HYDRIDE)); + self::register("chemical_luminol", $factory->fromTypeId(Ids::CHEMICAL_LUMINOL)); + self::register("chemical_magnesium_nitrate", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_NITRATE)); + self::register("chemical_magnesium_oxide", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_OXIDE)); + self::register("chemical_magnesium_salts", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_SALTS)); + self::register("chemical_mercuric_chloride", $factory->fromTypeId(Ids::CHEMICAL_MERCURIC_CHLORIDE)); + self::register("chemical_polyethylene", $factory->fromTypeId(Ids::CHEMICAL_POLYETHYLENE)); + self::register("chemical_potassium_chloride", $factory->fromTypeId(Ids::CHEMICAL_POTASSIUM_CHLORIDE)); + self::register("chemical_potassium_iodide", $factory->fromTypeId(Ids::CHEMICAL_POTASSIUM_IODIDE)); + self::register("chemical_rubbish", $factory->fromTypeId(Ids::CHEMICAL_RUBBISH)); + self::register("chemical_salt", $factory->fromTypeId(Ids::CHEMICAL_SALT)); + self::register("chemical_soap", $factory->fromTypeId(Ids::CHEMICAL_SOAP)); + self::register("chemical_sodium_acetate", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_ACETATE)); + self::register("chemical_sodium_fluoride", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_FLUORIDE)); + self::register("chemical_sodium_hydride", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYDRIDE)); + self::register("chemical_sodium_hydroxide", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYDROXIDE)); + self::register("chemical_sodium_hypochlorite", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYPOCHLORITE)); + self::register("chemical_sodium_oxide", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_OXIDE)); + self::register("chemical_sugar", $factory->fromTypeId(Ids::CHEMICAL_SUGAR)); + self::register("chemical_sulphate", $factory->fromTypeId(Ids::CHEMICAL_SULPHATE)); + self::register("chemical_tungsten_chloride", $factory->fromTypeId(Ids::CHEMICAL_TUNGSTEN_CHLORIDE)); + self::register("chemical_water", $factory->fromTypeId(Ids::CHEMICAL_WATER)); + self::register("chorus_fruit", $factory->fromTypeId(Ids::CHORUS_FRUIT)); + self::register("clay", $factory->fromTypeId(Ids::CLAY)); + self::register("clock", $factory->fromTypeId(Ids::CLOCK)); + self::register("clownfish", $factory->fromTypeId(Ids::CLOWNFISH)); + self::register("coal", $factory->fromTypeId(Ids::COAL)); + self::register("cocoa_beans", $factory->fromTypeId(Ids::COCOA_BEANS)); + self::register("compass", $factory->fromTypeId(Ids::COMPASS)); + self::register("cooked_chicken", $factory->fromTypeId(Ids::COOKED_CHICKEN)); + self::register("cooked_fish", $factory->fromTypeId(Ids::COOKED_FISH)); + self::register("cooked_mutton", $factory->fromTypeId(Ids::COOKED_MUTTON)); + self::register("cooked_porkchop", $factory->fromTypeId(Ids::COOKED_PORKCHOP)); + self::register("cooked_rabbit", $factory->fromTypeId(Ids::COOKED_RABBIT)); + self::register("cooked_salmon", $factory->fromTypeId(Ids::COOKED_SALMON)); + self::register("cookie", $factory->fromTypeId(Ids::COOKIE)); + self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); + self::register("dark_oak_boat", $factory->fromTypeId(Ids::DARK_OAK_BOAT)); + self::register("dark_oak_sign", $factory->fromTypeId(Ids::DARK_OAK_SIGN)); + self::register("diamond", $factory->fromTypeId(Ids::DIAMOND)); + self::register("diamond_axe", $factory->fromTypeId(Ids::DIAMOND_AXE)); + self::register("diamond_boots", $factory->fromTypeId(Ids::DIAMOND_BOOTS)); + self::register("diamond_chestplate", $factory->fromTypeId(Ids::DIAMOND_CHESTPLATE)); + self::register("diamond_helmet", $factory->fromTypeId(Ids::DIAMOND_HELMET)); + self::register("diamond_hoe", $factory->fromTypeId(Ids::DIAMOND_HOE)); + self::register("diamond_leggings", $factory->fromTypeId(Ids::DIAMOND_LEGGINGS)); + self::register("diamond_pickaxe", $factory->fromTypeId(Ids::DIAMOND_PICKAXE)); + self::register("diamond_shovel", $factory->fromTypeId(Ids::DIAMOND_SHOVEL)); + self::register("diamond_sword", $factory->fromTypeId(Ids::DIAMOND_SWORD)); + self::register("dragon_breath", $factory->fromTypeId(Ids::DRAGON_BREATH)); + self::register("dried_kelp", $factory->fromTypeId(Ids::DRIED_KELP)); + self::register("dye", $factory->fromTypeId(Ids::DYE)); + self::register("egg", $factory->fromTypeId(Ids::EGG)); + self::register("emerald", $factory->fromTypeId(Ids::EMERALD)); + self::register("enchanted_golden_apple", $factory->fromTypeId(Ids::ENCHANTED_GOLDEN_APPLE)); + self::register("ender_pearl", $factory->fromTypeId(Ids::ENDER_PEARL)); + self::register("experience_bottle", $factory->fromTypeId(Ids::EXPERIENCE_BOTTLE)); + self::register("feather", $factory->fromTypeId(Ids::FEATHER)); + self::register("fermented_spider_eye", $factory->fromTypeId(Ids::FERMENTED_SPIDER_EYE)); + self::register("fishing_rod", $factory->fromTypeId(Ids::FISHING_ROD)); + self::register("flint", $factory->fromTypeId(Ids::FLINT)); + self::register("flint_and_steel", $factory->fromTypeId(Ids::FLINT_AND_STEEL)); + self::register("ghast_tear", $factory->fromTypeId(Ids::GHAST_TEAR)); + self::register("glass_bottle", $factory->fromTypeId(Ids::GLASS_BOTTLE)); + self::register("glistering_melon", $factory->fromTypeId(Ids::GLISTERING_MELON)); + self::register("glowstone_dust", $factory->fromTypeId(Ids::GLOWSTONE_DUST)); + self::register("gold_ingot", $factory->fromTypeId(Ids::GOLD_INGOT)); + self::register("gold_nugget", $factory->fromTypeId(Ids::GOLD_NUGGET)); + self::register("golden_apple", $factory->fromTypeId(Ids::GOLDEN_APPLE)); + self::register("golden_axe", $factory->fromTypeId(Ids::GOLDEN_AXE)); + self::register("golden_boots", $factory->fromTypeId(Ids::GOLDEN_BOOTS)); + self::register("golden_carrot", $factory->fromTypeId(Ids::GOLDEN_CARROT)); + self::register("golden_chestplate", $factory->fromTypeId(Ids::GOLDEN_CHESTPLATE)); + self::register("golden_helmet", $factory->fromTypeId(Ids::GOLDEN_HELMET)); + self::register("golden_hoe", $factory->fromTypeId(Ids::GOLDEN_HOE)); + self::register("golden_leggings", $factory->fromTypeId(Ids::GOLDEN_LEGGINGS)); + self::register("golden_pickaxe", $factory->fromTypeId(Ids::GOLDEN_PICKAXE)); + self::register("golden_shovel", $factory->fromTypeId(Ids::GOLDEN_SHOVEL)); + self::register("golden_sword", $factory->fromTypeId(Ids::GOLDEN_SWORD)); + self::register("gunpowder", $factory->fromTypeId(Ids::GUNPOWDER)); + self::register("heart_of_the_sea", $factory->fromTypeId(Ids::HEART_OF_THE_SEA)); + self::register("ink_sac", $factory->fromTypeId(Ids::INK_SAC)); + self::register("iron_axe", $factory->fromTypeId(Ids::IRON_AXE)); + self::register("iron_boots", $factory->fromTypeId(Ids::IRON_BOOTS)); + self::register("iron_chestplate", $factory->fromTypeId(Ids::IRON_CHESTPLATE)); + self::register("iron_helmet", $factory->fromTypeId(Ids::IRON_HELMET)); + self::register("iron_hoe", $factory->fromTypeId(Ids::IRON_HOE)); + self::register("iron_ingot", $factory->fromTypeId(Ids::IRON_INGOT)); + self::register("iron_leggings", $factory->fromTypeId(Ids::IRON_LEGGINGS)); + self::register("iron_nugget", $factory->fromTypeId(Ids::IRON_NUGGET)); + self::register("iron_pickaxe", $factory->fromTypeId(Ids::IRON_PICKAXE)); + self::register("iron_shovel", $factory->fromTypeId(Ids::IRON_SHOVEL)); + self::register("iron_sword", $factory->fromTypeId(Ids::IRON_SWORD)); + self::register("jungle_boat", $factory->fromTypeId(Ids::JUNGLE_BOAT)); + self::register("jungle_sign", $factory->fromTypeId(Ids::JUNGLE_SIGN)); + self::register("lapis_lazuli", $factory->fromTypeId(Ids::LAPIS_LAZULI)); + self::register("lava_bucket", $factory->fromTypeId(Ids::LAVA_BUCKET)); + self::register("leather", $factory->fromTypeId(Ids::LEATHER)); + self::register("leather_boots", $factory->fromTypeId(Ids::LEATHER_BOOTS)); + self::register("leather_cap", $factory->fromTypeId(Ids::LEATHER_CAP)); + self::register("leather_pants", $factory->fromTypeId(Ids::LEATHER_PANTS)); + self::register("leather_tunic", $factory->fromTypeId(Ids::LEATHER_TUNIC)); + self::register("magma_cream", $factory->fromTypeId(Ids::MAGMA_CREAM)); + self::register("melon", $factory->fromTypeId(Ids::MELON)); + self::register("melon_seeds", $factory->fromTypeId(Ids::MELON_SEEDS)); + self::register("milk_bucket", $factory->fromTypeId(Ids::MILK_BUCKET)); + self::register("minecart", $factory->fromTypeId(Ids::MINECART)); + self::register("mushroom_stew", $factory->fromTypeId(Ids::MUSHROOM_STEW)); + self::register("nautilus_shell", $factory->fromTypeId(Ids::NAUTILUS_SHELL)); + self::register("nether_brick", $factory->fromTypeId(Ids::NETHER_BRICK)); + self::register("nether_quartz", $factory->fromTypeId(Ids::NETHER_QUARTZ)); + self::register("nether_star", $factory->fromTypeId(Ids::NETHER_STAR)); + self::register("oak_boat", $factory->fromTypeId(Ids::OAK_BOAT)); + self::register("oak_sign", $factory->fromTypeId(Ids::OAK_SIGN)); + self::register("painting", $factory->fromTypeId(Ids::PAINTING)); + self::register("paper", $factory->fromTypeId(Ids::PAPER)); + self::register("poisonous_potato", $factory->fromTypeId(Ids::POISONOUS_POTATO)); + self::register("popped_chorus_fruit", $factory->fromTypeId(Ids::POPPED_CHORUS_FRUIT)); + self::register("potato", $factory->fromTypeId(Ids::POTATO)); + self::register("potion", $factory->fromTypeId(Ids::POTION)); + self::register("prismarine_crystals", $factory->fromTypeId(Ids::PRISMARINE_CRYSTALS)); + self::register("prismarine_shard", $factory->fromTypeId(Ids::PRISMARINE_SHARD)); + self::register("pufferfish", $factory->fromTypeId(Ids::PUFFERFISH)); + self::register("pumpkin_pie", $factory->fromTypeId(Ids::PUMPKIN_PIE)); + self::register("pumpkin_seeds", $factory->fromTypeId(Ids::PUMPKIN_SEEDS)); + self::register("rabbit_foot", $factory->fromTypeId(Ids::RABBIT_FOOT)); + self::register("rabbit_hide", $factory->fromTypeId(Ids::RABBIT_HIDE)); + self::register("rabbit_stew", $factory->fromTypeId(Ids::RABBIT_STEW)); + self::register("raw_beef", $factory->fromTypeId(Ids::RAW_BEEF)); + self::register("raw_chicken", $factory->fromTypeId(Ids::RAW_CHICKEN)); + self::register("raw_fish", $factory->fromTypeId(Ids::RAW_FISH)); + self::register("raw_mutton", $factory->fromTypeId(Ids::RAW_MUTTON)); + self::register("raw_porkchop", $factory->fromTypeId(Ids::RAW_PORKCHOP)); + self::register("raw_rabbit", $factory->fromTypeId(Ids::RAW_RABBIT)); + self::register("raw_salmon", $factory->fromTypeId(Ids::RAW_SALMON)); + self::register("record_11", $factory->fromTypeId(Ids::RECORD_11)); + self::register("record_13", $factory->fromTypeId(Ids::RECORD_13)); + self::register("record_blocks", $factory->fromTypeId(Ids::RECORD_BLOCKS)); + self::register("record_cat", $factory->fromTypeId(Ids::RECORD_CAT)); + self::register("record_chirp", $factory->fromTypeId(Ids::RECORD_CHIRP)); + self::register("record_far", $factory->fromTypeId(Ids::RECORD_FAR)); + self::register("record_mall", $factory->fromTypeId(Ids::RECORD_MALL)); + self::register("record_mellohi", $factory->fromTypeId(Ids::RECORD_MELLOHI)); + self::register("record_stal", $factory->fromTypeId(Ids::RECORD_STAL)); + self::register("record_strad", $factory->fromTypeId(Ids::RECORD_STRAD)); + self::register("record_wait", $factory->fromTypeId(Ids::RECORD_WAIT)); + self::register("record_ward", $factory->fromTypeId(Ids::RECORD_WARD)); + self::register("redstone_dust", $factory->fromTypeId(Ids::REDSTONE_DUST)); + self::register("rotten_flesh", $factory->fromTypeId(Ids::ROTTEN_FLESH)); + self::register("scute", $factory->fromTypeId(Ids::SCUTE)); + self::register("shears", $factory->fromTypeId(Ids::SHEARS)); + self::register("shulker_shell", $factory->fromTypeId(Ids::SHULKER_SHELL)); + self::register("slimeball", $factory->fromTypeId(Ids::SLIMEBALL)); + self::register("snowball", $factory->fromTypeId(Ids::SNOWBALL)); + self::register("spider_eye", $factory->fromTypeId(Ids::SPIDER_EYE)); + self::register("splash_potion", $factory->fromTypeId(Ids::SPLASH_POTION)); + self::register("spruce_boat", $factory->fromTypeId(Ids::SPRUCE_BOAT)); + self::register("spruce_sign", $factory->fromTypeId(Ids::SPRUCE_SIGN)); + self::register("squid_spawn_egg", $factory->fromTypeId(Ids::SQUID_SPAWN_EGG)); + self::register("steak", $factory->fromTypeId(Ids::STEAK)); + self::register("stick", $factory->fromTypeId(Ids::STICK)); + self::register("stone_axe", $factory->fromTypeId(Ids::STONE_AXE)); + self::register("stone_hoe", $factory->fromTypeId(Ids::STONE_HOE)); + self::register("stone_pickaxe", $factory->fromTypeId(Ids::STONE_PICKAXE)); + self::register("stone_shovel", $factory->fromTypeId(Ids::STONE_SHOVEL)); + self::register("stone_sword", $factory->fromTypeId(Ids::STONE_SWORD)); + self::register("string", $factory->fromTypeId(Ids::STRING)); + self::register("sugar", $factory->fromTypeId(Ids::SUGAR)); + self::register("sweet_berries", $factory->fromTypeId(Ids::SWEET_BERRIES)); + self::register("totem", $factory->fromTypeId(Ids::TOTEM)); + self::register("villager_spawn_egg", $factory->fromTypeId(Ids::VILLAGER_SPAWN_EGG)); + self::register("water_bucket", $factory->fromTypeId(Ids::WATER_BUCKET)); + self::register("wheat", $factory->fromTypeId(Ids::WHEAT)); + self::register("wheat_seeds", $factory->fromTypeId(Ids::WHEAT_SEEDS)); + self::register("wooden_axe", $factory->fromTypeId(Ids::WOODEN_AXE)); + self::register("wooden_hoe", $factory->fromTypeId(Ids::WOODEN_HOE)); + self::register("wooden_pickaxe", $factory->fromTypeId(Ids::WOODEN_PICKAXE)); + self::register("wooden_shovel", $factory->fromTypeId(Ids::WOODEN_SHOVEL)); + self::register("wooden_sword", $factory->fromTypeId(Ids::WOODEN_SWORD)); + self::register("writable_book", $factory->fromTypeId(Ids::WRITABLE_BOOK)); + self::register("written_book", $factory->fromTypeId(Ids::WRITTEN_BOOK)); + self::register("zombie_spawn_egg", $factory->fromTypeId(Ids::ZOMBIE_SPAWN_EGG)); } } diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index 32e8f4139..80ff0c4a4 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -39,7 +39,7 @@ final class ItemSerializerDeserializerTest extends TestCase{ } public function testAllVanillaItemsSerializableAndDeserializable() : void{ - foreach(ItemFactory::getInstance()->getAllRegistered() as $item){ + foreach(ItemFactory::getInstance()->getAllKnownTypes() as $item){ if($item->isNull()){ continue; } diff --git a/tests/phpunit/item/ItemFactoryTest.php b/tests/phpunit/item/ItemFactoryTest.php deleted file mode 100644 index 205a87107..000000000 --- a/tests/phpunit/item/ItemFactoryTest.php +++ /dev/null @@ -1,46 +0,0 @@ -get(ItemIds::WOODEN_SWORD)); - /** @var Sword $i1 */ - self::assertSame(0, $i1->getDamage()); - self::assertInstanceOf(Sword::class, $i2 = ItemFactory::getInstance()->get(ItemIds::WOODEN_SWORD, 1)); - /** @var Sword $i2 */ - self::assertSame(1, $i2->getDamage()); - } - - public function testGetDurableItemWithTooLargeDurability() : void{ - self::assertInstanceOf(Sword::class, ItemFactory::getInstance()->get(ItemIds::WOODEN_SWORD, ToolTier::WOOD()->getMaxDurability())); - ItemFactory::getInstance()->get(ItemIds::WOODEN_SWORD, ToolTier::WOOD()->getMaxDurability() + 1); - } -} From c5282b059b2f694af445123394244c9ad855336a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 14:26:59 +0100 Subject: [PATCH 267/692] ... --- src/data/runtime/RuntimeEnumDeserializer.php | 19 +++++++++++++++++++ src/data/runtime/RuntimeEnumSerializer.php | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/data/runtime/RuntimeEnumDeserializer.php b/src/data/runtime/RuntimeEnumDeserializer.php index 80739026c..3c7eb5ad8 100644 --- a/src/data/runtime/RuntimeEnumDeserializer.php +++ b/src/data/runtime/RuntimeEnumDeserializer.php @@ -1,5 +1,24 @@ Date: Tue, 5 Jul 2022 15:12:55 +0100 Subject: [PATCH 268/692] Exterminate legacy item IDs --- src/crafting/CraftingManager.php | 9 +- src/crafting/FurnaceRecipeManager.php | 2 +- src/data/bedrock/CoralTypeIdMap.php | 68 -- src/data/runtime/RuntimeEnumDeserializer.php | 48 ++ src/data/runtime/RuntimeEnumSerializer.php | 48 ++ src/item/Banner.php | 6 +- src/item/CoralFan.php | 21 +- src/item/Dye.php | 13 +- src/item/Item.php | 19 +- src/item/ItemBlock.php | 5 + src/item/ItemFactory.php | 447 ++++++----- src/item/ItemIdentifier.php | 28 +- src/item/ItemIdentifierFlattened.php | 41 - src/item/ItemIds.php | 736 ------------------ src/item/Potion.php | 7 +- src/item/SplashPotion.php | 7 +- src/network/mcpe/convert/TypeConverter.php | 5 +- src/player/Player.php | 7 +- .../data/bedrock/CoralTypeIdMapTest.php | 38 - 19 files changed, 375 insertions(+), 1180 deletions(-) delete mode 100644 src/data/bedrock/CoralTypeIdMap.php delete mode 100644 src/item/ItemIdentifierFlattened.php delete mode 100644 src/item/ItemIds.php delete mode 100644 tests/phpunit/data/bedrock/CoralTypeIdMapTest.php diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index 42e0db705..f83901d33 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -91,7 +91,7 @@ class CraftingManager{ */ public static function sort(Item $i1, Item $i2) : int{ //Use spaceship operator to compare each property, then try the next one if they are equivalent. - ($retval = $i1->getId() <=> $i2->getId()) === 0 && ($retval = $i1->getMeta() <=> $i2->getMeta()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; + ($retval = $i1->getTypeId() <=> $i2->getTypeId()) === 0 && ($retval = $i1->computeTypeData() <=> $i2->computeTypeData()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; return $retval; } @@ -130,8 +130,7 @@ class CraftingManager{ foreach($outputs as $o){ //count is not written because the outputs might be from multiple repetitions of a single recipe //this reduces the accuracy of the hash, but it won't matter in most cases. - $result->putVarInt($o->getId()); - $result->putVarInt($o->getMeta()); + $result->putVarInt(morton2d_encode($o->getTypeId(), $o->computeTypeData())); $result->put((new LittleEndianNbtSerializer())->write(new TreeRoot($o->getNamedTag()))); } @@ -256,8 +255,8 @@ class CraftingManager{ } public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ - $inputHash = morton2d_encode($input->getId(), $input->getMeta()); - $ingredientHash = morton2d_encode($ingredient->getId(), $ingredient->getMeta()); + $inputHash = morton2d_encode($input->getTypeId(), $input->computeTypeData()); + $ingredientHash = morton2d_encode($ingredient->getTypeId(), $ingredient->computeTypeData()); $cached = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; if($cached !== null){ return $cached; diff --git a/src/crafting/FurnaceRecipeManager.php b/src/crafting/FurnaceRecipeManager.php index 5d46f0e19..74e2817b6 100644 --- a/src/crafting/FurnaceRecipeManager.php +++ b/src/crafting/FurnaceRecipeManager.php @@ -66,7 +66,7 @@ final class FurnaceRecipeManager{ } public function match(Item $input) : ?FurnaceRecipe{ - $index = morton2d_encode($input->getId(), $input->getMeta()); + $index = morton2d_encode($input->getTypeId(), $input->computeTypeData()); $simpleRecipe = $this->lookupCache[$index] ?? null; if($simpleRecipe !== null){ return $simpleRecipe; diff --git a/src/data/bedrock/CoralTypeIdMap.php b/src/data/bedrock/CoralTypeIdMap.php deleted file mode 100644 index fd1651206..000000000 --- a/src/data/bedrock/CoralTypeIdMap.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - private array $idToEnum = []; - /** - * @var int[] - * @phpstan-var array - */ - private array $enumToId = []; - - public function __construct(){ - $this->register(BlockLegacyMetadata::CORAL_VARIANT_TUBE, CoralType::TUBE()); - $this->register(BlockLegacyMetadata::CORAL_VARIANT_BRAIN, CoralType::BRAIN()); - $this->register(BlockLegacyMetadata::CORAL_VARIANT_BUBBLE, CoralType::BUBBLE()); - $this->register(BlockLegacyMetadata::CORAL_VARIANT_FIRE, CoralType::FIRE()); - $this->register(BlockLegacyMetadata::CORAL_VARIANT_HORN, CoralType::HORN()); - } - - public function register(int $id, CoralType $type) : void{ - $this->idToEnum[$id] = $type; - $this->enumToId[$type->id()] = $id; - } - - public function fromId(int $id) : ?CoralType{ - return $this->idToEnum[$id] ?? null; - } - - public function toId(CoralType $type) : int{ - if(!array_key_exists($type->id(), $this->enumToId)){ - throw new \InvalidArgumentException("Coral type does not have a mapped ID"); //this should never happen - } - return $this->enumToId[$type->id()]; - } -} diff --git a/src/data/runtime/RuntimeEnumDeserializer.php b/src/data/runtime/RuntimeEnumDeserializer.php index 3c7eb5ad8..f5835f962 100644 --- a/src/data/runtime/RuntimeEnumDeserializer.php +++ b/src/data/runtime/RuntimeEnumDeserializer.php @@ -103,6 +103,54 @@ final class RuntimeEnumDeserializer{ }; } + public static function readPotionType(RuntimeDataReader $r) : \pocketmine\item\PotionType{ + return match($r->readInt(6)){ + 0 => \pocketmine\item\PotionType::AWKWARD(), + 1 => \pocketmine\item\PotionType::FIRE_RESISTANCE(), + 2 => \pocketmine\item\PotionType::HARMING(), + 3 => \pocketmine\item\PotionType::HEALING(), + 4 => \pocketmine\item\PotionType::INVISIBILITY(), + 5 => \pocketmine\item\PotionType::LEAPING(), + 6 => \pocketmine\item\PotionType::LONG_FIRE_RESISTANCE(), + 7 => \pocketmine\item\PotionType::LONG_INVISIBILITY(), + 8 => \pocketmine\item\PotionType::LONG_LEAPING(), + 9 => \pocketmine\item\PotionType::LONG_MUNDANE(), + 10 => \pocketmine\item\PotionType::LONG_NIGHT_VISION(), + 11 => \pocketmine\item\PotionType::LONG_POISON(), + 12 => \pocketmine\item\PotionType::LONG_REGENERATION(), + 13 => \pocketmine\item\PotionType::LONG_SLOWNESS(), + 14 => \pocketmine\item\PotionType::LONG_SLOW_FALLING(), + 15 => \pocketmine\item\PotionType::LONG_STRENGTH(), + 16 => \pocketmine\item\PotionType::LONG_SWIFTNESS(), + 17 => \pocketmine\item\PotionType::LONG_TURTLE_MASTER(), + 18 => \pocketmine\item\PotionType::LONG_WATER_BREATHING(), + 19 => \pocketmine\item\PotionType::LONG_WEAKNESS(), + 20 => \pocketmine\item\PotionType::MUNDANE(), + 21 => \pocketmine\item\PotionType::NIGHT_VISION(), + 22 => \pocketmine\item\PotionType::POISON(), + 23 => \pocketmine\item\PotionType::REGENERATION(), + 24 => \pocketmine\item\PotionType::SLOWNESS(), + 25 => \pocketmine\item\PotionType::SLOW_FALLING(), + 26 => \pocketmine\item\PotionType::STRENGTH(), + 27 => \pocketmine\item\PotionType::STRONG_HARMING(), + 28 => \pocketmine\item\PotionType::STRONG_HEALING(), + 29 => \pocketmine\item\PotionType::STRONG_LEAPING(), + 30 => \pocketmine\item\PotionType::STRONG_POISON(), + 31 => \pocketmine\item\PotionType::STRONG_REGENERATION(), + 32 => \pocketmine\item\PotionType::STRONG_STRENGTH(), + 33 => \pocketmine\item\PotionType::STRONG_SWIFTNESS(), + 34 => \pocketmine\item\PotionType::STRONG_TURTLE_MASTER(), + 35 => \pocketmine\item\PotionType::SWIFTNESS(), + 36 => \pocketmine\item\PotionType::THICK(), + 37 => \pocketmine\item\PotionType::TURTLE_MASTER(), + 38 => \pocketmine\item\PotionType::WATER(), + 39 => \pocketmine\item\PotionType::WATER_BREATHING(), + 40 => \pocketmine\item\PotionType::WEAKNESS(), + 41 => \pocketmine\item\PotionType::WITHER(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for PotionType") + }; + } + public static function readSkullType(RuntimeDataReader $r) : \pocketmine\block\utils\SkullType{ return match($r->readInt(3)){ 0 => \pocketmine\block\utils\SkullType::CREEPER(), diff --git a/src/data/runtime/RuntimeEnumSerializer.php b/src/data/runtime/RuntimeEnumSerializer.php index 409f942c8..1b942d0a1 100644 --- a/src/data/runtime/RuntimeEnumSerializer.php +++ b/src/data/runtime/RuntimeEnumSerializer.php @@ -103,6 +103,54 @@ final class RuntimeEnumSerializer{ }); } + public static function writePotionType(RuntimeDataWriter $w, \pocketmine\item\PotionType $value) : void{ + $w->writeInt(6, match($value){ + \pocketmine\item\PotionType::AWKWARD() => 0, + \pocketmine\item\PotionType::FIRE_RESISTANCE() => 1, + \pocketmine\item\PotionType::HARMING() => 2, + \pocketmine\item\PotionType::HEALING() => 3, + \pocketmine\item\PotionType::INVISIBILITY() => 4, + \pocketmine\item\PotionType::LEAPING() => 5, + \pocketmine\item\PotionType::LONG_FIRE_RESISTANCE() => 6, + \pocketmine\item\PotionType::LONG_INVISIBILITY() => 7, + \pocketmine\item\PotionType::LONG_LEAPING() => 8, + \pocketmine\item\PotionType::LONG_MUNDANE() => 9, + \pocketmine\item\PotionType::LONG_NIGHT_VISION() => 10, + \pocketmine\item\PotionType::LONG_POISON() => 11, + \pocketmine\item\PotionType::LONG_REGENERATION() => 12, + \pocketmine\item\PotionType::LONG_SLOWNESS() => 13, + \pocketmine\item\PotionType::LONG_SLOW_FALLING() => 14, + \pocketmine\item\PotionType::LONG_STRENGTH() => 15, + \pocketmine\item\PotionType::LONG_SWIFTNESS() => 16, + \pocketmine\item\PotionType::LONG_TURTLE_MASTER() => 17, + \pocketmine\item\PotionType::LONG_WATER_BREATHING() => 18, + \pocketmine\item\PotionType::LONG_WEAKNESS() => 19, + \pocketmine\item\PotionType::MUNDANE() => 20, + \pocketmine\item\PotionType::NIGHT_VISION() => 21, + \pocketmine\item\PotionType::POISON() => 22, + \pocketmine\item\PotionType::REGENERATION() => 23, + \pocketmine\item\PotionType::SLOWNESS() => 24, + \pocketmine\item\PotionType::SLOW_FALLING() => 25, + \pocketmine\item\PotionType::STRENGTH() => 26, + \pocketmine\item\PotionType::STRONG_HARMING() => 27, + \pocketmine\item\PotionType::STRONG_HEALING() => 28, + \pocketmine\item\PotionType::STRONG_LEAPING() => 29, + \pocketmine\item\PotionType::STRONG_POISON() => 30, + \pocketmine\item\PotionType::STRONG_REGENERATION() => 31, + \pocketmine\item\PotionType::STRONG_STRENGTH() => 32, + \pocketmine\item\PotionType::STRONG_SWIFTNESS() => 33, + \pocketmine\item\PotionType::STRONG_TURTLE_MASTER() => 34, + \pocketmine\item\PotionType::SWIFTNESS() => 35, + \pocketmine\item\PotionType::THICK() => 36, + \pocketmine\item\PotionType::TURTLE_MASTER() => 37, + \pocketmine\item\PotionType::WATER() => 38, + \pocketmine\item\PotionType::WATER_BREATHING() => 39, + \pocketmine\item\PotionType::WEAKNESS() => 40, + \pocketmine\item\PotionType::WITHER() => 41, + default => throw new \pocketmine\utils\AssumptionFailedError("All PotionType cases should be covered") + }); + } + public static function writeSkullType(RuntimeDataWriter $w, \pocketmine\block\utils\SkullType $value) : void{ $w->writeInt(3, match($value){ \pocketmine\block\utils\SkullType::CREEPER() => 0, diff --git a/src/item/Banner.php b/src/item/Banner.php index 343fe8e24..57202d388 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -29,6 +29,8 @@ use pocketmine\block\utils\BannerPatternLayer; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\BannerPatternTypeIdMap; use pocketmine\data\bedrock\DyeColorIdMap; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; @@ -62,8 +64,8 @@ class Banner extends ItemBlockWallOrFloor{ return $this; } - public function getMeta() : int{ - return DyeColorIdMap::getInstance()->toInvertedId($this->color); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeDyeColor($w, $this->color); } /** diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index d6aae4f8c..964420503 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -27,24 +27,25 @@ use pocketmine\block\Block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\VanillaBlocks; -use pocketmine\data\bedrock\CoralTypeIdMap; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Axis; use pocketmine\math\Facing; final class CoralFan extends Item{ - use CoralTypeTrait; + use CoralTypeTrait { + encodeType as encodeCoralType; + } - public function __construct(private ItemIdentifierFlattened $identifierFlattened){ + public function __construct(ItemIdentifier $identifier){ $this->coralType = CoralType::TUBE(); - parent::__construct($this->identifierFlattened, VanillaBlocks::CORAL_FAN()->getName()); + parent::__construct($identifier, VanillaBlocks::CORAL_FAN()->getName()); } - public function getId() : int{ - return $this->dead ? $this->identifierFlattened->getAdditionalLegacyIds()[0] : $this->identifierFlattened->getLegacyId(); - } - - public function getMeta() : int{ - return CoralTypeIdMap::getInstance()->toId($this->coralType); + protected function encodeType(RuntimeDataWriter $w) : void{ + //this is aliased to ensure a compile error in case the functions in Item or Block start to differ in future + //right now we can directly reuse encodeType from CoralTypeTrait, but that might silently stop working if Item + //were to be altered. CoralTypeTrait was originally intended for blocks, so it's better not to assume anything. + $this->encodeCoralType($w); } public function getBlock(?int $clickedFace = null) : Block{ diff --git a/src/item/Dye.php b/src/item/Dye.php index 9c831b13a..fa93a1471 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\utils\DyeColor; -use pocketmine\data\bedrock\DyeColorIdMap; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumSerializer; class Dye extends Item{ private DyeColor $color; @@ -34,14 +35,8 @@ class Dye extends Item{ parent::__construct($identifier, $name); } - public function getMeta() : int{ - return match($this->color->id()){ - DyeColor::BLACK()->id() => 16, - DyeColor::BROWN()->id() => 17, - DyeColor::BLUE()->id() => 18, - DyeColor::WHITE()->id() => 19, - default => DyeColorIdMap::getInstance()->toInvertedId($this->color) - }; + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeDyeColor($w, $this->color); } public function getColor() : DyeColor{ diff --git a/src/item/Item.php b/src/item/Item.php index a22232b74..b12bb080d 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -32,6 +32,7 @@ use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; +use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\item\enchantment\EnchantmentInstance; @@ -431,12 +432,14 @@ class Item implements \JsonSerializable{ return $this->identifier->getTypeId(); } - public function getId() : int{ - return $this->identifier->getLegacyId(); + final public function computeTypeData() : int{ + $writer = new RuntimeDataWriter(16); //TODO: max bits should be a constant instead of being hardcoded all over the place + $this->encodeType($writer); + return $writer->getValue(); } - public function getMeta() : int{ - return $this->identifier->getLegacyMeta(); + protected function encodeType(RuntimeDataWriter $w) : void{ + //NOOP } /** @@ -547,12 +550,12 @@ class Item implements \JsonSerializable{ /** * Compares an Item to this Item and check if they match. * - * @param bool $checkDamage Whether to verify that the damage values match. + * @param bool $checkDamage @deprecated * @param bool $checkCompound Whether to verify that the items' NBT match. */ final public function equals(Item $item, bool $checkDamage = true, bool $checkCompound = true) : bool{ - return $this->getId() === $item->getId() && - (!$checkDamage || $this->getMeta() === $item->getMeta()) && + return $this->getTypeId() === $item->getTypeId() && + $this->computeTypeData() === $item->computeTypeData() && (!$checkCompound || $this->getNamedTag()->equals($item->getNamedTag())); } @@ -571,7 +574,7 @@ class Item implements \JsonSerializable{ } final public function __toString() : string{ - return "Item " . $this->name . " (" . $this->getId() . ":" . $this->getMeta() . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); + return "Item " . $this->name . " (" . $this->getTypeId() . ":" . $this->computeTypeData() . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); } /** diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index c36b78608..8eb46cbdd 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -26,6 +26,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\VanillaBlocks; +use pocketmine\data\runtime\RuntimeDataWriter; /** * Class used for Items that directly represent blocks, such as stone, dirt, wood etc. @@ -43,6 +44,10 @@ final class ItemBlock extends Item{ $this->blockTypeData = $block->computeTypeData(); } + protected function encodeType(RuntimeDataWriter $w) : void{ + $w->writeInt(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); + } + public function getBlock(?int $clickedFace = null) : Block{ //TODO: HACKY MESS, CLEAN IT UP $factory = BlockFactory::getInstance(); diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 2b3fdd3fe..cfcc05dd1 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -27,8 +27,6 @@ use pocketmine\block\BlockFactory; use pocketmine\block\utils\RecordType; use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\data\bedrock\CompoundTypeIds; -use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\Squid; @@ -36,7 +34,6 @@ use pocketmine\entity\Villager; use pocketmine\entity\Zombie; use pocketmine\inventory\ArmorInventory; use pocketmine\item\ItemIdentifier as IID; -use pocketmine\item\ItemIds as LegacyIds; use pocketmine\item\ItemTypeIds as Ids; use pocketmine\math\Vector3; use pocketmine\utils\AssumptionFailedError; @@ -58,191 +55,191 @@ class ItemFactory{ $this->registerSpawnEggs(); $this->registerTierToolItems(); - $this->register(new Apple(new IID(Ids::APPLE, LegacyIds::APPLE, 0), "Apple")); - $this->register(new Arrow(new IID(Ids::ARROW, LegacyIds::ARROW, 0), "Arrow")); + $this->register(new Apple(new IID(Ids::APPLE), "Apple")); + $this->register(new Arrow(new IID(Ids::ARROW), "Arrow")); - $this->register(new BakedPotato(new IID(Ids::BAKED_POTATO, LegacyIds::BAKED_POTATO, 0), "Baked Potato")); - $this->register(new Bamboo(new IID(Ids::BAMBOO, LegacyIds::BAMBOO, 0), "Bamboo"), true); - $this->register(new Beetroot(new IID(Ids::BEETROOT, LegacyIds::BEETROOT, 0), "Beetroot")); - $this->register(new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS, LegacyIds::BEETROOT_SEEDS, 0), "Beetroot Seeds")); - $this->register(new BeetrootSoup(new IID(Ids::BEETROOT_SOUP, LegacyIds::BEETROOT_SOUP, 0), "Beetroot Soup")); - $this->register(new BlazeRod(new IID(Ids::BLAZE_ROD, LegacyIds::BLAZE_ROD, 0), "Blaze Rod")); - $this->register(new Book(new IID(Ids::BOOK, LegacyIds::BOOK, 0), "Book")); - $this->register(new Bow(new IID(Ids::BOW, LegacyIds::BOW, 0), "Bow")); - $this->register(new Bowl(new IID(Ids::BOWL, LegacyIds::BOWL, 0), "Bowl")); - $this->register(new Bread(new IID(Ids::BREAD, LegacyIds::BREAD, 0), "Bread")); - $this->register(new Bucket(new IID(Ids::BUCKET, LegacyIds::BUCKET, 0), "Bucket")); - $this->register(new Carrot(new IID(Ids::CARROT, LegacyIds::CARROT, 0), "Carrot")); - $this->register(new ChorusFruit(new IID(Ids::CHORUS_FRUIT, LegacyIds::CHORUS_FRUIT, 0), "Chorus Fruit")); - $this->register(new Clock(new IID(Ids::CLOCK, LegacyIds::CLOCK, 0), "Clock")); - $this->register(new Clownfish(new IID(Ids::CLOWNFISH, LegacyIds::CLOWNFISH, 0), "Clownfish")); - $this->register(new Coal(new IID(Ids::COAL, LegacyIds::COAL, 0), "Coal")); + $this->register(new BakedPotato(new IID(Ids::BAKED_POTATO), "Baked Potato")); + $this->register(new Bamboo(new IID(Ids::BAMBOO), "Bamboo"), true); + $this->register(new Beetroot(new IID(Ids::BEETROOT), "Beetroot")); + $this->register(new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS), "Beetroot Seeds")); + $this->register(new BeetrootSoup(new IID(Ids::BEETROOT_SOUP), "Beetroot Soup")); + $this->register(new BlazeRod(new IID(Ids::BLAZE_ROD), "Blaze Rod")); + $this->register(new Book(new IID(Ids::BOOK), "Book")); + $this->register(new Bow(new IID(Ids::BOW), "Bow")); + $this->register(new Bowl(new IID(Ids::BOWL), "Bowl")); + $this->register(new Bread(new IID(Ids::BREAD), "Bread")); + $this->register(new Bucket(new IID(Ids::BUCKET), "Bucket")); + $this->register(new Carrot(new IID(Ids::CARROT), "Carrot")); + $this->register(new ChorusFruit(new IID(Ids::CHORUS_FRUIT), "Chorus Fruit")); + $this->register(new Clock(new IID(Ids::CLOCK), "Clock")); + $this->register(new Clownfish(new IID(Ids::CLOWNFISH), "Clownfish")); + $this->register(new Coal(new IID(Ids::COAL), "Coal")); - $this->register(new CoralFan(new ItemIdentifierFlattened(Ids::CORAL_FAN, LegacyIds::CORAL_FAN, 0, [LegacyIds::CORAL_FAN_DEAD]))); + $this->register(new CoralFan(new IID(Ids::CORAL_FAN))); - $this->register(new Coal(new IID(Ids::CHARCOAL, LegacyIds::COAL, 1), "Charcoal")); - $this->register(new CocoaBeans(new IID(Ids::COCOA_BEANS, LegacyIds::DYE, 3), "Cocoa Beans")); - $this->register(new Compass(new IID(Ids::COMPASS, LegacyIds::COMPASS, 0), "Compass")); - $this->register(new CookedChicken(new IID(Ids::COOKED_CHICKEN, LegacyIds::COOKED_CHICKEN, 0), "Cooked Chicken")); - $this->register(new CookedFish(new IID(Ids::COOKED_FISH, LegacyIds::COOKED_FISH, 0), "Cooked Fish")); - $this->register(new CookedMutton(new IID(Ids::COOKED_MUTTON, LegacyIds::COOKED_MUTTON, 0), "Cooked Mutton")); - $this->register(new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP, LegacyIds::COOKED_PORKCHOP, 0), "Cooked Porkchop")); - $this->register(new CookedRabbit(new IID(Ids::COOKED_RABBIT, LegacyIds::COOKED_RABBIT, 0), "Cooked Rabbit")); - $this->register(new CookedSalmon(new IID(Ids::COOKED_SALMON, LegacyIds::COOKED_SALMON, 0), "Cooked Salmon")); - $this->register(new Cookie(new IID(Ids::COOKIE, LegacyIds::COOKIE, 0), "Cookie")); - $this->register(new DriedKelp(new IID(Ids::DRIED_KELP, LegacyIds::DRIED_KELP, 0), "Dried Kelp")); - $this->register(new Egg(new IID(Ids::EGG, LegacyIds::EGG, 0), "Egg")); - $this->register(new EnderPearl(new IID(Ids::ENDER_PEARL, LegacyIds::ENDER_PEARL, 0), "Ender Pearl")); - $this->register(new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE, LegacyIds::EXPERIENCE_BOTTLE, 0), "Bottle o' Enchanting")); - $this->register(new Fertilizer(new IID(Ids::BONE_MEAL, LegacyIds::DYE, 15), "Bone Meal")); - $this->register(new FishingRod(new IID(Ids::FISHING_ROD, LegacyIds::FISHING_ROD, 0), "Fishing Rod")); - $this->register(new FlintSteel(new IID(Ids::FLINT_AND_STEEL, LegacyIds::FLINT_STEEL, 0), "Flint and Steel")); - $this->register(new GlassBottle(new IID(Ids::GLASS_BOTTLE, LegacyIds::GLASS_BOTTLE, 0), "Glass Bottle")); - $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE, LegacyIds::GOLDEN_APPLE, 0), "Golden Apple")); - $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE, LegacyIds::ENCHANTED_GOLDEN_APPLE, 0), "Enchanted Golden Apple")); - $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT, LegacyIds::GOLDEN_CARROT, 0), "Golden Carrot")); - $this->register(new Item(new IID(Ids::BLAZE_POWDER, LegacyIds::BLAZE_POWDER, 0), "Blaze Powder")); - $this->register(new Item(new IID(Ids::BLEACH, LegacyIds::BLEACH, 0), "Bleach")); //EDU - $this->register(new Item(new IID(Ids::BONE, LegacyIds::BONE, 0), "Bone")); - $this->register(new Item(new IID(Ids::BRICK, LegacyIds::BRICK, 0), "Brick")); - $this->register(new Item(new IID(Ids::POPPED_CHORUS_FRUIT, LegacyIds::CHORUS_FRUIT_POPPED, 0), "Popped Chorus Fruit")); - $this->register(new Item(new IID(Ids::CLAY, LegacyIds::CLAY_BALL, 0), "Clay")); - $this->register(new Item(new IID(Ids::CHEMICAL_SALT, LegacyIds::COMPOUND, CompoundTypeIds::SALT), "Salt")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_OXIDE), "Sodium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYDROXIDE), "Sodium Hydroxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_NITRATE), "Magnesium Nitrate")); - $this->register(new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE, LegacyIds::COMPOUND, CompoundTypeIds::IRON_SULPHIDE), "Iron Sulphide")); - $this->register(new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE, LegacyIds::COMPOUND, CompoundTypeIds::LITHIUM_HYDRIDE), "Lithium Hydride")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYDRIDE), "Sodium Hydride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE, LegacyIds::COMPOUND, CompoundTypeIds::CALCIUM_BROMIDE), "Calcium Bromide")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_OXIDE), "Magnesium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_ACETATE), "Sodium Acetate")); - $this->register(new Item(new IID(Ids::CHEMICAL_LUMINOL, LegacyIds::COMPOUND, CompoundTypeIds::LUMINOL), "Luminol")); - $this->register(new Item(new IID(Ids::CHEMICAL_CHARCOAL, LegacyIds::COMPOUND, CompoundTypeIds::CHARCOAL), "Charcoal")); //??? maybe bug - $this->register(new Item(new IID(Ids::CHEMICAL_SUGAR, LegacyIds::COMPOUND, CompoundTypeIds::SUGAR), "Sugar")); //??? maybe bug - $this->register(new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE, LegacyIds::COMPOUND, CompoundTypeIds::ALUMINIUM_OXIDE), "Aluminium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE, LegacyIds::COMPOUND, CompoundTypeIds::BORON_TRIOXIDE), "Boron Trioxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SOAP, LegacyIds::COMPOUND, CompoundTypeIds::SOAP), "Soap")); - $this->register(new Item(new IID(Ids::CHEMICAL_POLYETHYLENE, LegacyIds::COMPOUND, CompoundTypeIds::POLYETHYLENE), "Polyethylene")); - $this->register(new Item(new IID(Ids::CHEMICAL_RUBBISH, LegacyIds::COMPOUND, CompoundTypeIds::RUBBISH), "Rubbish")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS, LegacyIds::COMPOUND, CompoundTypeIds::MAGNESIUM_SALTS), "Magnesium Salts")); - $this->register(new Item(new IID(Ids::CHEMICAL_SULPHATE, LegacyIds::COMPOUND, CompoundTypeIds::SULPHATE), "Sulphate")); - $this->register(new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE, LegacyIds::COMPOUND, CompoundTypeIds::BARIUM_SULPHATE), "Barium Sulphate")); - $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::POTASSIUM_CHLORIDE), "Potassium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::MERCURIC_CHLORIDE), "Mercuric Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::CERIUM_CHLORIDE), "Cerium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::TUNGSTEN_CHLORIDE), "Tungsten Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE, LegacyIds::COMPOUND, CompoundTypeIds::CALCIUM_CHLORIDE), "Calcium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_WATER, LegacyIds::COMPOUND, CompoundTypeIds::WATER), "Water")); //??? - $this->register(new Item(new IID(Ids::CHEMICAL_GLUE, LegacyIds::COMPOUND, CompoundTypeIds::GLUE), "Glue")); - $this->register(new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE, LegacyIds::COMPOUND, CompoundTypeIds::HYPOCHLORITE), "Hypochlorite")); - $this->register(new Item(new IID(Ids::CHEMICAL_CRUDE_OIL, LegacyIds::COMPOUND, CompoundTypeIds::CRUDE_OIL), "Crude Oil")); - $this->register(new Item(new IID(Ids::CHEMICAL_LATEX, LegacyIds::COMPOUND, CompoundTypeIds::LATEX), "Latex")); - $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE, LegacyIds::COMPOUND, CompoundTypeIds::POTASSIUM_IODIDE), "Potassium Iodide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_FLUORIDE), "Sodium Fluoride")); - $this->register(new Item(new IID(Ids::CHEMICAL_BENZENE, LegacyIds::COMPOUND, CompoundTypeIds::BENZENE), "Benzene")); - $this->register(new Item(new IID(Ids::CHEMICAL_INK, LegacyIds::COMPOUND, CompoundTypeIds::INK), "Ink")); - $this->register(new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE, LegacyIds::COMPOUND, CompoundTypeIds::HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_AMMONIA, LegacyIds::COMPOUND, CompoundTypeIds::AMMONIA), "Ammonia")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE, LegacyIds::COMPOUND, CompoundTypeIds::SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); - $this->register(new Item(new IID(Ids::DIAMOND, LegacyIds::DIAMOND, 0), "Diamond")); - $this->register(new Item(new IID(Ids::DRAGON_BREATH, LegacyIds::DRAGON_BREATH, 0), "Dragon's Breath")); - $this->register(new Item(new IID(Ids::INK_SAC, LegacyIds::DYE, 0), "Ink Sac")); - $this->register(new Item(new IID(Ids::LAPIS_LAZULI, LegacyIds::DYE, 4), "Lapis Lazuli")); - $this->register(new Item(new IID(Ids::EMERALD, LegacyIds::EMERALD, 0), "Emerald")); - $this->register(new Item(new IID(Ids::FEATHER, LegacyIds::FEATHER, 0), "Feather")); - $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE, LegacyIds::FERMENTED_SPIDER_EYE, 0), "Fermented Spider Eye")); - $this->register(new Item(new IID(Ids::FLINT, LegacyIds::FLINT, 0), "Flint")); - $this->register(new Item(new IID(Ids::GHAST_TEAR, LegacyIds::GHAST_TEAR, 0), "Ghast Tear")); - $this->register(new Item(new IID(Ids::GLISTERING_MELON, LegacyIds::GLISTERING_MELON, 0), "Glistering Melon")); - $this->register(new Item(new IID(Ids::GLOWSTONE_DUST, LegacyIds::GLOWSTONE_DUST, 0), "Glowstone Dust")); - $this->register(new Item(new IID(Ids::GOLD_INGOT, LegacyIds::GOLD_INGOT, 0), "Gold Ingot")); - $this->register(new Item(new IID(Ids::GOLD_NUGGET, LegacyIds::GOLD_NUGGET, 0), "Gold Nugget")); - $this->register(new Item(new IID(Ids::GUNPOWDER, LegacyIds::GUNPOWDER, 0), "Gunpowder")); - $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA, LegacyIds::HEART_OF_THE_SEA, 0), "Heart of the Sea")); - $this->register(new Item(new IID(Ids::IRON_INGOT, LegacyIds::IRON_INGOT, 0), "Iron Ingot")); - $this->register(new Item(new IID(Ids::IRON_NUGGET, LegacyIds::IRON_NUGGET, 0), "Iron Nugget")); - $this->register(new Item(new IID(Ids::LEATHER, LegacyIds::LEATHER, 0), "Leather")); - $this->register(new Item(new IID(Ids::MAGMA_CREAM, LegacyIds::MAGMA_CREAM, 0), "Magma Cream")); - $this->register(new Item(new IID(Ids::NAUTILUS_SHELL, LegacyIds::NAUTILUS_SHELL, 0), "Nautilus Shell")); - $this->register(new Item(new IID(Ids::NETHER_BRICK, LegacyIds::NETHER_BRICK, 0), "Nether Brick")); - $this->register(new Item(new IID(Ids::NETHER_QUARTZ, LegacyIds::NETHER_QUARTZ, 0), "Nether Quartz")); - $this->register(new Item(new IID(Ids::NETHER_STAR, LegacyIds::NETHER_STAR, 0), "Nether Star")); - $this->register(new Item(new IID(Ids::PAPER, LegacyIds::PAPER, 0), "Paper")); - $this->register(new Item(new IID(Ids::PRISMARINE_CRYSTALS, LegacyIds::PRISMARINE_CRYSTALS, 0), "Prismarine Crystals")); - $this->register(new Item(new IID(Ids::PRISMARINE_SHARD, LegacyIds::PRISMARINE_SHARD, 0), "Prismarine Shard")); - $this->register(new Item(new IID(Ids::RABBIT_FOOT, LegacyIds::RABBIT_FOOT, 0), "Rabbit's Foot")); - $this->register(new Item(new IID(Ids::RABBIT_HIDE, LegacyIds::RABBIT_HIDE, 0), "Rabbit Hide")); - $this->register(new Item(new IID(Ids::SHULKER_SHELL, LegacyIds::SHULKER_SHELL, 0), "Shulker Shell")); - $this->register(new Item(new IID(Ids::SLIMEBALL, LegacyIds::SLIME_BALL, 0), "Slimeball")); - $this->register(new Item(new IID(Ids::SUGAR, LegacyIds::SUGAR, 0), "Sugar")); - $this->register(new Item(new IID(Ids::SCUTE, LegacyIds::TURTLE_SHELL_PIECE, 0), "Scute")); - $this->register(new Item(new IID(Ids::WHEAT, LegacyIds::WHEAT, 0), "Wheat")); + $this->register(new Coal(new IID(Ids::CHARCOAL), "Charcoal")); + $this->register(new CocoaBeans(new IID(Ids::COCOA_BEANS), "Cocoa Beans")); + $this->register(new Compass(new IID(Ids::COMPASS), "Compass")); + $this->register(new CookedChicken(new IID(Ids::COOKED_CHICKEN), "Cooked Chicken")); + $this->register(new CookedFish(new IID(Ids::COOKED_FISH), "Cooked Fish")); + $this->register(new CookedMutton(new IID(Ids::COOKED_MUTTON), "Cooked Mutton")); + $this->register(new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP), "Cooked Porkchop")); + $this->register(new CookedRabbit(new IID(Ids::COOKED_RABBIT), "Cooked Rabbit")); + $this->register(new CookedSalmon(new IID(Ids::COOKED_SALMON), "Cooked Salmon")); + $this->register(new Cookie(new IID(Ids::COOKIE), "Cookie")); + $this->register(new DriedKelp(new IID(Ids::DRIED_KELP), "Dried Kelp")); + $this->register(new Egg(new IID(Ids::EGG), "Egg")); + $this->register(new EnderPearl(new IID(Ids::ENDER_PEARL), "Ender Pearl")); + $this->register(new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); + $this->register(new Fertilizer(new IID(Ids::BONE_MEAL), "Bone Meal")); + $this->register(new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); + $this->register(new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); + $this->register(new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); + $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); + $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); + $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); + $this->register(new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); + $this->register(new Item(new IID(Ids::BLEACH), "Bleach")); //EDU + $this->register(new Item(new IID(Ids::BONE), "Bone")); + $this->register(new Item(new IID(Ids::BRICK), "Brick")); + $this->register(new Item(new IID(Ids::POPPED_CHORUS_FRUIT), "Popped Chorus Fruit")); + $this->register(new Item(new IID(Ids::CLAY), "Clay")); + $this->register(new Item(new IID(Ids::CHEMICAL_SALT), "Salt")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE), "Sodium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE), "Sodium Hydroxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE), "Magnesium Nitrate")); + $this->register(new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE), "Iron Sulphide")); + $this->register(new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE), "Lithium Hydride")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE), "Sodium Hydride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE), "Calcium Bromide")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE), "Magnesium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE), "Sodium Acetate")); + $this->register(new Item(new IID(Ids::CHEMICAL_LUMINOL), "Luminol")); + $this->register(new Item(new IID(Ids::CHEMICAL_CHARCOAL), "Charcoal")); //??? maybe bug + $this->register(new Item(new IID(Ids::CHEMICAL_SUGAR), "Sugar")); //??? maybe bug + $this->register(new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE), "Aluminium Oxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE), "Boron Trioxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SOAP), "Soap")); + $this->register(new Item(new IID(Ids::CHEMICAL_POLYETHYLENE), "Polyethylene")); + $this->register(new Item(new IID(Ids::CHEMICAL_RUBBISH), "Rubbish")); + $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS), "Magnesium Salts")); + $this->register(new Item(new IID(Ids::CHEMICAL_SULPHATE), "Sulphate")); + $this->register(new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE), "Barium Sulphate")); + $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE), "Potassium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE), "Mercuric Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE), "Cerium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE), "Tungsten Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE), "Calcium Chloride")); + $this->register(new Item(new IID(Ids::CHEMICAL_WATER), "Water")); //??? + $this->register(new Item(new IID(Ids::CHEMICAL_GLUE), "Glue")); + $this->register(new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE), "Hypochlorite")); + $this->register(new Item(new IID(Ids::CHEMICAL_CRUDE_OIL), "Crude Oil")); + $this->register(new Item(new IID(Ids::CHEMICAL_LATEX), "Latex")); + $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE), "Potassium Iodide")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE), "Sodium Fluoride")); + $this->register(new Item(new IID(Ids::CHEMICAL_BENZENE), "Benzene")); + $this->register(new Item(new IID(Ids::CHEMICAL_INK), "Ink")); + $this->register(new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); + $this->register(new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); + $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); + $this->register(new Item(new IID(Ids::DIAMOND), "Diamond")); + $this->register(new Item(new IID(Ids::DRAGON_BREATH), "Dragon's Breath")); + $this->register(new Item(new IID(Ids::INK_SAC), "Ink Sac")); + $this->register(new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); + $this->register(new Item(new IID(Ids::EMERALD), "Emerald")); + $this->register(new Item(new IID(Ids::FEATHER), "Feather")); + $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); + $this->register(new Item(new IID(Ids::FLINT), "Flint")); + $this->register(new Item(new IID(Ids::GHAST_TEAR), "Ghast Tear")); + $this->register(new Item(new IID(Ids::GLISTERING_MELON), "Glistering Melon")); + $this->register(new Item(new IID(Ids::GLOWSTONE_DUST), "Glowstone Dust")); + $this->register(new Item(new IID(Ids::GOLD_INGOT), "Gold Ingot")); + $this->register(new Item(new IID(Ids::GOLD_NUGGET), "Gold Nugget")); + $this->register(new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); + $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); + $this->register(new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); + $this->register(new Item(new IID(Ids::IRON_NUGGET), "Iron Nugget")); + $this->register(new Item(new IID(Ids::LEATHER), "Leather")); + $this->register(new Item(new IID(Ids::MAGMA_CREAM), "Magma Cream")); + $this->register(new Item(new IID(Ids::NAUTILUS_SHELL), "Nautilus Shell")); + $this->register(new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); + $this->register(new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); + $this->register(new Item(new IID(Ids::NETHER_STAR), "Nether Star")); + $this->register(new Item(new IID(Ids::PAPER), "Paper")); + $this->register(new Item(new IID(Ids::PRISMARINE_CRYSTALS), "Prismarine Crystals")); + $this->register(new Item(new IID(Ids::PRISMARINE_SHARD), "Prismarine Shard")); + $this->register(new Item(new IID(Ids::RABBIT_FOOT), "Rabbit's Foot")); + $this->register(new Item(new IID(Ids::RABBIT_HIDE), "Rabbit Hide")); + $this->register(new Item(new IID(Ids::SHULKER_SHELL), "Shulker Shell")); + $this->register(new Item(new IID(Ids::SLIMEBALL), "Slimeball")); + $this->register(new Item(new IID(Ids::SUGAR), "Sugar")); + $this->register(new Item(new IID(Ids::SCUTE), "Scute")); + $this->register(new Item(new IID(Ids::WHEAT), "Wheat")); //the meta values for buckets are intentionally hardcoded because block IDs will change in the future - $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET, LegacyIds::BUCKET, 8), "Water Bucket", Blocks::WATER())); - $this->register(new LiquidBucket(new IID(Ids::LAVA_BUCKET, LegacyIds::BUCKET, 10), "Lava Bucket", Blocks::LAVA())); - $this->register(new Melon(new IID(Ids::MELON, LegacyIds::MELON, 0), "Melon")); - $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS, LegacyIds::MELON_SEEDS, 0), "Melon Seeds")); - $this->register(new MilkBucket(new IID(Ids::MILK_BUCKET, LegacyIds::BUCKET, 1), "Milk Bucket")); - $this->register(new Minecart(new IID(Ids::MINECART, LegacyIds::MINECART, 0), "Minecart")); - $this->register(new MushroomStew(new IID(Ids::MUSHROOM_STEW, LegacyIds::MUSHROOM_STEW, 0), "Mushroom Stew")); - $this->register(new PaintingItem(new IID(Ids::PAINTING, LegacyIds::PAINTING, 0), "Painting")); - $this->register(new PoisonousPotato(new IID(Ids::POISONOUS_POTATO, LegacyIds::POISONOUS_POTATO, 0), "Poisonous Potato")); - $this->register(new Potato(new IID(Ids::POTATO, LegacyIds::POTATO, 0), "Potato")); - $this->register(new Pufferfish(new IID(Ids::PUFFERFISH, LegacyIds::PUFFERFISH, 0), "Pufferfish")); - $this->register(new PumpkinPie(new IID(Ids::PUMPKIN_PIE, LegacyIds::PUMPKIN_PIE, 0), "Pumpkin Pie")); - $this->register(new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS, LegacyIds::PUMPKIN_SEEDS, 0), "Pumpkin Seeds")); - $this->register(new RabbitStew(new IID(Ids::RABBIT_STEW, LegacyIds::RABBIT_STEW, 0), "Rabbit Stew")); - $this->register(new RawBeef(new IID(Ids::RAW_BEEF, LegacyIds::RAW_BEEF, 0), "Raw Beef")); - $this->register(new RawChicken(new IID(Ids::RAW_CHICKEN, LegacyIds::RAW_CHICKEN, 0), "Raw Chicken")); - $this->register(new RawFish(new IID(Ids::RAW_FISH, LegacyIds::RAW_FISH, 0), "Raw Fish")); - $this->register(new RawMutton(new IID(Ids::RAW_MUTTON, LegacyIds::RAW_MUTTON, 0), "Raw Mutton")); - $this->register(new RawPorkchop(new IID(Ids::RAW_PORKCHOP, LegacyIds::RAW_PORKCHOP, 0), "Raw Porkchop")); - $this->register(new RawRabbit(new IID(Ids::RAW_RABBIT, LegacyIds::RAW_RABBIT, 0), "Raw Rabbit")); - $this->register(new RawSalmon(new IID(Ids::RAW_SALMON, LegacyIds::RAW_SALMON, 0), "Raw Salmon")); - $this->register(new Record(new IID(Ids::RECORD_13, LegacyIds::RECORD_13, 0), RecordType::DISK_13(), "Record 13")); - $this->register(new Record(new IID(Ids::RECORD_CAT, LegacyIds::RECORD_CAT, 0), RecordType::DISK_CAT(), "Record Cat")); - $this->register(new Record(new IID(Ids::RECORD_BLOCKS, LegacyIds::RECORD_BLOCKS, 0), RecordType::DISK_BLOCKS(), "Record Blocks")); - $this->register(new Record(new IID(Ids::RECORD_CHIRP, LegacyIds::RECORD_CHIRP, 0), RecordType::DISK_CHIRP(), "Record Chirp")); - $this->register(new Record(new IID(Ids::RECORD_FAR, LegacyIds::RECORD_FAR, 0), RecordType::DISK_FAR(), "Record Far")); - $this->register(new Record(new IID(Ids::RECORD_MALL, LegacyIds::RECORD_MALL, 0), RecordType::DISK_MALL(), "Record Mall")); - $this->register(new Record(new IID(Ids::RECORD_MELLOHI, LegacyIds::RECORD_MELLOHI, 0), RecordType::DISK_MELLOHI(), "Record Mellohi")); - $this->register(new Record(new IID(Ids::RECORD_STAL, LegacyIds::RECORD_STAL, 0), RecordType::DISK_STAL(), "Record Stal")); - $this->register(new Record(new IID(Ids::RECORD_STRAD, LegacyIds::RECORD_STRAD, 0), RecordType::DISK_STRAD(), "Record Strad")); - $this->register(new Record(new IID(Ids::RECORD_WARD, LegacyIds::RECORD_WARD, 0), RecordType::DISK_WARD(), "Record Ward")); - $this->register(new Record(new IID(Ids::RECORD_11, LegacyIds::RECORD_11, 0), RecordType::DISK_11(), "Record 11")); - $this->register(new Record(new IID(Ids::RECORD_WAIT, LegacyIds::RECORD_WAIT, 0), RecordType::DISK_WAIT(), "Record Wait")); - $this->register(new Redstone(new IID(Ids::REDSTONE_DUST, LegacyIds::REDSTONE, 0), "Redstone")); - $this->register(new RottenFlesh(new IID(Ids::ROTTEN_FLESH, LegacyIds::ROTTEN_FLESH, 0), "Rotten Flesh")); - $this->register(new Shears(new IID(Ids::SHEARS, LegacyIds::SHEARS, 0), "Shears")); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN, LegacyIds::SIGN, 0), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN, LegacyIds::SPRUCE_SIGN, 0), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN, LegacyIds::BIRCH_SIGN, 0), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN, LegacyIds::JUNGLE_SIGN, 0), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN, LegacyIds::ACACIA_SIGN, 0), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN, LegacyIds::DARKOAK_SIGN, 0), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); - $this->register(new Snowball(new IID(Ids::SNOWBALL, LegacyIds::SNOWBALL, 0), "Snowball")); - $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE, LegacyIds::SPIDER_EYE, 0), "Spider Eye")); - $this->register(new Steak(new IID(Ids::STEAK, LegacyIds::STEAK, 0), "Steak")); - $this->register(new Stick(new IID(Ids::STICK, LegacyIds::STICK, 0), "Stick")); - $this->register(new StringItem(new IID(Ids::STRING, LegacyIds::STRING, 0), "String")); - $this->register(new SweetBerries(new IID(Ids::SWEET_BERRIES, LegacyIds::SWEET_BERRIES, 0), "Sweet Berries")); - $this->register(new Totem(new IID(Ids::TOTEM, LegacyIds::TOTEM, 0), "Totem of Undying")); - $this->register(new WheatSeeds(new IID(Ids::WHEAT_SEEDS, LegacyIds::WHEAT_SEEDS, 0), "Wheat Seeds")); - $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK, LegacyIds::WRITABLE_BOOK, 0), "Book & Quill")); - $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK, LegacyIds::WRITTEN_BOOK, 0), "Written Book")); + $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); + $this->register(new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); + $this->register(new Melon(new IID(Ids::MELON), "Melon")); + $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS), "Melon Seeds")); + $this->register(new MilkBucket(new IID(Ids::MILK_BUCKET), "Milk Bucket")); + $this->register(new Minecart(new IID(Ids::MINECART), "Minecart")); + $this->register(new MushroomStew(new IID(Ids::MUSHROOM_STEW), "Mushroom Stew")); + $this->register(new PaintingItem(new IID(Ids::PAINTING), "Painting")); + $this->register(new PoisonousPotato(new IID(Ids::POISONOUS_POTATO), "Poisonous Potato")); + $this->register(new Potato(new IID(Ids::POTATO), "Potato")); + $this->register(new Pufferfish(new IID(Ids::PUFFERFISH), "Pufferfish")); + $this->register(new PumpkinPie(new IID(Ids::PUMPKIN_PIE), "Pumpkin Pie")); + $this->register(new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS), "Pumpkin Seeds")); + $this->register(new RabbitStew(new IID(Ids::RABBIT_STEW), "Rabbit Stew")); + $this->register(new RawBeef(new IID(Ids::RAW_BEEF), "Raw Beef")); + $this->register(new RawChicken(new IID(Ids::RAW_CHICKEN), "Raw Chicken")); + $this->register(new RawFish(new IID(Ids::RAW_FISH), "Raw Fish")); + $this->register(new RawMutton(new IID(Ids::RAW_MUTTON), "Raw Mutton")); + $this->register(new RawPorkchop(new IID(Ids::RAW_PORKCHOP), "Raw Porkchop")); + $this->register(new RawRabbit(new IID(Ids::RAW_RABBIT), "Raw Rabbit")); + $this->register(new RawSalmon(new IID(Ids::RAW_SALMON), "Raw Salmon")); + $this->register(new Record(new IID(Ids::RECORD_13), RecordType::DISK_13(), "Record 13")); + $this->register(new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); + $this->register(new Record(new IID(Ids::RECORD_BLOCKS), RecordType::DISK_BLOCKS(), "Record Blocks")); + $this->register(new Record(new IID(Ids::RECORD_CHIRP), RecordType::DISK_CHIRP(), "Record Chirp")); + $this->register(new Record(new IID(Ids::RECORD_FAR), RecordType::DISK_FAR(), "Record Far")); + $this->register(new Record(new IID(Ids::RECORD_MALL), RecordType::DISK_MALL(), "Record Mall")); + $this->register(new Record(new IID(Ids::RECORD_MELLOHI), RecordType::DISK_MELLOHI(), "Record Mellohi")); + $this->register(new Record(new IID(Ids::RECORD_STAL), RecordType::DISK_STAL(), "Record Stal")); + $this->register(new Record(new IID(Ids::RECORD_STRAD), RecordType::DISK_STRAD(), "Record Strad")); + $this->register(new Record(new IID(Ids::RECORD_WARD), RecordType::DISK_WARD(), "Record Ward")); + $this->register(new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); + $this->register(new Record(new IID(Ids::RECORD_WAIT), RecordType::DISK_WAIT(), "Record Wait")); + $this->register(new Redstone(new IID(Ids::REDSTONE_DUST), "Redstone")); + $this->register(new RottenFlesh(new IID(Ids::ROTTEN_FLESH), "Rotten Flesh")); + $this->register(new Shears(new IID(Ids::SHEARS), "Shears")); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); + $this->register(new Snowball(new IID(Ids::SNOWBALL), "Snowball")); + $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); + $this->register(new Steak(new IID(Ids::STEAK), "Steak")); + $this->register(new Stick(new IID(Ids::STICK), "Stick")); + $this->register(new StringItem(new IID(Ids::STRING), "String")); + $this->register(new SweetBerries(new IID(Ids::SWEET_BERRIES), "Sweet Berries")); + $this->register(new Totem(new IID(Ids::TOTEM), "Totem of Undying")); + $this->register(new WheatSeeds(new IID(Ids::WHEAT_SEEDS), "Wheat Seeds")); + $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK), "Book & Quill")); + $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK), "Written Book")); //TODO: add interface to dye-colour objects - $this->register(new Dye(new IID(Ids::DYE, LegacyIds::DYE, 0), "Dye")); + $this->register(new Dye(new IID(Ids::DYE), "Dye")); $this->register(new Banner( - new IID(Ids::BANNER, LegacyIds::BANNER, 0), + new IID(Ids::BANNER), Blocks::BANNER(), Blocks::WALL_BANNER() )); - $this->register(new Potion(new IID(Ids::POTION, LegacyIds::POTION, 0), "Potion")); - $this->register(new SplashPotion(new IID(Ids::SPLASH_POTION, LegacyIds::SPLASH_POTION, 0), "Splash Potion")); + $this->register(new Potion(new IID(Ids::POTION), "Potion")); + $this->register(new SplashPotion(new IID(Ids::SPLASH_POTION), "Splash Potion")); foreach(TreeType::getAll() as $type){ //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency @@ -254,7 +251,7 @@ class ItemFactory{ TreeType::ACACIA() => Ids::ACACIA_BOAT, TreeType::DARK_OAK() => Ids::DARK_OAK_BOAT, default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) - }, LegacyIds::BOAT, $type->getMagicNumber()), $type->getDisplayName() . " Boat", $type)); + }), $type->getDisplayName() . " Boat", $type)); } //region --- auto-generated TODOs --- @@ -302,17 +299,17 @@ class ItemFactory{ private function registerSpawnEggs() : void{ //TODO: the meta values should probably be hardcoded; they won't change, but the EntityLegacyIds might - $this->register(new class(new IID(Ids::ZOMBIE_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::ZOMBIE), "Zombie Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::ZOMBIE_SPAWN_EGG), "Zombie Spawn Egg") extends SpawnEgg{ protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Zombie(Location::fromObject($pos, $world, $yaw, $pitch)); } }); - $this->register(new class(new IID(Ids::SQUID_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::SQUID), "Squid Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::SQUID_SPAWN_EGG), "Squid Spawn Egg") extends SpawnEgg{ public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Squid(Location::fromObject($pos, $world, $yaw, $pitch)); } }); - $this->register(new class(new IID(Ids::VILLAGER_SPAWN_EGG, LegacyIds::SPAWN_EGG, EntityLegacyIds::VILLAGER), "Villager Spawn Egg") extends SpawnEgg{ + $this->register(new class(new IID(Ids::VILLAGER_SPAWN_EGG), "Villager Spawn Egg") extends SpawnEgg{ public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ return new Villager(Location::fromObject($pos, $world, $yaw, $pitch)); } @@ -320,54 +317,54 @@ class ItemFactory{ } private function registerTierToolItems() : void{ - $this->register(new Axe(new IID(Ids::DIAMOND_AXE, LegacyIds::DIAMOND_AXE, 0), "Diamond Axe", ToolTier::DIAMOND())); - $this->register(new Axe(new IID(Ids::GOLDEN_AXE, LegacyIds::GOLDEN_AXE, 0), "Golden Axe", ToolTier::GOLD())); - $this->register(new Axe(new IID(Ids::IRON_AXE, LegacyIds::IRON_AXE, 0), "Iron Axe", ToolTier::IRON())); - $this->register(new Axe(new IID(Ids::STONE_AXE, LegacyIds::STONE_AXE, 0), "Stone Axe", ToolTier::STONE())); - $this->register(new Axe(new IID(Ids::WOODEN_AXE, LegacyIds::WOODEN_AXE, 0), "Wooden Axe", ToolTier::WOOD())); - $this->register(new Hoe(new IID(Ids::DIAMOND_HOE, LegacyIds::DIAMOND_HOE, 0), "Diamond Hoe", ToolTier::DIAMOND())); - $this->register(new Hoe(new IID(Ids::GOLDEN_HOE, LegacyIds::GOLDEN_HOE, 0), "Golden Hoe", ToolTier::GOLD())); - $this->register(new Hoe(new IID(Ids::IRON_HOE, LegacyIds::IRON_HOE, 0), "Iron Hoe", ToolTier::IRON())); - $this->register(new Hoe(new IID(Ids::STONE_HOE, LegacyIds::STONE_HOE, 0), "Stone Hoe", ToolTier::STONE())); - $this->register(new Hoe(new IID(Ids::WOODEN_HOE, LegacyIds::WOODEN_HOE, 0), "Wooden Hoe", ToolTier::WOOD())); - $this->register(new Pickaxe(new IID(Ids::DIAMOND_PICKAXE, LegacyIds::DIAMOND_PICKAXE, 0), "Diamond Pickaxe", ToolTier::DIAMOND())); - $this->register(new Pickaxe(new IID(Ids::GOLDEN_PICKAXE, LegacyIds::GOLDEN_PICKAXE, 0), "Golden Pickaxe", ToolTier::GOLD())); - $this->register(new Pickaxe(new IID(Ids::IRON_PICKAXE, LegacyIds::IRON_PICKAXE, 0), "Iron Pickaxe", ToolTier::IRON())); - $this->register(new Pickaxe(new IID(Ids::STONE_PICKAXE, LegacyIds::STONE_PICKAXE, 0), "Stone Pickaxe", ToolTier::STONE())); - $this->register(new Pickaxe(new IID(Ids::WOODEN_PICKAXE, LegacyIds::WOODEN_PICKAXE, 0), "Wooden Pickaxe", ToolTier::WOOD())); - $this->register(new Shovel(new IID(Ids::DIAMOND_SHOVEL, LegacyIds::DIAMOND_SHOVEL, 0), "Diamond Shovel", ToolTier::DIAMOND())); - $this->register(new Shovel(new IID(Ids::GOLDEN_SHOVEL, LegacyIds::GOLDEN_SHOVEL, 0), "Golden Shovel", ToolTier::GOLD())); - $this->register(new Shovel(new IID(Ids::IRON_SHOVEL, LegacyIds::IRON_SHOVEL, 0), "Iron Shovel", ToolTier::IRON())); - $this->register(new Shovel(new IID(Ids::STONE_SHOVEL, LegacyIds::STONE_SHOVEL, 0), "Stone Shovel", ToolTier::STONE())); - $this->register(new Shovel(new IID(Ids::WOODEN_SHOVEL, LegacyIds::WOODEN_SHOVEL, 0), "Wooden Shovel", ToolTier::WOOD())); - $this->register(new Sword(new IID(Ids::DIAMOND_SWORD, LegacyIds::DIAMOND_SWORD, 0), "Diamond Sword", ToolTier::DIAMOND())); - $this->register(new Sword(new IID(Ids::GOLDEN_SWORD, LegacyIds::GOLDEN_SWORD, 0), "Golden Sword", ToolTier::GOLD())); - $this->register(new Sword(new IID(Ids::IRON_SWORD, LegacyIds::IRON_SWORD, 0), "Iron Sword", ToolTier::IRON())); - $this->register(new Sword(new IID(Ids::STONE_SWORD, LegacyIds::STONE_SWORD, 0), "Stone Sword", ToolTier::STONE())); - $this->register(new Sword(new IID(Ids::WOODEN_SWORD, LegacyIds::WOODEN_SWORD, 0), "Wooden Sword", ToolTier::WOOD())); + $this->register(new Axe(new IID(Ids::DIAMOND_AXE), "Diamond Axe", ToolTier::DIAMOND())); + $this->register(new Axe(new IID(Ids::GOLDEN_AXE), "Golden Axe", ToolTier::GOLD())); + $this->register(new Axe(new IID(Ids::IRON_AXE), "Iron Axe", ToolTier::IRON())); + $this->register(new Axe(new IID(Ids::STONE_AXE), "Stone Axe", ToolTier::STONE())); + $this->register(new Axe(new IID(Ids::WOODEN_AXE), "Wooden Axe", ToolTier::WOOD())); + $this->register(new Hoe(new IID(Ids::DIAMOND_HOE), "Diamond Hoe", ToolTier::DIAMOND())); + $this->register(new Hoe(new IID(Ids::GOLDEN_HOE), "Golden Hoe", ToolTier::GOLD())); + $this->register(new Hoe(new IID(Ids::IRON_HOE), "Iron Hoe", ToolTier::IRON())); + $this->register(new Hoe(new IID(Ids::STONE_HOE), "Stone Hoe", ToolTier::STONE())); + $this->register(new Hoe(new IID(Ids::WOODEN_HOE), "Wooden Hoe", ToolTier::WOOD())); + $this->register(new Pickaxe(new IID(Ids::DIAMOND_PICKAXE), "Diamond Pickaxe", ToolTier::DIAMOND())); + $this->register(new Pickaxe(new IID(Ids::GOLDEN_PICKAXE), "Golden Pickaxe", ToolTier::GOLD())); + $this->register(new Pickaxe(new IID(Ids::IRON_PICKAXE), "Iron Pickaxe", ToolTier::IRON())); + $this->register(new Pickaxe(new IID(Ids::STONE_PICKAXE), "Stone Pickaxe", ToolTier::STONE())); + $this->register(new Pickaxe(new IID(Ids::WOODEN_PICKAXE), "Wooden Pickaxe", ToolTier::WOOD())); + $this->register(new Shovel(new IID(Ids::DIAMOND_SHOVEL), "Diamond Shovel", ToolTier::DIAMOND())); + $this->register(new Shovel(new IID(Ids::GOLDEN_SHOVEL), "Golden Shovel", ToolTier::GOLD())); + $this->register(new Shovel(new IID(Ids::IRON_SHOVEL), "Iron Shovel", ToolTier::IRON())); + $this->register(new Shovel(new IID(Ids::STONE_SHOVEL), "Stone Shovel", ToolTier::STONE())); + $this->register(new Shovel(new IID(Ids::WOODEN_SHOVEL), "Wooden Shovel", ToolTier::WOOD())); + $this->register(new Sword(new IID(Ids::DIAMOND_SWORD), "Diamond Sword", ToolTier::DIAMOND())); + $this->register(new Sword(new IID(Ids::GOLDEN_SWORD), "Golden Sword", ToolTier::GOLD())); + $this->register(new Sword(new IID(Ids::IRON_SWORD), "Iron Sword", ToolTier::IRON())); + $this->register(new Sword(new IID(Ids::STONE_SWORD), "Stone Sword", ToolTier::STONE())); + $this->register(new Sword(new IID(Ids::WOODEN_SWORD), "Wooden Sword", ToolTier::WOOD())); } private function registerArmorItems() : void{ - $this->register(new Armor(new IID(Ids::CHAINMAIL_BOOTS, LegacyIds::CHAIN_BOOTS, 0), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::DIAMOND_BOOTS, LegacyIds::DIAMOND_BOOTS, 0), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::GOLDEN_BOOTS, LegacyIds::GOLDEN_BOOTS, 0), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::IRON_BOOTS, LegacyIds::IRON_BOOTS, 0), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::LEATHER_BOOTS, LegacyIds::LEATHER_BOOTS, 0), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE, LegacyIds::CHAIN_CHESTPLATE, 0), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::DIAMOND_CHESTPLATE, LegacyIds::DIAMOND_CHESTPLATE, 0), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::GOLDEN_CHESTPLATE, LegacyIds::GOLDEN_CHESTPLATE, 0), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::IRON_CHESTPLATE, LegacyIds::IRON_CHESTPLATE, 0), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::LEATHER_TUNIC, LegacyIds::LEATHER_CHESTPLATE, 0), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_HELMET, LegacyIds::CHAIN_HELMET, 0), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::DIAMOND_HELMET, LegacyIds::DIAMOND_HELMET, 0), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::GOLDEN_HELMET, LegacyIds::GOLDEN_HELMET, 0), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::IRON_HELMET, LegacyIds::IRON_HELMET, 0), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::LEATHER_CAP, LegacyIds::LEATHER_HELMET, 0), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_LEGGINGS, LegacyIds::CHAIN_LEGGINGS, 0), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::DIAMOND_LEGGINGS, LegacyIds::DIAMOND_LEGGINGS, 0), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::GOLDEN_LEGGINGS, LegacyIds::GOLDEN_LEGGINGS, 0), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::IRON_LEGGINGS, LegacyIds::IRON_LEGGINGS, 0), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::LEATHER_PANTS, LegacyIds::LEATHER_LEGGINGS, 0), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_BOOTS), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::GOLDEN_BOOTS), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::IRON_BOOTS), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::LEATHER_BOOTS), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::GOLDEN_CHESTPLATE), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::IRON_CHESTPLATE), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::LEATHER_TUNIC), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_HELMET), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::GOLDEN_HELMET), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::GOLDEN_LEGGINGS), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::IRON_LEGGINGS), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(new IID(Ids::LEATHER_PANTS), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); } /** diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index cf9729379..5ddf652bd 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -26,23 +26,9 @@ namespace pocketmine\item; use pocketmine\block\Block; class ItemIdentifier{ - private int $legacyId; - private int $legacyMeta; - public function __construct( - private int $typeId, - int $legacyId, - int $legacyMeta - ){ - if($legacyId < -0x8000 || $legacyId > 0x7fff){ //signed short range - throw new \InvalidArgumentException("ID must be in range " . -0x8000 . " - " . 0x7fff); - } - if($legacyMeta < 0 || $legacyMeta > 0x7ffe){ - throw new \InvalidArgumentException("Meta must be in range 0 - " . 0x7ffe); - } - $this->legacyId = $legacyId; - $this->legacyMeta = $legacyMeta; - } + private int $typeId + ){} public static function fromBlock(Block $block) : self{ //negative item type IDs are treated as block IDs @@ -50,16 +36,8 @@ class ItemIdentifier{ //TODO: this isn't vanilla-compliant, but it'll do for now - we only use the "legacy" item ID/meta for full type //indexing right now, because item type IDs aren't granular enough //this should be removed once that's addressed - return new self(-$block->getTypeId(), -$block->getTypeId(), $block->computeTypeData()); + return new self(-$block->getTypeId()); } public function getTypeId() : int{ return $this->typeId; } - - public function getLegacyId() : int{ - return $this->legacyId; - } - - public function getLegacyMeta() : int{ - return $this->legacyMeta; - } } diff --git a/src/item/ItemIdentifierFlattened.php b/src/item/ItemIdentifierFlattened.php deleted file mode 100644 index d137ee994..000000000 --- a/src/item/ItemIdentifierFlattened.php +++ /dev/null @@ -1,41 +0,0 @@ -additionalLegacyIds; } - - /** @return int[] */ - public function getAllLegacyIds() : array{ - return [$this->getLegacyId(), ...$this->additionalLegacyIds]; - } -} diff --git a/src/item/ItemIds.php b/src/item/ItemIds.php deleted file mode 100644 index 7790a1d7a..000000000 --- a/src/item/ItemIds.php +++ /dev/null @@ -1,736 +0,0 @@ -toId($this->potionType); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writePotionType($w, $this->potionType); } public function getType() : PotionType{ return $this->potionType; } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index 39db4d6d7..ab1bab4d3 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\data\bedrock\PotionTypeIdMap; +use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\entity\Location; use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity; use pocketmine\entity\projectile\Throwable; @@ -38,8 +39,8 @@ class SplashPotion extends ProjectileItem{ parent::__construct($identifier, $name); } - public function getMeta() : int{ - return PotionTypeIdMap::getInstance()->toId($this->potionType); + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writePotionType($w, $this->potionType); } public function getType() : PotionType{ return $this->potionType; } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 72b883104..179fd8e8e 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -54,12 +54,12 @@ use pocketmine\player\Player; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use function get_class; +use function morton2d_encode; class TypeConverter{ use SingletonTrait; private const PM_ID_TAG = "___Id___"; - private const PM_META_TAG = "___Meta___"; private const RECIPE_INPUT_WILDCARD_META = 0x7fff; @@ -176,8 +176,7 @@ class TypeConverter{ if($nbt === null){ $nbt = new CompoundTag(); } - $nbt->setInt(self::PM_ID_TAG, $itemStack->getId()); - $nbt->setInt(self::PM_META_TAG, $itemStack->getMeta()); + $nbt->setInt(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeTypeData())); }else{ [$id, $meta, $blockRuntimeId] = $idMeta; } diff --git a/src/player/Player.php b/src/player/Player.php index f2b8f1486..7c189ae57 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -142,6 +142,7 @@ use function max; use function mb_strlen; use function microtime; use function min; +use function morton2d_encode; use function preg_match; use function spl_object_id; use function sqrt; @@ -641,7 +642,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function getItemCooldownExpiry(Item $item) : int{ $this->checkItemCooldowns(); - return $this->usedItemsCooldown[$item->getId()] ?? 0; + return $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())] ?? 0; } /** @@ -649,7 +650,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function hasItemCooldown(Item $item) : bool{ $this->checkItemCooldowns(); - return isset($this->usedItemsCooldown[$item->getId()]); + return isset($this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())]); } /** @@ -658,7 +659,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ public function resetItemCooldown(Item $item, ?int $ticks = null) : void{ $ticks = $ticks ?? $item->getCooldownTicks(); if($ticks > 0){ - $this->usedItemsCooldown[$item->getId()] = $this->server->getTick() + $ticks; + $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())] = $this->server->getTick() + $ticks; } } diff --git a/tests/phpunit/data/bedrock/CoralTypeIdMapTest.php b/tests/phpunit/data/bedrock/CoralTypeIdMapTest.php deleted file mode 100644 index edd686cd0..000000000 --- a/tests/phpunit/data/bedrock/CoralTypeIdMapTest.php +++ /dev/null @@ -1,38 +0,0 @@ -toId($type); - $type2 = CoralTypeIdMap::getInstance()->fromId($id); - self::assertTrue($type2 !== null && $type->equals($type2)); - } - } -} From 86d2ecfaff267b963bce4d37376c061257da3f1e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 15:13:38 +0100 Subject: [PATCH 269/692] Added runtime enum serializer generation script --- build/generate-runtime-enum-serializers.php | 212 ++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 build/generate-runtime-enum-serializers.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php new file mode 100644 index 000000000..32429bad2 --- /dev/null +++ b/build/generate-runtime-enum-serializers.php @@ -0,0 +1,212 @@ + $memberNames + * + * @return string[] + * @phpstan-return list + */ +function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string &$functionName) : array{ + $bits = getBitsRequired($memberNames); + $lines = []; + + $functionName = "write$virtualTypeName"; + $lines[] = "public static function $functionName(RuntimeDataWriter \$w, \\$nativeTypeName \$value) : void{"; + $lines[] = "\t\$w->writeInt($bits, match(\$value){"; + + foreach($memberNames as $key => $memberName){ + $lines[] = "\t\t$memberName => $key,"; + } + $lines[] = "\t\tdefault => throw new \pocketmine\utils\AssumptionFailedError(\"All $virtualTypeName cases should be covered\")"; + $lines[] = "\t});"; + $lines[] = "}"; + + return $lines; +} + +/** + * @param string[] $memberNames + * @phpstan-param list $memberNames + * + * @return string[] + * @phpstan-return list + */ +function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string &$functionName) : array{ + $bits = getBitsRequired($memberNames); + $lines = []; + + $functionName = "read$virtualTypeName"; + $lines[] = "public static function $functionName(RuntimeDataReader \$r) : \\$nativeTypeName{"; + $lines[] = "\treturn match(\$r->readInt($bits)){"; + + foreach($memberNames as $key => $memberName){ + $lines[] = "\t\t$key => $memberName,"; + } + $lines[] = "\t\tdefault => throw new InvalidSerializedRuntimeDataException(\"Invalid serialized value for $virtualTypeName\")"; + $lines[] = "\t};"; + $lines[] = "}"; + + return $lines; +} + +/** + * @param mixed[] $members + */ +function getBitsRequired(array $members) : int{ + return (int) ceil(log(count($members), 2)); +} + +/** + * @param object[] $members + * @phpstan-param array $members + * + * @return string[] + * @phpstan-return list + */ +function stringifyEnumMembers(array $members, string $enumClass) : array{ + ksort($members, SORT_STRING); + return array_map(fn(string $enumCaseName) => "\\$enumClass::$enumCaseName()", array_keys($members)); +} + +/** + * @param object[] $enumMembers + * @phpstan-param array $enumMembers + * + * @return string[] + * @phpstan-return list + */ +function buildEnumWriterFunc(array $enumMembers, string &$functionName) : array{ + $reflect = new \ReflectionClass($enumMembers[array_key_first($enumMembers)]); + return buildWriterFunc( + $reflect->getShortName(), + $reflect->getName(), + stringifyEnumMembers($enumMembers, $reflect->getName()), + $functionName + ); +} + +/** + * @param object[] $enumMembers + * @phpstan-param array $enumMembers + * + * @return string[] + * @phpstan-return list + */ +function buildEnumReaderFunc(array $enumMembers, string &$functionName) : array{ + if(count($enumMembers) === 0){ + throw new \InvalidArgumentException("Enum members cannot be empty"); + } + $reflect = new \ReflectionClass($enumMembers[array_key_first($enumMembers)]); + return buildReaderFunc( + $reflect->getShortName(), + $reflect->getName(), + stringifyEnumMembers($enumMembers, $reflect->getName()), + $functionName + ); +} + +$enumsUsed = [ + BellAttachmentType::getAll(), + CoralType::getAll(), + DyeColor::getAll(), + LeverFacing::getAll(), + MushroomBlockType::getAll(), + SkullType::getAll(), + SlabType::getAll(), + PotionType::getAll() +]; + +$readerFuncs = []; +$writerFuncs = []; +$functionName = ""; + +foreach($enumsUsed as $enumMembers){ + $writerF = buildEnumWriterFunc($enumMembers, $functionName); + /** @var string $functionName */ + $writerFuncs[$functionName] = $writerF; + $readerF = buildEnumReaderFunc($enumMembers, $functionName); + /** @var string $functionName */ + $readerFuncs[$functionName] = $readerF; +} + +/** + * @param string[][] $functions + * @phpstan-param array> $functions + */ +function printFunctions(array $functions, string $className) : void{ + ksort($functions, SORT_STRING); + + ob_start(); + + echo <<<'HEADER' + "\t" . implode("\n\t", $functionLines), $functions)); + echo "\n\n}\n"; + + file_put_contents(dirname(__DIR__) . '/src/data/runtime/' . $className . '.php', ob_get_clean()); +} + +printFunctions($writerFuncs, "RuntimeEnumSerializer"); +printFunctions($readerFuncs, "RuntimeEnumDeserializer"); + +echo "Done. Don't forget to run CS fixup after generating code.\n"; From d09c45e362f5304b9412de9ab1dcc91b5dd1436f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 15:15:02 +0100 Subject: [PATCH 270/692] Verify up-to-dateness of RuntimeEnum serializers on Actions --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 63c52921a..308e22fa4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -180,6 +180,9 @@ jobs: - name: Regenerate KnownTranslation APIs run: php build/generate-known-translation-apis.php + - name: Regenerate RuntimeEnum(De)serializer + run: php build/generate-runtime-enum-serializers.php + - name: Verify code is unchanged run: | git diff From 51ce358734e2d2d7ca2cbf1415ae3d4f568cc614 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 15:40:24 +0100 Subject: [PATCH 271/692] Add header to generator for now --- build/generate-runtime-enum-serializers.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 32429bad2..f3bd39abe 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -188,6 +188,25 @@ function printFunctions(array $functions, string $className) : void{ echo <<<'HEADER' Date: Tue, 5 Jul 2022 16:18:54 +0100 Subject: [PATCH 272/692] Implemented crimson, warped and mangrove signs --- src/block/BaseSign.php | 7 +++- src/block/BlockFactory.php | 8 ++--- src/block/BlockLegacyIdHelper.php | 33 +++++++++++++++---- src/block/BlockTypeIds.php | 8 ++++- src/block/VanillaBlocks.php | 12 +++++++ .../BlockObjectToBlockStateSerializer.php | 6 ++++ .../BlockStateToBlockObjectDeserializer.php | 6 ++++ src/data/bedrock/item/ItemDeserializer.php | 5 +-- src/data/bedrock/item/ItemSerializer.php | 3 ++ src/item/ItemFactory.php | 3 ++ src/item/ItemTypeIds.php | 5 ++- src/item/StringToItemParser.php | 3 ++ src/item/VanillaItems.php | 6 ++++ 13 files changed, 89 insertions(+), 16 deletions(-) diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index 415e45977..3061030a8 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -26,6 +26,8 @@ namespace pocketmine\block; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\SignText; use pocketmine\block\utils\SupportType; +use pocketmine\block\utils\WoodType; +use pocketmine\block\utils\WoodTypeTrait; use pocketmine\event\block\SignChangeEvent; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -38,6 +40,8 @@ use function assert; use function strlen; abstract class BaseSign extends Transparent{ + use WoodTypeTrait; + protected SignText $text; protected ?int $editorEntityRuntimeId = null; @@ -47,7 +51,8 @@ abstract class BaseSign extends Transparent{ /** * @param \Closure() : Item $asItemCallback */ - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, \Closure $asItemCallback){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, WoodType $woodType, \Closure $asItemCallback){ + $this->woodType = $woodType; parent::__construct($idInfo, $name, $breakInfo); $this->text = new SignText(); $this->asItemCallback = $asItemCallback; diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 1bc685686..d3a5817bf 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -461,10 +461,6 @@ class BlockFactory{ $name = $treeType->getDisplayName(); $this->register(new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - - [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($treeType); - $this->register(new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $signAsItem)); - $this->register(new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $signAsItem)); } foreach(WoodType::getAll() as $woodType){ @@ -484,6 +480,10 @@ class BlockFactory{ $this->register(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); + + [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($woodType); + $this->register(new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $woodType, $signAsItem)); + $this->register(new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $woodType, $signAsItem)); } $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 57386510f..0a1b74538 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -136,44 +136,63 @@ final class BlockLegacyIdHelper{ * @return BID[]|\Closure[] * @phpstan-return array{BID, BID, \Closure() : \pocketmine\item\Item} */ - public static function getWoodenSignInfo(TreeType $treeType) : array{ + public static function getWoodenSignInfo(WoodType $treeType) : array{ switch($treeType->id()){ - case TreeType::OAK()->id(): + case WoodType::OAK()->id(): return [ new BID(Ids::OAK_SIGN, TileSign::class), new BID(Ids::OAK_WALL_SIGN, TileSign::class), fn() => VanillaItems::OAK_SIGN() ]; - case TreeType::SPRUCE()->id(): + case WoodType::SPRUCE()->id(): return [ new BID(Ids::SPRUCE_SIGN, TileSign::class), new BID(Ids::SPRUCE_WALL_SIGN, TileSign::class), fn() => VanillaItems::SPRUCE_SIGN() ]; - case TreeType::BIRCH()->id(): + case WoodType::BIRCH()->id(): return [ new BID(Ids::BIRCH_SIGN, TileSign::class), new BID(Ids::BIRCH_WALL_SIGN, TileSign::class), fn() => VanillaItems::BIRCH_SIGN() ]; - case TreeType::JUNGLE()->id(): + case WoodType::JUNGLE()->id(): return [ new BID(Ids::JUNGLE_SIGN, TileSign::class), new BID(Ids::JUNGLE_WALL_SIGN, TileSign::class), fn() => VanillaItems::JUNGLE_SIGN() ]; - case TreeType::ACACIA()->id(): + case WoodType::ACACIA()->id(): return [ new BID(Ids::ACACIA_SIGN, TileSign::class), new BID(Ids::ACACIA_WALL_SIGN, TileSign::class), fn() => VanillaItems::ACACIA_SIGN() ]; - case TreeType::DARK_OAK()->id(): + case WoodType::DARK_OAK()->id(): return [ new BID(Ids::DARK_OAK_SIGN, TileSign::class), new BID(Ids::DARK_OAK_WALL_SIGN, TileSign::class), fn() => VanillaItems::DARK_OAK_SIGN() ]; + case WoodType::MANGROVE()->id(): + return [ + new BID(Ids::MANGROVE_SIGN, TileSign::class), + new BID(Ids::MANGROVE_WALL_SIGN, TileSign::class), + fn() => VanillaItems::MANGROVE_SIGN() + ]; + case WoodType::CRIMSON()->id(): + return [ + new BID(Ids::CRIMSON_SIGN, TileSign::class), + new BID(Ids::CRIMSON_WALL_SIGN, TileSign::class), + fn() => VanillaItems::CRIMSON_SIGN() + ]; + case WoodType::WARPED()->id(): + return [ + new BID(Ids::WARPED_SIGN, TileSign::class), + new BID(Ids::WARPED_WALL_SIGN, TileSign::class), + fn() => VanillaItems::WARPED_SIGN() + ]; + } throw new AssumptionFailedError("Switch should cover all wood types"); } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 4a1822944..2f6735d66 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -650,6 +650,12 @@ final class BlockTypeIds{ public const MANGROVE_STAIRS = 10625; public const CRIMSON_STAIRS = 10626; public const WARPED_STAIRS = 10627; + public const MANGROVE_SIGN = 10628; + public const CRIMSON_SIGN = 10629; + public const WARPED_SIGN = 10630; + public const MANGROVE_WALL_SIGN = 10631; + public const CRIMSON_WALL_SIGN = 10632; + public const WARPED_WALL_SIGN = 10633; - public const FIRST_UNUSED_BLOCK_ID = 10628; + public const FIRST_UNUSED_BLOCK_ID = 10634; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index a851ccc39..2f5c52cca 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -150,10 +150,12 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Wood CRIMSON_HYPHAE() * @method static Planks CRIMSON_PLANKS() * @method static WoodenPressurePlate CRIMSON_PRESSURE_PLATE() + * @method static FloorSign CRIMSON_SIGN() * @method static WoodenSlab CRIMSON_SLAB() * @method static WoodenStairs CRIMSON_STAIRS() * @method static Wood CRIMSON_STEM() * @method static WoodenTrapdoor CRIMSON_TRAPDOOR() + * @method static WallSign CRIMSON_WALL_SIGN() * @method static Opaque CUT_RED_SANDSTONE() * @method static Slab CUT_RED_SANDSTONE_SLAB() * @method static Opaque CUT_SANDSTONE() @@ -415,9 +417,11 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Wood MANGROVE_LOG() * @method static Planks MANGROVE_PLANKS() * @method static WoodenPressurePlate MANGROVE_PRESSURE_PLATE() + * @method static FloorSign MANGROVE_SIGN() * @method static WoodenSlab MANGROVE_SLAB() * @method static WoodenStairs MANGROVE_STAIRS() * @method static WoodenTrapdoor MANGROVE_TRAPDOOR() + * @method static WallSign MANGROVE_WALL_SIGN() * @method static Wood MANGROVE_WOOD() * @method static ChemistryTable MATERIAL_REDUCER() * @method static Melon MELON() @@ -617,10 +621,12 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Wood WARPED_HYPHAE() * @method static Planks WARPED_PLANKS() * @method static WoodenPressurePlate WARPED_PRESSURE_PLATE() + * @method static FloorSign WARPED_SIGN() * @method static WoodenSlab WARPED_SLAB() * @method static WoodenStairs WARPED_STAIRS() * @method static Wood WARPED_STEM() * @method static WoodenTrapdoor WARPED_TRAPDOOR() + * @method static WallSign WARPED_WALL_SIGN() * @method static Water WATER() * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() @@ -769,10 +775,12 @@ final class VanillaBlocks{ self::register("crimson_hyphae", $factory->fromTypeId(Ids::CRIMSON_HYPHAE)); self::register("crimson_planks", $factory->fromTypeId(Ids::CRIMSON_PLANKS)); self::register("crimson_pressure_plate", $factory->fromTypeId(Ids::CRIMSON_PRESSURE_PLATE)); + self::register("crimson_sign", $factory->fromTypeId(Ids::CRIMSON_SIGN)); self::register("crimson_slab", $factory->fromTypeId(Ids::CRIMSON_SLAB)); self::register("crimson_stairs", $factory->fromTypeId(Ids::CRIMSON_STAIRS)); self::register("crimson_stem", $factory->fromTypeId(Ids::CRIMSON_STEM)); self::register("crimson_trapdoor", $factory->fromTypeId(Ids::CRIMSON_TRAPDOOR)); + self::register("crimson_wall_sign", $factory->fromTypeId(Ids::CRIMSON_WALL_SIGN)); self::register("cut_red_sandstone", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE)); self::register("cut_red_sandstone_slab", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE_SLAB)); self::register("cut_sandstone", $factory->fromTypeId(Ids::CUT_SANDSTONE)); @@ -1034,9 +1042,11 @@ final class VanillaBlocks{ self::register("mangrove_log", $factory->fromTypeId(Ids::MANGROVE_LOG)); self::register("mangrove_planks", $factory->fromTypeId(Ids::MANGROVE_PLANKS)); self::register("mangrove_pressure_plate", $factory->fromTypeId(Ids::MANGROVE_PRESSURE_PLATE)); + self::register("mangrove_sign", $factory->fromTypeId(Ids::MANGROVE_SIGN)); self::register("mangrove_slab", $factory->fromTypeId(Ids::MANGROVE_SLAB)); self::register("mangrove_stairs", $factory->fromTypeId(Ids::MANGROVE_STAIRS)); self::register("mangrove_trapdoor", $factory->fromTypeId(Ids::MANGROVE_TRAPDOOR)); + self::register("mangrove_wall_sign", $factory->fromTypeId(Ids::MANGROVE_WALL_SIGN)); self::register("mangrove_wood", $factory->fromTypeId(Ids::MANGROVE_WOOD)); self::register("material_reducer", $factory->fromTypeId(Ids::MATERIAL_REDUCER)); self::register("melon", $factory->fromTypeId(Ids::MELON)); @@ -1236,10 +1246,12 @@ final class VanillaBlocks{ self::register("warped_hyphae", $factory->fromTypeId(Ids::WARPED_HYPHAE)); self::register("warped_planks", $factory->fromTypeId(Ids::WARPED_PLANKS)); self::register("warped_pressure_plate", $factory->fromTypeId(Ids::WARPED_PRESSURE_PLATE)); + self::register("warped_sign", $factory->fromTypeId(Ids::WARPED_SIGN)); self::register("warped_slab", $factory->fromTypeId(Ids::WARPED_SLAB)); self::register("warped_stairs", $factory->fromTypeId(Ids::WARPED_STAIRS)); self::register("warped_stem", $factory->fromTypeId(Ids::WARPED_STEM)); self::register("warped_trapdoor", $factory->fromTypeId(Ids::WARPED_TRAPDOOR)); + self::register("warped_wall_sign", $factory->fromTypeId(Ids::WARPED_WALL_SIGN)); self::register("water", $factory->fromTypeId(Ids::WATER)); self::register("weighted_pressure_plate_heavy", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY)); self::register("weighted_pressure_plate_light", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index f114ed97d..49e0d0886 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -465,10 +465,12 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); $this->mapSimple(Blocks::CRIMSON_PLANKS(), Ids::CRIMSON_PLANKS); $this->map(Blocks::CRIMSON_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::CRIMSON_PRESSURE_PLATE))); + $this->map(Blocks::CRIMSON_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::CRIMSON_STANDING_SIGN))); $this->mapSlab(Blocks::CRIMSON_SLAB(), Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB); $this->mapStairs(Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS); $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); + $this->map(Blocks::CRIMSON_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::CRIMSON_WALL_SIGN))); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); @@ -847,9 +849,11 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); $this->mapSimple(Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS); $this->map(Blocks::MANGROVE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::MANGROVE_PRESSURE_PLATE))); + $this->map(Blocks::MANGROVE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::MANGROVE_STANDING_SIGN))); $this->mapSlab(Blocks::MANGROVE_SLAB(), Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB); $this->mapStairs(Blocks::MANGROVE_STAIRS(), Ids::MANGROVE_STAIRS); $this->map(Blocks::MANGROVE_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::MANGROVE_TRAPDOOR))); + $this->map(Blocks::MANGROVE_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::MANGROVE_WALL_SIGN))); $this->map(Blocks::MANGROVE_WOOD(), function(Wood $block) : Writer{ //we can't use the standard method for this because mangrove_wood has a useless property attached to it if(!$block->isStripped()){ @@ -1195,10 +1199,12 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WARPED_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_HYPHAE, Ids::STRIPPED_WARPED_HYPHAE)); $this->mapSimple(Blocks::WARPED_PLANKS(), Ids::WARPED_PLANKS); $this->map(Blocks::WARPED_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WARPED_PRESSURE_PLATE))); + $this->map(Blocks::WARPED_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::WARPED_STANDING_SIGN))); $this->mapSlab(Blocks::WARPED_SLAB(), Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB); $this->mapStairs(Blocks::WARPED_STAIRS(), Ids::WARPED_STAIRS); $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); + $this->map(Blocks::WARPED_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WARPED_WALL_SIGN))); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 74e483fb7..0a7e1a60b 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -309,8 +309,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CRIMSON_PLANKS, fn() => Blocks::CRIMSON_PLANKS()); $this->map(Ids::CRIMSON_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::CRIMSON_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::CRIMSON_STAIRS, fn() => Blocks::CRIMSON_STAIRS()); + $this->map(Ids::CRIMSON_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::CRIMSON_SIGN(), $in)); $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); + $this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in)); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); @@ -735,7 +737,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); $this->map(Ids::MANGROVE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::MANGROVE_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::MANGROVE_STAIRS, fn() => Blocks::MANGROVE_STAIRS()); + $this->map(Ids::MANGROVE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::MANGROVE_SIGN(), $in)); $this->map(Ids::MANGROVE_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::MANGROVE_TRAPDOOR(), $in)); + $this->map(Ids::MANGROVE_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::MANGROVE_WALL_SIGN(), $in)); $this->map(Ids::MANGROVE_WOOD, function(Reader $in){ $in->ignored(StateNames::STRIPPED_BIT); //this is also ignored by vanilla return Helper::decodeLog(Blocks::MANGROVE_WOOD(), false, $in); @@ -1151,8 +1155,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); $this->map(Ids::WARPED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::WARPED_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::WARPED_STAIRS, fn() => Blocks::WARPED_STAIRS()); + $this->map(Ids::WARPED_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::WARPED_SIGN(), $in)); $this->map(Ids::WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), false, $in)); $this->map(Ids::WARPED_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::WARPED_TRAPDOOR(), $in)); + $this->map(Ids::WARPED_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::WARPED_WALL_SIGN(), $in)); $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); $this->map(Ids::WEB, fn() => Blocks::COBWEB()); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 2d8570b5b..41cedace8 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -271,7 +271,7 @@ final class ItemDeserializer{ //TODO: minecraft:creeper_banner_pattern //TODO: minecraft:creeper_spawn_egg $this->map(Ids::CRIMSON_DOOR, fn() => Blocks::CRIMSON_DOOR()->asItem()); - //TODO: minecraft:crimson_sign + $this->map(Ids::CRIMSON_SIGN, fn() => Blocks::CRIMSON_SIGN()->asItem()); //TODO: minecraft:crossbow $this->map(Ids::CYAN_DYE, fn() => Items::DYE()->setColor(DyeColor::CYAN())); $this->map(Ids::DARK_OAK_BOAT, fn() => Items::DARK_OAK_BOAT()); @@ -422,6 +422,7 @@ final class ItemDeserializer{ $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); //TODO: minecraft:magma_cube_spawn_egg $this->map(Ids::MANGROVE_DOOR, fn() => Blocks::MANGROVE_DOOR()->asItem()); + $this->map(Ids::MANGROVE_SIGN, fn() => Blocks::MANGROVE_SIGN()->asItem()); //TODO: minecraft:medicine $this->map(Ids::MELON_SEEDS, fn() => Items::MELON_SEEDS()); $this->map(Ids::MELON_SLICE, fn() => Items::MELON()); @@ -595,7 +596,7 @@ final class ItemDeserializer{ //TODO: minecraft:wandering_trader_spawn_egg $this->map(Ids::WARPED_DOOR, fn() => Blocks::WARPED_DOOR()->asItem()); //TODO: minecraft:warped_fungus_on_a_stick - //TODO: minecraft:warped_sign + $this->map(Ids::WARPED_SIGN, fn() => Blocks::WARPED_SIGN()->asItem()); $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); $this->map(Ids::WHEAT, fn() => Items::WHEAT()); $this->map(Ids::WHEAT_SEEDS, fn() => Items::WHEAT_SEEDS()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 3f886ee50..99086c7b4 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -336,6 +336,7 @@ final class ItemSerializer{ $this->map(Items::COOKED_RABBIT(), self::id(Ids::COOKED_RABBIT)); $this->map(Items::COOKED_SALMON(), self::id(Ids::COOKED_SALMON)); $this->map(Items::COOKIE(), self::id(Ids::COOKIE)); + $this->map(Items::CRIMSON_SIGN(), self::id(Ids::CRIMSON_SIGN)); $this->map(Items::DARK_OAK_BOAT(), self::id(Ids::DARK_OAK_BOAT)); $this->map(Items::DARK_OAK_SIGN(), self::id(Ids::DARK_OAK_SIGN)); $this->map(Items::DIAMOND(), self::id(Ids::DIAMOND)); @@ -420,6 +421,7 @@ final class ItemSerializer{ $this->map(Items::LEATHER_PANTS(), self::id(Ids::LEATHER_LEGGINGS)); $this->map(Items::LEATHER_TUNIC(), self::id(Ids::LEATHER_CHESTPLATE)); $this->map(Items::MAGMA_CREAM(), self::id(Ids::MAGMA_CREAM)); + $this->map(Items::MANGROVE_SIGN(), self::id(Ids::MANGROVE_SIGN)); $this->map(Items::MELON(), self::id(Ids::MELON_SLICE)); $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); @@ -488,6 +490,7 @@ final class ItemSerializer{ $this->map(Items::SWEET_BERRIES(), self::id(Ids::SWEET_BERRIES)); $this->map(Items::TOTEM(), self::id(Ids::TOTEM_OF_UNDYING)); $this->map(Items::VILLAGER_SPAWN_EGG(), self::id(Ids::VILLAGER_SPAWN_EGG)); + $this->map(Items::WARPED_SIGN(), self::id(Ids::WARPED_SIGN)); $this->map(Items::WATER_BUCKET(), self::id(Ids::WATER_BUCKET)); $this->map(Items::WHEAT(), self::id(Ids::WHEAT)); $this->map(Items::WHEAT_SEEDS(), self::id(Ids::WHEAT_SEEDS)); diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index cfcc05dd1..7f4c889c8 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -219,6 +219,9 @@ class ItemFactory{ $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::CRIMSON_SIGN), Blocks::CRIMSON_SIGN(), Blocks::CRIMSON_WALL_SIGN())); + $this->register(new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); $this->register(new Snowball(new IID(Ids::SNOWBALL), "Snowball")); $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); $this->register(new Steak(new IID(Ids::STEAK), "Steak")); diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index d60371ec5..ebc743298 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -265,6 +265,9 @@ final class ItemTypeIds{ public const WRITABLE_BOOK = 20226; public const WRITTEN_BOOK = 20227; public const ZOMBIE_SPAWN_EGG = 20228; + public const CRIMSON_SIGN = 20229; + public const MANGROVE_SIGN = 20230; + public const WARPED_SIGN = 20231; - public const FIRST_UNUSED_ITEM_ID = 20229; + public const FIRST_UNUSED_ITEM_ID = 20232; } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 97c9bbdb8..c5f5cc1ba 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -233,6 +233,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("crimson_hyphae", fn() => Blocks::CRIMSON_HYPHAE()->setStripped(false)); $result->registerBlock("crimson_planks", fn() => Blocks::CRIMSON_PLANKS()); $result->registerBlock("crimson_pressure_plate", fn() => Blocks::CRIMSON_PRESSURE_PLATE()); + $result->registerBlock("crimson_sign", fn() => Blocks::CRIMSON_SIGN()); $result->registerBlock("crimson_slab", fn() => Blocks::CRIMSON_SLAB()); $result->registerBlock("crimson_stairs", fn() => Blocks::CRIMSON_STAIRS()); $result->registerBlock("crimson_stem", fn() => Blocks::CRIMSON_STEM()->setStripped(false)); @@ -703,6 +704,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mangrove_log", fn() => Blocks::MANGROVE_LOG()->setStripped(false)); $result->registerBlock("mangrove_planks", fn() => Blocks::MANGROVE_PLANKS()); $result->registerBlock("mangrove_pressure_plate", fn() => Blocks::MANGROVE_PRESSURE_PLATE()); + $result->registerBlock("mangrove_sign", fn() => Blocks::MANGROVE_SIGN()); $result->registerBlock("mangrove_slab", fn() => Blocks::MANGROVE_SLAB()); $result->registerBlock("mangrove_stairs", fn() => Blocks::MANGROVE_STAIRS()); $result->registerBlock("mangrove_trapdoor", fn() => Blocks::MANGROVE_TRAPDOOR()); @@ -1003,6 +1005,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("warped_hyphae", fn() => Blocks::WARPED_HYPHAE()->setStripped(false)); $result->registerBlock("warped_planks", fn() => Blocks::WARPED_PLANKS()); $result->registerBlock("warped_pressure_plate", fn() => Blocks::WARPED_PRESSURE_PLATE()); + $result->registerBlock("warped_sign", fn() => Blocks::WARPED_SIGN()); $result->registerBlock("warped_slab", fn() => Blocks::WARPED_SLAB()); $result->registerBlock("warped_stairs", fn() => Blocks::WARPED_STAIRS()); $result->registerBlock("warped_stem", fn() => Blocks::WARPED_STEM()->setStripped(false)); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 481e16d7e..a2c035fe7 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -116,6 +116,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CookedSalmon COOKED_SALMON() * @method static Cookie COOKIE() * @method static CoralFan CORAL_FAN() + * @method static ItemBlockWallOrFloor CRIMSON_SIGN() * @method static Boat DARK_OAK_BOAT() * @method static ItemBlockWallOrFloor DARK_OAK_SIGN() * @method static Item DIAMOND() @@ -182,6 +183,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Armor LEATHER_PANTS() * @method static Armor LEATHER_TUNIC() * @method static Item MAGMA_CREAM() + * @method static ItemBlockWallOrFloor MANGROVE_SIGN() * @method static Melon MELON() * @method static MelonSeeds MELON_SEEDS() * @method static MilkBucket MILK_BUCKET() @@ -250,6 +252,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static SweetBerries SWEET_BERRIES() * @method static Totem TOTEM() * @method static SpawnEgg VILLAGER_SPAWN_EGG() + * @method static ItemBlockWallOrFloor WARPED_SIGN() * @method static LiquidBucket WATER_BUCKET() * @method static Item WHEAT() * @method static WheatSeeds WHEAT_SEEDS() @@ -369,6 +372,7 @@ final class VanillaItems{ self::register("cooked_salmon", $factory->fromTypeId(Ids::COOKED_SALMON)); self::register("cookie", $factory->fromTypeId(Ids::COOKIE)); self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); + self::register("crimson_sign", $factory->fromTypeId(Ids::CRIMSON_SIGN)); self::register("dark_oak_boat", $factory->fromTypeId(Ids::DARK_OAK_BOAT)); self::register("dark_oak_sign", $factory->fromTypeId(Ids::DARK_OAK_SIGN)); self::register("diamond", $factory->fromTypeId(Ids::DIAMOND)); @@ -435,6 +439,7 @@ final class VanillaItems{ self::register("leather_pants", $factory->fromTypeId(Ids::LEATHER_PANTS)); self::register("leather_tunic", $factory->fromTypeId(Ids::LEATHER_TUNIC)); self::register("magma_cream", $factory->fromTypeId(Ids::MAGMA_CREAM)); + self::register("mangrove_sign", $factory->fromTypeId(Ids::MANGROVE_SIGN)); self::register("melon", $factory->fromTypeId(Ids::MELON)); self::register("melon_seeds", $factory->fromTypeId(Ids::MELON_SEEDS)); self::register("milk_bucket", $factory->fromTypeId(Ids::MILK_BUCKET)); @@ -503,6 +508,7 @@ final class VanillaItems{ self::register("sweet_berries", $factory->fromTypeId(Ids::SWEET_BERRIES)); self::register("totem", $factory->fromTypeId(Ids::TOTEM)); self::register("villager_spawn_egg", $factory->fromTypeId(Ids::VILLAGER_SPAWN_EGG)); + self::register("warped_sign", $factory->fromTypeId(Ids::WARPED_SIGN)); self::register("water_bucket", $factory->fromTypeId(Ids::WATER_BUCKET)); self::register("wheat", $factory->fromTypeId(Ids::WHEAT)); self::register("wheat_seeds", $factory->fromTypeId(Ids::WHEAT_SEEDS)); From 3c017af6a0d8e03cb5a8cc9241900255a727e7fd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 16:46:57 +0100 Subject: [PATCH 273/692] Added a handful of new easy items --- src/data/bedrock/item/ItemDeserializer.php | 20 ++++++++-------- src/data/bedrock/item/ItemSerializer.php | 11 +++++++++ src/item/ItemFactory.php | 11 +++++++++ src/item/ItemTypeIds.php | 27 +++++++++++++++++++++- src/item/StringToItemParser.php | 11 +++++++++ src/item/VanillaItems.php | 22 ++++++++++++++++++ 6 files changed, 92 insertions(+), 10 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 41cedace8..7ac959b4d 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -117,7 +117,7 @@ final class ItemDeserializer{ $this->map(Ids::ACACIA_SIGN, fn() => Blocks::ACACIA_SIGN()->asItem()); //TODO: minecraft:agent_spawn_egg //TODO: minecraft:allay_spawn_egg - //TODO: minecraft:amethyst_shard + $this->map(Ids::AMETHYST_SHARD, fn() => Items::AMETHYST_SHARD()); $this->map(Ids::APPLE, fn() => Items::APPLE()); //TODO: minecraft:armor_stand $this->map(Ids::ARROW, function(Data $data) : Item{ @@ -266,7 +266,7 @@ final class ItemDeserializer{ $this->map(Ids::COOKED_RABBIT, fn() => Items::COOKED_RABBIT()); $this->map(Ids::COOKED_SALMON, fn() => Items::COOKED_SALMON()); $this->map(Ids::COOKIE, fn() => Items::COOKIE()); - //TODO: minecraft:copper_ingot + $this->map(Ids::COPPER_INGOT, fn() => Items::COPPER_INGOT()); //TODO: minecraft:cow_spawn_egg //TODO: minecraft:creeper_banner_pattern //TODO: minecraft:creeper_spawn_egg @@ -288,6 +288,7 @@ final class ItemDeserializer{ $this->map(Ids::DIAMOND_PICKAXE, fn() => Items::DIAMOND_PICKAXE()); $this->map(Ids::DIAMOND_SHOVEL, fn() => Items::DIAMOND_SHOVEL()); $this->map(Ids::DIAMOND_SWORD, fn() => Items::DIAMOND_SWORD()); + $this->map(Ids::DISC_FRAGMENT_5, fn() => Items::DISC_FRAGMENT_5()); //TODO: minecraft:dolphin_spawn_egg //TODO: minecraft:donkey_spawn_egg $this->map(Ids::DRAGON_BREATH, fn() => Items::DRAGON_BREATH()); @@ -315,6 +316,7 @@ final class ItemDeserializer{ } return Items::DYE()->setColor($dyeColor); }); + $this->map(Ids::ECHO_SHARD, fn() => Items::ECHO_SHARD()); $this->map(Ids::EGG, fn() => Items::EGG()); //TODO: minecraft:elder_guardian_spawn_egg //TODO: minecraft:elytra @@ -352,7 +354,7 @@ final class ItemDeserializer{ //TODO: minecraft:globe_banner_pattern //TODO: minecraft:glow_berries //TODO: minecraft:glow_frame - //TODO: minecraft:glow_ink_sac + $this->map(Ids::GLOW_INK_SAC, fn() => Items::GLOW_INK_SAC()); //TODO: minecraft:glow_squid_spawn_egg //TODO: minecraft:glow_stick $this->map(Ids::GLOWSTONE_DUST, fn() => Items::GLOWSTONE_DUST()); @@ -379,7 +381,7 @@ final class ItemDeserializer{ $this->map(Ids::HEART_OF_THE_SEA, fn() => Items::HEART_OF_THE_SEA()); //TODO: minecraft:hoglin_spawn_egg //TODO: minecraft:honey_bottle - //TODO: minecraft:honeycomb + $this->map(Ids::HONEYCOMB, fn() => Items::HONEYCOMB()); $this->map(Ids::HOPPER, fn() => Blocks::HOPPER()->asItem()); //TODO: minecraft:hopper_minecart //TODO: minecraft:horse_spawn_egg @@ -473,7 +475,7 @@ final class ItemDeserializer{ //TODO: minecraft:panda_spawn_egg $this->map(Ids::PAPER, fn() => Items::PAPER()); //TODO: minecraft:parrot_spawn_egg - //TODO: minecraft:phantom_membrane + $this->map(Ids::PHANTOM_MEMBRANE, fn() => Items::PHANTOM_MEMBRANE()); //TODO: minecraft:phantom_spawn_egg //TODO: minecraft:pig_spawn_egg //TODO: minecraft:piglin_banner_pattern @@ -511,9 +513,9 @@ final class ItemDeserializer{ $this->map(Ids::RABBIT_STEW, fn() => Items::RABBIT_STEW()); //TODO: minecraft:rapid_fertilizer //TODO: minecraft:ravager_spawn_egg - //TODO: minecraft:raw_copper - //TODO: minecraft:raw_gold - //TODO: minecraft:raw_iron + $this->map(Ids::RAW_COPPER, fn() => Items::RAW_COPPER()); + $this->map(Ids::RAW_GOLD, fn() => Items::RAW_GOLD()); + $this->map(Ids::RAW_IRON, fn() => Items::RAW_IRON()); $this->map(Ids::RED_DYE, fn() => Items::DYE()->setColor(DyeColor::RED())); $this->map(Ids::REDSTONE, fn() => Items::REDSTONE_DUST()); $this->map(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()->asItem()); @@ -565,7 +567,7 @@ final class ItemDeserializer{ $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); $this->map(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()->asItem()); $this->map(Ids::SPRUCE_SIGN, fn() => Blocks::SPRUCE_SIGN()->asItem()); - //TODO: minecraft:spyglass + $this->map(Ids::SPYGLASS, fn() => Items::SPYGLASS()); $this->map(Ids::SQUID_SPAWN_EGG, fn() => Items::SQUID_SPAWN_EGG()); $this->map(Ids::STICK, fn() => Items::STICK()); $this->map(Ids::STONE_AXE, fn() => Items::STONE_AXE()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 99086c7b4..4d57071c9 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -258,6 +258,7 @@ final class ItemSerializer{ $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); + $this->map(Items::AMETHYST_SHARD(), self::id(Ids::AMETHYST_SHARD)); $this->map(Items::APPLE(), self::id(Ids::APPLE)); $this->map(Items::ARROW(), self::id(Ids::ARROW)); $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); @@ -336,6 +337,7 @@ final class ItemSerializer{ $this->map(Items::COOKED_RABBIT(), self::id(Ids::COOKED_RABBIT)); $this->map(Items::COOKED_SALMON(), self::id(Ids::COOKED_SALMON)); $this->map(Items::COOKIE(), self::id(Ids::COOKIE)); + $this->map(Items::COPPER_INGOT(), self::id(Ids::COPPER_INGOT)); $this->map(Items::CRIMSON_SIGN(), self::id(Ids::CRIMSON_SIGN)); $this->map(Items::DARK_OAK_BOAT(), self::id(Ids::DARK_OAK_BOAT)); $this->map(Items::DARK_OAK_SIGN(), self::id(Ids::DARK_OAK_SIGN)); @@ -349,6 +351,7 @@ final class ItemSerializer{ $this->map(Items::DIAMOND_PICKAXE(), self::id(Ids::DIAMOND_PICKAXE)); $this->map(Items::DIAMOND_SHOVEL(), self::id(Ids::DIAMOND_SHOVEL)); $this->map(Items::DIAMOND_SWORD(), self::id(Ids::DIAMOND_SWORD)); + $this->map(Items::DISC_FRAGMENT_5(), self::id(Ids::DISC_FRAGMENT_5)); $this->map(Items::DRAGON_BREATH(), self::id(Ids::DRAGON_BREATH)); $this->map(Items::DRIED_KELP(), self::id(Ids::DRIED_KELP)); $this->map(Items::DYE(), fn(Dye $item) => new Data(match($item->getColor()){ @@ -370,6 +373,7 @@ final class ItemSerializer{ DyeColor::YELLOW() => Ids::YELLOW_DYE, default => throw new AssumptionFailedError("Unhandled dye color " . $item->getColor()->name()), })); + $this->map(Items::ECHO_SHARD(), self::id(Ids::ECHO_SHARD)); $this->map(Items::EGG(), self::id(Ids::EGG)); $this->map(Items::EMERALD(), self::id(Ids::EMERALD)); $this->map(Items::ENCHANTED_GOLDEN_APPLE(), self::id(Ids::ENCHANTED_GOLDEN_APPLE)); @@ -384,6 +388,7 @@ final class ItemSerializer{ $this->map(Items::GLASS_BOTTLE(), self::id(Ids::GLASS_BOTTLE)); $this->map(Items::GLISTERING_MELON(), self::id(Ids::GLISTERING_MELON_SLICE)); $this->map(Items::GLOWSTONE_DUST(), self::id(Ids::GLOWSTONE_DUST)); + $this->map(Items::GLOW_INK_SAC(), self::id(Ids::GLOW_INK_SAC)); $this->map(Items::GOLDEN_APPLE(), self::id(Ids::GOLDEN_APPLE)); $this->map(Items::GOLDEN_AXE(), self::id(Ids::GOLDEN_AXE)); $this->map(Items::GOLDEN_BOOTS(), self::id(Ids::GOLDEN_BOOTS)); @@ -399,6 +404,7 @@ final class ItemSerializer{ $this->map(Items::GOLD_NUGGET(), self::id(Ids::GOLD_NUGGET)); $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); + $this->map(Items::HONEYCOMB(), self::id(Ids::HONEYCOMB)); $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); $this->map(Items::IRON_AXE(), self::id(Ids::IRON_AXE)); $this->map(Items::IRON_BOOTS(), self::id(Ids::IRON_BOOTS)); @@ -435,6 +441,7 @@ final class ItemSerializer{ $this->map(Items::OAK_SIGN(), self::id(Ids::OAK_SIGN)); $this->map(Items::PAINTING(), self::id(Ids::PAINTING)); $this->map(Items::PAPER(), self::id(Ids::PAPER)); + $this->map(Items::PHANTOM_MEMBRANE(), self::id(Ids::PHANTOM_MEMBRANE)); $this->map(Items::POISONOUS_POTATO(), self::id(Ids::POISONOUS_POTATO)); $this->map(Items::POPPED_CHORUS_FRUIT(), self::id(Ids::POPPED_CHORUS_FRUIT)); $this->map(Items::POTATO(), self::id(Ids::POTATO)); @@ -449,7 +456,10 @@ final class ItemSerializer{ $this->map(Items::RABBIT_STEW(), self::id(Ids::RABBIT_STEW)); $this->map(Items::RAW_BEEF(), self::id(Ids::BEEF)); $this->map(Items::RAW_CHICKEN(), self::id(Ids::CHICKEN)); + $this->map(Items::RAW_COPPER(), self::id(Ids::RAW_COPPER)); $this->map(Items::RAW_FISH(), self::id(Ids::COD)); + $this->map(Items::RAW_GOLD(), self::id(Ids::RAW_GOLD)); + $this->map(Items::RAW_IRON(), self::id(Ids::RAW_IRON)); $this->map(Items::RAW_MUTTON(), self::id(Ids::MUTTON)); $this->map(Items::RAW_PORKCHOP(), self::id(Ids::PORKCHOP)); $this->map(Items::RAW_RABBIT(), self::id(Ids::RABBIT)); @@ -477,6 +487,7 @@ final class ItemSerializer{ $this->map(Items::SPLASH_POTION(), fn(SplashPotion $item) => new Data(Ids::SPLASH_POTION, PotionTypeIdMap::getInstance()->toId($item->getType()))); $this->map(Items::SPRUCE_BOAT(), self::id(Ids::SPRUCE_BOAT)); $this->map(Items::SPRUCE_SIGN(), self::id(Ids::SPRUCE_SIGN)); + $this->map(Items::SPYGLASS(), self::id(Ids::SPYGLASS)); $this->map(Items::SQUID_SPAWN_EGG(), self::id(Ids::SQUID_SPAWN_EGG)); $this->map(Items::STEAK(), self::id(Ids::COOKED_BEEF)); $this->map(Items::STICK(), self::id(Ids::STICK)); diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 7f4c889c8..1a4ecc068 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -98,6 +98,7 @@ class ItemFactory{ $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); + $this->register(new Item(new IID(Ids::AMETHYST_SHARD), "Amethyst Shard")); $this->register(new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); $this->register(new Item(new IID(Ids::BLEACH), "Bleach")); //EDU $this->register(new Item(new IID(Ids::BONE), "Bone")); @@ -143,9 +144,12 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); $this->register(new Item(new IID(Ids::DIAMOND), "Diamond")); + $this->register(new Item(new IID(Ids::DISC_FRAGMENT_5), "Disc Fragment (5)")); $this->register(new Item(new IID(Ids::DRAGON_BREATH), "Dragon's Breath")); + $this->register(new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); $this->register(new Item(new IID(Ids::INK_SAC), "Ink Sac")); $this->register(new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); + $this->register(new Item(new IID(Ids::ECHO_SHARD), "Echo Shard")); $this->register(new Item(new IID(Ids::EMERALD), "Emerald")); $this->register(new Item(new IID(Ids::FEATHER), "Feather")); $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); @@ -157,6 +161,7 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::GOLD_NUGGET), "Gold Nugget")); $this->register(new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); + $this->register(new Item(new IID(Ids::HONEYCOMB), "Honeycomb")); $this->register(new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); $this->register(new Item(new IID(Ids::IRON_NUGGET), "Iron Nugget")); $this->register(new Item(new IID(Ids::LEATHER), "Leather")); @@ -175,6 +180,12 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::SUGAR), "Sugar")); $this->register(new Item(new IID(Ids::SCUTE), "Scute")); $this->register(new Item(new IID(Ids::WHEAT), "Wheat")); + $this->register(new Item(new IID(Ids::COPPER_INGOT), "Copper Ingot")); + $this->register(new Item(new IID(Ids::RAW_COPPER), "Raw Copper")); + $this->register(new Item(new IID(Ids::RAW_IRON), "Raw Iron")); + $this->register(new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); + $this->register(new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); + $this->register(new Item(new IID(Ids::SPYGLASS), "Spyglass")); //the meta values for buckets are intentionally hardcoded because block IDs will change in the future $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index ebc743298..cc6a678bb 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -268,6 +268,31 @@ final class ItemTypeIds{ public const CRIMSON_SIGN = 20229; public const MANGROVE_SIGN = 20230; public const WARPED_SIGN = 20231; + public const AMETHYST_SHARD = 20232; + public const COPPER_INGOT = 20233; + public const DISC_FRAGMENT_5 = 20234; + public const ECHO_SHARD = 20235; + public const GLOW_INK_SAC = 20236; + public const HONEY_BOTTLE = 20237; + public const HONEYCOMB = 20238; + public const RECORD_5 = 20239; + public const RECORD_OTHERSIDE = 20240; + public const RECORD_PIGSTEP = 20241; + public const NETHERITE_INGOT = 20242; + public const NETHERITE_AXE = 20243; + public const NETHERITE_HOE = 20244; + public const NETHERITE_PICKAXE = 20245; + public const NETHERITE_SHOVEL = 20246; + public const NETHERITE_SWORD = 20247; + public const NETHERITE_BOOTS = 20248; + public const NETHERITE_CHESTPLATE = 20249; + public const NETHERITE_HELMET = 20250; + public const NETHERITE_LEGGINGS = 20251; + public const PHANTOM_MEMBRANE = 20252; + public const RAW_COPPER = 20253; + public const RAW_IRON = 20254; + public const RAW_GOLD = 20255; + public const SPYGLASS = 20256; - public const FIRST_UNUSED_ITEM_ID = 20232; + public const FIRST_UNUSED_ITEM_ID = 20239; } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c5f5cc1ba..6becb7e91 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1041,6 +1041,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("zombie_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); $result->register("acacia_boat", fn() => Items::ACACIA_BOAT()); + $result->register("amethyst_shard", fn() => Items::AMETHYST_SHARD()); $result->register("apple", fn() => Items::APPLE()); $result->register("apple_enchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); $result->register("appleenchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); @@ -1138,6 +1139,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("cooked_rabbit", fn() => Items::COOKED_RABBIT()); $result->register("cooked_salmon", fn() => Items::COOKED_SALMON()); $result->register("cookie", fn() => Items::COOKIE()); + $result->register("copper_ingot", fn() => Items::COPPER_INGOT()); $result->register("dark_oak_boat", fn() => Items::DARK_OAK_BOAT()); $result->register("diamond", fn() => Items::DIAMOND()); $result->register("diamond_axe", fn() => Items::DIAMOND_AXE()); @@ -1149,9 +1151,11 @@ final class StringToItemParser extends StringToTParser{ $result->register("diamond_pickaxe", fn() => Items::DIAMOND_PICKAXE()); $result->register("diamond_shovel", fn() => Items::DIAMOND_SHOVEL()); $result->register("diamond_sword", fn() => Items::DIAMOND_SWORD()); + $result->register("disc_fragment_5", fn() => Items::DISC_FRAGMENT_5()); $result->register("dragon_breath", fn() => Items::DRAGON_BREATH()); $result->register("dried_kelp", fn() => Items::DRIED_KELP()); $result->register("dye", fn() => Items::INK_SAC()); + $result->register("echo_shard", fn() => Items::ECHO_SHARD()); $result->register("egg", fn() => Items::EGG()); $result->register("emerald", fn() => Items::EMERALD()); $result->register("enchanted_golden_apple", fn() => Items::ENCHANTED_GOLDEN_APPLE()); @@ -1170,6 +1174,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("ghast_tear", fn() => Items::GHAST_TEAR()); $result->register("glass_bottle", fn() => Items::GLASS_BOTTLE()); $result->register("glistering_melon", fn() => Items::GLISTERING_MELON()); + $result->register("glow_ink_sac", fn() => Items::GLOW_INK_SAC()); $result->register("glowstone_dust", fn() => Items::GLOWSTONE_DUST()); $result->register("gold_axe", fn() => Items::GOLDEN_AXE()); $result->register("gold_boots", fn() => Items::GOLDEN_BOOTS()); @@ -1200,6 +1205,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("healing_potion", fn() => Items::POTION()->setType(PotionType::HEALING())); $result->register("healing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::HEALING())); $result->register("heart_of_the_sea", fn() => Items::HEART_OF_THE_SEA()); + $result->register("honeycomb", fn() => Items::HONEYCOMB()); $result->register("ink_sac", fn() => Items::INK_SAC()); $result->register("invisibility_potion", fn() => Items::POTION()->setType(PotionType::INVISIBILITY())); $result->register("invisibility_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::INVISIBILITY())); @@ -1280,6 +1286,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("oak_boat", fn() => Items::OAK_BOAT()); $result->register("painting", fn() => Items::PAINTING()); $result->register("paper", fn() => Items::PAPER()); + $result->register("phantom_membrane", fn() => Items::PHANTOM_MEMBRANE()); $result->register("poison_potion", fn() => Items::POTION()->setType(PotionType::POISON())); $result->register("poison_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::POISON())); $result->register("poisonous_potato", fn() => Items::POISONOUS_POTATO()); @@ -1300,8 +1307,11 @@ final class StringToItemParser extends StringToTParser{ $result->register("rabbit_stew", fn() => Items::RABBIT_STEW()); $result->register("raw_beef", fn() => Items::RAW_BEEF()); $result->register("raw_cod", fn() => Items::RAW_FISH()); + $result->register("raw_copper", fn() => Items::RAW_COPPER()); $result->register("raw_chicken", fn() => Items::RAW_CHICKEN()); $result->register("raw_fish", fn() => Items::RAW_FISH()); + $result->register("raw_gold", fn() => Items::RAW_GOLD()); + $result->register("raw_iron", fn() => Items::RAW_IRON()); $result->register("raw_mutton", fn() => Items::RAW_MUTTON()); $result->register("raw_porkchop", fn() => Items::RAW_PORKCHOP()); $result->register("raw_rabbit", fn() => Items::RAW_RABBIT()); @@ -1339,6 +1349,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("spider_eye", fn() => Items::SPIDER_EYE()); $result->register("splash_potion", fn() => Items::SPLASH_POTION()); $result->register("spruce_boat", fn() => Items::SPRUCE_BOAT()); + $result->register("spyglass", fn() => Items::SPYGLASS()); $result->register("squid_spawn_egg", fn() => Items::SQUID_SPAWN_EGG()); $result->register("steak", fn() => Items::STEAK()); $result->register("stick", fn() => Items::STICK()); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index a2c035fe7..9bd9ee4e9 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -36,6 +36,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Boat ACACIA_BOAT() * @method static ItemBlockWallOrFloor ACACIA_SIGN() * @method static ItemBlock AIR() + * @method static Item AMETHYST_SHARD() * @method static Apple APPLE() * @method static Arrow ARROW() * @method static BakedPotato BAKED_POTATO() @@ -115,6 +116,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static CookedRabbit COOKED_RABBIT() * @method static CookedSalmon COOKED_SALMON() * @method static Cookie COOKIE() + * @method static Item COPPER_INGOT() * @method static CoralFan CORAL_FAN() * @method static ItemBlockWallOrFloor CRIMSON_SIGN() * @method static Boat DARK_OAK_BOAT() @@ -129,9 +131,11 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Pickaxe DIAMOND_PICKAXE() * @method static Shovel DIAMOND_SHOVEL() * @method static Sword DIAMOND_SWORD() + * @method static Item DISC_FRAGMENT_5() * @method static Item DRAGON_BREATH() * @method static DriedKelp DRIED_KELP() * @method static Dye DYE() + * @method static Item ECHO_SHARD() * @method static Egg EGG() * @method static Item EMERALD() * @method static GoldenAppleEnchanted ENCHANTED_GOLDEN_APPLE() @@ -146,6 +150,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static GlassBottle GLASS_BOTTLE() * @method static Item GLISTERING_MELON() * @method static Item GLOWSTONE_DUST() + * @method static Item GLOW_INK_SAC() * @method static GoldenApple GOLDEN_APPLE() * @method static Axe GOLDEN_AXE() * @method static Armor GOLDEN_BOOTS() @@ -161,6 +166,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Item GOLD_NUGGET() * @method static Item GUNPOWDER() * @method static Item HEART_OF_THE_SEA() + * @method static Item HONEYCOMB() * @method static Item INK_SAC() * @method static Axe IRON_AXE() * @method static Armor IRON_BOOTS() @@ -197,6 +203,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ItemBlockWallOrFloor OAK_SIGN() * @method static PaintingItem PAINTING() * @method static Item PAPER() + * @method static Item PHANTOM_MEMBRANE() * @method static PoisonousPotato POISONOUS_POTATO() * @method static Item POPPED_CHORUS_FRUIT() * @method static Potato POTATO() @@ -211,7 +218,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static RabbitStew RABBIT_STEW() * @method static RawBeef RAW_BEEF() * @method static RawChicken RAW_CHICKEN() + * @method static Item RAW_COPPER() * @method static RawFish RAW_FISH() + * @method static Item RAW_GOLD() + * @method static Item RAW_IRON() * @method static RawMutton RAW_MUTTON() * @method static RawPorkchop RAW_PORKCHOP() * @method static RawRabbit RAW_RABBIT() @@ -239,6 +249,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static SplashPotion SPLASH_POTION() * @method static Boat SPRUCE_BOAT() * @method static ItemBlockWallOrFloor SPRUCE_SIGN() + * @method static Item SPYGLASS() * @method static SpawnEgg SQUID_SPAWN_EGG() * @method static Steak STEAK() * @method static Stick STICK() @@ -292,6 +303,7 @@ final class VanillaItems{ self::register("acacia_boat", $factory->fromTypeId(Ids::ACACIA_BOAT)); self::register("acacia_sign", $factory->fromTypeId(Ids::ACACIA_SIGN)); + self::register("amethyst_shard", $factory->fromTypeId(Ids::AMETHYST_SHARD)); self::register("apple", $factory->fromTypeId(Ids::APPLE)); self::register("arrow", $factory->fromTypeId(Ids::ARROW)); self::register("baked_potato", $factory->fromTypeId(Ids::BAKED_POTATO)); @@ -371,6 +383,7 @@ final class VanillaItems{ self::register("cooked_rabbit", $factory->fromTypeId(Ids::COOKED_RABBIT)); self::register("cooked_salmon", $factory->fromTypeId(Ids::COOKED_SALMON)); self::register("cookie", $factory->fromTypeId(Ids::COOKIE)); + self::register("copper_ingot", $factory->fromTypeId(Ids::COPPER_INGOT)); self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); self::register("crimson_sign", $factory->fromTypeId(Ids::CRIMSON_SIGN)); self::register("dark_oak_boat", $factory->fromTypeId(Ids::DARK_OAK_BOAT)); @@ -385,9 +398,11 @@ final class VanillaItems{ self::register("diamond_pickaxe", $factory->fromTypeId(Ids::DIAMOND_PICKAXE)); self::register("diamond_shovel", $factory->fromTypeId(Ids::DIAMOND_SHOVEL)); self::register("diamond_sword", $factory->fromTypeId(Ids::DIAMOND_SWORD)); + self::register("disc_fragment_5", $factory->fromTypeId(Ids::DISC_FRAGMENT_5)); self::register("dragon_breath", $factory->fromTypeId(Ids::DRAGON_BREATH)); self::register("dried_kelp", $factory->fromTypeId(Ids::DRIED_KELP)); self::register("dye", $factory->fromTypeId(Ids::DYE)); + self::register("echo_shard", $factory->fromTypeId(Ids::ECHO_SHARD)); self::register("egg", $factory->fromTypeId(Ids::EGG)); self::register("emerald", $factory->fromTypeId(Ids::EMERALD)); self::register("enchanted_golden_apple", $factory->fromTypeId(Ids::ENCHANTED_GOLDEN_APPLE)); @@ -401,6 +416,7 @@ final class VanillaItems{ self::register("ghast_tear", $factory->fromTypeId(Ids::GHAST_TEAR)); self::register("glass_bottle", $factory->fromTypeId(Ids::GLASS_BOTTLE)); self::register("glistering_melon", $factory->fromTypeId(Ids::GLISTERING_MELON)); + self::register("glow_ink_sac", $factory->fromTypeId(Ids::GLOW_INK_SAC)); self::register("glowstone_dust", $factory->fromTypeId(Ids::GLOWSTONE_DUST)); self::register("gold_ingot", $factory->fromTypeId(Ids::GOLD_INGOT)); self::register("gold_nugget", $factory->fromTypeId(Ids::GOLD_NUGGET)); @@ -417,6 +433,7 @@ final class VanillaItems{ self::register("golden_sword", $factory->fromTypeId(Ids::GOLDEN_SWORD)); self::register("gunpowder", $factory->fromTypeId(Ids::GUNPOWDER)); self::register("heart_of_the_sea", $factory->fromTypeId(Ids::HEART_OF_THE_SEA)); + self::register("honeycomb", $factory->fromTypeId(Ids::HONEYCOMB)); self::register("ink_sac", $factory->fromTypeId(Ids::INK_SAC)); self::register("iron_axe", $factory->fromTypeId(Ids::IRON_AXE)); self::register("iron_boots", $factory->fromTypeId(Ids::IRON_BOOTS)); @@ -453,6 +470,7 @@ final class VanillaItems{ self::register("oak_sign", $factory->fromTypeId(Ids::OAK_SIGN)); self::register("painting", $factory->fromTypeId(Ids::PAINTING)); self::register("paper", $factory->fromTypeId(Ids::PAPER)); + self::register("phantom_membrane", $factory->fromTypeId(Ids::PHANTOM_MEMBRANE)); self::register("poisonous_potato", $factory->fromTypeId(Ids::POISONOUS_POTATO)); self::register("popped_chorus_fruit", $factory->fromTypeId(Ids::POPPED_CHORUS_FRUIT)); self::register("potato", $factory->fromTypeId(Ids::POTATO)); @@ -467,7 +485,10 @@ final class VanillaItems{ self::register("rabbit_stew", $factory->fromTypeId(Ids::RABBIT_STEW)); self::register("raw_beef", $factory->fromTypeId(Ids::RAW_BEEF)); self::register("raw_chicken", $factory->fromTypeId(Ids::RAW_CHICKEN)); + self::register("raw_copper", $factory->fromTypeId(Ids::RAW_COPPER)); self::register("raw_fish", $factory->fromTypeId(Ids::RAW_FISH)); + self::register("raw_gold", $factory->fromTypeId(Ids::RAW_GOLD)); + self::register("raw_iron", $factory->fromTypeId(Ids::RAW_IRON)); self::register("raw_mutton", $factory->fromTypeId(Ids::RAW_MUTTON)); self::register("raw_porkchop", $factory->fromTypeId(Ids::RAW_PORKCHOP)); self::register("raw_rabbit", $factory->fromTypeId(Ids::RAW_RABBIT)); @@ -495,6 +516,7 @@ final class VanillaItems{ self::register("splash_potion", $factory->fromTypeId(Ids::SPLASH_POTION)); self::register("spruce_boat", $factory->fromTypeId(Ids::SPRUCE_BOAT)); self::register("spruce_sign", $factory->fromTypeId(Ids::SPRUCE_SIGN)); + self::register("spyglass", $factory->fromTypeId(Ids::SPYGLASS)); self::register("squid_spawn_egg", $factory->fromTypeId(Ids::SQUID_SPAWN_EGG)); self::register("steak", $factory->fromTypeId(Ids::STEAK)); self::register("stick", $factory->fromTypeId(Ids::STICK)); From a42bb9626d3882336dac2b5c6f5b6c7f77a018a3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 20:42:22 +0100 Subject: [PATCH 274/692] Added another handful of blocks clearing out my workspace... --- src/block/BlockFactory.php | 20 ++++++++++++++++++- src/block/BlockTypeIds.php | 10 +++++++--- src/block/Lantern.php | 9 ++++++++- src/block/VanillaBlocks.php | 12 +++++++++++ .../BlockObjectToBlockStateSerializer.php | 11 ++++++++++ .../BlockStateToBlockObjectDeserializer.php | 11 ++++++++++ src/item/StringToItemParser.php | 5 +++++ 7 files changed, 73 insertions(+), 5 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index d3a5817bf..cb865f26e 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -243,7 +243,11 @@ class BlockFactory{ $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); $this->register(new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not $this->register(new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $this->register(new Lantern(new BID(Ids::LANTERN), "Lantern", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + $lanternBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); + $this->register(new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); + $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); @@ -568,6 +572,7 @@ class BlockFactory{ )); $this->registerBlocksR13(); + $this->registerBlocksR14(); $this->registerBlocksR16(); $this->registerBlocksR17(); } @@ -711,6 +716,10 @@ class BlockFactory{ $this->register(new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); } + private function registerBlocksR14() : void{ + $this->register(new Opaque(new BID(Ids::HONEYCOMB), "Honeycomb Block", new BreakInfo(0.6))); + } + private function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); @@ -745,7 +754,15 @@ class BlockFactory{ $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); $this->register(new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); + $this->register(new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", BreakInfo::instant())); $this->register(new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); + + //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) + $this->register(new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new BreakInfo(1.0, ToolType::SHOVEL))); + + $this->register(new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ + public function getLightLevel() : int{ return 15; } + }); } private function registerBlocksR17() : void{ @@ -753,6 +770,7 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 2f6735d66..e2201fc29 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -613,10 +613,12 @@ final class BlockTypeIds{ public const CHISELED_DEEPSLATE = 10586; public const CHISELED_NETHER_BRICKS = 10587; public const CRACKED_NETHER_BRICKS = 10588; - + public const TUFF = 10589; + public const SOUL_TORCH = 10590; + public const SOUL_LANTERN = 10591; public const SOUL_SOIL = 10592; public const SOUL_FIRE = 10593; - + public const SHROOMLIGHT = 10594; public const MANGROVE_PLANKS = 10595; public const CRIMSON_PLANKS = 10596; public const WARPED_PLANKS = 10597; @@ -657,5 +659,7 @@ final class BlockTypeIds{ public const CRIMSON_WALL_SIGN = 10632; public const WARPED_WALL_SIGN = 10633; - public const FIRST_UNUSED_BLOCK_ID = 10634; + public const HONEYCOMB = 10635; + + public const FIRST_UNUSED_BLOCK_ID = 10636; } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index bd620a58d..825a54560 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -35,8 +35,15 @@ use pocketmine\player\Player; use pocketmine\world\BlockTransaction; class Lantern extends Transparent{ + private int $lightLevel; //readonly + protected bool $hanging = false; + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, int $lightLevel){ + $this->lightLevel = $lightLevel; + parent::__construct($idInfo, $name, $breakInfo); + } + public function getRequiredStateDataBits() : int{ return 1; } protected function decodeState(RuntimeDataReader $r) : void{ @@ -56,7 +63,7 @@ class Lantern extends Transparent{ } public function getLightLevel() : int{ - return 15; + return $this->lightLevel; } /** diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 2f5c52cca..6f40bdd07 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -360,6 +360,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static HardenedGlass HARDENED_GLASS() * @method static HardenedGlassPane HARDENED_GLASS_PANE() * @method static HayBale HAY_BALE() + * @method static Opaque HONEYCOMB() * @method static Hopper HOPPER() * @method static Ice ICE() * @method static InfestedStone INFESTED_CHISELED_STONE_BRICK() @@ -551,6 +552,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Wall SANDSTONE_WALL() * @method static SeaLantern SEA_LANTERN() * @method static SeaPickle SEA_PICKLE() + * @method static Opaque SHROOMLIGHT() * @method static ShulkerBox SHULKER_BOX() * @method static Slime SLIME() * @method static Furnace SMOKER() @@ -569,7 +571,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Snow SNOW() * @method static SnowLayer SNOW_LAYER() * @method static SoulFire SOUL_FIRE() + * @method static Lantern SOUL_LANTERN() * @method static SoulSand SOUL_SAND() + * @method static Opaque SOUL_SOIL() + * @method static Torch SOUL_TORCH() * @method static Sponge SPONGE() * @method static WoodenButton SPRUCE_BUTTON() * @method static WoodenDoor SPRUCE_DOOR() @@ -610,6 +615,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static TrappedChest TRAPPED_CHEST() * @method static Tripwire TRIPWIRE() * @method static TripwireHook TRIPWIRE_HOOK() + * @method static Opaque TUFF() * @method static UnderwaterTorch UNDERWATER_TORCH() * @method static Vine VINES() * @method static WallBanner WALL_BANNER() @@ -985,6 +991,7 @@ final class VanillaBlocks{ self::register("hardened_glass", $factory->fromTypeId(Ids::HARDENED_GLASS)); self::register("hardened_glass_pane", $factory->fromTypeId(Ids::HARDENED_GLASS_PANE)); self::register("hay_bale", $factory->fromTypeId(Ids::HAY_BALE)); + self::register("honeycomb", $factory->fromTypeId(Ids::HONEYCOMB)); self::register("hopper", $factory->fromTypeId(Ids::HOPPER)); self::register("ice", $factory->fromTypeId(Ids::ICE)); self::register("infested_chiseled_stone_brick", $factory->fromTypeId(Ids::INFESTED_CHISELED_STONE_BRICK)); @@ -1176,6 +1183,7 @@ final class VanillaBlocks{ self::register("sandstone_wall", $factory->fromTypeId(Ids::SANDSTONE_WALL)); self::register("sea_lantern", $factory->fromTypeId(Ids::SEA_LANTERN)); self::register("sea_pickle", $factory->fromTypeId(Ids::SEA_PICKLE)); + self::register("shroomlight", $factory->fromTypeId(Ids::SHROOMLIGHT)); self::register("shulker_box", $factory->fromTypeId(Ids::SHULKER_BOX)); self::register("slime", $factory->fromTypeId(Ids::SLIME)); self::register("smoker", $factory->fromTypeId(Ids::SMOKER)); @@ -1194,7 +1202,10 @@ final class VanillaBlocks{ self::register("snow", $factory->fromTypeId(Ids::SNOW)); self::register("snow_layer", $factory->fromTypeId(Ids::SNOW_LAYER)); self::register("soul_fire", $factory->fromTypeId(Ids::SOUL_FIRE)); + self::register("soul_lantern", $factory->fromTypeId(Ids::SOUL_LANTERN)); self::register("soul_sand", $factory->fromTypeId(Ids::SOUL_SAND)); + self::register("soul_soil", $factory->fromTypeId(Ids::SOUL_SOIL)); + self::register("soul_torch", $factory->fromTypeId(Ids::SOUL_TORCH)); self::register("sponge", $factory->fromTypeId(Ids::SPONGE)); self::register("spruce_button", $factory->fromTypeId(Ids::SPRUCE_BUTTON)); self::register("spruce_door", $factory->fromTypeId(Ids::SPRUCE_DOOR)); @@ -1235,6 +1246,7 @@ final class VanillaBlocks{ self::register("trapped_chest", $factory->fromTypeId(Ids::TRAPPED_CHEST)); self::register("tripwire", $factory->fromTypeId(Ids::TRIPWIRE)); self::register("tripwire_hook", $factory->fromTypeId(Ids::TRIPWIRE_HOOK)); + self::register("tuff", $factory->fromTypeId(Ids::TUFF)); self::register("underwater_torch", $factory->fromTypeId(Ids::UNDERWATER_TORCH)); self::register("vines", $factory->fromTypeId(Ids::VINES)); self::register("wall_banner", $factory->fromTypeId(Ids::WALL_BANNER)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 49e0d0886..c87157427 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1053,6 +1053,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::DEAD_BIT, !$block->isUnderwater()) ->writeInt(StateNames::CLUSTER_COUNT, $block->getCount() - 1); }); + $this->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT); $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); $this->mapSimple(Blocks::SLIME(), Ids::SLIME); $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); @@ -1078,7 +1079,16 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::SOUL_FIRE) ->writeInt(StateNames::AGE, 0); //useless for soul fire, we don't track it }); + $this->map(Blocks::SOUL_LANTERN(), function(Lantern $block) : Writer{ + return Writer::create(Ids::SOUL_LANTERN) + ->writeBool(StateNames::HANGING, $block->isHanging()); + }); $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); + $this->mapSimple(Blocks::SOUL_SOIL(), Ids::SOUL_SOIL); + $this->map(Blocks::SOUL_TORCH(), function(Torch $block) : Writer{ + return Writer::create(Ids::SOUL_TORCH) + ->writeTorchFacing($block->getFacing()); + }); $this->map(Blocks::SPONGE(), function(Sponge $block) : Writer{ return Writer::create(Ids::SPONGE) ->writeString(StateNames::SPONGE_TYPE, $block->isWet() ? StringValues::SPONGE_TYPE_WET : StringValues::SPONGE_TYPE_DRY); @@ -1168,6 +1178,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::POWERED_BIT, $block->isPowered()) ->writeLegacyHorizontalFacing($block->getFacing()); }); + $this->mapSimple(Blocks::TUFF(), Ids::TUFF); $this->map(Blocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ return Writer::create(Ids::UNDERWATER_TORCH) ->writeTorchFacing($block->getFacing()); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 0a7e1a60b..72edc85a5 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -971,6 +971,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setCount($in->readBoundedInt(StateNames::CLUSTER_COUNT, 0, 3) + 1) ->setUnderwater(!$in->readBool(StateNames::DEAD_BIT)); }); + $this->map(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); $this->map(Ids::SHULKER_BOX, function(Reader $in) : Block{ return Blocks::DYED_SHULKER_BOX() ->setColor($in->readColor()); @@ -1000,7 +1001,16 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $in->ignored(StateNames::AGE); //this is useless for soul fire, since it doesn't have the logic associated return Blocks::SOUL_FIRE(); }); + $this->map(Ids::SOUL_LANTERN, function(Reader $in) : Block{ + return Blocks::SOUL_LANTERN() + ->setHanging($in->readBool(StateNames::HANGING)); + }); $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); + $this->map(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); + $this->map(Ids::SOUL_TORCH, function(Reader $in) : Block{ + return Blocks::SOUL_TORCH() + ->setFacing($in->readTorchFacing()); + }); $this->map(Ids::SPONGE, function(Reader $in) : Block{ return Blocks::SPONGE()->setWet(match($type = $in->readString(StateNames::SPONGE_TYPE)){ StringValues::SPONGE_TYPE_DRY => false, @@ -1120,6 +1130,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readLegacyHorizontalFacing()) ->setPowered($in->readBool(StateNames::POWERED_BIT)); }); + $this->map(Ids::TUFF, fn() => Blocks::TUFF()); $this->map(Ids::UNDERWATER_TORCH, function(Reader $in) : Block{ return Blocks::UNDERWATER_TORCH() ->setFacing($in->readTorchFacing()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 6becb7e91..a95301baf 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -875,6 +875,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("sea_lantern", fn() => Blocks::SEA_LANTERN()); $result->registerBlock("sea_pickle", fn() => Blocks::SEA_PICKLE()); $result->registerBlock("sealantern", fn() => Blocks::SEA_LANTERN()); + $result->registerBlock("shroomlight", fn() => Blocks::SHROOMLIGHT()); $result->registerBlock("shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("sign_post", fn() => Blocks::OAK_SIGN()); @@ -901,7 +902,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("snow", fn() => Blocks::SNOW()); $result->registerBlock("snow_block", fn() => Blocks::SNOW()); $result->registerBlock("snow_layer", fn() => Blocks::SNOW_LAYER()); + $result->registerBlock("soul_lantern", fn() => Blocks::SOUL_LANTERN()); $result->registerBlock("soul_sand", fn() => Blocks::SOUL_SAND()); + $result->registerBlock("soul_soil", fn() => Blocks::SOUL_SOIL()); + $result->registerBlock("soul_torch", fn() => Blocks::SOUL_TORCH()); $result->registerBlock("sponge", fn() => Blocks::SPONGE()); $result->registerBlock("spruce_button", fn() => Blocks::SPRUCE_BUTTON()); $result->registerBlock("spruce_door", fn() => Blocks::SPRUCE_DOOR()); @@ -985,6 +989,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("tripwire_hook", fn() => Blocks::TRIPWIRE_HOOK()); $result->registerBlock("trunk", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); + $result->registerBlock("tuff", fn() => Blocks::TUFF()); $result->registerBlock("underwater_torch", fn() => Blocks::UNDERWATER_TORCH()); $result->registerBlock("undyed_shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("unlit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); From 5536672e4b1bcaa1a4a5c5f3851d6a14109237e9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 20:42:53 +0100 Subject: [PATCH 275/692] Updated consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index ed0a668cb..c702e217b 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5423616":"Soul Fire","5396480":"Amethyst","5409280":"Calcite","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file From a005cd6e3368f520a71dda737288019433f9ff5c Mon Sep 17 00:00:00 2001 From: Alexey <45711510+Gaprix@users.noreply.github.com> Date: Tue, 5 Jul 2022 22:43:46 +0300 Subject: [PATCH 276/692] Set the correct max stack size for spyglass (#5133) --- src/item/ItemFactory.php | 2 +- src/item/Spyglass.php | 31 +++++++++++++++++++++++++++++++ src/item/VanillaItems.php | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/item/Spyglass.php diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 1a4ecc068..5f124df54 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -185,7 +185,6 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::RAW_IRON), "Raw Iron")); $this->register(new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); $this->register(new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); - $this->register(new Item(new IID(Ids::SPYGLASS), "Spyglass")); //the meta values for buckets are intentionally hardcoded because block IDs will change in the future $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); @@ -235,6 +234,7 @@ class ItemFactory{ $this->register(new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); $this->register(new Snowball(new IID(Ids::SNOWBALL), "Snowball")); $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); + $this->register(new Spyglass(new IID(Ids::SPYGLASS), "Spyglass")); $this->register(new Steak(new IID(Ids::STEAK), "Steak")); $this->register(new Stick(new IID(Ids::STICK), "Stick")); $this->register(new StringItem(new IID(Ids::STRING), "String")); diff --git a/src/item/Spyglass.php b/src/item/Spyglass.php new file mode 100644 index 000000000..1427a71f5 --- /dev/null +++ b/src/item/Spyglass.php @@ -0,0 +1,31 @@ + Date: Tue, 5 Jul 2022 20:49:53 +0100 Subject: [PATCH 277/692] Lava: implement basalt generators --- src/block/Lava.php | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/block/Lava.php b/src/block/Lava.php index 05e98e50b..de546c798 100644 --- a/src/block/Lava.php +++ b/src/block/Lava.php @@ -54,31 +54,43 @@ class Lava extends Liquid{ return 2; //TODO: this is 1 in the nether } - protected function checkForHarden() : bool{ - if($this->falling){ - return false; - } - $colliding = null; + /** + * @phpstan-return \Generator + */ + private function getAdjacentBlocksExceptDown() : \Generator{ foreach(Facing::ALL as $side){ if($side === Facing::DOWN){ continue; } - $blockSide = $this->getSide($side); - if($blockSide instanceof Water){ - $colliding = $blockSide; - break; + yield $this->getSide($side); + } + } + + protected function checkForHarden() : bool{ + if($this->falling){ + return false; + } + foreach($this->getAdjacentBlocksExceptDown() as $colliding){ + if($colliding instanceof Water){ + if($this->decay === 0){ + $this->liquidCollide($colliding, VanillaBlocks::OBSIDIAN()); + return true; + }elseif($this->decay <= 4){ + $this->liquidCollide($colliding, VanillaBlocks::COBBLESTONE()); + return true; + } } } - if($colliding !== null){ - if($this->decay === 0){ - $this->liquidCollide($colliding, VanillaBlocks::OBSIDIAN()); - return true; - }elseif($this->decay <= 4){ - $this->liquidCollide($colliding, VanillaBlocks::COBBLESTONE()); - return true; + if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::SOUL_SOIL){ + foreach($this->getAdjacentBlocksExceptDown() as $colliding){ + if($colliding->getTypeId() === BlockTypeIds::BLUE_ICE){ + $this->liquidCollide($colliding, VanillaBlocks::BASALT()); + return true; + } } } + return false; } From a8dae96bb0dd342574055632189532a6dbe805ec Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 21:03:27 +0100 Subject: [PATCH 278/692] register honeycomb blocks properly --- .../bedrock/block/convert/BlockObjectToBlockStateSerializer.php | 1 + .../block/convert/BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + 3 files changed, 3 insertions(+) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index c87157427..54b0dd449 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -742,6 +742,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::DEPRECATED, 0) ->writePillarAxis($block->getAxis()); }); + $this->mapSimple(Blocks::HONEYCOMB(), Ids::HONEYCOMB_BLOCK); $this->map(Blocks::HOPPER(), function(Hopper $block) : Writer{ return Writer::create(Ids::HOPPER) ->writeBool(StateNames::TOGGLE_BIT, $block->isPowered()) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 72edc85a5..ab17013b8 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -602,6 +602,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::HAY_BALE()->setAxis($in->readPillarAxis()); }); $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); + $this->map(Ids::HONEYCOMB_BLOCK, fn() => Blocks::HONEYCOMB()); $this->map(Ids::HOPPER, function(Reader $in) : Block{ return Blocks::HOPPER() ->setFacing($in->readFacingWithoutUp()) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a95301baf..88a2fb9cf 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -616,6 +616,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("hay_bale", fn() => Blocks::HAY_BALE()); $result->registerBlock("hay_block", fn() => Blocks::HAY_BALE()); $result->registerBlock("heavy_weighted_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY()); + $result->registerBlock("honeycomb_block", fn() => Blocks::HONEYCOMB()); $result->registerBlock("hopper", fn() => Blocks::HOPPER()); $result->registerBlock("hopper_block", fn() => Blocks::HOPPER()); $result->registerBlock("ice", fn() => Blocks::ICE()); From d725ded7b65870b0ef3dd1a535fc45863968ba98 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 21:43:47 +0100 Subject: [PATCH 279/692] Added new ores --- src/block/BlockFactory.php | 36 ++++++++++++++---- src/block/BlockTypeIds.php | 12 +++++- src/block/CopperOre.php | 36 ++++++++++++++++++ src/block/GoldOre.php | 36 ++++++++++++++++++ src/block/IronOre.php | 36 ++++++++++++++++++ src/block/NetherGoldOre.php | 37 +++++++++++++++++++ src/block/VanillaBlocks.php | 24 +++++++++++- .../BlockObjectToBlockStateSerializer.php | 10 +++++ .../BlockStateToBlockObjectDeserializer.php | 11 ++++++ src/item/StringToItemParser.php | 10 +++++ 10 files changed, 237 insertions(+), 11 deletions(-) create mode 100644 src/block/CopperOre.php create mode 100644 src/block/GoldOre.php create mode 100644 src/block/IronOre.php create mode 100644 src/block/NetherGoldOre.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index cb865f26e..ab069c5e6 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -145,7 +145,6 @@ class BlockFactory{ $this->register(new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); $this->register(new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); $this->register(new Coal(new BID(Ids::COAL), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); @@ -162,7 +161,6 @@ class BlockFactory{ $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); $this->register(new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $this->register(new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); $this->register(new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); $this->register(new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); @@ -173,7 +171,6 @@ class BlockFactory{ $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); $this->register(new Opaque(new BID(Ids::EMERALD), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); $this->register(new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); @@ -211,7 +208,6 @@ class BlockFactory{ $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); $this->register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); $this->register(new Opaque(new BID(Ids::GOLD), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::GOLD_ORE), "Gold Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); $this->register(new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); @@ -239,7 +235,6 @@ class BlockFactory{ $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); $this->register(new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->register(new Opaque(new BID(Ids::IRON_ORE), "Iron Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); $this->register(new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not $this->register(new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); @@ -249,7 +244,6 @@ class BlockFactory{ $this->register(new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); $this->register(new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); $this->register(new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); $this->register(new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); @@ -270,7 +264,6 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); @@ -317,7 +310,6 @@ class BlockFactory{ $this->register(new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); - $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); @@ -575,6 +567,8 @@ class BlockFactory{ $this->registerBlocksR14(); $this->registerBlocksR16(); $this->registerBlocksR17(); + + $this->registerOres(); } private function registerMushroomBlocks() : void{ @@ -712,6 +706,32 @@ class BlockFactory{ $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); } + private function registerOres() : void{ + $stoneOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(3.0, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + $this->register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD()))); + $this->register(new CopperOre(new BID(Ids::COPPER_ORE), "Copper Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + $this->register(new GoldOre(new BID(Ids::GOLD_ORE), "Gold Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + $this->register(new IronOre(new BID(Ids::IRON_ORE), "Iron Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + + $deepslateOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(4.5, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + $this->register(new CoalOre(new BID(Ids::DEEPSLATE_COAL_ORE), "Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD()))); + $this->register(new CopperOre(new BID(Ids::DEEPSLATE_COPPER_ORE), "Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + $this->register(new DiamondOre(new BID(Ids::DEEPSLATE_DIAMOND_ORE), "Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + $this->register(new EmeraldOre(new BID(Ids::DEEPSLATE_EMERALD_ORE), "Deepslate Emerald Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + $this->register(new GoldOre(new BID(Ids::DEEPSLATE_GOLD_ORE), "Deepslate Gold Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + $this->register(new IronOre(new BID(Ids::DEEPSLATE_IRON_ORE), "Deepslate Iron Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + $this->register(new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + $this->register(new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + + $netherrackOreBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); + $this->register(new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); + } + private function registerBlocksR13() : void{ $this->register(new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index e2201fc29..3d23ec17e 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -660,6 +660,16 @@ final class BlockTypeIds{ public const WARPED_WALL_SIGN = 10633; public const HONEYCOMB = 10635; + public const DEEPSLATE_COAL_ORE = 10636; + public const DEEPSLATE_DIAMOND_ORE = 10637; + public const DEEPSLATE_EMERALD_ORE = 10638; + public const DEEPSLATE_LAPIS_LAZULI_ORE = 10639; + public const DEEPSLATE_REDSTONE_ORE = 10640; + public const DEEPSLATE_IRON_ORE = 10641; + public const DEEPSLATE_GOLD_ORE = 10642; + public const DEEPSLATE_COPPER_ORE = 10643; + public const COPPER_ORE = 10644; + public const NETHER_GOLD_ORE = 10645; - public const FIRST_UNUSED_BLOCK_ID = 10636; + public const FIRST_UNUSED_BLOCK_ID = 10646; } diff --git a/src/block/CopperOre.php b/src/block/CopperOre.php new file mode 100644 index 000000000..ad02cc50f --- /dev/null +++ b/src/block/CopperOre.php @@ -0,0 +1,36 @@ +setCount(mt_rand(2, 6))]; + } + + public function isAffectedBySilkTouch() : bool{ return true; } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 6f40bdd07..3955f6db7 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -133,6 +133,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static ChemistryTable COMPOUND_CREATOR() * @method static Concrete CONCRETE() * @method static ConcretePowder CONCRETE_POWDER() + * @method static CopperOre COPPER_ORE() * @method static Coral CORAL() * @method static CoralBlock CORAL_BLOCK() * @method static FloorCoralFan CORAL_FAN() @@ -186,6 +187,14 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab DEEPSLATE_BRICK_SLAB() * @method static Stair DEEPSLATE_BRICK_STAIRS() * @method static Wall DEEPSLATE_BRICK_WALL() + * @method static CoalOre DEEPSLATE_COAL_ORE() + * @method static CopperOre DEEPSLATE_COPPER_ORE() + * @method static DiamondOre DEEPSLATE_DIAMOND_ORE() + * @method static EmeraldOre DEEPSLATE_EMERALD_ORE() + * @method static GoldOre DEEPSLATE_GOLD_ORE() + * @method static IronOre DEEPSLATE_IRON_ORE() + * @method static LapisOre DEEPSLATE_LAPIS_LAZULI_ORE() + * @method static RedstoneOre DEEPSLATE_REDSTONE_ORE() * @method static Opaque DEEPSLATE_TILES() * @method static Slab DEEPSLATE_TILE_SLAB() * @method static Stair DEEPSLATE_TILE_STAIRS() @@ -347,7 +356,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static GlowingObsidian GLOWING_OBSIDIAN() * @method static Glowstone GLOWSTONE() * @method static Opaque GOLD() - * @method static Opaque GOLD_ORE() + * @method static GoldOre GOLD_ORE() * @method static Opaque GRANITE() * @method static Slab GRANITE_SLAB() * @method static Stair GRANITE_STAIRS() @@ -375,7 +384,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Opaque IRON() * @method static Thin IRON_BARS() * @method static Door IRON_DOOR() - * @method static Opaque IRON_ORE() + * @method static IronOre IRON_ORE() * @method static Trapdoor IRON_TRAPDOOR() * @method static ItemFrame ITEM_FRAME() * @method static Jukebox JUKEBOX() @@ -445,6 +454,7 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab NETHER_BRICK_SLAB() * @method static Stair NETHER_BRICK_STAIRS() * @method static Wall NETHER_BRICK_WALL() + * @method static NetherGoldOre NETHER_GOLD_ORE() * @method static NetherPortal NETHER_PORTAL() * @method static NetherQuartzOre NETHER_QUARTZ_ORE() * @method static NetherReactor NETHER_REACTOR_CORE() @@ -764,6 +774,7 @@ final class VanillaBlocks{ self::register("compound_creator", $factory->fromTypeId(Ids::COMPOUND_CREATOR)); self::register("concrete", $factory->fromTypeId(Ids::CONCRETE)); self::register("concrete_powder", $factory->fromTypeId(Ids::CONCRETE_POWDER)); + self::register("copper_ore", $factory->fromTypeId(Ids::COPPER_ORE)); self::register("coral", $factory->fromTypeId(Ids::CORAL)); self::register("coral_block", $factory->fromTypeId(Ids::CORAL_BLOCK)); self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); @@ -817,6 +828,14 @@ final class VanillaBlocks{ self::register("deepslate_brick_stairs", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_STAIRS)); self::register("deepslate_brick_wall", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_WALL)); self::register("deepslate_bricks", $factory->fromTypeId(Ids::DEEPSLATE_BRICKS)); + self::register("deepslate_coal_ore", $factory->fromTypeId(Ids::DEEPSLATE_COAL_ORE)); + self::register("deepslate_copper_ore", $factory->fromTypeId(Ids::DEEPSLATE_COPPER_ORE)); + self::register("deepslate_diamond_ore", $factory->fromTypeId(Ids::DEEPSLATE_DIAMOND_ORE)); + self::register("deepslate_emerald_ore", $factory->fromTypeId(Ids::DEEPSLATE_EMERALD_ORE)); + self::register("deepslate_gold_ore", $factory->fromTypeId(Ids::DEEPSLATE_GOLD_ORE)); + self::register("deepslate_iron_ore", $factory->fromTypeId(Ids::DEEPSLATE_IRON_ORE)); + self::register("deepslate_lapis_lazuli_ore", $factory->fromTypeId(Ids::DEEPSLATE_LAPIS_LAZULI_ORE)); + self::register("deepslate_redstone_ore", $factory->fromTypeId(Ids::DEEPSLATE_REDSTONE_ORE)); self::register("deepslate_tile_slab", $factory->fromTypeId(Ids::DEEPSLATE_TILE_SLAB)); self::register("deepslate_tile_stairs", $factory->fromTypeId(Ids::DEEPSLATE_TILE_STAIRS)); self::register("deepslate_tile_wall", $factory->fromTypeId(Ids::DEEPSLATE_TILE_WALL)); @@ -1075,6 +1094,7 @@ final class VanillaBlocks{ self::register("nether_brick_stairs", $factory->fromTypeId(Ids::NETHER_BRICK_STAIRS)); self::register("nether_brick_wall", $factory->fromTypeId(Ids::NETHER_BRICK_WALL)); self::register("nether_bricks", $factory->fromTypeId(Ids::NETHER_BRICKS)); + self::register("nether_gold_ore", $factory->fromTypeId(Ids::NETHER_GOLD_ORE)); self::register("nether_portal", $factory->fromTypeId(Ids::NETHER_PORTAL)); self::register("nether_quartz_ore", $factory->fromTypeId(Ids::NETHER_QUARTZ_ORE)); self::register("nether_reactor_core", $factory->fromTypeId(Ids::NETHER_REACTOR_CORE)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 54b0dd449..85795b2a9 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -432,6 +432,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CONCRETE_POWDER) ->writeColor($block->getColor()); }); + $this->mapSimple(Blocks::COPPER_ORE(), Ids::COPPER_ORE); $this->map(Blocks::CORAL(), function(Coral $block) : Writer{ return Writer::create(Ids::CORAL) ->writeBool(StateNames::DEAD_BIT, $block->isDead()) @@ -510,6 +511,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSlab(Blocks::DEEPSLATE_BRICK_SLAB(), Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB); $this->mapStairs(Blocks::DEEPSLATE_BRICK_STAIRS(), Ids::DEEPSLATE_BRICK_STAIRS); $this->map(Blocks::DEEPSLATE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_BRICK_WALL))); + $this->mapSimple(Blocks::DEEPSLATE_COAL_ORE(), Ids::DEEPSLATE_COAL_ORE); + $this->mapSimple(Blocks::DEEPSLATE_COPPER_ORE(), Ids::DEEPSLATE_COPPER_ORE); + $this->mapSimple(Blocks::DEEPSLATE_DIAMOND_ORE(), Ids::DEEPSLATE_DIAMOND_ORE); + $this->mapSimple(Blocks::DEEPSLATE_EMERALD_ORE(), Ids::DEEPSLATE_EMERALD_ORE); + $this->mapSimple(Blocks::DEEPSLATE_GOLD_ORE(), Ids::DEEPSLATE_GOLD_ORE); + $this->mapSimple(Blocks::DEEPSLATE_IRON_ORE(), Ids::DEEPSLATE_IRON_ORE); + $this->mapSimple(Blocks::DEEPSLATE_LAPIS_LAZULI_ORE(), Ids::DEEPSLATE_LAPIS_ORE); + $this->map(Blocks::DEEPSLATE_REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_DEEPSLATE_REDSTONE_ORE : Ids::DEEPSLATE_REDSTONE_ORE)); $this->mapSimple(Blocks::DEEPSLATE_TILES(), Ids::DEEPSLATE_TILES); $this->mapSlab(Blocks::DEEPSLATE_TILE_SLAB(), Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB); $this->mapStairs(Blocks::DEEPSLATE_TILE_STAIRS(), Ids::DEEPSLATE_TILE_STAIRS); @@ -891,6 +900,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); $this->mapStairs(Blocks::NETHER_BRICK_STAIRS(), Ids::NETHER_BRICK_STAIRS); $this->map(Blocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); + $this->mapSimple(Blocks::NETHER_GOLD_ORE(), Ids::NETHER_GOLD_ORE); $this->map(Blocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ return Writer::create(Ids::PORTAL) ->writeString(StateNames::PORTAL_AXIS, match($block->getAxis()){ diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index ab17013b8..38c719b46 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -270,6 +270,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CONCRETE_POWDER() ->setColor($in->readColor()); }); + $this->map(Ids::COPPER_ORE, fn() => Blocks::COPPER_ORE()); $this->map(Ids::CORAL, function(Reader $in) : Block{ return Blocks::CORAL() ->setCoralType($in->readCoralType()) @@ -336,6 +337,14 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->mapSlab(Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_BRICK_SLAB()); $this->mapStairs(Ids::DEEPSLATE_BRICK_STAIRS, fn() => Blocks::DEEPSLATE_BRICK_STAIRS()); $this->map(Ids::DEEPSLATE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_BRICK_WALL(), $in)); + $this->map(Ids::DEEPSLATE_COAL_ORE, fn() => Blocks::DEEPSLATE_COAL_ORE()); + $this->map(Ids::DEEPSLATE_COPPER_ORE, fn() => Blocks::DEEPSLATE_COPPER_ORE()); + $this->map(Ids::DEEPSLATE_DIAMOND_ORE, fn() => Blocks::DEEPSLATE_DIAMOND_ORE()); + $this->map(Ids::DEEPSLATE_EMERALD_ORE, fn() => Blocks::DEEPSLATE_EMERALD_ORE()); + $this->map(Ids::DEEPSLATE_GOLD_ORE, fn() => Blocks::DEEPSLATE_GOLD_ORE()); + $this->map(Ids::DEEPSLATE_IRON_ORE, fn() => Blocks::DEEPSLATE_IRON_ORE()); + $this->map(Ids::DEEPSLATE_LAPIS_ORE, fn() => Blocks::DEEPSLATE_LAPIS_LAZULI_ORE()); + $this->map(Ids::DEEPSLATE_REDSTONE_ORE, fn() => Blocks::DEEPSLATE_REDSTONE_ORE()->setLit(false)); $this->map(Ids::DEEPSLATE_TILES, fn() => Blocks::DEEPSLATE_TILES()); $this->mapSlab(Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_TILE_SLAB()); $this->mapStairs(Ids::DEEPSLATE_TILE_STAIRS, fn() => Blocks::DEEPSLATE_TILE_STAIRS()); @@ -689,6 +698,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); + $this->map(Ids::LIT_DEEPSLATE_REDSTONE_ORE, fn() => Blocks::DEEPSLATE_REDSTONE_ORE()->setLit(true)); $this->map(Ids::LIT_FURNACE, function(Reader $in) : Block{ return Blocks::FURNACE() ->setFacing($in->readHorizontalFacing()) @@ -766,6 +776,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); $this->mapStairs(Ids::NETHER_BRICK_STAIRS, fn() => Blocks::NETHER_BRICK_STAIRS()); + $this->map(Ids::NETHER_GOLD_ORE, fn() => Blocks::NETHER_GOLD_ORE()); $this->map(Ids::NETHER_WART, function(Reader $in) : Block{ return Blocks::NETHER_WART() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 88a2fb9cf..3c2717a3e 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -211,6 +211,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("concrete", fn() => Blocks::CONCRETE()); $result->registerBlock("concrete_powder", fn() => Blocks::CONCRETE_POWDER()); $result->registerBlock("concretepowder", fn() => Blocks::CONCRETE_POWDER()); + $result->registerBlock("copper_ore", fn() => Blocks::COPPER_ORE()); $result->registerBlock("coral", fn() => Blocks::CORAL()); $result->registerBlock("coral_block", fn() => Blocks::CORAL_BLOCK()); $result->registerBlock("coral_fan", fn() => Blocks::CORAL_FAN()); @@ -284,6 +285,14 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("deepslate_tile_slab", fn() => Blocks::DEEPSLATE_TILE_SLAB()); $result->registerBlock("deepslate_tile_stairs", fn() => Blocks::DEEPSLATE_TILE_STAIRS()); $result->registerBlock("deepslate_tile_wall", fn() => Blocks::DEEPSLATE_TILE_WALL()); + $result->registerBlock("deepslate_coal_ore", fn() => Blocks::DEEPSLATE_COAL_ORE()); + $result->registerBlock("deepslate_copper_ore", fn() => Blocks::DEEPSLATE_COPPER_ORE()); + $result->registerBlock("deepslate_diamond_ore", fn() => Blocks::DEEPSLATE_DIAMOND_ORE()); + $result->registerBlock("deepslate_emerald_ore", fn() => Blocks::DEEPSLATE_EMERALD_ORE()); + $result->registerBlock("deepslate_gold_ore", fn() => Blocks::DEEPSLATE_GOLD_ORE()); + $result->registerBlock("deepslate_iron_ore", fn() => Blocks::DEEPSLATE_IRON_ORE()); + $result->registerBlock("deepslate_lapis_lazuli_ore", fn() => Blocks::DEEPSLATE_LAPIS_LAZULI_ORE()); + $result->registerBlock("deepslate_redstone_ore", fn() => Blocks::DEEPSLATE_REDSTONE_ORE()); $result->registerBlock("detector_rail", fn() => Blocks::DETECTOR_RAIL()); $result->registerBlock("diamond_block", fn() => Blocks::DIAMOND()); $result->registerBlock("diamond_ore", fn() => Blocks::DIAMOND_ORE()); @@ -738,6 +747,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("nether_brick_wall", fn() => Blocks::NETHER_BRICK_WALL()); $result->registerBlock("nether_bricks", fn() => Blocks::NETHER_BRICKS()); $result->registerBlock("nether_bricks_stairs", fn() => Blocks::NETHER_BRICK_STAIRS()); + $result->registerBlock("nether_gold_ore", fn() => Blocks::NETHER_GOLD_ORE()); $result->registerBlock("nether_portal", fn() => Blocks::NETHER_PORTAL()); $result->registerBlock("nether_quartz_ore", fn() => Blocks::NETHER_QUARTZ_ORE()); $result->registerBlock("nether_reactor", fn() => Blocks::NETHER_REACTOR_CORE()); From f57cd95ad58e8121698dcedfe4cc620d844cb364 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 23:02:04 +0100 Subject: [PATCH 280/692] Added blast resistances to some blocks following values extracted from BDS --- src/block/BlockFactory.php | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index ab069c5e6..6fb7d0f1e 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -742,16 +742,16 @@ class BlockFactory{ private function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones - $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0))); - $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); $this->register(new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); $this->register(new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); $this->register(new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); - $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); $this->register(new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); $this->register(new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); $this->register(new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); @@ -790,29 +790,26 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $this->register(new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); - //TODO: check blast resistance - $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 - $this->register(new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0))); - //TODO: check blast resistance - $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); $this->register(new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); $this->register(new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); $this->register(new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); - //TODO: check blast resistance - $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); $this->register(new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); $this->register(new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); From 638d03846cfeff410d9ba70673a6ea58c7a18126 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 23:11:12 +0100 Subject: [PATCH 281/692] Added blast resistance for cobbled and polished deepslate --- src/block/BlockFactory.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 6fb7d0f1e..b716d5c53 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -817,14 +817,14 @@ class BlockFactory{ $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); //TODO: check blast resistance - $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); $this->register(new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); $this->register(new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); $this->register(new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); //TODO: check blast resistance - $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); $this->register(new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); $this->register(new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); From ebe67822955b1b17c8d98017850a16031c433147 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 5 Jul 2022 23:37:55 +0100 Subject: [PATCH 282/692] Remove TODO comment --- src/block/BlockFactory.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index b716d5c53..c4c9c3b74 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -816,14 +816,12 @@ class BlockFactory{ $this->register(new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); - //TODO: check blast resistance $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); $this->register(new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); $this->register(new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); $this->register(new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); - //TODO: check blast resistance $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); $this->register(new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); $this->register(new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); From fe93609c8d2efba2ce285f9c94e75420d0cce09b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 00:02:51 +0100 Subject: [PATCH 283/692] Added mud bricks and related blocks --- src/block/BlockFactory.php | 10 ++++++++++ src/block/BlockTypeIds.php | 8 +++++++- src/block/VanillaBlocks.php | 8 ++++++++ .../convert/BlockObjectToBlockStateSerializer.php | 4 ++++ .../convert/BlockStateToBlockObjectDeserializer.php | 4 ++++ src/item/StringToItemParser.php | 4 ++++ .../phpunit/block/block_factory_consistency_check.json | 2 +- 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index c4c9c3b74..532470de9 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -567,6 +567,7 @@ class BlockFactory{ $this->registerBlocksR14(); $this->registerBlocksR16(); $this->registerBlocksR17(); + $this->registerMudBlocks(); $this->registerOres(); } @@ -829,6 +830,15 @@ class BlockFactory{ $this->register(new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); } + private function registerMudBlocks() : void{ + $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + + $this->register(new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); + $this->register(new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); + $this->register(new Stair(new BID(Ids::MUD_BRICK_STAIRS), "Mud Brick Stairs", $mudBricksBreakInfo)); + $this->register(new Wall(new BID(Ids::MUD_BRICK_WALL), "Mud Brick Wall", $mudBricksBreakInfo)); + } + /** * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading * from disk, and also when being read at runtime. diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 3d23ec17e..227dcce2a 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -670,6 +670,12 @@ final class BlockTypeIds{ public const DEEPSLATE_COPPER_ORE = 10643; public const COPPER_ORE = 10644; public const NETHER_GOLD_ORE = 10645; + public const MUD = 10646; + public const MUD_BRICKS = 10647; + public const MUD_BRICK_SLAB = 10648; + public const MUD_BRICK_STAIRS = 10649; + public const MUD_BRICK_WALL = 10650; + public const PACKED_MUD = 10651; - public const FIRST_UNUSED_BLOCK_ID = 10646; + public const FIRST_UNUSED_BLOCK_ID = 10652; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 3955f6db7..4a2820b8b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -446,6 +446,10 @@ use pocketmine\utils\CloningRegistryTrait; * @method static Slab MOSSY_STONE_BRICK_SLAB() * @method static Stair MOSSY_STONE_BRICK_STAIRS() * @method static Wall MOSSY_STONE_BRICK_WALL() + * @method static Opaque MUD_BRICKS() + * @method static Slab MUD_BRICK_SLAB() + * @method static Stair MUD_BRICK_STAIRS() + * @method static Wall MUD_BRICK_WALL() * @method static MushroomStem MUSHROOM_STEM() * @method static Mycelium MYCELIUM() * @method static Netherrack NETHERRACK() @@ -1087,6 +1091,10 @@ final class VanillaBlocks{ self::register("mossy_stone_brick_stairs", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_STAIRS)); self::register("mossy_stone_brick_wall", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_WALL)); self::register("mossy_stone_bricks", $factory->fromTypeId(Ids::MOSSY_STONE_BRICKS)); + self::register("mud_brick_slab", $factory->fromTypeId(Ids::MUD_BRICK_SLAB)); + self::register("mud_brick_stairs", $factory->fromTypeId(Ids::MUD_BRICK_STAIRS)); + self::register("mud_brick_wall", $factory->fromTypeId(Ids::MUD_BRICK_WALL)); + self::register("mud_bricks", $factory->fromTypeId(Ids::MUD_BRICKS)); self::register("mushroom_stem", $factory->fromTypeId(Ids::MUSHROOM_STEM)); self::register("mycelium", $factory->fromTypeId(Ids::MYCELIUM)); self::register("nether_brick_fence", $factory->fromTypeId(Ids::NETHER_BRICK_FENCE)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 85795b2a9..fd32ad55b 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -891,6 +891,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); $this->mapStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), Ids::MOSSY_STONE_BRICK_STAIRS); $this->map(Blocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); + $this->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS); + $this->mapSlab(Blocks::MUD_BRICK_SLAB(), Ids::MUD_BRICK_SLAB, Ids::MUD_BRICK_DOUBLE_SLAB); + $this->mapStairs(Blocks::MUD_BRICK_STAIRS(), Ids::MUD_BRICK_STAIRS); + $this->map(Blocks::MUD_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::MUD_BRICK_WALL))); $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 38c719b46..948730dfa 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -772,6 +772,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); $this->mapStairs(Ids::MOSSY_COBBLESTONE_STAIRS, fn() => Blocks::MOSSY_COBBLESTONE_STAIRS()); $this->mapStairs(Ids::MOSSY_STONE_BRICK_STAIRS, fn() => Blocks::MOSSY_STONE_BRICK_STAIRS()); + $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); + $this->mapSlab(Ids::MUD_BRICK_SLAB, Ids::MUD_BRICK_DOUBLE_SLAB, fn() => Blocks::MUD_BRICK_SLAB()); + $this->mapStairs(Ids::MUD_BRICK_STAIRS, fn() => Blocks::MUD_BRICK_STAIRS()); + $this->map(Ids::MUD_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::MUD_BRICK_WALL(), $in)); $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 3c2717a3e..f66c9a206 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -738,6 +738,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mossy_stone_brick_stairs", fn() => Blocks::MOSSY_STONE_BRICK_STAIRS()); $result->registerBlock("mossy_stone_brick_wall", fn() => Blocks::MOSSY_STONE_BRICK_WALL()); $result->registerBlock("mossy_stone_bricks", fn() => Blocks::MOSSY_STONE_BRICKS()); + $result->registerBlock("mud_bricks", fn() => Blocks::MUD_BRICKS()); + $result->registerBlock("mud_brick_slab", fn() => Blocks::MUD_BRICK_SLAB()); + $result->registerBlock("mud_brick_stairs", fn() => Blocks::MUD_BRICK_STAIRS()); + $result->registerBlock("mud_brick_wall", fn() => Blocks::MUD_BRICK_WALL()); $result->registerBlock("mushroom_stem", fn() => Blocks::MUSHROOM_STEM()); $result->registerBlock("mycelium", fn() => Blocks::MYCELIUM()); $result->registerBlock("nether_brick_block", fn() => Blocks::NETHER_BRICKS()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index c702e217b..ac1409da3 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160448":"Coal Ore","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5182976":"Diamond Ore","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250048":"Emerald Ore","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5261824":"Gold Ore","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5276672":"Iron Ore","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5288448":"Lapis Lazuli Ore","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307392":"Nether Quartz Ore","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5347840":"Redstone Ore","5347841":"Redstone Ore","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall","5451264":"Mud Bricks","5451776":"Mud Brick Slab","5451777":"Mud Brick Slab","5451778":"Mud Brick Slab","5452288":"Mud Brick Stairs","5452289":"Mud Brick Stairs","5452290":"Mud Brick Stairs","5452291":"Mud Brick Stairs","5452292":"Mud Brick Stairs","5452293":"Mud Brick Stairs","5452294":"Mud Brick Stairs","5452295":"Mud Brick Stairs","5452800":"Mud Brick Wall","5452801":"Mud Brick Wall","5452802":"Mud Brick Wall","5452804":"Mud Brick Wall","5452805":"Mud Brick Wall","5452806":"Mud Brick Wall","5452808":"Mud Brick Wall","5452809":"Mud Brick Wall","5452810":"Mud Brick Wall","5452816":"Mud Brick Wall","5452817":"Mud Brick Wall","5452818":"Mud Brick Wall","5452820":"Mud Brick Wall","5452821":"Mud Brick Wall","5452822":"Mud Brick Wall","5452824":"Mud Brick Wall","5452825":"Mud Brick Wall","5452826":"Mud Brick Wall","5452832":"Mud Brick Wall","5452833":"Mud Brick Wall","5452834":"Mud Brick Wall","5452836":"Mud Brick Wall","5452837":"Mud Brick Wall","5452838":"Mud Brick Wall","5452840":"Mud Brick Wall","5452841":"Mud Brick Wall","5452842":"Mud Brick Wall","5452864":"Mud Brick Wall","5452865":"Mud Brick Wall","5452866":"Mud Brick Wall","5452868":"Mud Brick Wall","5452869":"Mud Brick Wall","5452870":"Mud Brick Wall","5452872":"Mud Brick Wall","5452873":"Mud Brick Wall","5452874":"Mud Brick Wall","5452880":"Mud Brick Wall","5452881":"Mud Brick Wall","5452882":"Mud Brick Wall","5452884":"Mud Brick Wall","5452885":"Mud Brick Wall","5452886":"Mud Brick Wall","5452888":"Mud Brick Wall","5452889":"Mud Brick Wall","5452890":"Mud Brick Wall","5452896":"Mud Brick Wall","5452897":"Mud Brick Wall","5452898":"Mud Brick Wall","5452900":"Mud Brick Wall","5452901":"Mud Brick Wall","5452902":"Mud Brick Wall","5452904":"Mud Brick Wall","5452905":"Mud Brick Wall","5452906":"Mud Brick Wall","5452928":"Mud Brick Wall","5452929":"Mud Brick Wall","5452930":"Mud Brick Wall","5452932":"Mud Brick Wall","5452933":"Mud Brick Wall","5452934":"Mud Brick Wall","5452936":"Mud Brick Wall","5452937":"Mud Brick Wall","5452938":"Mud Brick Wall","5452944":"Mud Brick Wall","5452945":"Mud Brick Wall","5452946":"Mud Brick Wall","5452948":"Mud Brick Wall","5452949":"Mud Brick Wall","5452950":"Mud Brick Wall","5452952":"Mud Brick Wall","5452953":"Mud Brick Wall","5452954":"Mud Brick Wall","5452960":"Mud Brick Wall","5452961":"Mud Brick Wall","5452962":"Mud Brick Wall","5452964":"Mud Brick Wall","5452965":"Mud Brick Wall","5452966":"Mud Brick Wall","5452968":"Mud Brick Wall","5452969":"Mud Brick Wall","5452970":"Mud Brick Wall","5453056":"Mud Brick Wall","5453057":"Mud Brick Wall","5453058":"Mud Brick Wall","5453060":"Mud Brick Wall","5453061":"Mud Brick Wall","5453062":"Mud Brick Wall","5453064":"Mud Brick Wall","5453065":"Mud Brick Wall","5453066":"Mud Brick Wall","5453072":"Mud Brick Wall","5453073":"Mud Brick Wall","5453074":"Mud Brick Wall","5453076":"Mud Brick Wall","5453077":"Mud Brick Wall","5453078":"Mud Brick Wall","5453080":"Mud Brick Wall","5453081":"Mud Brick Wall","5453082":"Mud Brick Wall","5453088":"Mud Brick Wall","5453089":"Mud Brick Wall","5453090":"Mud Brick Wall","5453092":"Mud Brick Wall","5453093":"Mud Brick Wall","5453094":"Mud Brick Wall","5453096":"Mud Brick Wall","5453097":"Mud Brick Wall","5453098":"Mud Brick Wall","5453120":"Mud Brick Wall","5453121":"Mud Brick Wall","5453122":"Mud Brick Wall","5453124":"Mud Brick Wall","5453125":"Mud Brick Wall","5453126":"Mud Brick Wall","5453128":"Mud Brick Wall","5453129":"Mud Brick Wall","5453130":"Mud Brick Wall","5453136":"Mud Brick Wall","5453137":"Mud Brick Wall","5453138":"Mud Brick Wall","5453140":"Mud Brick Wall","5453141":"Mud Brick Wall","5453142":"Mud Brick Wall","5453144":"Mud Brick Wall","5453145":"Mud Brick Wall","5453146":"Mud Brick Wall","5453152":"Mud Brick Wall","5453153":"Mud Brick Wall","5453154":"Mud Brick Wall","5453156":"Mud Brick Wall","5453157":"Mud Brick Wall","5453158":"Mud Brick Wall","5453160":"Mud Brick Wall","5453161":"Mud Brick Wall","5453162":"Mud Brick Wall","5453184":"Mud Brick Wall","5453185":"Mud Brick Wall","5453186":"Mud Brick Wall","5453188":"Mud Brick Wall","5453189":"Mud Brick Wall","5453190":"Mud Brick Wall","5453192":"Mud Brick Wall","5453193":"Mud Brick Wall","5453194":"Mud Brick Wall","5453200":"Mud Brick Wall","5453201":"Mud Brick Wall","5453202":"Mud Brick Wall","5453204":"Mud Brick Wall","5453205":"Mud Brick Wall","5453206":"Mud Brick Wall","5453208":"Mud Brick Wall","5453209":"Mud Brick Wall","5453210":"Mud Brick Wall","5453216":"Mud Brick Wall","5453217":"Mud Brick Wall","5453218":"Mud Brick Wall","5453220":"Mud Brick Wall","5453221":"Mud Brick Wall","5453222":"Mud Brick Wall","5453224":"Mud Brick Wall","5453225":"Mud Brick Wall","5453226":"Mud Brick Wall","5160448":"Coal Ore","5449728":"Copper Ore","5182976":"Diamond Ore","5250048":"Emerald Ore","5261824":"Gold Ore","5276672":"Iron Ore","5288448":"Lapis Lazuli Ore","5347840":"Redstone Ore","5347841":"Redstone Ore","5445632":"Deepslate Coal Ore","5449216":"Deepslate Copper Ore","5446144":"Deepslate Diamond Ore","5446656":"Deepslate Emerald Ore","5448704":"Deepslate Gold Ore","5448192":"Deepslate Iron Ore","5447168":"Deepslate Lapis Lazuli Ore","5447680":"Deepslate Redstone Ore","5447681":"Deepslate Redstone Ore","5307392":"Nether Quartz Ore","5450240":"Nether Gold Ore"},"stateDataBits":9} \ No newline at end of file From 64e93ae4e1b554b270fecb9e9543defa9ea06ccb Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Wed, 6 Jul 2022 16:02:43 +0300 Subject: [PATCH 284/692] Fixed spyglass using animation (#5137) --- src/item/Spyglass.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/item/Spyglass.php b/src/item/Spyglass.php index 1427a71f5..974715c25 100644 --- a/src/item/Spyglass.php +++ b/src/item/Spyglass.php @@ -23,9 +23,15 @@ declare(strict_types=1); namespace pocketmine\item; -class Spyglass extends Item{ +use pocketmine\player\Player; + +class Spyglass extends Item implements Releasable{ public function getMaxStackSize() : int{ return 1; } + + public function canStartUsingItem(Player $player) : bool{ + return true; + } } From 494cb580f3741d8853f79d21ce26737377eb40f9 Mon Sep 17 00:00:00 2001 From: Alexey <45711510+Gaprix@users.noreply.github.com> Date: Wed, 6 Jul 2022 16:06:52 +0300 Subject: [PATCH 285/692] Add sound after wood stripping (#5124) --- src/block/Wood.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/block/Wood.php b/src/block/Wood.php index d31d65f0e..276c4b679 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -31,6 +31,7 @@ use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; +use pocketmine\world\sound\ItemUseOnBlockSound; class Wood extends Opaque{ use PillarRotationTrait; @@ -73,6 +74,7 @@ class Wood extends Opaque{ $item->applyDamage(1); $this->stripped = true; $this->position->getWorld()->setBlock($this->position, $this); + $this->position->getWorld()->addSound($this->position, new ItemUseOnBlockSound($this)); return true; } return false; From 46b79fbe8564870b239527b1cb65aa65d0c1f1af Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 14:11:33 +0100 Subject: [PATCH 286/692] StringToItemParser: fixed light_15 and light_block_15 aliases being missing --- src/item/StringToItemParser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index f66c9a206..777eadd90 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -71,7 +71,7 @@ final class StringToItemParser extends StringToTParser{ //wall and floor coral fans are the same item $result->registerBlock($prefix("coral_fan"), fn() => Blocks::CORAL_FAN()->setCoralType($coralType)); } - for($i = Light::MIN_LIGHT_LEVEL; $i < Light::MAX_LIGHT_LEVEL; $i++){ + for($i = Light::MIN_LIGHT_LEVEL; $i <= Light::MAX_LIGHT_LEVEL; $i++){ //helper aliases, since we don't support passing data values in /give $result->registerBlock("light_$i", fn() => Blocks::LIGHT()->setLightLevel($i)); $result->registerBlock("light_block_$i", fn() => Blocks::LIGHT()->setLightLevel($i)); From 5c4288de01fb163caf57831a7a02d6dbdd91b933 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 14:23:32 +0100 Subject: [PATCH 287/692] block/Light: fixed placement when clicking on another light block closes #5132 --- src/block/Light.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/block/Light.php b/src/block/Light.php index f21fc35f9..b2d39fb9f 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -58,6 +58,11 @@ final class Light extends Flowable{ public function canBeReplaced() : bool{ return true; } + public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector, int $face, bool $isClickedBlock) : bool{ + //light blocks behave like solid blocks when placing them on another light block + return $blockReplace->canBeReplaced() && $blockReplace->getTypeId() !== $this->getTypeId(); + } + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $this->level = $this->level === self::MAX_LIGHT_LEVEL ? self::MIN_LIGHT_LEVEL : From dc8f65c0dd5d75be72a6e6b36ccd44b6b76db125 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 14:33:27 +0100 Subject: [PATCH 288/692] Remove unnecessary BlockStateDictionary usages --- build/generate-block-serializer-consts.php | 21 ++++++++------------- tools/generate-block-palette-spec.php | 12 +----------- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php index d2ea78481..4c3e156ab 100644 --- a/build/generate-block-serializer-consts.php +++ b/build/generate-block-serializer-consts.php @@ -30,8 +30,6 @@ use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\NbtException; use pocketmine\nbt\TreeRoot; -use pocketmine\network\mcpe\convert\BlockStateDictionary; -use pocketmine\network\mcpe\convert\BlockStateDictionaryEntry; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; @@ -68,11 +66,14 @@ class BlockPaletteReport{ public array $seenStateValues = []; } -function generateBlockPaletteReport(BlockStateDictionary $dictionary) : BlockPaletteReport{ +/** + * @param BlockStateData[] $states + * @phpstan-param list $states + */ +function generateBlockPaletteReport(array $states) : BlockPaletteReport{ $result = new BlockPaletteReport(); - foreach($dictionary->getStates() as $state){ - $stateData = $state->getStateData(); + foreach($states as $stateData){ $name = $stateData->getName(); $result->seenTypes[$name] = $name; foreach($stateData->getStates() as $k => $v){ @@ -190,14 +191,8 @@ try{ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); } -$entries = []; -$fakeMeta = []; -foreach($states as $state){ - $fakeMeta[$state->getName()] ??= 0; - $entries[] = new BlockStateDictionaryEntry($state, $fakeMeta[$state->getName()]++); -} -$dictionary = new BlockStateDictionary($entries); -$report = generateBlockPaletteReport($dictionary); + +$report = generateBlockPaletteReport($states); generateBlockIds(array_values($report->seenTypes)); generateBlockStateNames($report); generateBlockStringValues($report); diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index c3b04b0e5..376359ffc 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -30,8 +30,6 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; -use pocketmine\network\mcpe\convert\BlockStateDictionary; -use pocketmine\network\mcpe\convert\BlockStateDictionaryEntry; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; @@ -64,18 +62,10 @@ try{ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); } -$entries = []; -$fakeMeta = []; -foreach($states as $state){ - $fakeMeta[$state->getName()] ??= 0; - $entries[] = new BlockStateDictionaryEntry($state, $fakeMeta[$state->getName()]++); -} -$palette = new BlockStateDictionary($entries); $reportMap = []; -foreach($palette->getStates() as $entry){ - $state = $entry->getStateData(); +foreach($states as $state){ $name = $state->getName(); $reportMap[$name] ??= []; foreach($state->getStates() as $propertyName => $value){ From a8728a02f6f2e8ef917d3902902a54f793bfaec5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 14:37:46 +0100 Subject: [PATCH 289/692] BlockStateDictionary: extract a more generic helper method for decoding block palette files --- build/generate-block-serializer-consts.php | 9 ++------- .../mcpe/convert/BlockStateDictionary.php | 20 ++++++++++++++----- tools/generate-block-palette-spec.php | 10 ++-------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php index 4c3e156ab..9fd944157 100644 --- a/build/generate-block-serializer-consts.php +++ b/build/generate-block-serializer-consts.php @@ -29,11 +29,9 @@ use pocketmine\data\bedrock\block\BlockStateStringValues; use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\NbtException; -use pocketmine\nbt\TreeRoot; -use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; +use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; -use function array_map; use function array_values; use function asort; use function count; @@ -183,10 +181,7 @@ if($paletteRaw === false){ } try{ - $states = array_map( - fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), - (new NetworkNbtSerializer())->readMultiple($paletteRaw) - ); + $states = BlockStateDictionary::loadPaletteFromString($paletteRaw); }catch(NbtException){ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 584b7db62..6322f5255 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\nbt\NbtDataException; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use function array_map; @@ -107,6 +108,19 @@ final class BlockStateDictionary{ */ public function getStates() : array{ return $this->states; } + /** + * @return BlockStateData[] + * @phpstan-return list + * + * @throws NbtDataException + */ + public static function loadPaletteFromString(string $blockPaletteContents) : array{ + return array_map( + fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), + (new NetworkNbtSerializer())->readMultiple($blockPaletteContents) + ); + } + public static function loadFromString(string $blockPaletteContents, string $metaMapContents) : self{ $metaMap = json_decode($metaMapContents, flags: JSON_THROW_ON_ERROR); if(!is_array($metaMap)){ @@ -114,12 +128,8 @@ final class BlockStateDictionary{ } $entries = []; - $states = array_map( - fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), - (new NetworkNbtSerializer())->readMultiple($blockPaletteContents) - ); - foreach($states as $i => $state){ + foreach(self::loadPaletteFromString($blockPaletteContents) as $i => $state){ $meta = $metaMap[$i] ?? null; if($meta === null){ throw new \InvalidArgumentException("Missing associated meta value for state $i (" . $state->toNbt() . ")"); diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index 376359ffc..b41c1334a 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -23,17 +23,14 @@ declare(strict_types=1); namespace pocketmine\tools\generate_block_palette_spec; -use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; -use pocketmine\nbt\TreeRoot; -use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; +use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; -use function array_map; use function array_values; use function count; use function dirname; @@ -54,10 +51,7 @@ if(count($argv) !== 3){ [, $inputFile, $outputFile] = $argv; try{ - $states = array_map( - fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), - (new NetworkNbtSerializer())->readMultiple(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))) - ); + $states = BlockStateDictionary::loadPaletteFromString(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))); }catch(NbtException){ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); From a377795db9eddbd2f8e42e59375288a90611a037 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Wed, 6 Jul 2022 16:57:07 +0300 Subject: [PATCH 290/692] Fixed SoulFire damage (#5138) --- src/block/BaseFire.php | 4 +++- src/block/Fire.php | 4 ++++ src/block/SoulFire.php | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/block/BaseFire.php b/src/block/BaseFire.php index f60b7677d..2f95ca1a0 100644 --- a/src/block/BaseFire.php +++ b/src/block/BaseFire.php @@ -41,7 +41,7 @@ abstract class BaseFire extends Flowable{ } public function onEntityInside(Entity $entity) : bool{ - $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); + $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, $this->getFireDamage()); $entity->attack($ev); $ev = new EntityCombustByBlockEvent($this, $entity, 8); @@ -55,6 +55,8 @@ abstract class BaseFire extends Flowable{ return true; } + abstract protected function getFireDamage() : int; + public function getDropsForCompatibleTool(Item $item) : array{ return []; } diff --git a/src/block/Fire.php b/src/block/Fire.php index a176941cd..503dd1dc3 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -61,6 +61,10 @@ class Fire extends BaseFire{ return $this; } + protected function getFireDamage() : int{ + return 1; + } + public function onNearbyBlockChange() : void{ $down = $this->getSide(Facing::DOWN); if(SoulFire::canBeSupportedBy($down)){ diff --git a/src/block/SoulFire.php b/src/block/SoulFire.php index 61d7b37ed..03729c75e 100644 --- a/src/block/SoulFire.php +++ b/src/block/SoulFire.php @@ -31,6 +31,10 @@ final class SoulFire extends BaseFire{ return 10; } + protected function getFireDamage() : int{ + return 2; + } + public static function canBeSupportedBy(Block $block) : bool{ //TODO: this really ought to use some kind of tag system $id = $block->getTypeId(); From 88a5a9547919cc2489052ccf2c36437b46e9e904 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 17:26:15 +0100 Subject: [PATCH 291/692] Block: mark new functions as @internal --- src/block/Block.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/block/Block.php b/src/block/Block.php index 2d55a3879..cddfe0440 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -97,6 +97,9 @@ class Block{ public function getRequiredStateDataBits() : int{ return 0; } + /** + * @internal + */ final public function decodeTypeData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); $givenBits = $typeBits; @@ -109,6 +112,9 @@ class Block{ } } + /** + * @internal + */ final public function decodeStateData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); @@ -131,6 +137,9 @@ class Block{ //NOOP } + /** + * @internal + */ final public function computeTypeData() : int{ $typeBits = $this->getRequiredTypeDataBits(); $requiredBits = $typeBits; From d40e8648210727848a5ca053054bc2ef7a0e6f40 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 21:15:27 +0100 Subject: [PATCH 292/692] Item: update documentation of legacyJsonDeserialize() --- src/item/Item.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/item/Item.php b/src/item/Item.php index b12bb080d..4b3cd5aee 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -585,9 +585,9 @@ class Item implements \JsonSerializable{ } /** - * @deprecated This is intended for deserializing legacy data from the old crafting JSON and creative JSON data. + * Deserializes item JSON data produced by json_encode()ing Item instances in older versions of PocketMine-MP. + * This method exists solely to allow upgrading old JSON data stored by plugins. * - * Returns an Item from properties created in an array by {@link Item#jsonSerialize} * @param mixed[] $data * * @throws SavedDataLoadingException From 06d3fc288087fae0693ece04c9a5e40cc30418b7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 21:41:13 +0100 Subject: [PATCH 293/692] Changelog for 5.0.0-ALPHA1 --- changelogs/5.0-alpha.md | 302 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 changelogs/5.0-alpha.md diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md new file mode 100644 index 000000000..9eeb54e9a --- /dev/null +++ b/changelogs/5.0-alpha.md @@ -0,0 +1,302 @@ +**For Minecraft: Bedrock Edition 1.19.0** + +# 5.0.0-ALPHA1 +Released 6th July 2022. + +This is a development snapshot of 5.0.0, an upcoming major update to PocketMine-MP. + +## WARNING +**This is an ALPHA release.** It is an early development snapshot of the upcoming 5.0.0 release. + +This means it is LIKELY to be unstable, and/or have performance issues not found in the latest stable releases. + +**BACK UP your data before testing this.** Any world or player data loaded in 5.0.0 will not work in 4.x due to backwards-incompatible storage format changes, and may also not work in future snapshots of 5.0.0. + +In addition, there are several breaking API changes. Plugins for 4.x may require code changes to run on this version. + +The API is **not finalized**. You should expect further changes in later alphas. + +## Core +- Worlds are now saved according to the Bedrock 1.19.0 format. +- Worlds generated by Bedrock from 1.13.0 and up are now supported (previously, only worlds up to 1.12 were supported). +- `/particle` now accepts strings for particle data instead of integers. +- `/particle` no longer accepts integers for block or item IDs. +- The usage of `blockcrack`, `iconcrack` and `blockdust` particle types in `/particle` now follows the same pattern as other particle types, with the data for each being passed in the `data` parameter instead of being baked into the particle name. + +## Gameplay +### Blocks +- Added the following new blocks: + - Amethyst Block + - Ancient Debris + - Basalt + - Blackstone blocks, slabs, stairs, and walls + - Calcite + - Chiseled Deepslate + - Chiseled Nether Bricks + - Chiseled Polished Blackstone + - Cobbled Deepslate blocks, slabs, stairs, and walls + - Copper Ore + - Cracked Deepslate Bricks + - Crached Deepslate Tiles + - Cracked Nether Bricks + - Cracked Polished Blackstone Bricks + - Crimson buttons, doors, fences, fence gates, hyphae, planks, pressure plates, signs, slabs, stairs, stems, and trapdoors + - Deepslate + - Deepslate Bricks blocks, slabs, stairs, and walls + - Deepslate Ores (coal, copper, diamond, emerald, gold, iron, lapis lazuli, redstone) + - Deepslate Tiles blocks, slabs, stairs, and walls + - Honeycomb Block + - Light Block + - Mangrove buttons, doors, fences, fence gates, logs, planks, pressure plates, signs, slabs, stairs, trapdoors, and wood + - Mud Bricks blocks, slabs, stairs, and walls + - Nether Gold Ore + - Polished Basalt + - Polished Blackstone blocks, buttons, pressure plates, slabs, stairs, and walls + - Polished Blackstone Bricks blocks, slabs, stairs, and walls + - Polished Deepslate blocks, slabs, stairs, and walls + - Quartz Bricks + - Shroomlight + - Smooth Basalt + - Soul Fire + - Soul Lantern + - Soul Soil + - Soul Torch + - Tuff + - Warped buttons, doors, fences, fence gates, hyphae, planks, pressure plates, signs, slabs, stairs, stems, and trapdoors +- Added support for basalt generators +- Iron Ore and Gold Ore now drop Raw Iron and Raw Gold respectively, instead of the ore blocks. +- Item frames can now be placed on the top and bottom of blocks. +- All-sided logs ("wood", for want of a better name) can now be placed in X, Y, and Z orientations. +- Walls now connect when placed, following the pre-1.16 logic. (1.16 logic is planned to be implemented, but currently low priority.) +- Stripping logs by right-clicking them with an axe is now supported. + +### Items +- Added the following new items: + - Amethyst Shard + - Copper Ingot + - Disc Fragment (5) + - Echo Shard + - Glow Ink Sac + - Honeycomb + - Phantom Membrane + - Raw Copper + - Raw Gold + - Raw Iron + - Spyglass + +## API +### General +- Protected and public properties now use native property types wherever possible. +- Parameter and return typehints have been applied in many places where it wasn't previously possible. + +### `pocketmine\block` +#### Runtime block representation +- Blocks no longer use internal Minecraft IDs and metadata to identify themselves. All APIs associated with legacy IDs and meta have been removed. +- A new set of runtime IDs generated from `VanillaBlocks` is used to identify block types. These IDs are defined in `BlockTypeIds`. + - These new IDs are used for runtime representation of blocks on chunks, and for type comparison purposes. + - Block type IDs are used at **runtime only**. They should **NOT** be stored in configs or databases, as they are subject to change without warning. +- Block state properties (e.g. facing, colour, etc.) are now represented by PM-specific state data instead of legacy metadata. The state data consists of: + - Dynamic type data - this is retained by items when the block is broken (colour, wet/dry, coral type, etc.) - handled by `Block->decodeType()` and `Block->encodeType()` + - State data - this is discarded when the block is broken (facing direction, lit/unlit, powered/unpowered, etc.) - handled by `Block->decodeState()` and `Block->encodeState()` + +**Block type IDs, and state/type data, are intended for use at RUNTIME only. The values of type IDs and state data may change without warning. They should NOT be saved in configs or databases.** + +#### Implementing new blocks +To register a new block, the following changes are now required: + +- Add a new type ID to `BlockTypeIds` +- Register the block in `BlockFactory` +- Amend `VanillaBlocks` to include the new block +- Amend `BlockStateToBlockObjectDeserializer` to deserialize the block from disk +- Amend `BlockObjectToBlockStateSerializer` to serialize the block for disk +- Optionally, amend `StringToItemParser` to add string alias(es) for the block, so that it can be given via `/give` + +This is admittedly rather more of a hassle than in the old days, but that's the price of abstraction. Research is underway for ways to improve this without spaghettifying the code again. + +#### Change list +- The following classes have been removed: + - `BlockIdentifierFlattened` + - `BlockLegacyIds` + - `BlockLegacyMetadata` + - `utils\ColorInMetadataTrait` - `utils\ColoredTrait` now implements colour type data serialization uniformly + - `utils\InvalidBlockStateException` - this has been superseded by `pocketmine\data\runtime\InvalidSerializedRuntimeDataException` + - `utils\NormalHorizontalFacingInMetadataTrait` - `utils\HorizontalFacingTrait` now implements facing type data serialization uniformly + - `utils\PillarRotationInMetadataTrait` - `utils\PillarRotationTrait` now implements rotation type data serialization uniformly + - `utils\BlockDataSerializer` +- The following classes have been added: + - `BaseFire` + - `SoulFire` + - `BlockTypeIds` + - This is a generated enum of PocketMine-MP-specific block type IDs + - There is one for every entry in `VanillaBlocks` + - Do NOT save these IDs in a config or database, as they may change without warning + - Block type IDs are intended for comparison purposes only + - Block type IDs cannot be negative + - `CopperOre` + - `GoldOre` + - `IronOre` + - `Light` + - `NetherGoldOre` + - `utils\WallConnectionType` - enum of all possible wall connection types + - `utils\WoodType` - enum of all possible wood types, used for wood material blocks like planks and logs + - `utils\WoodTypeTrait` +- The following API methods have been removed: + - `Block->getId()` - for type comparisons, use `Block->getTypeId()` instead + - `Block->getMeta()` - for state comparisons, use `Block->getStateId()` instead + - `Block->readStateFromData()` + - `Block->writeStateToMeta()` + - `Block->writeStateToItemMeta()` + - `Block->getStateBitmask()` + - `BlockFactory->get()` + - To get a block at runtime, e.g. stone, use `VanillaBlocks::STONE()` + - To load a block from old config or database data: + 1. Use `GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta()` to convert it to modern data + 2. Pass the data to `GlobalBlockStateHandlers::getDeserializer()` to get a blockstate ID + 3. Pass the blockstate ID to `BlockFactory::fromStateId()` to get a `Block` instance + - `BlockIdentifier->getBlockId()` + - `BlockIdentifier->getAllBlockIds()` + - `BlockIdentifier->getVariant()` + - `BlockIdentifier->getItemId()` + - `Door->isPowered()` + - `Door->setPowered()` + - `Skull->isNoDrops()` + - `Skull->setNoDrops()` + - `VanillaBlocks::*_GLAZED_TERRACOTTA()` - use `VanillaBlocks::GLAZED_TERRACOTTA()->setColor(DyeColor::WHATEVER())` instead + - `utils\FallableTrait->getId()` is no longer required + - `utils\FallableTrait->getMeta()` is no longer required +- The following constants have been renamed: + - `Block::INTERNAL_METADATA_BITS` -> `Block::INTERNAL_STATE_DATA_BITS` + - `Block::INTERNAL_METADATA_MASK` -> `Block::INTERNAL_STATE_DATA_MASK` +- The following API methods have been renamed: + - `Block->getFullId()` -> `Block->getStateId()` +- The following API methods have signature changes: + - `BlockIdentifier->__construct()` now accepts `int $blockTypeId`, and no longer accepts `int $blockId, int $variant, ?int $itemId` + - `ItemFrame->getFacing()` may now return `Facing::UP` and `Facing::DOWN` + - `ItemFrame->setFacing()` now accepts `Facing::UP` and `Facing::DOWN` +- The following API methods have been added: + - `protected Block->decodeState()` - encodes the block's state properties, e.g. facing, powered/unpowered, etc. + - `protected Block->decodeType()` - encodes the block's type properties, e.g. colour, wet/dry, coral type, etc. + - `public Block->getRequiredStateDataBits()` - returns the number of bits required to encode the block's state data + - `public Block->getRequiredTypeDataBits()` - returns the number of bits required to encode the block's type data + - `public BlockIdentifier->getBlockTypeId()` - returns the block's type ID according to `BlockTypeIds` + - `public GlazedTerracotta->getColor()` (from `ColoredTrait`) - this was previously unsupported due to legacy limitations + - `public GlazedTerracotta->setColor()` (from `ColoredTrait`) - this was previously unsupported due to legacy limitations + - `public Wall->getConnections()` - returns the wall's connections and their types (see `utils\WallConnectionType`) + - `public Wall->setConnections()` - sets the wall's connections and their types (see `utils\WallConnectionType`) + - `public Wall->getConnection()` + - `public Wall->setConnection()` + - `public Wall->isPost()` + - `public Wall->setPost()` + - `public Wood->isStripped()` + - `public Wood->setStripped()` +- The following classes now use new traits, adding API methods and/or properties: + - `FenceGate` uses `utils\WoodTypeTrait` + - `GlazedTerracotta` uses `utils\ColoredTrait` + - `Planks` uses `utils\WoodTypeTrait` + - `Wood` uses `utils\WoodTypeTrait` + - `WoodenButton` uses `utils\WoodTypeTrait` + - `WoodenDoor` uses `utils\WoodTypeTrait` + - `WoodenFence` uses `utils\WoodTypeTrait` + - `WoodenPressurePlate` uses `utils\WoodTypeTrait` + - `WoodenSlab` uses `utils\WoodTypeTrait` + - `WoodenStairs` uses `utils\WoodTypeTrait` + - `WoodenTrapdoor` uses `utils\WoodTypeTrait` + +### `pocketmine\crafting` +- The following classes have been added: + - `RecipeIngredient` interface + - `ExactRecipeIngredient` - matches an exact item + - `MetaWildcardRecipeIngredient` - matches an item with the given legacy Minecraft ID, but any metadata value +- The following API methods have signature changes: + - `FurnaceRecipe->__construct()` now accepts `RecipeIngredient` instead of `Item` + - `FurnaceRecipe->getInput()` now returns `RecipeIngredient` instead of `Item` + - `PotionContainerChangeRecipe->__construct()` now accepts `string, RecipeIngredient, string` (using Minecraft string IDs instead of legacy integers). + - `PotionContainerChangeRecipe->getIngredient()` now returns `RecipeIngredient` instead of `Item`. + - `PotionContainerChangeRecipe->getInputItemId()` now returns `string` (using Minecraft string IDs instead of legacy integers). + - `PotionContainerChangeRecipe->getOutputItemId()` now returns `string` (using Minecraft string IDs instead of legacy integers). + - `PotionTypeRecipe->__construct()` now accepts `RecipeIngredient` instead of `Item` + - `PotionTypeRecipe->getIngredient()` now returns `RecipeIngredient` instead of `Item` + - `PotionTypeRecipe->getInput()` now returns `RecipeIngredient` instead of `Item` + - `ShapedRecipe->__construct()` now accepts `RecipeIngredient` instead of `Item` + - `ShapedRecipe->getIngredient()` now returns `?RecipeIngredient` instead of `?Item` + - `ShapedRecipe->getIngredientList()` now returns `RecipeIngredient[]` instead of `Item[]` + - `ShapedRecipe->getIngredientMap()` now returns `RecipeIngredient[][]` instead of `Item[][]` + - `ShapelessRecipe->__construct()` now accepts `RecipeIngredient` instead of `Item` + - `ShapelessRecipe->getIngredientList()` now returns `RecipeIngredient[]` instead of `Item[]` + +### `pocketmine\entity` +- `Entity` now declares new abstract methods which must be implemented by subclasses: + - `public Entity->getInitialDragMultiplier()` + - `public Entity->getInitialGravity()` + +### `pocketmine\item` +#### Runtime item representation +- Items no longer use internal Minecraft string IDs and metadata to identify themselves. All APIs associated with legacy IDs and/or meta have been removed. +- A new set of runtime item IDs generated from `VanillaItems` is now used to identify item types. These IDs are defined in `ItemTypeIds`. + - These new IDs are primarily intended for type comparison purposes. + - Item type IDs are used at **runtime only**. They should **NOT** be stored in configs or databases, as they are not guaranteed to remain the same between versions. +- In some cases, items may have additional "type data" which provides extra type information about an item. This replaces item metadata in some cases. + - Type data may be used to store dynamic type information such as dye colour, potion type, etc. + - Items must have the same type ID **and** type data in order to be stackable. +- Blocks, when represented as items: + - retain their block type data, but not state data (for example, different colours of concrete don't stack, but things like facing don't affect stackability) + - use the negative of their block type ID (e.g. a block with type ID `1` will have an item type ID of `-1`). +- Durable items (e.g. tools, armour) now use NBT `Damage` tag to store durability (like Minecraft 1.13+), instead of legacy meta values. + +**Item type IDs and type data are intended for RUNTIME use only. The values of type IDs and/or type data may change without warning. They should NOT be saved in configs or databases.** + +#### Implementing new items +To register a new item, the following changes are now required: + +- Add a new ID to `ItemTypeIds` +- Register the item in `ItemFactory` +- Amend `VanillaItems` to add the item +- Amend `ItemDeserializer` to add a deserializer for loading the item from disk +- Amend `ItemSerializer` to add a serializer for saving the item to disk +- Optionally, amend `StringToItemParser` to add string alias(es) for the item, so it can be given via `/give` + +Again, it's acknowledged this is rather more cumbersome than it should be, but this is an ongoing process. + +#### Change list +- `Item` is no longer `json_encode()`-able. + - The original purpose of this was to allow items to be serialized to JSON for crafting data generated from `CraftingDataPacket`. Due to changes in the generation methodology, bypassing `Item`s entirely, this is no longer necessary. + - `jsonSerialize()` requires the item to know about the method by which it will be serialized, creating a cyclic dependency between the `Item` implementation and its serialization method. + - It's relatively easy to write a replacement method to encode items to JSON as you desire. +- The following classes have been removed: + - `ItemIds` + - `Skull` + - `Bed` +- The following classes have been added: + - `CoralFan` + - `Spyglass` +- The following API methods have been added: + - `public Dye->setColor()` + - `public ItemIdentifer->getTypeId()` + - `public static ItemIdentifier::fromBlock()` + - `public Potion->setType()` + - `public SplashPotion->setType()` +- The following API methods have been removed: + - `Item->getId()` - for type comparisons, use `Item->getTypeId()` instead + - `Item->getMeta()` - use the item's specific API methods to compare information such as colour, potion type etc. + - `Item->hasAnyDamageValue()` - for meta wildcard recipe ingredients, use `pocketmine\crafting\MetaWildcardRecipeIngredient` instead + - `ItemFactory->get()` + - To get an item at runtime, e.g. iron ingot, use `VanillaItems::IRON_INGOT()` + - To get a block as an item, e.g. stone, use `VanillaBlocks::STONE()->asItem()` + - To load an item from legacy ID and meta: + 1. Use `GlobalItemDataHandlers::getUpgrader()->upgradeItemTypeDataInt()` to convert the legacy ID and meta to `ItemStackData` + 2. Pass the itemstack data to `GlobalItemDataHandlers::getDeserializer()` to get an `Item` instance + - `ItemFactory->remap()` + - `ItemIdentifier->getId()` + - `ItemIdentifier->getMeta()` +- The following API methods have been renamed: + - `Item::jsonDeserialize()` -> `Item::legacyJsonDeserialize()` + - `ItemFactory->getAllRegistered()` -> `ItemFactory->getAllKnownTypes()` +- The following API methods have signature changes: + - `ItemFactory->isRegistered()` no longer accepts a `$variant` parameter, and now expects an item type ID for the ID parameter + - `ItemIdentifier->__construct()` no longer accepts a `$variant` parameter, and now expects an item type ID for the ID parameter + - `LegacyStringToItemParser->addMapping()` now accepts a string for ID, instead of an integer + +### `pocketmine\world` +- The following classes have been added: + - `pocketmine\world\format\io\GlobalBlockStateHandlers` + - `pocketmine\world\format\io\GlobalItemDataHandlers` From ce8742433609fa04a8302b218e01e4413d722685 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 21:49:03 +0100 Subject: [PATCH 294/692] update changelog [ci skip] --- changelogs/5.0-alpha.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 9eeb54e9a..6acff1123 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -7,12 +7,11 @@ This is a development snapshot of 5.0.0, an upcoming major update to PocketMine- ## WARNING **This is an ALPHA release.** It is an early development snapshot of the upcoming 5.0.0 release. - This means it is LIKELY to be unstable, and/or have performance issues not found in the latest stable releases. -**BACK UP your data before testing this.** Any world or player data loaded in 5.0.0 will not work in 4.x due to backwards-incompatible storage format changes, and may also not work in future snapshots of 5.0.0. +**BACK UP your data before testing this.** This version will work with worlds and player data from 4.x, **BUT** any world or player data loaded in 5.0.0 **will not work in 4.x** due to backwards-incompatible storage format changes. -In addition, there are several breaking API changes. Plugins for 4.x may require code changes to run on this version. +In addition, there are a number of breaking API changes. Plugins for 4.x may require code changes to run on this version. The API is **not finalized**. You should expect further changes in later alphas. @@ -23,6 +22,12 @@ The API is **not finalized**. You should expect further changes in later alphas. - `/particle` no longer accepts integers for block or item IDs. - The usage of `blockcrack`, `iconcrack` and `blockdust` particle types in `/particle` now follows the same pattern as other particle types, with the data for each being passed in the `data` parameter instead of being baked into the particle name. +## Tools +- The following tool scripts have been added: + - `generate-block-palette-spec.php` - generates a JSON file with a readable overview of blocks, their state properties, and their possible values + - `generate-blockstate-upgrade-schema.php` - generates JSON blockstate upgrade schemas like those found in [BedrockBlockUpgradeSchema](https://github.com/pmmp/BedrockBlockUpgradeSchema) + - `generate-item-upgrade-schema.php` - generates JSON item ID/meta upgrade schemas like those found in [BedrockItemUpgradeSchema](https://github.com/pmmp/BedrockItemUpgradeSchema) + ## Gameplay ### Blocks - Added the following new blocks: From 30079f6fd0d5903315e12cbcff7abfe31c486536 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 21:52:37 +0100 Subject: [PATCH 295/692] Release 5.0.0-ALPHA1 --- changelogs/5.0-alpha.md | 2 +- src/VersionInfo.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 6acff1123..eade91d27 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -3,7 +3,7 @@ # 5.0.0-ALPHA1 Released 6th July 2022. -This is a development snapshot of 5.0.0, an upcoming major update to PocketMine-MP. +This is a development snapshot of 5.0.0, an upcoming major update to PocketMine-MP. This version includes many new improvements, including support for Bedrock worlds from 1.13 onwards, a large array of new blocks, and various changes to the plugin API. ## WARNING **This is an ALPHA release.** It is an early development snapshot of the upcoming 5.0.0 release. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 6c2f8f660..d1e059264 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0"; - public const IS_DEVELOPMENT_BUILD = true; + public const BASE_VERSION = "5.0.0-ALPHA1"; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From eb404bddb4da5953ce93c22350f4e51350a7fbd8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 21:52:37 +0100 Subject: [PATCH 296/692] 5.0.0-ALPHA2 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index d1e059264..b74de0e60 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA1"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA2"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 986daab51151dfa7d79140e5ee5838d916684c51 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 22:25:17 +0100 Subject: [PATCH 297/692] ItemFactory: remove dead TODO comment --- src/item/ItemFactory.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 5f124df54..0e59e120c 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -186,7 +186,6 @@ class ItemFactory{ $this->register(new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); $this->register(new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); - //the meta values for buckets are intentionally hardcoded because block IDs will change in the future $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); $this->register(new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); $this->register(new Melon(new IID(Ids::MELON), "Melon")); From ae70c63798bab3aa951b985a5f71853a2178e46c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 23:01:17 +0100 Subject: [PATCH 298/692] Added tinted glass --- src/block/BlockFactory.php | 2 ++ src/block/BlockTypeIds.php | 2 +- src/block/TintedGlass.php | 31 +++++++++++++++++++ src/block/VanillaBlocks.php | 2 ++ .../BlockObjectToBlockStateSerializer.php | 1 + .../BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + .../block_factory_consistency_check.json | 2 +- 8 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/block/TintedGlass.php diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 532470de9..6d867c9ee 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -828,6 +828,8 @@ class BlockFactory{ $this->register(new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); $this->register(new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); $this->register(new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); + + $this->register(new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); } private function registerMudBlocks() : void{ diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 227dcce2a..567f10736 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -658,7 +658,7 @@ final class BlockTypeIds{ public const MANGROVE_WALL_SIGN = 10631; public const CRIMSON_WALL_SIGN = 10632; public const WARPED_WALL_SIGN = 10633; - + public const TINTED_GLASS = 10634; public const HONEYCOMB = 10635; public const DEEPSLATE_COAL_ORE = 10636; public const DEEPSLATE_DIAMOND_ORE = 10637; diff --git a/src/block/TintedGlass.php b/src/block/TintedGlass.php new file mode 100644 index 000000000..752f07c93 --- /dev/null +++ b/src/block/TintedGlass.php @@ -0,0 +1,31 @@ +fromTypeId(Ids::SUNFLOWER)); self::register("sweet_berry_bush", $factory->fromTypeId(Ids::SWEET_BERRY_BUSH)); self::register("tall_grass", $factory->fromTypeId(Ids::TALL_GRASS)); + self::register("tinted_glass", $factory->fromTypeId(Ids::TINTED_GLASS)); self::register("tnt", $factory->fromTypeId(Ids::TNT)); self::register("torch", $factory->fromTypeId(Ids::TORCH)); self::register("trapped_chest", $factory->fromTypeId(Ids::TRAPPED_CHEST)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index fd32ad55b..2b9fafa8d 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1167,6 +1167,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::TALL_GRASS(), fn() => Writer::create(Ids::TALLGRASS) ->writeString(StateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_TALL)); + $this->mapSimple(Blocks::TINTED_GLASS(), Ids::TINTED_GLASS); $this->map(Blocks::TNT(), function(TNT $block) : Writer{ return Writer::create(Ids::TNT) ->writeBool(StateNames::ALLOW_UNDERWATER_BIT, $block->worksUnderwater()) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 948730dfa..8ab71c317 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -1119,6 +1119,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::TALL_GRASS_TYPE, $type), }; }); + $this->map(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); $this->map(Ids::TNT, function(Reader $in) : Block{ return Blocks::TNT() ->setUnstable($in->readBool(StateNames::EXPLODE_BIT)) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 777eadd90..c3843a113 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -995,6 +995,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("tall_grass", fn() => Blocks::TALL_GRASS()); $result->registerBlock("tallgrass", fn() => Blocks::FERN()); $result->registerBlock("terracotta", fn() => Blocks::STAINED_CLAY()); + $result->registerBlock("tinted_glass", fn() => Blocks::TINTED_GLASS()); $result->registerBlock("tnt", fn() => Blocks::TNT()); $result->registerBlock("torch", fn() => Blocks::TORCH()); $result->registerBlock("trapdoor", fn() => Blocks::OAK_TRAPDOOR()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index ac1409da3..a00dd5d5d 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall","5451264":"Mud Bricks","5451776":"Mud Brick Slab","5451777":"Mud Brick Slab","5451778":"Mud Brick Slab","5452288":"Mud Brick Stairs","5452289":"Mud Brick Stairs","5452290":"Mud Brick Stairs","5452291":"Mud Brick Stairs","5452292":"Mud Brick Stairs","5452293":"Mud Brick Stairs","5452294":"Mud Brick Stairs","5452295":"Mud Brick Stairs","5452800":"Mud Brick Wall","5452801":"Mud Brick Wall","5452802":"Mud Brick Wall","5452804":"Mud Brick Wall","5452805":"Mud Brick Wall","5452806":"Mud Brick Wall","5452808":"Mud Brick Wall","5452809":"Mud Brick Wall","5452810":"Mud Brick Wall","5452816":"Mud Brick Wall","5452817":"Mud Brick Wall","5452818":"Mud Brick Wall","5452820":"Mud Brick Wall","5452821":"Mud Brick Wall","5452822":"Mud Brick Wall","5452824":"Mud Brick Wall","5452825":"Mud Brick Wall","5452826":"Mud Brick Wall","5452832":"Mud Brick Wall","5452833":"Mud Brick Wall","5452834":"Mud Brick Wall","5452836":"Mud Brick Wall","5452837":"Mud Brick Wall","5452838":"Mud Brick Wall","5452840":"Mud Brick Wall","5452841":"Mud Brick Wall","5452842":"Mud Brick Wall","5452864":"Mud Brick Wall","5452865":"Mud Brick Wall","5452866":"Mud Brick Wall","5452868":"Mud Brick Wall","5452869":"Mud Brick Wall","5452870":"Mud Brick Wall","5452872":"Mud Brick Wall","5452873":"Mud Brick Wall","5452874":"Mud Brick Wall","5452880":"Mud Brick Wall","5452881":"Mud Brick Wall","5452882":"Mud Brick Wall","5452884":"Mud Brick Wall","5452885":"Mud Brick Wall","5452886":"Mud Brick Wall","5452888":"Mud Brick Wall","5452889":"Mud Brick Wall","5452890":"Mud Brick Wall","5452896":"Mud Brick Wall","5452897":"Mud Brick Wall","5452898":"Mud Brick Wall","5452900":"Mud Brick Wall","5452901":"Mud Brick Wall","5452902":"Mud Brick Wall","5452904":"Mud Brick Wall","5452905":"Mud Brick Wall","5452906":"Mud Brick Wall","5452928":"Mud Brick Wall","5452929":"Mud Brick Wall","5452930":"Mud Brick Wall","5452932":"Mud Brick Wall","5452933":"Mud Brick Wall","5452934":"Mud Brick Wall","5452936":"Mud Brick Wall","5452937":"Mud Brick Wall","5452938":"Mud Brick Wall","5452944":"Mud Brick Wall","5452945":"Mud Brick Wall","5452946":"Mud Brick Wall","5452948":"Mud Brick Wall","5452949":"Mud Brick Wall","5452950":"Mud Brick Wall","5452952":"Mud Brick Wall","5452953":"Mud Brick Wall","5452954":"Mud Brick Wall","5452960":"Mud Brick Wall","5452961":"Mud Brick Wall","5452962":"Mud Brick Wall","5452964":"Mud Brick Wall","5452965":"Mud Brick Wall","5452966":"Mud Brick Wall","5452968":"Mud Brick Wall","5452969":"Mud Brick Wall","5452970":"Mud Brick Wall","5453056":"Mud Brick Wall","5453057":"Mud Brick Wall","5453058":"Mud Brick Wall","5453060":"Mud Brick Wall","5453061":"Mud Brick Wall","5453062":"Mud Brick Wall","5453064":"Mud Brick Wall","5453065":"Mud Brick Wall","5453066":"Mud Brick Wall","5453072":"Mud Brick Wall","5453073":"Mud Brick Wall","5453074":"Mud Brick Wall","5453076":"Mud Brick Wall","5453077":"Mud Brick Wall","5453078":"Mud Brick Wall","5453080":"Mud Brick Wall","5453081":"Mud Brick Wall","5453082":"Mud Brick Wall","5453088":"Mud Brick Wall","5453089":"Mud Brick Wall","5453090":"Mud Brick Wall","5453092":"Mud Brick Wall","5453093":"Mud Brick Wall","5453094":"Mud Brick Wall","5453096":"Mud Brick Wall","5453097":"Mud Brick Wall","5453098":"Mud Brick Wall","5453120":"Mud Brick Wall","5453121":"Mud Brick Wall","5453122":"Mud Brick Wall","5453124":"Mud Brick Wall","5453125":"Mud Brick Wall","5453126":"Mud Brick Wall","5453128":"Mud Brick Wall","5453129":"Mud Brick Wall","5453130":"Mud Brick Wall","5453136":"Mud Brick Wall","5453137":"Mud Brick Wall","5453138":"Mud Brick Wall","5453140":"Mud Brick Wall","5453141":"Mud Brick Wall","5453142":"Mud Brick Wall","5453144":"Mud Brick Wall","5453145":"Mud Brick Wall","5453146":"Mud Brick Wall","5453152":"Mud Brick Wall","5453153":"Mud Brick Wall","5453154":"Mud Brick Wall","5453156":"Mud Brick Wall","5453157":"Mud Brick Wall","5453158":"Mud Brick Wall","5453160":"Mud Brick Wall","5453161":"Mud Brick Wall","5453162":"Mud Brick Wall","5453184":"Mud Brick Wall","5453185":"Mud Brick Wall","5453186":"Mud Brick Wall","5453188":"Mud Brick Wall","5453189":"Mud Brick Wall","5453190":"Mud Brick Wall","5453192":"Mud Brick Wall","5453193":"Mud Brick Wall","5453194":"Mud Brick Wall","5453200":"Mud Brick Wall","5453201":"Mud Brick Wall","5453202":"Mud Brick Wall","5453204":"Mud Brick Wall","5453205":"Mud Brick Wall","5453206":"Mud Brick Wall","5453208":"Mud Brick Wall","5453209":"Mud Brick Wall","5453210":"Mud Brick Wall","5453216":"Mud Brick Wall","5453217":"Mud Brick Wall","5453218":"Mud Brick Wall","5453220":"Mud Brick Wall","5453221":"Mud Brick Wall","5453222":"Mud Brick Wall","5453224":"Mud Brick Wall","5453225":"Mud Brick Wall","5453226":"Mud Brick Wall","5160448":"Coal Ore","5449728":"Copper Ore","5182976":"Diamond Ore","5250048":"Emerald Ore","5261824":"Gold Ore","5276672":"Iron Ore","5288448":"Lapis Lazuli Ore","5347840":"Redstone Ore","5347841":"Redstone Ore","5445632":"Deepslate Coal Ore","5449216":"Deepslate Copper Ore","5446144":"Deepslate Diamond Ore","5446656":"Deepslate Emerald Ore","5448704":"Deepslate Gold Ore","5448192":"Deepslate Iron Ore","5447168":"Deepslate Lapis Lazuli Ore","5447680":"Deepslate Redstone Ore","5447681":"Deepslate Redstone Ore","5307392":"Nether Quartz Ore","5450240":"Nether Gold Ore"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall","5444608":"Tinted Glass","5451264":"Mud Bricks","5451776":"Mud Brick Slab","5451777":"Mud Brick Slab","5451778":"Mud Brick Slab","5452288":"Mud Brick Stairs","5452289":"Mud Brick Stairs","5452290":"Mud Brick Stairs","5452291":"Mud Brick Stairs","5452292":"Mud Brick Stairs","5452293":"Mud Brick Stairs","5452294":"Mud Brick Stairs","5452295":"Mud Brick Stairs","5452800":"Mud Brick Wall","5452801":"Mud Brick Wall","5452802":"Mud Brick Wall","5452804":"Mud Brick Wall","5452805":"Mud Brick Wall","5452806":"Mud Brick Wall","5452808":"Mud Brick Wall","5452809":"Mud Brick Wall","5452810":"Mud Brick Wall","5452816":"Mud Brick Wall","5452817":"Mud Brick Wall","5452818":"Mud Brick Wall","5452820":"Mud Brick Wall","5452821":"Mud Brick Wall","5452822":"Mud Brick Wall","5452824":"Mud Brick Wall","5452825":"Mud Brick Wall","5452826":"Mud Brick Wall","5452832":"Mud Brick Wall","5452833":"Mud Brick Wall","5452834":"Mud Brick Wall","5452836":"Mud Brick Wall","5452837":"Mud Brick Wall","5452838":"Mud Brick Wall","5452840":"Mud Brick Wall","5452841":"Mud Brick Wall","5452842":"Mud Brick Wall","5452864":"Mud Brick Wall","5452865":"Mud Brick Wall","5452866":"Mud Brick Wall","5452868":"Mud Brick Wall","5452869":"Mud Brick Wall","5452870":"Mud Brick Wall","5452872":"Mud Brick Wall","5452873":"Mud Brick Wall","5452874":"Mud Brick Wall","5452880":"Mud Brick Wall","5452881":"Mud Brick Wall","5452882":"Mud Brick Wall","5452884":"Mud Brick Wall","5452885":"Mud Brick Wall","5452886":"Mud Brick Wall","5452888":"Mud Brick Wall","5452889":"Mud Brick Wall","5452890":"Mud Brick Wall","5452896":"Mud Brick Wall","5452897":"Mud Brick Wall","5452898":"Mud Brick Wall","5452900":"Mud Brick Wall","5452901":"Mud Brick Wall","5452902":"Mud Brick Wall","5452904":"Mud Brick Wall","5452905":"Mud Brick Wall","5452906":"Mud Brick Wall","5452928":"Mud Brick Wall","5452929":"Mud Brick Wall","5452930":"Mud Brick Wall","5452932":"Mud Brick Wall","5452933":"Mud Brick Wall","5452934":"Mud Brick Wall","5452936":"Mud Brick Wall","5452937":"Mud Brick Wall","5452938":"Mud Brick Wall","5452944":"Mud Brick Wall","5452945":"Mud Brick Wall","5452946":"Mud Brick Wall","5452948":"Mud Brick Wall","5452949":"Mud Brick Wall","5452950":"Mud Brick Wall","5452952":"Mud Brick Wall","5452953":"Mud Brick Wall","5452954":"Mud Brick Wall","5452960":"Mud Brick Wall","5452961":"Mud Brick Wall","5452962":"Mud Brick Wall","5452964":"Mud Brick Wall","5452965":"Mud Brick Wall","5452966":"Mud Brick Wall","5452968":"Mud Brick Wall","5452969":"Mud Brick Wall","5452970":"Mud Brick Wall","5453056":"Mud Brick Wall","5453057":"Mud Brick Wall","5453058":"Mud Brick Wall","5453060":"Mud Brick Wall","5453061":"Mud Brick Wall","5453062":"Mud Brick Wall","5453064":"Mud Brick Wall","5453065":"Mud Brick Wall","5453066":"Mud Brick Wall","5453072":"Mud Brick Wall","5453073":"Mud Brick Wall","5453074":"Mud Brick Wall","5453076":"Mud Brick Wall","5453077":"Mud Brick Wall","5453078":"Mud Brick Wall","5453080":"Mud Brick Wall","5453081":"Mud Brick Wall","5453082":"Mud Brick Wall","5453088":"Mud Brick Wall","5453089":"Mud Brick Wall","5453090":"Mud Brick Wall","5453092":"Mud Brick Wall","5453093":"Mud Brick Wall","5453094":"Mud Brick Wall","5453096":"Mud Brick Wall","5453097":"Mud Brick Wall","5453098":"Mud Brick Wall","5453120":"Mud Brick Wall","5453121":"Mud Brick Wall","5453122":"Mud Brick Wall","5453124":"Mud Brick Wall","5453125":"Mud Brick Wall","5453126":"Mud Brick Wall","5453128":"Mud Brick Wall","5453129":"Mud Brick Wall","5453130":"Mud Brick Wall","5453136":"Mud Brick Wall","5453137":"Mud Brick Wall","5453138":"Mud Brick Wall","5453140":"Mud Brick Wall","5453141":"Mud Brick Wall","5453142":"Mud Brick Wall","5453144":"Mud Brick Wall","5453145":"Mud Brick Wall","5453146":"Mud Brick Wall","5453152":"Mud Brick Wall","5453153":"Mud Brick Wall","5453154":"Mud Brick Wall","5453156":"Mud Brick Wall","5453157":"Mud Brick Wall","5453158":"Mud Brick Wall","5453160":"Mud Brick Wall","5453161":"Mud Brick Wall","5453162":"Mud Brick Wall","5453184":"Mud Brick Wall","5453185":"Mud Brick Wall","5453186":"Mud Brick Wall","5453188":"Mud Brick Wall","5453189":"Mud Brick Wall","5453190":"Mud Brick Wall","5453192":"Mud Brick Wall","5453193":"Mud Brick Wall","5453194":"Mud Brick Wall","5453200":"Mud Brick Wall","5453201":"Mud Brick Wall","5453202":"Mud Brick Wall","5453204":"Mud Brick Wall","5453205":"Mud Brick Wall","5453206":"Mud Brick Wall","5453208":"Mud Brick Wall","5453209":"Mud Brick Wall","5453210":"Mud Brick Wall","5453216":"Mud Brick Wall","5453217":"Mud Brick Wall","5453218":"Mud Brick Wall","5453220":"Mud Brick Wall","5453221":"Mud Brick Wall","5453222":"Mud Brick Wall","5453224":"Mud Brick Wall","5453225":"Mud Brick Wall","5453226":"Mud Brick Wall","5160448":"Coal Ore","5449728":"Copper Ore","5182976":"Diamond Ore","5250048":"Emerald Ore","5261824":"Gold Ore","5276672":"Iron Ore","5288448":"Lapis Lazuli Ore","5347840":"Redstone Ore","5347841":"Redstone Ore","5445632":"Deepslate Coal Ore","5449216":"Deepslate Copper Ore","5446144":"Deepslate Diamond Ore","5446656":"Deepslate Emerald Ore","5448704":"Deepslate Gold Ore","5448192":"Deepslate Iron Ore","5447168":"Deepslate Lapis Lazuli Ore","5447680":"Deepslate Redstone Ore","5447681":"Deepslate Redstone Ore","5307392":"Nether Quartz Ore","5450240":"Nether Gold Ore"},"stateDataBits":9} \ No newline at end of file From 8886a023f11b91eea46f3ae1812638c488b012c9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 23:20:13 +0100 Subject: [PATCH 299/692] Reduce the size of block_factory_consistency_check.json by improving the storage format this reduces the size by 65%, but more importantly, doesn't cause several pages of flooding in git diff. --- .../block_factory_consistency_check.json | 2 +- .../block/regenerate_consistency_check.php | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index a00dd5d5d..258594e7c 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"5128192":"Activator Rail","5128193":"Activator Rail","5128194":"Activator Rail","5128195":"Activator Rail","5128196":"Activator Rail","5128197":"Activator Rail","5128200":"Activator Rail","5128201":"Activator Rail","5128202":"Activator Rail","5128203":"Activator Rail","5128204":"Activator Rail","5128205":"Activator Rail","5120000":"Air","5131776":"Anvil","5131777":"Anvil","5131778":"Anvil","5131780":"Anvil","5131781":"Anvil","5131782":"Anvil","5131784":"Anvil","5131785":"Anvil","5131786":"Anvil","5131788":"Anvil","5131789":"Anvil","5131790":"Anvil","5132800":"Bamboo","5132801":"Bamboo","5132802":"Bamboo","5132804":"Bamboo","5132805":"Bamboo","5132806":"Bamboo","5132808":"Bamboo","5132809":"Bamboo","5132810":"Bamboo","5132812":"Bamboo","5132813":"Bamboo","5132814":"Bamboo","5133312":"Bamboo Sapling","5133313":"Bamboo Sapling","5133824":"Banner","5133825":"Banner","5133826":"Banner","5133827":"Banner","5133828":"Banner","5133829":"Banner","5133830":"Banner","5133831":"Banner","5133832":"Banner","5133833":"Banner","5133834":"Banner","5133835":"Banner","5133836":"Banner","5133837":"Banner","5133838":"Banner","5133839":"Banner","5133840":"Banner","5133841":"Banner","5133842":"Banner","5133843":"Banner","5133844":"Banner","5133845":"Banner","5133846":"Banner","5133847":"Banner","5133848":"Banner","5133849":"Banner","5133850":"Banner","5133851":"Banner","5133852":"Banner","5133853":"Banner","5133854":"Banner","5133855":"Banner","5133856":"Banner","5133857":"Banner","5133858":"Banner","5133859":"Banner","5133860":"Banner","5133861":"Banner","5133862":"Banner","5133863":"Banner","5133864":"Banner","5133865":"Banner","5133866":"Banner","5133867":"Banner","5133868":"Banner","5133869":"Banner","5133870":"Banner","5133871":"Banner","5133872":"Banner","5133873":"Banner","5133874":"Banner","5133875":"Banner","5133876":"Banner","5133877":"Banner","5133878":"Banner","5133879":"Banner","5133880":"Banner","5133881":"Banner","5133882":"Banner","5133883":"Banner","5133884":"Banner","5133885":"Banner","5133886":"Banner","5133887":"Banner","5133888":"Banner","5133889":"Banner","5133890":"Banner","5133891":"Banner","5133892":"Banner","5133893":"Banner","5133894":"Banner","5133895":"Banner","5133896":"Banner","5133897":"Banner","5133898":"Banner","5133899":"Banner","5133900":"Banner","5133901":"Banner","5133902":"Banner","5133903":"Banner","5133904":"Banner","5133905":"Banner","5133906":"Banner","5133907":"Banner","5133908":"Banner","5133909":"Banner","5133910":"Banner","5133911":"Banner","5133912":"Banner","5133913":"Banner","5133914":"Banner","5133915":"Banner","5133916":"Banner","5133917":"Banner","5133918":"Banner","5133919":"Banner","5133920":"Banner","5133921":"Banner","5133922":"Banner","5133923":"Banner","5133924":"Banner","5133925":"Banner","5133926":"Banner","5133927":"Banner","5133928":"Banner","5133929":"Banner","5133930":"Banner","5133931":"Banner","5133932":"Banner","5133933":"Banner","5133934":"Banner","5133935":"Banner","5133936":"Banner","5133937":"Banner","5133938":"Banner","5133939":"Banner","5133940":"Banner","5133941":"Banner","5133942":"Banner","5133943":"Banner","5133944":"Banner","5133945":"Banner","5133946":"Banner","5133947":"Banner","5133948":"Banner","5133949":"Banner","5133950":"Banner","5133951":"Banner","5133952":"Banner","5133953":"Banner","5133954":"Banner","5133955":"Banner","5133956":"Banner","5133957":"Banner","5133958":"Banner","5133959":"Banner","5133960":"Banner","5133961":"Banner","5133962":"Banner","5133963":"Banner","5133964":"Banner","5133965":"Banner","5133966":"Banner","5133967":"Banner","5133968":"Banner","5133969":"Banner","5133970":"Banner","5133971":"Banner","5133972":"Banner","5133973":"Banner","5133974":"Banner","5133975":"Banner","5133976":"Banner","5133977":"Banner","5133978":"Banner","5133979":"Banner","5133980":"Banner","5133981":"Banner","5133982":"Banner","5133983":"Banner","5133984":"Banner","5133985":"Banner","5133986":"Banner","5133987":"Banner","5133988":"Banner","5133989":"Banner","5133990":"Banner","5133991":"Banner","5133992":"Banner","5133993":"Banner","5133994":"Banner","5133995":"Banner","5133996":"Banner","5133997":"Banner","5133998":"Banner","5133999":"Banner","5134000":"Banner","5134001":"Banner","5134002":"Banner","5134003":"Banner","5134004":"Banner","5134005":"Banner","5134006":"Banner","5134007":"Banner","5134008":"Banner","5134009":"Banner","5134010":"Banner","5134011":"Banner","5134012":"Banner","5134013":"Banner","5134014":"Banner","5134015":"Banner","5134016":"Banner","5134017":"Banner","5134018":"Banner","5134019":"Banner","5134020":"Banner","5134021":"Banner","5134022":"Banner","5134023":"Banner","5134024":"Banner","5134025":"Banner","5134026":"Banner","5134027":"Banner","5134028":"Banner","5134029":"Banner","5134030":"Banner","5134031":"Banner","5134032":"Banner","5134033":"Banner","5134034":"Banner","5134035":"Banner","5134036":"Banner","5134037":"Banner","5134038":"Banner","5134039":"Banner","5134040":"Banner","5134041":"Banner","5134042":"Banner","5134043":"Banner","5134044":"Banner","5134045":"Banner","5134046":"Banner","5134047":"Banner","5134048":"Banner","5134049":"Banner","5134050":"Banner","5134051":"Banner","5134052":"Banner","5134053":"Banner","5134054":"Banner","5134055":"Banner","5134056":"Banner","5134057":"Banner","5134058":"Banner","5134059":"Banner","5134060":"Banner","5134061":"Banner","5134062":"Banner","5134063":"Banner","5134064":"Banner","5134065":"Banner","5134066":"Banner","5134067":"Banner","5134068":"Banner","5134069":"Banner","5134070":"Banner","5134071":"Banner","5134072":"Banner","5134073":"Banner","5134074":"Banner","5134075":"Banner","5134076":"Banner","5134077":"Banner","5134078":"Banner","5134079":"Banner","5390848":"Wall Banner","5390849":"Wall Banner","5390850":"Wall Banner","5390851":"Wall Banner","5390852":"Wall Banner","5390853":"Wall Banner","5390854":"Wall Banner","5390855":"Wall Banner","5390856":"Wall Banner","5390857":"Wall Banner","5390858":"Wall Banner","5390859":"Wall Banner","5390860":"Wall Banner","5390861":"Wall Banner","5390862":"Wall Banner","5390863":"Wall Banner","5390864":"Wall Banner","5390865":"Wall Banner","5390866":"Wall Banner","5390867":"Wall Banner","5390868":"Wall Banner","5390869":"Wall Banner","5390870":"Wall Banner","5390871":"Wall Banner","5390872":"Wall Banner","5390873":"Wall Banner","5390874":"Wall Banner","5390875":"Wall Banner","5390876":"Wall Banner","5390877":"Wall Banner","5390878":"Wall Banner","5390879":"Wall Banner","5390880":"Wall Banner","5390881":"Wall Banner","5390882":"Wall Banner","5390883":"Wall Banner","5390884":"Wall Banner","5390885":"Wall Banner","5390886":"Wall Banner","5390887":"Wall Banner","5390888":"Wall Banner","5390889":"Wall Banner","5390890":"Wall Banner","5390891":"Wall Banner","5390892":"Wall Banner","5390893":"Wall Banner","5390894":"Wall Banner","5390895":"Wall Banner","5390896":"Wall Banner","5390897":"Wall Banner","5390898":"Wall Banner","5390899":"Wall Banner","5390900":"Wall Banner","5390901":"Wall Banner","5390902":"Wall Banner","5390903":"Wall Banner","5390904":"Wall Banner","5390905":"Wall Banner","5390906":"Wall Banner","5390907":"Wall Banner","5390908":"Wall Banner","5390909":"Wall Banner","5390910":"Wall Banner","5390911":"Wall Banner","5134336":"Barrel","5134337":"Barrel","5134338":"Barrel","5134339":"Barrel","5134340":"Barrel","5134341":"Barrel","5134344":"Barrel","5134345":"Barrel","5134346":"Barrel","5134347":"Barrel","5134348":"Barrel","5134349":"Barrel","5134848":"Barrier","5135360":"Beacon","5135872":"Bed Block","5135873":"Bed Block","5135874":"Bed Block","5135875":"Bed Block","5135876":"Bed Block","5135877":"Bed Block","5135878":"Bed Block","5135879":"Bed Block","5135880":"Bed Block","5135881":"Bed Block","5135882":"Bed Block","5135883":"Bed Block","5135884":"Bed Block","5135885":"Bed Block","5135886":"Bed Block","5135887":"Bed Block","5135888":"Bed Block","5135889":"Bed Block","5135890":"Bed Block","5135891":"Bed Block","5135892":"Bed Block","5135893":"Bed Block","5135894":"Bed Block","5135895":"Bed Block","5135896":"Bed Block","5135897":"Bed Block","5135898":"Bed Block","5135899":"Bed Block","5135900":"Bed Block","5135901":"Bed Block","5135902":"Bed Block","5135903":"Bed Block","5135904":"Bed Block","5135905":"Bed Block","5135906":"Bed Block","5135907":"Bed Block","5135908":"Bed Block","5135909":"Bed Block","5135910":"Bed Block","5135911":"Bed Block","5135912":"Bed Block","5135913":"Bed Block","5135914":"Bed Block","5135915":"Bed Block","5135916":"Bed Block","5135917":"Bed Block","5135918":"Bed Block","5135919":"Bed Block","5135920":"Bed Block","5135921":"Bed Block","5135922":"Bed Block","5135923":"Bed Block","5135924":"Bed Block","5135925":"Bed Block","5135926":"Bed Block","5135927":"Bed Block","5135928":"Bed Block","5135929":"Bed Block","5135930":"Bed Block","5135931":"Bed Block","5135932":"Bed Block","5135933":"Bed Block","5135934":"Bed Block","5135935":"Bed Block","5135936":"Bed Block","5135937":"Bed Block","5135938":"Bed Block","5135939":"Bed Block","5135940":"Bed Block","5135941":"Bed Block","5135942":"Bed Block","5135943":"Bed Block","5135944":"Bed Block","5135945":"Bed Block","5135946":"Bed Block","5135947":"Bed Block","5135948":"Bed Block","5135949":"Bed Block","5135950":"Bed Block","5135951":"Bed Block","5135952":"Bed Block","5135953":"Bed Block","5135954":"Bed Block","5135955":"Bed Block","5135956":"Bed Block","5135957":"Bed Block","5135958":"Bed Block","5135959":"Bed Block","5135960":"Bed Block","5135961":"Bed Block","5135962":"Bed Block","5135963":"Bed Block","5135964":"Bed Block","5135965":"Bed Block","5135966":"Bed Block","5135967":"Bed Block","5135968":"Bed Block","5135969":"Bed Block","5135970":"Bed Block","5135971":"Bed Block","5135972":"Bed Block","5135973":"Bed Block","5135974":"Bed Block","5135975":"Bed Block","5135976":"Bed Block","5135977":"Bed Block","5135978":"Bed Block","5135979":"Bed Block","5135980":"Bed Block","5135981":"Bed Block","5135982":"Bed Block","5135983":"Bed Block","5135984":"Bed Block","5135985":"Bed Block","5135986":"Bed Block","5135987":"Bed Block","5135988":"Bed Block","5135989":"Bed Block","5135990":"Bed Block","5135991":"Bed Block","5135992":"Bed Block","5135993":"Bed Block","5135994":"Bed Block","5135995":"Bed Block","5135996":"Bed Block","5135997":"Bed Block","5135998":"Bed Block","5135999":"Bed Block","5136000":"Bed Block","5136001":"Bed Block","5136002":"Bed Block","5136003":"Bed Block","5136004":"Bed Block","5136005":"Bed Block","5136006":"Bed Block","5136007":"Bed Block","5136008":"Bed Block","5136009":"Bed Block","5136010":"Bed Block","5136011":"Bed Block","5136012":"Bed Block","5136013":"Bed Block","5136014":"Bed Block","5136015":"Bed Block","5136016":"Bed Block","5136017":"Bed Block","5136018":"Bed Block","5136019":"Bed Block","5136020":"Bed Block","5136021":"Bed Block","5136022":"Bed Block","5136023":"Bed Block","5136024":"Bed Block","5136025":"Bed Block","5136026":"Bed Block","5136027":"Bed Block","5136028":"Bed Block","5136029":"Bed Block","5136030":"Bed Block","5136031":"Bed Block","5136032":"Bed Block","5136033":"Bed Block","5136034":"Bed Block","5136035":"Bed Block","5136036":"Bed Block","5136037":"Bed Block","5136038":"Bed Block","5136039":"Bed Block","5136040":"Bed Block","5136041":"Bed Block","5136042":"Bed Block","5136043":"Bed Block","5136044":"Bed Block","5136045":"Bed Block","5136046":"Bed Block","5136047":"Bed Block","5136048":"Bed Block","5136049":"Bed Block","5136050":"Bed Block","5136051":"Bed Block","5136052":"Bed Block","5136053":"Bed Block","5136054":"Bed Block","5136055":"Bed Block","5136056":"Bed Block","5136057":"Bed Block","5136058":"Bed Block","5136059":"Bed Block","5136060":"Bed Block","5136061":"Bed Block","5136062":"Bed Block","5136063":"Bed Block","5136064":"Bed Block","5136065":"Bed Block","5136066":"Bed Block","5136067":"Bed Block","5136068":"Bed Block","5136069":"Bed Block","5136070":"Bed Block","5136071":"Bed Block","5136072":"Bed Block","5136073":"Bed Block","5136074":"Bed Block","5136075":"Bed Block","5136076":"Bed Block","5136077":"Bed Block","5136078":"Bed Block","5136079":"Bed Block","5136080":"Bed Block","5136081":"Bed Block","5136082":"Bed Block","5136083":"Bed Block","5136084":"Bed Block","5136085":"Bed Block","5136086":"Bed Block","5136087":"Bed Block","5136088":"Bed Block","5136089":"Bed Block","5136090":"Bed Block","5136091":"Bed Block","5136092":"Bed Block","5136093":"Bed Block","5136094":"Bed Block","5136095":"Bed Block","5136096":"Bed Block","5136097":"Bed Block","5136098":"Bed Block","5136099":"Bed Block","5136100":"Bed Block","5136101":"Bed Block","5136102":"Bed Block","5136103":"Bed Block","5136104":"Bed Block","5136105":"Bed Block","5136106":"Bed Block","5136107":"Bed Block","5136108":"Bed Block","5136109":"Bed Block","5136110":"Bed Block","5136111":"Bed Block","5136112":"Bed Block","5136113":"Bed Block","5136114":"Bed Block","5136115":"Bed Block","5136116":"Bed Block","5136117":"Bed Block","5136118":"Bed Block","5136119":"Bed Block","5136120":"Bed Block","5136121":"Bed Block","5136122":"Bed Block","5136123":"Bed Block","5136124":"Bed Block","5136125":"Bed Block","5136126":"Bed Block","5136127":"Bed Block","5136384":"Bedrock","5136385":"Bedrock","5136896":"Beetroot Block","5136897":"Beetroot Block","5136898":"Beetroot Block","5136899":"Beetroot Block","5136900":"Beetroot Block","5136901":"Beetroot Block","5136902":"Beetroot Block","5136903":"Beetroot Block","5137408":"Bell","5137409":"Bell","5137410":"Bell","5137411":"Bell","5137412":"Bell","5137413":"Bell","5137414":"Bell","5137415":"Bell","5137416":"Bell","5137417":"Bell","5137418":"Bell","5137419":"Bell","5137420":"Bell","5137421":"Bell","5137422":"Bell","5137423":"Bell","5147136":"Blue Ice","5148672":"Bone Block","5148673":"Bone Block","5148674":"Bone Block","5149184":"Bookshelf","5149696":"Brewing Stand","5149697":"Brewing Stand","5149698":"Brewing Stand","5149699":"Brewing Stand","5149700":"Brewing Stand","5149701":"Brewing Stand","5149702":"Brewing Stand","5149703":"Brewing Stand","5150720":"Brick Stairs","5150721":"Brick Stairs","5150722":"Brick Stairs","5150723":"Brick Stairs","5150724":"Brick Stairs","5150725":"Brick Stairs","5150726":"Brick Stairs","5150727":"Brick Stairs","5151744":"Bricks","5152768":"Brown Mushroom","5153792":"Cactus","5153793":"Cactus","5153794":"Cactus","5153795":"Cactus","5153796":"Cactus","5153797":"Cactus","5153798":"Cactus","5153799":"Cactus","5153800":"Cactus","5153801":"Cactus","5153802":"Cactus","5153803":"Cactus","5153804":"Cactus","5153805":"Cactus","5153806":"Cactus","5153807":"Cactus","5154304":"Cake","5154305":"Cake","5154306":"Cake","5154307":"Cake","5154308":"Cake","5154309":"Cake","5154310":"Cake","5155328":"Carrot Block","5155329":"Carrot Block","5155330":"Carrot Block","5155331":"Carrot Block","5155332":"Carrot Block","5155333":"Carrot Block","5155334":"Carrot Block","5155335":"Carrot Block","5156864":"Chest","5156865":"Chest","5156866":"Chest","5156867":"Chest","5159424":"Clay Block","5159936":"Coal Block","5160960":"Cobblestone","5299200":"Mossy Cobblestone","5161984":"Cobblestone Stairs","5161985":"Cobblestone Stairs","5161986":"Cobblestone Stairs","5161987":"Cobblestone Stairs","5161988":"Cobblestone Stairs","5161989":"Cobblestone Stairs","5161990":"Cobblestone Stairs","5161991":"Cobblestone Stairs","5300224":"Mossy Cobblestone Stairs","5300225":"Mossy Cobblestone Stairs","5300226":"Mossy Cobblestone Stairs","5300227":"Mossy Cobblestone Stairs","5300228":"Mossy Cobblestone Stairs","5300229":"Mossy Cobblestone Stairs","5300230":"Mossy Cobblestone Stairs","5300231":"Mossy Cobblestone Stairs","5163008":"Cobweb","5163520":"Cocoa Block","5163521":"Cocoa Block","5163522":"Cocoa Block","5163523":"Cocoa Block","5163524":"Cocoa Block","5163525":"Cocoa Block","5163526":"Cocoa Block","5163527":"Cocoa Block","5163528":"Cocoa Block","5163529":"Cocoa Block","5163530":"Cocoa Block","5163531":"Cocoa Block","5166080":"Coral Block","5166081":"Coral Block","5166082":"Coral Block","5166083":"Coral Block","5166084":"Coral Block","5166088":"Coral Block","5166089":"Coral Block","5166090":"Coral Block","5166091":"Coral Block","5166092":"Coral Block","5168128":"Crafting Table","5180928":"Daylight Sensor","5180929":"Daylight Sensor","5180930":"Daylight Sensor","5180931":"Daylight Sensor","5180932":"Daylight Sensor","5180933":"Daylight Sensor","5180934":"Daylight Sensor","5180935":"Daylight Sensor","5180936":"Daylight Sensor","5180937":"Daylight Sensor","5180938":"Daylight Sensor","5180939":"Daylight Sensor","5180940":"Daylight Sensor","5180941":"Daylight Sensor","5180942":"Daylight Sensor","5180943":"Daylight Sensor","5180944":"Daylight Sensor","5180945":"Daylight Sensor","5180946":"Daylight Sensor","5180947":"Daylight Sensor","5180948":"Daylight Sensor","5180949":"Daylight Sensor","5180950":"Daylight Sensor","5180951":"Daylight Sensor","5180952":"Daylight Sensor","5180953":"Daylight Sensor","5180954":"Daylight Sensor","5180955":"Daylight Sensor","5180956":"Daylight Sensor","5180957":"Daylight Sensor","5180958":"Daylight Sensor","5180959":"Daylight Sensor","5181440":"Dead Bush","5181952":"Detector Rail","5181953":"Detector Rail","5181954":"Detector Rail","5181955":"Detector Rail","5181956":"Detector Rail","5181957":"Detector Rail","5181960":"Detector Rail","5181961":"Detector Rail","5181962":"Detector Rail","5181963":"Detector Rail","5181964":"Detector Rail","5181965":"Detector Rail","5182464":"Diamond Block","5185536":"Dirt","5185537":"Dirt","5385728":"Sunflower","5385729":"Sunflower","5292544":"Lilac","5292545":"Lilac","5350400":"Rose Bush","5350401":"Rose Bush","5320704":"Peony","5320705":"Peony","5186048":"Double Tallgrass","5186049":"Double Tallgrass","5288960":"Large Fern","5288961":"Large Fern","5186560":"Dragon Egg","5187072":"Dried Kelp Block","5249536":"Emerald Block","5250560":"Enchanting Table","5251072":"End Portal Frame","5251073":"End Portal Frame","5251074":"End Portal Frame","5251075":"End Portal Frame","5251076":"End Portal Frame","5251077":"End Portal Frame","5251078":"End Portal Frame","5251079":"End Portal Frame","5251584":"End Rod","5251585":"End Rod","5251586":"End Rod","5251587":"End Rod","5251588":"End Rod","5251589":"End Rod","5252096":"End Stone","5254144":"End Stone Bricks","5253120":"End Stone Brick Stairs","5253121":"End Stone Brick Stairs","5253122":"End Stone Brick Stairs","5253123":"End Stone Brick Stairs","5253124":"End Stone Brick Stairs","5253125":"End Stone Brick Stairs","5253126":"End Stone Brick Stairs","5253127":"End Stone Brick Stairs","5254656":"Ender Chest","5254657":"Ender Chest","5254658":"Ender Chest","5254659":"Ender Chest","5255680":"Farmland","5255681":"Farmland","5255682":"Farmland","5255683":"Farmland","5255684":"Farmland","5255685":"Farmland","5255686":"Farmland","5255687":"Farmland","5256704":"Fire Block","5256705":"Fire Block","5256706":"Fire Block","5256707":"Fire Block","5256708":"Fire Block","5256709":"Fire Block","5256710":"Fire Block","5256711":"Fire Block","5256712":"Fire Block","5256713":"Fire Block","5256714":"Fire Block","5256715":"Fire Block","5256716":"Fire Block","5256717":"Fire Block","5256718":"Fire Block","5256719":"Fire Block","5257216":"Fletching Table","5171200":"Dandelion","5327360":"Poppy","5129216":"Allium","5132288":"Azure Bluet","5147648":"Blue Orchid","5167104":"Cornflower","5293056":"Lily of the Valley","5319168":"Orange Tulip","5319680":"Oxeye Daisy","5321728":"Pink Tulip","5345792":"Red Tulip","5394432":"White Tulip","5257728":"Flower Pot","5258240":"Frosted Ice","5258241":"Frosted Ice","5258242":"Frosted Ice","5258243":"Frosted Ice","5258752":"Furnace","5258753":"Furnace","5258754":"Furnace","5258755":"Furnace","5258756":"Furnace","5258757":"Furnace","5258758":"Furnace","5258759":"Furnace","5146112":"Blast Furnace","5146113":"Blast Furnace","5146114":"Blast Furnace","5146115":"Blast Furnace","5146116":"Blast Furnace","5146117":"Blast Furnace","5146118":"Blast Furnace","5146119":"Blast Furnace","5355520":"Smoker","5355521":"Smoker","5355522":"Smoker","5355523":"Smoker","5355524":"Smoker","5355525":"Smoker","5355526":"Smoker","5355527":"Smoker","5259264":"Glass","5259776":"Glass Pane","5260288":"Glowing Obsidian","5260800":"Glowstone","5261312":"Gold Block","5264384":"Grass","5264896":"Grass Path","5265408":"Gravel","5267456":"Hardened Clay","5267968":"Hardened Glass","5268480":"Hardened Glass Pane","5268992":"Hay Bale","5268993":"Hay Bale","5268994":"Hay Bale","5269504":"Hopper","5269506":"Hopper","5269507":"Hopper","5269508":"Hopper","5269509":"Hopper","5269512":"Hopper","5269514":"Hopper","5269515":"Hopper","5269516":"Hopper","5269517":"Hopper","5270016":"Ice","5273600":"update!","5274112":"ate!upd","5274624":"Invisible Bedrock","5275136":"Iron Block","5275648":"Iron Bars","5276160":"Iron Door","5276161":"Iron Door","5276162":"Iron Door","5276163":"Iron Door","5276164":"Iron Door","5276165":"Iron Door","5276166":"Iron Door","5276167":"Iron Door","5276168":"Iron Door","5276169":"Iron Door","5276170":"Iron Door","5276171":"Iron Door","5276172":"Iron Door","5276173":"Iron Door","5276174":"Iron Door","5276175":"Iron Door","5276176":"Iron Door","5276177":"Iron Door","5276178":"Iron Door","5276179":"Iron Door","5276180":"Iron Door","5276181":"Iron Door","5276182":"Iron Door","5276183":"Iron Door","5276184":"Iron Door","5276185":"Iron Door","5276186":"Iron Door","5276187":"Iron Door","5276188":"Iron Door","5276189":"Iron Door","5276190":"Iron Door","5276191":"Iron Door","5277184":"Iron Trapdoor","5277185":"Iron Trapdoor","5277186":"Iron Trapdoor","5277187":"Iron Trapdoor","5277188":"Iron Trapdoor","5277189":"Iron Trapdoor","5277190":"Iron Trapdoor","5277191":"Iron Trapdoor","5277192":"Iron Trapdoor","5277193":"Iron Trapdoor","5277194":"Iron Trapdoor","5277195":"Iron Trapdoor","5277196":"Iron Trapdoor","5277197":"Iron Trapdoor","5277198":"Iron Trapdoor","5277199":"Iron Trapdoor","5277696":"Item Frame","5277697":"Item Frame","5277698":"Item Frame","5277699":"Item Frame","5277700":"Item Frame","5277701":"Item Frame","5277704":"Item Frame","5277705":"Item Frame","5277706":"Item Frame","5277707":"Item Frame","5277708":"Item Frame","5277709":"Item Frame","5278208":"Jukebox","5286912":"Ladder","5286913":"Ladder","5286914":"Ladder","5286915":"Ladder","5287424":"Lantern","5287425":"Lantern","5422592":"Soul Lantern","5422593":"Soul Lantern","5287936":"Lapis Lazuli Block","5289472":"Lava","5289473":"Lava","5289474":"Lava","5289475":"Lava","5289476":"Lava","5289477":"Lava","5289478":"Lava","5289479":"Lava","5289480":"Lava","5289481":"Lava","5289482":"Lava","5289483":"Lava","5289484":"Lava","5289485":"Lava","5289486":"Lava","5289487":"Lava","5289488":"Lava","5289489":"Lava","5289490":"Lava","5289491":"Lava","5289492":"Lava","5289493":"Lava","5289494":"Lava","5289495":"Lava","5289496":"Lava","5289497":"Lava","5289498":"Lava","5289499":"Lava","5289500":"Lava","5289501":"Lava","5289502":"Lava","5289503":"Lava","5289984":"Lectern","5289985":"Lectern","5289986":"Lectern","5289987":"Lectern","5289988":"Lectern","5289989":"Lectern","5289990":"Lectern","5289991":"Lectern","5291008":"Lever","5291009":"Lever","5291010":"Lever","5291011":"Lever","5291012":"Lever","5291013":"Lever","5291014":"Lever","5291015":"Lever","5291016":"Lever","5291017":"Lever","5291018":"Lever","5291019":"Lever","5291020":"Lever","5291021":"Lever","5291022":"Lever","5291023":"Lever","5295104":"Loom","5295105":"Loom","5295106":"Loom","5295107":"Loom","5296128":"Magma Block","5297152":"Melon Block","5297664":"Melon Stem","5297665":"Melon Stem","5297666":"Melon Stem","5297667":"Melon Stem","5297668":"Melon Stem","5297669":"Melon Stem","5297670":"Melon Stem","5297671":"Melon Stem","5298688":"Monster Spawner","5303808":"Mycelium","5306368":"Nether Bricks","5342208":"Red Nether Bricks","5304320":"Nether Brick Fence","5305344":"Nether Brick Stairs","5305345":"Nether Brick Stairs","5305346":"Nether Brick Stairs","5305347":"Nether Brick Stairs","5305348":"Nether Brick Stairs","5305349":"Nether Brick Stairs","5305350":"Nether Brick Stairs","5305351":"Nether Brick Stairs","5341184":"Red Nether Brick Stairs","5341185":"Red Nether Brick Stairs","5341186":"Red Nether Brick Stairs","5341187":"Red Nether Brick Stairs","5341188":"Red Nether Brick Stairs","5341189":"Red Nether Brick Stairs","5341190":"Red Nether Brick Stairs","5341191":"Red Nether Brick Stairs","5420544":"Chiseled Nether Bricks","5421056":"Cracked Nether Bricks","5306880":"Nether Portal","5306881":"Nether Portal","5307904":"Nether Reactor Core","5308928":"Nether Wart Block","5308416":"Nether Wart","5308417":"Nether Wart","5308418":"Nether Wart","5308419":"Nether Wart","5309440":"Netherrack","5309952":"Note Block","5318144":"Obsidian","5320192":"Packed Ice","5322240":"Podzol","5327872":"Potato Block","5327873":"Potato Block","5327874":"Potato Block","5327875":"Potato Block","5327876":"Potato Block","5327877":"Potato Block","5327878":"Potato Block","5327879":"Potato Block","5328384":"Powered Rail","5328385":"Powered Rail","5328386":"Powered Rail","5328387":"Powered Rail","5328388":"Powered Rail","5328389":"Powered Rail","5328392":"Powered Rail","5328393":"Powered Rail","5328394":"Powered Rail","5328395":"Powered Rail","5328396":"Powered Rail","5328397":"Powered Rail","5328896":"Prismarine","5179392":"Dark Prismarine","5329408":"Prismarine Bricks","5330432":"Prismarine Bricks Stairs","5330433":"Prismarine Bricks Stairs","5330434":"Prismarine Bricks Stairs","5330435":"Prismarine Bricks Stairs","5330436":"Prismarine Bricks Stairs","5330437":"Prismarine Bricks Stairs","5330438":"Prismarine Bricks Stairs","5330439":"Prismarine Bricks Stairs","5180416":"Dark Prismarine Stairs","5180417":"Dark Prismarine Stairs","5180418":"Dark Prismarine Stairs","5180419":"Dark Prismarine Stairs","5180420":"Dark Prismarine Stairs","5180421":"Dark Prismarine Stairs","5180422":"Dark Prismarine Stairs","5180423":"Dark Prismarine Stairs","5331456":"Prismarine Stairs","5331457":"Prismarine Stairs","5331458":"Prismarine Stairs","5331459":"Prismarine Stairs","5331460":"Prismarine Stairs","5331461":"Prismarine Stairs","5331462":"Prismarine Stairs","5331463":"Prismarine Stairs","5332480":"Pumpkin","5155840":"Carved Pumpkin","5155841":"Carved Pumpkin","5155842":"Carved Pumpkin","5155843":"Carved Pumpkin","5294592":"Jack o'Lantern","5294593":"Jack o'Lantern","5294594":"Jack o'Lantern","5294595":"Jack o'Lantern","5332992":"Pumpkin Stem","5332993":"Pumpkin Stem","5332994":"Pumpkin Stem","5332995":"Pumpkin Stem","5332996":"Pumpkin Stem","5332997":"Pumpkin Stem","5332998":"Pumpkin Stem","5332999":"Pumpkin Stem","5334528":"Purpur Block","5335040":"Purpur Pillar","5335041":"Purpur Pillar","5335042":"Purpur Pillar","5336064":"Purpur Stairs","5336065":"Purpur Stairs","5336066":"Purpur Stairs","5336067":"Purpur Stairs","5336068":"Purpur Stairs","5336069":"Purpur Stairs","5336070":"Purpur Stairs","5336071":"Purpur Stairs","5336576":"Quartz Block","5157376":"Chiseled Quartz Block","5157377":"Chiseled Quartz Block","5157378":"Chiseled Quartz Block","5337088":"Quartz Pillar","5337089":"Quartz Pillar","5337090":"Quartz Pillar","5356032":"Smooth Quartz Block","5419520":"Quartz Bricks","5338112":"Quartz Stairs","5338113":"Quartz Stairs","5338114":"Quartz Stairs","5338115":"Quartz Stairs","5338116":"Quartz Stairs","5338117":"Quartz Stairs","5338118":"Quartz Stairs","5338119":"Quartz Stairs","5357056":"Smooth Quartz Stairs","5357057":"Smooth Quartz Stairs","5357058":"Smooth Quartz Stairs","5357059":"Smooth Quartz Stairs","5357060":"Smooth Quartz Stairs","5357061":"Smooth Quartz Stairs","5357062":"Smooth Quartz Stairs","5357063":"Smooth Quartz Stairs","5338624":"Rail","5338625":"Rail","5338626":"Rail","5338627":"Rail","5338628":"Rail","5338629":"Rail","5338630":"Rail","5338631":"Rail","5338632":"Rail","5338633":"Rail","5339648":"Red Mushroom","5346304":"Redstone Block","5346816":"Redstone Comparator","5346817":"Redstone Comparator","5346818":"Redstone Comparator","5346819":"Redstone Comparator","5346820":"Redstone Comparator","5346821":"Redstone Comparator","5346822":"Redstone Comparator","5346823":"Redstone Comparator","5346824":"Redstone Comparator","5346825":"Redstone Comparator","5346826":"Redstone Comparator","5346827":"Redstone Comparator","5346828":"Redstone Comparator","5346829":"Redstone Comparator","5346830":"Redstone Comparator","5346831":"Redstone Comparator","5347328":"Redstone Lamp","5347329":"Redstone Lamp","5348352":"Redstone Repeater","5348353":"Redstone Repeater","5348354":"Redstone Repeater","5348355":"Redstone Repeater","5348356":"Redstone Repeater","5348357":"Redstone Repeater","5348358":"Redstone Repeater","5348359":"Redstone Repeater","5348360":"Redstone Repeater","5348361":"Redstone Repeater","5348362":"Redstone Repeater","5348363":"Redstone Repeater","5348364":"Redstone Repeater","5348365":"Redstone Repeater","5348366":"Redstone Repeater","5348367":"Redstone Repeater","5348368":"Redstone Repeater","5348369":"Redstone Repeater","5348370":"Redstone Repeater","5348371":"Redstone Repeater","5348372":"Redstone Repeater","5348373":"Redstone Repeater","5348374":"Redstone Repeater","5348375":"Redstone Repeater","5348376":"Redstone Repeater","5348377":"Redstone Repeater","5348378":"Redstone Repeater","5348379":"Redstone Repeater","5348380":"Redstone Repeater","5348381":"Redstone Repeater","5348382":"Redstone Repeater","5348383":"Redstone Repeater","5348865":"Redstone Torch","5348866":"Redstone Torch","5348867":"Redstone Torch","5348868":"Redstone Torch","5348869":"Redstone Torch","5348873":"Redstone Torch","5348874":"Redstone Torch","5348875":"Redstone Torch","5348876":"Redstone Torch","5348877":"Redstone Torch","5349376":"Redstone","5349377":"Redstone","5349378":"Redstone","5349379":"Redstone","5349380":"Redstone","5349381":"Redstone","5349382":"Redstone","5349383":"Redstone","5349384":"Redstone","5349385":"Redstone","5349386":"Redstone","5349387":"Redstone","5349388":"Redstone","5349389":"Redstone","5349390":"Redstone","5349391":"Redstone","5349888":"reserved6","5350912":"Sand","5342720":"Red Sand","5353472":"Sea Lantern","5353984":"Sea Pickle","5353985":"Sea Pickle","5353986":"Sea Pickle","5353987":"Sea Pickle","5353988":"Sea Pickle","5353989":"Sea Pickle","5353990":"Sea Pickle","5353991":"Sea Pickle","5298184":"Mob Head","5298185":"Mob Head","5298186":"Mob Head","5298187":"Mob Head","5298188":"Mob Head","5298189":"Mob Head","5298192":"Mob Head","5298193":"Mob Head","5298194":"Mob Head","5298195":"Mob Head","5298196":"Mob Head","5298197":"Mob Head","5298200":"Mob Head","5298201":"Mob Head","5298202":"Mob Head","5298203":"Mob Head","5298204":"Mob Head","5298205":"Mob Head","5298208":"Mob Head","5298209":"Mob Head","5298210":"Mob Head","5298211":"Mob Head","5298212":"Mob Head","5298213":"Mob Head","5298216":"Mob Head","5298217":"Mob Head","5298218":"Mob Head","5298219":"Mob Head","5298220":"Mob Head","5298221":"Mob Head","5355008":"Slime Block","5361664":"Snow Block","5362176":"Snow Layer","5362177":"Snow Layer","5362178":"Snow Layer","5362179":"Snow Layer","5362180":"Snow Layer","5362181":"Snow Layer","5362182":"Snow Layer","5362183":"Snow Layer","5362688":"Soul Sand","5363200":"Sponge","5363201":"Sponge","5354496":"Shulker Box","5373952":"Stone","5129728":"Andesite","5183488":"Diorite","5262336":"Granite","5322752":"Polished Andesite","5324288":"Polished Diorite","5325824":"Polished Granite","5376000":"Stone Bricks","5302784":"Mossy Stone Bricks","5167616":"Cracked Stone Bricks","5158912":"Chiseled Stone Bricks","5272576":"Infested Stone","5273088":"Infested Stone Brick","5271040":"Infested Cobblestone","5272064":"Infested Mossy Stone Brick","5271552":"Infested Cracked Stone Brick","5270528":"Infested Chiseled Stone Brick","5378048":"Stone Stairs","5378049":"Stone Stairs","5378050":"Stone Stairs","5378051":"Stone Stairs","5378052":"Stone Stairs","5378053":"Stone Stairs","5378054":"Stone Stairs","5378055":"Stone Stairs","5360640":"Smooth Stone","5130752":"Andesite Stairs","5130753":"Andesite Stairs","5130754":"Andesite Stairs","5130755":"Andesite Stairs","5130756":"Andesite Stairs","5130757":"Andesite Stairs","5130758":"Andesite Stairs","5130759":"Andesite Stairs","5184512":"Diorite Stairs","5184513":"Diorite Stairs","5184514":"Diorite Stairs","5184515":"Diorite Stairs","5184516":"Diorite Stairs","5184517":"Diorite Stairs","5184518":"Diorite Stairs","5184519":"Diorite Stairs","5263360":"Granite Stairs","5263361":"Granite Stairs","5263362":"Granite Stairs","5263363":"Granite Stairs","5263364":"Granite Stairs","5263365":"Granite Stairs","5263366":"Granite Stairs","5263367":"Granite Stairs","5323776":"Polished Andesite Stairs","5323777":"Polished Andesite Stairs","5323778":"Polished Andesite Stairs","5323779":"Polished Andesite Stairs","5323780":"Polished Andesite Stairs","5323781":"Polished Andesite Stairs","5323782":"Polished Andesite Stairs","5323783":"Polished Andesite Stairs","5325312":"Polished Diorite Stairs","5325313":"Polished Diorite Stairs","5325314":"Polished Diorite Stairs","5325315":"Polished Diorite Stairs","5325316":"Polished Diorite Stairs","5325317":"Polished Diorite Stairs","5325318":"Polished Diorite Stairs","5325319":"Polished Diorite Stairs","5326848":"Polished Granite Stairs","5326849":"Polished Granite Stairs","5326850":"Polished Granite Stairs","5326851":"Polished Granite Stairs","5326852":"Polished Granite Stairs","5326853":"Polished Granite Stairs","5326854":"Polished Granite Stairs","5326855":"Polished Granite Stairs","5374976":"Stone Brick Stairs","5374977":"Stone Brick Stairs","5374978":"Stone Brick Stairs","5374979":"Stone Brick Stairs","5374980":"Stone Brick Stairs","5374981":"Stone Brick Stairs","5374982":"Stone Brick Stairs","5374983":"Stone Brick Stairs","5301760":"Mossy Stone Brick Stairs","5301761":"Mossy Stone Brick Stairs","5301762":"Mossy Stone Brick Stairs","5301763":"Mossy Stone Brick Stairs","5301764":"Mossy Stone Brick Stairs","5301765":"Mossy Stone Brick Stairs","5301766":"Mossy Stone Brick Stairs","5301767":"Mossy Stone Brick Stairs","5376512":"Stone Button","5376513":"Stone Button","5376514":"Stone Button","5376515":"Stone Button","5376516":"Stone Button","5376517":"Stone Button","5376520":"Stone Button","5376521":"Stone Button","5376522":"Stone Button","5376523":"Stone Button","5376524":"Stone Button","5376525":"Stone Button","5378560":"Stonecutter","5378561":"Stonecutter","5378562":"Stonecutter","5378563":"Stonecutter","5377024":"Stone Pressure Plate","5377025":"Stone Pressure Plate","5150208":"Brick Slab","5150209":"Brick Slab","5150210":"Brick Slab","5161472":"Cobblestone Slab","5161473":"Cobblestone Slab","5161474":"Cobblestone Slab","5255168":"Fake Wooden Slab","5255169":"Fake Wooden Slab","5255170":"Fake Wooden Slab","5304832":"Nether Brick Slab","5304833":"Nether Brick Slab","5304834":"Nether Brick Slab","5337600":"Quartz Slab","5337601":"Quartz Slab","5337602":"Quartz Slab","5351936":"Sandstone Slab","5351937":"Sandstone Slab","5351938":"Sandstone Slab","5361152":"Smooth Stone Slab","5361153":"Smooth Stone Slab","5361154":"Smooth Stone Slab","5374464":"Stone Brick Slab","5374465":"Stone Brick Slab","5374466":"Stone Brick Slab","5179904":"Dark Prismarine Slab","5179905":"Dark Prismarine Slab","5179906":"Dark Prismarine Slab","5299712":"Mossy Cobblestone Slab","5299713":"Mossy Cobblestone Slab","5299714":"Mossy Cobblestone Slab","5330944":"Prismarine Slab","5330945":"Prismarine Slab","5330946":"Prismarine Slab","5329920":"Prismarine Bricks Slab","5329921":"Prismarine Bricks Slab","5329922":"Prismarine Bricks Slab","5335552":"Purpur Slab","5335553":"Purpur Slab","5335554":"Purpur Slab","5340672":"Red Nether Brick Slab","5340673":"Red Nether Brick Slab","5340674":"Red Nether Brick Slab","5343744":"Red Sandstone Slab","5343745":"Red Sandstone Slab","5343746":"Red Sandstone Slab","5359616":"Smooth Sandstone Slab","5359617":"Smooth Sandstone Slab","5359618":"Smooth Sandstone Slab","5130240":"Andesite Slab","5130241":"Andesite Slab","5130242":"Andesite Slab","5184000":"Diorite Slab","5184001":"Diorite Slab","5184002":"Diorite Slab","5252608":"End Stone Brick Slab","5252609":"End Stone Brick Slab","5252610":"End Stone Brick Slab","5262848":"Granite Slab","5262849":"Granite Slab","5262850":"Granite Slab","5323264":"Polished Andesite Slab","5323265":"Polished Andesite Slab","5323266":"Polished Andesite Slab","5324800":"Polished Diorite Slab","5324801":"Polished Diorite Slab","5324802":"Polished Diorite Slab","5326336":"Polished Granite Slab","5326337":"Polished Granite Slab","5326338":"Polished Granite Slab","5358080":"Smooth Red Sandstone Slab","5358081":"Smooth Red Sandstone Slab","5358082":"Smooth Red Sandstone Slab","5169152":"Cut Red Sandstone Slab","5169153":"Cut Red Sandstone Slab","5169154":"Cut Red Sandstone Slab","5170176":"Cut Sandstone Slab","5170177":"Cut Sandstone Slab","5170178":"Cut Sandstone Slab","5301248":"Mossy Stone Brick Slab","5301249":"Mossy Stone Brick Slab","5301250":"Mossy Stone Brick Slab","5356544":"Smooth Quartz Slab","5356545":"Smooth Quartz Slab","5356546":"Smooth Quartz Slab","5377536":"Stone Slab","5377537":"Stone Slab","5377538":"Stone Slab","5290496":"Legacy Stonecutter","5385216":"Sugarcane","5385217":"Sugarcane","5385218":"Sugarcane","5385219":"Sugarcane","5385220":"Sugarcane","5385221":"Sugarcane","5385222":"Sugarcane","5385223":"Sugarcane","5385224":"Sugarcane","5385225":"Sugarcane","5385226":"Sugarcane","5385227":"Sugarcane","5385228":"Sugarcane","5385229":"Sugarcane","5385230":"Sugarcane","5385231":"Sugarcane","5386240":"Sweet Berry Bush","5386241":"Sweet Berry Bush","5386242":"Sweet Berry Bush","5386243":"Sweet Berry Bush","5387264":"TNT","5387265":"TNT","5387266":"TNT","5387267":"TNT","5256192":"Fern","5386752":"Tall Grass","5148161":"Blue Torch","5148162":"Blue Torch","5148163":"Blue Torch","5148164":"Blue Torch","5148165":"Blue Torch","5334017":"Purple Torch","5334018":"Purple Torch","5334019":"Purple Torch","5334020":"Purple Torch","5334021":"Purple Torch","5345281":"Red Torch","5345282":"Red Torch","5345283":"Red Torch","5345284":"Red Torch","5345285":"Red Torch","5266945":"Green Torch","5266946":"Green Torch","5266947":"Green Torch","5266948":"Green Torch","5266949":"Green Torch","5387777":"Torch","5387778":"Torch","5387779":"Torch","5387780":"Torch","5387781":"Torch","5388288":"Trapped Chest","5388289":"Trapped Chest","5388290":"Trapped Chest","5388291":"Trapped Chest","5388800":"Tripwire","5388801":"Tripwire","5388802":"Tripwire","5388803":"Tripwire","5388804":"Tripwire","5388805":"Tripwire","5388806":"Tripwire","5388807":"Tripwire","5388808":"Tripwire","5388809":"Tripwire","5388810":"Tripwire","5388811":"Tripwire","5388812":"Tripwire","5388813":"Tripwire","5388814":"Tripwire","5388815":"Tripwire","5389312":"Tripwire Hook","5389313":"Tripwire Hook","5389314":"Tripwire Hook","5389315":"Tripwire Hook","5389316":"Tripwire Hook","5389317":"Tripwire Hook","5389318":"Tripwire Hook","5389319":"Tripwire Hook","5389320":"Tripwire Hook","5389321":"Tripwire Hook","5389322":"Tripwire Hook","5389323":"Tripwire Hook","5389324":"Tripwire Hook","5389325":"Tripwire Hook","5389326":"Tripwire Hook","5389327":"Tripwire Hook","5389825":"Underwater Torch","5389826":"Underwater Torch","5389827":"Underwater Torch","5389828":"Underwater Torch","5389829":"Underwater Torch","5390336":"Vines","5390337":"Vines","5390338":"Vines","5390339":"Vines","5390340":"Vines","5390341":"Vines","5390342":"Vines","5390343":"Vines","5390344":"Vines","5390345":"Vines","5390346":"Vines","5390347":"Vines","5390348":"Vines","5390349":"Vines","5390350":"Vines","5390351":"Vines","5391872":"Water","5391873":"Water","5391874":"Water","5391875":"Water","5391876":"Water","5391877":"Water","5391878":"Water","5391879":"Water","5391880":"Water","5391881":"Water","5391882":"Water","5391883":"Water","5391884":"Water","5391885":"Water","5391886":"Water","5391887":"Water","5391888":"Water","5391889":"Water","5391890":"Water","5391891":"Water","5391892":"Water","5391893":"Water","5391894":"Water","5391895":"Water","5391896":"Water","5391897":"Water","5391898":"Water","5391899":"Water","5391900":"Water","5391901":"Water","5391902":"Water","5391903":"Water","5293568":"Lily Pad","5392384":"Weighted Pressure Plate Heavy","5392385":"Weighted Pressure Plate Heavy","5392386":"Weighted Pressure Plate Heavy","5392387":"Weighted Pressure Plate Heavy","5392388":"Weighted Pressure Plate Heavy","5392389":"Weighted Pressure Plate Heavy","5392390":"Weighted Pressure Plate Heavy","5392391":"Weighted Pressure Plate Heavy","5392392":"Weighted Pressure Plate Heavy","5392393":"Weighted Pressure Plate Heavy","5392394":"Weighted Pressure Plate Heavy","5392395":"Weighted Pressure Plate Heavy","5392396":"Weighted Pressure Plate Heavy","5392397":"Weighted Pressure Plate Heavy","5392398":"Weighted Pressure Plate Heavy","5392399":"Weighted Pressure Plate Heavy","5392896":"Weighted Pressure Plate Light","5392897":"Weighted Pressure Plate Light","5392898":"Weighted Pressure Plate Light","5392899":"Weighted Pressure Plate Light","5392900":"Weighted Pressure Plate Light","5392901":"Weighted Pressure Plate Light","5392902":"Weighted Pressure Plate Light","5392903":"Weighted Pressure Plate Light","5392904":"Weighted Pressure Plate Light","5392905":"Weighted Pressure Plate Light","5392906":"Weighted Pressure Plate Light","5392907":"Weighted Pressure Plate Light","5392908":"Weighted Pressure Plate Light","5392909":"Weighted Pressure Plate Light","5392910":"Weighted Pressure Plate Light","5392911":"Weighted Pressure Plate Light","5393408":"Wheat Block","5393409":"Wheat Block","5393410":"Wheat Block","5393411":"Wheat Block","5393412":"Wheat Block","5393413":"Wheat Block","5393414":"Wheat Block","5393415":"Wheat Block","5314560":"Oak Sapling","5314561":"Oak Sapling","5312512":"Oak Leaves","5312513":"Oak Leaves","5312514":"Oak Leaves","5312515":"Oak Leaves","5367808":"Spruce Sapling","5367809":"Spruce Sapling","5365760":"Spruce Leaves","5365761":"Spruce Leaves","5365762":"Spruce Leaves","5365763":"Spruce Leaves","5142016":"Birch Sapling","5142017":"Birch Sapling","5139968":"Birch Leaves","5139969":"Birch Leaves","5139970":"Birch Leaves","5139971":"Birch Leaves","5282816":"Jungle Sapling","5282817":"Jungle Sapling","5280768":"Jungle Leaves","5280769":"Jungle Leaves","5280770":"Jungle Leaves","5280771":"Jungle Leaves","5124608":"Acacia Sapling","5124609":"Acacia Sapling","5122560":"Acacia Leaves","5122561":"Acacia Leaves","5122562":"Acacia Leaves","5122563":"Acacia Leaves","5175808":"Dark Oak Sapling","5175809":"Dark Oak Sapling","5173760":"Dark Oak Leaves","5173761":"Dark Oak Leaves","5173762":"Dark Oak Leaves","5173763":"Dark Oak Leaves","5313024":"Oak Log","5313025":"Oak Log","5313026":"Oak Log","5313027":"Oak Log","5313028":"Oak Log","5313029":"Oak Log","5317632":"Oak Wood","5317633":"Oak Wood","5317634":"Oak Wood","5317635":"Oak Wood","5317636":"Oak Wood","5317637":"Oak Wood","5313536":"Oak Planks","5311488":"Oak Fence","5315584":"Oak Slab","5315585":"Oak Slab","5315586":"Oak Slab","5312000":"Oak Fence Gate","5312001":"Oak Fence Gate","5312002":"Oak Fence Gate","5312003":"Oak Fence Gate","5312004":"Oak Fence Gate","5312005":"Oak Fence Gate","5312006":"Oak Fence Gate","5312007":"Oak Fence Gate","5312008":"Oak Fence Gate","5312009":"Oak Fence Gate","5312010":"Oak Fence Gate","5312011":"Oak Fence Gate","5312012":"Oak Fence Gate","5312013":"Oak Fence Gate","5312014":"Oak Fence Gate","5312015":"Oak Fence Gate","5316096":"Oak Stairs","5316097":"Oak Stairs","5316098":"Oak Stairs","5316099":"Oak Stairs","5316100":"Oak Stairs","5316101":"Oak Stairs","5316102":"Oak Stairs","5316103":"Oak Stairs","5310976":"Oak Door","5310977":"Oak Door","5310978":"Oak Door","5310979":"Oak Door","5310980":"Oak Door","5310981":"Oak Door","5310982":"Oak Door","5310983":"Oak Door","5310984":"Oak Door","5310985":"Oak Door","5310986":"Oak Door","5310987":"Oak Door","5310988":"Oak Door","5310989":"Oak Door","5310990":"Oak Door","5310991":"Oak Door","5310992":"Oak Door","5310993":"Oak Door","5310994":"Oak Door","5310995":"Oak Door","5310996":"Oak Door","5310997":"Oak Door","5310998":"Oak Door","5310999":"Oak Door","5311000":"Oak Door","5311001":"Oak Door","5311002":"Oak Door","5311003":"Oak Door","5311004":"Oak Door","5311005":"Oak Door","5311006":"Oak Door","5311007":"Oak Door","5310464":"Oak Button","5310465":"Oak Button","5310466":"Oak Button","5310467":"Oak Button","5310468":"Oak Button","5310469":"Oak Button","5310472":"Oak Button","5310473":"Oak Button","5310474":"Oak Button","5310475":"Oak Button","5310476":"Oak Button","5310477":"Oak Button","5314048":"Oak Pressure Plate","5314049":"Oak Pressure Plate","5316608":"Oak Trapdoor","5316609":"Oak Trapdoor","5316610":"Oak Trapdoor","5316611":"Oak Trapdoor","5316612":"Oak Trapdoor","5316613":"Oak Trapdoor","5316614":"Oak Trapdoor","5316615":"Oak Trapdoor","5316616":"Oak Trapdoor","5316617":"Oak Trapdoor","5316618":"Oak Trapdoor","5316619":"Oak Trapdoor","5316620":"Oak Trapdoor","5316621":"Oak Trapdoor","5316622":"Oak Trapdoor","5316623":"Oak Trapdoor","5315072":"Oak Sign","5315073":"Oak Sign","5315074":"Oak Sign","5315075":"Oak Sign","5315076":"Oak Sign","5315077":"Oak Sign","5315078":"Oak Sign","5315079":"Oak Sign","5315080":"Oak Sign","5315081":"Oak Sign","5315082":"Oak Sign","5315083":"Oak Sign","5315084":"Oak Sign","5315085":"Oak Sign","5315086":"Oak Sign","5315087":"Oak Sign","5317120":"Oak Wall Sign","5317121":"Oak Wall Sign","5317122":"Oak Wall Sign","5317123":"Oak Wall Sign","5366272":"Spruce Log","5366273":"Spruce Log","5366274":"Spruce Log","5366275":"Spruce Log","5366276":"Spruce Log","5366277":"Spruce Log","5370880":"Spruce Wood","5370881":"Spruce Wood","5370882":"Spruce Wood","5370883":"Spruce Wood","5370884":"Spruce Wood","5370885":"Spruce Wood","5366784":"Spruce Planks","5364736":"Spruce Fence","5368832":"Spruce Slab","5368833":"Spruce Slab","5368834":"Spruce Slab","5365248":"Spruce Fence Gate","5365249":"Spruce Fence Gate","5365250":"Spruce Fence Gate","5365251":"Spruce Fence Gate","5365252":"Spruce Fence Gate","5365253":"Spruce Fence Gate","5365254":"Spruce Fence Gate","5365255":"Spruce Fence Gate","5365256":"Spruce Fence Gate","5365257":"Spruce Fence Gate","5365258":"Spruce Fence Gate","5365259":"Spruce Fence Gate","5365260":"Spruce Fence Gate","5365261":"Spruce Fence Gate","5365262":"Spruce Fence Gate","5365263":"Spruce Fence Gate","5369344":"Spruce Stairs","5369345":"Spruce Stairs","5369346":"Spruce Stairs","5369347":"Spruce Stairs","5369348":"Spruce Stairs","5369349":"Spruce Stairs","5369350":"Spruce Stairs","5369351":"Spruce Stairs","5364224":"Spruce Door","5364225":"Spruce Door","5364226":"Spruce Door","5364227":"Spruce Door","5364228":"Spruce Door","5364229":"Spruce Door","5364230":"Spruce Door","5364231":"Spruce Door","5364232":"Spruce Door","5364233":"Spruce Door","5364234":"Spruce Door","5364235":"Spruce Door","5364236":"Spruce Door","5364237":"Spruce Door","5364238":"Spruce Door","5364239":"Spruce Door","5364240":"Spruce Door","5364241":"Spruce Door","5364242":"Spruce Door","5364243":"Spruce Door","5364244":"Spruce Door","5364245":"Spruce Door","5364246":"Spruce Door","5364247":"Spruce Door","5364248":"Spruce Door","5364249":"Spruce Door","5364250":"Spruce Door","5364251":"Spruce Door","5364252":"Spruce Door","5364253":"Spruce Door","5364254":"Spruce Door","5364255":"Spruce Door","5363712":"Spruce Button","5363713":"Spruce Button","5363714":"Spruce Button","5363715":"Spruce Button","5363716":"Spruce Button","5363717":"Spruce Button","5363720":"Spruce Button","5363721":"Spruce Button","5363722":"Spruce Button","5363723":"Spruce Button","5363724":"Spruce Button","5363725":"Spruce Button","5367296":"Spruce Pressure Plate","5367297":"Spruce Pressure Plate","5369856":"Spruce Trapdoor","5369857":"Spruce Trapdoor","5369858":"Spruce Trapdoor","5369859":"Spruce Trapdoor","5369860":"Spruce Trapdoor","5369861":"Spruce Trapdoor","5369862":"Spruce Trapdoor","5369863":"Spruce Trapdoor","5369864":"Spruce Trapdoor","5369865":"Spruce Trapdoor","5369866":"Spruce Trapdoor","5369867":"Spruce Trapdoor","5369868":"Spruce Trapdoor","5369869":"Spruce Trapdoor","5369870":"Spruce Trapdoor","5369871":"Spruce Trapdoor","5368320":"Spruce Sign","5368321":"Spruce Sign","5368322":"Spruce Sign","5368323":"Spruce Sign","5368324":"Spruce Sign","5368325":"Spruce Sign","5368326":"Spruce Sign","5368327":"Spruce Sign","5368328":"Spruce Sign","5368329":"Spruce Sign","5368330":"Spruce Sign","5368331":"Spruce Sign","5368332":"Spruce Sign","5368333":"Spruce Sign","5368334":"Spruce Sign","5368335":"Spruce Sign","5370368":"Spruce Wall Sign","5370369":"Spruce Wall Sign","5370370":"Spruce Wall Sign","5370371":"Spruce Wall Sign","5140480":"Birch Log","5140481":"Birch Log","5140482":"Birch Log","5140483":"Birch Log","5140484":"Birch Log","5140485":"Birch Log","5145088":"Birch Wood","5145089":"Birch Wood","5145090":"Birch Wood","5145091":"Birch Wood","5145092":"Birch Wood","5145093":"Birch Wood","5140992":"Birch Planks","5138944":"Birch Fence","5143040":"Birch Slab","5143041":"Birch Slab","5143042":"Birch Slab","5139456":"Birch Fence Gate","5139457":"Birch Fence Gate","5139458":"Birch Fence Gate","5139459":"Birch Fence Gate","5139460":"Birch Fence Gate","5139461":"Birch Fence Gate","5139462":"Birch Fence Gate","5139463":"Birch Fence Gate","5139464":"Birch Fence Gate","5139465":"Birch Fence Gate","5139466":"Birch Fence Gate","5139467":"Birch Fence Gate","5139468":"Birch Fence Gate","5139469":"Birch Fence Gate","5139470":"Birch Fence Gate","5139471":"Birch Fence Gate","5143552":"Birch Stairs","5143553":"Birch Stairs","5143554":"Birch Stairs","5143555":"Birch Stairs","5143556":"Birch Stairs","5143557":"Birch Stairs","5143558":"Birch Stairs","5143559":"Birch Stairs","5138432":"Birch Door","5138433":"Birch Door","5138434":"Birch Door","5138435":"Birch Door","5138436":"Birch Door","5138437":"Birch Door","5138438":"Birch Door","5138439":"Birch Door","5138440":"Birch Door","5138441":"Birch Door","5138442":"Birch Door","5138443":"Birch Door","5138444":"Birch Door","5138445":"Birch Door","5138446":"Birch Door","5138447":"Birch Door","5138448":"Birch Door","5138449":"Birch Door","5138450":"Birch Door","5138451":"Birch Door","5138452":"Birch Door","5138453":"Birch Door","5138454":"Birch Door","5138455":"Birch Door","5138456":"Birch Door","5138457":"Birch Door","5138458":"Birch Door","5138459":"Birch Door","5138460":"Birch Door","5138461":"Birch Door","5138462":"Birch Door","5138463":"Birch Door","5137920":"Birch Button","5137921":"Birch Button","5137922":"Birch Button","5137923":"Birch Button","5137924":"Birch Button","5137925":"Birch Button","5137928":"Birch Button","5137929":"Birch Button","5137930":"Birch Button","5137931":"Birch Button","5137932":"Birch Button","5137933":"Birch Button","5141504":"Birch Pressure Plate","5141505":"Birch Pressure Plate","5144064":"Birch Trapdoor","5144065":"Birch Trapdoor","5144066":"Birch Trapdoor","5144067":"Birch Trapdoor","5144068":"Birch Trapdoor","5144069":"Birch Trapdoor","5144070":"Birch Trapdoor","5144071":"Birch Trapdoor","5144072":"Birch Trapdoor","5144073":"Birch Trapdoor","5144074":"Birch Trapdoor","5144075":"Birch Trapdoor","5144076":"Birch Trapdoor","5144077":"Birch Trapdoor","5144078":"Birch Trapdoor","5144079":"Birch Trapdoor","5142528":"Birch Sign","5142529":"Birch Sign","5142530":"Birch Sign","5142531":"Birch Sign","5142532":"Birch Sign","5142533":"Birch Sign","5142534":"Birch Sign","5142535":"Birch Sign","5142536":"Birch Sign","5142537":"Birch Sign","5142538":"Birch Sign","5142539":"Birch Sign","5142540":"Birch Sign","5142541":"Birch Sign","5142542":"Birch Sign","5142543":"Birch Sign","5144576":"Birch Wall Sign","5144577":"Birch Wall Sign","5144578":"Birch Wall Sign","5144579":"Birch Wall Sign","5281280":"Jungle Log","5281281":"Jungle Log","5281282":"Jungle Log","5281283":"Jungle Log","5281284":"Jungle Log","5281285":"Jungle Log","5285888":"Jungle Wood","5285889":"Jungle Wood","5285890":"Jungle Wood","5285891":"Jungle Wood","5285892":"Jungle Wood","5285893":"Jungle Wood","5281792":"Jungle Planks","5279744":"Jungle Fence","5283840":"Jungle Slab","5283841":"Jungle Slab","5283842":"Jungle Slab","5280256":"Jungle Fence Gate","5280257":"Jungle Fence Gate","5280258":"Jungle Fence Gate","5280259":"Jungle Fence Gate","5280260":"Jungle Fence Gate","5280261":"Jungle Fence Gate","5280262":"Jungle Fence Gate","5280263":"Jungle Fence Gate","5280264":"Jungle Fence Gate","5280265":"Jungle Fence Gate","5280266":"Jungle Fence Gate","5280267":"Jungle Fence Gate","5280268":"Jungle Fence Gate","5280269":"Jungle Fence Gate","5280270":"Jungle Fence Gate","5280271":"Jungle Fence Gate","5284352":"Jungle Stairs","5284353":"Jungle Stairs","5284354":"Jungle Stairs","5284355":"Jungle Stairs","5284356":"Jungle Stairs","5284357":"Jungle Stairs","5284358":"Jungle Stairs","5284359":"Jungle Stairs","5279232":"Jungle Door","5279233":"Jungle Door","5279234":"Jungle Door","5279235":"Jungle Door","5279236":"Jungle Door","5279237":"Jungle Door","5279238":"Jungle Door","5279239":"Jungle Door","5279240":"Jungle Door","5279241":"Jungle Door","5279242":"Jungle Door","5279243":"Jungle Door","5279244":"Jungle Door","5279245":"Jungle Door","5279246":"Jungle Door","5279247":"Jungle Door","5279248":"Jungle Door","5279249":"Jungle Door","5279250":"Jungle Door","5279251":"Jungle Door","5279252":"Jungle Door","5279253":"Jungle Door","5279254":"Jungle Door","5279255":"Jungle Door","5279256":"Jungle Door","5279257":"Jungle Door","5279258":"Jungle Door","5279259":"Jungle Door","5279260":"Jungle Door","5279261":"Jungle Door","5279262":"Jungle Door","5279263":"Jungle Door","5278720":"Jungle Button","5278721":"Jungle Button","5278722":"Jungle Button","5278723":"Jungle Button","5278724":"Jungle Button","5278725":"Jungle Button","5278728":"Jungle Button","5278729":"Jungle Button","5278730":"Jungle Button","5278731":"Jungle Button","5278732":"Jungle Button","5278733":"Jungle Button","5282304":"Jungle Pressure Plate","5282305":"Jungle Pressure Plate","5284864":"Jungle Trapdoor","5284865":"Jungle Trapdoor","5284866":"Jungle Trapdoor","5284867":"Jungle Trapdoor","5284868":"Jungle Trapdoor","5284869":"Jungle Trapdoor","5284870":"Jungle Trapdoor","5284871":"Jungle Trapdoor","5284872":"Jungle Trapdoor","5284873":"Jungle Trapdoor","5284874":"Jungle Trapdoor","5284875":"Jungle Trapdoor","5284876":"Jungle Trapdoor","5284877":"Jungle Trapdoor","5284878":"Jungle Trapdoor","5284879":"Jungle Trapdoor","5283328":"Jungle Sign","5283329":"Jungle Sign","5283330":"Jungle Sign","5283331":"Jungle Sign","5283332":"Jungle Sign","5283333":"Jungle Sign","5283334":"Jungle Sign","5283335":"Jungle Sign","5283336":"Jungle Sign","5283337":"Jungle Sign","5283338":"Jungle Sign","5283339":"Jungle Sign","5283340":"Jungle Sign","5283341":"Jungle Sign","5283342":"Jungle Sign","5283343":"Jungle Sign","5285376":"Jungle Wall Sign","5285377":"Jungle Wall Sign","5285378":"Jungle Wall Sign","5285379":"Jungle Wall Sign","5123072":"Acacia Log","5123073":"Acacia Log","5123074":"Acacia Log","5123075":"Acacia Log","5123076":"Acacia Log","5123077":"Acacia Log","5127680":"Acacia Wood","5127681":"Acacia Wood","5127682":"Acacia Wood","5127683":"Acacia Wood","5127684":"Acacia Wood","5127685":"Acacia Wood","5123584":"Acacia Planks","5121536":"Acacia Fence","5125632":"Acacia Slab","5125633":"Acacia Slab","5125634":"Acacia Slab","5122048":"Acacia Fence Gate","5122049":"Acacia Fence Gate","5122050":"Acacia Fence Gate","5122051":"Acacia Fence Gate","5122052":"Acacia Fence Gate","5122053":"Acacia Fence Gate","5122054":"Acacia Fence Gate","5122055":"Acacia Fence Gate","5122056":"Acacia Fence Gate","5122057":"Acacia Fence Gate","5122058":"Acacia Fence Gate","5122059":"Acacia Fence Gate","5122060":"Acacia Fence Gate","5122061":"Acacia Fence Gate","5122062":"Acacia Fence Gate","5122063":"Acacia Fence Gate","5126144":"Acacia Stairs","5126145":"Acacia Stairs","5126146":"Acacia Stairs","5126147":"Acacia Stairs","5126148":"Acacia Stairs","5126149":"Acacia Stairs","5126150":"Acacia Stairs","5126151":"Acacia Stairs","5121024":"Acacia Door","5121025":"Acacia Door","5121026":"Acacia Door","5121027":"Acacia Door","5121028":"Acacia Door","5121029":"Acacia Door","5121030":"Acacia Door","5121031":"Acacia Door","5121032":"Acacia Door","5121033":"Acacia Door","5121034":"Acacia Door","5121035":"Acacia Door","5121036":"Acacia Door","5121037":"Acacia Door","5121038":"Acacia Door","5121039":"Acacia Door","5121040":"Acacia Door","5121041":"Acacia Door","5121042":"Acacia Door","5121043":"Acacia Door","5121044":"Acacia Door","5121045":"Acacia Door","5121046":"Acacia Door","5121047":"Acacia Door","5121048":"Acacia Door","5121049":"Acacia Door","5121050":"Acacia Door","5121051":"Acacia Door","5121052":"Acacia Door","5121053":"Acacia Door","5121054":"Acacia Door","5121055":"Acacia Door","5120512":"Acacia Button","5120513":"Acacia Button","5120514":"Acacia Button","5120515":"Acacia Button","5120516":"Acacia Button","5120517":"Acacia Button","5120520":"Acacia Button","5120521":"Acacia Button","5120522":"Acacia Button","5120523":"Acacia Button","5120524":"Acacia Button","5120525":"Acacia Button","5124096":"Acacia Pressure Plate","5124097":"Acacia Pressure Plate","5126656":"Acacia Trapdoor","5126657":"Acacia Trapdoor","5126658":"Acacia Trapdoor","5126659":"Acacia Trapdoor","5126660":"Acacia Trapdoor","5126661":"Acacia Trapdoor","5126662":"Acacia Trapdoor","5126663":"Acacia Trapdoor","5126664":"Acacia Trapdoor","5126665":"Acacia Trapdoor","5126666":"Acacia Trapdoor","5126667":"Acacia Trapdoor","5126668":"Acacia Trapdoor","5126669":"Acacia Trapdoor","5126670":"Acacia Trapdoor","5126671":"Acacia Trapdoor","5125120":"Acacia Sign","5125121":"Acacia Sign","5125122":"Acacia Sign","5125123":"Acacia Sign","5125124":"Acacia Sign","5125125":"Acacia Sign","5125126":"Acacia Sign","5125127":"Acacia Sign","5125128":"Acacia Sign","5125129":"Acacia Sign","5125130":"Acacia Sign","5125131":"Acacia Sign","5125132":"Acacia Sign","5125133":"Acacia Sign","5125134":"Acacia Sign","5125135":"Acacia Sign","5127168":"Acacia Wall Sign","5127169":"Acacia Wall Sign","5127170":"Acacia Wall Sign","5127171":"Acacia Wall Sign","5174272":"Dark Oak Log","5174273":"Dark Oak Log","5174274":"Dark Oak Log","5174275":"Dark Oak Log","5174276":"Dark Oak Log","5174277":"Dark Oak Log","5178880":"Dark Oak Wood","5178881":"Dark Oak Wood","5178882":"Dark Oak Wood","5178883":"Dark Oak Wood","5178884":"Dark Oak Wood","5178885":"Dark Oak Wood","5174784":"Dark Oak Planks","5172736":"Dark Oak Fence","5176832":"Dark Oak Slab","5176833":"Dark Oak Slab","5176834":"Dark Oak Slab","5173248":"Dark Oak Fence Gate","5173249":"Dark Oak Fence Gate","5173250":"Dark Oak Fence Gate","5173251":"Dark Oak Fence Gate","5173252":"Dark Oak Fence Gate","5173253":"Dark Oak Fence Gate","5173254":"Dark Oak Fence Gate","5173255":"Dark Oak Fence Gate","5173256":"Dark Oak Fence Gate","5173257":"Dark Oak Fence Gate","5173258":"Dark Oak Fence Gate","5173259":"Dark Oak Fence Gate","5173260":"Dark Oak Fence Gate","5173261":"Dark Oak Fence Gate","5173262":"Dark Oak Fence Gate","5173263":"Dark Oak Fence Gate","5177344":"Dark Oak Stairs","5177345":"Dark Oak Stairs","5177346":"Dark Oak Stairs","5177347":"Dark Oak Stairs","5177348":"Dark Oak Stairs","5177349":"Dark Oak Stairs","5177350":"Dark Oak Stairs","5177351":"Dark Oak Stairs","5172224":"Dark Oak Door","5172225":"Dark Oak Door","5172226":"Dark Oak Door","5172227":"Dark Oak Door","5172228":"Dark Oak Door","5172229":"Dark Oak Door","5172230":"Dark Oak Door","5172231":"Dark Oak Door","5172232":"Dark Oak Door","5172233":"Dark Oak Door","5172234":"Dark Oak Door","5172235":"Dark Oak Door","5172236":"Dark Oak Door","5172237":"Dark Oak Door","5172238":"Dark Oak Door","5172239":"Dark Oak Door","5172240":"Dark Oak Door","5172241":"Dark Oak Door","5172242":"Dark Oak Door","5172243":"Dark Oak Door","5172244":"Dark Oak Door","5172245":"Dark Oak Door","5172246":"Dark Oak Door","5172247":"Dark Oak Door","5172248":"Dark Oak Door","5172249":"Dark Oak Door","5172250":"Dark Oak Door","5172251":"Dark Oak Door","5172252":"Dark Oak Door","5172253":"Dark Oak Door","5172254":"Dark Oak Door","5172255":"Dark Oak Door","5171712":"Dark Oak Button","5171713":"Dark Oak Button","5171714":"Dark Oak Button","5171715":"Dark Oak Button","5171716":"Dark Oak Button","5171717":"Dark Oak Button","5171720":"Dark Oak Button","5171721":"Dark Oak Button","5171722":"Dark Oak Button","5171723":"Dark Oak Button","5171724":"Dark Oak Button","5171725":"Dark Oak Button","5175296":"Dark Oak Pressure Plate","5175297":"Dark Oak Pressure Plate","5177856":"Dark Oak Trapdoor","5177857":"Dark Oak Trapdoor","5177858":"Dark Oak Trapdoor","5177859":"Dark Oak Trapdoor","5177860":"Dark Oak Trapdoor","5177861":"Dark Oak Trapdoor","5177862":"Dark Oak Trapdoor","5177863":"Dark Oak Trapdoor","5177864":"Dark Oak Trapdoor","5177865":"Dark Oak Trapdoor","5177866":"Dark Oak Trapdoor","5177867":"Dark Oak Trapdoor","5177868":"Dark Oak Trapdoor","5177869":"Dark Oak Trapdoor","5177870":"Dark Oak Trapdoor","5177871":"Dark Oak Trapdoor","5176320":"Dark Oak Sign","5176321":"Dark Oak Sign","5176322":"Dark Oak Sign","5176323":"Dark Oak Sign","5176324":"Dark Oak Sign","5176325":"Dark Oak Sign","5176326":"Dark Oak Sign","5176327":"Dark Oak Sign","5176328":"Dark Oak Sign","5176329":"Dark Oak Sign","5176330":"Dark Oak Sign","5176331":"Dark Oak Sign","5176332":"Dark Oak Sign","5176333":"Dark Oak Sign","5176334":"Dark Oak Sign","5176335":"Dark Oak Sign","5178368":"Dark Oak Wall Sign","5178369":"Dark Oak Wall Sign","5178370":"Dark Oak Wall Sign","5178371":"Dark Oak Wall Sign","5429248":"Mangrove Log","5429249":"Mangrove Log","5429250":"Mangrove Log","5429251":"Mangrove Log","5429252":"Mangrove Log","5429253":"Mangrove Log","5430784":"Mangrove Wood","5430785":"Mangrove Wood","5430786":"Mangrove Wood","5430787":"Mangrove Wood","5430788":"Mangrove Wood","5430789":"Mangrove Wood","5424640":"Mangrove Planks","5426176":"Mangrove Fence","5427712":"Mangrove Slab","5427713":"Mangrove Slab","5427714":"Mangrove Slab","5438464":"Mangrove Fence Gate","5438465":"Mangrove Fence Gate","5438466":"Mangrove Fence Gate","5438467":"Mangrove Fence Gate","5438468":"Mangrove Fence Gate","5438469":"Mangrove Fence Gate","5438470":"Mangrove Fence Gate","5438471":"Mangrove Fence Gate","5438472":"Mangrove Fence Gate","5438473":"Mangrove Fence Gate","5438474":"Mangrove Fence Gate","5438475":"Mangrove Fence Gate","5438476":"Mangrove Fence Gate","5438477":"Mangrove Fence Gate","5438478":"Mangrove Fence Gate","5438479":"Mangrove Fence Gate","5440000":"Mangrove Stairs","5440001":"Mangrove Stairs","5440002":"Mangrove Stairs","5440003":"Mangrove Stairs","5440004":"Mangrove Stairs","5440005":"Mangrove Stairs","5440006":"Mangrove Stairs","5440007":"Mangrove Stairs","5436928":"Mangrove Door","5436929":"Mangrove Door","5436930":"Mangrove Door","5436931":"Mangrove Door","5436932":"Mangrove Door","5436933":"Mangrove Door","5436934":"Mangrove Door","5436935":"Mangrove Door","5436936":"Mangrove Door","5436937":"Mangrove Door","5436938":"Mangrove Door","5436939":"Mangrove Door","5436940":"Mangrove Door","5436941":"Mangrove Door","5436942":"Mangrove Door","5436943":"Mangrove Door","5436944":"Mangrove Door","5436945":"Mangrove Door","5436946":"Mangrove Door","5436947":"Mangrove Door","5436948":"Mangrove Door","5436949":"Mangrove Door","5436950":"Mangrove Door","5436951":"Mangrove Door","5436952":"Mangrove Door","5436953":"Mangrove Door","5436954":"Mangrove Door","5436955":"Mangrove Door","5436956":"Mangrove Door","5436957":"Mangrove Door","5436958":"Mangrove Door","5436959":"Mangrove Door","5433856":"Mangrove Button","5433857":"Mangrove Button","5433858":"Mangrove Button","5433859":"Mangrove Button","5433860":"Mangrove Button","5433861":"Mangrove Button","5433864":"Mangrove Button","5433865":"Mangrove Button","5433866":"Mangrove Button","5433867":"Mangrove Button","5433868":"Mangrove Button","5433869":"Mangrove Button","5435392":"Mangrove Pressure Plate","5435393":"Mangrove Pressure Plate","5432320":"Mangrove Trapdoor","5432321":"Mangrove Trapdoor","5432322":"Mangrove Trapdoor","5432323":"Mangrove Trapdoor","5432324":"Mangrove Trapdoor","5432325":"Mangrove Trapdoor","5432326":"Mangrove Trapdoor","5432327":"Mangrove Trapdoor","5432328":"Mangrove Trapdoor","5432329":"Mangrove Trapdoor","5432330":"Mangrove Trapdoor","5432331":"Mangrove Trapdoor","5432332":"Mangrove Trapdoor","5432333":"Mangrove Trapdoor","5432334":"Mangrove Trapdoor","5432335":"Mangrove Trapdoor","5441536":"Mangrove Sign","5441537":"Mangrove Sign","5441538":"Mangrove Sign","5441539":"Mangrove Sign","5441540":"Mangrove Sign","5441541":"Mangrove Sign","5441542":"Mangrove Sign","5441543":"Mangrove Sign","5441544":"Mangrove Sign","5441545":"Mangrove Sign","5441546":"Mangrove Sign","5441547":"Mangrove Sign","5441548":"Mangrove Sign","5441549":"Mangrove Sign","5441550":"Mangrove Sign","5441551":"Mangrove Sign","5443072":"Mangrove Wall Sign","5443073":"Mangrove Wall Sign","5443074":"Mangrove Wall Sign","5443075":"Mangrove Wall Sign","5429760":"Crimson Stem","5429761":"Crimson Stem","5429762":"Crimson Stem","5429763":"Crimson Stem","5429764":"Crimson Stem","5429765":"Crimson Stem","5431296":"Crimson Hyphae","5431297":"Crimson Hyphae","5431298":"Crimson Hyphae","5431299":"Crimson Hyphae","5431300":"Crimson Hyphae","5431301":"Crimson Hyphae","5425152":"Crimson Planks","5426688":"Crimson Fence","5428224":"Crimson Slab","5428225":"Crimson Slab","5428226":"Crimson Slab","5438976":"Crimson Fence Gate","5438977":"Crimson Fence Gate","5438978":"Crimson Fence Gate","5438979":"Crimson Fence Gate","5438980":"Crimson Fence Gate","5438981":"Crimson Fence Gate","5438982":"Crimson Fence Gate","5438983":"Crimson Fence Gate","5438984":"Crimson Fence Gate","5438985":"Crimson Fence Gate","5438986":"Crimson Fence Gate","5438987":"Crimson Fence Gate","5438988":"Crimson Fence Gate","5438989":"Crimson Fence Gate","5438990":"Crimson Fence Gate","5438991":"Crimson Fence Gate","5440512":"Crimson Stairs","5440513":"Crimson Stairs","5440514":"Crimson Stairs","5440515":"Crimson Stairs","5440516":"Crimson Stairs","5440517":"Crimson Stairs","5440518":"Crimson Stairs","5440519":"Crimson Stairs","5437440":"Crimson Door","5437441":"Crimson Door","5437442":"Crimson Door","5437443":"Crimson Door","5437444":"Crimson Door","5437445":"Crimson Door","5437446":"Crimson Door","5437447":"Crimson Door","5437448":"Crimson Door","5437449":"Crimson Door","5437450":"Crimson Door","5437451":"Crimson Door","5437452":"Crimson Door","5437453":"Crimson Door","5437454":"Crimson Door","5437455":"Crimson Door","5437456":"Crimson Door","5437457":"Crimson Door","5437458":"Crimson Door","5437459":"Crimson Door","5437460":"Crimson Door","5437461":"Crimson Door","5437462":"Crimson Door","5437463":"Crimson Door","5437464":"Crimson Door","5437465":"Crimson Door","5437466":"Crimson Door","5437467":"Crimson Door","5437468":"Crimson Door","5437469":"Crimson Door","5437470":"Crimson Door","5437471":"Crimson Door","5434368":"Crimson Button","5434369":"Crimson Button","5434370":"Crimson Button","5434371":"Crimson Button","5434372":"Crimson Button","5434373":"Crimson Button","5434376":"Crimson Button","5434377":"Crimson Button","5434378":"Crimson Button","5434379":"Crimson Button","5434380":"Crimson Button","5434381":"Crimson Button","5435904":"Crimson Pressure Plate","5435905":"Crimson Pressure Plate","5432832":"Crimson Trapdoor","5432833":"Crimson Trapdoor","5432834":"Crimson Trapdoor","5432835":"Crimson Trapdoor","5432836":"Crimson Trapdoor","5432837":"Crimson Trapdoor","5432838":"Crimson Trapdoor","5432839":"Crimson Trapdoor","5432840":"Crimson Trapdoor","5432841":"Crimson Trapdoor","5432842":"Crimson Trapdoor","5432843":"Crimson Trapdoor","5432844":"Crimson Trapdoor","5432845":"Crimson Trapdoor","5432846":"Crimson Trapdoor","5432847":"Crimson Trapdoor","5442048":"Crimson Sign","5442049":"Crimson Sign","5442050":"Crimson Sign","5442051":"Crimson Sign","5442052":"Crimson Sign","5442053":"Crimson Sign","5442054":"Crimson Sign","5442055":"Crimson Sign","5442056":"Crimson Sign","5442057":"Crimson Sign","5442058":"Crimson Sign","5442059":"Crimson Sign","5442060":"Crimson Sign","5442061":"Crimson Sign","5442062":"Crimson Sign","5442063":"Crimson Sign","5443584":"Crimson Wall Sign","5443585":"Crimson Wall Sign","5443586":"Crimson Wall Sign","5443587":"Crimson Wall Sign","5430272":"Warped Stem","5430273":"Warped Stem","5430274":"Warped Stem","5430275":"Warped Stem","5430276":"Warped Stem","5430277":"Warped Stem","5431808":"Warped Hyphae","5431809":"Warped Hyphae","5431810":"Warped Hyphae","5431811":"Warped Hyphae","5431812":"Warped Hyphae","5431813":"Warped Hyphae","5425664":"Warped Planks","5427200":"Warped Fence","5428736":"Warped Slab","5428737":"Warped Slab","5428738":"Warped Slab","5439488":"Warped Fence Gate","5439489":"Warped Fence Gate","5439490":"Warped Fence Gate","5439491":"Warped Fence Gate","5439492":"Warped Fence Gate","5439493":"Warped Fence Gate","5439494":"Warped Fence Gate","5439495":"Warped Fence Gate","5439496":"Warped Fence Gate","5439497":"Warped Fence Gate","5439498":"Warped Fence Gate","5439499":"Warped Fence Gate","5439500":"Warped Fence Gate","5439501":"Warped Fence Gate","5439502":"Warped Fence Gate","5439503":"Warped Fence Gate","5441024":"Warped Stairs","5441025":"Warped Stairs","5441026":"Warped Stairs","5441027":"Warped Stairs","5441028":"Warped Stairs","5441029":"Warped Stairs","5441030":"Warped Stairs","5441031":"Warped Stairs","5437952":"Warped Door","5437953":"Warped Door","5437954":"Warped Door","5437955":"Warped Door","5437956":"Warped Door","5437957":"Warped Door","5437958":"Warped Door","5437959":"Warped Door","5437960":"Warped Door","5437961":"Warped Door","5437962":"Warped Door","5437963":"Warped Door","5437964":"Warped Door","5437965":"Warped Door","5437966":"Warped Door","5437967":"Warped Door","5437968":"Warped Door","5437969":"Warped Door","5437970":"Warped Door","5437971":"Warped Door","5437972":"Warped Door","5437973":"Warped Door","5437974":"Warped Door","5437975":"Warped Door","5437976":"Warped Door","5437977":"Warped Door","5437978":"Warped Door","5437979":"Warped Door","5437980":"Warped Door","5437981":"Warped Door","5437982":"Warped Door","5437983":"Warped Door","5434880":"Warped Button","5434881":"Warped Button","5434882":"Warped Button","5434883":"Warped Button","5434884":"Warped Button","5434885":"Warped Button","5434888":"Warped Button","5434889":"Warped Button","5434890":"Warped Button","5434891":"Warped Button","5434892":"Warped Button","5434893":"Warped Button","5436416":"Warped Pressure Plate","5436417":"Warped Pressure Plate","5433344":"Warped Trapdoor","5433345":"Warped Trapdoor","5433346":"Warped Trapdoor","5433347":"Warped Trapdoor","5433348":"Warped Trapdoor","5433349":"Warped Trapdoor","5433350":"Warped Trapdoor","5433351":"Warped Trapdoor","5433352":"Warped Trapdoor","5433353":"Warped Trapdoor","5433354":"Warped Trapdoor","5433355":"Warped Trapdoor","5433356":"Warped Trapdoor","5433357":"Warped Trapdoor","5433358":"Warped Trapdoor","5433359":"Warped Trapdoor","5442560":"Warped Sign","5442561":"Warped Sign","5442562":"Warped Sign","5442563":"Warped Sign","5442564":"Warped Sign","5442565":"Warped Sign","5442566":"Warped Sign","5442567":"Warped Sign","5442568":"Warped Sign","5442569":"Warped Sign","5442570":"Warped Sign","5442571":"Warped Sign","5442572":"Warped Sign","5442573":"Warped Sign","5442574":"Warped Sign","5442575":"Warped Sign","5444096":"Warped Wall Sign","5444097":"Warped Wall Sign","5444098":"Warped Wall Sign","5444099":"Warped Wall Sign","5344256":"Red Sandstone Stairs","5344257":"Red Sandstone Stairs","5344258":"Red Sandstone Stairs","5344259":"Red Sandstone Stairs","5344260":"Red Sandstone Stairs","5344261":"Red Sandstone Stairs","5344262":"Red Sandstone Stairs","5344263":"Red Sandstone Stairs","5358592":"Smooth Red Sandstone Stairs","5358593":"Smooth Red Sandstone Stairs","5358594":"Smooth Red Sandstone Stairs","5358595":"Smooth Red Sandstone Stairs","5358596":"Smooth Red Sandstone Stairs","5358597":"Smooth Red Sandstone Stairs","5358598":"Smooth Red Sandstone Stairs","5358599":"Smooth Red Sandstone Stairs","5343232":"Red Sandstone","5157888":"Chiseled Red Sandstone","5168640":"Cut Red Sandstone","5357568":"Smooth Red Sandstone","5352448":"Sandstone Stairs","5352449":"Sandstone Stairs","5352450":"Sandstone Stairs","5352451":"Sandstone Stairs","5352452":"Sandstone Stairs","5352453":"Sandstone Stairs","5352454":"Sandstone Stairs","5352455":"Sandstone Stairs","5360128":"Smooth Sandstone Stairs","5360129":"Smooth Sandstone Stairs","5360130":"Smooth Sandstone Stairs","5360131":"Smooth Sandstone Stairs","5360132":"Smooth Sandstone Stairs","5360133":"Smooth Sandstone Stairs","5360134":"Smooth Sandstone Stairs","5360135":"Smooth Sandstone Stairs","5351424":"Sandstone","5158400":"Chiseled Sandstone","5169664":"Cut Sandstone","5359104":"Smooth Sandstone","5395968":"Glazed Terracotta","5395969":"Glazed Terracotta","5395970":"Glazed Terracotta","5395971":"Glazed Terracotta","5395972":"Glazed Terracotta","5395973":"Glazed Terracotta","5395974":"Glazed Terracotta","5395975":"Glazed Terracotta","5395976":"Glazed Terracotta","5395977":"Glazed Terracotta","5395978":"Glazed Terracotta","5395979":"Glazed Terracotta","5395980":"Glazed Terracotta","5395981":"Glazed Terracotta","5395982":"Glazed Terracotta","5395983":"Glazed Terracotta","5395984":"Glazed Terracotta","5395985":"Glazed Terracotta","5395986":"Glazed Terracotta","5395987":"Glazed Terracotta","5395988":"Glazed Terracotta","5395989":"Glazed Terracotta","5395990":"Glazed Terracotta","5395991":"Glazed Terracotta","5395992":"Glazed Terracotta","5395993":"Glazed Terracotta","5395994":"Glazed Terracotta","5395995":"Glazed Terracotta","5395996":"Glazed Terracotta","5395997":"Glazed Terracotta","5395998":"Glazed Terracotta","5395999":"Glazed Terracotta","5396000":"Glazed Terracotta","5396001":"Glazed Terracotta","5396002":"Glazed Terracotta","5396003":"Glazed Terracotta","5396004":"Glazed Terracotta","5396005":"Glazed Terracotta","5396006":"Glazed Terracotta","5396007":"Glazed Terracotta","5396008":"Glazed Terracotta","5396009":"Glazed Terracotta","5396010":"Glazed Terracotta","5396011":"Glazed Terracotta","5396012":"Glazed Terracotta","5396013":"Glazed Terracotta","5396014":"Glazed Terracotta","5396015":"Glazed Terracotta","5396016":"Glazed Terracotta","5396017":"Glazed Terracotta","5396018":"Glazed Terracotta","5396019":"Glazed Terracotta","5396020":"Glazed Terracotta","5396021":"Glazed Terracotta","5396022":"Glazed Terracotta","5396023":"Glazed Terracotta","5396024":"Glazed Terracotta","5396025":"Glazed Terracotta","5396026":"Glazed Terracotta","5396027":"Glazed Terracotta","5396028":"Glazed Terracotta","5396029":"Glazed Terracotta","5396030":"Glazed Terracotta","5396031":"Glazed Terracotta","5187584":"Dyed Shulker Box","5187585":"Dyed Shulker Box","5187586":"Dyed Shulker Box","5187587":"Dyed Shulker Box","5187588":"Dyed Shulker Box","5187589":"Dyed Shulker Box","5187590":"Dyed Shulker Box","5187591":"Dyed Shulker Box","5187592":"Dyed Shulker Box","5187593":"Dyed Shulker Box","5187594":"Dyed Shulker Box","5187595":"Dyed Shulker Box","5187596":"Dyed Shulker Box","5187597":"Dyed Shulker Box","5187598":"Dyed Shulker Box","5187599":"Dyed Shulker Box","5371904":"Stained Glass","5371905":"Stained Glass","5371906":"Stained Glass","5371907":"Stained Glass","5371908":"Stained Glass","5371909":"Stained Glass","5371910":"Stained Glass","5371911":"Stained Glass","5371912":"Stained Glass","5371913":"Stained Glass","5371914":"Stained Glass","5371915":"Stained Glass","5371916":"Stained Glass","5371917":"Stained Glass","5371918":"Stained Glass","5371919":"Stained Glass","5372416":"Stained Glass Pane","5372417":"Stained Glass Pane","5372418":"Stained Glass Pane","5372419":"Stained Glass Pane","5372420":"Stained Glass Pane","5372421":"Stained Glass Pane","5372422":"Stained Glass Pane","5372423":"Stained Glass Pane","5372424":"Stained Glass Pane","5372425":"Stained Glass Pane","5372426":"Stained Glass Pane","5372427":"Stained Glass Pane","5372428":"Stained Glass Pane","5372429":"Stained Glass Pane","5372430":"Stained Glass Pane","5372431":"Stained Glass Pane","5371392":"Stained Clay","5371393":"Stained Clay","5371394":"Stained Clay","5371395":"Stained Clay","5371396":"Stained Clay","5371397":"Stained Clay","5371398":"Stained Clay","5371399":"Stained Clay","5371400":"Stained Clay","5371401":"Stained Clay","5371402":"Stained Clay","5371403":"Stained Clay","5371404":"Stained Clay","5371405":"Stained Clay","5371406":"Stained Clay","5371407":"Stained Clay","5372928":"Stained Hardened Glass","5372929":"Stained Hardened Glass","5372930":"Stained Hardened Glass","5372931":"Stained Hardened Glass","5372932":"Stained Hardened Glass","5372933":"Stained Hardened Glass","5372934":"Stained Hardened Glass","5372935":"Stained Hardened Glass","5372936":"Stained Hardened Glass","5372937":"Stained Hardened Glass","5372938":"Stained Hardened Glass","5372939":"Stained Hardened Glass","5372940":"Stained Hardened Glass","5372941":"Stained Hardened Glass","5372942":"Stained Hardened Glass","5372943":"Stained Hardened Glass","5373440":"Stained Hardened Glass Pane","5373441":"Stained Hardened Glass Pane","5373442":"Stained Hardened Glass Pane","5373443":"Stained Hardened Glass Pane","5373444":"Stained Hardened Glass Pane","5373445":"Stained Hardened Glass Pane","5373446":"Stained Hardened Glass Pane","5373447":"Stained Hardened Glass Pane","5373448":"Stained Hardened Glass Pane","5373449":"Stained Hardened Glass Pane","5373450":"Stained Hardened Glass Pane","5373451":"Stained Hardened Glass Pane","5373452":"Stained Hardened Glass Pane","5373453":"Stained Hardened Glass Pane","5373454":"Stained Hardened Glass Pane","5373455":"Stained Hardened Glass Pane","5154816":"Carpet","5154817":"Carpet","5154818":"Carpet","5154819":"Carpet","5154820":"Carpet","5154821":"Carpet","5154822":"Carpet","5154823":"Carpet","5154824":"Carpet","5154825":"Carpet","5154826":"Carpet","5154827":"Carpet","5154828":"Carpet","5154829":"Carpet","5154830":"Carpet","5154831":"Carpet","5164544":"Concrete","5164545":"Concrete","5164546":"Concrete","5164547":"Concrete","5164548":"Concrete","5164549":"Concrete","5164550":"Concrete","5164551":"Concrete","5164552":"Concrete","5164553":"Concrete","5164554":"Concrete","5164555":"Concrete","5164556":"Concrete","5164557":"Concrete","5164558":"Concrete","5164559":"Concrete","5165056":"Concrete Powder","5165057":"Concrete Powder","5165058":"Concrete Powder","5165059":"Concrete Powder","5165060":"Concrete Powder","5165061":"Concrete Powder","5165062":"Concrete Powder","5165063":"Concrete Powder","5165064":"Concrete Powder","5165065":"Concrete Powder","5165066":"Concrete Powder","5165067":"Concrete Powder","5165068":"Concrete Powder","5165069":"Concrete Powder","5165070":"Concrete Powder","5165071":"Concrete Powder","5394944":"Wool","5394945":"Wool","5394946":"Wool","5394947":"Wool","5394948":"Wool","5394949":"Wool","5394950":"Wool","5394951":"Wool","5394952":"Wool","5394953":"Wool","5394954":"Wool","5394955":"Wool","5394956":"Wool","5394957":"Wool","5394958":"Wool","5394959":"Wool","5162496":"Cobblestone Wall","5162497":"Cobblestone Wall","5162498":"Cobblestone Wall","5162500":"Cobblestone Wall","5162501":"Cobblestone Wall","5162502":"Cobblestone Wall","5162504":"Cobblestone Wall","5162505":"Cobblestone Wall","5162506":"Cobblestone Wall","5162512":"Cobblestone Wall","5162513":"Cobblestone Wall","5162514":"Cobblestone Wall","5162516":"Cobblestone Wall","5162517":"Cobblestone Wall","5162518":"Cobblestone Wall","5162520":"Cobblestone Wall","5162521":"Cobblestone Wall","5162522":"Cobblestone Wall","5162528":"Cobblestone Wall","5162529":"Cobblestone Wall","5162530":"Cobblestone Wall","5162532":"Cobblestone Wall","5162533":"Cobblestone Wall","5162534":"Cobblestone Wall","5162536":"Cobblestone Wall","5162537":"Cobblestone Wall","5162538":"Cobblestone Wall","5162560":"Cobblestone Wall","5162561":"Cobblestone Wall","5162562":"Cobblestone Wall","5162564":"Cobblestone Wall","5162565":"Cobblestone Wall","5162566":"Cobblestone Wall","5162568":"Cobblestone Wall","5162569":"Cobblestone Wall","5162570":"Cobblestone Wall","5162576":"Cobblestone Wall","5162577":"Cobblestone Wall","5162578":"Cobblestone Wall","5162580":"Cobblestone Wall","5162581":"Cobblestone Wall","5162582":"Cobblestone Wall","5162584":"Cobblestone Wall","5162585":"Cobblestone Wall","5162586":"Cobblestone Wall","5162592":"Cobblestone Wall","5162593":"Cobblestone Wall","5162594":"Cobblestone Wall","5162596":"Cobblestone Wall","5162597":"Cobblestone Wall","5162598":"Cobblestone Wall","5162600":"Cobblestone Wall","5162601":"Cobblestone Wall","5162602":"Cobblestone Wall","5162624":"Cobblestone Wall","5162625":"Cobblestone Wall","5162626":"Cobblestone Wall","5162628":"Cobblestone Wall","5162629":"Cobblestone Wall","5162630":"Cobblestone Wall","5162632":"Cobblestone Wall","5162633":"Cobblestone Wall","5162634":"Cobblestone Wall","5162640":"Cobblestone Wall","5162641":"Cobblestone Wall","5162642":"Cobblestone Wall","5162644":"Cobblestone Wall","5162645":"Cobblestone Wall","5162646":"Cobblestone Wall","5162648":"Cobblestone Wall","5162649":"Cobblestone Wall","5162650":"Cobblestone Wall","5162656":"Cobblestone Wall","5162657":"Cobblestone Wall","5162658":"Cobblestone Wall","5162660":"Cobblestone Wall","5162661":"Cobblestone Wall","5162662":"Cobblestone Wall","5162664":"Cobblestone Wall","5162665":"Cobblestone Wall","5162666":"Cobblestone Wall","5162752":"Cobblestone Wall","5162753":"Cobblestone Wall","5162754":"Cobblestone Wall","5162756":"Cobblestone Wall","5162757":"Cobblestone Wall","5162758":"Cobblestone Wall","5162760":"Cobblestone Wall","5162761":"Cobblestone Wall","5162762":"Cobblestone Wall","5162768":"Cobblestone Wall","5162769":"Cobblestone Wall","5162770":"Cobblestone Wall","5162772":"Cobblestone Wall","5162773":"Cobblestone Wall","5162774":"Cobblestone Wall","5162776":"Cobblestone Wall","5162777":"Cobblestone Wall","5162778":"Cobblestone Wall","5162784":"Cobblestone Wall","5162785":"Cobblestone Wall","5162786":"Cobblestone Wall","5162788":"Cobblestone Wall","5162789":"Cobblestone Wall","5162790":"Cobblestone Wall","5162792":"Cobblestone Wall","5162793":"Cobblestone Wall","5162794":"Cobblestone Wall","5162816":"Cobblestone Wall","5162817":"Cobblestone Wall","5162818":"Cobblestone Wall","5162820":"Cobblestone Wall","5162821":"Cobblestone Wall","5162822":"Cobblestone Wall","5162824":"Cobblestone Wall","5162825":"Cobblestone Wall","5162826":"Cobblestone Wall","5162832":"Cobblestone Wall","5162833":"Cobblestone Wall","5162834":"Cobblestone Wall","5162836":"Cobblestone Wall","5162837":"Cobblestone Wall","5162838":"Cobblestone Wall","5162840":"Cobblestone Wall","5162841":"Cobblestone Wall","5162842":"Cobblestone Wall","5162848":"Cobblestone Wall","5162849":"Cobblestone Wall","5162850":"Cobblestone Wall","5162852":"Cobblestone Wall","5162853":"Cobblestone Wall","5162854":"Cobblestone Wall","5162856":"Cobblestone Wall","5162857":"Cobblestone Wall","5162858":"Cobblestone Wall","5162880":"Cobblestone Wall","5162881":"Cobblestone Wall","5162882":"Cobblestone Wall","5162884":"Cobblestone Wall","5162885":"Cobblestone Wall","5162886":"Cobblestone Wall","5162888":"Cobblestone Wall","5162889":"Cobblestone Wall","5162890":"Cobblestone Wall","5162896":"Cobblestone Wall","5162897":"Cobblestone Wall","5162898":"Cobblestone Wall","5162900":"Cobblestone Wall","5162901":"Cobblestone Wall","5162902":"Cobblestone Wall","5162904":"Cobblestone Wall","5162905":"Cobblestone Wall","5162906":"Cobblestone Wall","5162912":"Cobblestone Wall","5162913":"Cobblestone Wall","5162914":"Cobblestone Wall","5162916":"Cobblestone Wall","5162917":"Cobblestone Wall","5162918":"Cobblestone Wall","5162920":"Cobblestone Wall","5162921":"Cobblestone Wall","5162922":"Cobblestone Wall","5131264":"Andesite Wall","5131265":"Andesite Wall","5131266":"Andesite Wall","5131268":"Andesite Wall","5131269":"Andesite Wall","5131270":"Andesite Wall","5131272":"Andesite Wall","5131273":"Andesite Wall","5131274":"Andesite Wall","5131280":"Andesite Wall","5131281":"Andesite Wall","5131282":"Andesite Wall","5131284":"Andesite Wall","5131285":"Andesite Wall","5131286":"Andesite Wall","5131288":"Andesite Wall","5131289":"Andesite Wall","5131290":"Andesite Wall","5131296":"Andesite Wall","5131297":"Andesite Wall","5131298":"Andesite Wall","5131300":"Andesite Wall","5131301":"Andesite Wall","5131302":"Andesite Wall","5131304":"Andesite Wall","5131305":"Andesite Wall","5131306":"Andesite Wall","5131328":"Andesite Wall","5131329":"Andesite Wall","5131330":"Andesite Wall","5131332":"Andesite Wall","5131333":"Andesite Wall","5131334":"Andesite Wall","5131336":"Andesite Wall","5131337":"Andesite Wall","5131338":"Andesite Wall","5131344":"Andesite Wall","5131345":"Andesite Wall","5131346":"Andesite Wall","5131348":"Andesite Wall","5131349":"Andesite Wall","5131350":"Andesite Wall","5131352":"Andesite Wall","5131353":"Andesite Wall","5131354":"Andesite Wall","5131360":"Andesite Wall","5131361":"Andesite Wall","5131362":"Andesite Wall","5131364":"Andesite Wall","5131365":"Andesite Wall","5131366":"Andesite Wall","5131368":"Andesite Wall","5131369":"Andesite Wall","5131370":"Andesite Wall","5131392":"Andesite Wall","5131393":"Andesite Wall","5131394":"Andesite Wall","5131396":"Andesite Wall","5131397":"Andesite Wall","5131398":"Andesite Wall","5131400":"Andesite Wall","5131401":"Andesite Wall","5131402":"Andesite Wall","5131408":"Andesite Wall","5131409":"Andesite Wall","5131410":"Andesite Wall","5131412":"Andesite Wall","5131413":"Andesite Wall","5131414":"Andesite Wall","5131416":"Andesite Wall","5131417":"Andesite Wall","5131418":"Andesite Wall","5131424":"Andesite Wall","5131425":"Andesite Wall","5131426":"Andesite Wall","5131428":"Andesite Wall","5131429":"Andesite Wall","5131430":"Andesite Wall","5131432":"Andesite Wall","5131433":"Andesite Wall","5131434":"Andesite Wall","5131520":"Andesite Wall","5131521":"Andesite Wall","5131522":"Andesite Wall","5131524":"Andesite Wall","5131525":"Andesite Wall","5131526":"Andesite Wall","5131528":"Andesite Wall","5131529":"Andesite Wall","5131530":"Andesite Wall","5131536":"Andesite Wall","5131537":"Andesite Wall","5131538":"Andesite Wall","5131540":"Andesite Wall","5131541":"Andesite Wall","5131542":"Andesite Wall","5131544":"Andesite Wall","5131545":"Andesite Wall","5131546":"Andesite Wall","5131552":"Andesite Wall","5131553":"Andesite Wall","5131554":"Andesite Wall","5131556":"Andesite Wall","5131557":"Andesite Wall","5131558":"Andesite Wall","5131560":"Andesite Wall","5131561":"Andesite Wall","5131562":"Andesite Wall","5131584":"Andesite Wall","5131585":"Andesite Wall","5131586":"Andesite Wall","5131588":"Andesite Wall","5131589":"Andesite Wall","5131590":"Andesite Wall","5131592":"Andesite Wall","5131593":"Andesite Wall","5131594":"Andesite Wall","5131600":"Andesite Wall","5131601":"Andesite Wall","5131602":"Andesite Wall","5131604":"Andesite Wall","5131605":"Andesite Wall","5131606":"Andesite Wall","5131608":"Andesite Wall","5131609":"Andesite Wall","5131610":"Andesite Wall","5131616":"Andesite Wall","5131617":"Andesite Wall","5131618":"Andesite Wall","5131620":"Andesite Wall","5131621":"Andesite Wall","5131622":"Andesite Wall","5131624":"Andesite Wall","5131625":"Andesite Wall","5131626":"Andesite Wall","5131648":"Andesite Wall","5131649":"Andesite Wall","5131650":"Andesite Wall","5131652":"Andesite Wall","5131653":"Andesite Wall","5131654":"Andesite Wall","5131656":"Andesite Wall","5131657":"Andesite Wall","5131658":"Andesite Wall","5131664":"Andesite Wall","5131665":"Andesite Wall","5131666":"Andesite Wall","5131668":"Andesite Wall","5131669":"Andesite Wall","5131670":"Andesite Wall","5131672":"Andesite Wall","5131673":"Andesite Wall","5131674":"Andesite Wall","5131680":"Andesite Wall","5131681":"Andesite Wall","5131682":"Andesite Wall","5131684":"Andesite Wall","5131685":"Andesite Wall","5131686":"Andesite Wall","5131688":"Andesite Wall","5131689":"Andesite Wall","5131690":"Andesite Wall","5151232":"Brick Wall","5151233":"Brick Wall","5151234":"Brick Wall","5151236":"Brick Wall","5151237":"Brick Wall","5151238":"Brick Wall","5151240":"Brick Wall","5151241":"Brick Wall","5151242":"Brick Wall","5151248":"Brick Wall","5151249":"Brick Wall","5151250":"Brick Wall","5151252":"Brick Wall","5151253":"Brick Wall","5151254":"Brick Wall","5151256":"Brick Wall","5151257":"Brick Wall","5151258":"Brick Wall","5151264":"Brick Wall","5151265":"Brick Wall","5151266":"Brick Wall","5151268":"Brick Wall","5151269":"Brick Wall","5151270":"Brick Wall","5151272":"Brick Wall","5151273":"Brick Wall","5151274":"Brick Wall","5151296":"Brick Wall","5151297":"Brick Wall","5151298":"Brick Wall","5151300":"Brick Wall","5151301":"Brick Wall","5151302":"Brick Wall","5151304":"Brick Wall","5151305":"Brick Wall","5151306":"Brick Wall","5151312":"Brick Wall","5151313":"Brick Wall","5151314":"Brick Wall","5151316":"Brick Wall","5151317":"Brick Wall","5151318":"Brick Wall","5151320":"Brick Wall","5151321":"Brick Wall","5151322":"Brick Wall","5151328":"Brick Wall","5151329":"Brick Wall","5151330":"Brick Wall","5151332":"Brick Wall","5151333":"Brick Wall","5151334":"Brick Wall","5151336":"Brick Wall","5151337":"Brick Wall","5151338":"Brick Wall","5151360":"Brick Wall","5151361":"Brick Wall","5151362":"Brick Wall","5151364":"Brick Wall","5151365":"Brick Wall","5151366":"Brick Wall","5151368":"Brick Wall","5151369":"Brick Wall","5151370":"Brick Wall","5151376":"Brick Wall","5151377":"Brick Wall","5151378":"Brick Wall","5151380":"Brick Wall","5151381":"Brick Wall","5151382":"Brick Wall","5151384":"Brick Wall","5151385":"Brick Wall","5151386":"Brick Wall","5151392":"Brick Wall","5151393":"Brick Wall","5151394":"Brick Wall","5151396":"Brick Wall","5151397":"Brick Wall","5151398":"Brick Wall","5151400":"Brick Wall","5151401":"Brick Wall","5151402":"Brick Wall","5151488":"Brick Wall","5151489":"Brick Wall","5151490":"Brick Wall","5151492":"Brick Wall","5151493":"Brick Wall","5151494":"Brick Wall","5151496":"Brick Wall","5151497":"Brick Wall","5151498":"Brick Wall","5151504":"Brick Wall","5151505":"Brick Wall","5151506":"Brick Wall","5151508":"Brick Wall","5151509":"Brick Wall","5151510":"Brick Wall","5151512":"Brick Wall","5151513":"Brick Wall","5151514":"Brick Wall","5151520":"Brick Wall","5151521":"Brick Wall","5151522":"Brick Wall","5151524":"Brick Wall","5151525":"Brick Wall","5151526":"Brick Wall","5151528":"Brick Wall","5151529":"Brick Wall","5151530":"Brick Wall","5151552":"Brick Wall","5151553":"Brick Wall","5151554":"Brick Wall","5151556":"Brick Wall","5151557":"Brick Wall","5151558":"Brick Wall","5151560":"Brick Wall","5151561":"Brick Wall","5151562":"Brick Wall","5151568":"Brick Wall","5151569":"Brick Wall","5151570":"Brick Wall","5151572":"Brick Wall","5151573":"Brick Wall","5151574":"Brick Wall","5151576":"Brick Wall","5151577":"Brick Wall","5151578":"Brick Wall","5151584":"Brick Wall","5151585":"Brick Wall","5151586":"Brick Wall","5151588":"Brick Wall","5151589":"Brick Wall","5151590":"Brick Wall","5151592":"Brick Wall","5151593":"Brick Wall","5151594":"Brick Wall","5151616":"Brick Wall","5151617":"Brick Wall","5151618":"Brick Wall","5151620":"Brick Wall","5151621":"Brick Wall","5151622":"Brick Wall","5151624":"Brick Wall","5151625":"Brick Wall","5151626":"Brick Wall","5151632":"Brick Wall","5151633":"Brick Wall","5151634":"Brick Wall","5151636":"Brick Wall","5151637":"Brick Wall","5151638":"Brick Wall","5151640":"Brick Wall","5151641":"Brick Wall","5151642":"Brick Wall","5151648":"Brick Wall","5151649":"Brick Wall","5151650":"Brick Wall","5151652":"Brick Wall","5151653":"Brick Wall","5151654":"Brick Wall","5151656":"Brick Wall","5151657":"Brick Wall","5151658":"Brick Wall","5185024":"Diorite Wall","5185025":"Diorite Wall","5185026":"Diorite Wall","5185028":"Diorite Wall","5185029":"Diorite Wall","5185030":"Diorite Wall","5185032":"Diorite Wall","5185033":"Diorite Wall","5185034":"Diorite Wall","5185040":"Diorite Wall","5185041":"Diorite Wall","5185042":"Diorite Wall","5185044":"Diorite Wall","5185045":"Diorite Wall","5185046":"Diorite Wall","5185048":"Diorite Wall","5185049":"Diorite Wall","5185050":"Diorite Wall","5185056":"Diorite Wall","5185057":"Diorite Wall","5185058":"Diorite Wall","5185060":"Diorite Wall","5185061":"Diorite Wall","5185062":"Diorite Wall","5185064":"Diorite Wall","5185065":"Diorite Wall","5185066":"Diorite Wall","5185088":"Diorite Wall","5185089":"Diorite Wall","5185090":"Diorite Wall","5185092":"Diorite Wall","5185093":"Diorite Wall","5185094":"Diorite Wall","5185096":"Diorite Wall","5185097":"Diorite Wall","5185098":"Diorite Wall","5185104":"Diorite Wall","5185105":"Diorite Wall","5185106":"Diorite Wall","5185108":"Diorite Wall","5185109":"Diorite Wall","5185110":"Diorite Wall","5185112":"Diorite Wall","5185113":"Diorite Wall","5185114":"Diorite Wall","5185120":"Diorite Wall","5185121":"Diorite Wall","5185122":"Diorite Wall","5185124":"Diorite Wall","5185125":"Diorite Wall","5185126":"Diorite Wall","5185128":"Diorite Wall","5185129":"Diorite Wall","5185130":"Diorite Wall","5185152":"Diorite Wall","5185153":"Diorite Wall","5185154":"Diorite Wall","5185156":"Diorite Wall","5185157":"Diorite Wall","5185158":"Diorite Wall","5185160":"Diorite Wall","5185161":"Diorite Wall","5185162":"Diorite Wall","5185168":"Diorite Wall","5185169":"Diorite Wall","5185170":"Diorite Wall","5185172":"Diorite Wall","5185173":"Diorite Wall","5185174":"Diorite Wall","5185176":"Diorite Wall","5185177":"Diorite Wall","5185178":"Diorite Wall","5185184":"Diorite Wall","5185185":"Diorite Wall","5185186":"Diorite Wall","5185188":"Diorite Wall","5185189":"Diorite Wall","5185190":"Diorite Wall","5185192":"Diorite Wall","5185193":"Diorite Wall","5185194":"Diorite Wall","5185280":"Diorite Wall","5185281":"Diorite Wall","5185282":"Diorite Wall","5185284":"Diorite Wall","5185285":"Diorite Wall","5185286":"Diorite Wall","5185288":"Diorite Wall","5185289":"Diorite Wall","5185290":"Diorite Wall","5185296":"Diorite Wall","5185297":"Diorite Wall","5185298":"Diorite Wall","5185300":"Diorite Wall","5185301":"Diorite Wall","5185302":"Diorite Wall","5185304":"Diorite Wall","5185305":"Diorite Wall","5185306":"Diorite Wall","5185312":"Diorite Wall","5185313":"Diorite Wall","5185314":"Diorite Wall","5185316":"Diorite Wall","5185317":"Diorite Wall","5185318":"Diorite Wall","5185320":"Diorite Wall","5185321":"Diorite Wall","5185322":"Diorite Wall","5185344":"Diorite Wall","5185345":"Diorite Wall","5185346":"Diorite Wall","5185348":"Diorite Wall","5185349":"Diorite Wall","5185350":"Diorite Wall","5185352":"Diorite Wall","5185353":"Diorite Wall","5185354":"Diorite Wall","5185360":"Diorite Wall","5185361":"Diorite Wall","5185362":"Diorite Wall","5185364":"Diorite Wall","5185365":"Diorite Wall","5185366":"Diorite Wall","5185368":"Diorite Wall","5185369":"Diorite Wall","5185370":"Diorite Wall","5185376":"Diorite Wall","5185377":"Diorite Wall","5185378":"Diorite Wall","5185380":"Diorite Wall","5185381":"Diorite Wall","5185382":"Diorite Wall","5185384":"Diorite Wall","5185385":"Diorite Wall","5185386":"Diorite Wall","5185408":"Diorite Wall","5185409":"Diorite Wall","5185410":"Diorite Wall","5185412":"Diorite Wall","5185413":"Diorite Wall","5185414":"Diorite Wall","5185416":"Diorite Wall","5185417":"Diorite Wall","5185418":"Diorite Wall","5185424":"Diorite Wall","5185425":"Diorite Wall","5185426":"Diorite Wall","5185428":"Diorite Wall","5185429":"Diorite Wall","5185430":"Diorite Wall","5185432":"Diorite Wall","5185433":"Diorite Wall","5185434":"Diorite Wall","5185440":"Diorite Wall","5185441":"Diorite Wall","5185442":"Diorite Wall","5185444":"Diorite Wall","5185445":"Diorite Wall","5185446":"Diorite Wall","5185448":"Diorite Wall","5185449":"Diorite Wall","5185450":"Diorite Wall","5253632":"End Stone Brick Wall","5253633":"End Stone Brick Wall","5253634":"End Stone Brick Wall","5253636":"End Stone Brick Wall","5253637":"End Stone Brick Wall","5253638":"End Stone Brick Wall","5253640":"End Stone Brick Wall","5253641":"End Stone Brick Wall","5253642":"End Stone Brick Wall","5253648":"End Stone Brick Wall","5253649":"End Stone Brick Wall","5253650":"End Stone Brick Wall","5253652":"End Stone Brick Wall","5253653":"End Stone Brick Wall","5253654":"End Stone Brick Wall","5253656":"End Stone Brick Wall","5253657":"End Stone Brick Wall","5253658":"End Stone Brick Wall","5253664":"End Stone Brick Wall","5253665":"End Stone Brick Wall","5253666":"End Stone Brick Wall","5253668":"End Stone Brick Wall","5253669":"End Stone Brick Wall","5253670":"End Stone Brick Wall","5253672":"End Stone Brick Wall","5253673":"End Stone Brick Wall","5253674":"End Stone Brick Wall","5253696":"End Stone Brick Wall","5253697":"End Stone Brick Wall","5253698":"End Stone Brick Wall","5253700":"End Stone Brick Wall","5253701":"End Stone Brick Wall","5253702":"End Stone Brick Wall","5253704":"End Stone Brick Wall","5253705":"End Stone Brick Wall","5253706":"End Stone Brick Wall","5253712":"End Stone Brick Wall","5253713":"End Stone Brick Wall","5253714":"End Stone Brick Wall","5253716":"End Stone Brick Wall","5253717":"End Stone Brick Wall","5253718":"End Stone Brick Wall","5253720":"End Stone Brick Wall","5253721":"End Stone Brick Wall","5253722":"End Stone Brick Wall","5253728":"End Stone Brick Wall","5253729":"End Stone Brick Wall","5253730":"End Stone Brick Wall","5253732":"End Stone Brick Wall","5253733":"End Stone Brick Wall","5253734":"End Stone Brick Wall","5253736":"End Stone Brick Wall","5253737":"End Stone Brick Wall","5253738":"End Stone Brick Wall","5253760":"End Stone Brick Wall","5253761":"End Stone Brick Wall","5253762":"End Stone Brick Wall","5253764":"End Stone Brick Wall","5253765":"End Stone Brick Wall","5253766":"End Stone Brick Wall","5253768":"End Stone Brick Wall","5253769":"End Stone Brick Wall","5253770":"End Stone Brick Wall","5253776":"End Stone Brick Wall","5253777":"End Stone Brick Wall","5253778":"End Stone Brick Wall","5253780":"End Stone Brick Wall","5253781":"End Stone Brick Wall","5253782":"End Stone Brick Wall","5253784":"End Stone Brick Wall","5253785":"End Stone Brick Wall","5253786":"End Stone Brick Wall","5253792":"End Stone Brick Wall","5253793":"End Stone Brick Wall","5253794":"End Stone Brick Wall","5253796":"End Stone Brick Wall","5253797":"End Stone Brick Wall","5253798":"End Stone Brick Wall","5253800":"End Stone Brick Wall","5253801":"End Stone Brick Wall","5253802":"End Stone Brick Wall","5253888":"End Stone Brick Wall","5253889":"End Stone Brick Wall","5253890":"End Stone Brick Wall","5253892":"End Stone Brick Wall","5253893":"End Stone Brick Wall","5253894":"End Stone Brick Wall","5253896":"End Stone Brick Wall","5253897":"End Stone Brick Wall","5253898":"End Stone Brick Wall","5253904":"End Stone Brick Wall","5253905":"End Stone Brick Wall","5253906":"End Stone Brick Wall","5253908":"End Stone Brick Wall","5253909":"End Stone Brick Wall","5253910":"End Stone Brick Wall","5253912":"End Stone Brick Wall","5253913":"End Stone Brick Wall","5253914":"End Stone Brick Wall","5253920":"End Stone Brick Wall","5253921":"End Stone Brick Wall","5253922":"End Stone Brick Wall","5253924":"End Stone Brick Wall","5253925":"End Stone Brick Wall","5253926":"End Stone Brick Wall","5253928":"End Stone Brick Wall","5253929":"End Stone Brick Wall","5253930":"End Stone Brick Wall","5253952":"End Stone Brick Wall","5253953":"End Stone Brick Wall","5253954":"End Stone Brick Wall","5253956":"End Stone Brick Wall","5253957":"End Stone Brick Wall","5253958":"End Stone Brick Wall","5253960":"End Stone Brick Wall","5253961":"End Stone Brick Wall","5253962":"End Stone Brick Wall","5253968":"End Stone Brick Wall","5253969":"End Stone Brick Wall","5253970":"End Stone Brick Wall","5253972":"End Stone Brick Wall","5253973":"End Stone Brick Wall","5253974":"End Stone Brick Wall","5253976":"End Stone Brick Wall","5253977":"End Stone Brick Wall","5253978":"End Stone Brick Wall","5253984":"End Stone Brick Wall","5253985":"End Stone Brick Wall","5253986":"End Stone Brick Wall","5253988":"End Stone Brick Wall","5253989":"End Stone Brick Wall","5253990":"End Stone Brick Wall","5253992":"End Stone Brick Wall","5253993":"End Stone Brick Wall","5253994":"End Stone Brick Wall","5254016":"End Stone Brick Wall","5254017":"End Stone Brick Wall","5254018":"End Stone Brick Wall","5254020":"End Stone Brick Wall","5254021":"End Stone Brick Wall","5254022":"End Stone Brick Wall","5254024":"End Stone Brick Wall","5254025":"End Stone Brick Wall","5254026":"End Stone Brick Wall","5254032":"End Stone Brick Wall","5254033":"End Stone Brick Wall","5254034":"End Stone Brick Wall","5254036":"End Stone Brick Wall","5254037":"End Stone Brick Wall","5254038":"End Stone Brick Wall","5254040":"End Stone Brick Wall","5254041":"End Stone Brick Wall","5254042":"End Stone Brick Wall","5254048":"End Stone Brick Wall","5254049":"End Stone Brick Wall","5254050":"End Stone Brick Wall","5254052":"End Stone Brick Wall","5254053":"End Stone Brick Wall","5254054":"End Stone Brick Wall","5254056":"End Stone Brick Wall","5254057":"End Stone Brick Wall","5254058":"End Stone Brick Wall","5263872":"Granite Wall","5263873":"Granite Wall","5263874":"Granite Wall","5263876":"Granite Wall","5263877":"Granite Wall","5263878":"Granite Wall","5263880":"Granite Wall","5263881":"Granite Wall","5263882":"Granite Wall","5263888":"Granite Wall","5263889":"Granite Wall","5263890":"Granite Wall","5263892":"Granite Wall","5263893":"Granite Wall","5263894":"Granite Wall","5263896":"Granite Wall","5263897":"Granite Wall","5263898":"Granite Wall","5263904":"Granite Wall","5263905":"Granite Wall","5263906":"Granite Wall","5263908":"Granite Wall","5263909":"Granite Wall","5263910":"Granite Wall","5263912":"Granite Wall","5263913":"Granite Wall","5263914":"Granite Wall","5263936":"Granite Wall","5263937":"Granite Wall","5263938":"Granite Wall","5263940":"Granite Wall","5263941":"Granite Wall","5263942":"Granite Wall","5263944":"Granite Wall","5263945":"Granite Wall","5263946":"Granite Wall","5263952":"Granite Wall","5263953":"Granite Wall","5263954":"Granite Wall","5263956":"Granite Wall","5263957":"Granite Wall","5263958":"Granite Wall","5263960":"Granite Wall","5263961":"Granite Wall","5263962":"Granite Wall","5263968":"Granite Wall","5263969":"Granite Wall","5263970":"Granite Wall","5263972":"Granite Wall","5263973":"Granite Wall","5263974":"Granite Wall","5263976":"Granite Wall","5263977":"Granite Wall","5263978":"Granite Wall","5264000":"Granite Wall","5264001":"Granite Wall","5264002":"Granite Wall","5264004":"Granite Wall","5264005":"Granite Wall","5264006":"Granite Wall","5264008":"Granite Wall","5264009":"Granite Wall","5264010":"Granite Wall","5264016":"Granite Wall","5264017":"Granite Wall","5264018":"Granite Wall","5264020":"Granite Wall","5264021":"Granite Wall","5264022":"Granite Wall","5264024":"Granite Wall","5264025":"Granite Wall","5264026":"Granite Wall","5264032":"Granite Wall","5264033":"Granite Wall","5264034":"Granite Wall","5264036":"Granite Wall","5264037":"Granite Wall","5264038":"Granite Wall","5264040":"Granite Wall","5264041":"Granite Wall","5264042":"Granite Wall","5264128":"Granite Wall","5264129":"Granite Wall","5264130":"Granite Wall","5264132":"Granite Wall","5264133":"Granite Wall","5264134":"Granite Wall","5264136":"Granite Wall","5264137":"Granite Wall","5264138":"Granite Wall","5264144":"Granite Wall","5264145":"Granite Wall","5264146":"Granite Wall","5264148":"Granite Wall","5264149":"Granite Wall","5264150":"Granite Wall","5264152":"Granite Wall","5264153":"Granite Wall","5264154":"Granite Wall","5264160":"Granite Wall","5264161":"Granite Wall","5264162":"Granite Wall","5264164":"Granite Wall","5264165":"Granite Wall","5264166":"Granite Wall","5264168":"Granite Wall","5264169":"Granite Wall","5264170":"Granite Wall","5264192":"Granite Wall","5264193":"Granite Wall","5264194":"Granite Wall","5264196":"Granite Wall","5264197":"Granite Wall","5264198":"Granite Wall","5264200":"Granite Wall","5264201":"Granite Wall","5264202":"Granite Wall","5264208":"Granite Wall","5264209":"Granite Wall","5264210":"Granite Wall","5264212":"Granite Wall","5264213":"Granite Wall","5264214":"Granite Wall","5264216":"Granite Wall","5264217":"Granite Wall","5264218":"Granite Wall","5264224":"Granite Wall","5264225":"Granite Wall","5264226":"Granite Wall","5264228":"Granite Wall","5264229":"Granite Wall","5264230":"Granite Wall","5264232":"Granite Wall","5264233":"Granite Wall","5264234":"Granite Wall","5264256":"Granite Wall","5264257":"Granite Wall","5264258":"Granite Wall","5264260":"Granite Wall","5264261":"Granite Wall","5264262":"Granite Wall","5264264":"Granite Wall","5264265":"Granite Wall","5264266":"Granite Wall","5264272":"Granite Wall","5264273":"Granite Wall","5264274":"Granite Wall","5264276":"Granite Wall","5264277":"Granite Wall","5264278":"Granite Wall","5264280":"Granite Wall","5264281":"Granite Wall","5264282":"Granite Wall","5264288":"Granite Wall","5264289":"Granite Wall","5264290":"Granite Wall","5264292":"Granite Wall","5264293":"Granite Wall","5264294":"Granite Wall","5264296":"Granite Wall","5264297":"Granite Wall","5264298":"Granite Wall","5302272":"Mossy Stone Brick Wall","5302273":"Mossy Stone Brick Wall","5302274":"Mossy Stone Brick Wall","5302276":"Mossy Stone Brick Wall","5302277":"Mossy Stone Brick Wall","5302278":"Mossy Stone Brick Wall","5302280":"Mossy Stone Brick Wall","5302281":"Mossy Stone Brick Wall","5302282":"Mossy Stone Brick Wall","5302288":"Mossy Stone Brick Wall","5302289":"Mossy Stone Brick Wall","5302290":"Mossy Stone Brick Wall","5302292":"Mossy Stone Brick Wall","5302293":"Mossy Stone Brick Wall","5302294":"Mossy Stone Brick Wall","5302296":"Mossy Stone Brick Wall","5302297":"Mossy Stone Brick Wall","5302298":"Mossy Stone Brick Wall","5302304":"Mossy Stone Brick Wall","5302305":"Mossy Stone Brick Wall","5302306":"Mossy Stone Brick Wall","5302308":"Mossy Stone Brick Wall","5302309":"Mossy Stone Brick Wall","5302310":"Mossy Stone Brick Wall","5302312":"Mossy Stone Brick Wall","5302313":"Mossy Stone Brick Wall","5302314":"Mossy Stone Brick Wall","5302336":"Mossy Stone Brick Wall","5302337":"Mossy Stone Brick Wall","5302338":"Mossy Stone Brick Wall","5302340":"Mossy Stone Brick Wall","5302341":"Mossy Stone Brick Wall","5302342":"Mossy Stone Brick Wall","5302344":"Mossy Stone Brick Wall","5302345":"Mossy Stone Brick Wall","5302346":"Mossy Stone Brick Wall","5302352":"Mossy Stone Brick Wall","5302353":"Mossy Stone Brick Wall","5302354":"Mossy Stone Brick Wall","5302356":"Mossy Stone Brick Wall","5302357":"Mossy Stone Brick Wall","5302358":"Mossy Stone Brick Wall","5302360":"Mossy Stone Brick Wall","5302361":"Mossy Stone Brick Wall","5302362":"Mossy Stone Brick Wall","5302368":"Mossy Stone Brick Wall","5302369":"Mossy Stone Brick Wall","5302370":"Mossy Stone Brick Wall","5302372":"Mossy Stone Brick Wall","5302373":"Mossy Stone Brick Wall","5302374":"Mossy Stone Brick Wall","5302376":"Mossy Stone Brick Wall","5302377":"Mossy Stone Brick Wall","5302378":"Mossy Stone Brick Wall","5302400":"Mossy Stone Brick Wall","5302401":"Mossy Stone Brick Wall","5302402":"Mossy Stone Brick Wall","5302404":"Mossy Stone Brick Wall","5302405":"Mossy Stone Brick Wall","5302406":"Mossy Stone Brick Wall","5302408":"Mossy Stone Brick Wall","5302409":"Mossy Stone Brick Wall","5302410":"Mossy Stone Brick Wall","5302416":"Mossy Stone Brick Wall","5302417":"Mossy Stone Brick Wall","5302418":"Mossy Stone Brick Wall","5302420":"Mossy Stone Brick Wall","5302421":"Mossy Stone Brick Wall","5302422":"Mossy Stone Brick Wall","5302424":"Mossy Stone Brick Wall","5302425":"Mossy Stone Brick Wall","5302426":"Mossy Stone Brick Wall","5302432":"Mossy Stone Brick Wall","5302433":"Mossy Stone Brick Wall","5302434":"Mossy Stone Brick Wall","5302436":"Mossy Stone Brick Wall","5302437":"Mossy Stone Brick Wall","5302438":"Mossy Stone Brick Wall","5302440":"Mossy Stone Brick Wall","5302441":"Mossy Stone Brick Wall","5302442":"Mossy Stone Brick Wall","5302528":"Mossy Stone Brick Wall","5302529":"Mossy Stone Brick Wall","5302530":"Mossy Stone Brick Wall","5302532":"Mossy Stone Brick Wall","5302533":"Mossy Stone Brick Wall","5302534":"Mossy Stone Brick Wall","5302536":"Mossy Stone Brick Wall","5302537":"Mossy Stone Brick Wall","5302538":"Mossy Stone Brick Wall","5302544":"Mossy Stone Brick Wall","5302545":"Mossy Stone Brick Wall","5302546":"Mossy Stone Brick Wall","5302548":"Mossy Stone Brick Wall","5302549":"Mossy Stone Brick Wall","5302550":"Mossy Stone Brick Wall","5302552":"Mossy Stone Brick Wall","5302553":"Mossy Stone Brick Wall","5302554":"Mossy Stone Brick Wall","5302560":"Mossy Stone Brick Wall","5302561":"Mossy Stone Brick Wall","5302562":"Mossy Stone Brick Wall","5302564":"Mossy Stone Brick Wall","5302565":"Mossy Stone Brick Wall","5302566":"Mossy Stone Brick Wall","5302568":"Mossy Stone Brick Wall","5302569":"Mossy Stone Brick Wall","5302570":"Mossy Stone Brick Wall","5302592":"Mossy Stone Brick Wall","5302593":"Mossy Stone Brick Wall","5302594":"Mossy Stone Brick Wall","5302596":"Mossy Stone Brick Wall","5302597":"Mossy Stone Brick Wall","5302598":"Mossy Stone Brick Wall","5302600":"Mossy Stone Brick Wall","5302601":"Mossy Stone Brick Wall","5302602":"Mossy Stone Brick Wall","5302608":"Mossy Stone Brick Wall","5302609":"Mossy Stone Brick Wall","5302610":"Mossy Stone Brick Wall","5302612":"Mossy Stone Brick Wall","5302613":"Mossy Stone Brick Wall","5302614":"Mossy Stone Brick Wall","5302616":"Mossy Stone Brick Wall","5302617":"Mossy Stone Brick Wall","5302618":"Mossy Stone Brick Wall","5302624":"Mossy Stone Brick Wall","5302625":"Mossy Stone Brick Wall","5302626":"Mossy Stone Brick Wall","5302628":"Mossy Stone Brick Wall","5302629":"Mossy Stone Brick Wall","5302630":"Mossy Stone Brick Wall","5302632":"Mossy Stone Brick Wall","5302633":"Mossy Stone Brick Wall","5302634":"Mossy Stone Brick Wall","5302656":"Mossy Stone Brick Wall","5302657":"Mossy Stone Brick Wall","5302658":"Mossy Stone Brick Wall","5302660":"Mossy Stone Brick Wall","5302661":"Mossy Stone Brick Wall","5302662":"Mossy Stone Brick Wall","5302664":"Mossy Stone Brick Wall","5302665":"Mossy Stone Brick Wall","5302666":"Mossy Stone Brick Wall","5302672":"Mossy Stone Brick Wall","5302673":"Mossy Stone Brick Wall","5302674":"Mossy Stone Brick Wall","5302676":"Mossy Stone Brick Wall","5302677":"Mossy Stone Brick Wall","5302678":"Mossy Stone Brick Wall","5302680":"Mossy Stone Brick Wall","5302681":"Mossy Stone Brick Wall","5302682":"Mossy Stone Brick Wall","5302688":"Mossy Stone Brick Wall","5302689":"Mossy Stone Brick Wall","5302690":"Mossy Stone Brick Wall","5302692":"Mossy Stone Brick Wall","5302693":"Mossy Stone Brick Wall","5302694":"Mossy Stone Brick Wall","5302696":"Mossy Stone Brick Wall","5302697":"Mossy Stone Brick Wall","5302698":"Mossy Stone Brick Wall","5300736":"Mossy Cobblestone Wall","5300737":"Mossy Cobblestone Wall","5300738":"Mossy Cobblestone Wall","5300740":"Mossy Cobblestone Wall","5300741":"Mossy Cobblestone Wall","5300742":"Mossy Cobblestone Wall","5300744":"Mossy Cobblestone Wall","5300745":"Mossy Cobblestone Wall","5300746":"Mossy Cobblestone Wall","5300752":"Mossy Cobblestone Wall","5300753":"Mossy Cobblestone Wall","5300754":"Mossy Cobblestone Wall","5300756":"Mossy Cobblestone Wall","5300757":"Mossy Cobblestone Wall","5300758":"Mossy Cobblestone Wall","5300760":"Mossy Cobblestone Wall","5300761":"Mossy Cobblestone Wall","5300762":"Mossy Cobblestone Wall","5300768":"Mossy Cobblestone Wall","5300769":"Mossy Cobblestone Wall","5300770":"Mossy Cobblestone Wall","5300772":"Mossy Cobblestone Wall","5300773":"Mossy Cobblestone Wall","5300774":"Mossy Cobblestone Wall","5300776":"Mossy Cobblestone Wall","5300777":"Mossy Cobblestone Wall","5300778":"Mossy Cobblestone Wall","5300800":"Mossy Cobblestone Wall","5300801":"Mossy Cobblestone Wall","5300802":"Mossy Cobblestone Wall","5300804":"Mossy Cobblestone Wall","5300805":"Mossy Cobblestone Wall","5300806":"Mossy Cobblestone Wall","5300808":"Mossy Cobblestone Wall","5300809":"Mossy Cobblestone Wall","5300810":"Mossy Cobblestone Wall","5300816":"Mossy Cobblestone Wall","5300817":"Mossy Cobblestone Wall","5300818":"Mossy Cobblestone Wall","5300820":"Mossy Cobblestone Wall","5300821":"Mossy Cobblestone Wall","5300822":"Mossy Cobblestone Wall","5300824":"Mossy Cobblestone Wall","5300825":"Mossy Cobblestone Wall","5300826":"Mossy Cobblestone Wall","5300832":"Mossy Cobblestone Wall","5300833":"Mossy Cobblestone Wall","5300834":"Mossy Cobblestone Wall","5300836":"Mossy Cobblestone Wall","5300837":"Mossy Cobblestone Wall","5300838":"Mossy Cobblestone Wall","5300840":"Mossy Cobblestone Wall","5300841":"Mossy Cobblestone Wall","5300842":"Mossy Cobblestone Wall","5300864":"Mossy Cobblestone Wall","5300865":"Mossy Cobblestone Wall","5300866":"Mossy Cobblestone Wall","5300868":"Mossy Cobblestone Wall","5300869":"Mossy Cobblestone Wall","5300870":"Mossy Cobblestone Wall","5300872":"Mossy Cobblestone Wall","5300873":"Mossy Cobblestone Wall","5300874":"Mossy Cobblestone Wall","5300880":"Mossy Cobblestone Wall","5300881":"Mossy Cobblestone Wall","5300882":"Mossy Cobblestone Wall","5300884":"Mossy Cobblestone Wall","5300885":"Mossy Cobblestone Wall","5300886":"Mossy Cobblestone Wall","5300888":"Mossy Cobblestone Wall","5300889":"Mossy Cobblestone Wall","5300890":"Mossy Cobblestone Wall","5300896":"Mossy Cobblestone Wall","5300897":"Mossy Cobblestone Wall","5300898":"Mossy Cobblestone Wall","5300900":"Mossy Cobblestone Wall","5300901":"Mossy Cobblestone Wall","5300902":"Mossy Cobblestone Wall","5300904":"Mossy Cobblestone Wall","5300905":"Mossy Cobblestone Wall","5300906":"Mossy Cobblestone Wall","5300992":"Mossy Cobblestone Wall","5300993":"Mossy Cobblestone Wall","5300994":"Mossy Cobblestone Wall","5300996":"Mossy Cobblestone Wall","5300997":"Mossy Cobblestone Wall","5300998":"Mossy Cobblestone Wall","5301000":"Mossy Cobblestone Wall","5301001":"Mossy Cobblestone Wall","5301002":"Mossy Cobblestone Wall","5301008":"Mossy Cobblestone Wall","5301009":"Mossy Cobblestone Wall","5301010":"Mossy Cobblestone Wall","5301012":"Mossy Cobblestone Wall","5301013":"Mossy Cobblestone Wall","5301014":"Mossy Cobblestone Wall","5301016":"Mossy Cobblestone Wall","5301017":"Mossy Cobblestone Wall","5301018":"Mossy Cobblestone Wall","5301024":"Mossy Cobblestone Wall","5301025":"Mossy Cobblestone Wall","5301026":"Mossy Cobblestone Wall","5301028":"Mossy Cobblestone Wall","5301029":"Mossy Cobblestone Wall","5301030":"Mossy Cobblestone Wall","5301032":"Mossy Cobblestone Wall","5301033":"Mossy Cobblestone Wall","5301034":"Mossy Cobblestone Wall","5301056":"Mossy Cobblestone Wall","5301057":"Mossy Cobblestone Wall","5301058":"Mossy Cobblestone Wall","5301060":"Mossy Cobblestone Wall","5301061":"Mossy Cobblestone Wall","5301062":"Mossy Cobblestone Wall","5301064":"Mossy Cobblestone Wall","5301065":"Mossy Cobblestone Wall","5301066":"Mossy Cobblestone Wall","5301072":"Mossy Cobblestone Wall","5301073":"Mossy Cobblestone Wall","5301074":"Mossy Cobblestone Wall","5301076":"Mossy Cobblestone Wall","5301077":"Mossy Cobblestone Wall","5301078":"Mossy Cobblestone Wall","5301080":"Mossy Cobblestone Wall","5301081":"Mossy Cobblestone Wall","5301082":"Mossy Cobblestone Wall","5301088":"Mossy Cobblestone Wall","5301089":"Mossy Cobblestone Wall","5301090":"Mossy Cobblestone Wall","5301092":"Mossy Cobblestone Wall","5301093":"Mossy Cobblestone Wall","5301094":"Mossy Cobblestone Wall","5301096":"Mossy Cobblestone Wall","5301097":"Mossy Cobblestone Wall","5301098":"Mossy Cobblestone Wall","5301120":"Mossy Cobblestone Wall","5301121":"Mossy Cobblestone Wall","5301122":"Mossy Cobblestone Wall","5301124":"Mossy Cobblestone Wall","5301125":"Mossy Cobblestone Wall","5301126":"Mossy Cobblestone Wall","5301128":"Mossy Cobblestone Wall","5301129":"Mossy Cobblestone Wall","5301130":"Mossy Cobblestone Wall","5301136":"Mossy Cobblestone Wall","5301137":"Mossy Cobblestone Wall","5301138":"Mossy Cobblestone Wall","5301140":"Mossy Cobblestone Wall","5301141":"Mossy Cobblestone Wall","5301142":"Mossy Cobblestone Wall","5301144":"Mossy Cobblestone Wall","5301145":"Mossy Cobblestone Wall","5301146":"Mossy Cobblestone Wall","5301152":"Mossy Cobblestone Wall","5301153":"Mossy Cobblestone Wall","5301154":"Mossy Cobblestone Wall","5301156":"Mossy Cobblestone Wall","5301157":"Mossy Cobblestone Wall","5301158":"Mossy Cobblestone Wall","5301160":"Mossy Cobblestone Wall","5301161":"Mossy Cobblestone Wall","5301162":"Mossy Cobblestone Wall","5305856":"Nether Brick Wall","5305857":"Nether Brick Wall","5305858":"Nether Brick Wall","5305860":"Nether Brick Wall","5305861":"Nether Brick Wall","5305862":"Nether Brick Wall","5305864":"Nether Brick Wall","5305865":"Nether Brick Wall","5305866":"Nether Brick Wall","5305872":"Nether Brick Wall","5305873":"Nether Brick Wall","5305874":"Nether Brick Wall","5305876":"Nether Brick Wall","5305877":"Nether Brick Wall","5305878":"Nether Brick Wall","5305880":"Nether Brick Wall","5305881":"Nether Brick Wall","5305882":"Nether Brick Wall","5305888":"Nether Brick Wall","5305889":"Nether Brick Wall","5305890":"Nether Brick Wall","5305892":"Nether Brick Wall","5305893":"Nether Brick Wall","5305894":"Nether Brick Wall","5305896":"Nether Brick Wall","5305897":"Nether Brick Wall","5305898":"Nether Brick Wall","5305920":"Nether Brick Wall","5305921":"Nether Brick Wall","5305922":"Nether Brick Wall","5305924":"Nether Brick Wall","5305925":"Nether Brick Wall","5305926":"Nether Brick Wall","5305928":"Nether Brick Wall","5305929":"Nether Brick Wall","5305930":"Nether Brick Wall","5305936":"Nether Brick Wall","5305937":"Nether Brick Wall","5305938":"Nether Brick Wall","5305940":"Nether Brick Wall","5305941":"Nether Brick Wall","5305942":"Nether Brick Wall","5305944":"Nether Brick Wall","5305945":"Nether Brick Wall","5305946":"Nether Brick Wall","5305952":"Nether Brick Wall","5305953":"Nether Brick Wall","5305954":"Nether Brick Wall","5305956":"Nether Brick Wall","5305957":"Nether Brick Wall","5305958":"Nether Brick Wall","5305960":"Nether Brick Wall","5305961":"Nether Brick Wall","5305962":"Nether Brick Wall","5305984":"Nether Brick Wall","5305985":"Nether Brick Wall","5305986":"Nether Brick Wall","5305988":"Nether Brick Wall","5305989":"Nether Brick Wall","5305990":"Nether Brick Wall","5305992":"Nether Brick Wall","5305993":"Nether Brick Wall","5305994":"Nether Brick Wall","5306000":"Nether Brick Wall","5306001":"Nether Brick Wall","5306002":"Nether Brick Wall","5306004":"Nether Brick Wall","5306005":"Nether Brick Wall","5306006":"Nether Brick Wall","5306008":"Nether Brick Wall","5306009":"Nether Brick Wall","5306010":"Nether Brick Wall","5306016":"Nether Brick Wall","5306017":"Nether Brick Wall","5306018":"Nether Brick Wall","5306020":"Nether Brick Wall","5306021":"Nether Brick Wall","5306022":"Nether Brick Wall","5306024":"Nether Brick Wall","5306025":"Nether Brick Wall","5306026":"Nether Brick Wall","5306112":"Nether Brick Wall","5306113":"Nether Brick Wall","5306114":"Nether Brick Wall","5306116":"Nether Brick Wall","5306117":"Nether Brick Wall","5306118":"Nether Brick Wall","5306120":"Nether Brick Wall","5306121":"Nether Brick Wall","5306122":"Nether Brick Wall","5306128":"Nether Brick Wall","5306129":"Nether Brick Wall","5306130":"Nether Brick Wall","5306132":"Nether Brick Wall","5306133":"Nether Brick Wall","5306134":"Nether Brick Wall","5306136":"Nether Brick Wall","5306137":"Nether Brick Wall","5306138":"Nether Brick Wall","5306144":"Nether Brick Wall","5306145":"Nether Brick Wall","5306146":"Nether Brick Wall","5306148":"Nether Brick Wall","5306149":"Nether Brick Wall","5306150":"Nether Brick Wall","5306152":"Nether Brick Wall","5306153":"Nether Brick Wall","5306154":"Nether Brick Wall","5306176":"Nether Brick Wall","5306177":"Nether Brick Wall","5306178":"Nether Brick Wall","5306180":"Nether Brick Wall","5306181":"Nether Brick Wall","5306182":"Nether Brick Wall","5306184":"Nether Brick Wall","5306185":"Nether Brick Wall","5306186":"Nether Brick Wall","5306192":"Nether Brick Wall","5306193":"Nether Brick Wall","5306194":"Nether Brick Wall","5306196":"Nether Brick Wall","5306197":"Nether Brick Wall","5306198":"Nether Brick Wall","5306200":"Nether Brick Wall","5306201":"Nether Brick Wall","5306202":"Nether Brick Wall","5306208":"Nether Brick Wall","5306209":"Nether Brick Wall","5306210":"Nether Brick Wall","5306212":"Nether Brick Wall","5306213":"Nether Brick Wall","5306214":"Nether Brick Wall","5306216":"Nether Brick Wall","5306217":"Nether Brick Wall","5306218":"Nether Brick Wall","5306240":"Nether Brick Wall","5306241":"Nether Brick Wall","5306242":"Nether Brick Wall","5306244":"Nether Brick Wall","5306245":"Nether Brick Wall","5306246":"Nether Brick Wall","5306248":"Nether Brick Wall","5306249":"Nether Brick Wall","5306250":"Nether Brick Wall","5306256":"Nether Brick Wall","5306257":"Nether Brick Wall","5306258":"Nether Brick Wall","5306260":"Nether Brick Wall","5306261":"Nether Brick Wall","5306262":"Nether Brick Wall","5306264":"Nether Brick Wall","5306265":"Nether Brick Wall","5306266":"Nether Brick Wall","5306272":"Nether Brick Wall","5306273":"Nether Brick Wall","5306274":"Nether Brick Wall","5306276":"Nether Brick Wall","5306277":"Nether Brick Wall","5306278":"Nether Brick Wall","5306280":"Nether Brick Wall","5306281":"Nether Brick Wall","5306282":"Nether Brick Wall","5331968":"Prismarine Wall","5331969":"Prismarine Wall","5331970":"Prismarine Wall","5331972":"Prismarine Wall","5331973":"Prismarine Wall","5331974":"Prismarine Wall","5331976":"Prismarine Wall","5331977":"Prismarine Wall","5331978":"Prismarine Wall","5331984":"Prismarine Wall","5331985":"Prismarine Wall","5331986":"Prismarine Wall","5331988":"Prismarine Wall","5331989":"Prismarine Wall","5331990":"Prismarine Wall","5331992":"Prismarine Wall","5331993":"Prismarine Wall","5331994":"Prismarine Wall","5332000":"Prismarine Wall","5332001":"Prismarine Wall","5332002":"Prismarine Wall","5332004":"Prismarine Wall","5332005":"Prismarine Wall","5332006":"Prismarine Wall","5332008":"Prismarine Wall","5332009":"Prismarine Wall","5332010":"Prismarine Wall","5332032":"Prismarine Wall","5332033":"Prismarine Wall","5332034":"Prismarine Wall","5332036":"Prismarine Wall","5332037":"Prismarine Wall","5332038":"Prismarine Wall","5332040":"Prismarine Wall","5332041":"Prismarine Wall","5332042":"Prismarine Wall","5332048":"Prismarine Wall","5332049":"Prismarine Wall","5332050":"Prismarine Wall","5332052":"Prismarine Wall","5332053":"Prismarine Wall","5332054":"Prismarine Wall","5332056":"Prismarine Wall","5332057":"Prismarine Wall","5332058":"Prismarine Wall","5332064":"Prismarine Wall","5332065":"Prismarine Wall","5332066":"Prismarine Wall","5332068":"Prismarine Wall","5332069":"Prismarine Wall","5332070":"Prismarine Wall","5332072":"Prismarine Wall","5332073":"Prismarine Wall","5332074":"Prismarine Wall","5332096":"Prismarine Wall","5332097":"Prismarine Wall","5332098":"Prismarine Wall","5332100":"Prismarine Wall","5332101":"Prismarine Wall","5332102":"Prismarine Wall","5332104":"Prismarine Wall","5332105":"Prismarine Wall","5332106":"Prismarine Wall","5332112":"Prismarine Wall","5332113":"Prismarine Wall","5332114":"Prismarine Wall","5332116":"Prismarine Wall","5332117":"Prismarine Wall","5332118":"Prismarine Wall","5332120":"Prismarine Wall","5332121":"Prismarine Wall","5332122":"Prismarine Wall","5332128":"Prismarine Wall","5332129":"Prismarine Wall","5332130":"Prismarine Wall","5332132":"Prismarine Wall","5332133":"Prismarine Wall","5332134":"Prismarine Wall","5332136":"Prismarine Wall","5332137":"Prismarine Wall","5332138":"Prismarine Wall","5332224":"Prismarine Wall","5332225":"Prismarine Wall","5332226":"Prismarine Wall","5332228":"Prismarine Wall","5332229":"Prismarine Wall","5332230":"Prismarine Wall","5332232":"Prismarine Wall","5332233":"Prismarine Wall","5332234":"Prismarine Wall","5332240":"Prismarine Wall","5332241":"Prismarine Wall","5332242":"Prismarine Wall","5332244":"Prismarine Wall","5332245":"Prismarine Wall","5332246":"Prismarine Wall","5332248":"Prismarine Wall","5332249":"Prismarine Wall","5332250":"Prismarine Wall","5332256":"Prismarine Wall","5332257":"Prismarine Wall","5332258":"Prismarine Wall","5332260":"Prismarine Wall","5332261":"Prismarine Wall","5332262":"Prismarine Wall","5332264":"Prismarine Wall","5332265":"Prismarine Wall","5332266":"Prismarine Wall","5332288":"Prismarine Wall","5332289":"Prismarine Wall","5332290":"Prismarine Wall","5332292":"Prismarine Wall","5332293":"Prismarine Wall","5332294":"Prismarine Wall","5332296":"Prismarine Wall","5332297":"Prismarine Wall","5332298":"Prismarine Wall","5332304":"Prismarine Wall","5332305":"Prismarine Wall","5332306":"Prismarine Wall","5332308":"Prismarine Wall","5332309":"Prismarine Wall","5332310":"Prismarine Wall","5332312":"Prismarine Wall","5332313":"Prismarine Wall","5332314":"Prismarine Wall","5332320":"Prismarine Wall","5332321":"Prismarine Wall","5332322":"Prismarine Wall","5332324":"Prismarine Wall","5332325":"Prismarine Wall","5332326":"Prismarine Wall","5332328":"Prismarine Wall","5332329":"Prismarine Wall","5332330":"Prismarine Wall","5332352":"Prismarine Wall","5332353":"Prismarine Wall","5332354":"Prismarine Wall","5332356":"Prismarine Wall","5332357":"Prismarine Wall","5332358":"Prismarine Wall","5332360":"Prismarine Wall","5332361":"Prismarine Wall","5332362":"Prismarine Wall","5332368":"Prismarine Wall","5332369":"Prismarine Wall","5332370":"Prismarine Wall","5332372":"Prismarine Wall","5332373":"Prismarine Wall","5332374":"Prismarine Wall","5332376":"Prismarine Wall","5332377":"Prismarine Wall","5332378":"Prismarine Wall","5332384":"Prismarine Wall","5332385":"Prismarine Wall","5332386":"Prismarine Wall","5332388":"Prismarine Wall","5332389":"Prismarine Wall","5332390":"Prismarine Wall","5332392":"Prismarine Wall","5332393":"Prismarine Wall","5332394":"Prismarine Wall","5341696":"Red Nether Brick Wall","5341697":"Red Nether Brick Wall","5341698":"Red Nether Brick Wall","5341700":"Red Nether Brick Wall","5341701":"Red Nether Brick Wall","5341702":"Red Nether Brick Wall","5341704":"Red Nether Brick Wall","5341705":"Red Nether Brick Wall","5341706":"Red Nether Brick Wall","5341712":"Red Nether Brick Wall","5341713":"Red Nether Brick Wall","5341714":"Red Nether Brick Wall","5341716":"Red Nether Brick Wall","5341717":"Red Nether Brick Wall","5341718":"Red Nether Brick Wall","5341720":"Red Nether Brick Wall","5341721":"Red Nether Brick Wall","5341722":"Red Nether Brick Wall","5341728":"Red Nether Brick Wall","5341729":"Red Nether Brick Wall","5341730":"Red Nether Brick Wall","5341732":"Red Nether Brick Wall","5341733":"Red Nether Brick Wall","5341734":"Red Nether Brick Wall","5341736":"Red Nether Brick Wall","5341737":"Red Nether Brick Wall","5341738":"Red Nether Brick Wall","5341760":"Red Nether Brick Wall","5341761":"Red Nether Brick Wall","5341762":"Red Nether Brick Wall","5341764":"Red Nether Brick Wall","5341765":"Red Nether Brick Wall","5341766":"Red Nether Brick Wall","5341768":"Red Nether Brick Wall","5341769":"Red Nether Brick Wall","5341770":"Red Nether Brick Wall","5341776":"Red Nether Brick Wall","5341777":"Red Nether Brick Wall","5341778":"Red Nether Brick Wall","5341780":"Red Nether Brick Wall","5341781":"Red Nether Brick Wall","5341782":"Red Nether Brick Wall","5341784":"Red Nether Brick Wall","5341785":"Red Nether Brick Wall","5341786":"Red Nether Brick Wall","5341792":"Red Nether Brick Wall","5341793":"Red Nether Brick Wall","5341794":"Red Nether Brick Wall","5341796":"Red Nether Brick Wall","5341797":"Red Nether Brick Wall","5341798":"Red Nether Brick Wall","5341800":"Red Nether Brick Wall","5341801":"Red Nether Brick Wall","5341802":"Red Nether Brick Wall","5341824":"Red Nether Brick Wall","5341825":"Red Nether Brick Wall","5341826":"Red Nether Brick Wall","5341828":"Red Nether Brick Wall","5341829":"Red Nether Brick Wall","5341830":"Red Nether Brick Wall","5341832":"Red Nether Brick Wall","5341833":"Red Nether Brick Wall","5341834":"Red Nether Brick Wall","5341840":"Red Nether Brick Wall","5341841":"Red Nether Brick Wall","5341842":"Red Nether Brick Wall","5341844":"Red Nether Brick Wall","5341845":"Red Nether Brick Wall","5341846":"Red Nether Brick Wall","5341848":"Red Nether Brick Wall","5341849":"Red Nether Brick Wall","5341850":"Red Nether Brick Wall","5341856":"Red Nether Brick Wall","5341857":"Red Nether Brick Wall","5341858":"Red Nether Brick Wall","5341860":"Red Nether Brick Wall","5341861":"Red Nether Brick Wall","5341862":"Red Nether Brick Wall","5341864":"Red Nether Brick Wall","5341865":"Red Nether Brick Wall","5341866":"Red Nether Brick Wall","5341952":"Red Nether Brick Wall","5341953":"Red Nether Brick Wall","5341954":"Red Nether Brick Wall","5341956":"Red Nether Brick Wall","5341957":"Red Nether Brick Wall","5341958":"Red Nether Brick Wall","5341960":"Red Nether Brick Wall","5341961":"Red Nether Brick Wall","5341962":"Red Nether Brick Wall","5341968":"Red Nether Brick Wall","5341969":"Red Nether Brick Wall","5341970":"Red Nether Brick Wall","5341972":"Red Nether Brick Wall","5341973":"Red Nether Brick Wall","5341974":"Red Nether Brick Wall","5341976":"Red Nether Brick Wall","5341977":"Red Nether Brick Wall","5341978":"Red Nether Brick Wall","5341984":"Red Nether Brick Wall","5341985":"Red Nether Brick Wall","5341986":"Red Nether Brick Wall","5341988":"Red Nether Brick Wall","5341989":"Red Nether Brick Wall","5341990":"Red Nether Brick Wall","5341992":"Red Nether Brick Wall","5341993":"Red Nether Brick Wall","5341994":"Red Nether Brick Wall","5342016":"Red Nether Brick Wall","5342017":"Red Nether Brick Wall","5342018":"Red Nether Brick Wall","5342020":"Red Nether Brick Wall","5342021":"Red Nether Brick Wall","5342022":"Red Nether Brick Wall","5342024":"Red Nether Brick Wall","5342025":"Red Nether Brick Wall","5342026":"Red Nether Brick Wall","5342032":"Red Nether Brick Wall","5342033":"Red Nether Brick Wall","5342034":"Red Nether Brick Wall","5342036":"Red Nether Brick Wall","5342037":"Red Nether Brick Wall","5342038":"Red Nether Brick Wall","5342040":"Red Nether Brick Wall","5342041":"Red Nether Brick Wall","5342042":"Red Nether Brick Wall","5342048":"Red Nether Brick Wall","5342049":"Red Nether Brick Wall","5342050":"Red Nether Brick Wall","5342052":"Red Nether Brick Wall","5342053":"Red Nether Brick Wall","5342054":"Red Nether Brick Wall","5342056":"Red Nether Brick Wall","5342057":"Red Nether Brick Wall","5342058":"Red Nether Brick Wall","5342080":"Red Nether Brick Wall","5342081":"Red Nether Brick Wall","5342082":"Red Nether Brick Wall","5342084":"Red Nether Brick Wall","5342085":"Red Nether Brick Wall","5342086":"Red Nether Brick Wall","5342088":"Red Nether Brick Wall","5342089":"Red Nether Brick Wall","5342090":"Red Nether Brick Wall","5342096":"Red Nether Brick Wall","5342097":"Red Nether Brick Wall","5342098":"Red Nether Brick Wall","5342100":"Red Nether Brick Wall","5342101":"Red Nether Brick Wall","5342102":"Red Nether Brick Wall","5342104":"Red Nether Brick Wall","5342105":"Red Nether Brick Wall","5342106":"Red Nether Brick Wall","5342112":"Red Nether Brick Wall","5342113":"Red Nether Brick Wall","5342114":"Red Nether Brick Wall","5342116":"Red Nether Brick Wall","5342117":"Red Nether Brick Wall","5342118":"Red Nether Brick Wall","5342120":"Red Nether Brick Wall","5342121":"Red Nether Brick Wall","5342122":"Red Nether Brick Wall","5344768":"Red Sandstone Wall","5344769":"Red Sandstone Wall","5344770":"Red Sandstone Wall","5344772":"Red Sandstone Wall","5344773":"Red Sandstone Wall","5344774":"Red Sandstone Wall","5344776":"Red Sandstone Wall","5344777":"Red Sandstone Wall","5344778":"Red Sandstone Wall","5344784":"Red Sandstone Wall","5344785":"Red Sandstone Wall","5344786":"Red Sandstone Wall","5344788":"Red Sandstone Wall","5344789":"Red Sandstone Wall","5344790":"Red Sandstone Wall","5344792":"Red Sandstone Wall","5344793":"Red Sandstone Wall","5344794":"Red Sandstone Wall","5344800":"Red Sandstone Wall","5344801":"Red Sandstone Wall","5344802":"Red Sandstone Wall","5344804":"Red Sandstone Wall","5344805":"Red Sandstone Wall","5344806":"Red Sandstone Wall","5344808":"Red Sandstone Wall","5344809":"Red Sandstone Wall","5344810":"Red Sandstone Wall","5344832":"Red Sandstone Wall","5344833":"Red Sandstone Wall","5344834":"Red Sandstone Wall","5344836":"Red Sandstone Wall","5344837":"Red Sandstone Wall","5344838":"Red Sandstone Wall","5344840":"Red Sandstone Wall","5344841":"Red Sandstone Wall","5344842":"Red Sandstone Wall","5344848":"Red Sandstone Wall","5344849":"Red Sandstone Wall","5344850":"Red Sandstone Wall","5344852":"Red Sandstone Wall","5344853":"Red Sandstone Wall","5344854":"Red Sandstone Wall","5344856":"Red Sandstone Wall","5344857":"Red Sandstone Wall","5344858":"Red Sandstone Wall","5344864":"Red Sandstone Wall","5344865":"Red Sandstone Wall","5344866":"Red Sandstone Wall","5344868":"Red Sandstone Wall","5344869":"Red Sandstone Wall","5344870":"Red Sandstone Wall","5344872":"Red Sandstone Wall","5344873":"Red Sandstone Wall","5344874":"Red Sandstone Wall","5344896":"Red Sandstone Wall","5344897":"Red Sandstone Wall","5344898":"Red Sandstone Wall","5344900":"Red Sandstone Wall","5344901":"Red Sandstone Wall","5344902":"Red Sandstone Wall","5344904":"Red Sandstone Wall","5344905":"Red Sandstone Wall","5344906":"Red Sandstone Wall","5344912":"Red Sandstone Wall","5344913":"Red Sandstone Wall","5344914":"Red Sandstone Wall","5344916":"Red Sandstone Wall","5344917":"Red Sandstone Wall","5344918":"Red Sandstone Wall","5344920":"Red Sandstone Wall","5344921":"Red Sandstone Wall","5344922":"Red Sandstone Wall","5344928":"Red Sandstone Wall","5344929":"Red Sandstone Wall","5344930":"Red Sandstone Wall","5344932":"Red Sandstone Wall","5344933":"Red Sandstone Wall","5344934":"Red Sandstone Wall","5344936":"Red Sandstone Wall","5344937":"Red Sandstone Wall","5344938":"Red Sandstone Wall","5345024":"Red Sandstone Wall","5345025":"Red Sandstone Wall","5345026":"Red Sandstone Wall","5345028":"Red Sandstone Wall","5345029":"Red Sandstone Wall","5345030":"Red Sandstone Wall","5345032":"Red Sandstone Wall","5345033":"Red Sandstone Wall","5345034":"Red Sandstone Wall","5345040":"Red Sandstone Wall","5345041":"Red Sandstone Wall","5345042":"Red Sandstone Wall","5345044":"Red Sandstone Wall","5345045":"Red Sandstone Wall","5345046":"Red Sandstone Wall","5345048":"Red Sandstone Wall","5345049":"Red Sandstone Wall","5345050":"Red Sandstone Wall","5345056":"Red Sandstone Wall","5345057":"Red Sandstone Wall","5345058":"Red Sandstone Wall","5345060":"Red Sandstone Wall","5345061":"Red Sandstone Wall","5345062":"Red Sandstone Wall","5345064":"Red Sandstone Wall","5345065":"Red Sandstone Wall","5345066":"Red Sandstone Wall","5345088":"Red Sandstone Wall","5345089":"Red Sandstone Wall","5345090":"Red Sandstone Wall","5345092":"Red Sandstone Wall","5345093":"Red Sandstone Wall","5345094":"Red Sandstone Wall","5345096":"Red Sandstone Wall","5345097":"Red Sandstone Wall","5345098":"Red Sandstone Wall","5345104":"Red Sandstone Wall","5345105":"Red Sandstone Wall","5345106":"Red Sandstone Wall","5345108":"Red Sandstone Wall","5345109":"Red Sandstone Wall","5345110":"Red Sandstone Wall","5345112":"Red Sandstone Wall","5345113":"Red Sandstone Wall","5345114":"Red Sandstone Wall","5345120":"Red Sandstone Wall","5345121":"Red Sandstone Wall","5345122":"Red Sandstone Wall","5345124":"Red Sandstone Wall","5345125":"Red Sandstone Wall","5345126":"Red Sandstone Wall","5345128":"Red Sandstone Wall","5345129":"Red Sandstone Wall","5345130":"Red Sandstone Wall","5345152":"Red Sandstone Wall","5345153":"Red Sandstone Wall","5345154":"Red Sandstone Wall","5345156":"Red Sandstone Wall","5345157":"Red Sandstone Wall","5345158":"Red Sandstone Wall","5345160":"Red Sandstone Wall","5345161":"Red Sandstone Wall","5345162":"Red Sandstone Wall","5345168":"Red Sandstone Wall","5345169":"Red Sandstone Wall","5345170":"Red Sandstone Wall","5345172":"Red Sandstone Wall","5345173":"Red Sandstone Wall","5345174":"Red Sandstone Wall","5345176":"Red Sandstone Wall","5345177":"Red Sandstone Wall","5345178":"Red Sandstone Wall","5345184":"Red Sandstone Wall","5345185":"Red Sandstone Wall","5345186":"Red Sandstone Wall","5345188":"Red Sandstone Wall","5345189":"Red Sandstone Wall","5345190":"Red Sandstone Wall","5345192":"Red Sandstone Wall","5345193":"Red Sandstone Wall","5345194":"Red Sandstone Wall","5352960":"Sandstone Wall","5352961":"Sandstone Wall","5352962":"Sandstone Wall","5352964":"Sandstone Wall","5352965":"Sandstone Wall","5352966":"Sandstone Wall","5352968":"Sandstone Wall","5352969":"Sandstone Wall","5352970":"Sandstone Wall","5352976":"Sandstone Wall","5352977":"Sandstone Wall","5352978":"Sandstone Wall","5352980":"Sandstone Wall","5352981":"Sandstone Wall","5352982":"Sandstone Wall","5352984":"Sandstone Wall","5352985":"Sandstone Wall","5352986":"Sandstone Wall","5352992":"Sandstone Wall","5352993":"Sandstone Wall","5352994":"Sandstone Wall","5352996":"Sandstone Wall","5352997":"Sandstone Wall","5352998":"Sandstone Wall","5353000":"Sandstone Wall","5353001":"Sandstone Wall","5353002":"Sandstone Wall","5353024":"Sandstone Wall","5353025":"Sandstone Wall","5353026":"Sandstone Wall","5353028":"Sandstone Wall","5353029":"Sandstone Wall","5353030":"Sandstone Wall","5353032":"Sandstone Wall","5353033":"Sandstone Wall","5353034":"Sandstone Wall","5353040":"Sandstone Wall","5353041":"Sandstone Wall","5353042":"Sandstone Wall","5353044":"Sandstone Wall","5353045":"Sandstone Wall","5353046":"Sandstone Wall","5353048":"Sandstone Wall","5353049":"Sandstone Wall","5353050":"Sandstone Wall","5353056":"Sandstone Wall","5353057":"Sandstone Wall","5353058":"Sandstone Wall","5353060":"Sandstone Wall","5353061":"Sandstone Wall","5353062":"Sandstone Wall","5353064":"Sandstone Wall","5353065":"Sandstone Wall","5353066":"Sandstone Wall","5353088":"Sandstone Wall","5353089":"Sandstone Wall","5353090":"Sandstone Wall","5353092":"Sandstone Wall","5353093":"Sandstone Wall","5353094":"Sandstone Wall","5353096":"Sandstone Wall","5353097":"Sandstone Wall","5353098":"Sandstone Wall","5353104":"Sandstone Wall","5353105":"Sandstone Wall","5353106":"Sandstone Wall","5353108":"Sandstone Wall","5353109":"Sandstone Wall","5353110":"Sandstone Wall","5353112":"Sandstone Wall","5353113":"Sandstone Wall","5353114":"Sandstone Wall","5353120":"Sandstone Wall","5353121":"Sandstone Wall","5353122":"Sandstone Wall","5353124":"Sandstone Wall","5353125":"Sandstone Wall","5353126":"Sandstone Wall","5353128":"Sandstone Wall","5353129":"Sandstone Wall","5353130":"Sandstone Wall","5353216":"Sandstone Wall","5353217":"Sandstone Wall","5353218":"Sandstone Wall","5353220":"Sandstone Wall","5353221":"Sandstone Wall","5353222":"Sandstone Wall","5353224":"Sandstone Wall","5353225":"Sandstone Wall","5353226":"Sandstone Wall","5353232":"Sandstone Wall","5353233":"Sandstone Wall","5353234":"Sandstone Wall","5353236":"Sandstone Wall","5353237":"Sandstone Wall","5353238":"Sandstone Wall","5353240":"Sandstone Wall","5353241":"Sandstone Wall","5353242":"Sandstone Wall","5353248":"Sandstone Wall","5353249":"Sandstone Wall","5353250":"Sandstone Wall","5353252":"Sandstone Wall","5353253":"Sandstone Wall","5353254":"Sandstone Wall","5353256":"Sandstone Wall","5353257":"Sandstone Wall","5353258":"Sandstone Wall","5353280":"Sandstone Wall","5353281":"Sandstone Wall","5353282":"Sandstone Wall","5353284":"Sandstone Wall","5353285":"Sandstone Wall","5353286":"Sandstone Wall","5353288":"Sandstone Wall","5353289":"Sandstone Wall","5353290":"Sandstone Wall","5353296":"Sandstone Wall","5353297":"Sandstone Wall","5353298":"Sandstone Wall","5353300":"Sandstone Wall","5353301":"Sandstone Wall","5353302":"Sandstone Wall","5353304":"Sandstone Wall","5353305":"Sandstone Wall","5353306":"Sandstone Wall","5353312":"Sandstone Wall","5353313":"Sandstone Wall","5353314":"Sandstone Wall","5353316":"Sandstone Wall","5353317":"Sandstone Wall","5353318":"Sandstone Wall","5353320":"Sandstone Wall","5353321":"Sandstone Wall","5353322":"Sandstone Wall","5353344":"Sandstone Wall","5353345":"Sandstone Wall","5353346":"Sandstone Wall","5353348":"Sandstone Wall","5353349":"Sandstone Wall","5353350":"Sandstone Wall","5353352":"Sandstone Wall","5353353":"Sandstone Wall","5353354":"Sandstone Wall","5353360":"Sandstone Wall","5353361":"Sandstone Wall","5353362":"Sandstone Wall","5353364":"Sandstone Wall","5353365":"Sandstone Wall","5353366":"Sandstone Wall","5353368":"Sandstone Wall","5353369":"Sandstone Wall","5353370":"Sandstone Wall","5353376":"Sandstone Wall","5353377":"Sandstone Wall","5353378":"Sandstone Wall","5353380":"Sandstone Wall","5353381":"Sandstone Wall","5353382":"Sandstone Wall","5353384":"Sandstone Wall","5353385":"Sandstone Wall","5353386":"Sandstone Wall","5375488":"Stone Brick Wall","5375489":"Stone Brick Wall","5375490":"Stone Brick Wall","5375492":"Stone Brick Wall","5375493":"Stone Brick Wall","5375494":"Stone Brick Wall","5375496":"Stone Brick Wall","5375497":"Stone Brick Wall","5375498":"Stone Brick Wall","5375504":"Stone Brick Wall","5375505":"Stone Brick Wall","5375506":"Stone Brick Wall","5375508":"Stone Brick Wall","5375509":"Stone Brick Wall","5375510":"Stone Brick Wall","5375512":"Stone Brick Wall","5375513":"Stone Brick Wall","5375514":"Stone Brick Wall","5375520":"Stone Brick Wall","5375521":"Stone Brick Wall","5375522":"Stone Brick Wall","5375524":"Stone Brick Wall","5375525":"Stone Brick Wall","5375526":"Stone Brick Wall","5375528":"Stone Brick Wall","5375529":"Stone Brick Wall","5375530":"Stone Brick Wall","5375552":"Stone Brick Wall","5375553":"Stone Brick Wall","5375554":"Stone Brick Wall","5375556":"Stone Brick Wall","5375557":"Stone Brick Wall","5375558":"Stone Brick Wall","5375560":"Stone Brick Wall","5375561":"Stone Brick Wall","5375562":"Stone Brick Wall","5375568":"Stone Brick Wall","5375569":"Stone Brick Wall","5375570":"Stone Brick Wall","5375572":"Stone Brick Wall","5375573":"Stone Brick Wall","5375574":"Stone Brick Wall","5375576":"Stone Brick Wall","5375577":"Stone Brick Wall","5375578":"Stone Brick Wall","5375584":"Stone Brick Wall","5375585":"Stone Brick Wall","5375586":"Stone Brick Wall","5375588":"Stone Brick Wall","5375589":"Stone Brick Wall","5375590":"Stone Brick Wall","5375592":"Stone Brick Wall","5375593":"Stone Brick Wall","5375594":"Stone Brick Wall","5375616":"Stone Brick Wall","5375617":"Stone Brick Wall","5375618":"Stone Brick Wall","5375620":"Stone Brick Wall","5375621":"Stone Brick Wall","5375622":"Stone Brick Wall","5375624":"Stone Brick Wall","5375625":"Stone Brick Wall","5375626":"Stone Brick Wall","5375632":"Stone Brick Wall","5375633":"Stone Brick Wall","5375634":"Stone Brick Wall","5375636":"Stone Brick Wall","5375637":"Stone Brick Wall","5375638":"Stone Brick Wall","5375640":"Stone Brick Wall","5375641":"Stone Brick Wall","5375642":"Stone Brick Wall","5375648":"Stone Brick Wall","5375649":"Stone Brick Wall","5375650":"Stone Brick Wall","5375652":"Stone Brick Wall","5375653":"Stone Brick Wall","5375654":"Stone Brick Wall","5375656":"Stone Brick Wall","5375657":"Stone Brick Wall","5375658":"Stone Brick Wall","5375744":"Stone Brick Wall","5375745":"Stone Brick Wall","5375746":"Stone Brick Wall","5375748":"Stone Brick Wall","5375749":"Stone Brick Wall","5375750":"Stone Brick Wall","5375752":"Stone Brick Wall","5375753":"Stone Brick Wall","5375754":"Stone Brick Wall","5375760":"Stone Brick Wall","5375761":"Stone Brick Wall","5375762":"Stone Brick Wall","5375764":"Stone Brick Wall","5375765":"Stone Brick Wall","5375766":"Stone Brick Wall","5375768":"Stone Brick Wall","5375769":"Stone Brick Wall","5375770":"Stone Brick Wall","5375776":"Stone Brick Wall","5375777":"Stone Brick Wall","5375778":"Stone Brick Wall","5375780":"Stone Brick Wall","5375781":"Stone Brick Wall","5375782":"Stone Brick Wall","5375784":"Stone Brick Wall","5375785":"Stone Brick Wall","5375786":"Stone Brick Wall","5375808":"Stone Brick Wall","5375809":"Stone Brick Wall","5375810":"Stone Brick Wall","5375812":"Stone Brick Wall","5375813":"Stone Brick Wall","5375814":"Stone Brick Wall","5375816":"Stone Brick Wall","5375817":"Stone Brick Wall","5375818":"Stone Brick Wall","5375824":"Stone Brick Wall","5375825":"Stone Brick Wall","5375826":"Stone Brick Wall","5375828":"Stone Brick Wall","5375829":"Stone Brick Wall","5375830":"Stone Brick Wall","5375832":"Stone Brick Wall","5375833":"Stone Brick Wall","5375834":"Stone Brick Wall","5375840":"Stone Brick Wall","5375841":"Stone Brick Wall","5375842":"Stone Brick Wall","5375844":"Stone Brick Wall","5375845":"Stone Brick Wall","5375846":"Stone Brick Wall","5375848":"Stone Brick Wall","5375849":"Stone Brick Wall","5375850":"Stone Brick Wall","5375872":"Stone Brick Wall","5375873":"Stone Brick Wall","5375874":"Stone Brick Wall","5375876":"Stone Brick Wall","5375877":"Stone Brick Wall","5375878":"Stone Brick Wall","5375880":"Stone Brick Wall","5375881":"Stone Brick Wall","5375882":"Stone Brick Wall","5375888":"Stone Brick Wall","5375889":"Stone Brick Wall","5375890":"Stone Brick Wall","5375892":"Stone Brick Wall","5375893":"Stone Brick Wall","5375894":"Stone Brick Wall","5375896":"Stone Brick Wall","5375897":"Stone Brick Wall","5375898":"Stone Brick Wall","5375904":"Stone Brick Wall","5375905":"Stone Brick Wall","5375906":"Stone Brick Wall","5375908":"Stone Brick Wall","5375909":"Stone Brick Wall","5375910":"Stone Brick Wall","5375912":"Stone Brick Wall","5375913":"Stone Brick Wall","5375914":"Stone Brick Wall","5248000":"???","5211136":"Hydrogen","5210112":"Helium","5215744":"Lithium","5192704":"Beryllium","5194240":"Boron","5196800":"Carbon","5223936":"Nitrogen","5225984":"Oxygen","5206016":"Fluorine","5221376":"Neon","5238272":"Sodium","5217280":"Magnesium","5188608":"Aluminum","5237248":"Silicon","5227008":"Phosphorus","5239296":"Sulfur","5198336":"Chlorine","5190144":"Argon","5229056":"Potassium","5195776":"Calcium","5235712":"Scandium","5244416":"Titanium","5245952":"Vanadium","5198848":"Chromium","5217792":"Manganese","5213184":"Iron","5199360":"Cobalt","5222400":"Nickel","5200896":"Copper","5248512":"Zinc","5207552":"Gallium","5208064":"Germanium","5190656":"Arsenic","5236736":"Selenium","5194752":"Bromine","5213696":"Krypton","5233664":"Rubidium","5238784":"Strontium","5247488":"Yttrium","5249024":"Zirconium","5223424":"Niobium","5219840":"Molybdenum","5240320":"Technetium","5234176":"Ruthenium","5232640":"Rhodium","5226496":"Palladium","5237760":"Silver","5195264":"Cadmium","5211648":"Indium","5243904":"Tin","5189632":"Antimony","5240832":"Tellurium","5212160":"Iodine","5246464":"Xenon","5197824":"Cesium","5191680":"Barium","5214208":"Lanthanum","5197312":"Cerium","5229568":"Praseodymium","5220864":"Neodymium","5230080":"Promethium","5235200":"Samarium","5204480":"Europium","5207040":"Gadolinium","5241856":"Terbium","5202944":"Dysprosium","5210624":"Holmium","5203968":"Erbium","5243392":"Thulium","5246976":"Ytterbium","5216768":"Lutetium","5209088":"Hafnium","5239808":"Tantalum","5244928":"Tungsten","5232128":"Rhenium","5225472":"Osmium","5212672":"Iridium","5227520":"Platinum","5208576":"Gold","5219328":"Mercury","5242368":"Thallium","5215232":"Lead","5193216":"Bismuth","5228544":"Polonium","5191168":"Astatine","5231616":"Radon","5206528":"Francium","5231104":"Radium","5188096":"Actinium","5242880":"Thorium","5230592":"Protactinium","5245440":"Uranium","5221888":"Neptunium","5228032":"Plutonium","5189120":"Americium","5201408":"Curium","5192192":"Berkelium","5196288":"Californium","5203456":"Einsteinium","5204992":"Fermium","5218816":"Mendelevium","5224448":"Nobelium","5214720":"Lawrencium","5234688":"Rutherfordium","5202432":"Dubnium","5236224":"Seaborgium","5193728":"Bohrium","5209600":"Hassium","5218304":"Meitnerium","5201920":"Darmstadtium","5233152":"Roentgenium","5200384":"Copernicium","5222912":"Nihonium","5205504":"Flerovium","5220352":"Moscovium","5216256":"Livermorium","5241344":"Tennessine","5224960":"Oganesson","5164032":"Compound Creator","5164033":"Compound Creator","5164034":"Compound Creator","5164035":"Compound Creator","5199872":"Element Constructor","5199873":"Element Constructor","5199874":"Element Constructor","5199875":"Element Constructor","5286400":"Lab Table","5286401":"Lab Table","5286402":"Lab Table","5286403":"Lab Table","5296640":"Material Reducer","5296641":"Material Reducer","5296642":"Material Reducer","5296643":"Material Reducer","5156352":"Heat Block","5153280":"Brown Mushroom Block","5153281":"Brown Mushroom Block","5153282":"Brown Mushroom Block","5153283":"Brown Mushroom Block","5153284":"Brown Mushroom Block","5153285":"Brown Mushroom Block","5153286":"Brown Mushroom Block","5153287":"Brown Mushroom Block","5153288":"Brown Mushroom Block","5153289":"Brown Mushroom Block","5153290":"Brown Mushroom Block","5340160":"Red Mushroom Block","5340161":"Red Mushroom Block","5340162":"Red Mushroom Block","5340163":"Red Mushroom Block","5340164":"Red Mushroom Block","5340165":"Red Mushroom Block","5340166":"Red Mushroom Block","5340167":"Red Mushroom Block","5340168":"Red Mushroom Block","5340169":"Red Mushroom Block","5340170":"Red Mushroom Block","5303296":"Mushroom Stem","5128704":"All Sided Mushroom Stem","5165568":"Coral","5165569":"Coral","5165570":"Coral","5165571":"Coral","5165572":"Coral","5165576":"Coral","5165577":"Coral","5165578":"Coral","5165579":"Coral","5165580":"Coral","5166592":"Coral Fan","5166593":"Coral Fan","5166594":"Coral Fan","5166595":"Coral Fan","5166596":"Coral Fan","5166600":"Coral Fan","5166601":"Coral Fan","5166602":"Coral Fan","5166603":"Coral Fan","5166604":"Coral Fan","5166608":"Coral Fan","5166609":"Coral Fan","5166610":"Coral Fan","5166611":"Coral Fan","5166612":"Coral Fan","5166616":"Coral Fan","5166617":"Coral Fan","5166618":"Coral Fan","5166619":"Coral Fan","5166620":"Coral Fan","5391360":"Wall Coral Fan","5391361":"Wall Coral Fan","5391362":"Wall Coral Fan","5391363":"Wall Coral Fan","5391364":"Wall Coral Fan","5391368":"Wall Coral Fan","5391369":"Wall Coral Fan","5391370":"Wall Coral Fan","5391371":"Wall Coral Fan","5391372":"Wall Coral Fan","5391376":"Wall Coral Fan","5391377":"Wall Coral Fan","5391378":"Wall Coral Fan","5391379":"Wall Coral Fan","5391380":"Wall Coral Fan","5391384":"Wall Coral Fan","5391385":"Wall Coral Fan","5391386":"Wall Coral Fan","5391387":"Wall Coral Fan","5391388":"Wall Coral Fan","5391392":"Wall Coral Fan","5391393":"Wall Coral Fan","5391394":"Wall Coral Fan","5391395":"Wall Coral Fan","5391396":"Wall Coral Fan","5391400":"Wall Coral Fan","5391401":"Wall Coral Fan","5391402":"Wall Coral Fan","5391403":"Wall Coral Fan","5391404":"Wall Coral Fan","5391408":"Wall Coral Fan","5391409":"Wall Coral Fan","5391410":"Wall Coral Fan","5391411":"Wall Coral Fan","5391412":"Wall Coral Fan","5391416":"Wall Coral Fan","5391417":"Wall Coral Fan","5391418":"Wall Coral Fan","5391419":"Wall Coral Fan","5391420":"Wall Coral Fan","5407232":"Light Block","5407233":"Light Block","5407234":"Light Block","5407235":"Light Block","5407236":"Light Block","5407237":"Light Block","5407238":"Light Block","5407239":"Light Block","5407240":"Light Block","5407241":"Light Block","5407242":"Light Block","5407243":"Light Block","5407244":"Light Block","5407245":"Light Block","5407246":"Light Block","5407247":"Light Block","5445120":"Honeycomb Block","5396992":"Ancient Debris","5397504":"Basalt","5397505":"Basalt","5397506":"Basalt","5398016":"Polished Basalt","5398017":"Polished Basalt","5398018":"Polished Basalt","5398528":"Smooth Basalt","5399040":"Blackstone","5399552":"Blackstone Slab","5399553":"Blackstone Slab","5399554":"Blackstone Slab","5400064":"Blackstone Stairs","5400065":"Blackstone Stairs","5400066":"Blackstone Stairs","5400067":"Blackstone Stairs","5400068":"Blackstone Stairs","5400069":"Blackstone Stairs","5400070":"Blackstone Stairs","5400071":"Blackstone Stairs","5400576":"Blackstone Wall","5400577":"Blackstone Wall","5400578":"Blackstone Wall","5400580":"Blackstone Wall","5400581":"Blackstone Wall","5400582":"Blackstone Wall","5400584":"Blackstone Wall","5400585":"Blackstone Wall","5400586":"Blackstone Wall","5400592":"Blackstone Wall","5400593":"Blackstone Wall","5400594":"Blackstone Wall","5400596":"Blackstone Wall","5400597":"Blackstone Wall","5400598":"Blackstone Wall","5400600":"Blackstone Wall","5400601":"Blackstone Wall","5400602":"Blackstone Wall","5400608":"Blackstone Wall","5400609":"Blackstone Wall","5400610":"Blackstone Wall","5400612":"Blackstone Wall","5400613":"Blackstone Wall","5400614":"Blackstone Wall","5400616":"Blackstone Wall","5400617":"Blackstone Wall","5400618":"Blackstone Wall","5400640":"Blackstone Wall","5400641":"Blackstone Wall","5400642":"Blackstone Wall","5400644":"Blackstone Wall","5400645":"Blackstone Wall","5400646":"Blackstone Wall","5400648":"Blackstone Wall","5400649":"Blackstone Wall","5400650":"Blackstone Wall","5400656":"Blackstone Wall","5400657":"Blackstone Wall","5400658":"Blackstone Wall","5400660":"Blackstone Wall","5400661":"Blackstone Wall","5400662":"Blackstone Wall","5400664":"Blackstone Wall","5400665":"Blackstone Wall","5400666":"Blackstone Wall","5400672":"Blackstone Wall","5400673":"Blackstone Wall","5400674":"Blackstone Wall","5400676":"Blackstone Wall","5400677":"Blackstone Wall","5400678":"Blackstone Wall","5400680":"Blackstone Wall","5400681":"Blackstone Wall","5400682":"Blackstone Wall","5400704":"Blackstone Wall","5400705":"Blackstone Wall","5400706":"Blackstone Wall","5400708":"Blackstone Wall","5400709":"Blackstone Wall","5400710":"Blackstone Wall","5400712":"Blackstone Wall","5400713":"Blackstone Wall","5400714":"Blackstone Wall","5400720":"Blackstone Wall","5400721":"Blackstone Wall","5400722":"Blackstone Wall","5400724":"Blackstone Wall","5400725":"Blackstone Wall","5400726":"Blackstone Wall","5400728":"Blackstone Wall","5400729":"Blackstone Wall","5400730":"Blackstone Wall","5400736":"Blackstone Wall","5400737":"Blackstone Wall","5400738":"Blackstone Wall","5400740":"Blackstone Wall","5400741":"Blackstone Wall","5400742":"Blackstone Wall","5400744":"Blackstone Wall","5400745":"Blackstone Wall","5400746":"Blackstone Wall","5400832":"Blackstone Wall","5400833":"Blackstone Wall","5400834":"Blackstone Wall","5400836":"Blackstone Wall","5400837":"Blackstone Wall","5400838":"Blackstone Wall","5400840":"Blackstone Wall","5400841":"Blackstone Wall","5400842":"Blackstone Wall","5400848":"Blackstone Wall","5400849":"Blackstone Wall","5400850":"Blackstone Wall","5400852":"Blackstone Wall","5400853":"Blackstone Wall","5400854":"Blackstone Wall","5400856":"Blackstone Wall","5400857":"Blackstone Wall","5400858":"Blackstone Wall","5400864":"Blackstone Wall","5400865":"Blackstone Wall","5400866":"Blackstone Wall","5400868":"Blackstone Wall","5400869":"Blackstone Wall","5400870":"Blackstone Wall","5400872":"Blackstone Wall","5400873":"Blackstone Wall","5400874":"Blackstone Wall","5400896":"Blackstone Wall","5400897":"Blackstone Wall","5400898":"Blackstone Wall","5400900":"Blackstone Wall","5400901":"Blackstone Wall","5400902":"Blackstone Wall","5400904":"Blackstone Wall","5400905":"Blackstone Wall","5400906":"Blackstone Wall","5400912":"Blackstone Wall","5400913":"Blackstone Wall","5400914":"Blackstone Wall","5400916":"Blackstone Wall","5400917":"Blackstone Wall","5400918":"Blackstone Wall","5400920":"Blackstone Wall","5400921":"Blackstone Wall","5400922":"Blackstone Wall","5400928":"Blackstone Wall","5400929":"Blackstone Wall","5400930":"Blackstone Wall","5400932":"Blackstone Wall","5400933":"Blackstone Wall","5400934":"Blackstone Wall","5400936":"Blackstone Wall","5400937":"Blackstone Wall","5400938":"Blackstone Wall","5400960":"Blackstone Wall","5400961":"Blackstone Wall","5400962":"Blackstone Wall","5400964":"Blackstone Wall","5400965":"Blackstone Wall","5400966":"Blackstone Wall","5400968":"Blackstone Wall","5400969":"Blackstone Wall","5400970":"Blackstone Wall","5400976":"Blackstone Wall","5400977":"Blackstone Wall","5400978":"Blackstone Wall","5400980":"Blackstone Wall","5400981":"Blackstone Wall","5400982":"Blackstone Wall","5400984":"Blackstone Wall","5400985":"Blackstone Wall","5400986":"Blackstone Wall","5400992":"Blackstone Wall","5400993":"Blackstone Wall","5400994":"Blackstone Wall","5400996":"Blackstone Wall","5400997":"Blackstone Wall","5400998":"Blackstone Wall","5401000":"Blackstone Wall","5401001":"Blackstone Wall","5401002":"Blackstone Wall","5401088":"Polished Blackstone","5401600":"Polished Blackstone Button","5401601":"Polished Blackstone Button","5401602":"Polished Blackstone Button","5401603":"Polished Blackstone Button","5401604":"Polished Blackstone Button","5401605":"Polished Blackstone Button","5401608":"Polished Blackstone Button","5401609":"Polished Blackstone Button","5401610":"Polished Blackstone Button","5401611":"Polished Blackstone Button","5401612":"Polished Blackstone Button","5401613":"Polished Blackstone Button","5402112":"Polished Blackstone Pressure Plate","5402113":"Polished Blackstone Pressure Plate","5402624":"Polished Blackstone Slab","5402625":"Polished Blackstone Slab","5402626":"Polished Blackstone Slab","5403136":"Polished Blackstone Stairs","5403137":"Polished Blackstone Stairs","5403138":"Polished Blackstone Stairs","5403139":"Polished Blackstone Stairs","5403140":"Polished Blackstone Stairs","5403141":"Polished Blackstone Stairs","5403142":"Polished Blackstone Stairs","5403143":"Polished Blackstone Stairs","5403648":"Polished Blackstone Wall","5403649":"Polished Blackstone Wall","5403650":"Polished Blackstone Wall","5403652":"Polished Blackstone Wall","5403653":"Polished Blackstone Wall","5403654":"Polished Blackstone Wall","5403656":"Polished Blackstone Wall","5403657":"Polished Blackstone Wall","5403658":"Polished Blackstone Wall","5403664":"Polished Blackstone Wall","5403665":"Polished Blackstone Wall","5403666":"Polished Blackstone Wall","5403668":"Polished Blackstone Wall","5403669":"Polished Blackstone Wall","5403670":"Polished Blackstone Wall","5403672":"Polished Blackstone Wall","5403673":"Polished Blackstone Wall","5403674":"Polished Blackstone Wall","5403680":"Polished Blackstone Wall","5403681":"Polished Blackstone Wall","5403682":"Polished Blackstone Wall","5403684":"Polished Blackstone Wall","5403685":"Polished Blackstone Wall","5403686":"Polished Blackstone Wall","5403688":"Polished Blackstone Wall","5403689":"Polished Blackstone Wall","5403690":"Polished Blackstone Wall","5403712":"Polished Blackstone Wall","5403713":"Polished Blackstone Wall","5403714":"Polished Blackstone Wall","5403716":"Polished Blackstone Wall","5403717":"Polished Blackstone Wall","5403718":"Polished Blackstone Wall","5403720":"Polished Blackstone Wall","5403721":"Polished Blackstone Wall","5403722":"Polished Blackstone Wall","5403728":"Polished Blackstone Wall","5403729":"Polished Blackstone Wall","5403730":"Polished Blackstone Wall","5403732":"Polished Blackstone Wall","5403733":"Polished Blackstone Wall","5403734":"Polished Blackstone Wall","5403736":"Polished Blackstone Wall","5403737":"Polished Blackstone Wall","5403738":"Polished Blackstone Wall","5403744":"Polished Blackstone Wall","5403745":"Polished Blackstone Wall","5403746":"Polished Blackstone Wall","5403748":"Polished Blackstone Wall","5403749":"Polished Blackstone Wall","5403750":"Polished Blackstone Wall","5403752":"Polished Blackstone Wall","5403753":"Polished Blackstone Wall","5403754":"Polished Blackstone Wall","5403776":"Polished Blackstone Wall","5403777":"Polished Blackstone Wall","5403778":"Polished Blackstone Wall","5403780":"Polished Blackstone Wall","5403781":"Polished Blackstone Wall","5403782":"Polished Blackstone Wall","5403784":"Polished Blackstone Wall","5403785":"Polished Blackstone Wall","5403786":"Polished Blackstone Wall","5403792":"Polished Blackstone Wall","5403793":"Polished Blackstone Wall","5403794":"Polished Blackstone Wall","5403796":"Polished Blackstone Wall","5403797":"Polished Blackstone Wall","5403798":"Polished Blackstone Wall","5403800":"Polished Blackstone Wall","5403801":"Polished Blackstone Wall","5403802":"Polished Blackstone Wall","5403808":"Polished Blackstone Wall","5403809":"Polished Blackstone Wall","5403810":"Polished Blackstone Wall","5403812":"Polished Blackstone Wall","5403813":"Polished Blackstone Wall","5403814":"Polished Blackstone Wall","5403816":"Polished Blackstone Wall","5403817":"Polished Blackstone Wall","5403818":"Polished Blackstone Wall","5403904":"Polished Blackstone Wall","5403905":"Polished Blackstone Wall","5403906":"Polished Blackstone Wall","5403908":"Polished Blackstone Wall","5403909":"Polished Blackstone Wall","5403910":"Polished Blackstone Wall","5403912":"Polished Blackstone Wall","5403913":"Polished Blackstone Wall","5403914":"Polished Blackstone Wall","5403920":"Polished Blackstone Wall","5403921":"Polished Blackstone Wall","5403922":"Polished Blackstone Wall","5403924":"Polished Blackstone Wall","5403925":"Polished Blackstone Wall","5403926":"Polished Blackstone Wall","5403928":"Polished Blackstone Wall","5403929":"Polished Blackstone Wall","5403930":"Polished Blackstone Wall","5403936":"Polished Blackstone Wall","5403937":"Polished Blackstone Wall","5403938":"Polished Blackstone Wall","5403940":"Polished Blackstone Wall","5403941":"Polished Blackstone Wall","5403942":"Polished Blackstone Wall","5403944":"Polished Blackstone Wall","5403945":"Polished Blackstone Wall","5403946":"Polished Blackstone Wall","5403968":"Polished Blackstone Wall","5403969":"Polished Blackstone Wall","5403970":"Polished Blackstone Wall","5403972":"Polished Blackstone Wall","5403973":"Polished Blackstone Wall","5403974":"Polished Blackstone Wall","5403976":"Polished Blackstone Wall","5403977":"Polished Blackstone Wall","5403978":"Polished Blackstone Wall","5403984":"Polished Blackstone Wall","5403985":"Polished Blackstone Wall","5403986":"Polished Blackstone Wall","5403988":"Polished Blackstone Wall","5403989":"Polished Blackstone Wall","5403990":"Polished Blackstone Wall","5403992":"Polished Blackstone Wall","5403993":"Polished Blackstone Wall","5403994":"Polished Blackstone Wall","5404000":"Polished Blackstone Wall","5404001":"Polished Blackstone Wall","5404002":"Polished Blackstone Wall","5404004":"Polished Blackstone Wall","5404005":"Polished Blackstone Wall","5404006":"Polished Blackstone Wall","5404008":"Polished Blackstone Wall","5404009":"Polished Blackstone Wall","5404010":"Polished Blackstone Wall","5404032":"Polished Blackstone Wall","5404033":"Polished Blackstone Wall","5404034":"Polished Blackstone Wall","5404036":"Polished Blackstone Wall","5404037":"Polished Blackstone Wall","5404038":"Polished Blackstone Wall","5404040":"Polished Blackstone Wall","5404041":"Polished Blackstone Wall","5404042":"Polished Blackstone Wall","5404048":"Polished Blackstone Wall","5404049":"Polished Blackstone Wall","5404050":"Polished Blackstone Wall","5404052":"Polished Blackstone Wall","5404053":"Polished Blackstone Wall","5404054":"Polished Blackstone Wall","5404056":"Polished Blackstone Wall","5404057":"Polished Blackstone Wall","5404058":"Polished Blackstone Wall","5404064":"Polished Blackstone Wall","5404065":"Polished Blackstone Wall","5404066":"Polished Blackstone Wall","5404068":"Polished Blackstone Wall","5404069":"Polished Blackstone Wall","5404070":"Polished Blackstone Wall","5404072":"Polished Blackstone Wall","5404073":"Polished Blackstone Wall","5404074":"Polished Blackstone Wall","5404160":"Chiseled Polished Blackstone","5404672":"Polished Blackstone Bricks","5405184":"Polished Blackstone Brick Slab","5405185":"Polished Blackstone Brick Slab","5405186":"Polished Blackstone Brick Slab","5405696":"Polished Blackstone Brick Stairs","5405697":"Polished Blackstone Brick Stairs","5405698":"Polished Blackstone Brick Stairs","5405699":"Polished Blackstone Brick Stairs","5405700":"Polished Blackstone Brick Stairs","5405701":"Polished Blackstone Brick Stairs","5405702":"Polished Blackstone Brick Stairs","5405703":"Polished Blackstone Brick Stairs","5406208":"Polished Blackstone Brick Wall","5406209":"Polished Blackstone Brick Wall","5406210":"Polished Blackstone Brick Wall","5406212":"Polished Blackstone Brick Wall","5406213":"Polished Blackstone Brick Wall","5406214":"Polished Blackstone Brick Wall","5406216":"Polished Blackstone Brick Wall","5406217":"Polished Blackstone Brick Wall","5406218":"Polished Blackstone Brick Wall","5406224":"Polished Blackstone Brick Wall","5406225":"Polished Blackstone Brick Wall","5406226":"Polished Blackstone Brick Wall","5406228":"Polished Blackstone Brick Wall","5406229":"Polished Blackstone Brick Wall","5406230":"Polished Blackstone Brick Wall","5406232":"Polished Blackstone Brick Wall","5406233":"Polished Blackstone Brick Wall","5406234":"Polished Blackstone Brick Wall","5406240":"Polished Blackstone Brick Wall","5406241":"Polished Blackstone Brick Wall","5406242":"Polished Blackstone Brick Wall","5406244":"Polished Blackstone Brick Wall","5406245":"Polished Blackstone Brick Wall","5406246":"Polished Blackstone Brick Wall","5406248":"Polished Blackstone Brick Wall","5406249":"Polished Blackstone Brick Wall","5406250":"Polished Blackstone Brick Wall","5406272":"Polished Blackstone Brick Wall","5406273":"Polished Blackstone Brick Wall","5406274":"Polished Blackstone Brick Wall","5406276":"Polished Blackstone Brick Wall","5406277":"Polished Blackstone Brick Wall","5406278":"Polished Blackstone Brick Wall","5406280":"Polished Blackstone Brick Wall","5406281":"Polished Blackstone Brick Wall","5406282":"Polished Blackstone Brick Wall","5406288":"Polished Blackstone Brick Wall","5406289":"Polished Blackstone Brick Wall","5406290":"Polished Blackstone Brick Wall","5406292":"Polished Blackstone Brick Wall","5406293":"Polished Blackstone Brick Wall","5406294":"Polished Blackstone Brick Wall","5406296":"Polished Blackstone Brick Wall","5406297":"Polished Blackstone Brick Wall","5406298":"Polished Blackstone Brick Wall","5406304":"Polished Blackstone Brick Wall","5406305":"Polished Blackstone Brick Wall","5406306":"Polished Blackstone Brick Wall","5406308":"Polished Blackstone Brick Wall","5406309":"Polished Blackstone Brick Wall","5406310":"Polished Blackstone Brick Wall","5406312":"Polished Blackstone Brick Wall","5406313":"Polished Blackstone Brick Wall","5406314":"Polished Blackstone Brick Wall","5406336":"Polished Blackstone Brick Wall","5406337":"Polished Blackstone Brick Wall","5406338":"Polished Blackstone Brick Wall","5406340":"Polished Blackstone Brick Wall","5406341":"Polished Blackstone Brick Wall","5406342":"Polished Blackstone Brick Wall","5406344":"Polished Blackstone Brick Wall","5406345":"Polished Blackstone Brick Wall","5406346":"Polished Blackstone Brick Wall","5406352":"Polished Blackstone Brick Wall","5406353":"Polished Blackstone Brick Wall","5406354":"Polished Blackstone Brick Wall","5406356":"Polished Blackstone Brick Wall","5406357":"Polished Blackstone Brick Wall","5406358":"Polished Blackstone Brick Wall","5406360":"Polished Blackstone Brick Wall","5406361":"Polished Blackstone Brick Wall","5406362":"Polished Blackstone Brick Wall","5406368":"Polished Blackstone Brick Wall","5406369":"Polished Blackstone Brick Wall","5406370":"Polished Blackstone Brick Wall","5406372":"Polished Blackstone Brick Wall","5406373":"Polished Blackstone Brick Wall","5406374":"Polished Blackstone Brick Wall","5406376":"Polished Blackstone Brick Wall","5406377":"Polished Blackstone Brick Wall","5406378":"Polished Blackstone Brick Wall","5406464":"Polished Blackstone Brick Wall","5406465":"Polished Blackstone Brick Wall","5406466":"Polished Blackstone Brick Wall","5406468":"Polished Blackstone Brick Wall","5406469":"Polished Blackstone Brick Wall","5406470":"Polished Blackstone Brick Wall","5406472":"Polished Blackstone Brick Wall","5406473":"Polished Blackstone Brick Wall","5406474":"Polished Blackstone Brick Wall","5406480":"Polished Blackstone Brick Wall","5406481":"Polished Blackstone Brick Wall","5406482":"Polished Blackstone Brick Wall","5406484":"Polished Blackstone Brick Wall","5406485":"Polished Blackstone Brick Wall","5406486":"Polished Blackstone Brick Wall","5406488":"Polished Blackstone Brick Wall","5406489":"Polished Blackstone Brick Wall","5406490":"Polished Blackstone Brick Wall","5406496":"Polished Blackstone Brick Wall","5406497":"Polished Blackstone Brick Wall","5406498":"Polished Blackstone Brick Wall","5406500":"Polished Blackstone Brick Wall","5406501":"Polished Blackstone Brick Wall","5406502":"Polished Blackstone Brick Wall","5406504":"Polished Blackstone Brick Wall","5406505":"Polished Blackstone Brick Wall","5406506":"Polished Blackstone Brick Wall","5406528":"Polished Blackstone Brick Wall","5406529":"Polished Blackstone Brick Wall","5406530":"Polished Blackstone Brick Wall","5406532":"Polished Blackstone Brick Wall","5406533":"Polished Blackstone Brick Wall","5406534":"Polished Blackstone Brick Wall","5406536":"Polished Blackstone Brick Wall","5406537":"Polished Blackstone Brick Wall","5406538":"Polished Blackstone Brick Wall","5406544":"Polished Blackstone Brick Wall","5406545":"Polished Blackstone Brick Wall","5406546":"Polished Blackstone Brick Wall","5406548":"Polished Blackstone Brick Wall","5406549":"Polished Blackstone Brick Wall","5406550":"Polished Blackstone Brick Wall","5406552":"Polished Blackstone Brick Wall","5406553":"Polished Blackstone Brick Wall","5406554":"Polished Blackstone Brick Wall","5406560":"Polished Blackstone Brick Wall","5406561":"Polished Blackstone Brick Wall","5406562":"Polished Blackstone Brick Wall","5406564":"Polished Blackstone Brick Wall","5406565":"Polished Blackstone Brick Wall","5406566":"Polished Blackstone Brick Wall","5406568":"Polished Blackstone Brick Wall","5406569":"Polished Blackstone Brick Wall","5406570":"Polished Blackstone Brick Wall","5406592":"Polished Blackstone Brick Wall","5406593":"Polished Blackstone Brick Wall","5406594":"Polished Blackstone Brick Wall","5406596":"Polished Blackstone Brick Wall","5406597":"Polished Blackstone Brick Wall","5406598":"Polished Blackstone Brick Wall","5406600":"Polished Blackstone Brick Wall","5406601":"Polished Blackstone Brick Wall","5406602":"Polished Blackstone Brick Wall","5406608":"Polished Blackstone Brick Wall","5406609":"Polished Blackstone Brick Wall","5406610":"Polished Blackstone Brick Wall","5406612":"Polished Blackstone Brick Wall","5406613":"Polished Blackstone Brick Wall","5406614":"Polished Blackstone Brick Wall","5406616":"Polished Blackstone Brick Wall","5406617":"Polished Blackstone Brick Wall","5406618":"Polished Blackstone Brick Wall","5406624":"Polished Blackstone Brick Wall","5406625":"Polished Blackstone Brick Wall","5406626":"Polished Blackstone Brick Wall","5406628":"Polished Blackstone Brick Wall","5406629":"Polished Blackstone Brick Wall","5406630":"Polished Blackstone Brick Wall","5406632":"Polished Blackstone Brick Wall","5406633":"Polished Blackstone Brick Wall","5406634":"Polished Blackstone Brick Wall","5406720":"Cracked Polished Blackstone Bricks","5422081":"Soul Torch","5422082":"Soul Torch","5422083":"Soul Torch","5422084":"Soul Torch","5422085":"Soul Torch","5423616":"Soul Fire","5423104":"Soul Soil","5424128":"Shroomlight","5396480":"Amethyst","5409280":"Calcite","5421568":"Tuff","5407744":"Raw Copper Block","5408256":"Raw Gold Block","5408768":"Raw Iron Block","5409792":"Deepslate","5409793":"Deepslate","5409794":"Deepslate","5420032":"Chiseled Deepslate","5410304":"Deepslate Bricks","5410816":"Deepslate Brick Slab","5410817":"Deepslate Brick Slab","5410818":"Deepslate Brick Slab","5411328":"Deepslate Brick Stairs","5411329":"Deepslate Brick Stairs","5411330":"Deepslate Brick Stairs","5411331":"Deepslate Brick Stairs","5411332":"Deepslate Brick Stairs","5411333":"Deepslate Brick Stairs","5411334":"Deepslate Brick Stairs","5411335":"Deepslate Brick Stairs","5411840":"Deepslate Brick Wall","5411841":"Deepslate Brick Wall","5411842":"Deepslate Brick Wall","5411844":"Deepslate Brick Wall","5411845":"Deepslate Brick Wall","5411846":"Deepslate Brick Wall","5411848":"Deepslate Brick Wall","5411849":"Deepslate Brick Wall","5411850":"Deepslate Brick Wall","5411856":"Deepslate Brick Wall","5411857":"Deepslate Brick Wall","5411858":"Deepslate Brick Wall","5411860":"Deepslate Brick Wall","5411861":"Deepslate Brick Wall","5411862":"Deepslate Brick Wall","5411864":"Deepslate Brick Wall","5411865":"Deepslate Brick Wall","5411866":"Deepslate Brick Wall","5411872":"Deepslate Brick Wall","5411873":"Deepslate Brick Wall","5411874":"Deepslate Brick Wall","5411876":"Deepslate Brick Wall","5411877":"Deepslate Brick Wall","5411878":"Deepslate Brick Wall","5411880":"Deepslate Brick Wall","5411881":"Deepslate Brick Wall","5411882":"Deepslate Brick Wall","5411904":"Deepslate Brick Wall","5411905":"Deepslate Brick Wall","5411906":"Deepslate Brick Wall","5411908":"Deepslate Brick Wall","5411909":"Deepslate Brick Wall","5411910":"Deepslate Brick Wall","5411912":"Deepslate Brick Wall","5411913":"Deepslate Brick Wall","5411914":"Deepslate Brick Wall","5411920":"Deepslate Brick Wall","5411921":"Deepslate Brick Wall","5411922":"Deepslate Brick Wall","5411924":"Deepslate Brick Wall","5411925":"Deepslate Brick Wall","5411926":"Deepslate Brick Wall","5411928":"Deepslate Brick Wall","5411929":"Deepslate Brick Wall","5411930":"Deepslate Brick Wall","5411936":"Deepslate Brick Wall","5411937":"Deepslate Brick Wall","5411938":"Deepslate Brick Wall","5411940":"Deepslate Brick Wall","5411941":"Deepslate Brick Wall","5411942":"Deepslate Brick Wall","5411944":"Deepslate Brick Wall","5411945":"Deepslate Brick Wall","5411946":"Deepslate Brick Wall","5411968":"Deepslate Brick Wall","5411969":"Deepslate Brick Wall","5411970":"Deepslate Brick Wall","5411972":"Deepslate Brick Wall","5411973":"Deepslate Brick Wall","5411974":"Deepslate Brick Wall","5411976":"Deepslate Brick Wall","5411977":"Deepslate Brick Wall","5411978":"Deepslate Brick Wall","5411984":"Deepslate Brick Wall","5411985":"Deepslate Brick Wall","5411986":"Deepslate Brick Wall","5411988":"Deepslate Brick Wall","5411989":"Deepslate Brick Wall","5411990":"Deepslate Brick Wall","5411992":"Deepslate Brick Wall","5411993":"Deepslate Brick Wall","5411994":"Deepslate Brick Wall","5412000":"Deepslate Brick Wall","5412001":"Deepslate Brick Wall","5412002":"Deepslate Brick Wall","5412004":"Deepslate Brick Wall","5412005":"Deepslate Brick Wall","5412006":"Deepslate Brick Wall","5412008":"Deepslate Brick Wall","5412009":"Deepslate Brick Wall","5412010":"Deepslate Brick Wall","5412096":"Deepslate Brick Wall","5412097":"Deepslate Brick Wall","5412098":"Deepslate Brick Wall","5412100":"Deepslate Brick Wall","5412101":"Deepslate Brick Wall","5412102":"Deepslate Brick Wall","5412104":"Deepslate Brick Wall","5412105":"Deepslate Brick Wall","5412106":"Deepslate Brick Wall","5412112":"Deepslate Brick Wall","5412113":"Deepslate Brick Wall","5412114":"Deepslate Brick Wall","5412116":"Deepslate Brick Wall","5412117":"Deepslate Brick Wall","5412118":"Deepslate Brick Wall","5412120":"Deepslate Brick Wall","5412121":"Deepslate Brick Wall","5412122":"Deepslate Brick Wall","5412128":"Deepslate Brick Wall","5412129":"Deepslate Brick Wall","5412130":"Deepslate Brick Wall","5412132":"Deepslate Brick Wall","5412133":"Deepslate Brick Wall","5412134":"Deepslate Brick Wall","5412136":"Deepslate Brick Wall","5412137":"Deepslate Brick Wall","5412138":"Deepslate Brick Wall","5412160":"Deepslate Brick Wall","5412161":"Deepslate Brick Wall","5412162":"Deepslate Brick Wall","5412164":"Deepslate Brick Wall","5412165":"Deepslate Brick Wall","5412166":"Deepslate Brick Wall","5412168":"Deepslate Brick Wall","5412169":"Deepslate Brick Wall","5412170":"Deepslate Brick Wall","5412176":"Deepslate Brick Wall","5412177":"Deepslate Brick Wall","5412178":"Deepslate Brick Wall","5412180":"Deepslate Brick Wall","5412181":"Deepslate Brick Wall","5412182":"Deepslate Brick Wall","5412184":"Deepslate Brick Wall","5412185":"Deepslate Brick Wall","5412186":"Deepslate Brick Wall","5412192":"Deepslate Brick Wall","5412193":"Deepslate Brick Wall","5412194":"Deepslate Brick Wall","5412196":"Deepslate Brick Wall","5412197":"Deepslate Brick Wall","5412198":"Deepslate Brick Wall","5412200":"Deepslate Brick Wall","5412201":"Deepslate Brick Wall","5412202":"Deepslate Brick Wall","5412224":"Deepslate Brick Wall","5412225":"Deepslate Brick Wall","5412226":"Deepslate Brick Wall","5412228":"Deepslate Brick Wall","5412229":"Deepslate Brick Wall","5412230":"Deepslate Brick Wall","5412232":"Deepslate Brick Wall","5412233":"Deepslate Brick Wall","5412234":"Deepslate Brick Wall","5412240":"Deepslate Brick Wall","5412241":"Deepslate Brick Wall","5412242":"Deepslate Brick Wall","5412244":"Deepslate Brick Wall","5412245":"Deepslate Brick Wall","5412246":"Deepslate Brick Wall","5412248":"Deepslate Brick Wall","5412249":"Deepslate Brick Wall","5412250":"Deepslate Brick Wall","5412256":"Deepslate Brick Wall","5412257":"Deepslate Brick Wall","5412258":"Deepslate Brick Wall","5412260":"Deepslate Brick Wall","5412261":"Deepslate Brick Wall","5412262":"Deepslate Brick Wall","5412264":"Deepslate Brick Wall","5412265":"Deepslate Brick Wall","5412266":"Deepslate Brick Wall","5412352":"Cracked Deepslate Bricks","5412864":"Deepslate Tiles","5413376":"Deepslate Tile Slab","5413377":"Deepslate Tile Slab","5413378":"Deepslate Tile Slab","5413888":"Deepslate Tile Stairs","5413889":"Deepslate Tile Stairs","5413890":"Deepslate Tile Stairs","5413891":"Deepslate Tile Stairs","5413892":"Deepslate Tile Stairs","5413893":"Deepslate Tile Stairs","5413894":"Deepslate Tile Stairs","5413895":"Deepslate Tile Stairs","5414400":"Deepslate Tile Wall","5414401":"Deepslate Tile Wall","5414402":"Deepslate Tile Wall","5414404":"Deepslate Tile Wall","5414405":"Deepslate Tile Wall","5414406":"Deepslate Tile Wall","5414408":"Deepslate Tile Wall","5414409":"Deepslate Tile Wall","5414410":"Deepslate Tile Wall","5414416":"Deepslate Tile Wall","5414417":"Deepslate Tile Wall","5414418":"Deepslate Tile Wall","5414420":"Deepslate Tile Wall","5414421":"Deepslate Tile Wall","5414422":"Deepslate Tile Wall","5414424":"Deepslate Tile Wall","5414425":"Deepslate Tile Wall","5414426":"Deepslate Tile Wall","5414432":"Deepslate Tile Wall","5414433":"Deepslate Tile Wall","5414434":"Deepslate Tile Wall","5414436":"Deepslate Tile Wall","5414437":"Deepslate Tile Wall","5414438":"Deepslate Tile Wall","5414440":"Deepslate Tile Wall","5414441":"Deepslate Tile Wall","5414442":"Deepslate Tile Wall","5414464":"Deepslate Tile Wall","5414465":"Deepslate Tile Wall","5414466":"Deepslate Tile Wall","5414468":"Deepslate Tile Wall","5414469":"Deepslate Tile Wall","5414470":"Deepslate Tile Wall","5414472":"Deepslate Tile Wall","5414473":"Deepslate Tile Wall","5414474":"Deepslate Tile Wall","5414480":"Deepslate Tile Wall","5414481":"Deepslate Tile Wall","5414482":"Deepslate Tile Wall","5414484":"Deepslate Tile Wall","5414485":"Deepslate Tile Wall","5414486":"Deepslate Tile Wall","5414488":"Deepslate Tile Wall","5414489":"Deepslate Tile Wall","5414490":"Deepslate Tile Wall","5414496":"Deepslate Tile Wall","5414497":"Deepslate Tile Wall","5414498":"Deepslate Tile Wall","5414500":"Deepslate Tile Wall","5414501":"Deepslate Tile Wall","5414502":"Deepslate Tile Wall","5414504":"Deepslate Tile Wall","5414505":"Deepslate Tile Wall","5414506":"Deepslate Tile Wall","5414528":"Deepslate Tile Wall","5414529":"Deepslate Tile Wall","5414530":"Deepslate Tile Wall","5414532":"Deepslate Tile Wall","5414533":"Deepslate Tile Wall","5414534":"Deepslate Tile Wall","5414536":"Deepslate Tile Wall","5414537":"Deepslate Tile Wall","5414538":"Deepslate Tile Wall","5414544":"Deepslate Tile Wall","5414545":"Deepslate Tile Wall","5414546":"Deepslate Tile Wall","5414548":"Deepslate Tile Wall","5414549":"Deepslate Tile Wall","5414550":"Deepslate Tile Wall","5414552":"Deepslate Tile Wall","5414553":"Deepslate Tile Wall","5414554":"Deepslate Tile Wall","5414560":"Deepslate Tile Wall","5414561":"Deepslate Tile Wall","5414562":"Deepslate Tile Wall","5414564":"Deepslate Tile Wall","5414565":"Deepslate Tile Wall","5414566":"Deepslate Tile Wall","5414568":"Deepslate Tile Wall","5414569":"Deepslate Tile Wall","5414570":"Deepslate Tile Wall","5414656":"Deepslate Tile Wall","5414657":"Deepslate Tile Wall","5414658":"Deepslate Tile Wall","5414660":"Deepslate Tile Wall","5414661":"Deepslate Tile Wall","5414662":"Deepslate Tile Wall","5414664":"Deepslate Tile Wall","5414665":"Deepslate Tile Wall","5414666":"Deepslate Tile Wall","5414672":"Deepslate Tile Wall","5414673":"Deepslate Tile Wall","5414674":"Deepslate Tile Wall","5414676":"Deepslate Tile Wall","5414677":"Deepslate Tile Wall","5414678":"Deepslate Tile Wall","5414680":"Deepslate Tile Wall","5414681":"Deepslate Tile Wall","5414682":"Deepslate Tile Wall","5414688":"Deepslate Tile Wall","5414689":"Deepslate Tile Wall","5414690":"Deepslate Tile Wall","5414692":"Deepslate Tile Wall","5414693":"Deepslate Tile Wall","5414694":"Deepslate Tile Wall","5414696":"Deepslate Tile Wall","5414697":"Deepslate Tile Wall","5414698":"Deepslate Tile Wall","5414720":"Deepslate Tile Wall","5414721":"Deepslate Tile Wall","5414722":"Deepslate Tile Wall","5414724":"Deepslate Tile Wall","5414725":"Deepslate Tile Wall","5414726":"Deepslate Tile Wall","5414728":"Deepslate Tile Wall","5414729":"Deepslate Tile Wall","5414730":"Deepslate Tile Wall","5414736":"Deepslate Tile Wall","5414737":"Deepslate Tile Wall","5414738":"Deepslate Tile Wall","5414740":"Deepslate Tile Wall","5414741":"Deepslate Tile Wall","5414742":"Deepslate Tile Wall","5414744":"Deepslate Tile Wall","5414745":"Deepslate Tile Wall","5414746":"Deepslate Tile Wall","5414752":"Deepslate Tile Wall","5414753":"Deepslate Tile Wall","5414754":"Deepslate Tile Wall","5414756":"Deepslate Tile Wall","5414757":"Deepslate Tile Wall","5414758":"Deepslate Tile Wall","5414760":"Deepslate Tile Wall","5414761":"Deepslate Tile Wall","5414762":"Deepslate Tile Wall","5414784":"Deepslate Tile Wall","5414785":"Deepslate Tile Wall","5414786":"Deepslate Tile Wall","5414788":"Deepslate Tile Wall","5414789":"Deepslate Tile Wall","5414790":"Deepslate Tile Wall","5414792":"Deepslate Tile Wall","5414793":"Deepslate Tile Wall","5414794":"Deepslate Tile Wall","5414800":"Deepslate Tile Wall","5414801":"Deepslate Tile Wall","5414802":"Deepslate Tile Wall","5414804":"Deepslate Tile Wall","5414805":"Deepslate Tile Wall","5414806":"Deepslate Tile Wall","5414808":"Deepslate Tile Wall","5414809":"Deepslate Tile Wall","5414810":"Deepslate Tile Wall","5414816":"Deepslate Tile Wall","5414817":"Deepslate Tile Wall","5414818":"Deepslate Tile Wall","5414820":"Deepslate Tile Wall","5414821":"Deepslate Tile Wall","5414822":"Deepslate Tile Wall","5414824":"Deepslate Tile Wall","5414825":"Deepslate Tile Wall","5414826":"Deepslate Tile Wall","5414912":"Cracked Deepslate Tiles","5415424":"Cobbled Deepslate","5415936":"Cobbled Deepslate Slab","5415937":"Cobbled Deepslate Slab","5415938":"Cobbled Deepslate Slab","5416448":"Cobbled Deepslate Stairs","5416449":"Cobbled Deepslate Stairs","5416450":"Cobbled Deepslate Stairs","5416451":"Cobbled Deepslate Stairs","5416452":"Cobbled Deepslate Stairs","5416453":"Cobbled Deepslate Stairs","5416454":"Cobbled Deepslate Stairs","5416455":"Cobbled Deepslate Stairs","5416960":"Cobbled Deepslate Wall","5416961":"Cobbled Deepslate Wall","5416962":"Cobbled Deepslate Wall","5416964":"Cobbled Deepslate Wall","5416965":"Cobbled Deepslate Wall","5416966":"Cobbled Deepslate Wall","5416968":"Cobbled Deepslate Wall","5416969":"Cobbled Deepslate Wall","5416970":"Cobbled Deepslate Wall","5416976":"Cobbled Deepslate Wall","5416977":"Cobbled Deepslate Wall","5416978":"Cobbled Deepslate Wall","5416980":"Cobbled Deepslate Wall","5416981":"Cobbled Deepslate Wall","5416982":"Cobbled Deepslate Wall","5416984":"Cobbled Deepslate Wall","5416985":"Cobbled Deepslate Wall","5416986":"Cobbled Deepslate Wall","5416992":"Cobbled Deepslate Wall","5416993":"Cobbled Deepslate Wall","5416994":"Cobbled Deepslate Wall","5416996":"Cobbled Deepslate Wall","5416997":"Cobbled Deepslate Wall","5416998":"Cobbled Deepslate Wall","5417000":"Cobbled Deepslate Wall","5417001":"Cobbled Deepslate Wall","5417002":"Cobbled Deepslate Wall","5417024":"Cobbled Deepslate Wall","5417025":"Cobbled Deepslate Wall","5417026":"Cobbled Deepslate Wall","5417028":"Cobbled Deepslate Wall","5417029":"Cobbled Deepslate Wall","5417030":"Cobbled Deepslate Wall","5417032":"Cobbled Deepslate Wall","5417033":"Cobbled Deepslate Wall","5417034":"Cobbled Deepslate Wall","5417040":"Cobbled Deepslate Wall","5417041":"Cobbled Deepslate Wall","5417042":"Cobbled Deepslate Wall","5417044":"Cobbled Deepslate Wall","5417045":"Cobbled Deepslate Wall","5417046":"Cobbled Deepslate Wall","5417048":"Cobbled Deepslate Wall","5417049":"Cobbled Deepslate Wall","5417050":"Cobbled Deepslate Wall","5417056":"Cobbled Deepslate Wall","5417057":"Cobbled Deepslate Wall","5417058":"Cobbled Deepslate Wall","5417060":"Cobbled Deepslate Wall","5417061":"Cobbled Deepslate Wall","5417062":"Cobbled Deepslate Wall","5417064":"Cobbled Deepslate Wall","5417065":"Cobbled Deepslate Wall","5417066":"Cobbled Deepslate Wall","5417088":"Cobbled Deepslate Wall","5417089":"Cobbled Deepslate Wall","5417090":"Cobbled Deepslate Wall","5417092":"Cobbled Deepslate Wall","5417093":"Cobbled Deepslate Wall","5417094":"Cobbled Deepslate Wall","5417096":"Cobbled Deepslate Wall","5417097":"Cobbled Deepslate Wall","5417098":"Cobbled Deepslate Wall","5417104":"Cobbled Deepslate Wall","5417105":"Cobbled Deepslate Wall","5417106":"Cobbled Deepslate Wall","5417108":"Cobbled Deepslate Wall","5417109":"Cobbled Deepslate Wall","5417110":"Cobbled Deepslate Wall","5417112":"Cobbled Deepslate Wall","5417113":"Cobbled Deepslate Wall","5417114":"Cobbled Deepslate Wall","5417120":"Cobbled Deepslate Wall","5417121":"Cobbled Deepslate Wall","5417122":"Cobbled Deepslate Wall","5417124":"Cobbled Deepslate Wall","5417125":"Cobbled Deepslate Wall","5417126":"Cobbled Deepslate Wall","5417128":"Cobbled Deepslate Wall","5417129":"Cobbled Deepslate Wall","5417130":"Cobbled Deepslate Wall","5417216":"Cobbled Deepslate Wall","5417217":"Cobbled Deepslate Wall","5417218":"Cobbled Deepslate Wall","5417220":"Cobbled Deepslate Wall","5417221":"Cobbled Deepslate Wall","5417222":"Cobbled Deepslate Wall","5417224":"Cobbled Deepslate Wall","5417225":"Cobbled Deepslate Wall","5417226":"Cobbled Deepslate Wall","5417232":"Cobbled Deepslate Wall","5417233":"Cobbled Deepslate Wall","5417234":"Cobbled Deepslate Wall","5417236":"Cobbled Deepslate Wall","5417237":"Cobbled Deepslate Wall","5417238":"Cobbled Deepslate Wall","5417240":"Cobbled Deepslate Wall","5417241":"Cobbled Deepslate Wall","5417242":"Cobbled Deepslate Wall","5417248":"Cobbled Deepslate Wall","5417249":"Cobbled Deepslate Wall","5417250":"Cobbled Deepslate Wall","5417252":"Cobbled Deepslate Wall","5417253":"Cobbled Deepslate Wall","5417254":"Cobbled Deepslate Wall","5417256":"Cobbled Deepslate Wall","5417257":"Cobbled Deepslate Wall","5417258":"Cobbled Deepslate Wall","5417280":"Cobbled Deepslate Wall","5417281":"Cobbled Deepslate Wall","5417282":"Cobbled Deepslate Wall","5417284":"Cobbled Deepslate Wall","5417285":"Cobbled Deepslate Wall","5417286":"Cobbled Deepslate Wall","5417288":"Cobbled Deepslate Wall","5417289":"Cobbled Deepslate Wall","5417290":"Cobbled Deepslate Wall","5417296":"Cobbled Deepslate Wall","5417297":"Cobbled Deepslate Wall","5417298":"Cobbled Deepslate Wall","5417300":"Cobbled Deepslate Wall","5417301":"Cobbled Deepslate Wall","5417302":"Cobbled Deepslate Wall","5417304":"Cobbled Deepslate Wall","5417305":"Cobbled Deepslate Wall","5417306":"Cobbled Deepslate Wall","5417312":"Cobbled Deepslate Wall","5417313":"Cobbled Deepslate Wall","5417314":"Cobbled Deepslate Wall","5417316":"Cobbled Deepslate Wall","5417317":"Cobbled Deepslate Wall","5417318":"Cobbled Deepslate Wall","5417320":"Cobbled Deepslate Wall","5417321":"Cobbled Deepslate Wall","5417322":"Cobbled Deepslate Wall","5417344":"Cobbled Deepslate Wall","5417345":"Cobbled Deepslate Wall","5417346":"Cobbled Deepslate Wall","5417348":"Cobbled Deepslate Wall","5417349":"Cobbled Deepslate Wall","5417350":"Cobbled Deepslate Wall","5417352":"Cobbled Deepslate Wall","5417353":"Cobbled Deepslate Wall","5417354":"Cobbled Deepslate Wall","5417360":"Cobbled Deepslate Wall","5417361":"Cobbled Deepslate Wall","5417362":"Cobbled Deepslate Wall","5417364":"Cobbled Deepslate Wall","5417365":"Cobbled Deepslate Wall","5417366":"Cobbled Deepslate Wall","5417368":"Cobbled Deepslate Wall","5417369":"Cobbled Deepslate Wall","5417370":"Cobbled Deepslate Wall","5417376":"Cobbled Deepslate Wall","5417377":"Cobbled Deepslate Wall","5417378":"Cobbled Deepslate Wall","5417380":"Cobbled Deepslate Wall","5417381":"Cobbled Deepslate Wall","5417382":"Cobbled Deepslate Wall","5417384":"Cobbled Deepslate Wall","5417385":"Cobbled Deepslate Wall","5417386":"Cobbled Deepslate Wall","5417472":"Polished Deepslate","5417984":"Polished Deepslate Slab","5417985":"Polished Deepslate Slab","5417986":"Polished Deepslate Slab","5418496":"Polished Deepslate Stairs","5418497":"Polished Deepslate Stairs","5418498":"Polished Deepslate Stairs","5418499":"Polished Deepslate Stairs","5418500":"Polished Deepslate Stairs","5418501":"Polished Deepslate Stairs","5418502":"Polished Deepslate Stairs","5418503":"Polished Deepslate Stairs","5419008":"Polished Deepslate Wall","5419009":"Polished Deepslate Wall","5419010":"Polished Deepslate Wall","5419012":"Polished Deepslate Wall","5419013":"Polished Deepslate Wall","5419014":"Polished Deepslate Wall","5419016":"Polished Deepslate Wall","5419017":"Polished Deepslate Wall","5419018":"Polished Deepslate Wall","5419024":"Polished Deepslate Wall","5419025":"Polished Deepslate Wall","5419026":"Polished Deepslate Wall","5419028":"Polished Deepslate Wall","5419029":"Polished Deepslate Wall","5419030":"Polished Deepslate Wall","5419032":"Polished Deepslate Wall","5419033":"Polished Deepslate Wall","5419034":"Polished Deepslate Wall","5419040":"Polished Deepslate Wall","5419041":"Polished Deepslate Wall","5419042":"Polished Deepslate Wall","5419044":"Polished Deepslate Wall","5419045":"Polished Deepslate Wall","5419046":"Polished Deepslate Wall","5419048":"Polished Deepslate Wall","5419049":"Polished Deepslate Wall","5419050":"Polished Deepslate Wall","5419072":"Polished Deepslate Wall","5419073":"Polished Deepslate Wall","5419074":"Polished Deepslate Wall","5419076":"Polished Deepslate Wall","5419077":"Polished Deepslate Wall","5419078":"Polished Deepslate Wall","5419080":"Polished Deepslate Wall","5419081":"Polished Deepslate Wall","5419082":"Polished Deepslate Wall","5419088":"Polished Deepslate Wall","5419089":"Polished Deepslate Wall","5419090":"Polished Deepslate Wall","5419092":"Polished Deepslate Wall","5419093":"Polished Deepslate Wall","5419094":"Polished Deepslate Wall","5419096":"Polished Deepslate Wall","5419097":"Polished Deepslate Wall","5419098":"Polished Deepslate Wall","5419104":"Polished Deepslate Wall","5419105":"Polished Deepslate Wall","5419106":"Polished Deepslate Wall","5419108":"Polished Deepslate Wall","5419109":"Polished Deepslate Wall","5419110":"Polished Deepslate Wall","5419112":"Polished Deepslate Wall","5419113":"Polished Deepslate Wall","5419114":"Polished Deepslate Wall","5419136":"Polished Deepslate Wall","5419137":"Polished Deepslate Wall","5419138":"Polished Deepslate Wall","5419140":"Polished Deepslate Wall","5419141":"Polished Deepslate Wall","5419142":"Polished Deepslate Wall","5419144":"Polished Deepslate Wall","5419145":"Polished Deepslate Wall","5419146":"Polished Deepslate Wall","5419152":"Polished Deepslate Wall","5419153":"Polished Deepslate Wall","5419154":"Polished Deepslate Wall","5419156":"Polished Deepslate Wall","5419157":"Polished Deepslate Wall","5419158":"Polished Deepslate Wall","5419160":"Polished Deepslate Wall","5419161":"Polished Deepslate Wall","5419162":"Polished Deepslate Wall","5419168":"Polished Deepslate Wall","5419169":"Polished Deepslate Wall","5419170":"Polished Deepslate Wall","5419172":"Polished Deepslate Wall","5419173":"Polished Deepslate Wall","5419174":"Polished Deepslate Wall","5419176":"Polished Deepslate Wall","5419177":"Polished Deepslate Wall","5419178":"Polished Deepslate Wall","5419264":"Polished Deepslate Wall","5419265":"Polished Deepslate Wall","5419266":"Polished Deepslate Wall","5419268":"Polished Deepslate Wall","5419269":"Polished Deepslate Wall","5419270":"Polished Deepslate Wall","5419272":"Polished Deepslate Wall","5419273":"Polished Deepslate Wall","5419274":"Polished Deepslate Wall","5419280":"Polished Deepslate Wall","5419281":"Polished Deepslate Wall","5419282":"Polished Deepslate Wall","5419284":"Polished Deepslate Wall","5419285":"Polished Deepslate Wall","5419286":"Polished Deepslate Wall","5419288":"Polished Deepslate Wall","5419289":"Polished Deepslate Wall","5419290":"Polished Deepslate Wall","5419296":"Polished Deepslate Wall","5419297":"Polished Deepslate Wall","5419298":"Polished Deepslate Wall","5419300":"Polished Deepslate Wall","5419301":"Polished Deepslate Wall","5419302":"Polished Deepslate Wall","5419304":"Polished Deepslate Wall","5419305":"Polished Deepslate Wall","5419306":"Polished Deepslate Wall","5419328":"Polished Deepslate Wall","5419329":"Polished Deepslate Wall","5419330":"Polished Deepslate Wall","5419332":"Polished Deepslate Wall","5419333":"Polished Deepslate Wall","5419334":"Polished Deepslate Wall","5419336":"Polished Deepslate Wall","5419337":"Polished Deepslate Wall","5419338":"Polished Deepslate Wall","5419344":"Polished Deepslate Wall","5419345":"Polished Deepslate Wall","5419346":"Polished Deepslate Wall","5419348":"Polished Deepslate Wall","5419349":"Polished Deepslate Wall","5419350":"Polished Deepslate Wall","5419352":"Polished Deepslate Wall","5419353":"Polished Deepslate Wall","5419354":"Polished Deepslate Wall","5419360":"Polished Deepslate Wall","5419361":"Polished Deepslate Wall","5419362":"Polished Deepslate Wall","5419364":"Polished Deepslate Wall","5419365":"Polished Deepslate Wall","5419366":"Polished Deepslate Wall","5419368":"Polished Deepslate Wall","5419369":"Polished Deepslate Wall","5419370":"Polished Deepslate Wall","5419392":"Polished Deepslate Wall","5419393":"Polished Deepslate Wall","5419394":"Polished Deepslate Wall","5419396":"Polished Deepslate Wall","5419397":"Polished Deepslate Wall","5419398":"Polished Deepslate Wall","5419400":"Polished Deepslate Wall","5419401":"Polished Deepslate Wall","5419402":"Polished Deepslate Wall","5419408":"Polished Deepslate Wall","5419409":"Polished Deepslate Wall","5419410":"Polished Deepslate Wall","5419412":"Polished Deepslate Wall","5419413":"Polished Deepslate Wall","5419414":"Polished Deepslate Wall","5419416":"Polished Deepslate Wall","5419417":"Polished Deepslate Wall","5419418":"Polished Deepslate Wall","5419424":"Polished Deepslate Wall","5419425":"Polished Deepslate Wall","5419426":"Polished Deepslate Wall","5419428":"Polished Deepslate Wall","5419429":"Polished Deepslate Wall","5419430":"Polished Deepslate Wall","5419432":"Polished Deepslate Wall","5419433":"Polished Deepslate Wall","5419434":"Polished Deepslate Wall","5444608":"Tinted Glass","5451264":"Mud Bricks","5451776":"Mud Brick Slab","5451777":"Mud Brick Slab","5451778":"Mud Brick Slab","5452288":"Mud Brick Stairs","5452289":"Mud Brick Stairs","5452290":"Mud Brick Stairs","5452291":"Mud Brick Stairs","5452292":"Mud Brick Stairs","5452293":"Mud Brick Stairs","5452294":"Mud Brick Stairs","5452295":"Mud Brick Stairs","5452800":"Mud Brick Wall","5452801":"Mud Brick Wall","5452802":"Mud Brick Wall","5452804":"Mud Brick Wall","5452805":"Mud Brick Wall","5452806":"Mud Brick Wall","5452808":"Mud Brick Wall","5452809":"Mud Brick Wall","5452810":"Mud Brick Wall","5452816":"Mud Brick Wall","5452817":"Mud Brick Wall","5452818":"Mud Brick Wall","5452820":"Mud Brick Wall","5452821":"Mud Brick Wall","5452822":"Mud Brick Wall","5452824":"Mud Brick Wall","5452825":"Mud Brick Wall","5452826":"Mud Brick Wall","5452832":"Mud Brick Wall","5452833":"Mud Brick Wall","5452834":"Mud Brick Wall","5452836":"Mud Brick Wall","5452837":"Mud Brick Wall","5452838":"Mud Brick Wall","5452840":"Mud Brick Wall","5452841":"Mud Brick Wall","5452842":"Mud Brick Wall","5452864":"Mud Brick Wall","5452865":"Mud Brick Wall","5452866":"Mud Brick Wall","5452868":"Mud Brick Wall","5452869":"Mud Brick Wall","5452870":"Mud Brick Wall","5452872":"Mud Brick Wall","5452873":"Mud Brick Wall","5452874":"Mud Brick Wall","5452880":"Mud Brick Wall","5452881":"Mud Brick Wall","5452882":"Mud Brick Wall","5452884":"Mud Brick Wall","5452885":"Mud Brick Wall","5452886":"Mud Brick Wall","5452888":"Mud Brick Wall","5452889":"Mud Brick Wall","5452890":"Mud Brick Wall","5452896":"Mud Brick Wall","5452897":"Mud Brick Wall","5452898":"Mud Brick Wall","5452900":"Mud Brick Wall","5452901":"Mud Brick Wall","5452902":"Mud Brick Wall","5452904":"Mud Brick Wall","5452905":"Mud Brick Wall","5452906":"Mud Brick Wall","5452928":"Mud Brick Wall","5452929":"Mud Brick Wall","5452930":"Mud Brick Wall","5452932":"Mud Brick Wall","5452933":"Mud Brick Wall","5452934":"Mud Brick Wall","5452936":"Mud Brick Wall","5452937":"Mud Brick Wall","5452938":"Mud Brick Wall","5452944":"Mud Brick Wall","5452945":"Mud Brick Wall","5452946":"Mud Brick Wall","5452948":"Mud Brick Wall","5452949":"Mud Brick Wall","5452950":"Mud Brick Wall","5452952":"Mud Brick Wall","5452953":"Mud Brick Wall","5452954":"Mud Brick Wall","5452960":"Mud Brick Wall","5452961":"Mud Brick Wall","5452962":"Mud Brick Wall","5452964":"Mud Brick Wall","5452965":"Mud Brick Wall","5452966":"Mud Brick Wall","5452968":"Mud Brick Wall","5452969":"Mud Brick Wall","5452970":"Mud Brick Wall","5453056":"Mud Brick Wall","5453057":"Mud Brick Wall","5453058":"Mud Brick Wall","5453060":"Mud Brick Wall","5453061":"Mud Brick Wall","5453062":"Mud Brick Wall","5453064":"Mud Brick Wall","5453065":"Mud Brick Wall","5453066":"Mud Brick Wall","5453072":"Mud Brick Wall","5453073":"Mud Brick Wall","5453074":"Mud Brick Wall","5453076":"Mud Brick Wall","5453077":"Mud Brick Wall","5453078":"Mud Brick Wall","5453080":"Mud Brick Wall","5453081":"Mud Brick Wall","5453082":"Mud Brick Wall","5453088":"Mud Brick Wall","5453089":"Mud Brick Wall","5453090":"Mud Brick Wall","5453092":"Mud Brick Wall","5453093":"Mud Brick Wall","5453094":"Mud Brick Wall","5453096":"Mud Brick Wall","5453097":"Mud Brick Wall","5453098":"Mud Brick Wall","5453120":"Mud Brick Wall","5453121":"Mud Brick Wall","5453122":"Mud Brick Wall","5453124":"Mud Brick Wall","5453125":"Mud Brick Wall","5453126":"Mud Brick Wall","5453128":"Mud Brick Wall","5453129":"Mud Brick Wall","5453130":"Mud Brick Wall","5453136":"Mud Brick Wall","5453137":"Mud Brick Wall","5453138":"Mud Brick Wall","5453140":"Mud Brick Wall","5453141":"Mud Brick Wall","5453142":"Mud Brick Wall","5453144":"Mud Brick Wall","5453145":"Mud Brick Wall","5453146":"Mud Brick Wall","5453152":"Mud Brick Wall","5453153":"Mud Brick Wall","5453154":"Mud Brick Wall","5453156":"Mud Brick Wall","5453157":"Mud Brick Wall","5453158":"Mud Brick Wall","5453160":"Mud Brick Wall","5453161":"Mud Brick Wall","5453162":"Mud Brick Wall","5453184":"Mud Brick Wall","5453185":"Mud Brick Wall","5453186":"Mud Brick Wall","5453188":"Mud Brick Wall","5453189":"Mud Brick Wall","5453190":"Mud Brick Wall","5453192":"Mud Brick Wall","5453193":"Mud Brick Wall","5453194":"Mud Brick Wall","5453200":"Mud Brick Wall","5453201":"Mud Brick Wall","5453202":"Mud Brick Wall","5453204":"Mud Brick Wall","5453205":"Mud Brick Wall","5453206":"Mud Brick Wall","5453208":"Mud Brick Wall","5453209":"Mud Brick Wall","5453210":"Mud Brick Wall","5453216":"Mud Brick Wall","5453217":"Mud Brick Wall","5453218":"Mud Brick Wall","5453220":"Mud Brick Wall","5453221":"Mud Brick Wall","5453222":"Mud Brick Wall","5453224":"Mud Brick Wall","5453225":"Mud Brick Wall","5453226":"Mud Brick Wall","5160448":"Coal Ore","5449728":"Copper Ore","5182976":"Diamond Ore","5250048":"Emerald Ore","5261824":"Gold Ore","5276672":"Iron Ore","5288448":"Lapis Lazuli Ore","5347840":"Redstone Ore","5347841":"Redstone Ore","5445632":"Deepslate Coal Ore","5449216":"Deepslate Copper Ore","5446144":"Deepslate Diamond Ore","5446656":"Deepslate Emerald Ore","5448704":"Deepslate Gold Ore","5448192":"Deepslate Iron Ore","5447168":"Deepslate Lapis Lazuli Ore","5447680":"Deepslate Redstone Ore","5447681":"Deepslate Redstone Ore","5307392":"Nether Quartz Ore","5450240":"Nether Gold Ore"},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index edff9f792..206e76ba5 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -45,7 +45,12 @@ if(file_exists($oldTablePath)){ if(!is_array($oldTable)){ throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, stateDataBits: int}"); } - $old = $oldTable["knownStates"]; + $old = []; + foreach($oldTable["knownStates"] as $name => $stateIds){ + foreach($stateIds as $stateId){ + $old[$stateId] = $name; + } + } $oldStateDataSize = $oldTable["stateDataBits"]; $oldStateDataMask = ~(~0 << $oldStateDataSize); @@ -72,15 +77,23 @@ if(file_exists($oldTablePath)){ echo "Name changed ($newId:$newStateData) " . $old[$reconstructedK] . " -> " . $name . "\n"; } } - } }else{ echo "WARNING: Unable to calculate diff, no previous consistency check file found\n"; } +$newTable = []; +foreach($new as $stateId => $name){ + $newTable[$name][] = $stateId; +} +ksort($newTable, SORT_STRING); +foreach($newTable as &$stateIds){ + sort($stateIds, SORT_NUMERIC); +} + file_put_contents(__DIR__ . '/block_factory_consistency_check.json', json_encode( [ - "knownStates" => $new, + "knownStates" => $newTable, "stateDataBits" => Block::INTERNAL_STATE_DATA_BITS ], JSON_THROW_ON_ERROR From b0c76f4db5b7c963644eda184af5966303a3ddd0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 23:28:08 +0100 Subject: [PATCH 300/692] Fixed botched unit tests --- tests/phpunit/block/BlockTest.php | 11 ++++++++++- tests/phpunit/block/regenerate_consistency_check.php | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 3b8d704d9..c5df95c40 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -110,7 +110,16 @@ class BlockTest extends TestCase{ if(!is_array($list)){ throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, stateDataBits: int}"); } - $knownStates = $list["knownStates"]; + $knownStates = []; + /** + * @var string $name + * @var int[] $stateIds + */ + foreach($list["knownStates"] as $name => $stateIds){ + foreach($stateIds as $stateId){ + $knownStates[$stateId] = $name; + } + } $oldStateDataSize = $list["stateDataBits"]; self::assertSame($oldStateDataSize, Block::INTERNAL_STATE_DATA_BITS, "Changed number of state data bits - consistency check probably need regenerating"); diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index 206e76ba5..0db6d3382 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -46,6 +46,10 @@ if(file_exists($oldTablePath)){ throw new \pocketmine\utils\AssumptionFailedError("Old table should be array{knownStates: array, stateDataBits: int}"); } $old = []; + /** + * @var string $name + * @var int[] $stateIds + */ foreach($oldTable["knownStates"] as $name => $stateIds){ foreach($stateIds as $stateId){ $old[$stateId] = $name; From 976502e3dbc9b2593ecd9049842e5d754e851742 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 23:47:51 +0100 Subject: [PATCH 301/692] Move item type initialization to VanillaItems ItemFactory no longer has an obvious purpose, thanks to this ... --- src/item/ItemFactory.php | 358 +------------------------ src/item/VanillaItems.php | 537 +++++++++++++++++++++----------------- 2 files changed, 300 insertions(+), 595 deletions(-) diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 0e59e120c..49b594363 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -24,19 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\BlockFactory; -use pocketmine\block\utils\RecordType; -use pocketmine\block\utils\TreeType; -use pocketmine\block\VanillaBlocks as Blocks; -use pocketmine\entity\Entity; -use pocketmine\entity\Location; -use pocketmine\entity\Squid; -use pocketmine\entity\Villager; -use pocketmine\entity\Zombie; -use pocketmine\inventory\ArmorInventory; -use pocketmine\item\ItemIdentifier as IID; -use pocketmine\item\ItemTypeIds as Ids; -use pocketmine\math\Vector3; -use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\World; @@ -51,333 +38,12 @@ class ItemFactory{ private array $list = []; public function __construct(){ - $this->registerArmorItems(); - $this->registerSpawnEggs(); - $this->registerTierToolItems(); - - $this->register(new Apple(new IID(Ids::APPLE), "Apple")); - $this->register(new Arrow(new IID(Ids::ARROW), "Arrow")); - - $this->register(new BakedPotato(new IID(Ids::BAKED_POTATO), "Baked Potato")); - $this->register(new Bamboo(new IID(Ids::BAMBOO), "Bamboo"), true); - $this->register(new Beetroot(new IID(Ids::BEETROOT), "Beetroot")); - $this->register(new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS), "Beetroot Seeds")); - $this->register(new BeetrootSoup(new IID(Ids::BEETROOT_SOUP), "Beetroot Soup")); - $this->register(new BlazeRod(new IID(Ids::BLAZE_ROD), "Blaze Rod")); - $this->register(new Book(new IID(Ids::BOOK), "Book")); - $this->register(new Bow(new IID(Ids::BOW), "Bow")); - $this->register(new Bowl(new IID(Ids::BOWL), "Bowl")); - $this->register(new Bread(new IID(Ids::BREAD), "Bread")); - $this->register(new Bucket(new IID(Ids::BUCKET), "Bucket")); - $this->register(new Carrot(new IID(Ids::CARROT), "Carrot")); - $this->register(new ChorusFruit(new IID(Ids::CHORUS_FRUIT), "Chorus Fruit")); - $this->register(new Clock(new IID(Ids::CLOCK), "Clock")); - $this->register(new Clownfish(new IID(Ids::CLOWNFISH), "Clownfish")); - $this->register(new Coal(new IID(Ids::COAL), "Coal")); - - $this->register(new CoralFan(new IID(Ids::CORAL_FAN))); - - $this->register(new Coal(new IID(Ids::CHARCOAL), "Charcoal")); - $this->register(new CocoaBeans(new IID(Ids::COCOA_BEANS), "Cocoa Beans")); - $this->register(new Compass(new IID(Ids::COMPASS), "Compass")); - $this->register(new CookedChicken(new IID(Ids::COOKED_CHICKEN), "Cooked Chicken")); - $this->register(new CookedFish(new IID(Ids::COOKED_FISH), "Cooked Fish")); - $this->register(new CookedMutton(new IID(Ids::COOKED_MUTTON), "Cooked Mutton")); - $this->register(new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP), "Cooked Porkchop")); - $this->register(new CookedRabbit(new IID(Ids::COOKED_RABBIT), "Cooked Rabbit")); - $this->register(new CookedSalmon(new IID(Ids::COOKED_SALMON), "Cooked Salmon")); - $this->register(new Cookie(new IID(Ids::COOKIE), "Cookie")); - $this->register(new DriedKelp(new IID(Ids::DRIED_KELP), "Dried Kelp")); - $this->register(new Egg(new IID(Ids::EGG), "Egg")); - $this->register(new EnderPearl(new IID(Ids::ENDER_PEARL), "Ender Pearl")); - $this->register(new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); - $this->register(new Fertilizer(new IID(Ids::BONE_MEAL), "Bone Meal")); - $this->register(new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); - $this->register(new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); - $this->register(new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); - $this->register(new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); - $this->register(new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); - $this->register(new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); - $this->register(new Item(new IID(Ids::AMETHYST_SHARD), "Amethyst Shard")); - $this->register(new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); - $this->register(new Item(new IID(Ids::BLEACH), "Bleach")); //EDU - $this->register(new Item(new IID(Ids::BONE), "Bone")); - $this->register(new Item(new IID(Ids::BRICK), "Brick")); - $this->register(new Item(new IID(Ids::POPPED_CHORUS_FRUIT), "Popped Chorus Fruit")); - $this->register(new Item(new IID(Ids::CLAY), "Clay")); - $this->register(new Item(new IID(Ids::CHEMICAL_SALT), "Salt")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE), "Sodium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE), "Sodium Hydroxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE), "Magnesium Nitrate")); - $this->register(new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE), "Iron Sulphide")); - $this->register(new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE), "Lithium Hydride")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE), "Sodium Hydride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE), "Calcium Bromide")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE), "Magnesium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE), "Sodium Acetate")); - $this->register(new Item(new IID(Ids::CHEMICAL_LUMINOL), "Luminol")); - $this->register(new Item(new IID(Ids::CHEMICAL_CHARCOAL), "Charcoal")); //??? maybe bug - $this->register(new Item(new IID(Ids::CHEMICAL_SUGAR), "Sugar")); //??? maybe bug - $this->register(new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE), "Aluminium Oxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE), "Boron Trioxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SOAP), "Soap")); - $this->register(new Item(new IID(Ids::CHEMICAL_POLYETHYLENE), "Polyethylene")); - $this->register(new Item(new IID(Ids::CHEMICAL_RUBBISH), "Rubbish")); - $this->register(new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS), "Magnesium Salts")); - $this->register(new Item(new IID(Ids::CHEMICAL_SULPHATE), "Sulphate")); - $this->register(new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE), "Barium Sulphate")); - $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE), "Potassium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE), "Mercuric Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE), "Cerium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE), "Tungsten Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE), "Calcium Chloride")); - $this->register(new Item(new IID(Ids::CHEMICAL_WATER), "Water")); //??? - $this->register(new Item(new IID(Ids::CHEMICAL_GLUE), "Glue")); - $this->register(new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE), "Hypochlorite")); - $this->register(new Item(new IID(Ids::CHEMICAL_CRUDE_OIL), "Crude Oil")); - $this->register(new Item(new IID(Ids::CHEMICAL_LATEX), "Latex")); - $this->register(new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE), "Potassium Iodide")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE), "Sodium Fluoride")); - $this->register(new Item(new IID(Ids::CHEMICAL_BENZENE), "Benzene")); - $this->register(new Item(new IID(Ids::CHEMICAL_INK), "Ink")); - $this->register(new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); - $this->register(new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); - $this->register(new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); - $this->register(new Item(new IID(Ids::DIAMOND), "Diamond")); - $this->register(new Item(new IID(Ids::DISC_FRAGMENT_5), "Disc Fragment (5)")); - $this->register(new Item(new IID(Ids::DRAGON_BREATH), "Dragon's Breath")); - $this->register(new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); - $this->register(new Item(new IID(Ids::INK_SAC), "Ink Sac")); - $this->register(new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); - $this->register(new Item(new IID(Ids::ECHO_SHARD), "Echo Shard")); - $this->register(new Item(new IID(Ids::EMERALD), "Emerald")); - $this->register(new Item(new IID(Ids::FEATHER), "Feather")); - $this->register(new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); - $this->register(new Item(new IID(Ids::FLINT), "Flint")); - $this->register(new Item(new IID(Ids::GHAST_TEAR), "Ghast Tear")); - $this->register(new Item(new IID(Ids::GLISTERING_MELON), "Glistering Melon")); - $this->register(new Item(new IID(Ids::GLOWSTONE_DUST), "Glowstone Dust")); - $this->register(new Item(new IID(Ids::GOLD_INGOT), "Gold Ingot")); - $this->register(new Item(new IID(Ids::GOLD_NUGGET), "Gold Nugget")); - $this->register(new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); - $this->register(new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); - $this->register(new Item(new IID(Ids::HONEYCOMB), "Honeycomb")); - $this->register(new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); - $this->register(new Item(new IID(Ids::IRON_NUGGET), "Iron Nugget")); - $this->register(new Item(new IID(Ids::LEATHER), "Leather")); - $this->register(new Item(new IID(Ids::MAGMA_CREAM), "Magma Cream")); - $this->register(new Item(new IID(Ids::NAUTILUS_SHELL), "Nautilus Shell")); - $this->register(new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); - $this->register(new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); - $this->register(new Item(new IID(Ids::NETHER_STAR), "Nether Star")); - $this->register(new Item(new IID(Ids::PAPER), "Paper")); - $this->register(new Item(new IID(Ids::PRISMARINE_CRYSTALS), "Prismarine Crystals")); - $this->register(new Item(new IID(Ids::PRISMARINE_SHARD), "Prismarine Shard")); - $this->register(new Item(new IID(Ids::RABBIT_FOOT), "Rabbit's Foot")); - $this->register(new Item(new IID(Ids::RABBIT_HIDE), "Rabbit Hide")); - $this->register(new Item(new IID(Ids::SHULKER_SHELL), "Shulker Shell")); - $this->register(new Item(new IID(Ids::SLIMEBALL), "Slimeball")); - $this->register(new Item(new IID(Ids::SUGAR), "Sugar")); - $this->register(new Item(new IID(Ids::SCUTE), "Scute")); - $this->register(new Item(new IID(Ids::WHEAT), "Wheat")); - $this->register(new Item(new IID(Ids::COPPER_INGOT), "Copper Ingot")); - $this->register(new Item(new IID(Ids::RAW_COPPER), "Raw Copper")); - $this->register(new Item(new IID(Ids::RAW_IRON), "Raw Iron")); - $this->register(new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); - $this->register(new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); - - $this->register(new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); - $this->register(new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); - $this->register(new Melon(new IID(Ids::MELON), "Melon")); - $this->register(new MelonSeeds(new IID(Ids::MELON_SEEDS), "Melon Seeds")); - $this->register(new MilkBucket(new IID(Ids::MILK_BUCKET), "Milk Bucket")); - $this->register(new Minecart(new IID(Ids::MINECART), "Minecart")); - $this->register(new MushroomStew(new IID(Ids::MUSHROOM_STEW), "Mushroom Stew")); - $this->register(new PaintingItem(new IID(Ids::PAINTING), "Painting")); - $this->register(new PoisonousPotato(new IID(Ids::POISONOUS_POTATO), "Poisonous Potato")); - $this->register(new Potato(new IID(Ids::POTATO), "Potato")); - $this->register(new Pufferfish(new IID(Ids::PUFFERFISH), "Pufferfish")); - $this->register(new PumpkinPie(new IID(Ids::PUMPKIN_PIE), "Pumpkin Pie")); - $this->register(new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS), "Pumpkin Seeds")); - $this->register(new RabbitStew(new IID(Ids::RABBIT_STEW), "Rabbit Stew")); - $this->register(new RawBeef(new IID(Ids::RAW_BEEF), "Raw Beef")); - $this->register(new RawChicken(new IID(Ids::RAW_CHICKEN), "Raw Chicken")); - $this->register(new RawFish(new IID(Ids::RAW_FISH), "Raw Fish")); - $this->register(new RawMutton(new IID(Ids::RAW_MUTTON), "Raw Mutton")); - $this->register(new RawPorkchop(new IID(Ids::RAW_PORKCHOP), "Raw Porkchop")); - $this->register(new RawRabbit(new IID(Ids::RAW_RABBIT), "Raw Rabbit")); - $this->register(new RawSalmon(new IID(Ids::RAW_SALMON), "Raw Salmon")); - $this->register(new Record(new IID(Ids::RECORD_13), RecordType::DISK_13(), "Record 13")); - $this->register(new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); - $this->register(new Record(new IID(Ids::RECORD_BLOCKS), RecordType::DISK_BLOCKS(), "Record Blocks")); - $this->register(new Record(new IID(Ids::RECORD_CHIRP), RecordType::DISK_CHIRP(), "Record Chirp")); - $this->register(new Record(new IID(Ids::RECORD_FAR), RecordType::DISK_FAR(), "Record Far")); - $this->register(new Record(new IID(Ids::RECORD_MALL), RecordType::DISK_MALL(), "Record Mall")); - $this->register(new Record(new IID(Ids::RECORD_MELLOHI), RecordType::DISK_MELLOHI(), "Record Mellohi")); - $this->register(new Record(new IID(Ids::RECORD_STAL), RecordType::DISK_STAL(), "Record Stal")); - $this->register(new Record(new IID(Ids::RECORD_STRAD), RecordType::DISK_STRAD(), "Record Strad")); - $this->register(new Record(new IID(Ids::RECORD_WARD), RecordType::DISK_WARD(), "Record Ward")); - $this->register(new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); - $this->register(new Record(new IID(Ids::RECORD_WAIT), RecordType::DISK_WAIT(), "Record Wait")); - $this->register(new Redstone(new IID(Ids::REDSTONE_DUST), "Redstone")); - $this->register(new RottenFlesh(new IID(Ids::ROTTEN_FLESH), "Rotten Flesh")); - $this->register(new Shears(new IID(Ids::SHEARS), "Shears")); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::CRIMSON_SIGN), Blocks::CRIMSON_SIGN(), Blocks::CRIMSON_WALL_SIGN())); - $this->register(new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); - $this->register(new Snowball(new IID(Ids::SNOWBALL), "Snowball")); - $this->register(new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); - $this->register(new Spyglass(new IID(Ids::SPYGLASS), "Spyglass")); - $this->register(new Steak(new IID(Ids::STEAK), "Steak")); - $this->register(new Stick(new IID(Ids::STICK), "Stick")); - $this->register(new StringItem(new IID(Ids::STRING), "String")); - $this->register(new SweetBerries(new IID(Ids::SWEET_BERRIES), "Sweet Berries")); - $this->register(new Totem(new IID(Ids::TOTEM), "Totem of Undying")); - $this->register(new WheatSeeds(new IID(Ids::WHEAT_SEEDS), "Wheat Seeds")); - $this->register(new WritableBook(new IID(Ids::WRITABLE_BOOK), "Book & Quill")); - $this->register(new WrittenBook(new IID(Ids::WRITTEN_BOOK), "Written Book")); - - //TODO: add interface to dye-colour objects - $this->register(new Dye(new IID(Ids::DYE), "Dye")); - $this->register(new Banner( - new IID(Ids::BANNER), - Blocks::BANNER(), - Blocks::WALL_BANNER() - )); - - $this->register(new Potion(new IID(Ids::POTION), "Potion")); - $this->register(new SplashPotion(new IID(Ids::SPLASH_POTION), "Splash Potion")); - - foreach(TreeType::getAll() as $type){ - //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency - $this->register(new Boat(new IID(match($type){ - TreeType::OAK() => Ids::OAK_BOAT, - TreeType::SPRUCE() => Ids::SPRUCE_BOAT, - TreeType::BIRCH() => Ids::BIRCH_BOAT, - TreeType::JUNGLE() => Ids::JUNGLE_BOAT, - TreeType::ACACIA() => Ids::ACACIA_BOAT, - TreeType::DARK_OAK() => Ids::DARK_OAK_BOAT, - default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) - }), $type->getDisplayName() . " Boat", $type)); + foreach(VanillaItems::getAll() as $item){ + if($item->isNull()){ + continue; + } + $this->register($item); } - - //region --- auto-generated TODOs --- - //TODO: minecraft:armor_stand - //TODO: minecraft:balloon - //TODO: minecraft:banner_pattern - //TODO: minecraft:campfire - //TODO: minecraft:carrotOnAStick - //TODO: minecraft:chest_minecart - //TODO: minecraft:command_block_minecart - //TODO: minecraft:crossbow - //TODO: minecraft:elytra - //TODO: minecraft:emptyMap - //TODO: minecraft:enchanted_book - //TODO: minecraft:end_crystal - //TODO: minecraft:ender_eye - //TODO: minecraft:fireball - //TODO: minecraft:fireworks - //TODO: minecraft:fireworksCharge - //TODO: minecraft:glow_stick - //TODO: minecraft:hopper_minecart - //TODO: minecraft:horsearmordiamond - //TODO: minecraft:horsearmorgold - //TODO: minecraft:horsearmoriron - //TODO: minecraft:horsearmorleather - //TODO: minecraft:ice_bomb - //TODO: minecraft:kelp - //TODO: minecraft:lead - //TODO: minecraft:lingering_potion - //TODO: minecraft:map - //TODO: minecraft:medicine - //TODO: minecraft:name_tag - //TODO: minecraft:phantom_membrane - //TODO: minecraft:rapid_fertilizer - //TODO: minecraft:record_pigstep - //TODO: minecraft:saddle - //TODO: minecraft:shield - //TODO: minecraft:sparkler - //TODO: minecraft:spawn_egg - //TODO: minecraft:tnt_minecart - //TODO: minecraft:trident - //TODO: minecraft:turtle_helmet - //endregion - } - - private function registerSpawnEggs() : void{ - //TODO: the meta values should probably be hardcoded; they won't change, but the EntityLegacyIds might - $this->register(new class(new IID(Ids::ZOMBIE_SPAWN_EGG), "Zombie Spawn Egg") extends SpawnEgg{ - protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ - return new Zombie(Location::fromObject($pos, $world, $yaw, $pitch)); - } - }); - $this->register(new class(new IID(Ids::SQUID_SPAWN_EGG), "Squid Spawn Egg") extends SpawnEgg{ - public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ - return new Squid(Location::fromObject($pos, $world, $yaw, $pitch)); - } - }); - $this->register(new class(new IID(Ids::VILLAGER_SPAWN_EGG), "Villager Spawn Egg") extends SpawnEgg{ - public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ - return new Villager(Location::fromObject($pos, $world, $yaw, $pitch)); - } - }); - } - - private function registerTierToolItems() : void{ - $this->register(new Axe(new IID(Ids::DIAMOND_AXE), "Diamond Axe", ToolTier::DIAMOND())); - $this->register(new Axe(new IID(Ids::GOLDEN_AXE), "Golden Axe", ToolTier::GOLD())); - $this->register(new Axe(new IID(Ids::IRON_AXE), "Iron Axe", ToolTier::IRON())); - $this->register(new Axe(new IID(Ids::STONE_AXE), "Stone Axe", ToolTier::STONE())); - $this->register(new Axe(new IID(Ids::WOODEN_AXE), "Wooden Axe", ToolTier::WOOD())); - $this->register(new Hoe(new IID(Ids::DIAMOND_HOE), "Diamond Hoe", ToolTier::DIAMOND())); - $this->register(new Hoe(new IID(Ids::GOLDEN_HOE), "Golden Hoe", ToolTier::GOLD())); - $this->register(new Hoe(new IID(Ids::IRON_HOE), "Iron Hoe", ToolTier::IRON())); - $this->register(new Hoe(new IID(Ids::STONE_HOE), "Stone Hoe", ToolTier::STONE())); - $this->register(new Hoe(new IID(Ids::WOODEN_HOE), "Wooden Hoe", ToolTier::WOOD())); - $this->register(new Pickaxe(new IID(Ids::DIAMOND_PICKAXE), "Diamond Pickaxe", ToolTier::DIAMOND())); - $this->register(new Pickaxe(new IID(Ids::GOLDEN_PICKAXE), "Golden Pickaxe", ToolTier::GOLD())); - $this->register(new Pickaxe(new IID(Ids::IRON_PICKAXE), "Iron Pickaxe", ToolTier::IRON())); - $this->register(new Pickaxe(new IID(Ids::STONE_PICKAXE), "Stone Pickaxe", ToolTier::STONE())); - $this->register(new Pickaxe(new IID(Ids::WOODEN_PICKAXE), "Wooden Pickaxe", ToolTier::WOOD())); - $this->register(new Shovel(new IID(Ids::DIAMOND_SHOVEL), "Diamond Shovel", ToolTier::DIAMOND())); - $this->register(new Shovel(new IID(Ids::GOLDEN_SHOVEL), "Golden Shovel", ToolTier::GOLD())); - $this->register(new Shovel(new IID(Ids::IRON_SHOVEL), "Iron Shovel", ToolTier::IRON())); - $this->register(new Shovel(new IID(Ids::STONE_SHOVEL), "Stone Shovel", ToolTier::STONE())); - $this->register(new Shovel(new IID(Ids::WOODEN_SHOVEL), "Wooden Shovel", ToolTier::WOOD())); - $this->register(new Sword(new IID(Ids::DIAMOND_SWORD), "Diamond Sword", ToolTier::DIAMOND())); - $this->register(new Sword(new IID(Ids::GOLDEN_SWORD), "Golden Sword", ToolTier::GOLD())); - $this->register(new Sword(new IID(Ids::IRON_SWORD), "Iron Sword", ToolTier::IRON())); - $this->register(new Sword(new IID(Ids::STONE_SWORD), "Stone Sword", ToolTier::STONE())); - $this->register(new Sword(new IID(Ids::WOODEN_SWORD), "Wooden Sword", ToolTier::WOOD())); - } - - private function registerArmorItems() : void{ - $this->register(new Armor(new IID(Ids::CHAINMAIL_BOOTS), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::GOLDEN_BOOTS), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::IRON_BOOTS), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::LEATHER_BOOTS), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::GOLDEN_CHESTPLATE), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::IRON_CHESTPLATE), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::LEATHER_TUNIC), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_HELMET), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::GOLDEN_HELMET), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); - $this->register(new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::GOLDEN_LEGGINGS), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::IRON_LEGGINGS), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); - $this->register(new Armor(new IID(Ids::LEATHER_PANTS), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); } /** @@ -407,20 +73,6 @@ class ItemFactory{ return -$id; } - /** - * @internal - */ - public function fromTypeId(int $typeId) : Item{ - if(isset($this->list[$typeId])){ - return clone $this->list[$typeId]; - } - if($typeId <= 0){ - return BlockFactory::getInstance()->fromTypeId(self::itemToBlockId($typeId))->asItem(); - } - - throw new \InvalidArgumentException("No item with type ID $typeId is registered"); - } - /** * Returns whether the specified item ID is already registered in the item factory. */ diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index cae21904b..5a645353f 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -23,9 +23,22 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\block\utils\RecordType; +use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks; +use pocketmine\block\VanillaBlocks as Blocks; +use pocketmine\entity\Entity; +use pocketmine\entity\Location; +use pocketmine\entity\Squid; +use pocketmine\entity\Villager; +use pocketmine\entity\Zombie; +use pocketmine\inventory\ArmorInventory; +use pocketmine\item\ItemIdentifier as IID; use pocketmine\item\ItemTypeIds as Ids; +use pocketmine\math\Vector3; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\CloningRegistryTrait; +use pocketmine\world\World; /** * This doc-block is generated automatically, do not modify it manually. @@ -298,249 +311,289 @@ final class VanillaItems{ } protected static function setup() : void{ - $factory = ItemFactory::getInstance(); + self::registerArmorItems(); + self::registerSpawnEggs(); + self::registerTierToolItems(); + self::register("air", VanillaBlocks::AIR()->asItem()->setCount(0)); - self::register("acacia_boat", $factory->fromTypeId(Ids::ACACIA_BOAT)); - self::register("acacia_sign", $factory->fromTypeId(Ids::ACACIA_SIGN)); - self::register("amethyst_shard", $factory->fromTypeId(Ids::AMETHYST_SHARD)); - self::register("apple", $factory->fromTypeId(Ids::APPLE)); - self::register("arrow", $factory->fromTypeId(Ids::ARROW)); - self::register("baked_potato", $factory->fromTypeId(Ids::BAKED_POTATO)); - self::register("bamboo", $factory->fromTypeId(Ids::BAMBOO)); - self::register("banner", $factory->fromTypeId(Ids::BANNER)); - self::register("beetroot", $factory->fromTypeId(Ids::BEETROOT)); - self::register("beetroot_seeds", $factory->fromTypeId(Ids::BEETROOT_SEEDS)); - self::register("beetroot_soup", $factory->fromTypeId(Ids::BEETROOT_SOUP)); - self::register("birch_boat", $factory->fromTypeId(Ids::BIRCH_BOAT)); - self::register("birch_sign", $factory->fromTypeId(Ids::BIRCH_SIGN)); - self::register("blaze_powder", $factory->fromTypeId(Ids::BLAZE_POWDER)); - self::register("blaze_rod", $factory->fromTypeId(Ids::BLAZE_ROD)); - self::register("bleach", $factory->fromTypeId(Ids::BLEACH)); - self::register("bone", $factory->fromTypeId(Ids::BONE)); - self::register("bone_meal", $factory->fromTypeId(Ids::BONE_MEAL)); - self::register("book", $factory->fromTypeId(Ids::BOOK)); - self::register("bow", $factory->fromTypeId(Ids::BOW)); - self::register("bowl", $factory->fromTypeId(Ids::BOWL)); - self::register("bread", $factory->fromTypeId(Ids::BREAD)); - self::register("brick", $factory->fromTypeId(Ids::BRICK)); - self::register("bucket", $factory->fromTypeId(Ids::BUCKET)); - self::register("carrot", $factory->fromTypeId(Ids::CARROT)); - self::register("chainmail_boots", $factory->fromTypeId(Ids::CHAINMAIL_BOOTS)); - self::register("chainmail_chestplate", $factory->fromTypeId(Ids::CHAINMAIL_CHESTPLATE)); - self::register("chainmail_helmet", $factory->fromTypeId(Ids::CHAINMAIL_HELMET)); - self::register("chainmail_leggings", $factory->fromTypeId(Ids::CHAINMAIL_LEGGINGS)); - self::register("charcoal", $factory->fromTypeId(Ids::CHARCOAL)); - self::register("chemical_aluminium_oxide", $factory->fromTypeId(Ids::CHEMICAL_ALUMINIUM_OXIDE)); - self::register("chemical_ammonia", $factory->fromTypeId(Ids::CHEMICAL_AMMONIA)); - self::register("chemical_barium_sulphate", $factory->fromTypeId(Ids::CHEMICAL_BARIUM_SULPHATE)); - self::register("chemical_benzene", $factory->fromTypeId(Ids::CHEMICAL_BENZENE)); - self::register("chemical_boron_trioxide", $factory->fromTypeId(Ids::CHEMICAL_BORON_TRIOXIDE)); - self::register("chemical_calcium_bromide", $factory->fromTypeId(Ids::CHEMICAL_CALCIUM_BROMIDE)); - self::register("chemical_calcium_chloride", $factory->fromTypeId(Ids::CHEMICAL_CALCIUM_CHLORIDE)); - self::register("chemical_cerium_chloride", $factory->fromTypeId(Ids::CHEMICAL_CERIUM_CHLORIDE)); - self::register("chemical_charcoal", $factory->fromTypeId(Ids::CHEMICAL_CHARCOAL)); - self::register("chemical_crude_oil", $factory->fromTypeId(Ids::CHEMICAL_CRUDE_OIL)); - self::register("chemical_glue", $factory->fromTypeId(Ids::CHEMICAL_GLUE)); - self::register("chemical_hydrogen_peroxide", $factory->fromTypeId(Ids::CHEMICAL_HYDROGEN_PEROXIDE)); - self::register("chemical_hypochlorite", $factory->fromTypeId(Ids::CHEMICAL_HYPOCHLORITE)); - self::register("chemical_ink", $factory->fromTypeId(Ids::CHEMICAL_INK)); - self::register("chemical_iron_sulphide", $factory->fromTypeId(Ids::CHEMICAL_IRON_SULPHIDE)); - self::register("chemical_latex", $factory->fromTypeId(Ids::CHEMICAL_LATEX)); - self::register("chemical_lithium_hydride", $factory->fromTypeId(Ids::CHEMICAL_LITHIUM_HYDRIDE)); - self::register("chemical_luminol", $factory->fromTypeId(Ids::CHEMICAL_LUMINOL)); - self::register("chemical_magnesium_nitrate", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_NITRATE)); - self::register("chemical_magnesium_oxide", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_OXIDE)); - self::register("chemical_magnesium_salts", $factory->fromTypeId(Ids::CHEMICAL_MAGNESIUM_SALTS)); - self::register("chemical_mercuric_chloride", $factory->fromTypeId(Ids::CHEMICAL_MERCURIC_CHLORIDE)); - self::register("chemical_polyethylene", $factory->fromTypeId(Ids::CHEMICAL_POLYETHYLENE)); - self::register("chemical_potassium_chloride", $factory->fromTypeId(Ids::CHEMICAL_POTASSIUM_CHLORIDE)); - self::register("chemical_potassium_iodide", $factory->fromTypeId(Ids::CHEMICAL_POTASSIUM_IODIDE)); - self::register("chemical_rubbish", $factory->fromTypeId(Ids::CHEMICAL_RUBBISH)); - self::register("chemical_salt", $factory->fromTypeId(Ids::CHEMICAL_SALT)); - self::register("chemical_soap", $factory->fromTypeId(Ids::CHEMICAL_SOAP)); - self::register("chemical_sodium_acetate", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_ACETATE)); - self::register("chemical_sodium_fluoride", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_FLUORIDE)); - self::register("chemical_sodium_hydride", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYDRIDE)); - self::register("chemical_sodium_hydroxide", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYDROXIDE)); - self::register("chemical_sodium_hypochlorite", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_HYPOCHLORITE)); - self::register("chemical_sodium_oxide", $factory->fromTypeId(Ids::CHEMICAL_SODIUM_OXIDE)); - self::register("chemical_sugar", $factory->fromTypeId(Ids::CHEMICAL_SUGAR)); - self::register("chemical_sulphate", $factory->fromTypeId(Ids::CHEMICAL_SULPHATE)); - self::register("chemical_tungsten_chloride", $factory->fromTypeId(Ids::CHEMICAL_TUNGSTEN_CHLORIDE)); - self::register("chemical_water", $factory->fromTypeId(Ids::CHEMICAL_WATER)); - self::register("chorus_fruit", $factory->fromTypeId(Ids::CHORUS_FRUIT)); - self::register("clay", $factory->fromTypeId(Ids::CLAY)); - self::register("clock", $factory->fromTypeId(Ids::CLOCK)); - self::register("clownfish", $factory->fromTypeId(Ids::CLOWNFISH)); - self::register("coal", $factory->fromTypeId(Ids::COAL)); - self::register("cocoa_beans", $factory->fromTypeId(Ids::COCOA_BEANS)); - self::register("compass", $factory->fromTypeId(Ids::COMPASS)); - self::register("cooked_chicken", $factory->fromTypeId(Ids::COOKED_CHICKEN)); - self::register("cooked_fish", $factory->fromTypeId(Ids::COOKED_FISH)); - self::register("cooked_mutton", $factory->fromTypeId(Ids::COOKED_MUTTON)); - self::register("cooked_porkchop", $factory->fromTypeId(Ids::COOKED_PORKCHOP)); - self::register("cooked_rabbit", $factory->fromTypeId(Ids::COOKED_RABBIT)); - self::register("cooked_salmon", $factory->fromTypeId(Ids::COOKED_SALMON)); - self::register("cookie", $factory->fromTypeId(Ids::COOKIE)); - self::register("copper_ingot", $factory->fromTypeId(Ids::COPPER_INGOT)); - self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); - self::register("crimson_sign", $factory->fromTypeId(Ids::CRIMSON_SIGN)); - self::register("dark_oak_boat", $factory->fromTypeId(Ids::DARK_OAK_BOAT)); - self::register("dark_oak_sign", $factory->fromTypeId(Ids::DARK_OAK_SIGN)); - self::register("diamond", $factory->fromTypeId(Ids::DIAMOND)); - self::register("diamond_axe", $factory->fromTypeId(Ids::DIAMOND_AXE)); - self::register("diamond_boots", $factory->fromTypeId(Ids::DIAMOND_BOOTS)); - self::register("diamond_chestplate", $factory->fromTypeId(Ids::DIAMOND_CHESTPLATE)); - self::register("diamond_helmet", $factory->fromTypeId(Ids::DIAMOND_HELMET)); - self::register("diamond_hoe", $factory->fromTypeId(Ids::DIAMOND_HOE)); - self::register("diamond_leggings", $factory->fromTypeId(Ids::DIAMOND_LEGGINGS)); - self::register("diamond_pickaxe", $factory->fromTypeId(Ids::DIAMOND_PICKAXE)); - self::register("diamond_shovel", $factory->fromTypeId(Ids::DIAMOND_SHOVEL)); - self::register("diamond_sword", $factory->fromTypeId(Ids::DIAMOND_SWORD)); - self::register("disc_fragment_5", $factory->fromTypeId(Ids::DISC_FRAGMENT_5)); - self::register("dragon_breath", $factory->fromTypeId(Ids::DRAGON_BREATH)); - self::register("dried_kelp", $factory->fromTypeId(Ids::DRIED_KELP)); - self::register("dye", $factory->fromTypeId(Ids::DYE)); - self::register("echo_shard", $factory->fromTypeId(Ids::ECHO_SHARD)); - self::register("egg", $factory->fromTypeId(Ids::EGG)); - self::register("emerald", $factory->fromTypeId(Ids::EMERALD)); - self::register("enchanted_golden_apple", $factory->fromTypeId(Ids::ENCHANTED_GOLDEN_APPLE)); - self::register("ender_pearl", $factory->fromTypeId(Ids::ENDER_PEARL)); - self::register("experience_bottle", $factory->fromTypeId(Ids::EXPERIENCE_BOTTLE)); - self::register("feather", $factory->fromTypeId(Ids::FEATHER)); - self::register("fermented_spider_eye", $factory->fromTypeId(Ids::FERMENTED_SPIDER_EYE)); - self::register("fishing_rod", $factory->fromTypeId(Ids::FISHING_ROD)); - self::register("flint", $factory->fromTypeId(Ids::FLINT)); - self::register("flint_and_steel", $factory->fromTypeId(Ids::FLINT_AND_STEEL)); - self::register("ghast_tear", $factory->fromTypeId(Ids::GHAST_TEAR)); - self::register("glass_bottle", $factory->fromTypeId(Ids::GLASS_BOTTLE)); - self::register("glistering_melon", $factory->fromTypeId(Ids::GLISTERING_MELON)); - self::register("glow_ink_sac", $factory->fromTypeId(Ids::GLOW_INK_SAC)); - self::register("glowstone_dust", $factory->fromTypeId(Ids::GLOWSTONE_DUST)); - self::register("gold_ingot", $factory->fromTypeId(Ids::GOLD_INGOT)); - self::register("gold_nugget", $factory->fromTypeId(Ids::GOLD_NUGGET)); - self::register("golden_apple", $factory->fromTypeId(Ids::GOLDEN_APPLE)); - self::register("golden_axe", $factory->fromTypeId(Ids::GOLDEN_AXE)); - self::register("golden_boots", $factory->fromTypeId(Ids::GOLDEN_BOOTS)); - self::register("golden_carrot", $factory->fromTypeId(Ids::GOLDEN_CARROT)); - self::register("golden_chestplate", $factory->fromTypeId(Ids::GOLDEN_CHESTPLATE)); - self::register("golden_helmet", $factory->fromTypeId(Ids::GOLDEN_HELMET)); - self::register("golden_hoe", $factory->fromTypeId(Ids::GOLDEN_HOE)); - self::register("golden_leggings", $factory->fromTypeId(Ids::GOLDEN_LEGGINGS)); - self::register("golden_pickaxe", $factory->fromTypeId(Ids::GOLDEN_PICKAXE)); - self::register("golden_shovel", $factory->fromTypeId(Ids::GOLDEN_SHOVEL)); - self::register("golden_sword", $factory->fromTypeId(Ids::GOLDEN_SWORD)); - self::register("gunpowder", $factory->fromTypeId(Ids::GUNPOWDER)); - self::register("heart_of_the_sea", $factory->fromTypeId(Ids::HEART_OF_THE_SEA)); - self::register("honeycomb", $factory->fromTypeId(Ids::HONEYCOMB)); - self::register("ink_sac", $factory->fromTypeId(Ids::INK_SAC)); - self::register("iron_axe", $factory->fromTypeId(Ids::IRON_AXE)); - self::register("iron_boots", $factory->fromTypeId(Ids::IRON_BOOTS)); - self::register("iron_chestplate", $factory->fromTypeId(Ids::IRON_CHESTPLATE)); - self::register("iron_helmet", $factory->fromTypeId(Ids::IRON_HELMET)); - self::register("iron_hoe", $factory->fromTypeId(Ids::IRON_HOE)); - self::register("iron_ingot", $factory->fromTypeId(Ids::IRON_INGOT)); - self::register("iron_leggings", $factory->fromTypeId(Ids::IRON_LEGGINGS)); - self::register("iron_nugget", $factory->fromTypeId(Ids::IRON_NUGGET)); - self::register("iron_pickaxe", $factory->fromTypeId(Ids::IRON_PICKAXE)); - self::register("iron_shovel", $factory->fromTypeId(Ids::IRON_SHOVEL)); - self::register("iron_sword", $factory->fromTypeId(Ids::IRON_SWORD)); - self::register("jungle_boat", $factory->fromTypeId(Ids::JUNGLE_BOAT)); - self::register("jungle_sign", $factory->fromTypeId(Ids::JUNGLE_SIGN)); - self::register("lapis_lazuli", $factory->fromTypeId(Ids::LAPIS_LAZULI)); - self::register("lava_bucket", $factory->fromTypeId(Ids::LAVA_BUCKET)); - self::register("leather", $factory->fromTypeId(Ids::LEATHER)); - self::register("leather_boots", $factory->fromTypeId(Ids::LEATHER_BOOTS)); - self::register("leather_cap", $factory->fromTypeId(Ids::LEATHER_CAP)); - self::register("leather_pants", $factory->fromTypeId(Ids::LEATHER_PANTS)); - self::register("leather_tunic", $factory->fromTypeId(Ids::LEATHER_TUNIC)); - self::register("magma_cream", $factory->fromTypeId(Ids::MAGMA_CREAM)); - self::register("mangrove_sign", $factory->fromTypeId(Ids::MANGROVE_SIGN)); - self::register("melon", $factory->fromTypeId(Ids::MELON)); - self::register("melon_seeds", $factory->fromTypeId(Ids::MELON_SEEDS)); - self::register("milk_bucket", $factory->fromTypeId(Ids::MILK_BUCKET)); - self::register("minecart", $factory->fromTypeId(Ids::MINECART)); - self::register("mushroom_stew", $factory->fromTypeId(Ids::MUSHROOM_STEW)); - self::register("nautilus_shell", $factory->fromTypeId(Ids::NAUTILUS_SHELL)); - self::register("nether_brick", $factory->fromTypeId(Ids::NETHER_BRICK)); - self::register("nether_quartz", $factory->fromTypeId(Ids::NETHER_QUARTZ)); - self::register("nether_star", $factory->fromTypeId(Ids::NETHER_STAR)); - self::register("oak_boat", $factory->fromTypeId(Ids::OAK_BOAT)); - self::register("oak_sign", $factory->fromTypeId(Ids::OAK_SIGN)); - self::register("painting", $factory->fromTypeId(Ids::PAINTING)); - self::register("paper", $factory->fromTypeId(Ids::PAPER)); - self::register("phantom_membrane", $factory->fromTypeId(Ids::PHANTOM_MEMBRANE)); - self::register("poisonous_potato", $factory->fromTypeId(Ids::POISONOUS_POTATO)); - self::register("popped_chorus_fruit", $factory->fromTypeId(Ids::POPPED_CHORUS_FRUIT)); - self::register("potato", $factory->fromTypeId(Ids::POTATO)); - self::register("potion", $factory->fromTypeId(Ids::POTION)); - self::register("prismarine_crystals", $factory->fromTypeId(Ids::PRISMARINE_CRYSTALS)); - self::register("prismarine_shard", $factory->fromTypeId(Ids::PRISMARINE_SHARD)); - self::register("pufferfish", $factory->fromTypeId(Ids::PUFFERFISH)); - self::register("pumpkin_pie", $factory->fromTypeId(Ids::PUMPKIN_PIE)); - self::register("pumpkin_seeds", $factory->fromTypeId(Ids::PUMPKIN_SEEDS)); - self::register("rabbit_foot", $factory->fromTypeId(Ids::RABBIT_FOOT)); - self::register("rabbit_hide", $factory->fromTypeId(Ids::RABBIT_HIDE)); - self::register("rabbit_stew", $factory->fromTypeId(Ids::RABBIT_STEW)); - self::register("raw_beef", $factory->fromTypeId(Ids::RAW_BEEF)); - self::register("raw_chicken", $factory->fromTypeId(Ids::RAW_CHICKEN)); - self::register("raw_copper", $factory->fromTypeId(Ids::RAW_COPPER)); - self::register("raw_fish", $factory->fromTypeId(Ids::RAW_FISH)); - self::register("raw_gold", $factory->fromTypeId(Ids::RAW_GOLD)); - self::register("raw_iron", $factory->fromTypeId(Ids::RAW_IRON)); - self::register("raw_mutton", $factory->fromTypeId(Ids::RAW_MUTTON)); - self::register("raw_porkchop", $factory->fromTypeId(Ids::RAW_PORKCHOP)); - self::register("raw_rabbit", $factory->fromTypeId(Ids::RAW_RABBIT)); - self::register("raw_salmon", $factory->fromTypeId(Ids::RAW_SALMON)); - self::register("record_11", $factory->fromTypeId(Ids::RECORD_11)); - self::register("record_13", $factory->fromTypeId(Ids::RECORD_13)); - self::register("record_blocks", $factory->fromTypeId(Ids::RECORD_BLOCKS)); - self::register("record_cat", $factory->fromTypeId(Ids::RECORD_CAT)); - self::register("record_chirp", $factory->fromTypeId(Ids::RECORD_CHIRP)); - self::register("record_far", $factory->fromTypeId(Ids::RECORD_FAR)); - self::register("record_mall", $factory->fromTypeId(Ids::RECORD_MALL)); - self::register("record_mellohi", $factory->fromTypeId(Ids::RECORD_MELLOHI)); - self::register("record_stal", $factory->fromTypeId(Ids::RECORD_STAL)); - self::register("record_strad", $factory->fromTypeId(Ids::RECORD_STRAD)); - self::register("record_wait", $factory->fromTypeId(Ids::RECORD_WAIT)); - self::register("record_ward", $factory->fromTypeId(Ids::RECORD_WARD)); - self::register("redstone_dust", $factory->fromTypeId(Ids::REDSTONE_DUST)); - self::register("rotten_flesh", $factory->fromTypeId(Ids::ROTTEN_FLESH)); - self::register("scute", $factory->fromTypeId(Ids::SCUTE)); - self::register("shears", $factory->fromTypeId(Ids::SHEARS)); - self::register("shulker_shell", $factory->fromTypeId(Ids::SHULKER_SHELL)); - self::register("slimeball", $factory->fromTypeId(Ids::SLIMEBALL)); - self::register("snowball", $factory->fromTypeId(Ids::SNOWBALL)); - self::register("spider_eye", $factory->fromTypeId(Ids::SPIDER_EYE)); - self::register("splash_potion", $factory->fromTypeId(Ids::SPLASH_POTION)); - self::register("spruce_boat", $factory->fromTypeId(Ids::SPRUCE_BOAT)); - self::register("spruce_sign", $factory->fromTypeId(Ids::SPRUCE_SIGN)); - self::register("spyglass", $factory->fromTypeId(Ids::SPYGLASS)); - self::register("squid_spawn_egg", $factory->fromTypeId(Ids::SQUID_SPAWN_EGG)); - self::register("steak", $factory->fromTypeId(Ids::STEAK)); - self::register("stick", $factory->fromTypeId(Ids::STICK)); - self::register("stone_axe", $factory->fromTypeId(Ids::STONE_AXE)); - self::register("stone_hoe", $factory->fromTypeId(Ids::STONE_HOE)); - self::register("stone_pickaxe", $factory->fromTypeId(Ids::STONE_PICKAXE)); - self::register("stone_shovel", $factory->fromTypeId(Ids::STONE_SHOVEL)); - self::register("stone_sword", $factory->fromTypeId(Ids::STONE_SWORD)); - self::register("string", $factory->fromTypeId(Ids::STRING)); - self::register("sugar", $factory->fromTypeId(Ids::SUGAR)); - self::register("sweet_berries", $factory->fromTypeId(Ids::SWEET_BERRIES)); - self::register("totem", $factory->fromTypeId(Ids::TOTEM)); - self::register("villager_spawn_egg", $factory->fromTypeId(Ids::VILLAGER_SPAWN_EGG)); - self::register("warped_sign", $factory->fromTypeId(Ids::WARPED_SIGN)); - self::register("water_bucket", $factory->fromTypeId(Ids::WATER_BUCKET)); - self::register("wheat", $factory->fromTypeId(Ids::WHEAT)); - self::register("wheat_seeds", $factory->fromTypeId(Ids::WHEAT_SEEDS)); - self::register("wooden_axe", $factory->fromTypeId(Ids::WOODEN_AXE)); - self::register("wooden_hoe", $factory->fromTypeId(Ids::WOODEN_HOE)); - self::register("wooden_pickaxe", $factory->fromTypeId(Ids::WOODEN_PICKAXE)); - self::register("wooden_shovel", $factory->fromTypeId(Ids::WOODEN_SHOVEL)); - self::register("wooden_sword", $factory->fromTypeId(Ids::WOODEN_SWORD)); - self::register("writable_book", $factory->fromTypeId(Ids::WRITABLE_BOOK)); - self::register("written_book", $factory->fromTypeId(Ids::WRITTEN_BOOK)); - self::register("zombie_spawn_egg", $factory->fromTypeId(Ids::ZOMBIE_SPAWN_EGG)); + self::register("apple", new Apple(new IID(Ids::APPLE), "Apple")); + self::register("arrow", new Arrow(new IID(Ids::ARROW), "Arrow")); + + self::register("baked_potato", new BakedPotato(new IID(Ids::BAKED_POTATO), "Baked Potato")); + self::register("bamboo", new Bamboo(new IID(Ids::BAMBOO), "Bamboo")); + self::register("beetroot", new Beetroot(new IID(Ids::BEETROOT), "Beetroot")); + self::register("beetroot_seeds", new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS), "Beetroot Seeds")); + self::register("beetroot_soup", new BeetrootSoup(new IID(Ids::BEETROOT_SOUP), "Beetroot Soup")); + self::register("blaze_rod", new BlazeRod(new IID(Ids::BLAZE_ROD), "Blaze Rod")); + self::register("book", new Book(new IID(Ids::BOOK), "Book")); + self::register("bow", new Bow(new IID(Ids::BOW), "Bow")); + self::register("bowl", new Bowl(new IID(Ids::BOWL), "Bowl")); + self::register("bread", new Bread(new IID(Ids::BREAD), "Bread")); + self::register("bucket", new Bucket(new IID(Ids::BUCKET), "Bucket")); + self::register("carrot", new Carrot(new IID(Ids::CARROT), "Carrot")); + self::register("chorus_fruit", new ChorusFruit(new IID(Ids::CHORUS_FRUIT), "Chorus Fruit")); + self::register("clock", new Clock(new IID(Ids::CLOCK), "Clock")); + self::register("clownfish", new Clownfish(new IID(Ids::CLOWNFISH), "Clownfish")); + self::register("coal", new Coal(new IID(Ids::COAL), "Coal")); + + self::register("coral_fan", new CoralFan(new IID(Ids::CORAL_FAN))); + + self::register("charcoal", new Coal(new IID(Ids::CHARCOAL), "Charcoal")); + self::register("cocoa_beans", new CocoaBeans(new IID(Ids::COCOA_BEANS), "Cocoa Beans")); + self::register("compass", new Compass(new IID(Ids::COMPASS), "Compass")); + self::register("cooked_chicken", new CookedChicken(new IID(Ids::COOKED_CHICKEN), "Cooked Chicken")); + self::register("cooked_fish", new CookedFish(new IID(Ids::COOKED_FISH), "Cooked Fish")); + self::register("cooked_mutton", new CookedMutton(new IID(Ids::COOKED_MUTTON), "Cooked Mutton")); + self::register("cooked_porkchop", new CookedPorkchop(new IID(Ids::COOKED_PORKCHOP), "Cooked Porkchop")); + self::register("cooked_rabbit", new CookedRabbit(new IID(Ids::COOKED_RABBIT), "Cooked Rabbit")); + self::register("cooked_salmon", new CookedSalmon(new IID(Ids::COOKED_SALMON), "Cooked Salmon")); + self::register("cookie", new Cookie(new IID(Ids::COOKIE), "Cookie")); + self::register("dried_kelp", new DriedKelp(new IID(Ids::DRIED_KELP), "Dried Kelp")); + self::register("egg", new Egg(new IID(Ids::EGG), "Egg")); + self::register("ender_pearl", new EnderPearl(new IID(Ids::ENDER_PEARL), "Ender Pearl")); + self::register("experience_bottle", new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); + self::register("bone_meal", new Fertilizer(new IID(Ids::BONE_MEAL), "Bone Meal")); + self::register("fishing_rod", new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); + self::register("flint_and_steel", new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); + self::register("glass_bottle", new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); + self::register("golden_apple", new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); + self::register("enchanted_golden_apple", new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); + self::register("golden_carrot", new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); + self::register("amethyst_shard", new Item(new IID(Ids::AMETHYST_SHARD), "Amethyst Shard")); + self::register("blaze_powder", new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); + self::register("bleach", new Item(new IID(Ids::BLEACH), "Bleach")); + self::register("bone", new Item(new IID(Ids::BONE), "Bone")); + self::register("brick", new Item(new IID(Ids::BRICK), "Brick")); + self::register("popped_chorus_fruit", new Item(new IID(Ids::POPPED_CHORUS_FRUIT), "Popped Chorus Fruit")); + self::register("clay", new Item(new IID(Ids::CLAY), "Clay")); + self::register("chemical_salt", new Item(new IID(Ids::CHEMICAL_SALT), "Salt")); + self::register("chemical_sodium_oxide", new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE), "Sodium Oxide")); + self::register("chemical_sodium_hydroxide", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE), "Sodium Hydroxide")); + self::register("chemical_magnesium_nitrate", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE), "Magnesium Nitrate")); + self::register("chemical_iron_sulphide", new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE), "Iron Sulphide")); + self::register("chemical_lithium_hydride", new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE), "Lithium Hydride")); + self::register("chemical_sodium_hydride", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE), "Sodium Hydride")); + self::register("chemical_calcium_bromide", new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE), "Calcium Bromide")); + self::register("chemical_magnesium_oxide", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE), "Magnesium Oxide")); + self::register("chemical_sodium_acetate", new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE), "Sodium Acetate")); + self::register("chemical_luminol", new Item(new IID(Ids::CHEMICAL_LUMINOL), "Luminol")); + self::register("chemical_charcoal", new Item(new IID(Ids::CHEMICAL_CHARCOAL), "Charcoal")); + self::register("chemical_sugar", new Item(new IID(Ids::CHEMICAL_SUGAR), "Sugar")); + self::register("chemical_aluminium_oxide", new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE), "Aluminium Oxide")); + self::register("chemical_boron_trioxide", new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE), "Boron Trioxide")); + self::register("chemical_soap", new Item(new IID(Ids::CHEMICAL_SOAP), "Soap")); + self::register("chemical_polyethylene", new Item(new IID(Ids::CHEMICAL_POLYETHYLENE), "Polyethylene")); + self::register("chemical_rubbish", new Item(new IID(Ids::CHEMICAL_RUBBISH), "Rubbish")); + self::register("chemical_magnesium_salts", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS), "Magnesium Salts")); + self::register("chemical_sulphate", new Item(new IID(Ids::CHEMICAL_SULPHATE), "Sulphate")); + self::register("chemical_barium_sulphate", new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE), "Barium Sulphate")); + self::register("chemical_potassium_chloride", new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE), "Potassium Chloride")); + self::register("chemical_mercuric_chloride", new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE), "Mercuric Chloride")); + self::register("chemical_cerium_chloride", new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE), "Cerium Chloride")); + self::register("chemical_tungsten_chloride", new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE), "Tungsten Chloride")); + self::register("chemical_calcium_chloride", new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE), "Calcium Chloride")); + self::register("chemical_water", new Item(new IID(Ids::CHEMICAL_WATER), "Water")); + self::register("chemical_glue", new Item(new IID(Ids::CHEMICAL_GLUE), "Glue")); + self::register("chemical_hypochlorite", new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE), "Hypochlorite")); + self::register("chemical_crude_oil", new Item(new IID(Ids::CHEMICAL_CRUDE_OIL), "Crude Oil")); + self::register("chemical_latex", new Item(new IID(Ids::CHEMICAL_LATEX), "Latex")); + self::register("chemical_potassium_iodide", new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE), "Potassium Iodide")); + self::register("chemical_sodium_fluoride", new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE), "Sodium Fluoride")); + self::register("chemical_benzene", new Item(new IID(Ids::CHEMICAL_BENZENE), "Benzene")); + self::register("chemical_ink", new Item(new IID(Ids::CHEMICAL_INK), "Ink")); + self::register("chemical_hydrogen_peroxide", new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); + self::register("chemical_ammonia", new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); + self::register("chemical_sodium_hypochlorite", new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); + self::register("diamond", new Item(new IID(Ids::DIAMOND), "Diamond")); + self::register("disc_fragment_5", new Item(new IID(Ids::DISC_FRAGMENT_5), "Disc Fragment (5)")); + self::register("dragon_breath", new Item(new IID(Ids::DRAGON_BREATH), "Dragon's Breath")); + self::register("glow_ink_sac", new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); + self::register("ink_sac", new Item(new IID(Ids::INK_SAC), "Ink Sac")); + self::register("lapis_lazuli", new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); + self::register("echo_shard", new Item(new IID(Ids::ECHO_SHARD), "Echo Shard")); + self::register("emerald", new Item(new IID(Ids::EMERALD), "Emerald")); + self::register("feather", new Item(new IID(Ids::FEATHER), "Feather")); + self::register("fermented_spider_eye", new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); + self::register("flint", new Item(new IID(Ids::FLINT), "Flint")); + self::register("ghast_tear", new Item(new IID(Ids::GHAST_TEAR), "Ghast Tear")); + self::register("glistering_melon", new Item(new IID(Ids::GLISTERING_MELON), "Glistering Melon")); + self::register("glowstone_dust", new Item(new IID(Ids::GLOWSTONE_DUST), "Glowstone Dust")); + self::register("gold_ingot", new Item(new IID(Ids::GOLD_INGOT), "Gold Ingot")); + self::register("gold_nugget", new Item(new IID(Ids::GOLD_NUGGET), "Gold Nugget")); + self::register("gunpowder", new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); + self::register("heart_of_the_sea", new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); + self::register("honeycomb", new Item(new IID(Ids::HONEYCOMB), "Honeycomb")); + self::register("iron_ingot", new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); + self::register("iron_nugget", new Item(new IID(Ids::IRON_NUGGET), "Iron Nugget")); + self::register("leather", new Item(new IID(Ids::LEATHER), "Leather")); + self::register("magma_cream", new Item(new IID(Ids::MAGMA_CREAM), "Magma Cream")); + self::register("nautilus_shell", new Item(new IID(Ids::NAUTILUS_SHELL), "Nautilus Shell")); + self::register("nether_brick", new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); + self::register("nether_quartz", new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); + self::register("nether_star", new Item(new IID(Ids::NETHER_STAR), "Nether Star")); + self::register("paper", new Item(new IID(Ids::PAPER), "Paper")); + self::register("prismarine_crystals", new Item(new IID(Ids::PRISMARINE_CRYSTALS), "Prismarine Crystals")); + self::register("prismarine_shard", new Item(new IID(Ids::PRISMARINE_SHARD), "Prismarine Shard")); + self::register("rabbit_foot", new Item(new IID(Ids::RABBIT_FOOT), "Rabbit's Foot")); + self::register("rabbit_hide", new Item(new IID(Ids::RABBIT_HIDE), "Rabbit Hide")); + self::register("shulker_shell", new Item(new IID(Ids::SHULKER_SHELL), "Shulker Shell")); + self::register("slimeball", new Item(new IID(Ids::SLIMEBALL), "Slimeball")); + self::register("sugar", new Item(new IID(Ids::SUGAR), "Sugar")); + self::register("scute", new Item(new IID(Ids::SCUTE), "Scute")); + self::register("wheat", new Item(new IID(Ids::WHEAT), "Wheat")); + self::register("copper_ingot", new Item(new IID(Ids::COPPER_INGOT), "Copper Ingot")); + self::register("raw_copper", new Item(new IID(Ids::RAW_COPPER), "Raw Copper")); + self::register("raw_iron", new Item(new IID(Ids::RAW_IRON), "Raw Iron")); + self::register("raw_gold", new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); + self::register("phantom_membrane", new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); + + self::register("water_bucket", new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); + self::register("lava_bucket", new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); + self::register("melon", new Melon(new IID(Ids::MELON), "Melon")); + self::register("melon_seeds", new MelonSeeds(new IID(Ids::MELON_SEEDS), "Melon Seeds")); + self::register("milk_bucket", new MilkBucket(new IID(Ids::MILK_BUCKET), "Milk Bucket")); + self::register("minecart", new Minecart(new IID(Ids::MINECART), "Minecart")); + self::register("mushroom_stew", new MushroomStew(new IID(Ids::MUSHROOM_STEW), "Mushroom Stew")); + self::register("painting", new PaintingItem(new IID(Ids::PAINTING), "Painting")); + self::register("poisonous_potato", new PoisonousPotato(new IID(Ids::POISONOUS_POTATO), "Poisonous Potato")); + self::register("potato", new Potato(new IID(Ids::POTATO), "Potato")); + self::register("pufferfish", new Pufferfish(new IID(Ids::PUFFERFISH), "Pufferfish")); + self::register("pumpkin_pie", new PumpkinPie(new IID(Ids::PUMPKIN_PIE), "Pumpkin Pie")); + self::register("pumpkin_seeds", new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS), "Pumpkin Seeds")); + self::register("rabbit_stew", new RabbitStew(new IID(Ids::RABBIT_STEW), "Rabbit Stew")); + self::register("raw_beef", new RawBeef(new IID(Ids::RAW_BEEF), "Raw Beef")); + self::register("raw_chicken", new RawChicken(new IID(Ids::RAW_CHICKEN), "Raw Chicken")); + self::register("raw_fish", new RawFish(new IID(Ids::RAW_FISH), "Raw Fish")); + self::register("raw_mutton", new RawMutton(new IID(Ids::RAW_MUTTON), "Raw Mutton")); + self::register("raw_porkchop", new RawPorkchop(new IID(Ids::RAW_PORKCHOP), "Raw Porkchop")); + self::register("raw_rabbit", new RawRabbit(new IID(Ids::RAW_RABBIT), "Raw Rabbit")); + self::register("raw_salmon", new RawSalmon(new IID(Ids::RAW_SALMON), "Raw Salmon")); + self::register("record_13", new Record(new IID(Ids::RECORD_13), RecordType::DISK_13(), "Record 13")); + self::register("record_cat", new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); + self::register("record_blocks", new Record(new IID(Ids::RECORD_BLOCKS), RecordType::DISK_BLOCKS(), "Record Blocks")); + self::register("record_chirp", new Record(new IID(Ids::RECORD_CHIRP), RecordType::DISK_CHIRP(), "Record Chirp")); + self::register("record_far", new Record(new IID(Ids::RECORD_FAR), RecordType::DISK_FAR(), "Record Far")); + self::register("record_mall", new Record(new IID(Ids::RECORD_MALL), RecordType::DISK_MALL(), "Record Mall")); + self::register("record_mellohi", new Record(new IID(Ids::RECORD_MELLOHI), RecordType::DISK_MELLOHI(), "Record Mellohi")); + self::register("record_stal", new Record(new IID(Ids::RECORD_STAL), RecordType::DISK_STAL(), "Record Stal")); + self::register("record_strad", new Record(new IID(Ids::RECORD_STRAD), RecordType::DISK_STRAD(), "Record Strad")); + self::register("record_ward", new Record(new IID(Ids::RECORD_WARD), RecordType::DISK_WARD(), "Record Ward")); + self::register("record_11", new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); + self::register("record_wait", new Record(new IID(Ids::RECORD_WAIT), RecordType::DISK_WAIT(), "Record Wait")); + self::register("redstone_dust", new Redstone(new IID(Ids::REDSTONE_DUST), "Redstone")); + self::register("rotten_flesh", new RottenFlesh(new IID(Ids::ROTTEN_FLESH), "Rotten Flesh")); + self::register("shears", new Shears(new IID(Ids::SHEARS), "Shears")); + self::register("oak_sign", new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); + self::register("spruce_sign", new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); + self::register("birch_sign", new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); + self::register("jungle_sign", new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); + self::register("acacia_sign", new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); + self::register("dark_oak_sign", new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); + self::register("mangrove_sign", new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); + self::register("crimson_sign", new ItemBlockWallOrFloor(new IID(Ids::CRIMSON_SIGN), Blocks::CRIMSON_SIGN(), Blocks::CRIMSON_WALL_SIGN())); + self::register("warped_sign", new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); + self::register("snowball", new Snowball(new IID(Ids::SNOWBALL), "Snowball")); + self::register("spider_eye", new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); + self::register("spyglass", new Spyglass(new IID(Ids::SPYGLASS), "Spyglass")); + self::register("steak", new Steak(new IID(Ids::STEAK), "Steak")); + self::register("stick", new Stick(new IID(Ids::STICK), "Stick")); + self::register("string", new StringItem(new IID(Ids::STRING), "String")); + self::register("sweet_berries", new SweetBerries(new IID(Ids::SWEET_BERRIES), "Sweet Berries")); + self::register("totem", new Totem(new IID(Ids::TOTEM), "Totem of Undying")); + self::register("wheat_seeds", new WheatSeeds(new IID(Ids::WHEAT_SEEDS), "Wheat Seeds")); + self::register("writable_book", new WritableBook(new IID(Ids::WRITABLE_BOOK), "Book & Quill")); + self::register("written_book", new WrittenBook(new IID(Ids::WRITTEN_BOOK), "Written Book")); + + //TODO: add interface to dye-colour objects + self::register("dye", new Dye(new IID(Ids::DYE), "Dye")); + + self::register("banner", new Banner(new IID(Ids::BANNER), Blocks::BANNER(), Blocks::WALL_BANNER())); + + self::register("potion", new Potion(new IID(Ids::POTION), "Potion")); + self::register("splash_potion", new SplashPotion(new IID(Ids::SPLASH_POTION), "Splash Potion")); + + foreach(TreeType::getAll() as $type){ + //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency + self::register($type->name() . "_boat", new Boat(new IID(match($type){ + TreeType::OAK() => Ids::OAK_BOAT, + TreeType::SPRUCE() => Ids::SPRUCE_BOAT, + TreeType::BIRCH() => Ids::BIRCH_BOAT, + TreeType::JUNGLE() => Ids::JUNGLE_BOAT, + TreeType::ACACIA() => Ids::ACACIA_BOAT, + TreeType::DARK_OAK() => Ids::DARK_OAK_BOAT, + default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) + }), $type->getDisplayName() . " Boat", $type)); + } } + + private static function registerSpawnEggs() : void{ + self::register("zombie_spawn_egg", new class(new IID(Ids::ZOMBIE_SPAWN_EGG), "Zombie Spawn Egg") extends SpawnEgg{ + protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ + return new Zombie(Location::fromObject($pos, $world, $yaw, $pitch)); + } + }); + self::register("squid_spawn_egg", new class(new IID(Ids::SQUID_SPAWN_EGG), "Squid Spawn Egg") extends SpawnEgg{ + public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ + return new Squid(Location::fromObject($pos, $world, $yaw, $pitch)); + } + }); + self::register("villager_spawn_egg", new class(new IID(Ids::VILLAGER_SPAWN_EGG), "Villager Spawn Egg") extends SpawnEgg{ + public function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{ + return new Villager(Location::fromObject($pos, $world, $yaw, $pitch)); + } + }); + } + + private static function registerTierToolItems() : void{ + self::register("diamond_axe", new Axe(new IID(Ids::DIAMOND_AXE), "Diamond Axe", ToolTier::DIAMOND())); + self::register("golden_axe", new Axe(new IID(Ids::GOLDEN_AXE), "Golden Axe", ToolTier::GOLD())); + self::register("iron_axe", new Axe(new IID(Ids::IRON_AXE), "Iron Axe", ToolTier::IRON())); + self::register("stone_axe", new Axe(new IID(Ids::STONE_AXE), "Stone Axe", ToolTier::STONE())); + self::register("wooden_axe", new Axe(new IID(Ids::WOODEN_AXE), "Wooden Axe", ToolTier::WOOD())); + self::register("diamond_hoe", new Hoe(new IID(Ids::DIAMOND_HOE), "Diamond Hoe", ToolTier::DIAMOND())); + self::register("golden_hoe", new Hoe(new IID(Ids::GOLDEN_HOE), "Golden Hoe", ToolTier::GOLD())); + self::register("iron_hoe", new Hoe(new IID(Ids::IRON_HOE), "Iron Hoe", ToolTier::IRON())); + self::register("stone_hoe", new Hoe(new IID(Ids::STONE_HOE), "Stone Hoe", ToolTier::STONE())); + self::register("wooden_hoe", new Hoe(new IID(Ids::WOODEN_HOE), "Wooden Hoe", ToolTier::WOOD())); + self::register("diamond_pickaxe", new Pickaxe(new IID(Ids::DIAMOND_PICKAXE), "Diamond Pickaxe", ToolTier::DIAMOND())); + self::register("golden_pickaxe", new Pickaxe(new IID(Ids::GOLDEN_PICKAXE), "Golden Pickaxe", ToolTier::GOLD())); + self::register("iron_pickaxe", new Pickaxe(new IID(Ids::IRON_PICKAXE), "Iron Pickaxe", ToolTier::IRON())); + self::register("stone_pickaxe", new Pickaxe(new IID(Ids::STONE_PICKAXE), "Stone Pickaxe", ToolTier::STONE())); + self::register("wooden_pickaxe", new Pickaxe(new IID(Ids::WOODEN_PICKAXE), "Wooden Pickaxe", ToolTier::WOOD())); + self::register("diamond_shovel", new Shovel(new IID(Ids::DIAMOND_SHOVEL), "Diamond Shovel", ToolTier::DIAMOND())); + self::register("golden_shovel", new Shovel(new IID(Ids::GOLDEN_SHOVEL), "Golden Shovel", ToolTier::GOLD())); + self::register("iron_shovel", new Shovel(new IID(Ids::IRON_SHOVEL), "Iron Shovel", ToolTier::IRON())); + self::register("stone_shovel", new Shovel(new IID(Ids::STONE_SHOVEL), "Stone Shovel", ToolTier::STONE())); + self::register("wooden_shovel", new Shovel(new IID(Ids::WOODEN_SHOVEL), "Wooden Shovel", ToolTier::WOOD())); + self::register("diamond_sword", new Sword(new IID(Ids::DIAMOND_SWORD), "Diamond Sword", ToolTier::DIAMOND())); + self::register("golden_sword", new Sword(new IID(Ids::GOLDEN_SWORD), "Golden Sword", ToolTier::GOLD())); + self::register("iron_sword", new Sword(new IID(Ids::IRON_SWORD), "Iron Sword", ToolTier::IRON())); + self::register("stone_sword", new Sword(new IID(Ids::STONE_SWORD), "Stone Sword", ToolTier::STONE())); + self::register("wooden_sword", new Sword(new IID(Ids::WOODEN_SWORD), "Wooden Sword", ToolTier::WOOD())); + } + + private static function registerArmorItems() : void{ + self::register("chainmail_boots", new Armor(new IID(Ids::CHAINMAIL_BOOTS), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); + self::register("diamond_boots", new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); + self::register("golden_boots", new Armor(new IID(Ids::GOLDEN_BOOTS), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); + self::register("iron_boots", new Armor(new IID(Ids::IRON_BOOTS), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); + self::register("leather_boots", new Armor(new IID(Ids::LEATHER_BOOTS), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); + self::register("chainmail_chestplate", new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); + self::register("diamond_chestplate", new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); + self::register("golden_chestplate", new Armor(new IID(Ids::GOLDEN_CHESTPLATE), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); + self::register("iron_chestplate", new Armor(new IID(Ids::IRON_CHESTPLATE), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); + self::register("leather_tunic", new Armor(new IID(Ids::LEATHER_TUNIC), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); + self::register("chainmail_helmet", new Armor(new IID(Ids::CHAINMAIL_HELMET), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + self::register("diamond_helmet", new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); + self::register("golden_helmet", new Armor(new IID(Ids::GOLDEN_HELMET), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); + self::register("iron_helmet", new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + self::register("leather_cap", new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); + self::register("chainmail_leggings", new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); + self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); + self::register("golden_leggings", new Armor(new IID(Ids::GOLDEN_LEGGINGS), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); + self::register("iron_leggings", new Armor(new IID(Ids::IRON_LEGGINGS), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); + self::register("leather_pants", new Armor(new IID(Ids::LEATHER_PANTS), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); + } + } From 4d6fb2b92535db9f1c437038659be353f5d8beaa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Jul 2022 23:57:29 +0100 Subject: [PATCH 302/692] Removed ItemFactory --- src/item/ItemFactory.php | 93 ------------------- .../item/ItemSerializerDeserializerTest.php | 4 +- 2 files changed, 2 insertions(+), 95 deletions(-) delete mode 100644 src/item/ItemFactory.php diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php deleted file mode 100644 index 49b594363..000000000 --- a/src/item/ItemFactory.php +++ /dev/null @@ -1,93 +0,0 @@ -isNull()){ - continue; - } - $this->register($item); - } - } - - /** - * Maps an item type to its corresponding ID. This is necessary to ensure that the item is correctly loaded when - * reading data from disk storage. - * - * NOTE: If you are registering a new item type, you will need to add it to the creative inventory yourself - it - * will not automatically appear there. - * - * @throws \RuntimeException if something attempted to override an already-registered item without specifying the - * $override parameter. - */ - public function register(Item $item, bool $override = false) : void{ - $id = $item->getTypeId(); - - if(!$override && $this->isRegistered($id)){ - throw new \RuntimeException("Trying to overwrite an already registered item"); - } - - $this->list[$id] = clone $item; - } - - private static function itemToBlockId(int $id) : int{ - if($id > 0){ - throw new \InvalidArgumentException("ID $id is not a block ID"); - } - return -$id; - } - - /** - * Returns whether the specified item ID is already registered in the item factory. - */ - public function isRegistered(int $id) : bool{ - if($id <= 0){ - return BlockFactory::getInstance()->isRegistered(self::itemToBlockId($id)); - } - - return isset($this->list[$id]); - } - - /** - * @return Item[] - */ - public function getAllKnownTypes() : array{ - return $this->list; - } -} diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index 80ff0c4a4..a7617735c 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -25,7 +25,7 @@ namespace pocketmine\data\bedrock\item; use PHPUnit\Framework\TestCase; use pocketmine\block\BlockFactory; -use pocketmine\item\ItemFactory; +use pocketmine\item\VanillaItems; use pocketmine\world\format\io\GlobalBlockStateHandlers; final class ItemSerializerDeserializerTest extends TestCase{ @@ -39,7 +39,7 @@ final class ItemSerializerDeserializerTest extends TestCase{ } public function testAllVanillaItemsSerializableAndDeserializable() : void{ - foreach(ItemFactory::getInstance()->getAllKnownTypes() as $item){ + foreach(VanillaItems::getAll() as $item){ if($item->isNull()){ continue; } From e4d24e1edd36bbaa66827ba5b4357edc6f95c8b1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 00:22:08 +0100 Subject: [PATCH 303/692] Invert dependency between VanillaBlocks and BlockFactory --- src/block/BlockFactory.php | 767 +------------------ src/block/VanillaBlocks.php | 1395 +++++++++++++++++++---------------- 2 files changed, 774 insertions(+), 1388 deletions(-) diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 6d867c9ee..d07f4b526 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -25,36 +25,7 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\block\BlockToolType as ToolType; -use pocketmine\block\BlockTypeIds as Ids; -use pocketmine\block\tile\Banner as TileBanner; -use pocketmine\block\tile\Barrel as TileBarrel; -use pocketmine\block\tile\Beacon as TileBeacon; -use pocketmine\block\tile\Bed as TileBed; -use pocketmine\block\tile\Bell as TileBell; -use pocketmine\block\tile\BlastFurnace as TileBlastFurnace; -use pocketmine\block\tile\BrewingStand as TileBrewingStand; -use pocketmine\block\tile\Chest as TileChest; -use pocketmine\block\tile\Comparator as TileComparator; -use pocketmine\block\tile\DaylightSensor as TileDaylightSensor; -use pocketmine\block\tile\EnchantTable as TileEnchantingTable; -use pocketmine\block\tile\EnderChest as TileEnderChest; -use pocketmine\block\tile\FlowerPot as TileFlowerPot; -use pocketmine\block\tile\Hopper as TileHopper; -use pocketmine\block\tile\ItemFrame as TileItemFrame; -use pocketmine\block\tile\Jukebox as TileJukebox; -use pocketmine\block\tile\Lectern as TileLectern; -use pocketmine\block\tile\MonsterSpawner as TileMonsterSpawner; -use pocketmine\block\tile\NormalFurnace as TileNormalFurnace; -use pocketmine\block\tile\Note as TileNote; -use pocketmine\block\tile\ShulkerBox as TileShulkerBox; -use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\tile\Smoker as TileSmoker; -use pocketmine\block\utils\TreeType; -use pocketmine\block\utils\WoodType; use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; -use pocketmine\item\Item; -use pocketmine\item\ToolTier; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\light\LightUpdate; @@ -102,743 +73,9 @@ class BlockFactory{ public array $blastResistance = []; public function __construct(){ - $railBreakInfo = new BlockBreakInfo(0.7); - $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); - $this->register(new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); - $this->register(new Anvil(new BID(Ids::ANVIL), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ - public function getBreakTime(Item $item) : float{ - if($item->getBlockToolType() === ToolType::SWORD){ - return 0.0; - } - return parent::getBreakTime($item); - } - })); - $this->register(new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", BreakInfo::instant())); - - $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new FloorBanner(new BID(Ids::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); - $this->register(new WallBanner(new BID(Ids::WALL_BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - $this->register(new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Transparent(new BID(Ids::BARRIER), "Barrier", BreakInfo::indestructible())); - $this->register(new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - $this->register(new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); - $this->register(new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); - - $this->register(new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); - $this->register(new Bell(new BID(Ids::BELL, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - $this->register(new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - - $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); - $this->register(new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); - - $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", BreakInfo::instant())); - $this->register(new Cactus(new BID(Ids::CACTUS), "Cactus", new BreakInfo(0.4))); - $this->register(new Cake(new BID(Ids::CAKE), "Cake", new BreakInfo(0.5))); - $this->register(new Carrot(new BID(Ids::CARROTS), "Carrot Block", BreakInfo::instant())); - - $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); - $this->register(new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); - $this->register(new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Coal(new BID(Ids::COAL), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - - $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register($cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - - $this->register(new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - $this->register(new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - $this->register(new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); - - $this->register(new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", BreakInfo::instant())); - $this->register(new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); - $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - $this->register(new Opaque(new BID(Ids::EMERALD), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); - $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); - $this->register(new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); - $this->register(new Opaque(new BID(Ids::END_STONE), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); - - $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - $this->register(new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - - $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); - $this->register(new Farmland(new BID(Ids::FARMLAND), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); - $this->register(new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); - $this->register(new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); - $this->register(new Flower(new BID(Ids::DANDELION), "Dandelion", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::POPPY), "Poppy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ALLIUM), "Allium", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::CORNFLOWER), "Cornflower", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); - $this->register(new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); - $this->register(new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - $this->register(new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - - $glassBreakInfo = new BreakInfo(0.3); - $this->register(new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); - $this->register(new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); - $this->register(new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); - $this->register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - $this->register(new Opaque(new BID(Ids::GOLD), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - - $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); - $this->register(new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); - $this->register(new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); - $this->register(new Gravel(new BID(Ids::GRAVEL), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); - - $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); - - $hardenedGlassBreakInfo = new BreakInfo(10.0); - $this->register(new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); - $this->register(new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - $this->register(new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - - $updateBlockBreakInfo = new BreakInfo(1.0); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); - $this->register(new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); - $this->register(new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); - - $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); - $this->register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); - $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); - $this->register(new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); - $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); - $this->register(new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - $this->register(new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - $this->register(new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - - $lanternBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); - $this->register(new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); - - $this->register(new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - $this->register(new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); - $this->register(new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); - $this->register(new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); - $this->register(new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); - $this->register(new Magma(new BID(Ids::MAGMA), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); - $this->register(new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); - $this->register(new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); - - $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_NETHER_BRICKS), "Chiseled Nether Bricks", $netherBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); - - $this->register(new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); - $this->register(new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); - $this->register(new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - $this->register(new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - $this->register(new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Podzol(new BID(Ids::PODZOL), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); - $this->register(new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); - - $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); - $this->register(new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); - $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); - - $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $this->register(new Pumpkin(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); - $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); - $this->register(new LitPumpkin(new BID(Ids::LIT_PUMPKIN), "Jack o'Lantern", $pumpkinBreakInfo)); - - $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); - - $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); - $this->register(new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); - - $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_QUARTZ), "Smooth Quartz Block", $quartzBreakInfo)); - $this->register(new Opaque(new BID(Ids::QUARTZ_BRICKS), "Quartz Bricks", $quartzBreakInfo)); - - $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); - - $this->register(new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); - $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); - $this->register(new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - $this->register(new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - $this->register(new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); - $this->register(new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); - $this->register(new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); - $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); - $this->register(new Reserved6(new BID(Ids::RESERVED6), "reserved6", BreakInfo::instant())); - - $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); - $this->register(new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); - $this->register(new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); - - $this->register(new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new BreakInfo(0.3))); - $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); - $this->register(new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - $this->register(new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); - $this->register(new Snow(new BID(Ids::SNOW), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); - $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - $this->register(new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); - - $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register( - $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ - public function getDropsForCompatibleTool(Item $item) : array{ - return [VanillaBlocks::COBBLESTONE()->asItem()]; - } - - public function isAffectedBySilkTouch() : bool{ - return true; - } - } - ); - $this->register(new Opaque(new BID(Ids::ANDESITE), "Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::DIORITE), "Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::GRANITE), "Granite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); - - $this->register($stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS), "Stone Bricks", $stoneBreakInfo)); - $this->register($mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS), "Mossy Stone Bricks", $stoneBreakInfo)); - $this->register($crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS), "Cracked Stone Bricks", $stoneBreakInfo)); - $this->register($chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS), "Chiseled Stone Bricks", $stoneBreakInfo)); - - $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); - $this->register(new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); - - $this->register(new Stair(new BID(Ids::STONE_STAIRS), "Stone Stairs", $stoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_STONE), "Smooth Stone", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS), "Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::DIORITE_STAIRS), "Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::GRANITE_STAIRS), "Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS), "Polished Andesite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS), "Polished Diorite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - $this->register(new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - $this->register(new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - - //TODO: in the future this won't be the same for all the types - $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - foreach([ - new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::FAKE_WOODEN_SLAB), "Fake Wooden", $stoneSlabBreakInfo), - new Slab(new BID(Ids::NETHER_BRICK_SLAB), "Nether Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::QUARTZ_SLAB), "Quartz", $stoneSlabBreakInfo), - new Slab(new BID(Ids::SANDSTONE_SLAB), "Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::SMOOTH_STONE_SLAB), "Smooth Stone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::STONE_BRICK_SLAB), "Stone Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::DARK_PRISMARINE_SLAB), "Dark Prismarine", $stoneSlabBreakInfo), - new Slab(new BID(Ids::MOSSY_COBBLESTONE_SLAB), "Mossy Cobblestone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::PRISMARINE_SLAB), "Prismarine", $stoneSlabBreakInfo), - new Slab(new BID(Ids::PRISMARINE_BRICKS_SLAB), "Prismarine Bricks", $stoneSlabBreakInfo), - new Slab(new BID(Ids::PURPUR_SLAB), "Purpur", $stoneSlabBreakInfo), - new Slab(new BID(Ids::RED_NETHER_BRICK_SLAB), "Red Nether Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::RED_SANDSTONE_SLAB), "Red Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::SMOOTH_SANDSTONE_SLAB), "Smooth Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::ANDESITE_SLAB), "Andesite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::DIORITE_SLAB), "Diorite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::END_STONE_BRICK_SLAB), "End Stone Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::GRANITE_SLAB), "Granite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::POLISHED_ANDESITE_SLAB), "Polished Andesite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::POLISHED_DIORITE_SLAB), "Polished Diorite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::POLISHED_GRANITE_SLAB), "Polished Granite", $stoneSlabBreakInfo), - new Slab(new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB), "Smooth Red Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::CUT_RED_SANDSTONE_SLAB), "Cut Red Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::CUT_SANDSTONE_SLAB), "Cut Sandstone", $stoneSlabBreakInfo), - new Slab(new BID(Ids::MOSSY_STONE_BRICK_SLAB), "Mossy Stone Brick", $stoneSlabBreakInfo), - new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo), - new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo), - ] as $slabType){ - $this->register($slabType); + foreach(VanillaBlocks::getAll() as $block){ + $this->register($block); } - - $this->register(new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); - $this->register(new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); - $this->register(new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); - $this->register(new TallGrass(new BID(Ids::FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - $this->register(new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); - - $this->register(new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::PURPLE_TORCH), "Purple Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::RED_TORCH), "Red Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", BreakInfo::instant())); - $this->register(new Torch(new BID(Ids::TORCH), "Torch", BreakInfo::instant())); - - $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); - $this->register(new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); - $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); - $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); - $this->register(new Vine(new BID(Ids::VINES), "Vines", new BreakInfo(0.2, ToolType::AXE))); - $this->register(new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); - $this->register(new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); - - $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); - $this->register(new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - $this->register(new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); - - $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); - $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ - public function getBreakTime(Item $item) : float{ - if($item->getBlockToolType() === ToolType::SHEARS){ - return 0.0; - } - return parent::getBreakTime($item); - } - }; - $signBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $logBreakInfo = new BreakInfo(2.0, ToolType::AXE); - $woodenDoorBreakInfo = new BreakInfo(3.0, ToolType::AXE, 0, 15.0); - $woodenButtonBreakInfo = new BreakInfo(0.5, ToolType::AXE); - $woodenPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::AXE); - - foreach(TreeType::getAll() as $treeType){ - $name = $treeType->getDisplayName(); - $this->register(new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); - $this->register(new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); - } - - foreach(WoodType::getAll() as $woodType){ - $name = $woodType->getDisplayName(); - - $this->register(new Wood(BlockLegacyIdHelper::getLogIdentifier($woodType), $name . " " . ($woodType->getStandardLogSuffix() ?? "Log"), $logBreakInfo, $woodType)); - $this->register(new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($woodType), $name . " " . ($woodType->getAllSidedLogSuffix() ?? "Wood"), $logBreakInfo, $woodType)); - - $this->register(new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($woodType), $name . " Planks", $planksBreakInfo, $woodType)); - $this->register(new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($woodType), $name . " Fence", $planksBreakInfo, $woodType)); - $this->register(new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType)); - - $this->register(new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($woodType), $name . " Fence Gate", $planksBreakInfo, $woodType)); - $this->register(new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($woodType), $name . " Stairs", $planksBreakInfo, $woodType)); - $this->register(new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($woodType), $name . " Door", $woodenDoorBreakInfo, $woodType)); - - $this->register(new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); - $this->register(new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); - $this->register(new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); - - [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($woodType); - $this->register(new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $woodType, $signAsItem)); - $this->register(new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $woodType, $signAsItem)); - } - - $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE), "Chiseled Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_RED_SANDSTONE), "Cut Red Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $sandstoneBreakInfo)); - - $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SANDSTONE), "Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_SANDSTONE), "Chiseled Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); - - $this->register(new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); - $this->register(new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); - $this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); - $this->register(new StainedHardenedClay(new BID(Ids::STAINED_CLAY), "Stained Clay", $hardenedClayBreakInfo)); - $this->register(new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); - $this->register(new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - $this->register(new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); - $this->register(new Concrete(new BID(Ids::CONCRETE), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); - $this->register(new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ - public function getBreakTime(Item $item) : float{ - $time = parent::getBreakTime($item); - if($item->getBlockToolType() === ToolType::SHEARS){ - $time *= 3; //shears break compatible blocks 15x faster, but wool 5x - } - - return $time; - } - })); - - //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap - $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::DIORITE_WALL), "Diorite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::END_STONE_BRICK_WALL), "End Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::GRANITE_WALL), "Granite Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL), "Mossy Stone Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL), "Mossy Cobblestone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::NETHER_BRICK_WALL), "Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::PRISMARINE_WALL), "Prismarine Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_NETHER_BRICK_WALL), "Red Nether Brick Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::RED_SANDSTONE_WALL), "Red Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::SANDSTONE_WALL), "Sandstone Wall", $wallBreakInfo)); - $this->register(new Wall(new BID(Ids::STONE_BRICK_WALL), "Stone Brick Wall", $wallBreakInfo)); - - $this->registerElements(); - - $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); - $this->register(new ChemistryTable(new BID(Ids::MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); - - $this->register(new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT), "Heat Block", $chemistryTableBreakInfo)); - - $this->registerMushroomBlocks(); - - $this->register(new Coral( - new BID(Ids::CORAL), - "Coral", - BreakInfo::instant(), - )); - $this->register(new FloorCoralFan( - new BID(Ids::CORAL_FAN), - "Coral Fan", - BreakInfo::instant(), - )); - $this->register(new WallCoralFan( - new BID(Ids::WALL_CORAL_FAN), - "Wall Coral Fan", - BreakInfo::instant(), - )); - - $this->registerBlocksR13(); - $this->registerBlocksR14(); - $this->registerBlocksR16(); - $this->registerBlocksR17(); - $this->registerMudBlocks(); - - $this->registerOres(); - } - - private function registerMushroomBlocks() : void{ - $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); - - $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block", $mushroomBlockBreakInfo)); - $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block", $mushroomBlockBreakInfo)); - - //finally, the stems - $this->register(new MushroomStem(new BID(Ids::MUSHROOM_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); - $this->register(new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); - } - - private function registerElements() : void{ - $instaBreak = BreakInfo::instant(); - $this->register(new Opaque(new BID(Ids::ELEMENT_ZERO), "???", $instaBreak)); - - $this->register(new Element(new BID(Ids::ELEMENT_HYDROGEN), "Hydrogen", $instaBreak, "h", 1, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_HELIUM), "Helium", $instaBreak, "he", 2, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_LITHIUM), "Lithium", $instaBreak, "li", 3, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BERYLLIUM), "Beryllium", $instaBreak, "be", 4, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_BORON), "Boron", $instaBreak, "b", 5, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_CARBON), "Carbon", $instaBreak, "c", 6, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_NITROGEN), "Nitrogen", $instaBreak, "n", 7, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_OXYGEN), "Oxygen", $instaBreak, "o", 8, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_FLUORINE), "Fluorine", $instaBreak, "f", 9, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_NEON), "Neon", $instaBreak, "ne", 10, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_SODIUM), "Sodium", $instaBreak, "na", 11, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_MAGNESIUM), "Magnesium", $instaBreak, "mg", 12, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ALUMINUM), "Aluminum", $instaBreak, "al", 13, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_SILICON), "Silicon", $instaBreak, "si", 14, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_PHOSPHORUS), "Phosphorus", $instaBreak, "p", 15, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_SULFUR), "Sulfur", $instaBreak, "s", 16, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_CHLORINE), "Chlorine", $instaBreak, "cl", 17, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_ARGON), "Argon", $instaBreak, "ar", 18, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_POTASSIUM), "Potassium", $instaBreak, "k", 19, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_CALCIUM), "Calcium", $instaBreak, "ca", 20, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_SCANDIUM), "Scandium", $instaBreak, "sc", 21, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TITANIUM), "Titanium", $instaBreak, "ti", 22, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_VANADIUM), "Vanadium", $instaBreak, "v", 23, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CHROMIUM), "Chromium", $instaBreak, "cr", 24, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MANGANESE), "Manganese", $instaBreak, "mn", 25, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRON), "Iron", $instaBreak, "fe", 26, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COBALT), "Cobalt", $instaBreak, "co", 27, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NICKEL), "Nickel", $instaBreak, "ni", 28, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPPER), "Copper", $instaBreak, "cu", 29, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZINC), "Zinc", $instaBreak, "zn", 30, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GALLIUM), "Gallium", $instaBreak, "ga", 31, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_GERMANIUM), "Germanium", $instaBreak, "ge", 32, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ARSENIC), "Arsenic", $instaBreak, "as", 33, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_SELENIUM), "Selenium", $instaBreak, "se", 34, 5)); - $this->register(new Element(new BID(Ids::ELEMENT_BROMINE), "Bromine", $instaBreak, "br", 35, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_KRYPTON), "Krypton", $instaBreak, "kr", 36, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_RUBIDIUM), "Rubidium", $instaBreak, "rb", 37, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_STRONTIUM), "Strontium", $instaBreak, "sr", 38, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTRIUM), "Yttrium", $instaBreak, "y", 39, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ZIRCONIUM), "Zirconium", $instaBreak, "zr", 40, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIOBIUM), "Niobium", $instaBreak, "nb", 41, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MOLYBDENUM), "Molybdenum", $instaBreak, "mo", 42, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TECHNETIUM), "Technetium", $instaBreak, "tc", 43, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHENIUM), "Ruthenium", $instaBreak, "ru", 44, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHODIUM), "Rhodium", $instaBreak, "rh", 45, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PALLADIUM), "Palladium", $instaBreak, "pd", 46, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SILVER), "Silver", $instaBreak, "ag", 47, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_CADMIUM), "Cadmium", $instaBreak, "cd", 48, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_INDIUM), "Indium", $instaBreak, "in", 49, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TIN), "Tin", $instaBreak, "sn", 50, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_ANTIMONY), "Antimony", $instaBreak, "sb", 51, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_TELLURIUM), "Tellurium", $instaBreak, "te", 52, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_IODINE), "Iodine", $instaBreak, "i", 53, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_XENON), "Xenon", $instaBreak, "xe", 54, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_CESIUM), "Cesium", $instaBreak, "cs", 55, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_BARIUM), "Barium", $instaBreak, "ba", 56, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_LANTHANUM), "Lanthanum", $instaBreak, "la", 57, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_CERIUM), "Cerium", $instaBreak, "ce", 58, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PRASEODYMIUM), "Praseodymium", $instaBreak, "pr", 59, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_NEODYMIUM), "Neodymium", $instaBreak, "nd", 60, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_PROMETHIUM), "Promethium", $instaBreak, "pm", 61, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_SAMARIUM), "Samarium", $instaBreak, "sm", 62, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_EUROPIUM), "Europium", $instaBreak, "eu", 63, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_GADOLINIUM), "Gadolinium", $instaBreak, "gd", 64, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_TERBIUM), "Terbium", $instaBreak, "tb", 65, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_DYSPROSIUM), "Dysprosium", $instaBreak, "dy", 66, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HOLMIUM), "Holmium", $instaBreak, "ho", 67, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_ERBIUM), "Erbium", $instaBreak, "er", 68, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_THULIUM), "Thulium", $instaBreak, "tm", 69, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_YTTERBIUM), "Ytterbium", $instaBreak, "yb", 70, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_LUTETIUM), "Lutetium", $instaBreak, "lu", 71, 8)); - $this->register(new Element(new BID(Ids::ELEMENT_HAFNIUM), "Hafnium", $instaBreak, "hf", 72, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TANTALUM), "Tantalum", $instaBreak, "ta", 73, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_TUNGSTEN), "Tungsten", $instaBreak, "w", 74, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_RHENIUM), "Rhenium", $instaBreak, "re", 75, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_OSMIUM), "Osmium", $instaBreak, "os", 76, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_IRIDIUM), "Iridium", $instaBreak, "ir", 77, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_PLATINUM), "Platinum", $instaBreak, "pt", 78, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_GOLD), "Gold", $instaBreak, "au", 79, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MERCURY), "Mercury", $instaBreak, "hg", 80, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_THALLIUM), "Thallium", $instaBreak, "tl", 81, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LEAD), "Lead", $instaBreak, "pb", 82, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_BISMUTH), "Bismuth", $instaBreak, "bi", 83, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_POLONIUM), "Polonium", $instaBreak, "po", 84, 4)); - $this->register(new Element(new BID(Ids::ELEMENT_ASTATINE), "Astatine", $instaBreak, "at", 85, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_RADON), "Radon", $instaBreak, "rn", 86, 7)); - $this->register(new Element(new BID(Ids::ELEMENT_FRANCIUM), "Francium", $instaBreak, "fr", 87, 0)); - $this->register(new Element(new BID(Ids::ELEMENT_RADIUM), "Radium", $instaBreak, "ra", 88, 1)); - $this->register(new Element(new BID(Ids::ELEMENT_ACTINIUM), "Actinium", $instaBreak, "ac", 89, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_THORIUM), "Thorium", $instaBreak, "th", 90, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PROTACTINIUM), "Protactinium", $instaBreak, "pa", 91, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_URANIUM), "Uranium", $instaBreak, "u", 92, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NEPTUNIUM), "Neptunium", $instaBreak, "np", 93, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_PLUTONIUM), "Plutonium", $instaBreak, "pu", 94, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_AMERICIUM), "Americium", $instaBreak, "am", 95, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CURIUM), "Curium", $instaBreak, "cm", 96, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_BERKELIUM), "Berkelium", $instaBreak, "bk", 97, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_CALIFORNIUM), "Californium", $instaBreak, "cf", 98, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_EINSTEINIUM), "Einsteinium", $instaBreak, "es", 99, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_FERMIUM), "Fermium", $instaBreak, "fm", 100, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_MENDELEVIUM), "Mendelevium", $instaBreak, "md", 101, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_NOBELIUM), "Nobelium", $instaBreak, "no", 102, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_LAWRENCIUM), "Lawrencium", $instaBreak, "lr", 103, 9)); - $this->register(new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM), "Rutherfordium", $instaBreak, "rf", 104, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DUBNIUM), "Dubnium", $instaBreak, "db", 105, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_SEABORGIUM), "Seaborgium", $instaBreak, "sg", 106, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_BOHRIUM), "Bohrium", $instaBreak, "bh", 107, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_HASSIUM), "Hassium", $instaBreak, "hs", 108, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_MEITNERIUM), "Meitnerium", $instaBreak, "mt", 109, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_DARMSTADTIUM), "Darmstadtium", $instaBreak, "ds", 110, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_ROENTGENIUM), "Roentgenium", $instaBreak, "rg", 111, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_COPERNICIUM), "Copernicium", $instaBreak, "cn", 112, 2)); - $this->register(new Element(new BID(Ids::ELEMENT_NIHONIUM), "Nihonium", $instaBreak, "nh", 113, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_FLEROVIUM), "Flerovium", $instaBreak, "fl", 114, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_MOSCOVIUM), "Moscovium", $instaBreak, "mc", 115, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_LIVERMORIUM), "Livermorium", $instaBreak, "lv", 116, 3)); - $this->register(new Element(new BID(Ids::ELEMENT_TENNESSINE), "Tennessine", $instaBreak, "ts", 117, 6)); - $this->register(new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); - } - - private function registerOres() : void{ - $stoneOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(3.0, ToolType::PICKAXE, $toolTier->getHarvestLevel()); - $this->register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD()))); - $this->register(new CopperOre(new BID(Ids::COPPER_ORE), "Copper Ore", $stoneOreBreakInfo(ToolTier::STONE()))); - $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - $this->register(new GoldOre(new BID(Ids::GOLD_ORE), "Gold Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - $this->register(new IronOre(new BID(Ids::IRON_ORE), "Iron Ore", $stoneOreBreakInfo(ToolTier::STONE()))); - $this->register(new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE()))); - $this->register(new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - - $deepslateOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(4.5, ToolType::PICKAXE, $toolTier->getHarvestLevel()); - $this->register(new CoalOre(new BID(Ids::DEEPSLATE_COAL_ORE), "Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD()))); - $this->register(new CopperOre(new BID(Ids::DEEPSLATE_COPPER_ORE), "Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); - $this->register(new DiamondOre(new BID(Ids::DEEPSLATE_DIAMOND_ORE), "Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $this->register(new EmeraldOre(new BID(Ids::DEEPSLATE_EMERALD_ORE), "Deepslate Emerald Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $this->register(new GoldOre(new BID(Ids::DEEPSLATE_GOLD_ORE), "Deepslate Gold Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $this->register(new IronOre(new BID(Ids::DEEPSLATE_IRON_ORE), "Deepslate Iron Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); - $this->register(new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); - $this->register(new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - - $netherrackOreBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); - $this->register(new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); - } - - private function registerBlocksR13() : void{ - $this->register(new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); - } - - private function registerBlocksR14() : void{ - $this->register(new Opaque(new BID(Ids::HONEYCOMB), "Honeycomb Block", new BreakInfo(0.6))); - } - - private function registerBlocksR16() : void{ - //for some reason, slabs have weird hardness like the legacy ones - $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - - $this->register(new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0))); - - $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); - $this->register(new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); - $this->register(new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); - $this->register(new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); - - $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - $this->register(new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); - $this->register(new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); - $this->register(new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); - $this->register(new Wall(new BID(Ids::BLACKSTONE_WALL), "Blackstone Wall", $blackstoneBreakInfo)); - - //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) - $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); - $this->register(new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); - $this->register(new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new BreakInfo(0.5, ToolType::PICKAXE))); //same as regular stone button - $this->register(new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); //same as regular stone pressure plate - $this->register(new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); - $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CHISELED_POLISHED_BLACKSTONE), "Chiseled Polished Blackstone", $blackstoneBreakInfo)); - - $prefix = fn(string $thing) => "Polished Blackstone Brick" . ($thing !== "" ? " $thing" : ""); - $this->register(new Opaque(new BID(Ids::POLISHED_BLACKSTONE_BRICKS), "Polished Blackstone Bricks", $blackstoneBreakInfo)); - $this->register(new Slab(new BID(Ids::POLISHED_BLACKSTONE_BRICK_SLAB), "Polished Blackstone Brick", $slabBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); - $this->register(new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); - $this->register(new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); - - $this->register(new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", BreakInfo::instant())); - $this->register(new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); - - //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) - $this->register(new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new BreakInfo(1.0, ToolType::SHOVEL))); - - $this->register(new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ - public function getLightLevel() : int{ return 15; } - }); - } - - private function registerBlocksR17() : void{ - //in java this can be acquired using any tool - seems to be a parity issue in bedrock - $this->register(new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - - $this->register(new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - $this->register(new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - - $this->register(new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - $this->register(new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); - - $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); - $this->register(new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); - - //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 - $this->register(new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0))); - - $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); - $this->register(new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); - $this->register(new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); - $this->register(new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); - $this->register(new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); - $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); - - $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); - $this->register(new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); - $this->register(new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); - $this->register(new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); - $this->register(new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); - $this->register(new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); - - $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); - $this->register(new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); - $this->register(new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); - $this->register(new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); - $this->register(new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); - - $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); - $this->register(new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); - $this->register(new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); - $this->register(new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); - $this->register(new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); - - $this->register(new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); - } - - private function registerMudBlocks() : void{ - $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - - $this->register(new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); - $this->register(new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); - $this->register(new Stair(new BID(Ids::MUD_BRICK_STAIRS), "Mud Brick Stairs", $mudBricksBreakInfo)); - $this->register(new Wall(new BID(Ids::MUD_BRICK_WALL), "Mud Brick Wall", $mudBricksBreakInfo)); } /** diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 1a1bd8fde..15de19c18 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -23,8 +23,39 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\BlockBreakInfo as BreakInfo; +use pocketmine\block\BlockIdentifier as BID; +use pocketmine\block\BlockToolType as ToolType; use pocketmine\block\BlockTypeIds as Ids; +use pocketmine\block\tile\Banner as TileBanner; +use pocketmine\block\tile\Barrel as TileBarrel; +use pocketmine\block\tile\Beacon as TileBeacon; +use pocketmine\block\tile\Bed as TileBed; +use pocketmine\block\tile\Bell as TileBell; +use pocketmine\block\tile\BlastFurnace as TileBlastFurnace; +use pocketmine\block\tile\BrewingStand as TileBrewingStand; +use pocketmine\block\tile\Chest as TileChest; +use pocketmine\block\tile\Comparator as TileComparator; +use pocketmine\block\tile\DaylightSensor as TileDaylightSensor; +use pocketmine\block\tile\EnchantTable as TileEnchantingTable; +use pocketmine\block\tile\EnderChest as TileEnderChest; +use pocketmine\block\tile\FlowerPot as TileFlowerPot; +use pocketmine\block\tile\Hopper as TileHopper; +use pocketmine\block\tile\ItemFrame as TileItemFrame; +use pocketmine\block\tile\Jukebox as TileJukebox; +use pocketmine\block\tile\Lectern as TileLectern; +use pocketmine\block\tile\MonsterSpawner as TileMonsterSpawner; +use pocketmine\block\tile\NormalFurnace as TileNormalFurnace; +use pocketmine\block\tile\Note as TileNote; +use pocketmine\block\tile\ShulkerBox as TileShulkerBox; +use pocketmine\block\tile\Skull as TileSkull; +use pocketmine\block\tile\Smoker as TileSmoker; +use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\WoodType; +use pocketmine\item\Item; +use pocketmine\item\ToolTier; use pocketmine\utils\CloningRegistryTrait; +use function mb_strtolower; /** * This doc-block is generated automatically, do not modify it manually. @@ -677,628 +708,746 @@ final class VanillaBlocks{ } protected static function setup() : void{ - $factory = BlockFactory::getInstance(); - self::register("acacia_button", $factory->fromTypeId(Ids::ACACIA_BUTTON)); - self::register("acacia_door", $factory->fromTypeId(Ids::ACACIA_DOOR)); - self::register("acacia_fence", $factory->fromTypeId(Ids::ACACIA_FENCE)); - self::register("acacia_fence_gate", $factory->fromTypeId(Ids::ACACIA_FENCE_GATE)); - self::register("acacia_leaves", $factory->fromTypeId(Ids::ACACIA_LEAVES)); - self::register("acacia_log", $factory->fromTypeId(Ids::ACACIA_LOG)); - self::register("acacia_planks", $factory->fromTypeId(Ids::ACACIA_PLANKS)); - self::register("acacia_pressure_plate", $factory->fromTypeId(Ids::ACACIA_PRESSURE_PLATE)); - self::register("acacia_sapling", $factory->fromTypeId(Ids::ACACIA_SAPLING)); - self::register("acacia_sign", $factory->fromTypeId(Ids::ACACIA_SIGN)); - self::register("acacia_slab", $factory->fromTypeId(Ids::ACACIA_SLAB)); - self::register("acacia_stairs", $factory->fromTypeId(Ids::ACACIA_STAIRS)); - self::register("acacia_trapdoor", $factory->fromTypeId(Ids::ACACIA_TRAPDOOR)); - self::register("acacia_wall_sign", $factory->fromTypeId(Ids::ACACIA_WALL_SIGN)); - self::register("acacia_wood", $factory->fromTypeId(Ids::ACACIA_WOOD)); - self::register("activator_rail", $factory->fromTypeId(Ids::ACTIVATOR_RAIL)); - self::register("air", $factory->fromTypeId(Ids::AIR)); - self::register("all_sided_mushroom_stem", $factory->fromTypeId(Ids::ALL_SIDED_MUSHROOM_STEM)); - self::register("allium", $factory->fromTypeId(Ids::ALLIUM)); - self::register("amethyst", $factory->fromTypeId(Ids::AMETHYST)); - self::register("ancient_debris", $factory->fromTypeId(Ids::ANCIENT_DEBRIS)); - self::register("andesite", $factory->fromTypeId(Ids::ANDESITE)); - self::register("andesite_slab", $factory->fromTypeId(Ids::ANDESITE_SLAB)); - self::register("andesite_stairs", $factory->fromTypeId(Ids::ANDESITE_STAIRS)); - self::register("andesite_wall", $factory->fromTypeId(Ids::ANDESITE_WALL)); - self::register("anvil", $factory->fromTypeId(Ids::ANVIL)); - self::register("azure_bluet", $factory->fromTypeId(Ids::AZURE_BLUET)); - self::register("bamboo", $factory->fromTypeId(Ids::BAMBOO)); - self::register("bamboo_sapling", $factory->fromTypeId(Ids::BAMBOO_SAPLING)); - self::register("banner", $factory->fromTypeId(Ids::BANNER)); - self::register("barrel", $factory->fromTypeId(Ids::BARREL)); - self::register("barrier", $factory->fromTypeId(Ids::BARRIER)); - self::register("basalt", $factory->fromTypeId(Ids::BASALT)); - self::register("beacon", $factory->fromTypeId(Ids::BEACON)); - self::register("bed", $factory->fromTypeId(Ids::BED)); - self::register("bedrock", $factory->fromTypeId(Ids::BEDROCK)); - self::register("beetroots", $factory->fromTypeId(Ids::BEETROOTS)); - self::register("bell", $factory->fromTypeId(Ids::BELL)); - self::register("birch_button", $factory->fromTypeId(Ids::BIRCH_BUTTON)); - self::register("birch_door", $factory->fromTypeId(Ids::BIRCH_DOOR)); - self::register("birch_fence", $factory->fromTypeId(Ids::BIRCH_FENCE)); - self::register("birch_fence_gate", $factory->fromTypeId(Ids::BIRCH_FENCE_GATE)); - self::register("birch_leaves", $factory->fromTypeId(Ids::BIRCH_LEAVES)); - self::register("birch_log", $factory->fromTypeId(Ids::BIRCH_LOG)); - self::register("birch_planks", $factory->fromTypeId(Ids::BIRCH_PLANKS)); - self::register("birch_pressure_plate", $factory->fromTypeId(Ids::BIRCH_PRESSURE_PLATE)); - self::register("birch_sapling", $factory->fromTypeId(Ids::BIRCH_SAPLING)); - self::register("birch_sign", $factory->fromTypeId(Ids::BIRCH_SIGN)); - self::register("birch_slab", $factory->fromTypeId(Ids::BIRCH_SLAB)); - self::register("birch_stairs", $factory->fromTypeId(Ids::BIRCH_STAIRS)); - self::register("birch_trapdoor", $factory->fromTypeId(Ids::BIRCH_TRAPDOOR)); - self::register("birch_wall_sign", $factory->fromTypeId(Ids::BIRCH_WALL_SIGN)); - self::register("birch_wood", $factory->fromTypeId(Ids::BIRCH_WOOD)); - self::register("blackstone", $factory->fromTypeId(Ids::BLACKSTONE)); - self::register("blackstone_slab", $factory->fromTypeId(Ids::BLACKSTONE_SLAB)); - self::register("blackstone_stairs", $factory->fromTypeId(Ids::BLACKSTONE_STAIRS)); - self::register("blackstone_wall", $factory->fromTypeId(Ids::BLACKSTONE_WALL)); - self::register("blast_furnace", $factory->fromTypeId(Ids::BLAST_FURNACE)); - self::register("blue_ice", $factory->fromTypeId(Ids::BLUE_ICE)); - self::register("blue_orchid", $factory->fromTypeId(Ids::BLUE_ORCHID)); - self::register("blue_torch", $factory->fromTypeId(Ids::BLUE_TORCH)); - self::register("bone_block", $factory->fromTypeId(Ids::BONE_BLOCK)); - self::register("bookshelf", $factory->fromTypeId(Ids::BOOKSHELF)); - self::register("brewing_stand", $factory->fromTypeId(Ids::BREWING_STAND)); - self::register("brick_slab", $factory->fromTypeId(Ids::BRICK_SLAB)); - self::register("brick_stairs", $factory->fromTypeId(Ids::BRICK_STAIRS)); - self::register("brick_wall", $factory->fromTypeId(Ids::BRICK_WALL)); - self::register("bricks", $factory->fromTypeId(Ids::BRICKS)); - self::register("brown_mushroom", $factory->fromTypeId(Ids::BROWN_MUSHROOM)); - self::register("brown_mushroom_block", $factory->fromTypeId(Ids::BROWN_MUSHROOM_BLOCK)); - self::register("cactus", $factory->fromTypeId(Ids::CACTUS)); - self::register("cake", $factory->fromTypeId(Ids::CAKE)); - self::register("calcite", $factory->fromTypeId(Ids::CALCITE)); - self::register("carpet", $factory->fromTypeId(Ids::CARPET)); - self::register("carrots", $factory->fromTypeId(Ids::CARROTS)); - self::register("carved_pumpkin", $factory->fromTypeId(Ids::CARVED_PUMPKIN)); - self::register("chemical_heat", $factory->fromTypeId(Ids::CHEMICAL_HEAT)); - self::register("chest", $factory->fromTypeId(Ids::CHEST)); - self::register("chiseled_deepslate", $factory->fromTypeId(Ids::CHISELED_DEEPSLATE)); - self::register("chiseled_nether_bricks", $factory->fromTypeId(Ids::CHISELED_NETHER_BRICKS)); - self::register("chiseled_polished_blackstone", $factory->fromTypeId(Ids::CHISELED_POLISHED_BLACKSTONE)); - self::register("chiseled_quartz", $factory->fromTypeId(Ids::CHISELED_QUARTZ)); - self::register("chiseled_red_sandstone", $factory->fromTypeId(Ids::CHISELED_RED_SANDSTONE)); - self::register("chiseled_sandstone", $factory->fromTypeId(Ids::CHISELED_SANDSTONE)); - self::register("chiseled_stone_bricks", $factory->fromTypeId(Ids::CHISELED_STONE_BRICKS)); - self::register("clay", $factory->fromTypeId(Ids::CLAY)); - self::register("coal", $factory->fromTypeId(Ids::COAL)); - self::register("coal_ore", $factory->fromTypeId(Ids::COAL_ORE)); - self::register("cobbled_deepslate", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE)); - self::register("cobbled_deepslate_slab", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_SLAB)); - self::register("cobbled_deepslate_stairs", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_STAIRS)); - self::register("cobbled_deepslate_wall", $factory->fromTypeId(Ids::COBBLED_DEEPSLATE_WALL)); - self::register("cobblestone", $factory->fromTypeId(Ids::COBBLESTONE)); - self::register("cobblestone_slab", $factory->fromTypeId(Ids::COBBLESTONE_SLAB)); - self::register("cobblestone_stairs", $factory->fromTypeId(Ids::COBBLESTONE_STAIRS)); - self::register("cobblestone_wall", $factory->fromTypeId(Ids::COBBLESTONE_WALL)); - self::register("cobweb", $factory->fromTypeId(Ids::COBWEB)); - self::register("cocoa_pod", $factory->fromTypeId(Ids::COCOA_POD)); - self::register("compound_creator", $factory->fromTypeId(Ids::COMPOUND_CREATOR)); - self::register("concrete", $factory->fromTypeId(Ids::CONCRETE)); - self::register("concrete_powder", $factory->fromTypeId(Ids::CONCRETE_POWDER)); - self::register("copper_ore", $factory->fromTypeId(Ids::COPPER_ORE)); - self::register("coral", $factory->fromTypeId(Ids::CORAL)); - self::register("coral_block", $factory->fromTypeId(Ids::CORAL_BLOCK)); - self::register("coral_fan", $factory->fromTypeId(Ids::CORAL_FAN)); - self::register("cornflower", $factory->fromTypeId(Ids::CORNFLOWER)); - self::register("cracked_deepslate_bricks", $factory->fromTypeId(Ids::CRACKED_DEEPSLATE_BRICKS)); - self::register("cracked_deepslate_tiles", $factory->fromTypeId(Ids::CRACKED_DEEPSLATE_TILES)); - self::register("cracked_nether_bricks", $factory->fromTypeId(Ids::CRACKED_NETHER_BRICKS)); - self::register("cracked_polished_blackstone_bricks", $factory->fromTypeId(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS)); - self::register("cracked_stone_bricks", $factory->fromTypeId(Ids::CRACKED_STONE_BRICKS)); - self::register("crafting_table", $factory->fromTypeId(Ids::CRAFTING_TABLE)); - self::register("crimson_button", $factory->fromTypeId(Ids::CRIMSON_BUTTON)); - self::register("crimson_door", $factory->fromTypeId(Ids::CRIMSON_DOOR)); - self::register("crimson_fence", $factory->fromTypeId(Ids::CRIMSON_FENCE)); - self::register("crimson_fence_gate", $factory->fromTypeId(Ids::CRIMSON_FENCE_GATE)); - self::register("crimson_hyphae", $factory->fromTypeId(Ids::CRIMSON_HYPHAE)); - self::register("crimson_planks", $factory->fromTypeId(Ids::CRIMSON_PLANKS)); - self::register("crimson_pressure_plate", $factory->fromTypeId(Ids::CRIMSON_PRESSURE_PLATE)); - self::register("crimson_sign", $factory->fromTypeId(Ids::CRIMSON_SIGN)); - self::register("crimson_slab", $factory->fromTypeId(Ids::CRIMSON_SLAB)); - self::register("crimson_stairs", $factory->fromTypeId(Ids::CRIMSON_STAIRS)); - self::register("crimson_stem", $factory->fromTypeId(Ids::CRIMSON_STEM)); - self::register("crimson_trapdoor", $factory->fromTypeId(Ids::CRIMSON_TRAPDOOR)); - self::register("crimson_wall_sign", $factory->fromTypeId(Ids::CRIMSON_WALL_SIGN)); - self::register("cut_red_sandstone", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE)); - self::register("cut_red_sandstone_slab", $factory->fromTypeId(Ids::CUT_RED_SANDSTONE_SLAB)); - self::register("cut_sandstone", $factory->fromTypeId(Ids::CUT_SANDSTONE)); - self::register("cut_sandstone_slab", $factory->fromTypeId(Ids::CUT_SANDSTONE_SLAB)); - self::register("dandelion", $factory->fromTypeId(Ids::DANDELION)); - self::register("dark_oak_button", $factory->fromTypeId(Ids::DARK_OAK_BUTTON)); - self::register("dark_oak_door", $factory->fromTypeId(Ids::DARK_OAK_DOOR)); - self::register("dark_oak_fence", $factory->fromTypeId(Ids::DARK_OAK_FENCE)); - self::register("dark_oak_fence_gate", $factory->fromTypeId(Ids::DARK_OAK_FENCE_GATE)); - self::register("dark_oak_leaves", $factory->fromTypeId(Ids::DARK_OAK_LEAVES)); - self::register("dark_oak_log", $factory->fromTypeId(Ids::DARK_OAK_LOG)); - self::register("dark_oak_planks", $factory->fromTypeId(Ids::DARK_OAK_PLANKS)); - self::register("dark_oak_pressure_plate", $factory->fromTypeId(Ids::DARK_OAK_PRESSURE_PLATE)); - self::register("dark_oak_sapling", $factory->fromTypeId(Ids::DARK_OAK_SAPLING)); - self::register("dark_oak_sign", $factory->fromTypeId(Ids::DARK_OAK_SIGN)); - self::register("dark_oak_slab", $factory->fromTypeId(Ids::DARK_OAK_SLAB)); - self::register("dark_oak_stairs", $factory->fromTypeId(Ids::DARK_OAK_STAIRS)); - self::register("dark_oak_trapdoor", $factory->fromTypeId(Ids::DARK_OAK_TRAPDOOR)); - self::register("dark_oak_wall_sign", $factory->fromTypeId(Ids::DARK_OAK_WALL_SIGN)); - self::register("dark_oak_wood", $factory->fromTypeId(Ids::DARK_OAK_WOOD)); - self::register("dark_prismarine", $factory->fromTypeId(Ids::DARK_PRISMARINE)); - self::register("dark_prismarine_slab", $factory->fromTypeId(Ids::DARK_PRISMARINE_SLAB)); - self::register("dark_prismarine_stairs", $factory->fromTypeId(Ids::DARK_PRISMARINE_STAIRS)); - self::register("daylight_sensor", $factory->fromTypeId(Ids::DAYLIGHT_SENSOR)); - self::register("dead_bush", $factory->fromTypeId(Ids::DEAD_BUSH)); - self::register("deepslate", $factory->fromTypeId(Ids::DEEPSLATE)); - self::register("deepslate_brick_slab", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_SLAB)); - self::register("deepslate_brick_stairs", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_STAIRS)); - self::register("deepslate_brick_wall", $factory->fromTypeId(Ids::DEEPSLATE_BRICK_WALL)); - self::register("deepslate_bricks", $factory->fromTypeId(Ids::DEEPSLATE_BRICKS)); - self::register("deepslate_coal_ore", $factory->fromTypeId(Ids::DEEPSLATE_COAL_ORE)); - self::register("deepslate_copper_ore", $factory->fromTypeId(Ids::DEEPSLATE_COPPER_ORE)); - self::register("deepslate_diamond_ore", $factory->fromTypeId(Ids::DEEPSLATE_DIAMOND_ORE)); - self::register("deepslate_emerald_ore", $factory->fromTypeId(Ids::DEEPSLATE_EMERALD_ORE)); - self::register("deepslate_gold_ore", $factory->fromTypeId(Ids::DEEPSLATE_GOLD_ORE)); - self::register("deepslate_iron_ore", $factory->fromTypeId(Ids::DEEPSLATE_IRON_ORE)); - self::register("deepslate_lapis_lazuli_ore", $factory->fromTypeId(Ids::DEEPSLATE_LAPIS_LAZULI_ORE)); - self::register("deepslate_redstone_ore", $factory->fromTypeId(Ids::DEEPSLATE_REDSTONE_ORE)); - self::register("deepslate_tile_slab", $factory->fromTypeId(Ids::DEEPSLATE_TILE_SLAB)); - self::register("deepslate_tile_stairs", $factory->fromTypeId(Ids::DEEPSLATE_TILE_STAIRS)); - self::register("deepslate_tile_wall", $factory->fromTypeId(Ids::DEEPSLATE_TILE_WALL)); - self::register("deepslate_tiles", $factory->fromTypeId(Ids::DEEPSLATE_TILES)); - self::register("detector_rail", $factory->fromTypeId(Ids::DETECTOR_RAIL)); - self::register("diamond", $factory->fromTypeId(Ids::DIAMOND)); - self::register("diamond_ore", $factory->fromTypeId(Ids::DIAMOND_ORE)); - self::register("diorite", $factory->fromTypeId(Ids::DIORITE)); - self::register("diorite_slab", $factory->fromTypeId(Ids::DIORITE_SLAB)); - self::register("diorite_stairs", $factory->fromTypeId(Ids::DIORITE_STAIRS)); - self::register("diorite_wall", $factory->fromTypeId(Ids::DIORITE_WALL)); - self::register("dirt", $factory->fromTypeId(Ids::DIRT)); - self::register("double_tallgrass", $factory->fromTypeId(Ids::DOUBLE_TALLGRASS)); - self::register("dragon_egg", $factory->fromTypeId(Ids::DRAGON_EGG)); - self::register("dried_kelp", $factory->fromTypeId(Ids::DRIED_KELP)); - self::register("dyed_shulker_box", $factory->fromTypeId(Ids::DYED_SHULKER_BOX)); - self::register("element_actinium", $factory->fromTypeId(Ids::ELEMENT_ACTINIUM)); - self::register("element_aluminum", $factory->fromTypeId(Ids::ELEMENT_ALUMINUM)); - self::register("element_americium", $factory->fromTypeId(Ids::ELEMENT_AMERICIUM)); - self::register("element_antimony", $factory->fromTypeId(Ids::ELEMENT_ANTIMONY)); - self::register("element_argon", $factory->fromTypeId(Ids::ELEMENT_ARGON)); - self::register("element_arsenic", $factory->fromTypeId(Ids::ELEMENT_ARSENIC)); - self::register("element_astatine", $factory->fromTypeId(Ids::ELEMENT_ASTATINE)); - self::register("element_barium", $factory->fromTypeId(Ids::ELEMENT_BARIUM)); - self::register("element_berkelium", $factory->fromTypeId(Ids::ELEMENT_BERKELIUM)); - self::register("element_beryllium", $factory->fromTypeId(Ids::ELEMENT_BERYLLIUM)); - self::register("element_bismuth", $factory->fromTypeId(Ids::ELEMENT_BISMUTH)); - self::register("element_bohrium", $factory->fromTypeId(Ids::ELEMENT_BOHRIUM)); - self::register("element_boron", $factory->fromTypeId(Ids::ELEMENT_BORON)); - self::register("element_bromine", $factory->fromTypeId(Ids::ELEMENT_BROMINE)); - self::register("element_cadmium", $factory->fromTypeId(Ids::ELEMENT_CADMIUM)); - self::register("element_calcium", $factory->fromTypeId(Ids::ELEMENT_CALCIUM)); - self::register("element_californium", $factory->fromTypeId(Ids::ELEMENT_CALIFORNIUM)); - self::register("element_carbon", $factory->fromTypeId(Ids::ELEMENT_CARBON)); - self::register("element_cerium", $factory->fromTypeId(Ids::ELEMENT_CERIUM)); - self::register("element_cesium", $factory->fromTypeId(Ids::ELEMENT_CESIUM)); - self::register("element_chlorine", $factory->fromTypeId(Ids::ELEMENT_CHLORINE)); - self::register("element_chromium", $factory->fromTypeId(Ids::ELEMENT_CHROMIUM)); - self::register("element_cobalt", $factory->fromTypeId(Ids::ELEMENT_COBALT)); - self::register("element_constructor", $factory->fromTypeId(Ids::ELEMENT_CONSTRUCTOR)); - self::register("element_copernicium", $factory->fromTypeId(Ids::ELEMENT_COPERNICIUM)); - self::register("element_copper", $factory->fromTypeId(Ids::ELEMENT_COPPER)); - self::register("element_curium", $factory->fromTypeId(Ids::ELEMENT_CURIUM)); - self::register("element_darmstadtium", $factory->fromTypeId(Ids::ELEMENT_DARMSTADTIUM)); - self::register("element_dubnium", $factory->fromTypeId(Ids::ELEMENT_DUBNIUM)); - self::register("element_dysprosium", $factory->fromTypeId(Ids::ELEMENT_DYSPROSIUM)); - self::register("element_einsteinium", $factory->fromTypeId(Ids::ELEMENT_EINSTEINIUM)); - self::register("element_erbium", $factory->fromTypeId(Ids::ELEMENT_ERBIUM)); - self::register("element_europium", $factory->fromTypeId(Ids::ELEMENT_EUROPIUM)); - self::register("element_fermium", $factory->fromTypeId(Ids::ELEMENT_FERMIUM)); - self::register("element_flerovium", $factory->fromTypeId(Ids::ELEMENT_FLEROVIUM)); - self::register("element_fluorine", $factory->fromTypeId(Ids::ELEMENT_FLUORINE)); - self::register("element_francium", $factory->fromTypeId(Ids::ELEMENT_FRANCIUM)); - self::register("element_gadolinium", $factory->fromTypeId(Ids::ELEMENT_GADOLINIUM)); - self::register("element_gallium", $factory->fromTypeId(Ids::ELEMENT_GALLIUM)); - self::register("element_germanium", $factory->fromTypeId(Ids::ELEMENT_GERMANIUM)); - self::register("element_gold", $factory->fromTypeId(Ids::ELEMENT_GOLD)); - self::register("element_hafnium", $factory->fromTypeId(Ids::ELEMENT_HAFNIUM)); - self::register("element_hassium", $factory->fromTypeId(Ids::ELEMENT_HASSIUM)); - self::register("element_helium", $factory->fromTypeId(Ids::ELEMENT_HELIUM)); - self::register("element_holmium", $factory->fromTypeId(Ids::ELEMENT_HOLMIUM)); - self::register("element_hydrogen", $factory->fromTypeId(Ids::ELEMENT_HYDROGEN)); - self::register("element_indium", $factory->fromTypeId(Ids::ELEMENT_INDIUM)); - self::register("element_iodine", $factory->fromTypeId(Ids::ELEMENT_IODINE)); - self::register("element_iridium", $factory->fromTypeId(Ids::ELEMENT_IRIDIUM)); - self::register("element_iron", $factory->fromTypeId(Ids::ELEMENT_IRON)); - self::register("element_krypton", $factory->fromTypeId(Ids::ELEMENT_KRYPTON)); - self::register("element_lanthanum", $factory->fromTypeId(Ids::ELEMENT_LANTHANUM)); - self::register("element_lawrencium", $factory->fromTypeId(Ids::ELEMENT_LAWRENCIUM)); - self::register("element_lead", $factory->fromTypeId(Ids::ELEMENT_LEAD)); - self::register("element_lithium", $factory->fromTypeId(Ids::ELEMENT_LITHIUM)); - self::register("element_livermorium", $factory->fromTypeId(Ids::ELEMENT_LIVERMORIUM)); - self::register("element_lutetium", $factory->fromTypeId(Ids::ELEMENT_LUTETIUM)); - self::register("element_magnesium", $factory->fromTypeId(Ids::ELEMENT_MAGNESIUM)); - self::register("element_manganese", $factory->fromTypeId(Ids::ELEMENT_MANGANESE)); - self::register("element_meitnerium", $factory->fromTypeId(Ids::ELEMENT_MEITNERIUM)); - self::register("element_mendelevium", $factory->fromTypeId(Ids::ELEMENT_MENDELEVIUM)); - self::register("element_mercury", $factory->fromTypeId(Ids::ELEMENT_MERCURY)); - self::register("element_molybdenum", $factory->fromTypeId(Ids::ELEMENT_MOLYBDENUM)); - self::register("element_moscovium", $factory->fromTypeId(Ids::ELEMENT_MOSCOVIUM)); - self::register("element_neodymium", $factory->fromTypeId(Ids::ELEMENT_NEODYMIUM)); - self::register("element_neon", $factory->fromTypeId(Ids::ELEMENT_NEON)); - self::register("element_neptunium", $factory->fromTypeId(Ids::ELEMENT_NEPTUNIUM)); - self::register("element_nickel", $factory->fromTypeId(Ids::ELEMENT_NICKEL)); - self::register("element_nihonium", $factory->fromTypeId(Ids::ELEMENT_NIHONIUM)); - self::register("element_niobium", $factory->fromTypeId(Ids::ELEMENT_NIOBIUM)); - self::register("element_nitrogen", $factory->fromTypeId(Ids::ELEMENT_NITROGEN)); - self::register("element_nobelium", $factory->fromTypeId(Ids::ELEMENT_NOBELIUM)); - self::register("element_oganesson", $factory->fromTypeId(Ids::ELEMENT_OGANESSON)); - self::register("element_osmium", $factory->fromTypeId(Ids::ELEMENT_OSMIUM)); - self::register("element_oxygen", $factory->fromTypeId(Ids::ELEMENT_OXYGEN)); - self::register("element_palladium", $factory->fromTypeId(Ids::ELEMENT_PALLADIUM)); - self::register("element_phosphorus", $factory->fromTypeId(Ids::ELEMENT_PHOSPHORUS)); - self::register("element_platinum", $factory->fromTypeId(Ids::ELEMENT_PLATINUM)); - self::register("element_plutonium", $factory->fromTypeId(Ids::ELEMENT_PLUTONIUM)); - self::register("element_polonium", $factory->fromTypeId(Ids::ELEMENT_POLONIUM)); - self::register("element_potassium", $factory->fromTypeId(Ids::ELEMENT_POTASSIUM)); - self::register("element_praseodymium", $factory->fromTypeId(Ids::ELEMENT_PRASEODYMIUM)); - self::register("element_promethium", $factory->fromTypeId(Ids::ELEMENT_PROMETHIUM)); - self::register("element_protactinium", $factory->fromTypeId(Ids::ELEMENT_PROTACTINIUM)); - self::register("element_radium", $factory->fromTypeId(Ids::ELEMENT_RADIUM)); - self::register("element_radon", $factory->fromTypeId(Ids::ELEMENT_RADON)); - self::register("element_rhenium", $factory->fromTypeId(Ids::ELEMENT_RHENIUM)); - self::register("element_rhodium", $factory->fromTypeId(Ids::ELEMENT_RHODIUM)); - self::register("element_roentgenium", $factory->fromTypeId(Ids::ELEMENT_ROENTGENIUM)); - self::register("element_rubidium", $factory->fromTypeId(Ids::ELEMENT_RUBIDIUM)); - self::register("element_ruthenium", $factory->fromTypeId(Ids::ELEMENT_RUTHENIUM)); - self::register("element_rutherfordium", $factory->fromTypeId(Ids::ELEMENT_RUTHERFORDIUM)); - self::register("element_samarium", $factory->fromTypeId(Ids::ELEMENT_SAMARIUM)); - self::register("element_scandium", $factory->fromTypeId(Ids::ELEMENT_SCANDIUM)); - self::register("element_seaborgium", $factory->fromTypeId(Ids::ELEMENT_SEABORGIUM)); - self::register("element_selenium", $factory->fromTypeId(Ids::ELEMENT_SELENIUM)); - self::register("element_silicon", $factory->fromTypeId(Ids::ELEMENT_SILICON)); - self::register("element_silver", $factory->fromTypeId(Ids::ELEMENT_SILVER)); - self::register("element_sodium", $factory->fromTypeId(Ids::ELEMENT_SODIUM)); - self::register("element_strontium", $factory->fromTypeId(Ids::ELEMENT_STRONTIUM)); - self::register("element_sulfur", $factory->fromTypeId(Ids::ELEMENT_SULFUR)); - self::register("element_tantalum", $factory->fromTypeId(Ids::ELEMENT_TANTALUM)); - self::register("element_technetium", $factory->fromTypeId(Ids::ELEMENT_TECHNETIUM)); - self::register("element_tellurium", $factory->fromTypeId(Ids::ELEMENT_TELLURIUM)); - self::register("element_tennessine", $factory->fromTypeId(Ids::ELEMENT_TENNESSINE)); - self::register("element_terbium", $factory->fromTypeId(Ids::ELEMENT_TERBIUM)); - self::register("element_thallium", $factory->fromTypeId(Ids::ELEMENT_THALLIUM)); - self::register("element_thorium", $factory->fromTypeId(Ids::ELEMENT_THORIUM)); - self::register("element_thulium", $factory->fromTypeId(Ids::ELEMENT_THULIUM)); - self::register("element_tin", $factory->fromTypeId(Ids::ELEMENT_TIN)); - self::register("element_titanium", $factory->fromTypeId(Ids::ELEMENT_TITANIUM)); - self::register("element_tungsten", $factory->fromTypeId(Ids::ELEMENT_TUNGSTEN)); - self::register("element_uranium", $factory->fromTypeId(Ids::ELEMENT_URANIUM)); - self::register("element_vanadium", $factory->fromTypeId(Ids::ELEMENT_VANADIUM)); - self::register("element_xenon", $factory->fromTypeId(Ids::ELEMENT_XENON)); - self::register("element_ytterbium", $factory->fromTypeId(Ids::ELEMENT_YTTERBIUM)); - self::register("element_yttrium", $factory->fromTypeId(Ids::ELEMENT_YTTRIUM)); - self::register("element_zero", $factory->fromTypeId(Ids::ELEMENT_ZERO)); - self::register("element_zinc", $factory->fromTypeId(Ids::ELEMENT_ZINC)); - self::register("element_zirconium", $factory->fromTypeId(Ids::ELEMENT_ZIRCONIUM)); - self::register("emerald", $factory->fromTypeId(Ids::EMERALD)); - self::register("emerald_ore", $factory->fromTypeId(Ids::EMERALD_ORE)); - self::register("enchanting_table", $factory->fromTypeId(Ids::ENCHANTING_TABLE)); - self::register("end_portal_frame", $factory->fromTypeId(Ids::END_PORTAL_FRAME)); - self::register("end_rod", $factory->fromTypeId(Ids::END_ROD)); - self::register("end_stone", $factory->fromTypeId(Ids::END_STONE)); - self::register("end_stone_brick_slab", $factory->fromTypeId(Ids::END_STONE_BRICK_SLAB)); - self::register("end_stone_brick_stairs", $factory->fromTypeId(Ids::END_STONE_BRICK_STAIRS)); - self::register("end_stone_brick_wall", $factory->fromTypeId(Ids::END_STONE_BRICK_WALL)); - self::register("end_stone_bricks", $factory->fromTypeId(Ids::END_STONE_BRICKS)); - self::register("ender_chest", $factory->fromTypeId(Ids::ENDER_CHEST)); - self::register("fake_wooden_slab", $factory->fromTypeId(Ids::FAKE_WOODEN_SLAB)); - self::register("farmland", $factory->fromTypeId(Ids::FARMLAND)); - self::register("fern", $factory->fromTypeId(Ids::FERN)); - self::register("fire", $factory->fromTypeId(Ids::FIRE)); - self::register("fletching_table", $factory->fromTypeId(Ids::FLETCHING_TABLE)); - self::register("flower_pot", $factory->fromTypeId(Ids::FLOWER_POT)); - self::register("frosted_ice", $factory->fromTypeId(Ids::FROSTED_ICE)); - self::register("furnace", $factory->fromTypeId(Ids::FURNACE)); - self::register("glass", $factory->fromTypeId(Ids::GLASS)); - self::register("glass_pane", $factory->fromTypeId(Ids::GLASS_PANE)); - self::register("glazed_terracotta", $factory->fromTypeId(Ids::GLAZED_TERRACOTTA)); - self::register("glowing_obsidian", $factory->fromTypeId(Ids::GLOWING_OBSIDIAN)); - self::register("glowstone", $factory->fromTypeId(Ids::GLOWSTONE)); - self::register("gold", $factory->fromTypeId(Ids::GOLD)); - self::register("gold_ore", $factory->fromTypeId(Ids::GOLD_ORE)); - self::register("granite", $factory->fromTypeId(Ids::GRANITE)); - self::register("granite_slab", $factory->fromTypeId(Ids::GRANITE_SLAB)); - self::register("granite_stairs", $factory->fromTypeId(Ids::GRANITE_STAIRS)); - self::register("granite_wall", $factory->fromTypeId(Ids::GRANITE_WALL)); - self::register("grass", $factory->fromTypeId(Ids::GRASS)); - self::register("grass_path", $factory->fromTypeId(Ids::GRASS_PATH)); - self::register("gravel", $factory->fromTypeId(Ids::GRAVEL)); - self::register("green_torch", $factory->fromTypeId(Ids::GREEN_TORCH)); - self::register("hardened_clay", $factory->fromTypeId(Ids::HARDENED_CLAY)); - self::register("hardened_glass", $factory->fromTypeId(Ids::HARDENED_GLASS)); - self::register("hardened_glass_pane", $factory->fromTypeId(Ids::HARDENED_GLASS_PANE)); - self::register("hay_bale", $factory->fromTypeId(Ids::HAY_BALE)); - self::register("honeycomb", $factory->fromTypeId(Ids::HONEYCOMB)); - self::register("hopper", $factory->fromTypeId(Ids::HOPPER)); - self::register("ice", $factory->fromTypeId(Ids::ICE)); - self::register("infested_chiseled_stone_brick", $factory->fromTypeId(Ids::INFESTED_CHISELED_STONE_BRICK)); - self::register("infested_cobblestone", $factory->fromTypeId(Ids::INFESTED_COBBLESTONE)); - self::register("infested_cracked_stone_brick", $factory->fromTypeId(Ids::INFESTED_CRACKED_STONE_BRICK)); - self::register("infested_mossy_stone_brick", $factory->fromTypeId(Ids::INFESTED_MOSSY_STONE_BRICK)); - self::register("infested_stone", $factory->fromTypeId(Ids::INFESTED_STONE)); - self::register("infested_stone_brick", $factory->fromTypeId(Ids::INFESTED_STONE_BRICK)); - self::register("info_update", $factory->fromTypeId(Ids::INFO_UPDATE)); - self::register("info_update2", $factory->fromTypeId(Ids::INFO_UPDATE2)); - self::register("invisible_bedrock", $factory->fromTypeId(Ids::INVISIBLE_BEDROCK)); - self::register("iron", $factory->fromTypeId(Ids::IRON)); - self::register("iron_bars", $factory->fromTypeId(Ids::IRON_BARS)); - self::register("iron_door", $factory->fromTypeId(Ids::IRON_DOOR)); - self::register("iron_ore", $factory->fromTypeId(Ids::IRON_ORE)); - self::register("iron_trapdoor", $factory->fromTypeId(Ids::IRON_TRAPDOOR)); - self::register("item_frame", $factory->fromTypeId(Ids::ITEM_FRAME)); - self::register("jukebox", $factory->fromTypeId(Ids::JUKEBOX)); - self::register("jungle_button", $factory->fromTypeId(Ids::JUNGLE_BUTTON)); - self::register("jungle_door", $factory->fromTypeId(Ids::JUNGLE_DOOR)); - self::register("jungle_fence", $factory->fromTypeId(Ids::JUNGLE_FENCE)); - self::register("jungle_fence_gate", $factory->fromTypeId(Ids::JUNGLE_FENCE_GATE)); - self::register("jungle_leaves", $factory->fromTypeId(Ids::JUNGLE_LEAVES)); - self::register("jungle_log", $factory->fromTypeId(Ids::JUNGLE_LOG)); - self::register("jungle_planks", $factory->fromTypeId(Ids::JUNGLE_PLANKS)); - self::register("jungle_pressure_plate", $factory->fromTypeId(Ids::JUNGLE_PRESSURE_PLATE)); - self::register("jungle_sapling", $factory->fromTypeId(Ids::JUNGLE_SAPLING)); - self::register("jungle_sign", $factory->fromTypeId(Ids::JUNGLE_SIGN)); - self::register("jungle_slab", $factory->fromTypeId(Ids::JUNGLE_SLAB)); - self::register("jungle_stairs", $factory->fromTypeId(Ids::JUNGLE_STAIRS)); - self::register("jungle_trapdoor", $factory->fromTypeId(Ids::JUNGLE_TRAPDOOR)); - self::register("jungle_wall_sign", $factory->fromTypeId(Ids::JUNGLE_WALL_SIGN)); - self::register("jungle_wood", $factory->fromTypeId(Ids::JUNGLE_WOOD)); - self::register("lab_table", $factory->fromTypeId(Ids::LAB_TABLE)); - self::register("ladder", $factory->fromTypeId(Ids::LADDER)); - self::register("lantern", $factory->fromTypeId(Ids::LANTERN)); - self::register("lapis_lazuli", $factory->fromTypeId(Ids::LAPIS_LAZULI)); - self::register("lapis_lazuli_ore", $factory->fromTypeId(Ids::LAPIS_LAZULI_ORE)); - self::register("large_fern", $factory->fromTypeId(Ids::LARGE_FERN)); - self::register("lava", $factory->fromTypeId(Ids::LAVA)); - self::register("lectern", $factory->fromTypeId(Ids::LECTERN)); - self::register("legacy_stonecutter", $factory->fromTypeId(Ids::LEGACY_STONECUTTER)); - self::register("lever", $factory->fromTypeId(Ids::LEVER)); - self::register("light", $factory->fromTypeId(Ids::LIGHT)); - self::register("lilac", $factory->fromTypeId(Ids::LILAC)); - self::register("lily_of_the_valley", $factory->fromTypeId(Ids::LILY_OF_THE_VALLEY)); - self::register("lily_pad", $factory->fromTypeId(Ids::LILY_PAD)); - self::register("lit_pumpkin", $factory->fromTypeId(Ids::LIT_PUMPKIN)); - self::register("loom", $factory->fromTypeId(Ids::LOOM)); - self::register("magma", $factory->fromTypeId(Ids::MAGMA)); - self::register("mangrove_button", $factory->fromTypeId(Ids::MANGROVE_BUTTON)); - self::register("mangrove_door", $factory->fromTypeId(Ids::MANGROVE_DOOR)); - self::register("mangrove_fence", $factory->fromTypeId(Ids::MANGROVE_FENCE)); - self::register("mangrove_fence_gate", $factory->fromTypeId(Ids::MANGROVE_FENCE_GATE)); - self::register("mangrove_log", $factory->fromTypeId(Ids::MANGROVE_LOG)); - self::register("mangrove_planks", $factory->fromTypeId(Ids::MANGROVE_PLANKS)); - self::register("mangrove_pressure_plate", $factory->fromTypeId(Ids::MANGROVE_PRESSURE_PLATE)); - self::register("mangrove_sign", $factory->fromTypeId(Ids::MANGROVE_SIGN)); - self::register("mangrove_slab", $factory->fromTypeId(Ids::MANGROVE_SLAB)); - self::register("mangrove_stairs", $factory->fromTypeId(Ids::MANGROVE_STAIRS)); - self::register("mangrove_trapdoor", $factory->fromTypeId(Ids::MANGROVE_TRAPDOOR)); - self::register("mangrove_wall_sign", $factory->fromTypeId(Ids::MANGROVE_WALL_SIGN)); - self::register("mangrove_wood", $factory->fromTypeId(Ids::MANGROVE_WOOD)); - self::register("material_reducer", $factory->fromTypeId(Ids::MATERIAL_REDUCER)); - self::register("melon", $factory->fromTypeId(Ids::MELON)); - self::register("melon_stem", $factory->fromTypeId(Ids::MELON_STEM)); - self::register("mob_head", $factory->fromTypeId(Ids::MOB_HEAD)); - self::register("monster_spawner", $factory->fromTypeId(Ids::MONSTER_SPAWNER)); - self::register("mossy_cobblestone", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE)); - self::register("mossy_cobblestone_slab", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_SLAB)); - self::register("mossy_cobblestone_stairs", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_STAIRS)); - self::register("mossy_cobblestone_wall", $factory->fromTypeId(Ids::MOSSY_COBBLESTONE_WALL)); - self::register("mossy_stone_brick_slab", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_SLAB)); - self::register("mossy_stone_brick_stairs", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_STAIRS)); - self::register("mossy_stone_brick_wall", $factory->fromTypeId(Ids::MOSSY_STONE_BRICK_WALL)); - self::register("mossy_stone_bricks", $factory->fromTypeId(Ids::MOSSY_STONE_BRICKS)); - self::register("mud_brick_slab", $factory->fromTypeId(Ids::MUD_BRICK_SLAB)); - self::register("mud_brick_stairs", $factory->fromTypeId(Ids::MUD_BRICK_STAIRS)); - self::register("mud_brick_wall", $factory->fromTypeId(Ids::MUD_BRICK_WALL)); - self::register("mud_bricks", $factory->fromTypeId(Ids::MUD_BRICKS)); - self::register("mushroom_stem", $factory->fromTypeId(Ids::MUSHROOM_STEM)); - self::register("mycelium", $factory->fromTypeId(Ids::MYCELIUM)); - self::register("nether_brick_fence", $factory->fromTypeId(Ids::NETHER_BRICK_FENCE)); - self::register("nether_brick_slab", $factory->fromTypeId(Ids::NETHER_BRICK_SLAB)); - self::register("nether_brick_stairs", $factory->fromTypeId(Ids::NETHER_BRICK_STAIRS)); - self::register("nether_brick_wall", $factory->fromTypeId(Ids::NETHER_BRICK_WALL)); - self::register("nether_bricks", $factory->fromTypeId(Ids::NETHER_BRICKS)); - self::register("nether_gold_ore", $factory->fromTypeId(Ids::NETHER_GOLD_ORE)); - self::register("nether_portal", $factory->fromTypeId(Ids::NETHER_PORTAL)); - self::register("nether_quartz_ore", $factory->fromTypeId(Ids::NETHER_QUARTZ_ORE)); - self::register("nether_reactor_core", $factory->fromTypeId(Ids::NETHER_REACTOR_CORE)); - self::register("nether_wart", $factory->fromTypeId(Ids::NETHER_WART)); - self::register("nether_wart_block", $factory->fromTypeId(Ids::NETHER_WART_BLOCK)); - self::register("netherrack", $factory->fromTypeId(Ids::NETHERRACK)); - self::register("note_block", $factory->fromTypeId(Ids::NOTE_BLOCK)); - self::register("oak_button", $factory->fromTypeId(Ids::OAK_BUTTON)); - self::register("oak_door", $factory->fromTypeId(Ids::OAK_DOOR)); - self::register("oak_fence", $factory->fromTypeId(Ids::OAK_FENCE)); - self::register("oak_fence_gate", $factory->fromTypeId(Ids::OAK_FENCE_GATE)); - self::register("oak_leaves", $factory->fromTypeId(Ids::OAK_LEAVES)); - self::register("oak_log", $factory->fromTypeId(Ids::OAK_LOG)); - self::register("oak_planks", $factory->fromTypeId(Ids::OAK_PLANKS)); - self::register("oak_pressure_plate", $factory->fromTypeId(Ids::OAK_PRESSURE_PLATE)); - self::register("oak_sapling", $factory->fromTypeId(Ids::OAK_SAPLING)); - self::register("oak_sign", $factory->fromTypeId(Ids::OAK_SIGN)); - self::register("oak_slab", $factory->fromTypeId(Ids::OAK_SLAB)); - self::register("oak_stairs", $factory->fromTypeId(Ids::OAK_STAIRS)); - self::register("oak_trapdoor", $factory->fromTypeId(Ids::OAK_TRAPDOOR)); - self::register("oak_wall_sign", $factory->fromTypeId(Ids::OAK_WALL_SIGN)); - self::register("oak_wood", $factory->fromTypeId(Ids::OAK_WOOD)); - self::register("obsidian", $factory->fromTypeId(Ids::OBSIDIAN)); - self::register("orange_tulip", $factory->fromTypeId(Ids::ORANGE_TULIP)); - self::register("oxeye_daisy", $factory->fromTypeId(Ids::OXEYE_DAISY)); - self::register("packed_ice", $factory->fromTypeId(Ids::PACKED_ICE)); - self::register("peony", $factory->fromTypeId(Ids::PEONY)); - self::register("pink_tulip", $factory->fromTypeId(Ids::PINK_TULIP)); - self::register("podzol", $factory->fromTypeId(Ids::PODZOL)); - self::register("polished_andesite", $factory->fromTypeId(Ids::POLISHED_ANDESITE)); - self::register("polished_andesite_slab", $factory->fromTypeId(Ids::POLISHED_ANDESITE_SLAB)); - self::register("polished_andesite_stairs", $factory->fromTypeId(Ids::POLISHED_ANDESITE_STAIRS)); - self::register("polished_basalt", $factory->fromTypeId(Ids::POLISHED_BASALT)); - self::register("polished_blackstone", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE)); - self::register("polished_blackstone_brick_slab", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_SLAB)); - self::register("polished_blackstone_brick_stairs", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS)); - self::register("polished_blackstone_brick_wall", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICK_WALL)); - self::register("polished_blackstone_bricks", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BRICKS)); - self::register("polished_blackstone_button", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_BUTTON)); - self::register("polished_blackstone_pressure_plate", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE)); - self::register("polished_blackstone_slab", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_SLAB)); - self::register("polished_blackstone_stairs", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_STAIRS)); - self::register("polished_blackstone_wall", $factory->fromTypeId(Ids::POLISHED_BLACKSTONE_WALL)); - self::register("polished_deepslate", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE)); - self::register("polished_deepslate_slab", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_SLAB)); - self::register("polished_deepslate_stairs", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_STAIRS)); - self::register("polished_deepslate_wall", $factory->fromTypeId(Ids::POLISHED_DEEPSLATE_WALL)); - self::register("polished_diorite", $factory->fromTypeId(Ids::POLISHED_DIORITE)); - self::register("polished_diorite_slab", $factory->fromTypeId(Ids::POLISHED_DIORITE_SLAB)); - self::register("polished_diorite_stairs", $factory->fromTypeId(Ids::POLISHED_DIORITE_STAIRS)); - self::register("polished_granite", $factory->fromTypeId(Ids::POLISHED_GRANITE)); - self::register("polished_granite_slab", $factory->fromTypeId(Ids::POLISHED_GRANITE_SLAB)); - self::register("polished_granite_stairs", $factory->fromTypeId(Ids::POLISHED_GRANITE_STAIRS)); - self::register("poppy", $factory->fromTypeId(Ids::POPPY)); - self::register("potatoes", $factory->fromTypeId(Ids::POTATOES)); - self::register("powered_rail", $factory->fromTypeId(Ids::POWERED_RAIL)); - self::register("prismarine", $factory->fromTypeId(Ids::PRISMARINE)); - self::register("prismarine_bricks", $factory->fromTypeId(Ids::PRISMARINE_BRICKS)); - self::register("prismarine_bricks_slab", $factory->fromTypeId(Ids::PRISMARINE_BRICKS_SLAB)); - self::register("prismarine_bricks_stairs", $factory->fromTypeId(Ids::PRISMARINE_BRICKS_STAIRS)); - self::register("prismarine_slab", $factory->fromTypeId(Ids::PRISMARINE_SLAB)); - self::register("prismarine_stairs", $factory->fromTypeId(Ids::PRISMARINE_STAIRS)); - self::register("prismarine_wall", $factory->fromTypeId(Ids::PRISMARINE_WALL)); - self::register("pumpkin", $factory->fromTypeId(Ids::PUMPKIN)); - self::register("pumpkin_stem", $factory->fromTypeId(Ids::PUMPKIN_STEM)); - self::register("purple_torch", $factory->fromTypeId(Ids::PURPLE_TORCH)); - self::register("purpur", $factory->fromTypeId(Ids::PURPUR)); - self::register("purpur_pillar", $factory->fromTypeId(Ids::PURPUR_PILLAR)); - self::register("purpur_slab", $factory->fromTypeId(Ids::PURPUR_SLAB)); - self::register("purpur_stairs", $factory->fromTypeId(Ids::PURPUR_STAIRS)); - self::register("quartz", $factory->fromTypeId(Ids::QUARTZ)); - self::register("quartz_bricks", $factory->fromTypeId(Ids::QUARTZ_BRICKS)); - self::register("quartz_pillar", $factory->fromTypeId(Ids::QUARTZ_PILLAR)); - self::register("quartz_slab", $factory->fromTypeId(Ids::QUARTZ_SLAB)); - self::register("quartz_stairs", $factory->fromTypeId(Ids::QUARTZ_STAIRS)); - self::register("rail", $factory->fromTypeId(Ids::RAIL)); - self::register("raw_copper", $factory->fromTypeId(Ids::RAW_COPPER)); - self::register("raw_gold", $factory->fromTypeId(Ids::RAW_GOLD)); - self::register("raw_iron", $factory->fromTypeId(Ids::RAW_IRON)); - self::register("red_mushroom", $factory->fromTypeId(Ids::RED_MUSHROOM)); - self::register("red_mushroom_block", $factory->fromTypeId(Ids::RED_MUSHROOM_BLOCK)); - self::register("red_nether_brick_slab", $factory->fromTypeId(Ids::RED_NETHER_BRICK_SLAB)); - self::register("red_nether_brick_stairs", $factory->fromTypeId(Ids::RED_NETHER_BRICK_STAIRS)); - self::register("red_nether_brick_wall", $factory->fromTypeId(Ids::RED_NETHER_BRICK_WALL)); - self::register("red_nether_bricks", $factory->fromTypeId(Ids::RED_NETHER_BRICKS)); - self::register("red_sand", $factory->fromTypeId(Ids::RED_SAND)); - self::register("red_sandstone", $factory->fromTypeId(Ids::RED_SANDSTONE)); - self::register("red_sandstone_slab", $factory->fromTypeId(Ids::RED_SANDSTONE_SLAB)); - self::register("red_sandstone_stairs", $factory->fromTypeId(Ids::RED_SANDSTONE_STAIRS)); - self::register("red_sandstone_wall", $factory->fromTypeId(Ids::RED_SANDSTONE_WALL)); - self::register("red_torch", $factory->fromTypeId(Ids::RED_TORCH)); - self::register("red_tulip", $factory->fromTypeId(Ids::RED_TULIP)); - self::register("redstone", $factory->fromTypeId(Ids::REDSTONE)); - self::register("redstone_comparator", $factory->fromTypeId(Ids::REDSTONE_COMPARATOR)); - self::register("redstone_lamp", $factory->fromTypeId(Ids::REDSTONE_LAMP)); - self::register("redstone_ore", $factory->fromTypeId(Ids::REDSTONE_ORE)); - self::register("redstone_repeater", $factory->fromTypeId(Ids::REDSTONE_REPEATER)); - self::register("redstone_torch", $factory->fromTypeId(Ids::REDSTONE_TORCH)); - self::register("redstone_wire", $factory->fromTypeId(Ids::REDSTONE_WIRE)); - self::register("reserved6", $factory->fromTypeId(Ids::RESERVED6)); - self::register("rose_bush", $factory->fromTypeId(Ids::ROSE_BUSH)); - self::register("sand", $factory->fromTypeId(Ids::SAND)); - self::register("sandstone", $factory->fromTypeId(Ids::SANDSTONE)); - self::register("sandstone_slab", $factory->fromTypeId(Ids::SANDSTONE_SLAB)); - self::register("sandstone_stairs", $factory->fromTypeId(Ids::SANDSTONE_STAIRS)); - self::register("sandstone_wall", $factory->fromTypeId(Ids::SANDSTONE_WALL)); - self::register("sea_lantern", $factory->fromTypeId(Ids::SEA_LANTERN)); - self::register("sea_pickle", $factory->fromTypeId(Ids::SEA_PICKLE)); - self::register("shroomlight", $factory->fromTypeId(Ids::SHROOMLIGHT)); - self::register("shulker_box", $factory->fromTypeId(Ids::SHULKER_BOX)); - self::register("slime", $factory->fromTypeId(Ids::SLIME)); - self::register("smoker", $factory->fromTypeId(Ids::SMOKER)); - self::register("smooth_basalt", $factory->fromTypeId(Ids::SMOOTH_BASALT)); - self::register("smooth_quartz", $factory->fromTypeId(Ids::SMOOTH_QUARTZ)); - self::register("smooth_quartz_slab", $factory->fromTypeId(Ids::SMOOTH_QUARTZ_SLAB)); - self::register("smooth_quartz_stairs", $factory->fromTypeId(Ids::SMOOTH_QUARTZ_STAIRS)); - self::register("smooth_red_sandstone", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE)); - self::register("smooth_red_sandstone_slab", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE_SLAB)); - self::register("smooth_red_sandstone_stairs", $factory->fromTypeId(Ids::SMOOTH_RED_SANDSTONE_STAIRS)); - self::register("smooth_sandstone", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE)); - self::register("smooth_sandstone_slab", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE_SLAB)); - self::register("smooth_sandstone_stairs", $factory->fromTypeId(Ids::SMOOTH_SANDSTONE_STAIRS)); - self::register("smooth_stone", $factory->fromTypeId(Ids::SMOOTH_STONE)); - self::register("smooth_stone_slab", $factory->fromTypeId(Ids::SMOOTH_STONE_SLAB)); - self::register("snow", $factory->fromTypeId(Ids::SNOW)); - self::register("snow_layer", $factory->fromTypeId(Ids::SNOW_LAYER)); - self::register("soul_fire", $factory->fromTypeId(Ids::SOUL_FIRE)); - self::register("soul_lantern", $factory->fromTypeId(Ids::SOUL_LANTERN)); - self::register("soul_sand", $factory->fromTypeId(Ids::SOUL_SAND)); - self::register("soul_soil", $factory->fromTypeId(Ids::SOUL_SOIL)); - self::register("soul_torch", $factory->fromTypeId(Ids::SOUL_TORCH)); - self::register("sponge", $factory->fromTypeId(Ids::SPONGE)); - self::register("spruce_button", $factory->fromTypeId(Ids::SPRUCE_BUTTON)); - self::register("spruce_door", $factory->fromTypeId(Ids::SPRUCE_DOOR)); - self::register("spruce_fence", $factory->fromTypeId(Ids::SPRUCE_FENCE)); - self::register("spruce_fence_gate", $factory->fromTypeId(Ids::SPRUCE_FENCE_GATE)); - self::register("spruce_leaves", $factory->fromTypeId(Ids::SPRUCE_LEAVES)); - self::register("spruce_log", $factory->fromTypeId(Ids::SPRUCE_LOG)); - self::register("spruce_planks", $factory->fromTypeId(Ids::SPRUCE_PLANKS)); - self::register("spruce_pressure_plate", $factory->fromTypeId(Ids::SPRUCE_PRESSURE_PLATE)); - self::register("spruce_sapling", $factory->fromTypeId(Ids::SPRUCE_SAPLING)); - self::register("spruce_sign", $factory->fromTypeId(Ids::SPRUCE_SIGN)); - self::register("spruce_slab", $factory->fromTypeId(Ids::SPRUCE_SLAB)); - self::register("spruce_stairs", $factory->fromTypeId(Ids::SPRUCE_STAIRS)); - self::register("spruce_trapdoor", $factory->fromTypeId(Ids::SPRUCE_TRAPDOOR)); - self::register("spruce_wall_sign", $factory->fromTypeId(Ids::SPRUCE_WALL_SIGN)); - self::register("spruce_wood", $factory->fromTypeId(Ids::SPRUCE_WOOD)); - self::register("stained_clay", $factory->fromTypeId(Ids::STAINED_CLAY)); - self::register("stained_glass", $factory->fromTypeId(Ids::STAINED_GLASS)); - self::register("stained_glass_pane", $factory->fromTypeId(Ids::STAINED_GLASS_PANE)); - self::register("stained_hardened_glass", $factory->fromTypeId(Ids::STAINED_HARDENED_GLASS)); - self::register("stained_hardened_glass_pane", $factory->fromTypeId(Ids::STAINED_HARDENED_GLASS_PANE)); - self::register("stone", $factory->fromTypeId(Ids::STONE)); - self::register("stone_brick_slab", $factory->fromTypeId(Ids::STONE_BRICK_SLAB)); - self::register("stone_brick_stairs", $factory->fromTypeId(Ids::STONE_BRICK_STAIRS)); - self::register("stone_brick_wall", $factory->fromTypeId(Ids::STONE_BRICK_WALL)); - self::register("stone_bricks", $factory->fromTypeId(Ids::STONE_BRICKS)); - self::register("stone_button", $factory->fromTypeId(Ids::STONE_BUTTON)); - self::register("stone_pressure_plate", $factory->fromTypeId(Ids::STONE_PRESSURE_PLATE)); - self::register("stone_slab", $factory->fromTypeId(Ids::STONE_SLAB)); - self::register("stone_stairs", $factory->fromTypeId(Ids::STONE_STAIRS)); - self::register("stonecutter", $factory->fromTypeId(Ids::STONECUTTER)); - self::register("sugarcane", $factory->fromTypeId(Ids::SUGARCANE)); - self::register("sunflower", $factory->fromTypeId(Ids::SUNFLOWER)); - self::register("sweet_berry_bush", $factory->fromTypeId(Ids::SWEET_BERRY_BUSH)); - self::register("tall_grass", $factory->fromTypeId(Ids::TALL_GRASS)); - self::register("tinted_glass", $factory->fromTypeId(Ids::TINTED_GLASS)); - self::register("tnt", $factory->fromTypeId(Ids::TNT)); - self::register("torch", $factory->fromTypeId(Ids::TORCH)); - self::register("trapped_chest", $factory->fromTypeId(Ids::TRAPPED_CHEST)); - self::register("tripwire", $factory->fromTypeId(Ids::TRIPWIRE)); - self::register("tripwire_hook", $factory->fromTypeId(Ids::TRIPWIRE_HOOK)); - self::register("tuff", $factory->fromTypeId(Ids::TUFF)); - self::register("underwater_torch", $factory->fromTypeId(Ids::UNDERWATER_TORCH)); - self::register("vines", $factory->fromTypeId(Ids::VINES)); - self::register("wall_banner", $factory->fromTypeId(Ids::WALL_BANNER)); - self::register("wall_coral_fan", $factory->fromTypeId(Ids::WALL_CORAL_FAN)); - self::register("warped_button", $factory->fromTypeId(Ids::WARPED_BUTTON)); - self::register("warped_door", $factory->fromTypeId(Ids::WARPED_DOOR)); - self::register("warped_fence", $factory->fromTypeId(Ids::WARPED_FENCE)); - self::register("warped_fence_gate", $factory->fromTypeId(Ids::WARPED_FENCE_GATE)); - self::register("warped_hyphae", $factory->fromTypeId(Ids::WARPED_HYPHAE)); - self::register("warped_planks", $factory->fromTypeId(Ids::WARPED_PLANKS)); - self::register("warped_pressure_plate", $factory->fromTypeId(Ids::WARPED_PRESSURE_PLATE)); - self::register("warped_sign", $factory->fromTypeId(Ids::WARPED_SIGN)); - self::register("warped_slab", $factory->fromTypeId(Ids::WARPED_SLAB)); - self::register("warped_stairs", $factory->fromTypeId(Ids::WARPED_STAIRS)); - self::register("warped_stem", $factory->fromTypeId(Ids::WARPED_STEM)); - self::register("warped_trapdoor", $factory->fromTypeId(Ids::WARPED_TRAPDOOR)); - self::register("warped_wall_sign", $factory->fromTypeId(Ids::WARPED_WALL_SIGN)); - self::register("water", $factory->fromTypeId(Ids::WATER)); - self::register("weighted_pressure_plate_heavy", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY)); - self::register("weighted_pressure_plate_light", $factory->fromTypeId(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT)); - self::register("wheat", $factory->fromTypeId(Ids::WHEAT)); - self::register("white_tulip", $factory->fromTypeId(Ids::WHITE_TULIP)); - self::register("wool", $factory->fromTypeId(Ids::WOOL)); + $railBreakInfo = new BlockBreakInfo(0.7); + self::register("activator_rail", new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); + self::register("air", new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); + self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + self::register("bamboo", new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + public function getBreakTime(Item $item) : float{ + if($item->getBlockToolType() === ToolType::SWORD){ + return 0.0; + } + return parent::getBreakTime($item); + } + })); + self::register("bamboo_sapling", new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", BreakInfo::instant())); + + $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); + self::register("banner", new FloorBanner(new BID(Ids::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); + self::register("wall_banner", new WallBanner(new BID(Ids::WALL_BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); + self::register("barrel", new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + self::register("barrier", new Transparent(new BID(Ids::BARRIER), "Barrier", BreakInfo::indestructible())); + self::register("beacon", new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new BreakInfo(3.0))); + self::register("bed", new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); + self::register("bedrock", new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); + + self::register("beetroots", new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); + self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); + self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); + self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("brick_stairs", new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); + self::register("bricks", new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); + + self::register("brown_mushroom", new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", BreakInfo::instant())); + self::register("cactus", new Cactus(new BID(Ids::CACTUS), "Cactus", new BreakInfo(0.4))); + self::register("cake", new Cake(new BID(Ids::CAKE), "Cake", new BreakInfo(0.5))); + self::register("carrots", new Carrot(new BID(Ids::CARROTS), "Carrot Block", BreakInfo::instant())); + + $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); + self::register("chest", new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); + self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); + self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + + $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("cobblestone", $cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); + self::register("mossy_cobblestone", new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); + self::register("cobblestone_stairs", new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); + self::register("mossy_cobblestone_stairs", new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + + self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); + self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); + self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); + self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); + + self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); + self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); + self::register("rose_bush", new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", BreakInfo::instant())); + self::register("peony", new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); + self::register("double_tallgrass", new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("large_fern", new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("dried_kelp", new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); + self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + self::register("end_portal_frame", new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); + self::register("end_rod", new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); + self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + + $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); + self::register("end_stone_bricks", new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); + self::register("end_stone_brick_stairs", new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); + + self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); + self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", BreakInfo::instant())); + self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", BreakInfo::instant())); + self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", BreakInfo::instant())); + self::register("azure_bluet", new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); + self::register("blue_orchid", new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); + self::register("cornflower", new Flower(new BID(Ids::CORNFLOWER), "Cornflower", BreakInfo::instant())); + self::register("lily_of_the_valley", new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); + self::register("orange_tulip", new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); + self::register("oxeye_daisy", new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); + self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", BreakInfo::instant())); + self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); + self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); + self::register("FLOWER_POT", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); + self::register("FURNACE", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("BLAST_FURNACE", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("SMOKER", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + $glassBreakInfo = new BreakInfo(0.3); + self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); + self::register("glass_pane", new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); + self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); + self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + + $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); + self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); + self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); + self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + + $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); + self::register("hardened_clay", new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); + + $hardenedGlassBreakInfo = new BreakInfo(10.0); + self::register("hardened_glass", new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); + self::register("hardened_glass_pane", new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); + self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); + self::register("HOPPER", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + self::register("ice", new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + + $updateBlockBreakInfo = new BreakInfo(1.0); + self::register("info_update", new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); + self::register("info_update2", new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); + self::register("invisible_bedrock", new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); + + $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); + self::register("iron", new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); + self::register("iron_bars", new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); + $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); + self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); + self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); + self::register("ITEM_FRAME", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + self::register("JUKEBOX", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + + $lanternBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("lantern", new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); + self::register("soul_lantern", new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); + + self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); + self::register("LECTERN", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); + self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); + self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); + self::register("MONSTER_SPAWNER", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + + $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("nether_bricks", new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); + self::register("red_nether_bricks", new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); + self::register("nether_brick_fence", new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); + self::register("nether_brick_stairs", new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); + self::register("red_nether_brick_stairs", new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + self::register("chiseled_nether_bricks", new Opaque(new BID(Ids::CHISELED_NETHER_BRICKS), "Chiseled Nether Bricks", $netherBrickBreakInfo)); + self::register("cracked_nether_bricks", new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); + + self::register("nether_portal", new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); + self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); + self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); + self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("NOTE_BLOCK", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); + self::register("powered_rail", new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); + + $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("prismarine", new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); + self::register("dark_prismarine", new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); + self::register("prismarine_bricks", new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); + self::register("prismarine_bricks_stairs", new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + self::register("dark_prismarine_stairs", new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); + self::register("prismarine_stairs", new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); + + $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); + self::register("pumpkin", new Pumpkin(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); + self::register("carved_pumpkin", new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); + self::register("lit_pumpkin", new LitPumpkin(new BID(Ids::LIT_PUMPKIN), "Jack o'Lantern", $pumpkinBreakInfo)); + + self::register("pumpkin_stem", new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); + + $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("purpur", new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); + self::register("purpur_pillar", new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); + self::register("purpur_stairs", new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); + + $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("quartz", new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); + self::register("chiseled_quartz", new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); + self::register("quartz_pillar", new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); + self::register("smooth_quartz", new Opaque(new BID(Ids::SMOOTH_QUARTZ), "Smooth Quartz Block", $quartzBreakInfo)); + self::register("quartz_bricks", new Opaque(new BID(Ids::QUARTZ_BRICKS), "Quartz Bricks", $quartzBreakInfo)); + + self::register("quartz_stairs", new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); + self::register("smooth_quartz_stairs", new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); + + self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); + self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); + self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + self::register("REDSTONE_COMPARATOR", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); + self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); + self::register("redstone_torch", new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); + self::register("redstone_wire", new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); + self::register("reserved6", new Reserved6(new BID(Ids::RESERVED6), "reserved6", BreakInfo::instant())); + + $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); + self::register("sand", new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); + self::register("red_sand", new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); + + self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new BreakInfo(0.3))); + self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); + self::register("MOB_HEAD", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); + self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); + $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); + self::register("SHULKER_BOX", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + + $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register( + "stone", + $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ + public function getDropsForCompatibleTool(Item $item) : array{ + return [VanillaBlocks::COBBLESTONE()->asItem()]; + } + + public function isAffectedBySilkTouch() : bool{ + return true; + } + } + ); + self::register("andesite", new Opaque(new BID(Ids::ANDESITE), "Andesite", $stoneBreakInfo)); + self::register("diorite", new Opaque(new BID(Ids::DIORITE), "Diorite", $stoneBreakInfo)); + self::register("granite", new Opaque(new BID(Ids::GRANITE), "Granite", $stoneBreakInfo)); + self::register("polished_andesite", new Opaque(new BID(Ids::POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); + self::register("polished_diorite", new Opaque(new BID(Ids::POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); + self::register("polished_granite", new Opaque(new BID(Ids::POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); + + self::register("stone_bricks", $stoneBrick = new Opaque(new BID(Ids::STONE_BRICKS), "Stone Bricks", $stoneBreakInfo)); + self::register("mossy_stone_bricks", $mossyStoneBrick = new Opaque(new BID(Ids::MOSSY_STONE_BRICKS), "Mossy Stone Bricks", $stoneBreakInfo)); + self::register("cracked_stone_bricks", $crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS), "Cracked Stone Bricks", $stoneBreakInfo)); + self::register("chiseled_stone_bricks", $chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS), "Chiseled Stone Bricks", $stoneBreakInfo)); + + $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); + self::register("infested_stone", new InfestedStone(new BID(Ids::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); + self::register("infested_stone_brick", new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); + self::register("infested_cobblestone", new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); + self::register("infested_mossy_stone_brick", new InfestedStone(new BID(Ids::INFESTED_MOSSY_STONE_BRICK), "Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick)); + self::register("infested_cracked_stone_brick", new InfestedStone(new BID(Ids::INFESTED_CRACKED_STONE_BRICK), "Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick)); + self::register("infested_chiseled_stone_brick", new InfestedStone(new BID(Ids::INFESTED_CHISELED_STONE_BRICK), "Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick)); + + self::register("stone_stairs", new Stair(new BID(Ids::STONE_STAIRS), "Stone Stairs", $stoneBreakInfo)); + self::register("smooth_stone", new Opaque(new BID(Ids::SMOOTH_STONE), "Smooth Stone", $stoneBreakInfo)); + self::register("andesite_stairs", new Stair(new BID(Ids::ANDESITE_STAIRS), "Andesite Stairs", $stoneBreakInfo)); + self::register("diorite_stairs", new Stair(new BID(Ids::DIORITE_STAIRS), "Diorite Stairs", $stoneBreakInfo)); + self::register("granite_stairs", new Stair(new BID(Ids::GRANITE_STAIRS), "Granite Stairs", $stoneBreakInfo)); + self::register("polished_andesite_stairs", new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS), "Polished Andesite Stairs", $stoneBreakInfo)); + self::register("polished_diorite_stairs", new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS), "Polished Diorite Stairs", $stoneBreakInfo)); + self::register("polished_granite_stairs", new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); + self::register("stone_brick_stairs", new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); + self::register("mossy_stone_brick_stairs", new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); + self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); + self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + //TODO: in the future this won't be the same for all the types + $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + + self::register("BRICK_SLAB", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); + self::register("COBBLESTONE_SLAB", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); + self::register("FAKE_WOODEN_SLAB", new Slab(new BID(Ids::FAKE_WOODEN_SLAB), "Fake Wooden", $stoneSlabBreakInfo)); + self::register("NETHER_BRICK_SLAB", new Slab(new BID(Ids::NETHER_BRICK_SLAB), "Nether Brick", $stoneSlabBreakInfo)); + self::register("QUARTZ_SLAB", new Slab(new BID(Ids::QUARTZ_SLAB), "Quartz", $stoneSlabBreakInfo)); + self::register("SANDSTONE_SLAB", new Slab(new BID(Ids::SANDSTONE_SLAB), "Sandstone", $stoneSlabBreakInfo)); + self::register("SMOOTH_STONE_SLAB", new Slab(new BID(Ids::SMOOTH_STONE_SLAB), "Smooth Stone", $stoneSlabBreakInfo)); + self::register("STONE_BRICK_SLAB", new Slab(new BID(Ids::STONE_BRICK_SLAB), "Stone Brick", $stoneSlabBreakInfo)); + self::register("DARK_PRISMARINE_SLAB", new Slab(new BID(Ids::DARK_PRISMARINE_SLAB), "Dark Prismarine", $stoneSlabBreakInfo)); + self::register("MOSSY_COBBLESTONE_SLAB", new Slab(new BID(Ids::MOSSY_COBBLESTONE_SLAB), "Mossy Cobblestone", $stoneSlabBreakInfo)); + self::register("PRISMARINE_SLAB", new Slab(new BID(Ids::PRISMARINE_SLAB), "Prismarine", $stoneSlabBreakInfo)); + self::register("PRISMARINE_BRICKS_SLAB", new Slab(new BID(Ids::PRISMARINE_BRICKS_SLAB), "Prismarine Bricks", $stoneSlabBreakInfo)); + self::register("PURPUR_SLAB", new Slab(new BID(Ids::PURPUR_SLAB), "Purpur", $stoneSlabBreakInfo)); + self::register("RED_NETHER_BRICK_SLAB", new Slab(new BID(Ids::RED_NETHER_BRICK_SLAB), "Red Nether Brick", $stoneSlabBreakInfo)); + self::register("RED_SANDSTONE_SLAB", new Slab(new BID(Ids::RED_SANDSTONE_SLAB), "Red Sandstone", $stoneSlabBreakInfo)); + self::register("SMOOTH_SANDSTONE_SLAB", new Slab(new BID(Ids::SMOOTH_SANDSTONE_SLAB), "Smooth Sandstone", $stoneSlabBreakInfo)); + self::register("ANDESITE_SLAB", new Slab(new BID(Ids::ANDESITE_SLAB), "Andesite", $stoneSlabBreakInfo)); + self::register("DIORITE_SLAB", new Slab(new BID(Ids::DIORITE_SLAB), "Diorite", $stoneSlabBreakInfo)); + self::register("END_STONE_BRICK_SLAB", new Slab(new BID(Ids::END_STONE_BRICK_SLAB), "End Stone Brick", $stoneSlabBreakInfo)); + self::register("GRANITE_SLAB", new Slab(new BID(Ids::GRANITE_SLAB), "Granite", $stoneSlabBreakInfo)); + self::register("POLISHED_ANDESITE_SLAB", new Slab(new BID(Ids::POLISHED_ANDESITE_SLAB), "Polished Andesite", $stoneSlabBreakInfo)); + self::register("POLISHED_DIORITE_SLAB", new Slab(new BID(Ids::POLISHED_DIORITE_SLAB), "Polished Diorite", $stoneSlabBreakInfo)); + self::register("POLISHED_GRANITE_SLAB", new Slab(new BID(Ids::POLISHED_GRANITE_SLAB), "Polished Granite", $stoneSlabBreakInfo)); + self::register("SMOOTH_RED_SANDSTONE_SLAB", new Slab(new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB), "Smooth Red Sandstone", $stoneSlabBreakInfo)); + self::register("CUT_RED_SANDSTONE_SLAB", new Slab(new BID(Ids::CUT_RED_SANDSTONE_SLAB), "Cut Red Sandstone", $stoneSlabBreakInfo)); + self::register("CUT_SANDSTONE_SLAB", new Slab(new BID(Ids::CUT_SANDSTONE_SLAB), "Cut Sandstone", $stoneSlabBreakInfo)); + self::register("MOSSY_STONE_BRICK_SLAB", new Slab(new BID(Ids::MOSSY_STONE_BRICK_SLAB), "Mossy Stone Brick", $stoneSlabBreakInfo)); + self::register("SMOOTH_QUARTZ_SLAB", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); + self::register("STONE_SLAB", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); + + self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); + self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); + self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); + self::register("fern", new TallGrass(new BID(Ids::FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("tall_grass", new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); + + self::register("blue_torch", new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", BreakInfo::instant())); + self::register("purple_torch", new Torch(new BID(Ids::PURPLE_TORCH), "Purple Torch", BreakInfo::instant())); + self::register("red_torch", new Torch(new BID(Ids::RED_TORCH), "Red Torch", BreakInfo::instant())); + self::register("green_torch", new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", BreakInfo::instant())); + self::register("torch", new Torch(new BID(Ids::TORCH), "Torch", BreakInfo::instant())); + + self::register("TRAPPED_CHEST", new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); + self::register("tripwire", new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); + self::register("tripwire_hook", new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); + self::register("underwater_torch", new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); + self::register("vines", new Vine(new BID(Ids::VINES), "Vines", new BreakInfo(0.2, ToolType::AXE))); + self::register("water", new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); + self::register("lily_pad", new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); + + $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("weighted_pressure_plate_heavy", new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); + self::register("weighted_pressure_plate_light", new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); + self::register("wheat", new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); + + $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ + public function getBreakTime(Item $item) : float{ + if($item->getBlockToolType() === ToolType::SHEARS){ + return 0.0; + } + return parent::getBreakTime($item); + } + }; + + foreach(TreeType::getAll() as $treeType){ + $name = $treeType->getDisplayName(); + self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); + self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); + } + + $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("red_sandstone_stairs", new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); + self::register("smooth_red_sandstone_stairs", new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + self::register("red_sandstone", new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); + self::register("chiseled_red_sandstone", new Opaque(new BID(Ids::CHISELED_RED_SANDSTONE), "Chiseled Red Sandstone", $sandstoneBreakInfo)); + self::register("cut_red_sandstone", new Opaque(new BID(Ids::CUT_RED_SANDSTONE), "Cut Red Sandstone", $sandstoneBreakInfo)); + self::register("smooth_red_sandstone", new Opaque(new BID(Ids::SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $sandstoneBreakInfo)); + + self::register("sandstone_stairs", new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo)); + self::register("smooth_sandstone_stairs", new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + self::register("sandstone", new Opaque(new BID(Ids::SANDSTONE), "Sandstone", $sandstoneBreakInfo)); + self::register("chiseled_sandstone", new Opaque(new BID(Ids::CHISELED_SANDSTONE), "Chiseled Sandstone", $sandstoneBreakInfo)); + self::register("cut_sandstone", new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); + self::register("smooth_sandstone", new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); + + self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("DYED_SHULKER_BOX", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + self::register("stained_glass", new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); + self::register("stained_glass_pane", new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); + self::register("stained_clay", new StainedHardenedClay(new BID(Ids::STAINED_CLAY), "Stained Clay", $hardenedClayBreakInfo)); + self::register("stained_hardened_glass", new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); + self::register("stained_hardened_glass_pane", new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); + self::register("carpet", new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); + self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("wool", new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + public function getBreakTime(Item $item) : float{ + $time = parent::getBreakTime($item); + if($item->getBlockToolType() === ToolType::SHEARS){ + $time *= 3; //shears break compatible blocks 15x faster, but wool 5x + } + + return $time; + } + })); + + //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap + $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("cobblestone_wall", new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); + self::register("andesite_wall", new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); + self::register("brick_wall", new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); + self::register("diorite_wall", new Wall(new BID(Ids::DIORITE_WALL), "Diorite Wall", $wallBreakInfo)); + self::register("end_stone_brick_wall", new Wall(new BID(Ids::END_STONE_BRICK_WALL), "End Stone Brick Wall", $wallBreakInfo)); + self::register("granite_wall", new Wall(new BID(Ids::GRANITE_WALL), "Granite Wall", $wallBreakInfo)); + self::register("mossy_stone_brick_wall", new Wall(new BID(Ids::MOSSY_STONE_BRICK_WALL), "Mossy Stone Brick Wall", $wallBreakInfo)); + self::register("mossy_cobblestone_wall", new Wall(new BID(Ids::MOSSY_COBBLESTONE_WALL), "Mossy Cobblestone Wall", $wallBreakInfo)); + self::register("nether_brick_wall", new Wall(new BID(Ids::NETHER_BRICK_WALL), "Nether Brick Wall", $wallBreakInfo)); + self::register("prismarine_wall", new Wall(new BID(Ids::PRISMARINE_WALL), "Prismarine Wall", $wallBreakInfo)); + self::register("red_nether_brick_wall", new Wall(new BID(Ids::RED_NETHER_BRICK_WALL), "Red Nether Brick Wall", $wallBreakInfo)); + self::register("red_sandstone_wall", new Wall(new BID(Ids::RED_SANDSTONE_WALL), "Red Sandstone Wall", $wallBreakInfo)); + self::register("sandstone_wall", new Wall(new BID(Ids::SANDSTONE_WALL), "Sandstone Wall", $wallBreakInfo)); + self::register("stone_brick_wall", new Wall(new BID(Ids::STONE_BRICK_WALL), "Stone Brick Wall", $wallBreakInfo)); + + self::registerElements(); + + $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("compound_creator", new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); + self::register("element_constructor", new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); + self::register("lab_table", new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); + self::register("material_reducer", new ChemistryTable(new BID(Ids::MATERIAL_REDUCER), "Material Reducer", $chemistryTableBreakInfo)); + + self::register("chemical_heat", new ChemicalHeat(new BID(Ids::CHEMICAL_HEAT), "Heat Block", $chemistryTableBreakInfo)); + + self::registerMushroomBlocks(); + + self::register("coral", new Coral( + new BID(Ids::CORAL), + "Coral", + BreakInfo::instant(), + )); + self::register("coral_fan", new FloorCoralFan( + new BID(Ids::CORAL_FAN), + "Coral Fan", + BreakInfo::instant(), + )); + self::register("wall_coral_fan", new WallCoralFan( + new BID(Ids::WALL_CORAL_FAN), + "Wall Coral Fan", + BreakInfo::instant(), + )); + + self::registerBlocksR13(); + self::registerBlocksR14(); + self::registerBlocksR16(); + self::registerBlocksR17(); + self::registerMudBlocks(); + + self::registerOres(); + self::registerWoodenBlocks(); } + + private static function registerWoodenBlocks() : void{ + $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); + $signBreakInfo = new BreakInfo(1.0, ToolType::AXE); + $logBreakInfo = new BreakInfo(2.0, ToolType::AXE); + $woodenDoorBreakInfo = new BreakInfo(3.0, ToolType::AXE, 0, 15.0); + $woodenButtonBreakInfo = new BreakInfo(0.5, ToolType::AXE); + $woodenPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::AXE); + + foreach(WoodType::getAll() as $woodType){ + $name = $woodType->getDisplayName(); + $idName = fn(string $suffix) => $woodType->name() . "_" . $suffix; + + self::register($idName(mb_strtolower($woodType->getStandardLogSuffix() ?? "log", 'US-ASCII')), new Wood(BlockLegacyIdHelper::getLogIdentifier($woodType), $name . " " . ($woodType->getStandardLogSuffix() ?? "Log"), $logBreakInfo, $woodType)); + self::register($idName(mb_strtolower($woodType->getAllSidedLogSuffix() ?? "wood", 'US-ASCII')), new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($woodType), $name . " " . ($woodType->getAllSidedLogSuffix() ?? "Wood"), $logBreakInfo, $woodType)); + + self::register($idName("planks"), new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($woodType), $name . " Planks", $planksBreakInfo, $woodType)); + self::register($idName("fence"), new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($woodType), $name . " Fence", $planksBreakInfo, $woodType)); + self::register($idName("slab"), new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType)); + + self::register($idName("fence_gate"), new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($woodType), $name . " Fence Gate", $planksBreakInfo, $woodType)); + self::register($idName("stairs"), new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($woodType), $name . " Stairs", $planksBreakInfo, $woodType)); + self::register($idName("door"), new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($woodType), $name . " Door", $woodenDoorBreakInfo, $woodType)); + + self::register($idName("button"), new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); + self::register($idName("pressure_plate"), new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); + self::register($idName("trapdoor"), new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); + + [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($woodType); + self::register($idName("sign"), new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $woodType, $signAsItem)); + self::register($idName("wall_sign"), new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $woodType, $signAsItem)); + } + } + + private static function registerMushroomBlocks() : void{ + $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); + + self::register("brown_mushroom_block", new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block", $mushroomBlockBreakInfo)); + self::register("red_mushroom_block", new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block", $mushroomBlockBreakInfo)); + + //finally, the stems + self::register("mushroom_stem", new MushroomStem(new BID(Ids::MUSHROOM_STEM), "Mushroom Stem", $mushroomBlockBreakInfo)); + self::register("all_sided_mushroom_stem", new MushroomStem(new BID(Ids::ALL_SIDED_MUSHROOM_STEM), "All Sided Mushroom Stem", $mushroomBlockBreakInfo)); + } + + private static function registerElements() : void{ + $instaBreak = BreakInfo::instant(); + self::register("element_zero", new Opaque(new BID(Ids::ELEMENT_ZERO), "???", $instaBreak)); + + self::register("element_hydrogen", new Element(new BID(Ids::ELEMENT_HYDROGEN), "Hydrogen", $instaBreak, "h", 1, 5)); + self::register("element_helium", new Element(new BID(Ids::ELEMENT_HELIUM), "Helium", $instaBreak, "he", 2, 7)); + self::register("element_lithium", new Element(new BID(Ids::ELEMENT_LITHIUM), "Lithium", $instaBreak, "li", 3, 0)); + self::register("element_beryllium", new Element(new BID(Ids::ELEMENT_BERYLLIUM), "Beryllium", $instaBreak, "be", 4, 1)); + self::register("element_boron", new Element(new BID(Ids::ELEMENT_BORON), "Boron", $instaBreak, "b", 5, 4)); + self::register("element_carbon", new Element(new BID(Ids::ELEMENT_CARBON), "Carbon", $instaBreak, "c", 6, 5)); + self::register("element_nitrogen", new Element(new BID(Ids::ELEMENT_NITROGEN), "Nitrogen", $instaBreak, "n", 7, 5)); + self::register("element_oxygen", new Element(new BID(Ids::ELEMENT_OXYGEN), "Oxygen", $instaBreak, "o", 8, 5)); + self::register("element_fluorine", new Element(new BID(Ids::ELEMENT_FLUORINE), "Fluorine", $instaBreak, "f", 9, 6)); + self::register("element_neon", new Element(new BID(Ids::ELEMENT_NEON), "Neon", $instaBreak, "ne", 10, 7)); + self::register("element_sodium", new Element(new BID(Ids::ELEMENT_SODIUM), "Sodium", $instaBreak, "na", 11, 0)); + self::register("element_magnesium", new Element(new BID(Ids::ELEMENT_MAGNESIUM), "Magnesium", $instaBreak, "mg", 12, 1)); + self::register("element_aluminum", new Element(new BID(Ids::ELEMENT_ALUMINUM), "Aluminum", $instaBreak, "al", 13, 3)); + self::register("element_silicon", new Element(new BID(Ids::ELEMENT_SILICON), "Silicon", $instaBreak, "si", 14, 4)); + self::register("element_phosphorus", new Element(new BID(Ids::ELEMENT_PHOSPHORUS), "Phosphorus", $instaBreak, "p", 15, 5)); + self::register("element_sulfur", new Element(new BID(Ids::ELEMENT_SULFUR), "Sulfur", $instaBreak, "s", 16, 5)); + self::register("element_chlorine", new Element(new BID(Ids::ELEMENT_CHLORINE), "Chlorine", $instaBreak, "cl", 17, 6)); + self::register("element_argon", new Element(new BID(Ids::ELEMENT_ARGON), "Argon", $instaBreak, "ar", 18, 7)); + self::register("element_potassium", new Element(new BID(Ids::ELEMENT_POTASSIUM), "Potassium", $instaBreak, "k", 19, 0)); + self::register("element_calcium", new Element(new BID(Ids::ELEMENT_CALCIUM), "Calcium", $instaBreak, "ca", 20, 1)); + self::register("element_scandium", new Element(new BID(Ids::ELEMENT_SCANDIUM), "Scandium", $instaBreak, "sc", 21, 2)); + self::register("element_titanium", new Element(new BID(Ids::ELEMENT_TITANIUM), "Titanium", $instaBreak, "ti", 22, 2)); + self::register("element_vanadium", new Element(new BID(Ids::ELEMENT_VANADIUM), "Vanadium", $instaBreak, "v", 23, 2)); + self::register("element_chromium", new Element(new BID(Ids::ELEMENT_CHROMIUM), "Chromium", $instaBreak, "cr", 24, 2)); + self::register("element_manganese", new Element(new BID(Ids::ELEMENT_MANGANESE), "Manganese", $instaBreak, "mn", 25, 2)); + self::register("element_iron", new Element(new BID(Ids::ELEMENT_IRON), "Iron", $instaBreak, "fe", 26, 2)); + self::register("element_cobalt", new Element(new BID(Ids::ELEMENT_COBALT), "Cobalt", $instaBreak, "co", 27, 2)); + self::register("element_nickel", new Element(new BID(Ids::ELEMENT_NICKEL), "Nickel", $instaBreak, "ni", 28, 2)); + self::register("element_copper", new Element(new BID(Ids::ELEMENT_COPPER), "Copper", $instaBreak, "cu", 29, 2)); + self::register("element_zinc", new Element(new BID(Ids::ELEMENT_ZINC), "Zinc", $instaBreak, "zn", 30, 2)); + self::register("element_gallium", new Element(new BID(Ids::ELEMENT_GALLIUM), "Gallium", $instaBreak, "ga", 31, 3)); + self::register("element_germanium", new Element(new BID(Ids::ELEMENT_GERMANIUM), "Germanium", $instaBreak, "ge", 32, 4)); + self::register("element_arsenic", new Element(new BID(Ids::ELEMENT_ARSENIC), "Arsenic", $instaBreak, "as", 33, 4)); + self::register("element_selenium", new Element(new BID(Ids::ELEMENT_SELENIUM), "Selenium", $instaBreak, "se", 34, 5)); + self::register("element_bromine", new Element(new BID(Ids::ELEMENT_BROMINE), "Bromine", $instaBreak, "br", 35, 6)); + self::register("element_krypton", new Element(new BID(Ids::ELEMENT_KRYPTON), "Krypton", $instaBreak, "kr", 36, 7)); + self::register("element_rubidium", new Element(new BID(Ids::ELEMENT_RUBIDIUM), "Rubidium", $instaBreak, "rb", 37, 0)); + self::register("element_strontium", new Element(new BID(Ids::ELEMENT_STRONTIUM), "Strontium", $instaBreak, "sr", 38, 1)); + self::register("element_yttrium", new Element(new BID(Ids::ELEMENT_YTTRIUM), "Yttrium", $instaBreak, "y", 39, 2)); + self::register("element_zirconium", new Element(new BID(Ids::ELEMENT_ZIRCONIUM), "Zirconium", $instaBreak, "zr", 40, 2)); + self::register("element_niobium", new Element(new BID(Ids::ELEMENT_NIOBIUM), "Niobium", $instaBreak, "nb", 41, 2)); + self::register("element_molybdenum", new Element(new BID(Ids::ELEMENT_MOLYBDENUM), "Molybdenum", $instaBreak, "mo", 42, 2)); + self::register("element_technetium", new Element(new BID(Ids::ELEMENT_TECHNETIUM), "Technetium", $instaBreak, "tc", 43, 2)); + self::register("element_ruthenium", new Element(new BID(Ids::ELEMENT_RUTHENIUM), "Ruthenium", $instaBreak, "ru", 44, 2)); + self::register("element_rhodium", new Element(new BID(Ids::ELEMENT_RHODIUM), "Rhodium", $instaBreak, "rh", 45, 2)); + self::register("element_palladium", new Element(new BID(Ids::ELEMENT_PALLADIUM), "Palladium", $instaBreak, "pd", 46, 2)); + self::register("element_silver", new Element(new BID(Ids::ELEMENT_SILVER), "Silver", $instaBreak, "ag", 47, 2)); + self::register("element_cadmium", new Element(new BID(Ids::ELEMENT_CADMIUM), "Cadmium", $instaBreak, "cd", 48, 2)); + self::register("element_indium", new Element(new BID(Ids::ELEMENT_INDIUM), "Indium", $instaBreak, "in", 49, 3)); + self::register("element_tin", new Element(new BID(Ids::ELEMENT_TIN), "Tin", $instaBreak, "sn", 50, 3)); + self::register("element_antimony", new Element(new BID(Ids::ELEMENT_ANTIMONY), "Antimony", $instaBreak, "sb", 51, 4)); + self::register("element_tellurium", new Element(new BID(Ids::ELEMENT_TELLURIUM), "Tellurium", $instaBreak, "te", 52, 4)); + self::register("element_iodine", new Element(new BID(Ids::ELEMENT_IODINE), "Iodine", $instaBreak, "i", 53, 6)); + self::register("element_xenon", new Element(new BID(Ids::ELEMENT_XENON), "Xenon", $instaBreak, "xe", 54, 7)); + self::register("element_cesium", new Element(new BID(Ids::ELEMENT_CESIUM), "Cesium", $instaBreak, "cs", 55, 0)); + self::register("element_barium", new Element(new BID(Ids::ELEMENT_BARIUM), "Barium", $instaBreak, "ba", 56, 1)); + self::register("element_lanthanum", new Element(new BID(Ids::ELEMENT_LANTHANUM), "Lanthanum", $instaBreak, "la", 57, 8)); + self::register("element_cerium", new Element(new BID(Ids::ELEMENT_CERIUM), "Cerium", $instaBreak, "ce", 58, 8)); + self::register("element_praseodymium", new Element(new BID(Ids::ELEMENT_PRASEODYMIUM), "Praseodymium", $instaBreak, "pr", 59, 8)); + self::register("element_neodymium", new Element(new BID(Ids::ELEMENT_NEODYMIUM), "Neodymium", $instaBreak, "nd", 60, 8)); + self::register("element_promethium", new Element(new BID(Ids::ELEMENT_PROMETHIUM), "Promethium", $instaBreak, "pm", 61, 8)); + self::register("element_samarium", new Element(new BID(Ids::ELEMENT_SAMARIUM), "Samarium", $instaBreak, "sm", 62, 8)); + self::register("element_europium", new Element(new BID(Ids::ELEMENT_EUROPIUM), "Europium", $instaBreak, "eu", 63, 8)); + self::register("element_gadolinium", new Element(new BID(Ids::ELEMENT_GADOLINIUM), "Gadolinium", $instaBreak, "gd", 64, 8)); + self::register("element_terbium", new Element(new BID(Ids::ELEMENT_TERBIUM), "Terbium", $instaBreak, "tb", 65, 8)); + self::register("element_dysprosium", new Element(new BID(Ids::ELEMENT_DYSPROSIUM), "Dysprosium", $instaBreak, "dy", 66, 8)); + self::register("element_holmium", new Element(new BID(Ids::ELEMENT_HOLMIUM), "Holmium", $instaBreak, "ho", 67, 8)); + self::register("element_erbium", new Element(new BID(Ids::ELEMENT_ERBIUM), "Erbium", $instaBreak, "er", 68, 8)); + self::register("element_thulium", new Element(new BID(Ids::ELEMENT_THULIUM), "Thulium", $instaBreak, "tm", 69, 8)); + self::register("element_ytterbium", new Element(new BID(Ids::ELEMENT_YTTERBIUM), "Ytterbium", $instaBreak, "yb", 70, 8)); + self::register("element_lutetium", new Element(new BID(Ids::ELEMENT_LUTETIUM), "Lutetium", $instaBreak, "lu", 71, 8)); + self::register("element_hafnium", new Element(new BID(Ids::ELEMENT_HAFNIUM), "Hafnium", $instaBreak, "hf", 72, 2)); + self::register("element_tantalum", new Element(new BID(Ids::ELEMENT_TANTALUM), "Tantalum", $instaBreak, "ta", 73, 2)); + self::register("element_tungsten", new Element(new BID(Ids::ELEMENT_TUNGSTEN), "Tungsten", $instaBreak, "w", 74, 2)); + self::register("element_rhenium", new Element(new BID(Ids::ELEMENT_RHENIUM), "Rhenium", $instaBreak, "re", 75, 2)); + self::register("element_osmium", new Element(new BID(Ids::ELEMENT_OSMIUM), "Osmium", $instaBreak, "os", 76, 2)); + self::register("element_iridium", new Element(new BID(Ids::ELEMENT_IRIDIUM), "Iridium", $instaBreak, "ir", 77, 2)); + self::register("element_platinum", new Element(new BID(Ids::ELEMENT_PLATINUM), "Platinum", $instaBreak, "pt", 78, 2)); + self::register("element_gold", new Element(new BID(Ids::ELEMENT_GOLD), "Gold", $instaBreak, "au", 79, 2)); + self::register("element_mercury", new Element(new BID(Ids::ELEMENT_MERCURY), "Mercury", $instaBreak, "hg", 80, 2)); + self::register("element_thallium", new Element(new BID(Ids::ELEMENT_THALLIUM), "Thallium", $instaBreak, "tl", 81, 3)); + self::register("element_lead", new Element(new BID(Ids::ELEMENT_LEAD), "Lead", $instaBreak, "pb", 82, 3)); + self::register("element_bismuth", new Element(new BID(Ids::ELEMENT_BISMUTH), "Bismuth", $instaBreak, "bi", 83, 3)); + self::register("element_polonium", new Element(new BID(Ids::ELEMENT_POLONIUM), "Polonium", $instaBreak, "po", 84, 4)); + self::register("element_astatine", new Element(new BID(Ids::ELEMENT_ASTATINE), "Astatine", $instaBreak, "at", 85, 6)); + self::register("element_radon", new Element(new BID(Ids::ELEMENT_RADON), "Radon", $instaBreak, "rn", 86, 7)); + self::register("element_francium", new Element(new BID(Ids::ELEMENT_FRANCIUM), "Francium", $instaBreak, "fr", 87, 0)); + self::register("element_radium", new Element(new BID(Ids::ELEMENT_RADIUM), "Radium", $instaBreak, "ra", 88, 1)); + self::register("element_actinium", new Element(new BID(Ids::ELEMENT_ACTINIUM), "Actinium", $instaBreak, "ac", 89, 9)); + self::register("element_thorium", new Element(new BID(Ids::ELEMENT_THORIUM), "Thorium", $instaBreak, "th", 90, 9)); + self::register("element_protactinium", new Element(new BID(Ids::ELEMENT_PROTACTINIUM), "Protactinium", $instaBreak, "pa", 91, 9)); + self::register("element_uranium", new Element(new BID(Ids::ELEMENT_URANIUM), "Uranium", $instaBreak, "u", 92, 9)); + self::register("element_neptunium", new Element(new BID(Ids::ELEMENT_NEPTUNIUM), "Neptunium", $instaBreak, "np", 93, 9)); + self::register("element_plutonium", new Element(new BID(Ids::ELEMENT_PLUTONIUM), "Plutonium", $instaBreak, "pu", 94, 9)); + self::register("element_americium", new Element(new BID(Ids::ELEMENT_AMERICIUM), "Americium", $instaBreak, "am", 95, 9)); + self::register("element_curium", new Element(new BID(Ids::ELEMENT_CURIUM), "Curium", $instaBreak, "cm", 96, 9)); + self::register("element_berkelium", new Element(new BID(Ids::ELEMENT_BERKELIUM), "Berkelium", $instaBreak, "bk", 97, 9)); + self::register("element_californium", new Element(new BID(Ids::ELEMENT_CALIFORNIUM), "Californium", $instaBreak, "cf", 98, 9)); + self::register("element_einsteinium", new Element(new BID(Ids::ELEMENT_EINSTEINIUM), "Einsteinium", $instaBreak, "es", 99, 9)); + self::register("element_fermium", new Element(new BID(Ids::ELEMENT_FERMIUM), "Fermium", $instaBreak, "fm", 100, 9)); + self::register("element_mendelevium", new Element(new BID(Ids::ELEMENT_MENDELEVIUM), "Mendelevium", $instaBreak, "md", 101, 9)); + self::register("element_nobelium", new Element(new BID(Ids::ELEMENT_NOBELIUM), "Nobelium", $instaBreak, "no", 102, 9)); + self::register("element_lawrencium", new Element(new BID(Ids::ELEMENT_LAWRENCIUM), "Lawrencium", $instaBreak, "lr", 103, 9)); + self::register("element_rutherfordium", new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM), "Rutherfordium", $instaBreak, "rf", 104, 2)); + self::register("element_dubnium", new Element(new BID(Ids::ELEMENT_DUBNIUM), "Dubnium", $instaBreak, "db", 105, 2)); + self::register("element_seaborgium", new Element(new BID(Ids::ELEMENT_SEABORGIUM), "Seaborgium", $instaBreak, "sg", 106, 2)); + self::register("element_bohrium", new Element(new BID(Ids::ELEMENT_BOHRIUM), "Bohrium", $instaBreak, "bh", 107, 2)); + self::register("element_hassium", new Element(new BID(Ids::ELEMENT_HASSIUM), "Hassium", $instaBreak, "hs", 108, 2)); + self::register("element_meitnerium", new Element(new BID(Ids::ELEMENT_MEITNERIUM), "Meitnerium", $instaBreak, "mt", 109, 2)); + self::register("element_darmstadtium", new Element(new BID(Ids::ELEMENT_DARMSTADTIUM), "Darmstadtium", $instaBreak, "ds", 110, 2)); + self::register("element_roentgenium", new Element(new BID(Ids::ELEMENT_ROENTGENIUM), "Roentgenium", $instaBreak, "rg", 111, 2)); + self::register("element_copernicium", new Element(new BID(Ids::ELEMENT_COPERNICIUM), "Copernicium", $instaBreak, "cn", 112, 2)); + self::register("element_nihonium", new Element(new BID(Ids::ELEMENT_NIHONIUM), "Nihonium", $instaBreak, "nh", 113, 3)); + self::register("element_flerovium", new Element(new BID(Ids::ELEMENT_FLEROVIUM), "Flerovium", $instaBreak, "fl", 114, 3)); + self::register("element_moscovium", new Element(new BID(Ids::ELEMENT_MOSCOVIUM), "Moscovium", $instaBreak, "mc", 115, 3)); + self::register("element_livermorium", new Element(new BID(Ids::ELEMENT_LIVERMORIUM), "Livermorium", $instaBreak, "lv", 116, 3)); + self::register("element_tennessine", new Element(new BID(Ids::ELEMENT_TENNESSINE), "Tennessine", $instaBreak, "ts", 117, 6)); + self::register("element_oganesson", new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); + } + + private static function registerOres() : void{ + $stoneOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(3.0, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + self::register("coal_ore", new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD()))); + self::register("copper_ore", new CopperOre(new BID(Ids::COPPER_ORE), "Copper Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + self::register("diamond_ore", new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + self::register("emerald_ore", new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + self::register("gold_ore", new GoldOre(new BID(Ids::GOLD_ORE), "Gold Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + self::register("iron_ore", new IronOre(new BID(Ids::IRON_ORE), "Iron Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + self::register("lapis_lazuli_ore", new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE()))); + self::register("redstone_ore", new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON()))); + + $deepslateOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(4.5, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + self::register("deepslate_coal_ore", new CoalOre(new BID(Ids::DEEPSLATE_COAL_ORE), "Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD()))); + self::register("deepslate_copper_ore", new CopperOre(new BID(Ids::DEEPSLATE_COPPER_ORE), "Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + self::register("deepslate_diamond_ore", new DiamondOre(new BID(Ids::DEEPSLATE_DIAMOND_ORE), "Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + self::register("deepslate_emerald_ore", new EmeraldOre(new BID(Ids::DEEPSLATE_EMERALD_ORE), "Deepslate Emerald Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + self::register("deepslate_gold_ore", new GoldOre(new BID(Ids::DEEPSLATE_GOLD_ORE), "Deepslate Gold Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + self::register("deepslate_iron_ore", new IronOre(new BID(Ids::DEEPSLATE_IRON_ORE), "Deepslate Iron Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + self::register("deepslate_lapis_lazuli_ore", new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); + self::register("deepslate_redstone_ore", new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); + + $netherrackOreBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + self::register("nether_quartz_ore", new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); + self::register("nether_gold_ore", new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); + } + + private static function registerBlocksR13() : void{ + self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); + } + + private static function registerBlocksR14() : void{ + self::register("honeycomb", new Opaque(new BID(Ids::HONEYCOMB), "Honeycomb Block", new BreakInfo(0.6))); + } + + private static function registerBlocksR16() : void{ + //for some reason, slabs have weird hardness like the legacy ones + $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + + self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0))); + + $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); + self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); + self::register("polished_basalt", new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); + self::register("smooth_basalt", new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); + + $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + self::register("blackstone", new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); + self::register("blackstone_slab", new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); + self::register("blackstone_stairs", new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); + self::register("blackstone_wall", new Wall(new BID(Ids::BLACKSTONE_WALL), "Blackstone Wall", $blackstoneBreakInfo)); + + //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) + $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); + self::register("polished_blackstone", new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); + self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new BreakInfo(0.5, ToolType::PICKAXE))); + self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("polished_blackstone_slab", new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); + self::register("polished_blackstone_stairs", new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); + self::register("polished_blackstone_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); + self::register("chiseled_polished_blackstone", new Opaque(new BID(Ids::CHISELED_POLISHED_BLACKSTONE), "Chiseled Polished Blackstone", $blackstoneBreakInfo)); + + $prefix = fn(string $thing) => "Polished Blackstone Brick" . ($thing !== "" ? " $thing" : ""); + self::register("polished_blackstone_bricks", new Opaque(new BID(Ids::POLISHED_BLACKSTONE_BRICKS), "Polished Blackstone Bricks", $blackstoneBreakInfo)); + self::register("polished_blackstone_brick_slab", new Slab(new BID(Ids::POLISHED_BLACKSTONE_BRICK_SLAB), "Polished Blackstone Brick", $slabBreakInfo)); + self::register("polished_blackstone_brick_stairs", new Stair(new BID(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); + self::register("polished_blackstone_brick_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); + self::register("cracked_polished_blackstone_bricks", new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); + + self::register("soul_torch", new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", BreakInfo::instant())); + self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); + + //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) + self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new BreakInfo(1.0, ToolType::SHOVEL))); + + self::register("shroomlight", new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ + public function getLightLevel() : int{ return 15; } + }); + } + + private static function registerBlocksR17() : void{ + //in java this can be acquired using any tool - seems to be a parity issue in bedrock + self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + + self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + + self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); + self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); + + $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + self::register("deepslate", new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); + + //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 + self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0))); + + $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + self::register("deepslate_bricks", new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); + self::register("deepslate_brick_slab", new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); + self::register("deepslate_brick_stairs", new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); + self::register("deepslate_brick_wall", new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); + self::register("cracked_deepslate_bricks", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); + + $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + self::register("deepslate_tiles", new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); + self::register("deepslate_tile_slab", new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); + self::register("deepslate_tile_stairs", new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); + self::register("deepslate_tile_wall", new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); + self::register("cracked_deepslate_tiles", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); + + $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + self::register("cobbled_deepslate", new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); + self::register("cobbled_deepslate_slab", new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); + self::register("cobbled_deepslate_stairs", new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); + self::register("cobbled_deepslate_wall", new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); + + $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + self::register("polished_deepslate", new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); + self::register("polished_deepslate_slab", new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); + self::register("polished_deepslate_stairs", new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); + self::register("polished_deepslate_wall", new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); + + self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); + } + + private static function registerMudBlocks() : void{ + $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + + self::register("mud_bricks", new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); + self::register("mud_brick_slab", new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); + self::register("mud_brick_stairs", new Stair(new BID(Ids::MUD_BRICK_STAIRS), "Mud Brick Stairs", $mudBricksBreakInfo)); + self::register("mud_brick_wall", new Wall(new BID(Ids::MUD_BRICK_WALL), "Mud Brick Wall", $mudBricksBreakInfo)); + } + } From 690efb09e39d989b6b9cbf6624dfb88fba5c635d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 00:55:34 +0100 Subject: [PATCH 304/692] Fixed ItemTypeIds::FIRST_UNUSED_ITEM_ID --- src/item/ItemTypeIds.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index cc6a678bb..6db7f7536 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -294,5 +294,5 @@ final class ItemTypeIds{ public const RAW_GOLD = 20255; public const SPYGLASS = 20256; - public const FIRST_UNUSED_ITEM_ID = 20239; + public const FIRST_UNUSED_ITEM_ID = 20257; } From 2142eb3cc9ab8209cbaa82ee376376b54041b02e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 01:01:05 +0100 Subject: [PATCH 305/692] VanillaItems: sort lines alphabetically --- src/item/VanillaItems.php | 205 ++++++++++++++++++-------------------- 1 file changed, 99 insertions(+), 106 deletions(-) diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 5a645353f..bb25c1709 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -317,29 +317,73 @@ final class VanillaItems{ self::register("air", VanillaBlocks::AIR()->asItem()->setCount(0)); + self::register("acacia_sign", new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); + self::register("amethyst_shard", new Item(new IID(Ids::AMETHYST_SHARD), "Amethyst Shard")); self::register("apple", new Apple(new IID(Ids::APPLE), "Apple")); self::register("arrow", new Arrow(new IID(Ids::ARROW), "Arrow")); - self::register("baked_potato", new BakedPotato(new IID(Ids::BAKED_POTATO), "Baked Potato")); self::register("bamboo", new Bamboo(new IID(Ids::BAMBOO), "Bamboo")); + self::register("banner", new Banner(new IID(Ids::BANNER), Blocks::BANNER(), Blocks::WALL_BANNER())); self::register("beetroot", new Beetroot(new IID(Ids::BEETROOT), "Beetroot")); self::register("beetroot_seeds", new BeetrootSeeds(new IID(Ids::BEETROOT_SEEDS), "Beetroot Seeds")); self::register("beetroot_soup", new BeetrootSoup(new IID(Ids::BEETROOT_SOUP), "Beetroot Soup")); + self::register("birch_sign", new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); + self::register("blaze_powder", new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); self::register("blaze_rod", new BlazeRod(new IID(Ids::BLAZE_ROD), "Blaze Rod")); + self::register("bleach", new Item(new IID(Ids::BLEACH), "Bleach")); + self::register("bone", new Item(new IID(Ids::BONE), "Bone")); + self::register("bone_meal", new Fertilizer(new IID(Ids::BONE_MEAL), "Bone Meal")); self::register("book", new Book(new IID(Ids::BOOK), "Book")); self::register("bow", new Bow(new IID(Ids::BOW), "Bow")); self::register("bowl", new Bowl(new IID(Ids::BOWL), "Bowl")); self::register("bread", new Bread(new IID(Ids::BREAD), "Bread")); + self::register("brick", new Item(new IID(Ids::BRICK), "Brick")); self::register("bucket", new Bucket(new IID(Ids::BUCKET), "Bucket")); self::register("carrot", new Carrot(new IID(Ids::CARROT), "Carrot")); + self::register("charcoal", new Coal(new IID(Ids::CHARCOAL), "Charcoal")); + self::register("chemical_aluminium_oxide", new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE), "Aluminium Oxide")); + self::register("chemical_ammonia", new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); + self::register("chemical_barium_sulphate", new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE), "Barium Sulphate")); + self::register("chemical_benzene", new Item(new IID(Ids::CHEMICAL_BENZENE), "Benzene")); + self::register("chemical_boron_trioxide", new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE), "Boron Trioxide")); + self::register("chemical_calcium_bromide", new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE), "Calcium Bromide")); + self::register("chemical_calcium_chloride", new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE), "Calcium Chloride")); + self::register("chemical_cerium_chloride", new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE), "Cerium Chloride")); + self::register("chemical_charcoal", new Item(new IID(Ids::CHEMICAL_CHARCOAL), "Charcoal")); + self::register("chemical_crude_oil", new Item(new IID(Ids::CHEMICAL_CRUDE_OIL), "Crude Oil")); + self::register("chemical_glue", new Item(new IID(Ids::CHEMICAL_GLUE), "Glue")); + self::register("chemical_hydrogen_peroxide", new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); + self::register("chemical_hypochlorite", new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE), "Hypochlorite")); + self::register("chemical_ink", new Item(new IID(Ids::CHEMICAL_INK), "Ink")); + self::register("chemical_iron_sulphide", new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE), "Iron Sulphide")); + self::register("chemical_latex", new Item(new IID(Ids::CHEMICAL_LATEX), "Latex")); + self::register("chemical_lithium_hydride", new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE), "Lithium Hydride")); + self::register("chemical_luminol", new Item(new IID(Ids::CHEMICAL_LUMINOL), "Luminol")); + self::register("chemical_magnesium_nitrate", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE), "Magnesium Nitrate")); + self::register("chemical_magnesium_oxide", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE), "Magnesium Oxide")); + self::register("chemical_magnesium_salts", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS), "Magnesium Salts")); + self::register("chemical_mercuric_chloride", new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE), "Mercuric Chloride")); + self::register("chemical_polyethylene", new Item(new IID(Ids::CHEMICAL_POLYETHYLENE), "Polyethylene")); + self::register("chemical_potassium_chloride", new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE), "Potassium Chloride")); + self::register("chemical_potassium_iodide", new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE), "Potassium Iodide")); + self::register("chemical_rubbish", new Item(new IID(Ids::CHEMICAL_RUBBISH), "Rubbish")); + self::register("chemical_salt", new Item(new IID(Ids::CHEMICAL_SALT), "Salt")); + self::register("chemical_soap", new Item(new IID(Ids::CHEMICAL_SOAP), "Soap")); + self::register("chemical_sodium_acetate", new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE), "Sodium Acetate")); + self::register("chemical_sodium_fluoride", new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE), "Sodium Fluoride")); + self::register("chemical_sodium_hydride", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE), "Sodium Hydride")); + self::register("chemical_sodium_hydroxide", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE), "Sodium Hydroxide")); + self::register("chemical_sodium_hypochlorite", new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); + self::register("chemical_sodium_oxide", new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE), "Sodium Oxide")); + self::register("chemical_sugar", new Item(new IID(Ids::CHEMICAL_SUGAR), "Sugar")); + self::register("chemical_sulphate", new Item(new IID(Ids::CHEMICAL_SULPHATE), "Sulphate")); + self::register("chemical_tungsten_chloride", new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE), "Tungsten Chloride")); + self::register("chemical_water", new Item(new IID(Ids::CHEMICAL_WATER), "Water")); self::register("chorus_fruit", new ChorusFruit(new IID(Ids::CHORUS_FRUIT), "Chorus Fruit")); + self::register("clay", new Item(new IID(Ids::CLAY), "Clay")); self::register("clock", new Clock(new IID(Ids::CLOCK), "Clock")); self::register("clownfish", new Clownfish(new IID(Ids::CLOWNFISH), "Clownfish")); self::register("coal", new Coal(new IID(Ids::COAL), "Coal")); - - self::register("coral_fan", new CoralFan(new IID(Ids::CORAL_FAN))); - - self::register("charcoal", new Coal(new IID(Ids::CHARCOAL), "Charcoal")); self::register("cocoa_beans", new CocoaBeans(new IID(Ids::COCOA_BEANS), "Cocoa Beans")); self::register("compass", new Compass(new IID(Ids::COMPASS), "Compass")); self::register("cooked_chicken", new CookedChicken(new IID(Ids::COOKED_CHICKEN), "Cooked Chicken")); @@ -349,170 +393,119 @@ final class VanillaItems{ self::register("cooked_rabbit", new CookedRabbit(new IID(Ids::COOKED_RABBIT), "Cooked Rabbit")); self::register("cooked_salmon", new CookedSalmon(new IID(Ids::COOKED_SALMON), "Cooked Salmon")); self::register("cookie", new Cookie(new IID(Ids::COOKIE), "Cookie")); - self::register("dried_kelp", new DriedKelp(new IID(Ids::DRIED_KELP), "Dried Kelp")); - self::register("egg", new Egg(new IID(Ids::EGG), "Egg")); - self::register("ender_pearl", new EnderPearl(new IID(Ids::ENDER_PEARL), "Ender Pearl")); - self::register("experience_bottle", new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); - self::register("bone_meal", new Fertilizer(new IID(Ids::BONE_MEAL), "Bone Meal")); - self::register("fishing_rod", new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); - self::register("flint_and_steel", new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); - self::register("glass_bottle", new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); - self::register("golden_apple", new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); - self::register("enchanted_golden_apple", new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); - self::register("golden_carrot", new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); - self::register("amethyst_shard", new Item(new IID(Ids::AMETHYST_SHARD), "Amethyst Shard")); - self::register("blaze_powder", new Item(new IID(Ids::BLAZE_POWDER), "Blaze Powder")); - self::register("bleach", new Item(new IID(Ids::BLEACH), "Bleach")); - self::register("bone", new Item(new IID(Ids::BONE), "Bone")); - self::register("brick", new Item(new IID(Ids::BRICK), "Brick")); - self::register("popped_chorus_fruit", new Item(new IID(Ids::POPPED_CHORUS_FRUIT), "Popped Chorus Fruit")); - self::register("clay", new Item(new IID(Ids::CLAY), "Clay")); - self::register("chemical_salt", new Item(new IID(Ids::CHEMICAL_SALT), "Salt")); - self::register("chemical_sodium_oxide", new Item(new IID(Ids::CHEMICAL_SODIUM_OXIDE), "Sodium Oxide")); - self::register("chemical_sodium_hydroxide", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDROXIDE), "Sodium Hydroxide")); - self::register("chemical_magnesium_nitrate", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_NITRATE), "Magnesium Nitrate")); - self::register("chemical_iron_sulphide", new Item(new IID(Ids::CHEMICAL_IRON_SULPHIDE), "Iron Sulphide")); - self::register("chemical_lithium_hydride", new Item(new IID(Ids::CHEMICAL_LITHIUM_HYDRIDE), "Lithium Hydride")); - self::register("chemical_sodium_hydride", new Item(new IID(Ids::CHEMICAL_SODIUM_HYDRIDE), "Sodium Hydride")); - self::register("chemical_calcium_bromide", new Item(new IID(Ids::CHEMICAL_CALCIUM_BROMIDE), "Calcium Bromide")); - self::register("chemical_magnesium_oxide", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_OXIDE), "Magnesium Oxide")); - self::register("chemical_sodium_acetate", new Item(new IID(Ids::CHEMICAL_SODIUM_ACETATE), "Sodium Acetate")); - self::register("chemical_luminol", new Item(new IID(Ids::CHEMICAL_LUMINOL), "Luminol")); - self::register("chemical_charcoal", new Item(new IID(Ids::CHEMICAL_CHARCOAL), "Charcoal")); - self::register("chemical_sugar", new Item(new IID(Ids::CHEMICAL_SUGAR), "Sugar")); - self::register("chemical_aluminium_oxide", new Item(new IID(Ids::CHEMICAL_ALUMINIUM_OXIDE), "Aluminium Oxide")); - self::register("chemical_boron_trioxide", new Item(new IID(Ids::CHEMICAL_BORON_TRIOXIDE), "Boron Trioxide")); - self::register("chemical_soap", new Item(new IID(Ids::CHEMICAL_SOAP), "Soap")); - self::register("chemical_polyethylene", new Item(new IID(Ids::CHEMICAL_POLYETHYLENE), "Polyethylene")); - self::register("chemical_rubbish", new Item(new IID(Ids::CHEMICAL_RUBBISH), "Rubbish")); - self::register("chemical_magnesium_salts", new Item(new IID(Ids::CHEMICAL_MAGNESIUM_SALTS), "Magnesium Salts")); - self::register("chemical_sulphate", new Item(new IID(Ids::CHEMICAL_SULPHATE), "Sulphate")); - self::register("chemical_barium_sulphate", new Item(new IID(Ids::CHEMICAL_BARIUM_SULPHATE), "Barium Sulphate")); - self::register("chemical_potassium_chloride", new Item(new IID(Ids::CHEMICAL_POTASSIUM_CHLORIDE), "Potassium Chloride")); - self::register("chemical_mercuric_chloride", new Item(new IID(Ids::CHEMICAL_MERCURIC_CHLORIDE), "Mercuric Chloride")); - self::register("chemical_cerium_chloride", new Item(new IID(Ids::CHEMICAL_CERIUM_CHLORIDE), "Cerium Chloride")); - self::register("chemical_tungsten_chloride", new Item(new IID(Ids::CHEMICAL_TUNGSTEN_CHLORIDE), "Tungsten Chloride")); - self::register("chemical_calcium_chloride", new Item(new IID(Ids::CHEMICAL_CALCIUM_CHLORIDE), "Calcium Chloride")); - self::register("chemical_water", new Item(new IID(Ids::CHEMICAL_WATER), "Water")); - self::register("chemical_glue", new Item(new IID(Ids::CHEMICAL_GLUE), "Glue")); - self::register("chemical_hypochlorite", new Item(new IID(Ids::CHEMICAL_HYPOCHLORITE), "Hypochlorite")); - self::register("chemical_crude_oil", new Item(new IID(Ids::CHEMICAL_CRUDE_OIL), "Crude Oil")); - self::register("chemical_latex", new Item(new IID(Ids::CHEMICAL_LATEX), "Latex")); - self::register("chemical_potassium_iodide", new Item(new IID(Ids::CHEMICAL_POTASSIUM_IODIDE), "Potassium Iodide")); - self::register("chemical_sodium_fluoride", new Item(new IID(Ids::CHEMICAL_SODIUM_FLUORIDE), "Sodium Fluoride")); - self::register("chemical_benzene", new Item(new IID(Ids::CHEMICAL_BENZENE), "Benzene")); - self::register("chemical_ink", new Item(new IID(Ids::CHEMICAL_INK), "Ink")); - self::register("chemical_hydrogen_peroxide", new Item(new IID(Ids::CHEMICAL_HYDROGEN_PEROXIDE), "Hydrogen Peroxide")); - self::register("chemical_ammonia", new Item(new IID(Ids::CHEMICAL_AMMONIA), "Ammonia")); - self::register("chemical_sodium_hypochlorite", new Item(new IID(Ids::CHEMICAL_SODIUM_HYPOCHLORITE), "Sodium Hypochlorite")); + self::register("copper_ingot", new Item(new IID(Ids::COPPER_INGOT), "Copper Ingot")); + self::register("coral_fan", new CoralFan(new IID(Ids::CORAL_FAN))); + self::register("crimson_sign", new ItemBlockWallOrFloor(new IID(Ids::CRIMSON_SIGN), Blocks::CRIMSON_SIGN(), Blocks::CRIMSON_WALL_SIGN())); + self::register("dark_oak_sign", new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); self::register("diamond", new Item(new IID(Ids::DIAMOND), "Diamond")); self::register("disc_fragment_5", new Item(new IID(Ids::DISC_FRAGMENT_5), "Disc Fragment (5)")); self::register("dragon_breath", new Item(new IID(Ids::DRAGON_BREATH), "Dragon's Breath")); - self::register("glow_ink_sac", new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); - self::register("ink_sac", new Item(new IID(Ids::INK_SAC), "Ink Sac")); - self::register("lapis_lazuli", new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); + self::register("dried_kelp", new DriedKelp(new IID(Ids::DRIED_KELP), "Dried Kelp")); + //TODO: add interface to dye-colour objects + self::register("dye", new Dye(new IID(Ids::DYE), "Dye")); self::register("echo_shard", new Item(new IID(Ids::ECHO_SHARD), "Echo Shard")); + self::register("egg", new Egg(new IID(Ids::EGG), "Egg")); self::register("emerald", new Item(new IID(Ids::EMERALD), "Emerald")); + self::register("enchanted_golden_apple", new GoldenAppleEnchanted(new IID(Ids::ENCHANTED_GOLDEN_APPLE), "Enchanted Golden Apple")); + self::register("ender_pearl", new EnderPearl(new IID(Ids::ENDER_PEARL), "Ender Pearl")); + self::register("experience_bottle", new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); self::register("feather", new Item(new IID(Ids::FEATHER), "Feather")); self::register("fermented_spider_eye", new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); + self::register("fishing_rod", new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); self::register("flint", new Item(new IID(Ids::FLINT), "Flint")); + self::register("flint_and_steel", new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); self::register("ghast_tear", new Item(new IID(Ids::GHAST_TEAR), "Ghast Tear")); + self::register("glass_bottle", new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); self::register("glistering_melon", new Item(new IID(Ids::GLISTERING_MELON), "Glistering Melon")); + self::register("glow_ink_sac", new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); self::register("glowstone_dust", new Item(new IID(Ids::GLOWSTONE_DUST), "Glowstone Dust")); self::register("gold_ingot", new Item(new IID(Ids::GOLD_INGOT), "Gold Ingot")); self::register("gold_nugget", new Item(new IID(Ids::GOLD_NUGGET), "Gold Nugget")); + self::register("golden_apple", new GoldenApple(new IID(Ids::GOLDEN_APPLE), "Golden Apple")); + self::register("golden_carrot", new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); self::register("gunpowder", new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); self::register("heart_of_the_sea", new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); self::register("honeycomb", new Item(new IID(Ids::HONEYCOMB), "Honeycomb")); + self::register("ink_sac", new Item(new IID(Ids::INK_SAC), "Ink Sac")); self::register("iron_ingot", new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); self::register("iron_nugget", new Item(new IID(Ids::IRON_NUGGET), "Iron Nugget")); + self::register("jungle_sign", new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); + self::register("lapis_lazuli", new Item(new IID(Ids::LAPIS_LAZULI), "Lapis Lazuli")); + self::register("lava_bucket", new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); self::register("leather", new Item(new IID(Ids::LEATHER), "Leather")); self::register("magma_cream", new Item(new IID(Ids::MAGMA_CREAM), "Magma Cream")); - self::register("nautilus_shell", new Item(new IID(Ids::NAUTILUS_SHELL), "Nautilus Shell")); - self::register("nether_brick", new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); - self::register("nether_quartz", new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); - self::register("nether_star", new Item(new IID(Ids::NETHER_STAR), "Nether Star")); - self::register("paper", new Item(new IID(Ids::PAPER), "Paper")); - self::register("prismarine_crystals", new Item(new IID(Ids::PRISMARINE_CRYSTALS), "Prismarine Crystals")); - self::register("prismarine_shard", new Item(new IID(Ids::PRISMARINE_SHARD), "Prismarine Shard")); - self::register("rabbit_foot", new Item(new IID(Ids::RABBIT_FOOT), "Rabbit's Foot")); - self::register("rabbit_hide", new Item(new IID(Ids::RABBIT_HIDE), "Rabbit Hide")); - self::register("shulker_shell", new Item(new IID(Ids::SHULKER_SHELL), "Shulker Shell")); - self::register("slimeball", new Item(new IID(Ids::SLIMEBALL), "Slimeball")); - self::register("sugar", new Item(new IID(Ids::SUGAR), "Sugar")); - self::register("scute", new Item(new IID(Ids::SCUTE), "Scute")); - self::register("wheat", new Item(new IID(Ids::WHEAT), "Wheat")); - self::register("copper_ingot", new Item(new IID(Ids::COPPER_INGOT), "Copper Ingot")); - self::register("raw_copper", new Item(new IID(Ids::RAW_COPPER), "Raw Copper")); - self::register("raw_iron", new Item(new IID(Ids::RAW_IRON), "Raw Iron")); - self::register("raw_gold", new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); - self::register("phantom_membrane", new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); - - self::register("water_bucket", new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); - self::register("lava_bucket", new LiquidBucket(new IID(Ids::LAVA_BUCKET), "Lava Bucket", Blocks::LAVA())); + self::register("mangrove_sign", new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); self::register("melon", new Melon(new IID(Ids::MELON), "Melon")); self::register("melon_seeds", new MelonSeeds(new IID(Ids::MELON_SEEDS), "Melon Seeds")); self::register("milk_bucket", new MilkBucket(new IID(Ids::MILK_BUCKET), "Milk Bucket")); self::register("minecart", new Minecart(new IID(Ids::MINECART), "Minecart")); self::register("mushroom_stew", new MushroomStew(new IID(Ids::MUSHROOM_STEW), "Mushroom Stew")); + self::register("nautilus_shell", new Item(new IID(Ids::NAUTILUS_SHELL), "Nautilus Shell")); + self::register("nether_brick", new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); + self::register("nether_quartz", new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); + self::register("nether_star", new Item(new IID(Ids::NETHER_STAR), "Nether Star")); + self::register("oak_sign", new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); self::register("painting", new PaintingItem(new IID(Ids::PAINTING), "Painting")); + self::register("paper", new Item(new IID(Ids::PAPER), "Paper")); + self::register("phantom_membrane", new Item(new IID(Ids::PHANTOM_MEMBRANE), "Phantom Membrane")); self::register("poisonous_potato", new PoisonousPotato(new IID(Ids::POISONOUS_POTATO), "Poisonous Potato")); + self::register("popped_chorus_fruit", new Item(new IID(Ids::POPPED_CHORUS_FRUIT), "Popped Chorus Fruit")); self::register("potato", new Potato(new IID(Ids::POTATO), "Potato")); + self::register("potion", new Potion(new IID(Ids::POTION), "Potion")); + self::register("prismarine_crystals", new Item(new IID(Ids::PRISMARINE_CRYSTALS), "Prismarine Crystals")); + self::register("prismarine_shard", new Item(new IID(Ids::PRISMARINE_SHARD), "Prismarine Shard")); self::register("pufferfish", new Pufferfish(new IID(Ids::PUFFERFISH), "Pufferfish")); self::register("pumpkin_pie", new PumpkinPie(new IID(Ids::PUMPKIN_PIE), "Pumpkin Pie")); self::register("pumpkin_seeds", new PumpkinSeeds(new IID(Ids::PUMPKIN_SEEDS), "Pumpkin Seeds")); + self::register("rabbit_foot", new Item(new IID(Ids::RABBIT_FOOT), "Rabbit's Foot")); + self::register("rabbit_hide", new Item(new IID(Ids::RABBIT_HIDE), "Rabbit Hide")); self::register("rabbit_stew", new RabbitStew(new IID(Ids::RABBIT_STEW), "Rabbit Stew")); self::register("raw_beef", new RawBeef(new IID(Ids::RAW_BEEF), "Raw Beef")); self::register("raw_chicken", new RawChicken(new IID(Ids::RAW_CHICKEN), "Raw Chicken")); + self::register("raw_copper", new Item(new IID(Ids::RAW_COPPER), "Raw Copper")); self::register("raw_fish", new RawFish(new IID(Ids::RAW_FISH), "Raw Fish")); + self::register("raw_gold", new Item(new IID(Ids::RAW_GOLD), "Raw Gold")); + self::register("raw_iron", new Item(new IID(Ids::RAW_IRON), "Raw Iron")); self::register("raw_mutton", new RawMutton(new IID(Ids::RAW_MUTTON), "Raw Mutton")); self::register("raw_porkchop", new RawPorkchop(new IID(Ids::RAW_PORKCHOP), "Raw Porkchop")); self::register("raw_rabbit", new RawRabbit(new IID(Ids::RAW_RABBIT), "Raw Rabbit")); self::register("raw_salmon", new RawSalmon(new IID(Ids::RAW_SALMON), "Raw Salmon")); + self::register("record_11", new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); self::register("record_13", new Record(new IID(Ids::RECORD_13), RecordType::DISK_13(), "Record 13")); - self::register("record_cat", new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); self::register("record_blocks", new Record(new IID(Ids::RECORD_BLOCKS), RecordType::DISK_BLOCKS(), "Record Blocks")); + self::register("record_cat", new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); self::register("record_chirp", new Record(new IID(Ids::RECORD_CHIRP), RecordType::DISK_CHIRP(), "Record Chirp")); self::register("record_far", new Record(new IID(Ids::RECORD_FAR), RecordType::DISK_FAR(), "Record Far")); self::register("record_mall", new Record(new IID(Ids::RECORD_MALL), RecordType::DISK_MALL(), "Record Mall")); self::register("record_mellohi", new Record(new IID(Ids::RECORD_MELLOHI), RecordType::DISK_MELLOHI(), "Record Mellohi")); self::register("record_stal", new Record(new IID(Ids::RECORD_STAL), RecordType::DISK_STAL(), "Record Stal")); self::register("record_strad", new Record(new IID(Ids::RECORD_STRAD), RecordType::DISK_STRAD(), "Record Strad")); - self::register("record_ward", new Record(new IID(Ids::RECORD_WARD), RecordType::DISK_WARD(), "Record Ward")); - self::register("record_11", new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); self::register("record_wait", new Record(new IID(Ids::RECORD_WAIT), RecordType::DISK_WAIT(), "Record Wait")); + self::register("record_ward", new Record(new IID(Ids::RECORD_WARD), RecordType::DISK_WARD(), "Record Ward")); self::register("redstone_dust", new Redstone(new IID(Ids::REDSTONE_DUST), "Redstone")); self::register("rotten_flesh", new RottenFlesh(new IID(Ids::ROTTEN_FLESH), "Rotten Flesh")); + self::register("scute", new Item(new IID(Ids::SCUTE), "Scute")); self::register("shears", new Shears(new IID(Ids::SHEARS), "Shears")); - self::register("oak_sign", new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); - self::register("spruce_sign", new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); - self::register("birch_sign", new ItemBlockWallOrFloor(new IID(Ids::BIRCH_SIGN), Blocks::BIRCH_SIGN(), Blocks::BIRCH_WALL_SIGN())); - self::register("jungle_sign", new ItemBlockWallOrFloor(new IID(Ids::JUNGLE_SIGN), Blocks::JUNGLE_SIGN(), Blocks::JUNGLE_WALL_SIGN())); - self::register("acacia_sign", new ItemBlockWallOrFloor(new IID(Ids::ACACIA_SIGN), Blocks::ACACIA_SIGN(), Blocks::ACACIA_WALL_SIGN())); - self::register("dark_oak_sign", new ItemBlockWallOrFloor(new IID(Ids::DARK_OAK_SIGN), Blocks::DARK_OAK_SIGN(), Blocks::DARK_OAK_WALL_SIGN())); - self::register("mangrove_sign", new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); - self::register("crimson_sign", new ItemBlockWallOrFloor(new IID(Ids::CRIMSON_SIGN), Blocks::CRIMSON_SIGN(), Blocks::CRIMSON_WALL_SIGN())); - self::register("warped_sign", new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); + self::register("shulker_shell", new Item(new IID(Ids::SHULKER_SHELL), "Shulker Shell")); + self::register("slimeball", new Item(new IID(Ids::SLIMEBALL), "Slimeball")); self::register("snowball", new Snowball(new IID(Ids::SNOWBALL), "Snowball")); self::register("spider_eye", new SpiderEye(new IID(Ids::SPIDER_EYE), "Spider Eye")); + self::register("splash_potion", new SplashPotion(new IID(Ids::SPLASH_POTION), "Splash Potion")); + self::register("spruce_sign", new ItemBlockWallOrFloor(new IID(Ids::SPRUCE_SIGN), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN())); self::register("spyglass", new Spyglass(new IID(Ids::SPYGLASS), "Spyglass")); self::register("steak", new Steak(new IID(Ids::STEAK), "Steak")); self::register("stick", new Stick(new IID(Ids::STICK), "Stick")); self::register("string", new StringItem(new IID(Ids::STRING), "String")); + self::register("sugar", new Item(new IID(Ids::SUGAR), "Sugar")); self::register("sweet_berries", new SweetBerries(new IID(Ids::SWEET_BERRIES), "Sweet Berries")); self::register("totem", new Totem(new IID(Ids::TOTEM), "Totem of Undying")); + self::register("warped_sign", new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); + self::register("water_bucket", new LiquidBucket(new IID(Ids::WATER_BUCKET), "Water Bucket", Blocks::WATER())); + self::register("wheat", new Item(new IID(Ids::WHEAT), "Wheat")); self::register("wheat_seeds", new WheatSeeds(new IID(Ids::WHEAT_SEEDS), "Wheat Seeds")); self::register("writable_book", new WritableBook(new IID(Ids::WRITABLE_BOOK), "Book & Quill")); self::register("written_book", new WrittenBook(new IID(Ids::WRITTEN_BOOK), "Written Book")); - //TODO: add interface to dye-colour objects - self::register("dye", new Dye(new IID(Ids::DYE), "Dye")); - - self::register("banner", new Banner(new IID(Ids::BANNER), Blocks::BANNER(), Blocks::WALL_BANNER())); - - self::register("potion", new Potion(new IID(Ids::POTION), "Potion")); - self::register("splash_potion", new SplashPotion(new IID(Ids::SPLASH_POTION), "Splash Potion")); - foreach(TreeType::getAll() as $type){ //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency self::register($type->name() . "_boat", new Boat(new IID(match($type){ From da9937933bcc65119623f39179eca17580561030 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 01:06:17 +0100 Subject: [PATCH 306/692] Implemented honey bottle --- src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 1 + src/item/HoneyBottle.php | 54 ++++++++++++++++++++++ src/item/StringToItemParser.php | 1 + src/item/VanillaItems.php | 2 + 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/item/HoneyBottle.php diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 7ac959b4d..d4711f891 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -380,7 +380,7 @@ final class ItemDeserializer{ $this->map(Ids::GUNPOWDER, fn() => Items::GUNPOWDER()); $this->map(Ids::HEART_OF_THE_SEA, fn() => Items::HEART_OF_THE_SEA()); //TODO: minecraft:hoglin_spawn_egg - //TODO: minecraft:honey_bottle + $this->map(Ids::HONEY_BOTTLE, fn() => Items::HONEY_BOTTLE()); $this->map(Ids::HONEYCOMB, fn() => Items::HONEYCOMB()); $this->map(Ids::HOPPER, fn() => Blocks::HOPPER()->asItem()); //TODO: minecraft:hopper_minecart diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 4d57071c9..c6998aa1e 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -405,6 +405,7 @@ final class ItemSerializer{ $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); $this->map(Items::HONEYCOMB(), self::id(Ids::HONEYCOMB)); + $this->map(Items::HONEY_BOTTLE(), self::id(Ids::HONEY_BOTTLE)); $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); $this->map(Items::IRON_AXE(), self::id(Ids::IRON_AXE)); $this->map(Items::IRON_BOOTS(), self::id(Ids::IRON_BOOTS)); diff --git a/src/item/HoneyBottle.php b/src/item/HoneyBottle.php new file mode 100644 index 000000000..a9f563b46 --- /dev/null +++ b/src/item/HoneyBottle.php @@ -0,0 +1,54 @@ +getEffects()->remove(VanillaEffects::POISON()); + } +} diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c3843a113..bb94ca31f 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1226,6 +1226,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("healing_potion", fn() => Items::POTION()->setType(PotionType::HEALING())); $result->register("healing_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::HEALING())); $result->register("heart_of_the_sea", fn() => Items::HEART_OF_THE_SEA()); + $result->register("honey_bottle", fn() => Items::HONEY_BOTTLE()); $result->register("honeycomb", fn() => Items::HONEYCOMB()); $result->register("ink_sac", fn() => Items::INK_SAC()); $result->register("invisibility_potion", fn() => Items::POTION()->setType(PotionType::INVISIBILITY())); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index bb25c1709..ffdab1910 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -180,6 +180,7 @@ use pocketmine\world\World; * @method static Item GUNPOWDER() * @method static Item HEART_OF_THE_SEA() * @method static Item HONEYCOMB() + * @method static HoneyBottle HONEY_BOTTLE() * @method static Item INK_SAC() * @method static Axe IRON_AXE() * @method static Armor IRON_BOOTS() @@ -425,6 +426,7 @@ final class VanillaItems{ self::register("golden_carrot", new GoldenCarrot(new IID(Ids::GOLDEN_CARROT), "Golden Carrot")); self::register("gunpowder", new Item(new IID(Ids::GUNPOWDER), "Gunpowder")); self::register("heart_of_the_sea", new Item(new IID(Ids::HEART_OF_THE_SEA), "Heart of the Sea")); + self::register("honey_bottle", new HoneyBottle(new IID(Ids::HONEY_BOTTLE), "Honey Bottle")); self::register("honeycomb", new Item(new IID(Ids::HONEYCOMB), "Honeycomb")); self::register("ink_sac", new Item(new IID(Ids::INK_SAC), "Ink Sac")); self::register("iron_ingot", new Item(new IID(Ids::IRON_INGOT), "Iron Ingot")); From 3e4f01d85ed903506f63f8a16471555dba1a75e5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 01:27:30 +0100 Subject: [PATCH 307/692] VanillaBlocks: fixed case of some names --- src/block/VanillaBlocks.php | 88 ++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 15de19c18..6f36093df 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -802,11 +802,11 @@ final class VanillaBlocks{ self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", BreakInfo::instant())); self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); - self::register("FLOWER_POT", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); + self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - self::register("FURNACE", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("BLAST_FURNACE", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("SMOKER", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); $glassBreakInfo = new BreakInfo(0.3); self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); @@ -827,7 +827,7 @@ final class VanillaBlocks{ self::register("hardened_glass", new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); self::register("hardened_glass_pane", new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); - self::register("HOPPER", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); self::register("ice", new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); @@ -841,8 +841,8 @@ final class VanillaBlocks{ $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); - self::register("ITEM_FRAME", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - self::register("JUKEBOX", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); + self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); $lanternBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); @@ -851,13 +851,13 @@ final class VanillaBlocks{ self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); - self::register("LECTERN", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); - self::register("MONSTER_SPAWNER", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); @@ -874,7 +874,7 @@ final class VanillaBlocks{ self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("NOTE_BLOCK", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); + self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); @@ -914,7 +914,7 @@ final class VanillaBlocks{ self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - self::register("REDSTONE_COMPARATOR", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); + self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); self::register("redstone_torch", new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); @@ -927,14 +927,14 @@ final class VanillaBlocks{ self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new BreakInfo(0.3))); self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); - self::register("MOB_HEAD", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); + self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); - self::register("SHULKER_BOX", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); + self::register("shulker_box", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); self::register( @@ -986,35 +986,35 @@ final class VanillaBlocks{ //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register("BRICK_SLAB", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); - self::register("COBBLESTONE_SLAB", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); - self::register("FAKE_WOODEN_SLAB", new Slab(new BID(Ids::FAKE_WOODEN_SLAB), "Fake Wooden", $stoneSlabBreakInfo)); - self::register("NETHER_BRICK_SLAB", new Slab(new BID(Ids::NETHER_BRICK_SLAB), "Nether Brick", $stoneSlabBreakInfo)); - self::register("QUARTZ_SLAB", new Slab(new BID(Ids::QUARTZ_SLAB), "Quartz", $stoneSlabBreakInfo)); - self::register("SANDSTONE_SLAB", new Slab(new BID(Ids::SANDSTONE_SLAB), "Sandstone", $stoneSlabBreakInfo)); - self::register("SMOOTH_STONE_SLAB", new Slab(new BID(Ids::SMOOTH_STONE_SLAB), "Smooth Stone", $stoneSlabBreakInfo)); - self::register("STONE_BRICK_SLAB", new Slab(new BID(Ids::STONE_BRICK_SLAB), "Stone Brick", $stoneSlabBreakInfo)); - self::register("DARK_PRISMARINE_SLAB", new Slab(new BID(Ids::DARK_PRISMARINE_SLAB), "Dark Prismarine", $stoneSlabBreakInfo)); - self::register("MOSSY_COBBLESTONE_SLAB", new Slab(new BID(Ids::MOSSY_COBBLESTONE_SLAB), "Mossy Cobblestone", $stoneSlabBreakInfo)); - self::register("PRISMARINE_SLAB", new Slab(new BID(Ids::PRISMARINE_SLAB), "Prismarine", $stoneSlabBreakInfo)); - self::register("PRISMARINE_BRICKS_SLAB", new Slab(new BID(Ids::PRISMARINE_BRICKS_SLAB), "Prismarine Bricks", $stoneSlabBreakInfo)); - self::register("PURPUR_SLAB", new Slab(new BID(Ids::PURPUR_SLAB), "Purpur", $stoneSlabBreakInfo)); - self::register("RED_NETHER_BRICK_SLAB", new Slab(new BID(Ids::RED_NETHER_BRICK_SLAB), "Red Nether Brick", $stoneSlabBreakInfo)); - self::register("RED_SANDSTONE_SLAB", new Slab(new BID(Ids::RED_SANDSTONE_SLAB), "Red Sandstone", $stoneSlabBreakInfo)); - self::register("SMOOTH_SANDSTONE_SLAB", new Slab(new BID(Ids::SMOOTH_SANDSTONE_SLAB), "Smooth Sandstone", $stoneSlabBreakInfo)); - self::register("ANDESITE_SLAB", new Slab(new BID(Ids::ANDESITE_SLAB), "Andesite", $stoneSlabBreakInfo)); - self::register("DIORITE_SLAB", new Slab(new BID(Ids::DIORITE_SLAB), "Diorite", $stoneSlabBreakInfo)); - self::register("END_STONE_BRICK_SLAB", new Slab(new BID(Ids::END_STONE_BRICK_SLAB), "End Stone Brick", $stoneSlabBreakInfo)); - self::register("GRANITE_SLAB", new Slab(new BID(Ids::GRANITE_SLAB), "Granite", $stoneSlabBreakInfo)); - self::register("POLISHED_ANDESITE_SLAB", new Slab(new BID(Ids::POLISHED_ANDESITE_SLAB), "Polished Andesite", $stoneSlabBreakInfo)); - self::register("POLISHED_DIORITE_SLAB", new Slab(new BID(Ids::POLISHED_DIORITE_SLAB), "Polished Diorite", $stoneSlabBreakInfo)); - self::register("POLISHED_GRANITE_SLAB", new Slab(new BID(Ids::POLISHED_GRANITE_SLAB), "Polished Granite", $stoneSlabBreakInfo)); - self::register("SMOOTH_RED_SANDSTONE_SLAB", new Slab(new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB), "Smooth Red Sandstone", $stoneSlabBreakInfo)); - self::register("CUT_RED_SANDSTONE_SLAB", new Slab(new BID(Ids::CUT_RED_SANDSTONE_SLAB), "Cut Red Sandstone", $stoneSlabBreakInfo)); - self::register("CUT_SANDSTONE_SLAB", new Slab(new BID(Ids::CUT_SANDSTONE_SLAB), "Cut Sandstone", $stoneSlabBreakInfo)); - self::register("MOSSY_STONE_BRICK_SLAB", new Slab(new BID(Ids::MOSSY_STONE_BRICK_SLAB), "Mossy Stone Brick", $stoneSlabBreakInfo)); - self::register("SMOOTH_QUARTZ_SLAB", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); - self::register("STONE_SLAB", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); + self::register("brick_slab", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); + self::register("cobblestone_slab", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); + self::register("fake_wooden_slab", new Slab(new BID(Ids::FAKE_WOODEN_SLAB), "Fake Wooden", $stoneSlabBreakInfo)); + self::register("nether_brick_slab", new Slab(new BID(Ids::NETHER_BRICK_SLAB), "Nether Brick", $stoneSlabBreakInfo)); + self::register("quartz_slab", new Slab(new BID(Ids::QUARTZ_SLAB), "Quartz", $stoneSlabBreakInfo)); + self::register("sandstone_slab", new Slab(new BID(Ids::SANDSTONE_SLAB), "Sandstone", $stoneSlabBreakInfo)); + self::register("smooth_stone_slab", new Slab(new BID(Ids::SMOOTH_STONE_SLAB), "Smooth Stone", $stoneSlabBreakInfo)); + self::register("stone_brick_slab", new Slab(new BID(Ids::STONE_BRICK_SLAB), "Stone Brick", $stoneSlabBreakInfo)); + self::register("dark_prismarine_slab", new Slab(new BID(Ids::DARK_PRISMARINE_SLAB), "Dark Prismarine", $stoneSlabBreakInfo)); + self::register("mossy_cobblestone_slab", new Slab(new BID(Ids::MOSSY_COBBLESTONE_SLAB), "Mossy Cobblestone", $stoneSlabBreakInfo)); + self::register("prismarine_slab", new Slab(new BID(Ids::PRISMARINE_SLAB), "Prismarine", $stoneSlabBreakInfo)); + self::register("prismarine_bricks_slab", new Slab(new BID(Ids::PRISMARINE_BRICKS_SLAB), "Prismarine Bricks", $stoneSlabBreakInfo)); + self::register("purpur_slab", new Slab(new BID(Ids::PURPUR_SLAB), "Purpur", $stoneSlabBreakInfo)); + self::register("red_nether_brick_slab", new Slab(new BID(Ids::RED_NETHER_BRICK_SLAB), "Red Nether Brick", $stoneSlabBreakInfo)); + self::register("red_sandstone_slab", new Slab(new BID(Ids::RED_SANDSTONE_SLAB), "Red Sandstone", $stoneSlabBreakInfo)); + self::register("smooth_sandstone_slab", new Slab(new BID(Ids::SMOOTH_SANDSTONE_SLAB), "Smooth Sandstone", $stoneSlabBreakInfo)); + self::register("andesite_slab", new Slab(new BID(Ids::ANDESITE_SLAB), "Andesite", $stoneSlabBreakInfo)); + self::register("diorite_slab", new Slab(new BID(Ids::DIORITE_SLAB), "Diorite", $stoneSlabBreakInfo)); + self::register("end_stone_brick_slab", new Slab(new BID(Ids::END_STONE_BRICK_SLAB), "End Stone Brick", $stoneSlabBreakInfo)); + self::register("granite_slab", new Slab(new BID(Ids::GRANITE_SLAB), "Granite", $stoneSlabBreakInfo)); + self::register("polished_andesite_slab", new Slab(new BID(Ids::POLISHED_ANDESITE_SLAB), "Polished Andesite", $stoneSlabBreakInfo)); + self::register("polished_diorite_slab", new Slab(new BID(Ids::POLISHED_DIORITE_SLAB), "Polished Diorite", $stoneSlabBreakInfo)); + self::register("polished_granite_slab", new Slab(new BID(Ids::POLISHED_GRANITE_SLAB), "Polished Granite", $stoneSlabBreakInfo)); + self::register("smooth_red_sandstone_slab", new Slab(new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB), "Smooth Red Sandstone", $stoneSlabBreakInfo)); + self::register("cut_red_sandstone_slab", new Slab(new BID(Ids::CUT_RED_SANDSTONE_SLAB), "Cut Red Sandstone", $stoneSlabBreakInfo)); + self::register("cut_sandstone_slab", new Slab(new BID(Ids::CUT_SANDSTONE_SLAB), "Cut Sandstone", $stoneSlabBreakInfo)); + self::register("mossy_stone_brick_slab", new Slab(new BID(Ids::MOSSY_STONE_BRICK_SLAB), "Mossy Stone Brick", $stoneSlabBreakInfo)); + self::register("smooth_quartz_slab", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); + self::register("stone_slab", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); @@ -1029,7 +1029,7 @@ final class VanillaBlocks{ self::register("green_torch", new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", BreakInfo::instant())); self::register("torch", new Torch(new BID(Ids::TORCH), "Torch", BreakInfo::instant())); - self::register("TRAPPED_CHEST", new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); + self::register("trapped_chest", new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); self::register("tripwire", new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); self::register("tripwire_hook", new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); self::register("underwater_torch", new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); @@ -1073,7 +1073,7 @@ final class VanillaBlocks{ self::register("smooth_sandstone", new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("DYED_SHULKER_BOX", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); + self::register("dyed_shulker_box", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); self::register("stained_glass", new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); self::register("stained_glass_pane", new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); self::register("stained_clay", new StainedHardenedClay(new BID(Ids::STAINED_CLAY), "Stained Clay", $hardenedClayBreakInfo)); From c67e42a723310a8959117dee7dd9b2cb58d3c3bb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 01:44:13 +0100 Subject: [PATCH 308/692] Add a hook to enable blocks to react to projectiles colliding with them this enables implementing blocks such as the target block. --- src/block/Block.php | 8 ++++++++ src/entity/projectile/Projectile.php | 1 + 2 files changed, 9 insertions(+) diff --git a/src/block/Block.php b/src/block/Block.php index cddfe0440..38abcfb4f 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -32,6 +32,7 @@ use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; +use pocketmine\entity\projectile\Projectile; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\Item; use pocketmine\item\ItemBlock; @@ -626,6 +627,13 @@ class Block{ return null; } + /** + * Called when a projectile collides with one of this block's collision boxes. + */ + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + //NOOP + } + /** * @return AxisAlignedBB[] */ diff --git a/src/entity/projectile/Projectile.php b/src/entity/projectile/Projectile.php index 41c5aa4cf..74bb5a0a2 100644 --- a/src/entity/projectile/Projectile.php +++ b/src/entity/projectile/Projectile.php @@ -306,5 +306,6 @@ abstract class Projectile extends Entity{ */ protected function onHitBlock(Block $blockHit, RayTraceResult $hitResult) : void{ $this->blockHit = $blockHit->getPosition()->asVector3(); + $blockHit->onProjectileHit($this, $hitResult); } } From 56e6a5564534bf6b0930556b2d1c5521561560c6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 19:44:16 +0100 Subject: [PATCH 309/692] LegacyBlockStateMapper: provide a way to add custom upgrade mappings this will be needed by plugin developers to upgrade old custom blocks from PM4. --- .../bedrock/LegacyToStringBidirectionalIdMap.php | 11 +++++++++++ .../bedrock/block/upgrade/LegacyBlockStateMapper.php | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/data/bedrock/LegacyToStringBidirectionalIdMap.php b/src/data/bedrock/LegacyToStringBidirectionalIdMap.php index 2ffe1b986..e39df6ad9 100644 --- a/src/data/bedrock/LegacyToStringBidirectionalIdMap.php +++ b/src/data/bedrock/LegacyToStringBidirectionalIdMap.php @@ -81,4 +81,15 @@ abstract class LegacyToStringBidirectionalIdMap{ public function getStringToLegacyMap() : array{ return $this->stringToLegacy; } + + public function add(string $string, int $legacy) : void{ + if(isset($this->legacyToString[$legacy])){ + throw new \InvalidArgumentException("Legacy ID $legacy is already mapped to string " . $this->legacyToString[$legacy]); + } + if(isset($this->stringToLegacy[$string])){ + throw new \InvalidArgumentException("String ID $string is already mapped to legacy ID " . $this->stringToLegacy[$string]); + } + $this->legacyToString[$legacy] = $string; + $this->stringToLegacy[$string] = $legacy; + } } diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index 0822fe817..728ef05b5 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -52,6 +52,18 @@ final class LegacyBlockStateMapper{ return $this->fromStringIdMeta($stringId, $meta); } + /** + * Adds a mapping of legacy block ID and meta to modern blockstate data. This may be needed for upgrading data from + * stored custom blocks from older versions of PocketMine-MP. + */ + public function addMapping(string $stringId, int $intId, int $meta, BlockStateData $stateData) : void{ + if(isset($this->mappingTable[$stringId][$meta])){ + throw new \InvalidArgumentException("A mapping for $stringId:$meta already exists"); + } + $this->mappingTable[$stringId][$meta] = $stateData; + $this->legacyNumericIdMap->add($intId, $stringId); + } + public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap, BlockStateUpgrader $blockStateUpgrader) : self{ $mappingTable = []; From 419b21281dcfa822aee42bdbf43a9fc8cc1c9b64 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 19:54:04 +0100 Subject: [PATCH 310/692] Fix Copilot mixup --- src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php index 728ef05b5..3b32ef15a 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php @@ -61,7 +61,7 @@ final class LegacyBlockStateMapper{ throw new \InvalidArgumentException("A mapping for $stringId:$meta already exists"); } $this->mappingTable[$stringId][$meta] = $stateData; - $this->legacyNumericIdMap->add($intId, $stringId); + $this->legacyNumericIdMap->add($stringId, $intId); } public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap, BlockStateUpgrader $blockStateUpgrader) : self{ From d894c5e97f997bf5478cb71500aa8b3767a564bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 20:00:25 +0100 Subject: [PATCH 311/692] Drop string ID -> legacy ID conversion tables these are not used for anything anymore --- .../bedrock/LegacyBiomeIdToStringIdMap.php | 2 +- .../bedrock/LegacyEntityIdToStringIdMap.php | 2 +- ...ionalIdMap.php => LegacyToStringIdMap.php} | 24 +------------------ .../upgrade/LegacyBlockIdToStringIdMap.php | 4 ++-- .../upgrade/LegacyItemIdToStringIdMap.php | 4 ++-- 5 files changed, 7 insertions(+), 29 deletions(-) rename src/data/bedrock/{LegacyToStringBidirectionalIdMap.php => LegacyToStringIdMap.php} (76%) diff --git a/src/data/bedrock/LegacyBiomeIdToStringIdMap.php b/src/data/bedrock/LegacyBiomeIdToStringIdMap.php index 974792eba..b82dcf2f2 100644 --- a/src/data/bedrock/LegacyBiomeIdToStringIdMap.php +++ b/src/data/bedrock/LegacyBiomeIdToStringIdMap.php @@ -26,7 +26,7 @@ namespace pocketmine\data\bedrock; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; -final class LegacyBiomeIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ +final class LegacyBiomeIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; public function __construct(){ diff --git a/src/data/bedrock/LegacyEntityIdToStringIdMap.php b/src/data/bedrock/LegacyEntityIdToStringIdMap.php index 2e3e4aecc..6ba3b64de 100644 --- a/src/data/bedrock/LegacyEntityIdToStringIdMap.php +++ b/src/data/bedrock/LegacyEntityIdToStringIdMap.php @@ -26,7 +26,7 @@ namespace pocketmine\data\bedrock; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; -final class LegacyEntityIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ +final class LegacyEntityIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; public function __construct(){ diff --git a/src/data/bedrock/LegacyToStringBidirectionalIdMap.php b/src/data/bedrock/LegacyToStringIdMap.php similarity index 76% rename from src/data/bedrock/LegacyToStringBidirectionalIdMap.php rename to src/data/bedrock/LegacyToStringIdMap.php index e39df6ad9..d808b35df 100644 --- a/src/data/bedrock/LegacyToStringBidirectionalIdMap.php +++ b/src/data/bedrock/LegacyToStringIdMap.php @@ -31,18 +31,13 @@ use function is_int; use function is_string; use function json_decode; -abstract class LegacyToStringBidirectionalIdMap{ +abstract class LegacyToStringIdMap{ /** * @var string[] * @phpstan-var array */ private array $legacyToString = []; - /** - * @var int[] - * @phpstan-var array - */ - private array $stringToLegacy = []; public function __construct(string $file){ $stringToLegacyId = json_decode(Utils::assumeNotFalse(file_get_contents($file), "Missing required resource file"), true); @@ -54,7 +49,6 @@ abstract class LegacyToStringBidirectionalIdMap{ throw new AssumptionFailedError("ID map should have string keys and int values"); } $this->legacyToString[$legacyId] = $stringId; - $this->stringToLegacy[$stringId] = $legacyId; } } @@ -62,10 +56,6 @@ abstract class LegacyToStringBidirectionalIdMap{ return $this->legacyToString[$legacy] ?? null; } - public function stringToLegacy(string $string) : ?int{ - return $this->stringToLegacy[$string] ?? null; - } - /** * @return string[] * @phpstan-return array @@ -74,22 +64,10 @@ abstract class LegacyToStringBidirectionalIdMap{ return $this->legacyToString; } - /** - * @return int[] - * @phpstan-return array - */ - public function getStringToLegacyMap() : array{ - return $this->stringToLegacy; - } - public function add(string $string, int $legacy) : void{ if(isset($this->legacyToString[$legacy])){ throw new \InvalidArgumentException("Legacy ID $legacy is already mapped to string " . $this->legacyToString[$legacy]); } - if(isset($this->stringToLegacy[$string])){ - throw new \InvalidArgumentException("String ID $string is already mapped to legacy ID " . $this->stringToLegacy[$string]); - } $this->legacyToString[$legacy] = $string; - $this->stringToLegacy[$string] = $legacy; } } diff --git a/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php index 0ced6361f..bd0a14c79 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\data\bedrock\LegacyToStringBidirectionalIdMap; +use pocketmine\data\bedrock\LegacyToStringIdMap; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; -final class LegacyBlockIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ +final class LegacyBlockIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; public function __construct(){ diff --git a/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php index 49b1a2271..62627d7f4 100644 --- a/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php +++ b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item\upgrade; -use pocketmine\data\bedrock\LegacyToStringBidirectionalIdMap; +use pocketmine\data\bedrock\LegacyToStringIdMap; use pocketmine\utils\SingletonTrait; use Webmozart\PathUtil\Path; -final class LegacyItemIdToStringIdMap extends LegacyToStringBidirectionalIdMap{ +final class LegacyItemIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; public function __construct(){ From 54a773be0c507bad17484ac068f311f751ef7689 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 7 Jul 2022 20:04:16 +0100 Subject: [PATCH 312/692] SubChunk::__construct(): rename blocks to blockLayers --- src/world/format/SubChunk.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/world/format/SubChunk.php b/src/world/format/SubChunk.php index 9f1b94bec..d10968160 100644 --- a/src/world/format/SubChunk.php +++ b/src/world/format/SubChunk.php @@ -32,22 +32,17 @@ class SubChunk{ public const COORD_MASK = ~(~0 << self::COORD_BIT_SIZE); public const EDGE_LENGTH = 1 << self::COORD_BIT_SIZE; - /** @var PalettedBlockArray[] */ - private array $blockLayers; - /** * SubChunk constructor. * - * @param PalettedBlockArray[] $blocks + * @param PalettedBlockArray[] $blockLayers */ public function __construct( private int $emptyBlockId, - array $blocks, //TODO: promote this once we can break BC again (needs a name change) + private array $blockLayers, private ?LightArray $skyLight = null, private ?LightArray $blockLight = null - ){ - $this->blockLayers = $blocks; - } + ){} /** * Returns whether this subchunk contains any non-air blocks. From 66d655731a064bb2e6b85b6309b28dd252067b85 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 8 Jul 2022 18:19:46 +0100 Subject: [PATCH 313/692] Don't barf on air itemstacks found on disk closes #5143 this is caused by bugs in PM4, where it saved air itemstacks when it wasn't supposed to. These issues are now all addressed in PM5, since ItemSerializer won't accept air itemstacks. --- src/data/bedrock/item/upgrade/ItemDataUpgrader.php | 13 +++++++++++-- src/item/Item.php | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index e01aeb791..33d4bffc2 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -116,7 +116,7 @@ final class ItemDataUpgrader{ /** * @throws SavedDataLoadingException */ - private function upgradeItemTypeNbt(CompoundTag $tag) : SavedItemData{ + private function upgradeItemTypeNbt(CompoundTag $tag) : ?SavedItemData{ if(($nameIdTag = $tag->getTag(SavedItemData::TAG_NAME)) instanceof StringTag){ //Bedrock 1.6+ @@ -124,6 +124,11 @@ final class ItemDataUpgrader{ }elseif(($idTag = $tag->getTag(self::TAG_LEGACY_ID)) instanceof ShortTag){ //Bedrock <= 1.5, PM <= 1.12 + if($idTag->getValue() === 0){ + //0 is a special case for air, which is not a valid item ID + //this isn't supposed to be saved, but this appears in some places due to bugs in older versions + return null; + } $rawNameId = $this->legacyIntToStringIdMap->legacyToString($idTag->getValue()); if($rawNameId === null){ throw new SavedDataLoadingException("Legacy item ID " . $idTag->getValue() . " doesn't map to any modern string ID"); @@ -182,8 +187,12 @@ final class ItemDataUpgrader{ /** * @throws SavedDataLoadingException */ - public function upgradeItemStackNbt(CompoundTag $tag) : SavedItemStackData{ + public function upgradeItemStackNbt(CompoundTag $tag) : ?SavedItemStackData{ $savedItemData = $this->upgradeItemTypeNbt($tag); + if($savedItemData === null){ + //air - this isn't supposed to be saved, but older versions of PM saved it in some places + return null; + } try{ //required $count = Binary::unsignByte($tag->getByte(SavedItemStackData::TAG_COUNT)); diff --git a/src/item/Item.php b/src/item/Item.php index 4b3cd5aee..a1153e738 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -633,6 +633,9 @@ class Item implements \JsonSerializable{ */ public static function nbtDeserialize(CompoundTag $tag) : Item{ $itemData = GlobalItemDataHandlers::getUpgrader()->upgradeItemStackNbt($tag); + if($itemData === null){ + return VanillaItems::AIR(); + } try{ return GlobalItemDataHandlers::getDeserializer()->deserializeStack($itemData); From 151f2c3f3adb1dede33593cfcb127d5cca14ba70 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 8 Jul 2022 21:51:44 +0100 Subject: [PATCH 314/692] BlockStateDictionary: reduce memory footprint by 5 MB by deduplicating blockstate NBT keys and values --- .../mcpe/convert/BlockStateDictionary.php | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 6322f5255..24d49e34c 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -25,6 +25,10 @@ namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\NbtDataException; +use pocketmine\nbt\tag\ByteTag; +use pocketmine\nbt\tag\CompoundTag; +use pocketmine\nbt\tag\IntTag; +use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use function array_map; @@ -108,6 +112,33 @@ final class BlockStateDictionary{ */ public function getStates() : array{ return $this->states; } + /** + * @param string[] $keyIndex + * @param (ByteTag|StringTag|IntTag)[][] $valueIndex + * @phpstan-param array $keyIndex + * @phpstan-param array> $valueIndex + */ + private static function deduplicateCompound(CompoundTag $tag, array &$keyIndex, array &$valueIndex) : CompoundTag{ + if($tag->count() === 0){ + return $tag; + } + + $newTag = CompoundTag::create(); + foreach($tag as $key => $value){ + $key = $keyIndex[$key] ??= $key; + + if($value instanceof CompoundTag){ + $value = self::deduplicateCompound($value, $keyIndex, $valueIndex); + }elseif($value instanceof ByteTag || $value instanceof IntTag || $value instanceof StringTag){ + $value = $valueIndex[$value->getType()][$value->getValue()] ??= $value; + } + + $newTag->setTag($key, $value); + } + + return $newTag; + } + /** * @return BlockStateData[] * @phpstan-return list @@ -115,8 +146,13 @@ final class BlockStateDictionary{ * @throws NbtDataException */ public static function loadPaletteFromString(string $blockPaletteContents) : array{ + $keyIndex = []; + $valueIndex = []; + return array_map( - fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), + function(TreeRoot $root) use (&$keyIndex, &$valueIndex) : BlockStateData{ + return BlockStateData::fromNbt(self::deduplicateCompound($root->mustGetCompoundTag(), $keyIndex, $valueIndex)); + }, (new NetworkNbtSerializer())->readMultiple($blockPaletteContents) ); } From ccb3c3cb05e6eee8afa15d7837e256a446244fe7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 16:03:51 +0100 Subject: [PATCH 315/692] BlockStateData: use array instead of CompoundTag to store state properties this reduces the footprint of RuntimeBlockMapping by a further 1 MB, as well as simplifying various parts of the code, and solidifying the immutability guarantee of BlockStateData. --- build/generate-block-serializer-consts.php | 2 +- .../CraftingManagerFromDataHelper.php | 5 +- src/data/bedrock/block/BlockStateData.php | 40 +++++-- .../block/CachingBlockStateDeserializer.php | 4 +- .../block/convert/BlockStateReader.php | 11 +- .../block/convert/BlockStateWriter.php | 21 ++-- .../block/upgrade/BlockDataUpgrader.php | 2 +- .../BlockStateUpgradeSchemaBlockRemap.php | 21 +--- .../upgrade/BlockStateUpgradeSchemaUtils.php | 4 +- .../block/upgrade/BlockStateUpgrader.php | 100 +++++++++++------- .../mcpe/convert/BlockStateLookupCache.php | 3 +- .../mcpe/convert/RuntimeBlockMapping.php | 3 +- src/world/format/io/BaseWorldProvider.php | 3 +- src/world/format/io/leveldb/LevelDB.php | 2 +- .../block/upgrade/BlockStateUpgraderTest.php | 17 ++- tools/generate-block-palette-spec.php | 2 +- tools/generate-blockstate-upgrade-schema.php | 18 ++-- 17 files changed, 148 insertions(+), 110 deletions(-) diff --git a/build/generate-block-serializer-consts.php b/build/generate-block-serializer-consts.php index 9fd944157..5f82b8e58 100644 --- a/build/generate-block-serializer-consts.php +++ b/build/generate-block-serializer-consts.php @@ -74,7 +74,7 @@ function generateBlockPaletteReport(array $states) : BlockPaletteReport{ foreach($states as $stateData){ $name = $stateData->getName(); $result->seenTypes[$name] = $name; - foreach($stateData->getStates() as $k => $v){ + foreach(Utils::stringifyKeys($stateData->getStates()) as $k => $v){ $result->seenStateValues[$k][$v->getValue()] = $v->getValue(); asort($result->seenStateValues[$k]); } diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index db7afe52e..21e47a1e8 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -121,10 +121,11 @@ final class CraftingManagerFromDataHelper{ throw new SavedDataLoadingException("Meta should not be specified for blockitems"); } $blockStatesTag = $blockStatesRaw === null ? - CompoundTag::create() : + [] : (new LittleEndianNbtSerializer()) ->read(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => base64_decode($blockStatesRaw, true))) - ->mustGetCompoundTag(); + ->mustGetCompoundTag() + ->getValue(); $blockStateData = new BlockStateData($blockName, $blockStatesTag, BlockStateData::CURRENT_VERSION); }else{ $blockStateData = null; diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index a5d066298..be0048c6d 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -25,6 +25,8 @@ namespace pocketmine\data\bedrock\block; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\nbt\tag\Tag; +use pocketmine\utils\Utils; use function array_keys; use function count; use function implode; @@ -46,15 +48,27 @@ final class BlockStateData{ public const TAG_STATES = "states"; public const TAG_VERSION = "version"; + /** + * @param Tag[] $states + * @phpstan-param array $states + */ public function __construct( private string $name, - private CompoundTag $states, + private array $states, private int $version ){} public function getName() : string{ return $this->name; } - public function getStates() : CompoundTag{ return $this->states; } + /** + * @return Tag[] + * @phpstan-return array + */ + public function getStates() : array{ return $this->states; } + + public function getState(string $name) : ?Tag{ + return $this->states[$name] ?? null; + } public function getVersion() : int{ return $this->version; } @@ -76,20 +90,30 @@ final class BlockStateData{ throw new BlockStateDeserializeException("Unexpected extra keys: " . implode(", ", array_keys($allKeys))); } - return new self($name, $states, $version); + return new self($name, $states->getValue(), $version); } public function toNbt() : CompoundTag{ + $statesTag = CompoundTag::create(); + foreach(Utils::stringifyKeys($this->states) as $key => $value){ + $statesTag->setTag($key, $value); + } return CompoundTag::create() ->setString(self::TAG_NAME, $this->name) ->setInt(self::TAG_VERSION, $this->version) - ->setTag(self::TAG_STATES, $this->states); + ->setTag(self::TAG_STATES, $statesTag); } public function equals(self $that) : bool{ - return - $this->name === $that->name && - $this->states->equals($that->states) && - $this->version === $that->version; + if($this->name !== $that->name || count($this->states) !== count($that->states)){ + return false; + } + foreach(Utils::stringifyKeys($this->states) as $k => $v){ + if(!isset($that->states[$k]) || !$that->states[$k]->equals($v)){ + return false; + } + } + + return true; } } diff --git a/src/data/bedrock/block/CachingBlockStateDeserializer.php b/src/data/bedrock/block/CachingBlockStateDeserializer.php index 3071a9eb1..2078b7cc5 100644 --- a/src/data/bedrock/block/CachingBlockStateDeserializer.php +++ b/src/data/bedrock/block/CachingBlockStateDeserializer.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block; +use function count; + final class CachingBlockStateDeserializer implements DelegatingBlockStateDeserializer{ /** @@ -36,7 +38,7 @@ final class CachingBlockStateDeserializer implements DelegatingBlockStateDeseria ){} public function deserialize(BlockStateData $stateData) : int{ - if($stateData->getStates()->count() === 0){ + if(count($stateData->getStates()) === 0){ //if a block has zero properties, we can keep a map of string ID -> internal blockstate ID return $this->simpleCache[$stateData->getName()] ??= $this->realDeserializer->deserialize($stateData); } diff --git a/src/data/bedrock/block/convert/BlockStateReader.php b/src/data/bedrock/block/convert/BlockStateReader.php index 0d1a0000f..67da60088 100644 --- a/src/data/bedrock/block/convert/BlockStateReader.php +++ b/src/data/bedrock/block/convert/BlockStateReader.php @@ -38,6 +38,7 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; +use pocketmine\utils\Utils; use function get_class; final class BlockStateReader{ @@ -66,7 +67,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readBool(string $name) : bool{ $this->usedStates[$name] = true; - $tag = $this->data->getStates()->getTag($name); + $tag = $this->data->getState($name); if($tag instanceof ByteTag){ switch($tag->getValue()){ case 0: return false; @@ -80,7 +81,7 @@ final class BlockStateReader{ /** @throws BlockStateDeserializeException */ public function readInt(string $name) : int{ $this->usedStates[$name] = true; - $tag = $this->data->getStates()->getTag($name); + $tag = $this->data->getState($name); if($tag instanceof IntTag){ return $tag->getValue(); } @@ -100,7 +101,7 @@ final class BlockStateReader{ public function readString(string $name) : string{ $this->usedStates[$name] = true; //TODO: only allow a specific set of values (strings are primarily used for enums) - $tag = $this->data->getStates()->getTag($name); + $tag = $this->data->getState($name); if($tag instanceof StringTag){ return $tag->getValue(); } @@ -314,7 +315,7 @@ final class BlockStateReader{ * Explicitly mark a property as unused, so it doesn't get flagged as an error when debug mode is enabled */ public function ignored(string $name) : void{ - if($this->data->getStates()->getTag($name) !== null){ + if($this->data->getState($name) !== null){ $this->usedStates[$name] = true; }else{ throw $this->missingOrWrongTypeException($name, null); @@ -332,7 +333,7 @@ final class BlockStateReader{ * @throws BlockStateDeserializeException */ public function checkUnreadProperties() : void{ - foreach($this->data->getStates() as $name => $tag){ + foreach(Utils::stringifyKeys($this->data->getStates()) as $name => $tag){ if(!isset($this->usedStates[$name])){ throw new BlockStateDeserializeException("Unread property \"$name\""); } diff --git a/src/data/bedrock/block/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php index 285a52aa1..db305bb3d 100644 --- a/src/data/bedrock/block/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -35,17 +35,22 @@ use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; use pocketmine\math\Axis; use pocketmine\math\Facing; -use pocketmine\nbt\tag\CompoundTag; +use pocketmine\nbt\tag\ByteTag; +use pocketmine\nbt\tag\IntTag; +use pocketmine\nbt\tag\StringTag; +use pocketmine\nbt\tag\Tag; final class BlockStateWriter{ - private CompoundTag $states; + /** + * @var Tag[] + * @phpstan-var array + */ + private array $states = []; public function __construct( private string $id - ){ - $this->states = CompoundTag::create(); - } + ){} public static function create(string $id) : self{ return new self($id); @@ -53,19 +58,19 @@ final class BlockStateWriter{ /** @return $this */ public function writeBool(string $name, bool $value) : self{ - $this->states->setByte($name, $value ? 1 : 0); + $this->states[$name] = new ByteTag($value ? 1 : 0); return $this; } /** @return $this */ public function writeInt(string $name, int $value) : self{ - $this->states->setInt($name, $value); + $this->states[$name] = new IntTag($value); return $this; } /** @return $this */ public function writeString(string $name, string $value) : self{ - $this->states->setString($name, $value); + $this->states[$name] = new StringTag($value); return $this; } diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index a10c30d7e..785a36af8 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -51,7 +51,7 @@ final class BlockDataUpgrader{ $blockStateData = $this->upgradeStringIdMeta($id, $data); if($blockStateData === null){ //unknown block, invalid ID - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); } }else{ //Modern (post-1.13) blockstate diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php index f3ef4ec92..a0659b40a 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php @@ -23,15 +23,9 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; -use pocketmine\utils\Utils; final class BlockStateUpgradeSchemaBlockRemap{ - - public CompoundTag $oldState; - public CompoundTag $newState; - /** * @param Tag[] $oldState * @param Tag[] $newState @@ -39,17 +33,8 @@ final class BlockStateUpgradeSchemaBlockRemap{ * @phpstan-param array $newState */ public function __construct( - array $oldState, + public array $oldState, public string $newName, - array $newState - ){ - $this->oldState = CompoundTag::create(); - $this->newState = CompoundTag::create(); - foreach(Utils::stringifyKeys($oldState) as $k => $v){ - $this->oldState->setTag($k, $v); - } - foreach(Utils::stringifyKeys($newState) as $k => $v){ - $this->newState->setTag($k, $v); - } - } + public array $newState + ){} } diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index e6fe5c8dc..923afde76 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -240,9 +240,9 @@ final class BlockStateUpgradeSchemaUtils{ foreach(Utils::stringifyKeys($schema->remappedStates) as $oldBlockName => $remaps){ foreach($remaps as $remap){ $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaModelBlockRemap( - array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState->getValue()), + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState), $remap->newName, - array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState->getValue()), + array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), ); } } diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php index 89a6d7b85..637674a26 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -24,9 +24,9 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; +use function count; use function ksort; use const SORT_NUMERIC; @@ -68,12 +68,20 @@ final class BlockStateUpgrader{ } foreach($schemas as $schema){ $oldName = $blockStateData->getName(); + $oldState = $blockStateData->getStates(); if(isset($schema->remappedStates[$oldName])){ foreach($schema->remappedStates[$oldName] as $remap){ - if($blockStateData->getStates()->equals($remap->oldState)){ - $blockStateData = new BlockStateData($remap->newName, clone $remap->newState, $resultVersion); - continue 2; + if(count($oldState) !== count($remap->oldState)){ + continue; //try next state } + foreach(Utils::stringifyKeys($oldState) as $k => $v){ + if(!isset($remap->oldState[$k]) || !$remap->oldState[$k]->equals($v)){ + continue 2; //try next state + } + } + + $blockStateData = new BlockStateData($remap->newName, $remap->newState, $resultVersion); + continue 2; //try next schema } } $newName = $schema->renamedIds[$oldName] ?? null; @@ -96,42 +104,44 @@ final class BlockStateUpgrader{ return $blockStateData; } - private function cloneIfNeeded(CompoundTag $states, int &$stateChanges) : CompoundTag{ - if($stateChanges === 0){ - $states = clone $states; + /** + * @param Tag[] $states + * @phpstan-param array $states + * + * @return Tag[] + * @phpstan-return array + */ + private function applyPropertyAdded(BlockStateUpgradeSchema $schema, string $oldName, array $states, int &$stateChanges) : array{ + if(isset($schema->addedProperties[$oldName])){ + foreach(Utils::stringifyKeys($schema->addedProperties[$oldName]) as $propertyName => $value){ + if(!isset($states[$propertyName])){ + $stateChanges++; + $states[$propertyName] = $value; + } + } } - $stateChanges++; return $states; } - private function applyPropertyAdded(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ - $newStates = $states; - if(isset($schema->addedProperties[$oldName])){ - foreach(Utils::stringifyKeys($schema->addedProperties[$oldName]) as $propertyName => $value){ - $oldValue = $states->getTag($propertyName); - if($oldValue === null){ - $newStates = $this->cloneIfNeeded($newStates, $stateChanges); - $newStates->setTag($propertyName, $value); - } - } - } - - return $newStates; - } - - private function applyPropertyRemoved(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ - $newStates = $states; + /** + * @param Tag[] $states + * @phpstan-param array $states + * + * @return Tag[] + * @phpstan-return array + */ + private function applyPropertyRemoved(BlockStateUpgradeSchema $schema, string $oldName, array $states, int &$stateChanges) : array{ if(isset($schema->removedProperties[$oldName])){ foreach($schema->removedProperties[$oldName] as $propertyName){ - if($states->getTag($propertyName) !== null){ - $newStates = $this->cloneIfNeeded($newStates, $stateChanges); - $newStates->removeTag($propertyName); + if(isset($states[$propertyName])){ + $stateChanges++; + unset($states[$propertyName]); } } } - return $newStates; + return $states; } private function locateNewPropertyValue(BlockStateUpgradeSchema $schema, string $oldName, string $oldPropertyName, Tag $oldValue) : Tag{ @@ -146,18 +156,25 @@ final class BlockStateUpgrader{ return $oldValue; } - private function applyPropertyRenamedOrValueChanged(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + /** + * @param Tag[] $states + * @phpstan-param array $states + * + * @return Tag[] + * @phpstan-return array + */ + private function applyPropertyRenamedOrValueChanged(BlockStateUpgradeSchema $schema, string $oldName, array $states, int &$stateChanges) : array{ if(isset($schema->renamedProperties[$oldName])){ foreach(Utils::stringifyKeys($schema->renamedProperties[$oldName]) as $oldPropertyName => $newPropertyName){ - $oldValue = $states->getTag($oldPropertyName); + $oldValue = $states[$oldPropertyName] ?? null; if($oldValue !== null){ - $states = $this->cloneIfNeeded($states, $stateChanges); - $states->removeTag($oldPropertyName); + $stateChanges++; + unset($states[$oldPropertyName]); //If a value remap is needed, we need to do it here, since we won't be able to locate the property //after it's been renamed - value remaps are always indexed by old property name for the sake of //being able to do changes in any order. - $states->setTag($newPropertyName, $this->locateNewPropertyValue($schema, $oldName, $oldPropertyName, $oldValue)); + $states[$newPropertyName] = $this->locateNewPropertyValue($schema, $oldName, $oldPropertyName, $oldValue); } } } @@ -165,15 +182,22 @@ final class BlockStateUpgrader{ return $states; } - private function applyPropertyValueChanged(BlockStateUpgradeSchema $schema, string $oldName, CompoundTag $states, int &$stateChanges) : CompoundTag{ + /** + * @param Tag[] $states + * @phpstan-param array $states + * + * @return Tag[] + * @phpstan-return array + */ + private function applyPropertyValueChanged(BlockStateUpgradeSchema $schema, string $oldName, array $states, int &$stateChanges) : array{ if(isset($schema->remappedPropertyValues[$oldName])){ foreach(Utils::stringifyKeys($schema->remappedPropertyValues[$oldName]) as $oldPropertyName => $remappedValues){ - $oldValue = $states->getTag($oldPropertyName); + $oldValue = $states[$oldPropertyName] ?? null; if($oldValue !== null){ $newValue = $this->locateNewPropertyValue($schema, $oldName, $oldPropertyName, $oldValue); if($newValue !== $oldValue){ - $states = $this->cloneIfNeeded($states, $stateChanges); - $states->setTag($oldPropertyName, $newValue); + $stateChanges++; + $states[$oldPropertyName] = $newValue; } } } diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index 2bc5744fb..40b08e37d 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -74,9 +74,8 @@ final class BlockStateLookupCache{ } if(isset($this->nameToNetworkIdsLookup[$name])){ - $states = $data->getStates(); foreach($this->nameToNetworkIdsLookup[$name] as $stateId => $stateNbt){ - if($stateNbt->getStates()->equals($states)){ + if($stateNbt->equals($data)){ return $stateId; } } diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 9c9402d31..e0acc2430 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -27,7 +27,6 @@ use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\data\bedrock\block\BlockTypeNames; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; @@ -67,7 +66,7 @@ final class RuntimeBlockMapping{ private BlockStateDictionary $blockStateDictionary, private BlockStateSerializer $blockStateSerializer ){ - $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData($this->fallbackStateData) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); } diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index 23d1ba269..dc9f296fb 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -25,7 +25,6 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockTypeNames; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; use pocketmine\world\format\PalettedBlockArray; @@ -63,7 +62,7 @@ abstract class BaseWorldProvider implements WorldProvider{ $newStateData = $blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); if($newStateData === null){ //TODO: remember data for unknown states so we can implement them later - $newStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION); + $newStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); } $newPalette[$k] = $blockStateDeserializer->deserialize($newStateData); diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 421f657b3..92e2fa853 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -180,7 +180,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: remember data for unknown states so we can implement them later //TODO: this is slow; we need to cache this //TODO: log this - $palette[] = $blockStateDeserializer->deserialize(new BlockStateData(BlockTypeNames::INFO_UPDATE, CompoundTag::create(), BlockStateData::CURRENT_VERSION)); + $palette[] = $blockStateDeserializer->deserialize(new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION)); } }catch(NbtException | BlockStateDeserializeException $e){ throw new CorruptedChunkException("Invalid blockstate NBT at offset $i in paletted storage: " . $e->getMessage(), 0, $e); diff --git a/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php index 14d3994e3..86ba0f67b 100644 --- a/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php @@ -25,7 +25,6 @@ namespace pocketmine\data\bedrock\block\upgrade; use PHPUnit\Framework\TestCase; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use const PHP_INT_MAX; @@ -81,13 +80,13 @@ class BlockStateUpgraderTest extends TestCase{ } private function getEmptyPreimage() : BlockStateData{ - return new BlockStateData(self::TEST_BLOCK, CompoundTag::create(), self::TEST_VERSION); + return new BlockStateData(self::TEST_BLOCK, [], self::TEST_VERSION); } private function getPreimageOneProperty(string $propertyName, int $value) : BlockStateData{ return new BlockStateData( self::TEST_BLOCK, - CompoundTag::create()->setInt($propertyName, $value), + [$propertyName => new IntTag($value)], self::TEST_VERSION ); } @@ -98,7 +97,7 @@ class BlockStateUpgraderTest extends TestCase{ $getStateData = fn() => $this->getEmptyPreimage(); $upgradedStateData = $this->upgrade($getStateData(), $getStateData); - self::assertSame(self::TEST_PROPERTY_VALUE_1, $upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)?->getValue()); + self::assertSame(self::TEST_PROPERTY_VALUE_1, $upgradedStateData->getState(self::TEST_PROPERTY)?->getValue()); } public function testAddPropertyAlreadyExists() : void{ @@ -132,7 +131,7 @@ class BlockStateUpgraderTest extends TestCase{ $upgradedStateData = $this->upgrade($getStateData(), $getStateData); - self::assertNull($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)); + self::assertNull($upgradedStateData->getState(self::TEST_PROPERTY)); } private function prepareRenamePropertySchema(BlockStateUpgradeSchema $schema) : void{ @@ -157,7 +156,7 @@ class BlockStateUpgraderTest extends TestCase{ $upgradedStateData = $this->upgrade($getStateData(), $getStateData); - self::assertSame($valueAfter, $upgradedStateData->getStates()->getTag(self::TEST_PROPERTY_2)?->getValue()); + self::assertSame($valueAfter, $upgradedStateData->getState(self::TEST_PROPERTY_2)?->getValue()); } private function prepareRemapPropertyValueSchema(BlockStateUpgradeSchema $schema) : void{ @@ -193,7 +192,7 @@ class BlockStateUpgraderTest extends TestCase{ $upgradedStateData = $this->upgrade($getStateData(), $getStateData); - self::assertSame($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY)?->getValue(), $valueAfter); + self::assertSame($upgradedStateData->getState(self::TEST_PROPERTY)?->getValue(), $valueAfter); } /** @@ -207,7 +206,7 @@ class BlockStateUpgraderTest extends TestCase{ $upgradedStateData = $this->upgrade($getStateData(), $getStateData); - self::assertSame($upgradedStateData->getStates()->getTag(self::TEST_PROPERTY_2)?->getValue(), $valueAfter); + self::assertSame($upgradedStateData->getState(self::TEST_PROPERTY_2)?->getValue(), $valueAfter); } /** @@ -228,7 +227,7 @@ class BlockStateUpgraderTest extends TestCase{ $getStateData = fn() => new BlockStateData( self::TEST_BLOCK, - CompoundTag::create(), + [], $stateVersion ); diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index b41c1334a..2bcee5a13 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -62,7 +62,7 @@ $reportMap = []; foreach($states as $state){ $name = $state->getName(); $reportMap[$name] ??= []; - foreach($state->getStates() as $propertyName => $value){ + foreach(Utils::stringifyKeys($state->getStates()) as $propertyName => $value){ if($value instanceof IntTag || $value instanceof StringTag){ $rawValue = $value->getValue(); }elseif($value instanceof ByteTag){ diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index 03b768323..db13f00e5 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -97,8 +97,8 @@ function processState(BlockStateData $old, BlockStateData $new, BlockStateUpgrad $propertyRemoved = []; $propertyAdded = []; - foreach($oldStates as $propertyName => $oldProperty){ - $newProperty = $newStates->getTag($propertyName); + foreach(Utils::stringifyKeys($oldStates) as $propertyName => $oldProperty){ + $newProperty = $new->getState($propertyName); if($newProperty === null){ $propertyRemoved[$propertyName] = $oldProperty; }elseif(!$newProperty->equals($oldProperty)){ @@ -112,8 +112,8 @@ function processState(BlockStateData $old, BlockStateData $new, BlockStateUpgrad } } - foreach($newStates as $propertyName => $value){ - if($oldStates->getTag($propertyName) === null){ + foreach(Utils::stringifyKeys($newStates) as $propertyName => $value){ + if($old->getState($propertyName) === null){ $propertyAdded[$propertyName] = $value; } } @@ -179,9 +179,9 @@ function processState(BlockStateData $old, BlockStateData $new, BlockStateUpgrad } }else{ $result->remappedStates[$oldName][] = new BlockStateUpgradeSchemaBlockRemap( - $oldStates->getValue(), + $oldStates, $new->getName(), - $newStates->getValue() + $newStates ); \GlobalLogger::get()->warning("warning: multiple properties added and removed for $oldName; added full state remap");; } @@ -231,11 +231,11 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad }else{ //block mapped to multiple different new IDs; we can't guess these, so we just do a plain old remap foreach($blockStateMappings as $mapping){ - if($mapping->old->getName() !== $mapping->new->getName() || !$mapping->old->getStates()->equals($mapping->new->getStates())){ + if(!$mapping->old->equals($mapping->new)){ $result->remappedStates[$mapping->old->getName()][] = new BlockStateUpgradeSchemaBlockRemap( - $mapping->old->getStates()->getValue(), + $mapping->old->getStates(), $mapping->new->getName(), - $mapping->new->getStates()->getValue() + $mapping->new->getStates() ); } } From 9ffee7cfc3b5033756c3d9b8be24e3fce853722b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 16:30:59 +0100 Subject: [PATCH 316/692] always the CS ... --- src/crafting/CraftingManagerFromDataHelper.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 21e47a1e8..a5680defd 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -39,7 +39,6 @@ use pocketmine\data\SavedDataLoadingException; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\item\Item; use pocketmine\nbt\LittleEndianNbtSerializer; -use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; From 99ff78a8a56405a3ffe191625b584c25381662e2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 18:57:32 +0100 Subject: [PATCH 317/692] Updated BedrockData --- composer.lock | 8 +- .../CraftingManagerFromDataHelper.php | 87 +++++++++---------- src/crafting/json/RecipeIngredientData.php | 6 +- 3 files changed, 46 insertions(+), 55 deletions(-) diff --git a/composer.lock b/composer.lock index 4e2daae37..be1171420 100644 --- a/composer.lock +++ b/composer.lock @@ -280,12 +280,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "01948a627448395d9946c2e6a5e8332a8456eaa0" + "reference": "301bf7ebe55920e2885e04dd85d8043307aa94c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/01948a627448395d9946c2e6a5e8332a8456eaa0", - "reference": "01948a627448395d9946c2e6a5e8332a8456eaa0", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/301bf7ebe55920e2885e04dd85d8043307aa94c0", + "reference": "301bf7ebe55920e2885e04dd85d8043307aa94c0", "shasum": "" }, "type": "library", @@ -298,7 +298,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-07-04T16:59:39+00:00" + "time": "2022-07-09T17:43:03+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index a5680defd..74fe74a7f 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -39,8 +39,6 @@ use pocketmine\data\SavedDataLoadingException; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\item\Item; use pocketmine\nbt\LittleEndianNbtSerializer; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; -use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalItemDataHandlers; use Webmozart\PathUtil\Path; @@ -53,39 +51,6 @@ use function json_decode; final class CraftingManagerFromDataHelper{ - private static function deserializeItemStackFromNameMeta(string $name, int $meta) : ?Item{ - $blockName = BlockItemIdMap::getInstance()->lookupBlockId($name); - if($blockName !== null){ - $blockStateDictionary = RuntimeBlockMapping::getInstance()->getBlockStateDictionary(); - $blockRuntimeId = $blockStateDictionary->lookupStateIdFromIdMeta($name, $meta === RecipeIngredientData::WILDCARD_META_VALUE ? 0 : $meta); - if($blockRuntimeId === null){ - throw new SavedDataLoadingException("$blockName with meta $meta doesn't map to any known blockstate"); - } - $blockStateData = $blockStateDictionary->getDataFromStateId($blockRuntimeId); - if($blockStateData === null){ - throw new AssumptionFailedError("We just looked up the runtime ID for this state, so it can't possibly be null"); - } - }else{ - $blockStateData = null; - } - - //TODO: for wildcards, we only need a way to check if the item serializer recognizes the ID; we don't need to - //deserialize the whole itemstack, which might give bogus results anyway if meta 0 isn't recognized - $itemTypeData = new SavedItemData( - $name, - $meta === RecipeIngredientData::WILDCARD_META_VALUE ? 0 : $meta, - $blockStateData, - null - ); - - try{ - return GlobalItemDataHandlers::getDeserializer()->deserializeType($itemTypeData); - }catch(ItemTypeDeserializeException){ - //probably unknown item - return null; - } - } - private static function deserializeIngredient(RecipeIngredientData $data) : ?RecipeIngredient{ if(isset($data->count) && $data->count !== 1){ //every case we've seen so far where this isn't the case, it's been a bug and the count was ignored anyway @@ -93,26 +58,50 @@ final class CraftingManagerFromDataHelper{ throw new SavedDataLoadingException("Recipe inputs should have a count of exactly 1"); } - $itemStack = self::deserializeItemStackFromNameMeta($data->name, $data->meta); + $meta = $data->meta ?? null; + if($meta === RecipeIngredientData::WILDCARD_META_VALUE){ + //this could be an unimplemented item, but it doesn't really matter, since the item shouldn't be able to + //be obtained anyway - filtering unknown items is only really important for outputs, to prevent players + //obtaining them + return new MetaWildcardRecipeIngredient($data->name); + } + + $itemStack = self::deserializeItemStackFromFields( + $data->name, + $meta, + $data->count ?? null, + $data->block_states ?? null, + null, + [], + [] + ); if($itemStack === null){ //probably unknown item return null; } - return $data->meta === RecipeIngredientData::WILDCARD_META_VALUE ? - new MetaWildcardRecipeIngredient($data->name) : - new ExactRecipeIngredient($itemStack); + return new ExactRecipeIngredient($itemStack); } public static function deserializeItemStack(ItemStackData $data) : ?Item{ //count, name, block_name, block_states, meta, nbt, can_place_on, can_destroy - $name = $data->name; - $meta = $data->meta ?? 0; - $count = $data->count ?? 1; + return self::deserializeItemStackFromFields( + $data->name, + $data->meta ?? null, + $data->count ?? null, + $data->block_states ?? null, + $data->nbt ?? null, + $data->can_place_on ?? [], + $data->can_destroy ?? [] + ); + } - $blockStatesRaw = $data->block_states ?? null; - $nbtRaw = $data->nbt ?? null; - $canPlaceOn = $data->can_place_on ?? []; - $canDestroy = $data->can_destroy ?? []; + /** + * @param string[] $canPlaceOn + * @param string[] $canDestroy + */ + private static function deserializeItemStackFromFields(string $name, ?int $meta, ?int $count, ?string $blockStatesRaw, ?string $nbtRaw, array $canPlaceOn, array $canDestroy) : ?Item{ + $meta ??= 0; + $count ??= 1; $blockName = BlockItemIdMap::getInstance()->lookupBlockId($name); if($blockName !== null){ @@ -325,7 +314,11 @@ final class CraftingManagerFromDataHelper{ $inputId = $recipe->input_item_name; $outputId = $recipe->output_item_name; - if(self::deserializeItemStackFromNameMeta($inputId, 0) === null || self::deserializeItemStackFromNameMeta($outputId, 0) === null){ + //TODO: this is a really awful way to just check if an ID is recognized ... + if( + self::deserializeItemStackFromFields($inputId, null, null, null, null, [], []) === null || + self::deserializeItemStackFromFields($outputId, null, null, null, null, [], []) === null + ){ //unknown item continue; } diff --git a/src/crafting/json/RecipeIngredientData.php b/src/crafting/json/RecipeIngredientData.php index ece2a6f62..f0d4ceb0c 100644 --- a/src/crafting/json/RecipeIngredientData.php +++ b/src/crafting/json/RecipeIngredientData.php @@ -28,13 +28,11 @@ final class RecipeIngredientData{ /** @required */ public string $name; - /** @required */ public int $meta; - + public string $block_states; public int $count; - public function __construct(string $name, int $meta){ + public function __construct(string $name){ $this->name = $name; - $this->meta = $meta; } } From ad7528e3f30061248477b103696ff851bdac0d08 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 20:00:10 +0100 Subject: [PATCH 318/692] Added warped wart blocks, gilded blackstone and crying obsidian --- src/block/BlockTypeIds.php | 5 ++- src/block/GildedBlackstone.php | 40 +++++++++++++++++++ src/block/VanillaBlocks.php | 10 +++++ .../BlockObjectToBlockStateSerializer.php | 3 ++ .../BlockStateToBlockObjectDeserializer.php | 3 ++ src/item/StringToItemParser.php | 3 ++ .../block_factory_consistency_check.json | 2 +- 7 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/block/GildedBlackstone.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 567f10736..d29ed8ce7 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -676,6 +676,9 @@ final class BlockTypeIds{ public const MUD_BRICK_STAIRS = 10649; public const MUD_BRICK_WALL = 10650; public const PACKED_MUD = 10651; + public const WARPED_WART_BLOCK = 10652; + public const CRYING_OBSIDIAN = 10653; + public const GILDED_BLACKSTONE = 10654; - public const FIRST_UNUSED_BLOCK_ID = 10652; + public const FIRST_UNUSED_BLOCK_ID = 10655; } diff --git a/src/block/GildedBlackstone.php b/src/block/GildedBlackstone.php new file mode 100644 index 000000000..434bddaaa --- /dev/null +++ b/src/block/GildedBlackstone.php @@ -0,0 +1,40 @@ +setCount(mt_rand(2, 5))]; + } + + return parent::getDropsForCompatibleTool($item); + } + + public function isAffectedBySilkTouch() : bool{ return true; } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 6f36093df..e8792787e 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -188,6 +188,7 @@ use function mb_strtolower; * @method static Wood CRIMSON_STEM() * @method static WoodenTrapdoor CRIMSON_TRAPDOOR() * @method static WallSign CRIMSON_WALL_SIGN() + * @method static Opaque CRYING_OBSIDIAN() * @method static Opaque CUT_RED_SANDSTONE() * @method static Slab CUT_RED_SANDSTONE_SLAB() * @method static Opaque CUT_SANDSTONE() @@ -381,6 +382,7 @@ use function mb_strtolower; * @method static FlowerPot FLOWER_POT() * @method static FrostedIce FROSTED_ICE() * @method static Furnace FURNACE() + * @method static GildedBlackstone GILDED_BLACKSTONE() * @method static Glass GLASS() * @method static GlassPane GLASS_PANE() * @method static GlazedTerracotta GLAZED_TERRACOTTA() @@ -679,6 +681,7 @@ use function mb_strtolower; * @method static Wood WARPED_STEM() * @method static WoodenTrapdoor WARPED_TRAPDOOR() * @method static WallSign WARPED_WALL_SIGN() + * @method static Opaque WARPED_WART_BLOCK() * @method static Water WATER() * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() @@ -1367,6 +1370,8 @@ final class VanillaBlocks{ self::register("blackstone_stairs", new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); self::register("blackstone_wall", new Wall(new BID(Ids::BLACKSTONE_WALL), "Blackstone Wall", $blackstoneBreakInfo)); + self::register("gilded_blackstone", new GildedBlackstone(new BID(Ids::GILDED_BLACKSTONE), "Gilded Blackstone", $blackstoneBreakInfo)); + //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); self::register("polished_blackstone", new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); @@ -1393,6 +1398,11 @@ final class VanillaBlocks{ self::register("shroomlight", new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ public function getLightLevel() : int{ return 15; } }); + + self::register("warped_wart_block", new Opaque(new BID(Ids::WARPED_WART_BLOCK), "Warped Wart Block", new BreakInfo(1.0, ToolType::HOE))); + self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", new BreakInfo(35.0 /* 50 in Java */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel())) extends Opaque{ + public function getLightLevel() : int{ return 10;} + }); } private static function registerBlocksR17() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 2b9fafa8d..87770e2ea 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -472,6 +472,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); $this->map(Blocks::CRIMSON_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::CRIMSON_WALL_SIGN))); + $this->mapSimple(Blocks::CRYING_OBSIDIAN(), Ids::CRYING_OBSIDIAN); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); @@ -707,6 +708,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::AGE, $block->getAge()); }); $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); + $this->mapSimple(Blocks::GILDED_BLACKSTONE(), Ids::GILDED_BLACKSTONE); $this->mapSimple(Blocks::GLASS(), Ids::GLASS); $this->mapSimple(Blocks::GLASS_PANE(), Ids::GLASS_PANE); $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ @@ -1232,6 +1234,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); $this->map(Blocks::WARPED_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WARPED_WALL_SIGN))); + $this->mapSimple(Blocks::WARPED_WART_BLOCK(), Ids::WARPED_WART_BLOCK); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8ab71c317..3584a7b02 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -314,6 +314,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); $this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in)); + $this->map(Ids::CRYING_OBSIDIAN, fn() => Blocks::CRYING_OBSIDIAN()); $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); @@ -578,6 +579,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); + $this->map(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); $this->map(Ids::GLASS, fn() => Blocks::GLASS()); $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); @@ -1187,6 +1189,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), false, $in)); $this->map(Ids::WARPED_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::WARPED_TRAPDOOR(), $in)); $this->map(Ids::WARPED_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::WARPED_WALL_SIGN(), $in)); + $this->map(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); $this->map(Ids::WEB, fn() => Blocks::COBWEB()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index bb94ca31f..af5cf5daa 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -239,6 +239,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("crimson_stairs", fn() => Blocks::CRIMSON_STAIRS()); $result->registerBlock("crimson_stem", fn() => Blocks::CRIMSON_STEM()->setStripped(false)); $result->registerBlock("crimson_trapdoor", fn() => Blocks::CRIMSON_TRAPDOOR()); + $result->registerBlock("crying_obsidian", fn() => Blocks::CRYING_OBSIDIAN()); $result->registerBlock("cut_red_sandstone", fn() => Blocks::CUT_RED_SANDSTONE()); $result->registerBlock("cut_red_sandstone_slab", fn() => Blocks::CUT_RED_SANDSTONE_SLAB()); $result->registerBlock("cut_sandstone", fn() => Blocks::CUT_SANDSTONE()); @@ -593,6 +594,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("frame_block", fn() => Blocks::ITEM_FRAME()); $result->registerBlock("frosted_ice", fn() => Blocks::FROSTED_ICE()); $result->registerBlock("furnace", fn() => Blocks::FURNACE()); + $result->registerBlock("gilded_blackstone", fn() => Blocks::GILDED_BLACKSTONE()); $result->registerBlock("glass", fn() => Blocks::GLASS()); $result->registerBlock("glass_pane", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glass_panel", fn() => Blocks::GLASS_PANE()); @@ -1031,6 +1033,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("warped_stairs", fn() => Blocks::WARPED_STAIRS()); $result->registerBlock("warped_stem", fn() => Blocks::WARPED_STEM()->setStripped(false)); $result->registerBlock("warped_trapdoor", fn() => Blocks::WARPED_TRAPDOOR()); + $result->registerBlock("warped_wart_block", fn() => Blocks::WARPED_WART_BLOCK()); $result->registerBlock("water", fn() => Blocks::WATER()); $result->registerBlock("water_lily", fn() => Blocks::LILY_PAD()); $result->registerBlock("waterlily", fn() => Blocks::LILY_PAD()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 258594e7c..a642beb39 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 5e70ae206682cce16223417df554bc913c2bdb15 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 20:18:22 +0100 Subject: [PATCH 319/692] Added lightning rods --- src/block/BlockTypeIds.php | 3 +- src/block/LightningRod.php | 55 +++++++++++++++++++ src/block/VanillaBlocks.php | 5 ++ .../BlockObjectToBlockStateSerializer.php | 5 ++ .../BlockStateToBlockObjectDeserializer.php | 4 ++ src/item/StringToItemParser.php | 1 + .../block_factory_consistency_check.json | 2 +- 7 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/block/LightningRod.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index d29ed8ce7..34d0716d3 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -679,6 +679,7 @@ final class BlockTypeIds{ public const WARPED_WART_BLOCK = 10652; public const CRYING_OBSIDIAN = 10653; public const GILDED_BLACKSTONE = 10654; + public const LIGHTNING_ROD = 10655; - public const FIRST_UNUSED_BLOCK_ID = 10655; + public const FIRST_UNUSED_BLOCK_ID = 10656; } diff --git a/src/block/LightningRod.php b/src/block/LightningRod.php new file mode 100644 index 000000000..a0dd50542 --- /dev/null +++ b/src/block/LightningRod.php @@ -0,0 +1,55 @@ +facing); + + $result = AxisAlignedBB::one(); + foreach([Axis::X, Axis::Y, Axis::Z] as $axis){ + if($axis !== $myAxis){ + $result->squash($axis, 6 / 16); + } + } + + return [$result]; + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + $this->facing = $face; + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index e8792787e..a3d35552c 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -447,6 +447,7 @@ use function mb_strtolower; * @method static Opaque LEGACY_STONECUTTER() * @method static Lever LEVER() * @method static Light LIGHT() + * @method static LightningRod LIGHTNING_ROD() * @method static DoublePlant LILAC() * @method static Flower LILY_OF_THE_VALLEY() * @method static WaterLily LILY_PAD() @@ -1449,6 +1450,10 @@ final class VanillaBlocks{ self::register("polished_deepslate_wall", new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); + + //blast resistance should be 30 if we were matched with java :( + $copperBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 18.0); + self::register("lightning_rod", new LightningRod(new BID(Ids::LIGHTNING_ROD), "Lightning Rod", $copperBreakInfo)); } private static function registerMudBlocks() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 87770e2ea..49b2f5e41 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -78,6 +78,7 @@ use pocketmine\block\Leaves; use pocketmine\block\Lectern; use pocketmine\block\Lever; use pocketmine\block\Light; +use pocketmine\block\LightningRod; use pocketmine\block\LitPumpkin; use pocketmine\block\Loom; use pocketmine\block\MelonStem; @@ -842,6 +843,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LIGHT_BLOCK) ->writeInt(StateNames::BLOCK_LIGHT_LEVEL, $block->getLightLevel()); }); + $this->map(Blocks::LIGHTNING_ROD(), function(LightningRod $block) : Writer{ + return Writer::create(Ids::LIGHTNING_ROD) + ->writeFacingDirection($block->getFacing()); + }); $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); $this->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 3584a7b02..76b27d4c4 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -692,6 +692,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::LIGHT() ->setLightLevel($in->readBoundedInt(StateNames::BLOCK_LIGHT_LEVEL, Light::MIN_LIGHT_LEVEL, Light::MAX_LIGHT_LEVEL)); }); + $this->map(Ids::LIGHTNING_ROD, function(Reader $in) : Block{ + return Blocks::LIGHTNING_ROD() + ->setFacing($in->readFacingDirection()); + }); $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index af5cf5daa..2c134fafb 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -695,6 +695,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("light", fn() => Blocks::LIGHT()); $result->registerBlock("light_block", fn() => Blocks::LIGHT()); $result->registerBlock("light_weighted_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); + $result->registerBlock("lightning_rod", fn() => Blocks::LIGHTNING_ROD()); $result->registerBlock("lilac", fn() => Blocks::LILAC()); $result->registerBlock("lily_of_the_valley", fn() => Blocks::LILY_OF_THE_VALLEY()); $result->registerBlock("lily_pad", fn() => Blocks::LILY_PAD()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index a642beb39..365e84955 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From a44c089f98942ad30cab49452dcf65e2e99537e8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 9 Jul 2022 20:40:18 +0100 Subject: [PATCH 320/692] REEEEEEEEEEEEEE --- src/block/GildedBlackstone.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/block/GildedBlackstone.php b/src/block/GildedBlackstone.php index 434bddaaa..e01d6bfdc 100644 --- a/src/block/GildedBlackstone.php +++ b/src/block/GildedBlackstone.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\item\Item; use pocketmine\item\VanillaItems; +use function mt_rand; final class GildedBlackstone extends Opaque{ From 260e54e4b1d0d6e94bde41e8182e4db301e03336 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 10 Jul 2022 00:18:35 +0100 Subject: [PATCH 321/692] Skeleton for copper blocks, stairs and slabs --- build/generate-runtime-enum-serializers.php | 2 + src/block/BlockTypeIds.php | 6 +- src/block/Copper.php | 30 +++++++ src/block/CopperSlab.php | 30 +++++++ src/block/CopperStairs.php | 30 +++++++ src/block/VanillaBlocks.php | 9 +++ src/block/utils/CopperOxidation.php | 79 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 77 ++++++++++++++++++ .../convert/BlockStateDeserializerHelper.php | 28 +++++++ .../convert/BlockStateSerializerHelper.php | 12 +++ .../BlockStateToBlockObjectDeserializer.php | 33 ++++++++ src/data/runtime/RuntimeEnumDeserializer.php | 10 +++ src/data/runtime/RuntimeEnumSerializer.php | 10 +++ src/item/StringToItemParser.php | 13 +++ .../block_factory_consistency_check.json | 2 +- 15 files changed, 369 insertions(+), 2 deletions(-) create mode 100644 src/block/Copper.php create mode 100644 src/block/CopperSlab.php create mode 100644 src/block/CopperStairs.php create mode 100644 src/block/utils/CopperOxidation.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index f3bd39abe..322a62fb0 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\build\generate_runtime_enum_serializers; use pocketmine\block\utils\BellAttachmentType; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; @@ -154,6 +155,7 @@ function buildEnumReaderFunc(array $enumMembers, string &$functionName) : array{ $enumsUsed = [ BellAttachmentType::getAll(), + CopperOxidation::getAll(), CoralType::getAll(), DyeColor::getAll(), LeverFacing::getAll(), diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 34d0716d3..d0baee61b 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -680,6 +680,10 @@ final class BlockTypeIds{ public const CRYING_OBSIDIAN = 10653; public const GILDED_BLACKSTONE = 10654; public const LIGHTNING_ROD = 10655; + public const COPPER = 10656; + public const CUT_COPPER = 10657; + public const CUT_COPPER_SLAB = 10658; + public const CUT_COPPER_STAIRS = 10659; - public const FIRST_UNUSED_BLOCK_ID = 10656; + public const FIRST_UNUSED_BLOCK_ID = 10660; } diff --git a/src/block/Copper.php b/src/block/Copper.php new file mode 100644 index 000000000..1da253fa4 --- /dev/null +++ b/src/block/Copper.php @@ -0,0 +1,30 @@ +getHarvestLevel(), 18.0); self::register("lightning_rod", new LightningRod(new BID(Ids::LIGHTNING_ROD), "Lightning Rod", $copperBreakInfo)); + + self::register("copper", new Copper(new BID(Ids::COPPER), "Copper Block", $copperBreakInfo)); + self::register("cut_copper", new Copper(new BID(Ids::CUT_COPPER), "Cut Copper Block", $copperBreakInfo)); + self::register("cut_copper_slab", new CopperSlab(new BID(Ids::CUT_COPPER_SLAB), "Cut Copper Slab", $copperBreakInfo)); + self::register("cut_copper_stairs", new CopperStairs(new BID(Ids::CUT_COPPER_STAIRS), "Cut Copper Stairs", $copperBreakInfo)); } private static function registerMudBlocks() : void{ diff --git a/src/block/utils/CopperOxidation.php b/src/block/utils/CopperOxidation.php new file mode 100644 index 000000000..8278819a7 --- /dev/null +++ b/src/block/utils/CopperOxidation.php @@ -0,0 +1,79 @@ +value] = $member; + } + + /** + * @var self[] + * @phpstan-var array + */ + private static array $levelMap = []; + + private function __construct( + string $name, + private int $value + ){ + $this->Enum___construct($name); + } + + public function getPrevious() : ?self{ + return self::$levelMap[$this->value - 1] ?? null; + } + + public function getNext() : ?self{ + return self::$levelMap[$this->value + 1] ?? null; + } +} diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 49b2f5e41..16a566bd1 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -47,6 +47,9 @@ use pocketmine\block\Chest; use pocketmine\block\CocoaBlock; use pocketmine\block\Concrete; use pocketmine\block\ConcretePowder; +use pocketmine\block\Copper; +use pocketmine\block\CopperSlab; +use pocketmine\block\CopperStairs; use pocketmine\block\Coral; use pocketmine\block\CoralBlock; use pocketmine\block\DaylightSensor; @@ -419,6 +422,80 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); $this->mapSimple(Blocks::COBWEB(), Ids::WEB); + $this->map(Blocks::COPPER(), function(Copper $block) : Writer{ + $oxidation = $block->getOxidation(); + return new Writer($block->isWaxed() ? + Helper::selectCopperId($oxidation, Ids::WAXED_COPPER, Ids::WAXED_EXPOSED_COPPER, Ids::WAXED_WEATHERED_COPPER, Ids::WAXED_OXIDIZED_COPPER) : + Helper::selectCopperId($oxidation, Ids::COPPER_BLOCK, Ids::EXPOSED_COPPER, Ids::WEATHERED_COPPER, Ids::OXIDIZED_COPPER) + ); + }); + $this->map(Blocks::CUT_COPPER(), function(Copper $block) : Writer{ + $oxidation = $block->getOxidation(); + return new Writer($block->isWaxed() ? + Helper::selectCopperId($oxidation, Ids::WAXED_CUT_COPPER, Ids::WAXED_EXPOSED_CUT_COPPER, Ids::WAXED_WEATHERED_CUT_COPPER, Ids::WAXED_OXIDIZED_CUT_COPPER) : + Helper::selectCopperId($oxidation, Ids::CUT_COPPER, Ids::EXPOSED_CUT_COPPER, Ids::WEATHERED_CUT_COPPER, Ids::OXIDIZED_CUT_COPPER) + ); + }); + $this->map(Blocks::CUT_COPPER_SLAB(), function(CopperSlab $block) : Writer{ + $oxidation = $block->getOxidation(); + return Helper::encodeSlab( + $block, + ($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_CUT_COPPER_SLAB, + Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, + Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, + Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB + ) : + Helper::selectCopperId( + $oxidation, + Ids::CUT_COPPER_SLAB, + Ids::EXPOSED_CUT_COPPER_SLAB, + Ids::WEATHERED_CUT_COPPER_SLAB, + Ids::OXIDIZED_CUT_COPPER_SLAB + ) + ), + ($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB + ) : + Helper::selectCopperId( + $oxidation, + Ids::DOUBLE_CUT_COPPER_SLAB, + Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, + Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, + Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB + ) + ) + ); + }); + $this->map(Blocks::CUT_COPPER_STAIRS(), function(CopperStairs $block) : Writer{ + $oxidation = $block->getOxidation(); + return Helper::encodeStairs( + $block, + new Writer($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_CUT_COPPER_STAIRS, + Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, + Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, + Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS + ) : + Helper::selectCopperId( + $oxidation, + Ids::CUT_COPPER_STAIRS, + Ids::EXPOSED_CUT_COPPER_STAIRS, + Ids::WEATHERED_CUT_COPPER_STAIRS, + Ids::OXIDIZED_CUT_COPPER_STAIRS + ) + ) + ); + }); $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ return Writer::create(Ids::COCOA) ->writeInt(StateNames::AGE, $block->getAge()) diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index e7ebc5185..993390e9e 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -25,6 +25,9 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Block; use pocketmine\block\Button; +use pocketmine\block\Copper; +use pocketmine\block\CopperSlab; +use pocketmine\block\CopperStairs; use pocketmine\block\Crops; use pocketmine\block\DaylightSensor; use pocketmine\block\Door; @@ -41,6 +44,7 @@ use pocketmine\block\Slab; use pocketmine\block\Stair; use pocketmine\block\Stem; use pocketmine\block\Trapdoor; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; @@ -85,6 +89,30 @@ final class BlockStateDeserializerHelper{ ->setSubtractMode($in->readBool(BlockStateNames::OUTPUT_SUBTRACT_BIT)); } + /** + * @phpstan-template TBlock of Copper|CopperSlab|CopperStairs + * + * @phpstan-param TBlock $block + * @phpstan-return TBlock + */ + public static function decodeCopper(Copper|CopperSlab|CopperStairs $block, CopperOxidation $oxidation) : Copper|CopperSlab|CopperStairs{ + $block->setOxidation($oxidation); + $block->setWaxed(false); + return $block; + } + + /** + * @phpstan-template TBlock of Copper|CopperSlab|CopperStairs + * + * @phpstan-param TBlock $block + * @phpstan-return TBlock + */ + public static function decodeWaxedCopper(Copper|CopperSlab|CopperStairs $block, CopperOxidation $oxidation) : Copper|CopperSlab|CopperStairs{ + $block->setOxidation($oxidation); + $block->setWaxed(true); + return $block; + } + /** @throws BlockStateDeserializeException */ public static function decodeDaylightSensor(DaylightSensor $block, BlockStateReader $in) : DaylightSensor{ return $block diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 9ef70b361..bc6b1aec9 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -41,6 +41,7 @@ use pocketmine\block\Stair; use pocketmine\block\Stem; use pocketmine\block\Torch; use pocketmine\block\Trapdoor; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\SlabType; use pocketmine\block\Wall; use pocketmine\block\WallSign; @@ -49,6 +50,7 @@ use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Facing; +use pocketmine\utils\AssumptionFailedError; final class BlockStateSerializerHelper{ @@ -81,6 +83,16 @@ final class BlockStateSerializerHelper{ ->writeTorchFacing($block->getFacing()); } + public static function selectCopperId(CopperOxidation $oxidation, string $noneId, string $exposedId, string $weatheredId, string $oxidizedId) : string{ + return match($oxidation){ + CopperOxidation::NONE() => $noneId, + CopperOxidation::EXPOSED() => $exposedId, + CopperOxidation::WEATHERED() => $weatheredId, + CopperOxidation::OXIDIZED() => $oxidizedId, + default => throw new AssumptionFailedError("Unhandled copper oxidation " . $oxidation->name()) + }; + } + public static function encodeDoor(Door $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeBool(BlockStateNames::UPPER_BLOCK_BIT, $block->isTop()) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 76b27d4c4..f4bc6ca71 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -30,6 +30,7 @@ use pocketmine\block\Slab; use pocketmine\block\Stair; use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; @@ -270,6 +271,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CONCRETE_POWDER() ->setColor($in->readColor()); }); + $this->map(Ids::COPPER_BLOCK, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::NONE())); + $this->map(Ids::CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::NONE())); + $this->mapSlab(Ids::CUT_COPPER_SLAB, Ids::DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::NONE())); + $this->mapStairs(Ids::CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::NONE())); $this->map(Ids::COPPER_ORE, fn() => Blocks::COPPER_ORE()); $this->map(Ids::CORAL, function(Reader $in) : Block{ return Blocks::CORAL() @@ -537,6 +542,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::ENDER_CHEST() ->setFacing($in->readHorizontalFacing()); }); + $this->map(Ids::EXPOSED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::EXPOSED())); + $this->map(Ids::EXPOSED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::EXPOSED())); + $this->mapSlab(Ids::EXPOSED_CUT_COPPER_SLAB, Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::EXPOSED())); + $this->mapStairs(Ids::EXPOSED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::EXPOSED())); $this->map(Ids::FARMLAND, function(Reader $in) : Block{ return Blocks::FARMLAND() ->setWetness($in->readBoundedInt(StateNames::MOISTURIZED_AMOUNT, 0, 7)); @@ -799,6 +808,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS()); $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); + $this->map(Ids::OXIDIZED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED())); + $this->map(Ids::OXIDIZED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED())); + $this->mapSlab(Ids::OXIDIZED_CUT_COPPER_SLAB, Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED())); + $this->mapStairs(Ids::OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED())); $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); $this->map(Ids::PLANKS, function(Reader $in) : Block{ @@ -1196,6 +1209,26 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); + $this->map(Ids::WAXED_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::COPPER(), CopperOxidation::NONE())); + $this->map(Ids::WAXED_CUT_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER(), CopperOxidation::NONE())); + $this->mapSlab(Ids::WAXED_CUT_COPPER_SLAB, Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::NONE())); + $this->mapStairs(Ids::WAXED_CUT_COPPER_STAIRS, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::NONE())); + $this->map(Ids::WAXED_EXPOSED_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::COPPER(), CopperOxidation::EXPOSED())); + $this->map(Ids::WAXED_EXPOSED_CUT_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER(), CopperOxidation::EXPOSED())); + $this->mapSlab(Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::EXPOSED())); + $this->mapStairs(Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::EXPOSED())); + $this->map(Ids::WAXED_OXIDIZED_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED())); + $this->map(Ids::WAXED_OXIDIZED_CUT_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED())); + $this->mapSlab(Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB, Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED())); + $this->mapStairs(Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED())); + $this->map(Ids::WAXED_WEATHERED_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::COPPER(), CopperOxidation::WEATHERED())); + $this->map(Ids::WAXED_WEATHERED_CUT_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER(), CopperOxidation::WEATHERED())); + $this->mapSlab(Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::WEATHERED())); + $this->mapStairs(Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::WEATHERED())); + $this->map(Ids::WEATHERED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::WEATHERED())); + $this->map(Ids::WEATHERED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::WEATHERED())); + $this->mapSlab(Ids::WEATHERED_CUT_COPPER_SLAB, Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::WEATHERED())); + $this->mapStairs(Ids::WEATHERED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::WEATHERED())); $this->map(Ids::WEB, fn() => Blocks::COBWEB()); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); diff --git a/src/data/runtime/RuntimeEnumDeserializer.php b/src/data/runtime/RuntimeEnumDeserializer.php index f5835f962..fe20039d6 100644 --- a/src/data/runtime/RuntimeEnumDeserializer.php +++ b/src/data/runtime/RuntimeEnumDeserializer.php @@ -39,6 +39,16 @@ final class RuntimeEnumDeserializer{ }; } + public static function readCopperOxidation(RuntimeDataReader $r) : \pocketmine\block\utils\CopperOxidation{ + return match($r->readInt(2)){ + 0 => \pocketmine\block\utils\CopperOxidation::EXPOSED(), + 1 => \pocketmine\block\utils\CopperOxidation::NONE(), + 2 => \pocketmine\block\utils\CopperOxidation::OXIDIZED(), + 3 => \pocketmine\block\utils\CopperOxidation::WEATHERED(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for CopperOxidation") + }; + } + public static function readCoralType(RuntimeDataReader $r) : \pocketmine\block\utils\CoralType{ return match($r->readInt(3)){ 0 => \pocketmine\block\utils\CoralType::BRAIN(), diff --git a/src/data/runtime/RuntimeEnumSerializer.php b/src/data/runtime/RuntimeEnumSerializer.php index 1b942d0a1..53593588f 100644 --- a/src/data/runtime/RuntimeEnumSerializer.php +++ b/src/data/runtime/RuntimeEnumSerializer.php @@ -39,6 +39,16 @@ final class RuntimeEnumSerializer{ }); } + public static function writeCopperOxidation(RuntimeDataWriter $w, \pocketmine\block\utils\CopperOxidation $value) : void{ + $w->writeInt(2, match($value){ + \pocketmine\block\utils\CopperOxidation::EXPOSED() => 0, + \pocketmine\block\utils\CopperOxidation::NONE() => 1, + \pocketmine\block\utils\CopperOxidation::OXIDIZED() => 2, + \pocketmine\block\utils\CopperOxidation::WEATHERED() => 3, + default => throw new \pocketmine\utils\AssumptionFailedError("All CopperOxidation cases should be covered") + }); + } + public static function writeCoralType(RuntimeDataWriter $w, \pocketmine\block\utils\CoralType $value) : void{ $w->writeInt(3, match($value){ \pocketmine\block\utils\CoralType::BRAIN() => 0, diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 2c134fafb..a38d5e61c 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -25,6 +25,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\Light; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; @@ -77,6 +78,18 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("light_block_$i", fn() => Blocks::LIGHT()->setLightLevel($i)); } + foreach(CopperOxidation::getAll() as $oxidation){ + $oxPrefix = $oxidation->equals(CopperOxidation::NONE()) ? "" : $oxidation->name() . "_"; + + foreach(["" => false, "waxed_" => true] as $waxedPrefix => $waxed){ + $prefix = $waxedPrefix . $oxPrefix; + $result->registerBlock($prefix . "copper_block", fn() => Blocks::COPPER()->setOxidation($oxidation)->setWaxed($waxed)); + $result->registerBlock($prefix . "cut_copper_block", fn() => Blocks::CUT_COPPER()->setOxidation($oxidation)->setWaxed($waxed)); + $result->registerBlock($prefix . "cut_copper_stairs", fn() => Blocks::CUT_COPPER_STAIRS()->setOxidation($oxidation)->setWaxed($waxed)); + $result->registerBlock($prefix . "cut_copper_slab", fn() => Blocks::CUT_COPPER_SLAB()->setOxidation($oxidation)->setWaxed($waxed)); + } + } + $result->registerBlock("acacia_button", fn() => Blocks::ACACIA_BUTTON()); $result->registerBlock("acacia_door", fn() => Blocks::ACACIA_DOOR()); $result->registerBlock("acacia_door_block", fn() => Blocks::ACACIA_DOOR()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 365e84955..9324b8d13 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From a22276e679b123dacc144f13fff489c33c66a1c9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 10 Jul 2022 00:19:27 +0100 Subject: [PATCH 322/692] there's always one ... --- src/block/utils/CopperTrait.php | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/block/utils/CopperTrait.php diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php new file mode 100644 index 000000000..c001657fc --- /dev/null +++ b/src/block/utils/CopperTrait.php @@ -0,0 +1,62 @@ +oxidation = RuntimeEnumDeserializer::readCopperOxidation($r); + $this->waxed = $r->readBool(); + } + + protected function encodeType(RuntimeDataWriter $w) : void{ + RuntimeEnumSerializer::writeCopperOxidation($w, $this->oxidation); + $w->writeBool($this->waxed); + } + + public function getOxidation() : CopperOxidation{ return $this->oxidation; } + + /** @return $this */ + public function setOxidation(CopperOxidation $oxidation) : self{ + $this->oxidation = $oxidation; + return $this; + } + + public function isWaxed() : bool{ return $this->waxed; } + + /** @return $this */ + public function setWaxed(bool $waxed) : self{ + $this->waxed = $waxed; + return $this; + } +} From 14933a731be18690cebc5db95c2010d5209bb2b0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 10 Jul 2022 01:00:13 +0100 Subject: [PATCH 323/692] Implement copper waxing, unwaxing and scraping, minus particles there is a LevelEvent for the particles, but it's both particle and sound, which doesn't integrate well with the existing API. --- src/block/utils/CopperTrait.php | 42 ++++++++++++++++++++++++ src/world/sound/CopperWaxApplySound.php | 34 +++++++++++++++++++ src/world/sound/CopperWaxRemoveSound.php | 34 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 src/world/sound/CopperWaxApplySound.php create mode 100644 src/world/sound/CopperWaxRemoveSound.php diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index c001657fc..e30afe69f 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -27,6 +27,14 @@ use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\data\runtime\RuntimeEnumDeserializer; use pocketmine\data\runtime\RuntimeEnumSerializer; +use pocketmine\item\Axe; +use pocketmine\item\Item; +use pocketmine\item\ItemTypeIds; +use pocketmine\math\Vector3; +use pocketmine\player\Player; +use pocketmine\world\sound\CopperWaxApplySound; +use pocketmine\world\sound\CopperWaxRemoveSound; +use pocketmine\world\sound\ItemUseOnBlockSound; trait CopperTrait{ private CopperOxidation $oxidation; @@ -59,4 +67,38 @@ trait CopperTrait{ $this->waxed = $waxed; return $this; } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->waxed && $item->getTypeId() === ItemTypeIds::HONEYCOMB){ + $this->waxed = true; + $this->position->getWorld()->setBlock($this->position, $this); + //TODO: orange particles are supposed to appear when applying wax + $this->position->getWorld()->addSound($this->position, new CopperWaxApplySound()); + $item->pop(); + return true; + } + + if($item instanceof Axe){ + if($this->waxed){ + $this->waxed = false; + $this->position->getWorld()->setBlock($this->position, $this); + //TODO: white particles are supposed to appear when removing wax + $this->position->getWorld()->addSound($this->position, new CopperWaxRemoveSound()); + $item->applyDamage(1); + return true; + } + + $previousOxidation = $this->oxidation->getPrevious(); + if($previousOxidation !== null){ + $this->oxidation = $previousOxidation; + $this->position->getWorld()->setBlock($this->position, $this); + //TODO: turquoise particles are supposed to appear when removing oxidation + $this->position->getWorld()->addSound($this->position, new ItemUseOnBlockSound($this)); + $item->applyDamage(1); + return true; + } + } + + return false; + } } diff --git a/src/world/sound/CopperWaxApplySound.php b/src/world/sound/CopperWaxApplySound.php new file mode 100644 index 000000000..3775fa70c --- /dev/null +++ b/src/world/sound/CopperWaxApplySound.php @@ -0,0 +1,34 @@ + Date: Sun, 10 Jul 2022 17:41:01 +0100 Subject: [PATCH 324/692] RuntimeBlockMapping: avoid keeping two copies of the same blockstate data in memory --- src/network/mcpe/convert/RuntimeBlockMapping.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index e0acc2430..c5945e28d 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -66,8 +66,11 @@ final class RuntimeBlockMapping{ private BlockStateDictionary $blockStateDictionary, private BlockStateSerializer $blockStateSerializer ){ - $this->fallbackStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); - $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData($this->fallbackStateData) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); + $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData( + new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION) + ) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); + //lookup the state data from the dictionary to avoid keeping two copies of the same data around + $this->fallbackStateData = $this->blockStateDictionary->getDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); } public function toRuntimeId(int $internalStateId) : int{ From 32f9fcd4e9f0b529bd6018362f6b82f732bd74c1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 13 Jul 2022 16:38:37 +0100 Subject: [PATCH 325/692] Ignore coral_hang_type_bit on coral_fan_hang3 it's always written, but never used. --- .../block/convert/BlockStateToBlockObjectDeserializer.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f4bc6ca71..62da377d5 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -295,9 +295,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CORAL_FAN_HANG2, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); $this->map(Ids::CORAL_FAN_HANG3, function(Reader $in) : Block{ - if($in->readBool(StateNames::CORAL_HANG_TYPE_BIT)){ - throw $in->badValueException(StateNames::CORAL_HANG_TYPE_BIT, "1", "This should always be zero for hang3"); - } + $in->ignored(StateNames::CORAL_HANG_TYPE_BIT); //the game always writes this, even though it's not used return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) ->setCoralType(CoralType::HORN()); }); From 8b2d941502c4eb7ea621130c9138b073bec7f553 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 13 Jul 2022 19:49:30 +0100 Subject: [PATCH 326/692] Offset integer ranges in runtime block data serialization this is useful for stuff like snow layers where the range doesn't start at 0. --- src/block/Anvil.php | 2 +- src/block/Bamboo.php | 2 +- src/block/Cactus.php | 2 +- src/block/Cake.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/Crops.php | 2 +- src/block/DaylightSensor.php | 2 +- src/block/Farmland.php | 2 +- src/block/Fire.php | 2 +- src/block/FrostedIce.php | 2 +- src/block/Light.php | 2 +- src/block/Liquid.php | 2 +- src/block/NetherWartPlant.php | 2 +- src/block/RedstoneRepeater.php | 4 ++-- src/block/SeaPickle.php | 4 ++-- src/block/SnowLayer.php | 4 ++-- src/block/Sugarcane.php | 2 +- src/block/SweetBerryBush.php | 2 +- src/block/utils/AnalogRedstoneSignalEmitterTrait.php | 2 +- src/block/utils/SignLikeRotationTrait.php | 2 +- src/data/runtime/RuntimeDataReader.php | 2 +- src/data/runtime/RuntimeDataWriter.php | 11 ++++++++++- 22 files changed, 34 insertions(+), 25 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index a859210fd..ef8ef3f62 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -54,7 +54,7 @@ class Anvil extends Transparent implements Fallable{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeInt(2, $this->getDamage()); + $w->writeBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->getDamage()); } public function getRequiredStateDataBits() : int{ return 2; } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index eaf6c26db..c8be857b0 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -65,7 +65,7 @@ class Bamboo extends Transparent{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(2, $this->getLeafSize()); + $w->writeBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->getLeafSize()); $w->writeBool($this->isThick()); $w->writeBool($this->isReady()); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index cc8c602bf..f1c4a5909 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -49,7 +49,7 @@ class Cactus extends Transparent{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->age); + $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Cake.php b/src/block/Cake.php index cbb8f9389..d3841e9ef 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -48,7 +48,7 @@ class Cake extends Transparent implements FoodSource{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->bites); + $w->writeBoundedInt(3, 0, self::MAX_BITES, $this->bites); } /** diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 5056598c3..bc6b892ca 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -56,7 +56,7 @@ class CocoaBlock extends Transparent{ protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); - $w->writeInt(2, $this->age); + $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Crops.php b/src/block/Crops.php index f916dfb7d..52242cfe4 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -46,7 +46,7 @@ abstract class Crops extends Flowable{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->age); + $w->writeBoundedInt(3, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 8718b89c2..93ea4ce60 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -50,7 +50,7 @@ class DaylightSensor extends Transparent{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->signalStrength); + $w->writeBoundedInt(4, 0, 15, $this->signalStrength); $w->writeBool($this->inverted); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 989254bc9..9cbb55c93 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -45,7 +45,7 @@ class Farmland extends Transparent{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->wetness); + $w->writeBoundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } public function getWetness() : int{ return $this->wetness; } diff --git a/src/block/Fire.php b/src/block/Fire.php index 503dd1dc3..45546c720 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -47,7 +47,7 @@ class Fire extends BaseFire{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->age); + $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 60a42a4a5..8aba73644 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -40,7 +40,7 @@ class FrostedIce extends Ice{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(2, $this->age); + $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Light.php b/src/block/Light.php index b2d39fb9f..9313cb19f 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -42,7 +42,7 @@ final class Light extends Flowable{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->level); + $w->writeBoundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } public function getLightLevel() : int{ return $this->level; } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 93c8219f5..81f34e6f6 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -58,7 +58,7 @@ abstract class Liquid extends Transparent{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->decay); + $w->writeBoundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->writeBool($this->falling); $w->writeBool($this->still); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index d6c2287b1..13da176e7 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -45,7 +45,7 @@ class NetherWartPlant extends Flowable{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(2, $this->age); + $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 3b77bb262..b680d52cc 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -48,13 +48,13 @@ class RedstoneRepeater extends Flowable{ protected function decodeState(RuntimeDataReader $r) : void{ $this->facing = $r->readHorizontalFacing(); - $this->delay = $r->readBoundedInt(2, self::MIN_DELAY - 1, self::MAX_DELAY - 1) + 1; + $this->delay = $r->readBoundedInt(2, self::MIN_DELAY, self::MAX_DELAY); $this->powered = $r->readBool(); } protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); - $w->writeInt(2, $this->delay - 1); + $w->writeBoundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); $w->writeBool($this->powered); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index 4be3b89d7..d6e0f32a7 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -42,12 +42,12 @@ class SeaPickle extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->count = $r->readBoundedInt(2, self::MIN_COUNT - 1, self::MAX_COUNT - 1) + 1; + $this->count = $r->readBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT); $this->underwater = $r->readBool(); } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(2, $this->count - 1); + $w->writeBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->writeBool($this->underwater); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index d629d4d04..f45afc9f9 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -50,11 +50,11 @@ class SnowLayer extends Flowable implements Fallable{ public function getRequiredStateDataBits() : int{ return 3; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS - 1, self::MAX_LAYERS - 1) + 1; + $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS); } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->layers - 1); + $w->writeBoundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } public function getLayers() : int{ return $this->layers; } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index f91f13a5e..6985cd487 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -45,7 +45,7 @@ class Sugarcane extends Flowable{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->age); + $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); } private function grow() : bool{ diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 54e785664..1fa1e180c 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -53,7 +53,7 @@ class SweetBerryBush extends Flowable{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->age); + $w->writeBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 22d266aa7..1b9f5b26b 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -36,7 +36,7 @@ trait AnalogRedstoneSignalEmitterTrait{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->signalStrength); + $w->writeBoundedInt(4, 0, 15, $this->signalStrength); } public function getOutputSignalStrength() : int{ return $this->signalStrength; } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index e5773dbbd..96d0b9ef6 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -38,7 +38,7 @@ trait SignLikeRotationTrait{ } protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->rotation); + $w->writeBoundedInt(4, 0, 15, $this->rotation); } public function getRotation() : int{ return $this->rotation; } diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index 46c59cb27..a5bcc72cf 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -49,7 +49,7 @@ final class RuntimeDataReader{ } public function readBoundedInt(int $bits, int $min, int $max) : int{ - $result = $this->readInt($bits); + $result = $this->readInt($bits) + $min; if($result < $min || $result > $max){ throw new InvalidSerializedRuntimeDataException("Value is outside the range $min - $max"); } diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index c00759237..c10de5cea 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -52,6 +52,15 @@ final class RuntimeDataWriter{ return $this; } + /** @param int $bits *@return $this */ + public function writeBoundedInt(int $bits, int $min, int $max, int $value) : self{ + if($value < $min || $value > $max){ + throw new \InvalidArgumentException("Value $value is outside the range $min - $max"); + } + $this->writeInt($bits, $value - $min); + return $this; + } + /** @return $this */ public function writeBool(bool $value) : self{ return $this->writeInt(1, $value ? 1 : 0); @@ -104,7 +113,7 @@ final class RuntimeDataWriter{ public function writeWallConnections(array $connections) : self{ //TODO: we can pack this into 7 bits instead of 8 foreach(Facing::HORIZONTAL as $facing){ - $this->writeInt(2, match($connections[$facing] ?? null){ + $this->writeBoundedInt(2, 0, 2, match($connections[$facing] ?? null){ null => 0, WallConnectionType::SHORT() => 1, WallConnectionType::TALL() => 2, From 20cb67461fbe79f6ed5e61b53a2e29e2c3d96111 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 13 Jul 2022 19:50:35 +0100 Subject: [PATCH 327/692] Block: add the current class to the exception messages for block runtime data serialization --- src/block/Block.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 38abcfb4f..591f54922 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -47,6 +47,7 @@ use pocketmine\world\format\Chunk; use pocketmine\world\Position; use pocketmine\world\World; use function count; +use function get_class; use const PHP_INT_MAX; class Block{ @@ -109,7 +110,7 @@ class Block{ $this->decodeType($reader); $readBits = $reader->getOffset(); if($typeBits !== $readBits){ - throw new \LogicException("Exactly $typeBits bits of type data were provided, but $readBits were read"); + throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were provided, but $readBits were read"); } } @@ -126,7 +127,7 @@ class Block{ $this->decodeState($reader); $readBits = $reader->getOffset() - $typeBits; if($stateBits !== $readBits){ - throw new \LogicException("Exactly $stateBits bits of state data were provided, but $readBits were read"); + throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were provided, but $readBits were read"); } } @@ -149,7 +150,7 @@ class Block{ $this->encodeType($writer); $writtenBits = $writer->getOffset(); if($typeBits !== $writtenBits){ - throw new \LogicException("Exactly $typeBits bits of type data were expected, but $writtenBits were written"); + throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were expected, but $writtenBits were written"); } return $writer->getValue(); @@ -168,7 +169,7 @@ class Block{ $this->encodeState($writer); $writtenBits = $writer->getOffset() - $typeBits; if($stateBits !== $writtenBits){ - throw new \LogicException("Exactly $stateBits bits of state data were expected, but $writtenBits were written"); + throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were expected, but $writtenBits were written"); } return $writer->getValue(); From eafc23c7565d1375152a5ed62890624600396caf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 13 Jul 2022 23:54:41 +0100 Subject: [PATCH 328/692] Added candles and cakes with candles --- src/block/BaseCake.php | 89 ++++++++++++ src/block/BlockTypeIds.php | 6 +- src/block/Cake.php | 77 +++------- src/block/CakeWithCandle.php | 78 +++++++++++ src/block/CakeWithDyedCandle.php | 34 +++++ src/block/Candle.php | 132 ++++++++++++++++++ src/block/DyedCandle.php | 36 +++++ src/block/VanillaBlocks.php | 13 ++ src/block/utils/CandleTrait.php | 99 +++++++++++++ .../BlockObjectToBlockStateSerializer.php | 49 +++++++ .../convert/BlockStateDeserializerHelper.php | 9 ++ .../convert/BlockStateSerializerHelper.php | 8 ++ .../BlockStateToBlockObjectDeserializer.php | 43 ++++++ src/item/StringToItemParser.php | 2 + .../block_factory_consistency_check.json | 2 +- 15 files changed, 616 insertions(+), 61 deletions(-) create mode 100644 src/block/BaseCake.php create mode 100644 src/block/CakeWithCandle.php create mode 100644 src/block/CakeWithDyedCandle.php create mode 100644 src/block/Candle.php create mode 100644 src/block/DyedCandle.php create mode 100644 src/block/utils/CandleTrait.php diff --git a/src/block/BaseCake.php b/src/block/BaseCake.php new file mode 100644 index 000000000..5fcca644a --- /dev/null +++ b/src/block/BaseCake.php @@ -0,0 +1,89 @@ +getSide(Facing::DOWN); + if($down->getTypeId() !== BlockTypeIds::AIR){ + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + return false; + } + + public function onNearbyBlockChange() : void{ + if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::AIR){ //Replace with common break method + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if($player !== null){ + return $player->consumeObject($this); + } + + return false; + } + + public function getFoodRestore() : int{ + return 2; + } + + public function getSaturationRestore() : float{ + return 0.4; + } + + public function requiresHunger() : bool{ + return true; + } + + /** + * @return EffectInstance[] + */ + public function getAdditionalEffects() : array{ + return []; + } + + abstract public function getResidue() : Block; + + public function onConsume(Living $consumer) : void{ + $this->position->getWorld()->setBlock($this->position, $this->getResidue()); + } +} diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index d0baee61b..955d43dd1 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -684,6 +684,10 @@ final class BlockTypeIds{ public const CUT_COPPER = 10657; public const CUT_COPPER_SLAB = 10658; public const CUT_COPPER_STAIRS = 10659; + public const CANDLE = 10660; + public const DYED_CANDLE = 10661; + public const CAKE_WITH_CANDLE = 10662; + public const CAKE_WITH_DYED_CANDLE = 10663; - public const FIRST_UNUSED_BLOCK_ID = 10660; + public const FIRST_UNUSED_BLOCK_ID = 10664; } diff --git a/src/block/Cake.php b/src/block/Cake.php index d3841e9ef..31d1c3ad9 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -23,20 +23,16 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\entity\effect\EffectInstance; -use pocketmine\entity\FoodSource; -use pocketmine\entity\Living; use pocketmine\item\Item; +use pocketmine\item\ItemBlock; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; -use pocketmine\world\BlockTransaction; -class Cake extends Transparent implements FoodSource{ +class Cake extends BaseCake{ public const MAX_BITES = 6; protected int $bites = 0; @@ -63,10 +59,6 @@ class Cake extends Transparent implements FoodSource{ ]; } - public function getSupportType(int $facing) : SupportType{ - return SupportType::NONE(); - } - public function getBites() : int{ return $this->bites; } /** @return $this */ @@ -78,49 +70,27 @@ class Cake extends Transparent implements FoodSource{ return $this; } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $down = $this->getSide(Facing::DOWN); - if($down->getTypeId() !== BlockTypeIds::AIR){ - return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); - } - - return false; - } - - public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->getTypeId() === BlockTypeIds::AIR){ //Replace with common break method - $this->position->getWorld()->setBlock($this->position, VanillaBlocks::AIR()); - } - } - - public function getDropsForCompatibleTool(Item $item) : array{ - return []; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($player !== null){ - return $player->consumeObject($this); + if($item instanceof ItemBlock){ + $block = $item->getBlock(); + $resultBlock = null; + if($block->getTypeId() === BlockTypeIds::CANDLE){ + $resultBlock = VanillaBlocks::CAKE_WITH_CANDLE(); + }elseif($block instanceof DyedCandle){ + $resultBlock = VanillaBlocks::CAKE_WITH_DYED_CANDLE()->setColor($block->getColor()); + } + + if($resultBlock !== null){ + $this->position->getWorld()->setBlock($this->position, $resultBlock); + $item->pop(); + return true; + } } - return false; + return parent::onInteract($item, $face, $clickVector, $player); } - public function getFoodRestore() : int{ - return 2; - } - - public function getSaturationRestore() : float{ - return 0.4; - } - - public function requiresHunger() : bool{ - return true; - } - - /** - * @return Block - */ - public function getResidue(){ + public function getResidue() : Block{ $clone = clone $this; $clone->bites++; if($clone->bites > self::MAX_BITES){ @@ -128,15 +98,4 @@ class Cake extends Transparent implements FoodSource{ } return $clone; } - - /** - * @return EffectInstance[] - */ - public function getAdditionalEffects() : array{ - return []; - } - - public function onConsume(Living $consumer) : void{ - $this->position->getWorld()->setBlock($this->position, $this->getResidue()); - } } diff --git a/src/block/CakeWithCandle.php b/src/block/CakeWithCandle.php new file mode 100644 index 000000000..63278ea36 --- /dev/null +++ b/src/block/CakeWithCandle.php @@ -0,0 +1,78 @@ +contract(1 / 16, 0, 1 / 16) + ->trim(Facing::UP, 0.5) //TODO: not sure if the candle affects height + ]; + } + + public function getCandle() : Candle{ + return VanillaBlocks::CANDLE(); + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if($this->onInteractCandle($item, $face, $clickVector, $player)){ + return true; + } + + return parent::onInteract($item, $face, $clickVector, $player); + } + + public function getDropsForCompatibleTool(Item $item) : array{ + return [$this->getCandle()->asItem()]; + } + + public function getPickedItem(bool $addUserData = false) : Item{ + return VanillaBlocks::CAKE()->getPickedItem($addUserData); + } + + public function getResidue() : Block{ + return VanillaBlocks::CAKE()->setBites(1); + } + + public function onConsume(Living $consumer) : void{ + parent::onConsume($consumer); + $this->position->getWorld()->dropItem($this->position->add(0.5, 0.5, 0.5), $this->getCandle()->asItem()); + } +} diff --git a/src/block/CakeWithDyedCandle.php b/src/block/CakeWithDyedCandle.php new file mode 100644 index 000000000..959017e4d --- /dev/null +++ b/src/block/CakeWithDyedCandle.php @@ -0,0 +1,34 @@ +setColor($this->color); + } +} diff --git a/src/block/Candle.php b/src/block/Candle.php new file mode 100644 index 000000000..b917b7101 --- /dev/null +++ b/src/block/Candle.php @@ -0,0 +1,132 @@ +decodeLitState($r); + $this->count = $r->readBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT); + } + + protected function encodeState(RuntimeDataWriter $w) : void{ + $this->encodeLitState($w); + $w->writeBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); + } + + public function getCount() : int{ return $this->count; } + + /** @return $this */ + public function setCount(int $count) : self{ + if($count < self::MIN_COUNT || $count > self::MAX_COUNT){ + throw new \InvalidArgumentException("Count must be in range " . self::MIN_COUNT . " ... " . self::MAX_COUNT); + } + $this->count = $count; + return $this; + } + + public function getLightLevel() : int{ + return $this->getBaseLightLevel() * $this->count; + } + + protected function recalculateCollisionBoxes() : array{ + return [ + (match($this->count){ + 1 => AxisAlignedBB::one() + ->squash(Axis::X, 7 / 16) + ->squash(Axis::Z, 7 / 16), + 2 => AxisAlignedBB::one() + ->squash(Axis::X, 5 / 16) + ->trim(Facing::NORTH, 7 / 16) //0.3 thick on the Z axis + ->trim(Facing::SOUTH, 6 / 16), + 3 => AxisAlignedBB::one() + ->trim(Facing::WEST, 5 / 16) + ->trim(Facing::EAST, 6 / 16) + ->trim(Facing::NORTH, 6 / 16) + ->trim(Facing::SOUTH, 5 / 16), + 4 => AxisAlignedBB::one() + ->squash(Axis::X, 5 / 16) + ->trim(Facing::NORTH, 5 / 16) + ->trim(Facing::SOUTH, 6 / 16), + default => throw new AssumptionFailedError("Unreachable") + })->trim(Facing::UP, 10 / 16) + ]; + } + + protected function getCandleIfCompatibleType(Block $block) : ?Candle{ + return $block instanceof Candle && $block->isSameType($this) ? $block : null; + } + + public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector, int $face, bool $isClickedBlock) : bool{ + $candle = $this->getCandleIfCompatibleType($blockReplace); + return $candle !== null ? $candle->count < self::MAX_COUNT : parent::canBePlacedAt($blockReplace, $clickVector, $face, $isClickedBlock); + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + $down = $blockReplace->getSide(Facing::DOWN); + if(!$down->getSupportType(Facing::UP)->hasCenterSupport()){ + return false; + } + $existing = $this->getCandleIfCompatibleType($blockReplace); + if($existing !== null){ + if($existing->count >= self::MAX_COUNT){ + return false; + } + + $this->count = $existing->count + 1; + $this->lit = $existing->lit; + } + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function getDropsForCompatibleTool(Item $item) : array{ + return [$this->asItem()->setCount($this->count)]; + } +} diff --git a/src/block/DyedCandle.php b/src/block/DyedCandle.php new file mode 100644 index 000000000..b90aabac1 --- /dev/null +++ b/src/block/DyedCandle.php @@ -0,0 +1,36 @@ +color->equals($this->color) ? $result : null; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index e621f1830..7fdaa4663 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -135,7 +135,10 @@ use function mb_strtolower; * @method static BrownMushroomBlock BROWN_MUSHROOM_BLOCK() * @method static Cactus CACTUS() * @method static Cake CAKE() + * @method static CakeWithCandle CAKE_WITH_CANDLE() + * @method static CakeWithDyedCandle CAKE_WITH_DYED_CANDLE() * @method static Opaque CALCITE() + * @method static Candle CANDLE() * @method static Carpet CARPET() * @method static Carrot CARROTS() * @method static CarvedPumpkin CARVED_PUMPKIN() @@ -246,6 +249,7 @@ use function mb_strtolower; * @method static DoubleTallGrass DOUBLE_TALLGRASS() * @method static DragonEgg DRAGON_EGG() * @method static DriedKelp DRIED_KELP() + * @method static DyedCandle DYED_CANDLE() * @method static DyedShulkerBox DYED_SHULKER_BOX() * @method static Element ELEMENT_ACTINIUM() * @method static Element ELEMENT_ALUMINUM() @@ -1463,6 +1467,15 @@ final class VanillaBlocks{ self::register("cut_copper", new Copper(new BID(Ids::CUT_COPPER), "Cut Copper Block", $copperBreakInfo)); self::register("cut_copper_slab", new CopperSlab(new BID(Ids::CUT_COPPER_SLAB), "Cut Copper Slab", $copperBreakInfo)); self::register("cut_copper_stairs", new CopperStairs(new BID(Ids::CUT_COPPER_STAIRS), "Cut Copper Stairs", $copperBreakInfo)); + + $candleBreakInfo = new BreakInfo(0.1); + self::register("candle", new Candle(new BID(Ids::CANDLE), "Candle", $candleBreakInfo)); + self::register("dyed_candle", new DyedCandle(new BID(Ids::DYED_CANDLE), "Dyed Candle", $candleBreakInfo)); + + //TODO: duplicated break info :( + $cakeBreakInfo = new BreakInfo(0.5); + self::register("cake_with_candle", new CakeWithCandle(new BID(Ids::CAKE_WITH_CANDLE), "Cake With Candle", $cakeBreakInfo)); + self::register("cake_with_dyed_candle", new CakeWithDyedCandle(new BID(Ids::CAKE_WITH_DYED_CANDLE), "Cake With Dyed Candle", $cakeBreakInfo)); } private static function registerMudBlocks() : void{ diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php new file mode 100644 index 000000000..d838299cc --- /dev/null +++ b/src/block/utils/CandleTrait.php @@ -0,0 +1,99 @@ +lit = $r->readBool(); + } + + protected function encodeState(RuntimeDataWriter $w) : void{ + $w->writeBool($this->lit); + } + + public function getLightLevel() : int{ + return $this->lit ? 3 : 0; + } + + public function isLit() : bool{ return $this->lit; } + + /** @return $this */ + public function setLit(bool $lit) : self{ + $this->lit = $lit; + return $this; + } + + /** @see Block::onInteract() */ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if($item->getTypeId() === ItemTypeIds::FLINT_AND_STEEL || $item->hasEnchantment(VanillaEnchantments::FIRE_ASPECT())){ + if($this->lit){ + return true; + } + if($item instanceof Durable){ + $item->applyDamage(1); + } + $this->position->getWorld()->addSound($this->position, new FlintSteelSound()); + $this->position->getWorld()->setBlock($this->position, $this->setLit(true)); + + return true; + } + if($item->isNull()){ //candle can only be extinguished with an empty hand + if(!$this->lit){ + return true; + } + $this->position->getWorld()->addSound($this->position, new FireExtinguishSound()); + $this->position->getWorld()->setBlock($this->position, $this->setLit(false)); + + return true; + } + + //yes, this is intentional! in vanilla, if the candle is not interacted with, a block is placed. + return false; + } + + /** @see Block::onProjectileHit() */ + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + if(!$this->lit && $projectile->isOnFire()){ + $this->position->getWorld()->setBlock($this->position, $this->setLit(true)); + } + } +} diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 16a566bd1..c69537b41 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -39,6 +39,9 @@ use pocketmine\block\BrownMushroomBlock; use pocketmine\block\Button; use pocketmine\block\Cactus; use pocketmine\block\Cake; +use pocketmine\block\CakeWithCandle; +use pocketmine\block\CakeWithDyedCandle; +use pocketmine\block\Candle; use pocketmine\block\Carpet; use pocketmine\block\Carrot; use pocketmine\block\CarvedPumpkin; @@ -58,6 +61,7 @@ use pocketmine\block\Dirt; use pocketmine\block\Door; use pocketmine\block\DoublePlant; use pocketmine\block\DoubleTallGrass; +use pocketmine\block\DyedCandle; use pocketmine\block\DyedShulkerBox; use pocketmine\block\EnderChest; use pocketmine\block\EndPortalFrame; @@ -171,6 +175,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ private array $serializers = []; public function __construct(){ + $this->registerCandleSerializers(); $this->registerSerializers(); } @@ -242,6 +247,50 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return $writer->getBlockStateData(); } + private function registerCandleSerializers() : void{ + $this->map(Blocks::CANDLE(), fn(Candle $block) => Helper::encodeCandle($block, new Writer(Ids::CANDLE))); + $this->map(Blocks::DYED_CANDLE(), fn(DyedCandle $block) => Helper::encodeCandle($block, new Writer(match($block->getColor()){ + DyeColor::BLACK() => Ids::BLACK_CANDLE, + DyeColor::BLUE() => Ids::BLUE_CANDLE, + DyeColor::BROWN() => Ids::BROWN_CANDLE, + DyeColor::CYAN() => Ids::CYAN_CANDLE, + DyeColor::GRAY() => Ids::GRAY_CANDLE, + DyeColor::GREEN() => Ids::GREEN_CANDLE, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_CANDLE, + DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_CANDLE, + DyeColor::LIME() => Ids::LIME_CANDLE, + DyeColor::MAGENTA() => Ids::MAGENTA_CANDLE, + DyeColor::ORANGE() => Ids::ORANGE_CANDLE, + DyeColor::PINK() => Ids::PINK_CANDLE, + DyeColor::PURPLE() => Ids::PURPLE_CANDLE, + DyeColor::RED() => Ids::RED_CANDLE, + DyeColor::WHITE() => Ids::WHITE_CANDLE, + DyeColor::YELLOW() => Ids::YELLOW_CANDLE, + default => throw new AssumptionFailedError("Unhandled DyeColor " . $block->getColor()->name()) + }))); + $this->map(Blocks::CAKE_WITH_CANDLE(), fn(CakeWithCandle $block) => Writer::create(Ids::CANDLE_CAKE) + ->writeBool(StateNames::LIT, $block->isLit())); + $this->map(Blocks::CAKE_WITH_DYED_CANDLE(), fn(CakeWithDyedCandle $block) => Writer::create(match($block->getColor()){ + DyeColor::BLACK() => Ids::BLACK_CANDLE_CAKE, + DyeColor::BLUE() => Ids::BLUE_CANDLE_CAKE, + DyeColor::BROWN() => Ids::BROWN_CANDLE_CAKE, + DyeColor::CYAN() => Ids::CYAN_CANDLE_CAKE, + DyeColor::GRAY() => Ids::GRAY_CANDLE_CAKE, + DyeColor::GREEN() => Ids::GREEN_CANDLE_CAKE, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_CANDLE_CAKE, + DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_CANDLE_CAKE, + DyeColor::LIME() => Ids::LIME_CANDLE_CAKE, + DyeColor::MAGENTA() => Ids::MAGENTA_CANDLE_CAKE, + DyeColor::ORANGE() => Ids::ORANGE_CANDLE_CAKE, + DyeColor::PINK() => Ids::PINK_CANDLE_CAKE, + DyeColor::PURPLE() => Ids::PURPLE_CANDLE_CAKE, + DyeColor::RED() => Ids::RED_CANDLE_CAKE, + DyeColor::WHITE() => Ids::WHITE_CANDLE_CAKE, + DyeColor::YELLOW() => Ids::YELLOW_CANDLE_CAKE, + default => throw new AssumptionFailedError("Unhandled DyeColor " . $block->getColor()->name()) + })->writeBool(StateNames::LIT, $block->isLit())); + } + private function registerSerializers() : void{ $this->map(Blocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); $this->map(Blocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index 993390e9e..e1f6c1920 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Block; use pocketmine\block\Button; +use pocketmine\block\Candle; use pocketmine\block\Copper; use pocketmine\block\CopperSlab; use pocketmine\block\CopperStairs; @@ -55,6 +56,7 @@ use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateNames as StateNames; use pocketmine\data\bedrock\block\BlockStateStringValues as StringValues; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Axis; @@ -70,6 +72,13 @@ final class BlockStateDeserializerHelper{ ->setPressed($in->readBool(BlockStateNames::BUTTON_PRESSED_BIT)); } + /** @throws BlockStateDeserializeException */ + public static function decodeCandle(Candle $block, BlockStateReader $in) : Candle{ + return $block + ->setCount($in->readBoundedInt(StateNames::CANDLES, 0, 3) + 1) + ->setLit($in->readBool(StateNames::LIT)); + } + /** * @phpstan-template TCrops of Crops * @phpstan-param TCrops $block diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index bc6b1aec9..cd16b45b7 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Button; +use pocketmine\block\Candle; use pocketmine\block\ChemistryTable; use pocketmine\block\Crops; use pocketmine\block\Door; @@ -47,6 +48,7 @@ use pocketmine\block\Wall; use pocketmine\block\WallSign; use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockStateNames; +use pocketmine\data\bedrock\block\BlockStateNames as StateNames; use pocketmine\data\bedrock\block\BlockTypeNames as Ids; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Facing; @@ -67,6 +69,12 @@ final class BlockStateSerializerHelper{ ->writeBool(BlockStateNames::BUTTON_PRESSED_BIT, $block->isPressed()); } + public static function encodeCandle(Candle $block, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeBool(StateNames::LIT, $block->isLit()) + ->writeInt(StateNames::CANDLES, $block->getCount() - 1); + } + public static function encodeChemistryTable(ChemistryTable $block, string $chemistryTableType, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeString(BlockStateNames::CHEMISTRY_TABLE_TYPE, $chemistryTableType) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 62da377d5..f3ea9ce4e 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -59,6 +59,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize private array $deserializeFuncs = []; public function __construct(){ + $this->registerCandleDeserializers(); $this->registerDeserializers(); } @@ -92,6 +93,48 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map($id, fn(Reader $in) : Stair => Helper::decodeStairs($getBlock(), $in)); } + private function registerCandleDeserializers() : void{ + $this->map(Ids::CANDLE, fn(Reader $in) => Helper::decodeCandle(Blocks::CANDLE(), $in)); + $dyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in); + $this->map(Ids::BLACK_CANDLE, $dyedCandleDeserializer(DyeColor::BLACK())); + $this->map(Ids::BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::BLUE())); + $this->map(Ids::BROWN_CANDLE, $dyedCandleDeserializer(DyeColor::BROWN())); + $this->map(Ids::CYAN_CANDLE, $dyedCandleDeserializer(DyeColor::CYAN())); + $this->map(Ids::GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::GRAY())); + $this->map(Ids::GREEN_CANDLE, $dyedCandleDeserializer(DyeColor::GREEN())); + $this->map(Ids::LIGHT_BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_BLUE())); + $this->map(Ids::LIGHT_GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_GRAY())); + $this->map(Ids::LIME_CANDLE, $dyedCandleDeserializer(DyeColor::LIME())); + $this->map(Ids::MAGENTA_CANDLE, $dyedCandleDeserializer(DyeColor::MAGENTA())); + $this->map(Ids::ORANGE_CANDLE, $dyedCandleDeserializer(DyeColor::ORANGE())); + $this->map(Ids::PINK_CANDLE, $dyedCandleDeserializer(DyeColor::PINK())); + $this->map(Ids::PURPLE_CANDLE, $dyedCandleDeserializer(DyeColor::PURPLE())); + $this->map(Ids::RED_CANDLE, $dyedCandleDeserializer(DyeColor::RED())); + $this->map(Ids::WHITE_CANDLE, $dyedCandleDeserializer(DyeColor::WHITE())); + $this->map(Ids::YELLOW_CANDLE, $dyedCandleDeserializer(DyeColor::YELLOW())); + + $this->map(Ids::CANDLE_CAKE, fn(Reader $in) => Blocks::CAKE_WITH_CANDLE()->setLit($in->readBool(StateNames::LIT))); + $cakeWithDyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Blocks::CAKE_WITH_DYED_CANDLE() + ->setColor($color) + ->setLit($in->readBool(StateNames::LIT)); + $this->map(Ids::BLACK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLACK())); + $this->map(Ids::BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLUE())); + $this->map(Ids::BROWN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BROWN())); + $this->map(Ids::CYAN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::CYAN())); + $this->map(Ids::GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GRAY())); + $this->map(Ids::GREEN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GREEN())); + $this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_BLUE())); + $this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_GRAY())); + $this->map(Ids::LIME_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIME())); + $this->map(Ids::MAGENTA_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::MAGENTA())); + $this->map(Ids::ORANGE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::ORANGE())); + $this->map(Ids::PINK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PINK())); + $this->map(Ids::PURPLE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PURPLE())); + $this->map(Ids::RED_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::RED())); + $this->map(Ids::WHITE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::WHITE())); + $this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); + } + private function registerDeserializers() : void{ $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a38d5e61c..5c72f1fc1 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -51,6 +51,7 @@ final class StringToItemParser extends StringToTParser{ //wall and floor banner are the same item $result->registerBlock($prefix("banner"), fn() => Blocks::BANNER()->setColor($color)); $result->registerBlock($prefix("bed"), fn() => Blocks::BED()->setColor($color)); + $result->registerBlock($prefix("candle"), fn() => Blocks::DYED_CANDLE()->setColor($color)); $result->registerBlock($prefix("carpet"), fn() => Blocks::CARPET()->setColor($color)); $result->registerBlock($prefix("concrete"), fn() => Blocks::CONCRETE()->setColor($color)); $result->registerBlock($prefix("concrete_powder"), fn() => Blocks::CONCRETE_POWDER()->setColor($color)); @@ -181,6 +182,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cake", fn() => Blocks::CAKE()); $result->registerBlock("cake_block", fn() => Blocks::CAKE()); $result->registerBlock("calcite", fn() => Blocks::CALCITE()); + $result->registerBlock("candle", fn() => Blocks::CANDLE()); $result->registerBlock("carpet", fn() => Blocks::CARPET()); $result->registerBlock("carrot_block", fn() => Blocks::CARROTS()); $result->registerBlock("carrots", fn() => Blocks::CARROTS()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 9324b8d13..b265f2463 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From d0067cfac556c62bac464a3a8aadff4b70274847 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 00:12:02 +0100 Subject: [PATCH 329/692] TNT now ignites when hit by a burning projectile --- src/block/TNT.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/block/TNT.php b/src/block/TNT.php index 30ebb42f6..a7d77a44e 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -29,10 +29,12 @@ use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; use pocketmine\entity\projectile\Arrow; +use pocketmine\entity\projectile\Projectile; use pocketmine\item\Durable; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\FlintSteel; use pocketmine\item\Item; +use pocketmine\math\RayTraceResult; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\utils\Random; @@ -138,4 +140,10 @@ class TNT extends Opaque{ public function onIncinerate() : void{ $this->ignite(); } + + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + if($projectile->isOnFire()){ + $this->ignite(); + } + } } From 7dd88765156014b61ff987e4aeda3d81aafc87ef Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 00:23:12 +0100 Subject: [PATCH 330/692] TNT: remove the old unreliable way of ignition on burning arrow collide --- src/block/TNT.php | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/block/TNT.php b/src/block/TNT.php index a7d77a44e..1a749bdd2 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -25,10 +25,8 @@ namespace pocketmine\block; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\entity\Entity; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; -use pocketmine\entity\projectile\Arrow; use pocketmine\entity\projectile\Projectile; use pocketmine\item\Durable; use pocketmine\item\enchantment\VanillaEnchantments; @@ -103,18 +101,6 @@ class TNT extends Opaque{ return false; } - public function hasEntityCollision() : bool{ - return true; - } - - public function onEntityInside(Entity $entity) : bool{ - if($entity instanceof Arrow && $entity->isOnFire()){ - $this->ignite(); - return false; - } - return true; - } - public function ignite(int $fuse = 80) : void{ $this->position->getWorld()->setBlock($this->position, VanillaBlocks::AIR()); From 0c7370e5645be06a659e228431d83b661df7c3da Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 16:07:16 +0100 Subject: [PATCH 331/692] Added wither rose --- src/block/BlockTypeIds.php | 3 +- src/block/VanillaBlocks.php | 2 + src/block/WitherRose.php | 78 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 1 + .../BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + 6 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/block/WitherRose.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 955d43dd1..5197b672f 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -688,6 +688,7 @@ final class BlockTypeIds{ public const DYED_CANDLE = 10661; public const CAKE_WITH_CANDLE = 10662; public const CAKE_WITH_DYED_CANDLE = 10663; + public const WITHER_ROSE = 10664; - public const FIRST_UNUSED_BLOCK_ID = 10664; + public const FIRST_UNUSED_BLOCK_ID = 10665; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 7fdaa4663..377b5a962 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -696,6 +696,7 @@ use function mb_strtolower; * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() * @method static Wheat WHEAT() * @method static Flower WHITE_TULIP() + * @method static WitherRose WITHER_ROSE() * @method static Wool WOOL() */ final class VanillaBlocks{ @@ -1356,6 +1357,7 @@ final class VanillaBlocks{ private static function registerBlocksR13() : void{ self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); + self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", BreakInfo::instant())); } private static function registerBlocksR14() : void{ diff --git a/src/block/WitherRose.php b/src/block/WitherRose.php new file mode 100644 index 000000000..a5c64592f --- /dev/null +++ b/src/block/WitherRose.php @@ -0,0 +1,78 @@ +getTypeId()){ + BlockTypeIds::GRASS, + BlockTypeIds::DIRT, + BlockTypeIds::FARMLAND, + BlockTypeIds::MYCELIUM, + BlockTypeIds::PODZOL, + BlockTypeIds::NETHERRACK, + BlockTypeIds::SOUL_SAND, + BlockTypeIds::SOUL_SOIL => true, + //TODO: moss, mud, rooted dirt + default => false + }; + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedBy($this->getSide(Facing::DOWN))){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canBeSupportedBy($blockReplace->getSide(Facing::DOWN))){ + return false; + } + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function hasEntityCollision() : bool{ return true; } + + public function onEntityInside(Entity $entity) : bool{ + if($entity instanceof Living && !$entity->getEffects()->has(VanillaEffects::WITHER())){ + $entity->getEffects()->add(new EffectInstance(VanillaEffects::WITHER(), 40)); + } + return true; + } + + public function getFlameEncouragement() : int{ return 60; } + + public function getFlammability() : int{ return 100; } +} diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index c69537b41..9ea1939ef 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1377,6 +1377,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); $this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); + $this->mapSimple(Blocks::WITHER_ROSE(), Ids::WITHER_ROSE); $this->map(Blocks::WOOL(), function(Wool $block) : Writer{ return Writer::create(Ids::WOOL) ->writeColor($block->getColor()); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f3ea9ce4e..49901a2f2 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -1273,6 +1273,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WEB, fn() => Blocks::COBWEB()); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); + $this->map(Ids::WITHER_ROSE, fn() => Blocks::WITHER_ROSE()); $this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 5c72f1fc1..465257a07 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1058,6 +1058,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); + $result->registerBlock("wither_rose", fn() => Blocks::WITHER_ROSE()); $result->registerBlock("wither_skeleton_skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::WITHER_SKELETON())); $result->registerBlock("wood", fn() => Blocks::OAK_LOG()->setStripped(false)); $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); From 323d31005fab00783647eb52b430dfce6b7c56fe Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 16:24:20 +0100 Subject: [PATCH 332/692] Added glowing item frames --- src/block/ItemFrame.php | 20 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 2 +- .../convert/BlockStateDeserializerHelper.php | 10 ++++++++++ .../BlockStateToBlockObjectDeserializer.php | 8 ++------ src/data/bedrock/item/ItemDeserializer.php | 4 ++-- src/data/bedrock/item/ItemSerializer.php | 3 ++- src/item/StringToItemParser.php | 10 ++++++---- .../block_factory_consistency_check.json | 2 +- 8 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index cbaed26ec..831f39760 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -41,12 +41,24 @@ class ItemFrame extends Flowable{ public const ROTATIONS = 8; + protected bool $glowing = false; + protected bool $hasMap = false; //makes frame appear large if set protected ?Item $framedItem = null; protected int $itemRotation = 0; protected float $itemDropChance = 1.0; + public function getRequiredTypeDataBits() : int{ return 1; } + + protected function decodeType(RuntimeDataReader $r) : void{ + $this->glowing = $r->readBool(); + } + + protected function encodeType(RuntimeDataWriter $w) : void{ + $w->writeBool($this->glowing); + } + public function getRequiredStateDataBits() : int{ return 4; } protected function decodeState(RuntimeDataReader $r) : void{ @@ -133,6 +145,14 @@ class ItemFrame extends Flowable{ return $this; } + public function isGlowing() : bool{ return $this->glowing; } + + /** @return $this */ + public function setGlowing(bool $glowing) : self{ + $this->glowing = $glowing; + return $this; + } + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if($this->framedItem !== null){ $this->itemRotation = ($this->itemRotation + 1) % self::ROTATIONS; diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 9ea1939ef..2ad760c62 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -908,7 +908,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::IRON_ORE(), Ids::IRON_ORE); $this->map(Blocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); $this->map(Blocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ - return Writer::create(Ids::FRAME) + return Writer::create($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME) ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) ->writeFacingDirection($block->getFacing()); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index e1f6c1920..b2809d93f 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -36,6 +36,7 @@ use pocketmine\block\FenceGate; use pocketmine\block\FloorCoralFan; use pocketmine\block\FloorSign; use pocketmine\block\GlazedTerracotta; +use pocketmine\block\ItemFrame; use pocketmine\block\Liquid; use pocketmine\block\RedMushroomBlock; use pocketmine\block\RedstoneComparator; @@ -48,6 +49,7 @@ use pocketmine\block\Trapdoor; use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; +use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; @@ -170,6 +172,14 @@ final class BlockStateDeserializerHelper{ ->setFacing($in->readHorizontalFacing()); } + public static function decodeItemFrame(BlockStateReader $in, bool $glowing) : ItemFrame{ + $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is + return Blocks::ITEM_FRAME() + ->setFacing($in->readFacingDirection()) + ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)) + ->setGlowing($glowing); + } + /** @throws BlockStateDeserializeException */ public static function decodeLiquid(Liquid $block, BlockStateReader $in, bool $still) : Liquid{ $fluidHeightState = $in->readBoundedInt(BlockStateNames::LIQUID_DEPTH, 0, 15); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 49901a2f2..3c5a64e53 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -614,12 +614,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); - $this->map(Ids::FRAME, function(Reader $in) : Block{ - $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is - return Blocks::ITEM_FRAME() - ->setFacing($in->readFacingDirection()) - ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); - }); + $this->map(Ids::FRAME, fn(Reader $in) => Helper::decodeItemFrame($in, false)); $this->map(Ids::FROSTED_ICE, function(Reader $in) : Block{ return Blocks::FROSTED_ICE() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); @@ -632,6 +627,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); $this->map(Ids::GLASS, fn() => Blocks::GLASS()); $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); + $this->map(Ids::GLOW_FRAME, fn(Reader $in) => Helper::decodeItemFrame($in, true)); $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); $this->map(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); $this->map(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index d4711f891..86e41bcca 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -345,7 +345,7 @@ final class ItemDeserializer{ //TODO: minecraft:flower_banner_pattern $this->map(Ids::FLOWER_POT, fn() => Blocks::FLOWER_POT()->asItem()); //TODO: minecraft:fox_spawn_egg - $this->map(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->asItem()); + $this->map(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)->asItem()); //TODO: minecraft:frog_spawn_egg //TODO: minecraft:ghast_spawn_egg $this->map(Ids::GHAST_TEAR, fn() => Items::GHAST_TEAR()); @@ -353,7 +353,7 @@ final class ItemDeserializer{ $this->map(Ids::GLISTERING_MELON_SLICE, fn() => Items::GLISTERING_MELON()); //TODO: minecraft:globe_banner_pattern //TODO: minecraft:glow_berries - //TODO: minecraft:glow_frame + $this->map(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)->asItem()); $this->map(Ids::GLOW_INK_SAC, fn() => Items::GLOW_INK_SAC()); //TODO: minecraft:glow_squid_spawn_egg //TODO: minecraft:glow_stick diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index c6998aa1e..1da1395c6 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Bed; use pocketmine\block\Block; +use pocketmine\block\ItemFrame; use pocketmine\block\Skull; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks as Blocks; @@ -233,7 +234,7 @@ final class ItemSerializer{ $this->mapBlock(Blocks::FLOWER_POT(), self::id(Ids::FLOWER_POT)); $this->mapBlock(Blocks::HOPPER(), self::id(Ids::HOPPER)); $this->mapBlock(Blocks::IRON_DOOR(), self::id(Ids::IRON_DOOR)); - $this->mapBlock(Blocks::ITEM_FRAME(), self::id(Ids::FRAME)); + $this->mapBlock(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => new Data($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME)); $this->mapBlock(Blocks::JUNGLE_DOOR(), self::id(Ids::JUNGLE_DOOR)); $this->mapBlock(Blocks::MANGROVE_DOOR(), self::id(Ids::MANGROVE_DOOR)); $this->mapBlock(Blocks::NETHER_WART(), self::id(Ids::NETHER_WART)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 465257a07..6042fb3b7 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -605,8 +605,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("flower_pot_block", fn() => Blocks::FLOWER_POT()); $result->registerBlock("flowing_lava", fn() => Blocks::LAVA()); $result->registerBlock("flowing_water", fn() => Blocks::WATER()); - $result->registerBlock("frame", fn() => Blocks::ITEM_FRAME()); - $result->registerBlock("frame_block", fn() => Blocks::ITEM_FRAME()); + $result->registerBlock("frame", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $result->registerBlock("frame_block", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); $result->registerBlock("frosted_ice", fn() => Blocks::FROSTED_ICE()); $result->registerBlock("furnace", fn() => Blocks::FURNACE()); $result->registerBlock("gilded_blackstone", fn() => Blocks::GILDED_BLACKSTONE()); @@ -614,6 +614,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("glass_pane", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glass_panel", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glazed_terracotta", fn() => Blocks::GLAZED_TERRACOTTA()); + $result->registerBlock("glow_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(true)); + $result->registerBlock("glow_item_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(true)); $result->registerBlock("glowing_obsidian", fn() => Blocks::GLOWING_OBSIDIAN()); $result->registerBlock("glowing_redstone_ore", fn() => Blocks::REDSTONE_ORE()->setLit(true)); $result->registerBlock("glowingobsidian", fn() => Blocks::GLOWING_OBSIDIAN()); @@ -668,8 +670,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("iron_ore", fn() => Blocks::IRON_ORE()); $result->registerBlock("iron_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY()); $result->registerBlock("iron_trapdoor", fn() => Blocks::IRON_TRAPDOOR()); - $result->registerBlock("item_frame", fn() => Blocks::ITEM_FRAME()); - $result->registerBlock("item_frame_block", fn() => Blocks::ITEM_FRAME()); + $result->registerBlock("item_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $result->registerBlock("item_frame_block", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); $result->registerBlock("jack_o_lantern", fn() => Blocks::LIT_PUMPKIN()); $result->registerBlock("jukebox", fn() => Blocks::JUKEBOX()); $result->registerBlock("jungle_button", fn() => Blocks::JUNGLE_BUTTON()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index b265f2463..50f360248 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From d321094081a5c657bab123cee7dbbf83ef41942f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 16:47:55 +0100 Subject: [PATCH 333/692] Added hanging roots --- src/block/BlockTypeIds.php | 3 +- src/block/HangingRoots.php | 58 +++++++++++++++++++ src/block/VanillaBlocks.php | 3 + .../BlockObjectToBlockStateSerializer.php | 1 + .../BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 src/block/HangingRoots.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 5197b672f..11c6b87da 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -689,6 +689,7 @@ final class BlockTypeIds{ public const CAKE_WITH_CANDLE = 10662; public const CAKE_WITH_DYED_CANDLE = 10663; public const WITHER_ROSE = 10664; + public const HANGING_ROOTS = 10665; - public const FIRST_UNUSED_BLOCK_ID = 10665; + public const FIRST_UNUSED_BLOCK_ID = 10666; } diff --git a/src/block/HangingRoots.php b/src/block/HangingRoots.php new file mode 100644 index 000000000..cd85bcea7 --- /dev/null +++ b/src/block/HangingRoots.php @@ -0,0 +1,58 @@ +isSolid(); //TODO: not sure if this is the correct logic + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$blockReplace->getSide(Facing::UP)->isSolid()){ + return false; + } + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedBy($this->getSide(Facing::UP))){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function getDropsForIncompatibleTool(Item $item) : array{ + if($item->hasEnchantment(VanillaEnchantments::SILK_TOUCH())){ + return $this->getDropsForCompatibleTool($item); + } + return []; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 377b5a962..a3d0514e4 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -406,6 +406,7 @@ use function mb_strtolower; * @method static GrassPath GRASS_PATH() * @method static Gravel GRAVEL() * @method static Torch GREEN_TORCH() + * @method static HangingRoots HANGING_ROOTS() * @method static HardenedClay HARDENED_CLAY() * @method static HardenedGlass HARDENED_GLASS() * @method static HardenedGlassPane HARDENED_GLASS_PANE() @@ -1478,6 +1479,8 @@ final class VanillaBlocks{ $cakeBreakInfo = new BreakInfo(0.5); self::register("cake_with_candle", new CakeWithCandle(new BID(Ids::CAKE_WITH_CANDLE), "Cake With Candle", $cakeBreakInfo)); self::register("cake_with_dyed_candle", new CakeWithDyedCandle(new BID(Ids::CAKE_WITH_DYED_CANDLE), "Cake With Dyed Candle", $cakeBreakInfo)); + + self::register("hanging_roots", new HangingRoots(new BID(Ids::HANGING_ROOTS), "Hanging Roots", BreakInfo::instant(ToolType::SHEARS, 1))); } private static function registerMudBlocks() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 2ad760c62..7ca09189c 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -872,6 +872,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::GRASS_PATH(), Ids::GRASS_PATH); $this->mapSimple(Blocks::GRAVEL(), Ids::GRAVEL); $this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); + $this->mapSimple(Blocks::HANGING_ROOTS(), Ids::HANGING_ROOTS); $this->mapSimple(Blocks::HARDENED_CLAY(), Ids::HARDENED_CLAY); $this->mapSimple(Blocks::HARDENED_GLASS(), Ids::HARD_GLASS); $this->mapSimple(Blocks::HARDENED_GLASS_PANE(), Ids::HARD_GLASS_PANE); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 3c5a64e53..f12559ffc 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -643,6 +643,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); + $this->map(Ids::HANGING_ROOTS, fn() => Blocks::HANGING_ROOTS()); $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); $this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{ diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 6042fb3b7..fb034e109 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -634,6 +634,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("grass_path", fn() => Blocks::GRASS_PATH()); $result->registerBlock("gravel", fn() => Blocks::GRAVEL()); $result->registerBlock("green_torch", fn() => Blocks::GREEN_TORCH()); + $result->registerBlock("hanging_roots", fn() => Blocks::HANGING_ROOTS()); $result->registerBlock("hard_glass", fn() => Blocks::HARDENED_GLASS()); $result->registerBlock("hard_glass_pane", fn() => Blocks::HARDENED_GLASS_PANE()); $result->registerBlock("hard_stained_glass", fn() => Blocks::STAINED_HARDENED_GLASS()); From 91719051e29466cb4b63b42514cdfc72860fd2fa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 16:50:08 +0100 Subject: [PATCH 334/692] BlockStateToBlockObjectDeserializer: removed TODO mess these were useful when writing the initial version from scratch; not so much for implementing random blocks --- .../BlockStateToBlockObjectDeserializer.php | 1477 ----------------- 1 file changed, 1477 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index f12559ffc..7ca7bbef7 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -1290,1483 +1290,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); - //$this->map(Ids::ALLOW, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::AMETHYST_CLUSTER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::AZALEA, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::AZALEA_LEAVES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::AZALEA_LEAVES_FLOWERED, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BEE_NEST, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::BEEHIVE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * honey_level (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::BIG_DRIPLEAF, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * big_dripleaf_head (ByteTag) = 0, 1 - * big_dripleaf_tilt (StringTag) = full_tilt, none, partial_tilt, unstable - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::BLACK_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BLACK_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BLUE_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BLUE_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BORDER_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BROWN_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BROWN_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BUBBLE_COLUMN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * drag_down (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::BUDDING_AMETHYST, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CALCITE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CAMERA, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CAMPFIRE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * extinguished (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CARTOGRAPHY_TABLE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CAULDRON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * cauldron_liquid (StringTag) = lava, powder_snow, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->map(Ids::CAVE_VINES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::CAVE_VINES_BODY_WITH_BERRIES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::CAVE_VINES_HEAD_WITH_BERRIES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * growing_plant_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::CHAIN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::CHAIN_COMMAND_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::CHISELED_DEEPSLATE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CHISELED_NETHER_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CHORUS_FLOWER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * age (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::CHORUS_PLANT, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CLIENT_REQUEST_PLACEHOLDER_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::COBBLED_DEEPSLATE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::COBBLED_DEEPSLATE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::COBBLED_DEEPSLATE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::COBBLED_DEEPSLATE_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::COMMAND_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::COMPOSTER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * composter_fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8 - */ - //}); - //$this->map(Ids::CONDUIT, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::COPPER_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::COPPER_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRACKED_DEEPSLATE_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRACKED_DEEPSLATE_TILES, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRACKED_NETHER_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_BUTTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::CRIMSON_DOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CRIMSON_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CRIMSON_FENCE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_FENCE_GATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CRIMSON_FUNGUS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_HYPHAE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::CRIMSON_NYLIUM, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_PLANKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_PRESSURE_PLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::CRIMSON_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CRIMSON_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CRIMSON_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::CRIMSON_STANDING_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::CRIMSON_STEM, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::CRIMSON_TRAPDOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CRIMSON_WALL_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::CRYING_OBSIDIAN, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::CYAN_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::CYAN_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_BRICK_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_BRICK_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::DEEPSLATE_BRICK_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_COAL_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_COPPER_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_DIAMOND_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_EMERALD_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_GOLD_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_IRON_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_LAPIS_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_REDSTONE_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DEEPSLATE_TILE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_TILE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_TILE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::DEEPSLATE_TILE_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DEEPSLATE_TILES, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DENY, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DIRT_WITH_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DISPENSER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::DRIPSTONE_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::DROPPER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * triggered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::END_GATEWAY, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::END_PORTAL, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::EXPOSED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::EXPOSED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::EXPOSED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::EXPOSED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::FLOWERING_AZALEA, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::FROG_SPAWN, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::GILDED_BLACKSTONE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::GLOW_FRAME, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * item_frame_map_bit (ByteTag) = 0, 1 - * item_frame_photo_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::GLOW_LICHEN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - */ - //}); - //$this->map(Ids::GRAY_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::GRAY_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::GREEN_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::GREEN_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::GRINDSTONE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * attachment (StringTag) = hanging, multiple, side, standing - * direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::HANGING_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::HONEY_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::HONEYCOMB_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::INFESTED_DEEPSLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::JIGSAW, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * rotation (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::KELP, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * kelp_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::LARGE_AMETHYST_BUD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::LAVA_CAULDRON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * cauldron_liquid (StringTag) = lava, powder_snow, water - * fill_level (IntTag) = 0, 1, 2, 3, 4, 5, 6 - */ - //}); - //$this->map(Ids::LIGHT_BLUE_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIGHT_GRAY_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIGHTNING_ROD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::LIME_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIME_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::LIT_DEEPSLATE_REDSTONE_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::LODESTONE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MAGENTA_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MAGENTA_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_BUTTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::MANGROVE_DOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_FENCE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MANGROVE_FENCE_GATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_LEAVES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * persistent_bit (ByteTag) = 0, 1 - * update_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_LOG, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::MANGROVE_PLANKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MANGROVE_PRESSURE_PLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::MANGROVE_PROPAGULE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * hanging (ByteTag) = 0, 1 - * propagule_stage (IntTag) = 0, 1, 2, 3, 4 - */ - //}); - //$this->map(Ids::MANGROVE_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MANGROVE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::MANGROVE_STANDING_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::MANGROVE_TRAPDOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MANGROVE_WALL_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::MANGROVE_WOOD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - * stripped_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MEDIUM_AMETHYST_BUD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::MOSS_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MOSS_CARPET, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MOVING_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MUD, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MUD_BRICK_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MUD_BRICK_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MUD_BRICK_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::MUD_BRICK_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::MUD_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::MUDDY_MANGROVE_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::NETHER_GOLD_ORE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::NETHER_SPROUTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::NETHERITE_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::OBSERVER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::OCHRE_FROGLIGHT, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::ORANGE_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::ORANGE_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::OXIDIZED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::OXIDIZED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::PACKED_MUD, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::PEARLESCENT_FROGLIGHT, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::PINK_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::PINK_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::PISTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::PISTON_ARM_COLLISION, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::POINTED_DRIPSTONE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * dripstone_thickness (StringTag) = base, frustum, merge, middle, tip - * hanging (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_DEEPSLATE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_DEEPSLATE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POLISHED_DEEPSLATE_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::POLISHED_DEEPSLATE_WALL, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * wall_connection_type_east (StringTag) = none, short, tall - * wall_connection_type_north (StringTag) = none, short, tall - * wall_connection_type_south (StringTag) = none, short, tall - * wall_connection_type_west (StringTag) = none, short, tall - * wall_post_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::POWDER_SNOW, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::PURPLE_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::PURPLE_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::QUARTZ_BRICKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::RED_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::RED_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::REINFORCED_DEEPSLATE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::REPEATING_COMMAND_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * conditional_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::RESPAWN_ANCHOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * respawn_anchor_charge (IntTag) = 0, 1, 2, 3, 4 - */ - //}); - //$this->map(Ids::SCAFFOLDING, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * stability (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7 - * stability_check (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SCULK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::SCULK_CATALYST, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * bloom (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SCULK_SENSOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * powered_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SCULK_SHRIEKER, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * active (ByteTag) = 0, 1 - * can_summon (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SCULK_VEIN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * multi_face_direction_bits (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - */ - //}); - //$this->map(Ids::SEAGRASS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * sea_grass_type (StringTag) = default, double_bot, double_top - */ - //}); - //$this->map(Ids::SHROOMLIGHT, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::SMALL_AMETHYST_BUD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::SMALL_DRIPLEAF_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SMITHING_TABLE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::SOUL_CAMPFIRE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * extinguished (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SOUL_FIRE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::SOUL_LANTERN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * hanging (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::SOUL_SOIL, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::SOUL_TORCH, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * torch_facing_direction (StringTag) = east, north, south, top, unknown, west - */ - //}); - //$this->map(Ids::SPORE_BLOSSOM, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::STICKY_PISTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::STICKY_PISTON_ARM_COLLISION, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::STRIPPED_CRIMSON_HYPHAE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRIPPED_CRIMSON_STEM, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRIPPED_MANGROVE_LOG, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRIPPED_MANGROVE_WOOD, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRIPPED_WARPED_HYPHAE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRIPPED_WARPED_STEM, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::STRUCTURE_BLOCK, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * structure_block_type (StringTag) = corner, data, export, invalid, load, save - */ - //}); - //$this->map(Ids::STRUCTURE_VOID, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * structure_void_type (StringTag) = air, void - */ - //}); - //$this->map(Ids::TARGET, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::TINTED_GLASS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::TUFF, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::TURTLE_EGG, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * cracked_state (StringTag) = cracked, max_cracked, no_cracks - * turtle_egg_count (StringTag) = four_egg, one_egg, three_egg, two_egg - */ - //}); - //$this->map(Ids::TWISTING_VINES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * twisting_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::UNKNOWN, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::VERDANT_FROGLIGHT, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::WARPED_BUTTON, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * button_pressed_bit (ByteTag) = 0, 1 - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::WARPED_DOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * door_hinge_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - * upper_block_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WARPED_DOUBLE_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WARPED_FENCE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WARPED_FENCE_GATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * in_wall_bit (ByteTag) = 0, 1 - * open_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WARPED_FUNGUS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WARPED_HYPHAE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::WARPED_NYLIUM, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WARPED_PLANKS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WARPED_PRESSURE_PLATE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * redstone_signal (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::WARPED_ROOTS, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WARPED_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WARPED_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WARPED_STANDING_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * ground_sign_direction (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - */ - //}); - //$this->map(Ids::WARPED_STEM, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * pillar_axis (StringTag) = x, y, z - */ - //}); - //$this->map(Ids::WARPED_TRAPDOOR, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * direction (IntTag) = 0, 1, 2, 3 - * open_bit (ByteTag) = 0, 1 - * upside_down_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WARPED_WALL_SIGN, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * facing_direction (IntTag) = 0, 1, 2, 3, 4, 5 - */ - //}); - //$this->map(Ids::WARPED_WART_BLOCK, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_EXPOSED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_OXIDIZED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_WEATHERED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WEATHERED_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WEATHERED_CUT_COPPER, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::WEATHERED_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WEATHERED_CUT_COPPER_STAIRS, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * upside_down_bit (ByteTag) = 0, 1 - * weirdo_direction (IntTag) = 0, 1, 2, 3 - */ - //}); - //$this->map(Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * top_slot_bit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WEEPING_VINES, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * weeping_vines_age (IntTag) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 - */ - //}); - //$this->map(Ids::WHITE_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WHITE_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::WITHER_ROSE, function(Reader $in) : Block{ - /* TODO: Un-implemented block */ - //}); - //$this->map(Ids::YELLOW_CANDLE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * candles (IntTag) = 0, 1, 2, 3 - * lit (ByteTag) = 0, 1 - */ - //}); - //$this->map(Ids::YELLOW_CANDLE_CAKE, function(Reader $in) : Block{ - /* - * TODO: Un-implemented block - * lit (ByteTag) = 0, 1 - */ - //}); } /** @throws BlockStateDeserializeException */ From eb8fb63409f788bf2f7152b9ad199c6e5665306d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 18:01:47 +0100 Subject: [PATCH 335/692] Added cartography and smithing tables these have working inventories, and their crafting menus will 'just work' once the items for the associated recipes have been implemented (maps, netherite). --- composer.lock | 12 ++--- src/block/BlockTypeIds.php | 4 +- src/block/CartographyTable.php | 44 +++++++++++++++++++ src/block/SmithingTable.php | 44 +++++++++++++++++++ src/block/VanillaBlocks.php | 10 +++++ .../inventory/CartographyTableInventory.php | 37 ++++++++++++++++ .../inventory/SmithingTableInventory.php | 37 ++++++++++++++++ .../CraftingManagerFromDataHelper.php | 3 +- src/crafting/ShapelessRecipeType.php | 6 ++- .../BlockObjectToBlockStateSerializer.php | 2 + .../BlockStateToBlockObjectDeserializer.php | 2 + src/network/mcpe/InventoryManager.php | 4 ++ src/network/mcpe/cache/CraftingDataCache.php | 2 + src/network/mcpe/convert/TypeConverter.php | 4 ++ 14 files changed, 202 insertions(+), 9 deletions(-) create mode 100644 src/block/CartographyTable.php create mode 100644 src/block/SmithingTable.php create mode 100644 src/block/inventory/CartographyTableInventory.php create mode 100644 src/block/inventory/SmithingTableInventory.php diff --git a/composer.lock b/composer.lock index 0544435b1..8f85da457 100644 --- a/composer.lock +++ b/composer.lock @@ -329,16 +329,16 @@ }, { "name": "pocketmine/bedrock-protocol", - "version": "11.0.0+bedrock-1.19.10", + "version": "11.0.3+bedrock-1.19.10", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockProtocol.git", - "reference": "705f928bd010ba093d8781d20006e4cd5f79f335" + "reference": "18879218f9d05685ab6f8f68df4cb9c548978657" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/705f928bd010ba093d8781d20006e4cd5f79f335", - "reference": "705f928bd010ba093d8781d20006e4cd5f79f335", + "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/18879218f9d05685ab6f8f68df4cb9c548978657", + "reference": "18879218f9d05685ab6f8f68df4cb9c548978657", "shasum": "" }, "require": { @@ -370,9 +370,9 @@ "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", "support": { "issues": "https://github.com/pmmp/BedrockProtocol/issues", - "source": "https://github.com/pmmp/BedrockProtocol/tree/11.0.0+bedrock-1.19.10" + "source": "https://github.com/pmmp/BedrockProtocol/tree/11.0.3+bedrock-1.19.10" }, - "time": "2022-07-12T23:47:47+00:00" + "time": "2022-07-14T16:54:49+00:00" }, { "name": "pocketmine/binaryutils", diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 11c6b87da..6958efb54 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -690,6 +690,8 @@ final class BlockTypeIds{ public const CAKE_WITH_DYED_CANDLE = 10663; public const WITHER_ROSE = 10664; public const HANGING_ROOTS = 10665; + public const CARTOGRAPHY_TABLE = 10666; + public const SMITHING_TABLE = 10667; - public const FIRST_UNUSED_BLOCK_ID = 10666; + public const FIRST_UNUSED_BLOCK_ID = 10668; } diff --git a/src/block/CartographyTable.php b/src/block/CartographyTable.php new file mode 100644 index 000000000..195c18070 --- /dev/null +++ b/src/block/CartographyTable.php @@ -0,0 +1,44 @@ +setCurrentWindow(new CartographyTableInventory($this->position)); + } + + return true; + } + + public function getFuelTime() : int{ + return 300; + } +} diff --git a/src/block/SmithingTable.php b/src/block/SmithingTable.php new file mode 100644 index 000000000..5c4976cae --- /dev/null +++ b/src/block/SmithingTable.php @@ -0,0 +1,44 @@ +setCurrentWindow(new SmithingTableInventory($this->position)); + } + + return true; + } + + public function getFuelTime() : int{ + return 300; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index a3d0514e4..3939bb3b7 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -141,6 +141,7 @@ use function mb_strtolower; * @method static Candle CANDLE() * @method static Carpet CARPET() * @method static Carrot CARROTS() + * @method static CartographyTable CARTOGRAPHY_TABLE() * @method static CarvedPumpkin CARVED_PUMPKIN() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() @@ -612,6 +613,7 @@ use function mb_strtolower; * @method static Opaque SHROOMLIGHT() * @method static ShulkerBox SHULKER_BOX() * @method static Slime SLIME() + * @method static SmithingTable SMITHING_TABLE() * @method static Furnace SMOKER() * @method static Opaque SMOOTH_BASALT() * @method static Opaque SMOOTH_QUARTZ() @@ -1158,6 +1160,7 @@ final class VanillaBlocks{ self::registerBlocksR17(); self::registerMudBlocks(); + self::registerCraftingTables(); self::registerOres(); self::registerWoodenBlocks(); } @@ -1356,6 +1359,13 @@ final class VanillaBlocks{ self::register("nether_gold_ore", new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); } + private static function registerCraftingTables() : void{ + //TODO: this is the same for all wooden crafting blocks + $craftingBlockBreakInfo = new BreakInfo(2.5, ToolType::AXE); + self::register("cartography_table", new CartographyTable(new BID(Ids::CARTOGRAPHY_TABLE), "Cartography Table", $craftingBlockBreakInfo)); + self::register("smithing_table", new SmithingTable(new BID(Ids::SMITHING_TABLE), "Smithing Table", $craftingBlockBreakInfo)); + } + private static function registerBlocksR13() : void{ self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", BreakInfo::instant())); diff --git a/src/block/inventory/CartographyTableInventory.php b/src/block/inventory/CartographyTableInventory.php new file mode 100644 index 000000000..7bd9146ac --- /dev/null +++ b/src/block/inventory/CartographyTableInventory.php @@ -0,0 +1,37 @@ +holder = $holder; + parent::__construct(2); + } +} diff --git a/src/block/inventory/SmithingTableInventory.php b/src/block/inventory/SmithingTableInventory.php new file mode 100644 index 000000000..a01b80cad --- /dev/null +++ b/src/block/inventory/SmithingTableInventory.php @@ -0,0 +1,37 @@ +holder = $holder; + parent::__construct(2); + } +} diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 74fe74a7f..e48b20ec5 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -213,7 +213,8 @@ final class CraftingManagerFromDataHelper{ $recipeType = match($recipe->block){ "crafting_table" => ShapelessRecipeType::CRAFTING(), "stonecutter" => ShapelessRecipeType::STONECUTTER(), - //TODO: Cartography Table + "smithing_table" => ShapelessRecipeType::SMITHING(), + "cartography_table" => ShapelessRecipeType::CARTOGRAPHY(), default => null }; if($recipeType === null){ diff --git a/src/crafting/ShapelessRecipeType.php b/src/crafting/ShapelessRecipeType.php index e7d3242d5..b115c22f4 100644 --- a/src/crafting/ShapelessRecipeType.php +++ b/src/crafting/ShapelessRecipeType.php @@ -31,7 +31,9 @@ use pocketmine\utils\EnumTrait; * @see build/generate-registry-annotations.php * @generate-registry-docblock * + * @method static ShapelessRecipeType CARTOGRAPHY() * @method static ShapelessRecipeType CRAFTING() + * @method static ShapelessRecipeType SMITHING() * @method static ShapelessRecipeType STONECUTTER() */ final class ShapelessRecipeType{ @@ -40,7 +42,9 @@ final class ShapelessRecipeType{ protected static function setup() : void{ self::registerAll( new self("crafting"), - new self("stonecutter") + new self("stonecutter"), + new self("smithing"), + new self("cartography") ); } } diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 7ca09189c..039b4aab1 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -443,6 +443,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeColor($block->getColor()); }); $this->map(Blocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); + $this->mapSimple(Blocks::CARTOGRAPHY_TABLE(), Ids::CARTOGRAPHY_TABLE); $this->map(Blocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ return Writer::create(Ids::CARVED_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); @@ -1205,6 +1206,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT); $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); $this->mapSimple(Blocks::SLIME(), Ids::SLIME); + $this->mapSimple(Blocks::SMITHING_TABLE(), Ids::SMITHING_TABLE); $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); $this->mapSimple(Blocks::SMOOTH_BASALT(), Ids::SMOOTH_BASALT); $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 7ca7bbef7..27fa0da74 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -261,6 +261,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setColor($in->readColor()); }); $this->map(Ids::CARROTS, fn(Reader $in) => Helper::decodeCrops(Blocks::CARROTS(), $in)); + $this->map(Ids::CARTOGRAPHY_TABLE, fn() => Blocks::CARTOGRAPHY_TABLE()); $this->map(Ids::CARVED_PUMPKIN, function(Reader $in) : Block{ return Blocks::CARVED_PUMPKIN() ->setFacing($in->readLegacyHorizontalFacing()); @@ -1055,6 +1056,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readFacingWithoutDown()); }); $this->map(Ids::SLIME, fn() => Blocks::SLIME()); + $this->map(Ids::SMITHING_TABLE, fn() => Blocks::SMITHING_TABLE()); $this->map(Ids::SMOKER, function(Reader $in) : Block{ return Blocks::SMOKER() ->setFacing($in->readHorizontalFacing()) diff --git a/src/network/mcpe/InventoryManager.php b/src/network/mcpe/InventoryManager.php index 4b7f870f8..723e02d13 100644 --- a/src/network/mcpe/InventoryManager.php +++ b/src/network/mcpe/InventoryManager.php @@ -26,11 +26,13 @@ namespace pocketmine\network\mcpe; use pocketmine\block\inventory\AnvilInventory; use pocketmine\block\inventory\BlockInventory; use pocketmine\block\inventory\BrewingStandInventory; +use pocketmine\block\inventory\CartographyTableInventory; use pocketmine\block\inventory\CraftingTableInventory; use pocketmine\block\inventory\EnchantInventory; use pocketmine\block\inventory\FurnaceInventory; use pocketmine\block\inventory\HopperInventory; use pocketmine\block\inventory\LoomInventory; +use pocketmine\block\inventory\SmithingTableInventory; use pocketmine\block\inventory\StonecutterInventory; use pocketmine\crafting\FurnaceType; use pocketmine\inventory\CreativeInventory; @@ -225,6 +227,8 @@ class InventoryManager{ $inv instanceof HopperInventory => WindowTypes::HOPPER, $inv instanceof CraftingTableInventory => WindowTypes::WORKBENCH, $inv instanceof StonecutterInventory => WindowTypes::STONECUTTER, + $inv instanceof CartographyTableInventory => WindowTypes::CARTOGRAPHY, + $inv instanceof SmithingTableInventory => WindowTypes::SMITHING_TABLE, default => WindowTypes::CONTAINER }; return [ContainerOpenPacket::blockInv($id, $windowType, $blockPosition)]; diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 84ff5e739..740576521 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -86,6 +86,8 @@ final class CraftingDataCache{ $typeTag = match($recipe->getType()->id()){ ShapelessRecipeType::CRAFTING()->id() => CraftingRecipeBlockName::CRAFTING_TABLE, ShapelessRecipeType::STONECUTTER()->id() => CraftingRecipeBlockName::STONECUTTER, + ShapelessRecipeType::CARTOGRAPHY()->id() => CraftingRecipeBlockName::SMITHING_TABLE, + ShapelessRecipeType::SMITHING()->id() => CraftingRecipeBlockName::SMITHING_TABLE, default => throw new AssumptionFailedError("Unreachable"), }; $recipesWithTypeIds[] = new ProtocolShapelessRecipe( diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 179fd8e8e..a0d4fcd8b 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -24,9 +24,11 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; use pocketmine\block\inventory\AnvilInventory; +use pocketmine\block\inventory\CartographyTableInventory; use pocketmine\block\inventory\CraftingTableInventory; use pocketmine\block\inventory\EnchantInventory; use pocketmine\block\inventory\LoomInventory; +use pocketmine\block\inventory\SmithingTableInventory; use pocketmine\block\inventory\StonecutterInventory; use pocketmine\block\VanillaBlocks; use pocketmine\crafting\ExactRecipeIngredient; @@ -257,6 +259,8 @@ class TypeConverter{ $current instanceof LoomInventory => UIInventorySlotOffset::LOOM, $current instanceof StonecutterInventory => [UIInventorySlotOffset::STONE_CUTTER_INPUT => StonecutterInventory::SLOT_INPUT], $current instanceof CraftingTableInventory => UIInventorySlotOffset::CRAFTING3X3_INPUT, + $current instanceof CartographyTableInventory => UIInventorySlotOffset::CARTOGRAPHY_TABLE, + $current instanceof SmithingTableInventory => UIInventorySlotOffset::SMITHING_TABLE, default => null }; if($slotMap !== null){ From b4ce5ed515b219ad94f4659a2d38c2312229103f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 19:16:15 +0100 Subject: [PATCH 336/692] ItemDeserializer: throw a more specific exception on unknown items --- src/data/bedrock/item/ItemDeserializer.php | 5 +++- .../item/ItemTypeDeserializeException.php | 2 +- .../item/UnsupportedItemTypeException.php | 28 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/data/bedrock/item/UnsupportedItemTypeException.php diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 86e41bcca..fce02de48 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -30,6 +30,7 @@ use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateDeserializer; +use pocketmine\data\bedrock\block\convert\UnsupportedBlockStateException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\EntityLegacyIds; @@ -71,6 +72,8 @@ final class ItemDeserializer{ //TODO: this is rough duct tape; we need a better way to deal with this try{ $block = $this->blockStateDeserializer->deserialize($blockData); + }catch(UnsupportedBlockStateException $e){ + throw new UnsupportedItemTypeException($e->getMessage(), 0, $e); }catch(BlockStateDeserializeException $e){ throw new ItemTypeDeserializeException("Failed to deserialize item data: " . $e->getMessage(), 0, $e); } @@ -80,7 +83,7 @@ final class ItemDeserializer{ } $id = $data->getName(); if(!isset($this->deserializers[$id])){ - throw new ItemTypeDeserializeException("No deserializer found for ID $id"); + throw new UnsupportedItemTypeException("No deserializer found for ID $id"); } return ($this->deserializers[$id])($data); diff --git a/src/data/bedrock/item/ItemTypeDeserializeException.php b/src/data/bedrock/item/ItemTypeDeserializeException.php index 21ee91f13..53ae79053 100644 --- a/src/data/bedrock/item/ItemTypeDeserializeException.php +++ b/src/data/bedrock/item/ItemTypeDeserializeException.php @@ -23,6 +23,6 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; -final class ItemTypeDeserializeException extends \RuntimeException{ +class ItemTypeDeserializeException extends \RuntimeException{ } diff --git a/src/data/bedrock/item/UnsupportedItemTypeException.php b/src/data/bedrock/item/UnsupportedItemTypeException.php new file mode 100644 index 000000000..7f579fd13 --- /dev/null +++ b/src/data/bedrock/item/UnsupportedItemTypeException.php @@ -0,0 +1,28 @@ + Date: Thu, 14 Jul 2022 20:39:09 +0100 Subject: [PATCH 337/692] Added netherite blocks and items --- src/block/Block.php | 4 ++ src/block/BlockTypeIds.php | 3 +- src/block/VanillaBlocks.php | 5 +++ .../BlockObjectToBlockStateSerializer.php | 1 + .../BlockStateToBlockObjectDeserializer.php | 1 + src/data/bedrock/item/ItemDeserializer.php | 22 +++++------ src/data/bedrock/item/ItemSerializer.php | 11 ++++++ src/entity/object/ItemEntity.php | 4 ++ src/item/Armor.php | 4 ++ src/item/ArmorTypeInfo.php | 12 +++++- src/item/Item.php | 7 ++++ src/item/ItemBlock.php | 4 ++ src/item/ItemTypeIds.php | 3 +- src/item/StringToItemParser.php | 12 ++++++ src/item/TieredTool.php | 4 ++ src/item/ToolTier.php | 4 +- src/item/VanillaItems.php | 37 +++++++++++++++++-- 17 files changed, 119 insertions(+), 19 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 591f54922..20f77c8f1 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -504,6 +504,10 @@ class Block{ return 64; } + public function isFireProofAsItem() : bool{ + return false; + } + /** * Returns the chance that the block will catch fire from nearby fire sources. Higher values lead to faster catching * fire. diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 6958efb54..8ef7a2ee2 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -692,6 +692,7 @@ final class BlockTypeIds{ public const HANGING_ROOTS = 10665; public const CARTOGRAPHY_TABLE = 10666; public const SMITHING_TABLE = 10667; + public const NETHERITE = 10668; - public const FIRST_UNUSED_BLOCK_ID = 10668; + public const FIRST_UNUSED_BLOCK_ID = 10669; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 3939bb3b7..c3a76bbeb 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -496,6 +496,7 @@ use function mb_strtolower; * @method static Wall MUD_BRICK_WALL() * @method static MushroomStem MUSHROOM_STEM() * @method static Mycelium MYCELIUM() + * @method static Opaque NETHERITE() * @method static Netherrack NETHERRACK() * @method static Opaque NETHER_BRICKS() * @method static Fence NETHER_BRICK_FENCE() @@ -1380,6 +1381,10 @@ final class VanillaBlocks{ $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0))); + $netheriteBreakInfo = new BreakInfo(50, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0); + self::register("netherite", new class(new BID(Ids::NETHERITE), "Netherite Block", $netheriteBreakInfo) extends Opaque{ + public function isFireProofAsItem() : bool{ return true; } + }); $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 039b4aab1..71487e461 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1033,6 +1033,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); + $this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK); $this->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK); $this->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK); $this->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 27fa0da74..8923008df 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -840,6 +840,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); }); $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); + $this->map(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE()); $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); $this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS()); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index fce02de48..dfa463bc8 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -458,17 +458,17 @@ final class ItemDeserializer{ $this->map(Ids::NETHER_STAR, fn() => Items::NETHER_STAR()); $this->map(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()->asItem()); $this->map(Ids::NETHERBRICK, fn() => Items::NETHER_BRICK()); - //TODO: minecraft:netherite_axe - //TODO: minecraft:netherite_boots - //TODO: minecraft:netherite_chestplate - //TODO: minecraft:netherite_helmet - //TODO: minecraft:netherite_hoe - //TODO: minecraft:netherite_ingot - //TODO: minecraft:netherite_leggings - //TODO: minecraft:netherite_pickaxe - //TODO: minecraft:netherite_scrap - //TODO: minecraft:netherite_shovel - //TODO: minecraft:netherite_sword + $this->map(Ids::NETHERITE_AXE, fn() => Items::NETHERITE_AXE()); + $this->map(Ids::NETHERITE_BOOTS, fn() => Items::NETHERITE_BOOTS()); + $this->map(Ids::NETHERITE_CHESTPLATE, fn() => Items::NETHERITE_CHESTPLATE()); + $this->map(Ids::NETHERITE_HELMET, fn() => Items::NETHERITE_HELMET()); + $this->map(Ids::NETHERITE_HOE, fn() => Items::NETHERITE_HOE()); + $this->map(Ids::NETHERITE_INGOT, fn() => Items::NETHERITE_INGOT()); + $this->map(Ids::NETHERITE_LEGGINGS, fn() => Items::NETHERITE_LEGGINGS()); + $this->map(Ids::NETHERITE_PICKAXE, fn() => Items::NETHERITE_PICKAXE()); + $this->map(Ids::NETHERITE_SCRAP, fn() => Items::NETHERITE_SCRAP()); + $this->map(Ids::NETHERITE_SHOVEL, fn() => Items::NETHERITE_SHOVEL()); + $this->map(Ids::NETHERITE_SWORD, fn() => Items::NETHERITE_SWORD()); //TODO: minecraft:npc_spawn_egg $this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT()); $this->map(Ids::OAK_SIGN, fn() => Blocks::OAK_SIGN()->asItem()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 1da1395c6..b652d3a3a 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -436,6 +436,17 @@ final class ItemSerializer{ $this->map(Items::MINECART(), self::id(Ids::MINECART)); $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); + $this->map(Items::NETHERITE_AXE(), self::id(Ids::NETHERITE_AXE)); + $this->map(Items::NETHERITE_BOOTS(), self::id(Ids::NETHERITE_BOOTS)); + $this->map(Items::NETHERITE_CHESTPLATE(), self::id(Ids::NETHERITE_CHESTPLATE)); + $this->map(Items::NETHERITE_HELMET(), self::id(Ids::NETHERITE_HELMET)); + $this->map(Items::NETHERITE_HOE(), self::id(Ids::NETHERITE_HOE)); + $this->map(Items::NETHERITE_INGOT(), self::id(Ids::NETHERITE_INGOT)); + $this->map(Items::NETHERITE_LEGGINGS(), self::id(Ids::NETHERITE_LEGGINGS)); + $this->map(Items::NETHERITE_PICKAXE(), self::id(Ids::NETHERITE_PICKAXE)); + $this->map(Items::NETHERITE_SCRAP(), self::id(Ids::NETHERITE_SCRAP)); + $this->map(Items::NETHERITE_SHOVEL(), self::id(Ids::NETHERITE_SHOVEL)); + $this->map(Items::NETHERITE_SWORD(), self::id(Ids::NETHERITE_SWORD)); $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); $this->map(Items::NETHER_QUARTZ(), self::id(Ids::QUARTZ)); $this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR)); diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index b6b77ead9..1c6f0ae13 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -200,6 +200,10 @@ class ItemEntity extends Entity{ return $this->item; } + public function isFireProof() : bool{ + return $this->item->isFireProof(); + } + public function canCollideWith(Entity $entity) : bool{ return false; } diff --git a/src/item/Armor.php b/src/item/Armor.php index 19947dd45..5304309e3 100644 --- a/src/item/Armor.php +++ b/src/item/Armor.php @@ -68,6 +68,10 @@ class Armor extends Durable{ return 1; } + public function isFireProof() : bool{ + return $this->armorInfo->isFireProof(); + } + /** * Returns the dyed colour of this armour piece. This generally only applies to leather armour. */ diff --git a/src/item/ArmorTypeInfo.php b/src/item/ArmorTypeInfo.php index c6b25bd6a..580b73df3 100644 --- a/src/item/ArmorTypeInfo.php +++ b/src/item/ArmorTypeInfo.php @@ -27,7 +27,9 @@ class ArmorTypeInfo{ public function __construct( private int $defensePoints, private int $maxDurability, - private int $armorSlot + private int $armorSlot, + private int $toughness = 0, + private bool $fireProof = false ){} public function getDefensePoints() : int{ @@ -41,4 +43,12 @@ class ArmorTypeInfo{ public function getArmorSlot() : int{ return $this->armorSlot; } + + public function getToughness() : int{ + return $this->toughness; + } + + public function isFireProof() : bool{ + return $this->fireProof; + } } diff --git a/src/item/Item.php b/src/item/Item.php index 9dbc1a4ab..4f0b814bf 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -467,6 +467,13 @@ class Item implements \JsonSerializable{ return $item; } + /** + * Returns whether this item can survive being dropped into lava, or fire. + */ + public function isFireProof() : bool{ + return false; + } + /** * Returns how many points of damage this item will deal to an entity when used as a weapon. */ diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 8eb46cbdd..4ce6c2947 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -63,6 +63,10 @@ final class ItemBlock extends Item{ return $this->getBlock()->getFuelTime(); } + public function isFireProof() : bool{ + return $this->getBlock()->isFireProofAsItem(); + } + public function getMaxStackSize() : int{ return $this->getBlock()->getMaxStackSize(); } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index 6db7f7536..ff6ef0a04 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -293,6 +293,7 @@ final class ItemTypeIds{ public const RAW_IRON = 20254; public const RAW_GOLD = 20255; public const SPYGLASS = 20256; + public const NETHERITE_SCRAP = 20257; - public const FIRST_UNUSED_ITEM_ID = 20257; + public const FIRST_UNUSED_ITEM_ID = 20258; } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index fb034e109..c96f2ead0 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -780,6 +780,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("nether_wart", fn() => Blocks::NETHER_WART()); $result->registerBlock("nether_wart_block", fn() => Blocks::NETHER_WART_BLOCK()); $result->registerBlock("nether_wart_plant", fn() => Blocks::NETHER_WART()); + $result->registerBlock("netherite_block", fn() => Blocks::NETHERITE()); $result->registerBlock("netherrack", fn() => Blocks::NETHERRACK()); $result->registerBlock("netherreactor", fn() => Blocks::NETHER_REACTOR_CORE()); $result->registerBlock("normal_stone_stairs", fn() => Blocks::STONE_STAIRS()); @@ -1325,6 +1326,17 @@ final class StringToItemParser extends StringToTParser{ $result->register("nether_quartz", fn() => Items::NETHER_QUARTZ()); $result->register("nether_star", fn() => Items::NETHER_STAR()); $result->register("netherbrick", fn() => Items::NETHER_BRICK()); + $result->register("netherite_axe", fn() => Items::NETHERITE_AXE()); + $result->register("netherite_boots", fn() => Items::NETHERITE_BOOTS()); + $result->register("netherite_chestplate", fn() => Items::NETHERITE_CHESTPLATE()); + $result->register("netherite_helmet", fn() => Items::NETHERITE_HELMET()); + $result->register("netherite_hoe", fn() => Items::NETHERITE_HOE()); + $result->register("netherite_ingot", fn() => Items::NETHERITE_INGOT()); + $result->register("netherite_leggings", fn() => Items::NETHERITE_LEGGINGS()); + $result->register("netherite_pickaxe", fn() => Items::NETHERITE_PICKAXE()); + $result->register("netherite_scrap", fn() => Items::NETHERITE_SCRAP()); + $result->register("netherite_shovel", fn() => Items::NETHERITE_SHOVEL()); + $result->register("netherite_sword", fn() => Items::NETHERITE_SWORD()); $result->register("netherstar", fn() => Items::NETHER_STAR()); $result->register("night_vision_potion", fn() => Items::POTION()->setType(PotionType::NIGHT_VISION())); $result->register("night_vision_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::NIGHT_VISION())); diff --git a/src/item/TieredTool.php b/src/item/TieredTool.php index 0975d68d5..e7d4f2201 100644 --- a/src/item/TieredTool.php +++ b/src/item/TieredTool.php @@ -50,4 +50,8 @@ abstract class TieredTool extends Tool{ return 0; } + + public function isFireProof() : bool{ + return $this->tier->equals(ToolTier::NETHERITE()); + } } diff --git a/src/item/ToolTier.php b/src/item/ToolTier.php index 08d7c52b6..231e233c3 100644 --- a/src/item/ToolTier.php +++ b/src/item/ToolTier.php @@ -34,6 +34,7 @@ use pocketmine\utils\EnumTrait; * @method static ToolTier DIAMOND() * @method static ToolTier GOLD() * @method static ToolTier IRON() + * @method static ToolTier NETHERITE() * @method static ToolTier STONE() * @method static ToolTier WOOD() */ @@ -48,7 +49,8 @@ final class ToolTier{ new self("gold", 2, 33, 5, 12), new self("stone", 3, 132, 6, 4), new self("iron", 4, 251, 7, 6), - new self("diamond", 5, 1562, 8, 8) + new self("diamond", 5, 1562, 8, 8), + new self("netherite", 6, 2032, 9, 9) ); } diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index ffdab1910..b229039ec 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -210,6 +210,17 @@ use pocketmine\world\World; * @method static Minecart MINECART() * @method static MushroomStew MUSHROOM_STEW() * @method static Item NAUTILUS_SHELL() + * @method static Axe NETHERITE_AXE() + * @method static Armor NETHERITE_BOOTS() + * @method static Armor NETHERITE_CHESTPLATE() + * @method static Armor NETHERITE_HELMET() + * @method static Hoe NETHERITE_HOE() + * @method static Item NETHERITE_INGOT() + * @method static Armor NETHERITE_LEGGINGS() + * @method static Pickaxe NETHERITE_PICKAXE() + * @method static Item NETHERITE_SCRAP() + * @method static Shovel NETHERITE_SHOVEL() + * @method static Sword NETHERITE_SWORD() * @method static Item NETHER_BRICK() * @method static Item NETHER_QUARTZ() * @method static Item NETHER_STAR() @@ -446,6 +457,12 @@ final class VanillaItems{ self::register("nether_brick", new Item(new IID(Ids::NETHER_BRICK), "Nether Brick")); self::register("nether_quartz", new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz")); self::register("nether_star", new Item(new IID(Ids::NETHER_STAR), "Nether Star")); + self::register("netherite_ingot", new class(new IID(Ids::NETHERITE_INGOT), "Netherite Ingot") extends Item{ + public function isFireProof() : bool{ return true; } + }); + self::register("netherite_scrap", new class(new IID(Ids::NETHERITE_SCRAP), "Netherite Scrap") extends Item{ + public function isFireProof() : bool{ return true; } + }); self::register("oak_sign", new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN())); self::register("painting", new PaintingItem(new IID(Ids::PAINTING), "Painting")); self::register("paper", new Item(new IID(Ids::PAPER), "Paper")); @@ -544,51 +561,63 @@ final class VanillaItems{ self::register("diamond_axe", new Axe(new IID(Ids::DIAMOND_AXE), "Diamond Axe", ToolTier::DIAMOND())); self::register("golden_axe", new Axe(new IID(Ids::GOLDEN_AXE), "Golden Axe", ToolTier::GOLD())); self::register("iron_axe", new Axe(new IID(Ids::IRON_AXE), "Iron Axe", ToolTier::IRON())); + self::register("netherite_axe", new Axe(new IID(Ids::NETHERITE_AXE), "Netherite Axe", ToolTier::NETHERITE())); self::register("stone_axe", new Axe(new IID(Ids::STONE_AXE), "Stone Axe", ToolTier::STONE())); self::register("wooden_axe", new Axe(new IID(Ids::WOODEN_AXE), "Wooden Axe", ToolTier::WOOD())); self::register("diamond_hoe", new Hoe(new IID(Ids::DIAMOND_HOE), "Diamond Hoe", ToolTier::DIAMOND())); self::register("golden_hoe", new Hoe(new IID(Ids::GOLDEN_HOE), "Golden Hoe", ToolTier::GOLD())); self::register("iron_hoe", new Hoe(new IID(Ids::IRON_HOE), "Iron Hoe", ToolTier::IRON())); + self::register("netherite_hoe", new Hoe(new IID(Ids::NETHERITE_HOE), "Netherite Hoe", ToolTier::NETHERITE())); self::register("stone_hoe", new Hoe(new IID(Ids::STONE_HOE), "Stone Hoe", ToolTier::STONE())); self::register("wooden_hoe", new Hoe(new IID(Ids::WOODEN_HOE), "Wooden Hoe", ToolTier::WOOD())); self::register("diamond_pickaxe", new Pickaxe(new IID(Ids::DIAMOND_PICKAXE), "Diamond Pickaxe", ToolTier::DIAMOND())); self::register("golden_pickaxe", new Pickaxe(new IID(Ids::GOLDEN_PICKAXE), "Golden Pickaxe", ToolTier::GOLD())); self::register("iron_pickaxe", new Pickaxe(new IID(Ids::IRON_PICKAXE), "Iron Pickaxe", ToolTier::IRON())); + self::register("netherite_pickaxe", new Pickaxe(new IID(Ids::NETHERITE_PICKAXE), "Netherite Pickaxe", ToolTier::NETHERITE())); self::register("stone_pickaxe", new Pickaxe(new IID(Ids::STONE_PICKAXE), "Stone Pickaxe", ToolTier::STONE())); self::register("wooden_pickaxe", new Pickaxe(new IID(Ids::WOODEN_PICKAXE), "Wooden Pickaxe", ToolTier::WOOD())); self::register("diamond_shovel", new Shovel(new IID(Ids::DIAMOND_SHOVEL), "Diamond Shovel", ToolTier::DIAMOND())); self::register("golden_shovel", new Shovel(new IID(Ids::GOLDEN_SHOVEL), "Golden Shovel", ToolTier::GOLD())); self::register("iron_shovel", new Shovel(new IID(Ids::IRON_SHOVEL), "Iron Shovel", ToolTier::IRON())); + self::register("netherite_shovel", new Shovel(new IID(Ids::NETHERITE_SHOVEL), "Netherite Shovel", ToolTier::NETHERITE())); self::register("stone_shovel", new Shovel(new IID(Ids::STONE_SHOVEL), "Stone Shovel", ToolTier::STONE())); self::register("wooden_shovel", new Shovel(new IID(Ids::WOODEN_SHOVEL), "Wooden Shovel", ToolTier::WOOD())); self::register("diamond_sword", new Sword(new IID(Ids::DIAMOND_SWORD), "Diamond Sword", ToolTier::DIAMOND())); self::register("golden_sword", new Sword(new IID(Ids::GOLDEN_SWORD), "Golden Sword", ToolTier::GOLD())); self::register("iron_sword", new Sword(new IID(Ids::IRON_SWORD), "Iron Sword", ToolTier::IRON())); + self::register("netherite_sword", new Sword(new IID(Ids::NETHERITE_SWORD), "Netherite Sword", ToolTier::NETHERITE())); self::register("stone_sword", new Sword(new IID(Ids::STONE_SWORD), "Stone Sword", ToolTier::STONE())); self::register("wooden_sword", new Sword(new IID(Ids::WOODEN_SWORD), "Wooden Sword", ToolTier::WOOD())); } private static function registerArmorItems() : void{ self::register("chainmail_boots", new Armor(new IID(Ids::CHAINMAIL_BOOTS), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); - self::register("diamond_boots", new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); + self::register("diamond_boots", new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET, 2))); self::register("golden_boots", new Armor(new IID(Ids::GOLDEN_BOOTS), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); self::register("iron_boots", new Armor(new IID(Ids::IRON_BOOTS), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); self::register("leather_boots", new Armor(new IID(Ids::LEATHER_BOOTS), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); + self::register("netherite_boots", new Armor(new IID(Ids::NETHERITE_BOOTS), "Netherite Boots", new ArmorTypeInfo(3, 482, ArmorInventory::SLOT_FEET, 3, true))); + self::register("chainmail_chestplate", new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); - self::register("diamond_chestplate", new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); + self::register("diamond_chestplate", new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST, 2))); self::register("golden_chestplate", new Armor(new IID(Ids::GOLDEN_CHESTPLATE), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); self::register("iron_chestplate", new Armor(new IID(Ids::IRON_CHESTPLATE), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); self::register("leather_tunic", new Armor(new IID(Ids::LEATHER_TUNIC), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); + self::register("netherite_chestplate", new Armor(new IID(Ids::NETHERITE_CHESTPLATE), "Netherite Chestplate", new ArmorTypeInfo(8, 593, ArmorInventory::SLOT_CHEST, 3, true))); + self::register("chainmail_helmet", new Armor(new IID(Ids::CHAINMAIL_HELMET), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - self::register("diamond_helmet", new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); + self::register("diamond_helmet", new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD, 2))); self::register("golden_helmet", new Armor(new IID(Ids::GOLDEN_HELMET), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); self::register("iron_helmet", new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); self::register("leather_cap", new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); + self::register("netherite_helmet", new Armor(new IID(Ids::NETHERITE_HELMET), "Netherite Helmet", new ArmorTypeInfo(3, 408, ArmorInventory::SLOT_HEAD, 3, true))); + self::register("chainmail_leggings", new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); - self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); + self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS, 2))); self::register("golden_leggings", new Armor(new IID(Ids::GOLDEN_LEGGINGS), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); self::register("iron_leggings", new Armor(new IID(Ids::IRON_LEGGINGS), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); self::register("leather_pants", new Armor(new IID(Ids::LEATHER_PANTS), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); + self::register("netherite_leggings", new Armor(new IID(Ids::NETHERITE_LEGGINGS), "Netherite Leggings", new ArmorTypeInfo(6, 556, ArmorInventory::SLOT_LEGS, 3, true))); } } From 21ed5a450fda51894e94c1c648c2987efa9d47af Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 20:42:16 +0100 Subject: [PATCH 338/692] Updated BlockFactory consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 50f360248..f1852b0d9 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 07786dc4bc60fb9771a4e168350ddd5476670044 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 22:51:12 +0100 Subject: [PATCH 339/692] RuntimeDataWriter: fixed doc comment --- src/data/runtime/RuntimeDataWriter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index c10de5cea..c475e4428 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -52,7 +52,7 @@ final class RuntimeDataWriter{ return $this; } - /** @param int $bits *@return $this */ + /** @return $this */ public function writeBoundedInt(int $bits, int $min, int $max, int $value) : self{ if($value < $min || $value > $max){ throw new \InvalidArgumentException("Value $value is outside the range $min - $max"); From c15c59ae0d7aab25a4f212c9ca8f555a660accce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 22:52:07 +0100 Subject: [PATCH 340/692] changelog for 5.0.0-ALPHA2 [ci skip] --- changelogs/5.0-alpha.md | 114 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index eade91d27..66f338047 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -305,3 +305,117 @@ Again, it's acknowledged this is rather more cumbersome than it should be, but t - The following classes have been added: - `pocketmine\world\format\io\GlobalBlockStateHandlers` - `pocketmine\world\format\io\GlobalItemDataHandlers` + +# 5.0.0-ALPHA2 +Released 14th July 2022. + +## Core +- Reduced memory usage of the server on startup. +- Fixed error spam when loading item frames without items in them. + +## Gameplay +### Blocks +- Added the following new blocks: + - Cakes with Candle & Dyed Candle + - Candle & Dyed Candle + - Cartography Table (not currently usable due to maps not being implemented) + - Copper block (random oxidation not yet implemented) + - Cut Copper block, stairs and slabs (random oxidation not yet implemented) + - Crying Obsidian + - Gilded Blackstone + - Glow Item Frame + - Hanging Roots + - Lightning Rod + - Netherite Block + - Smithing Table + - Tinted Glass + - Warped Wart Block + - Wither Rose + +### Items +- Added the following new items: + - Honey Bottle + - Netherite Axe + - Netherite Boots + - Netherite Chestplate + - Netherite Helmet + - Netherite Ingot + - Netherite Leggings + - Netherite Pickaxe + - Netherite Scrap + - Netherite Shovel + - Netherite Sword + +## API +### `pocketmine\block` +- Dependency between `BlockFactory` and `VanillaBlocks` has been inverted. + - Now, blocks are defined in `VanillaBlocks`, and automatically registered in `BlockFactory`. + - Manual registration in `BlockFactory` is still required for custom blocks. + - `BlockFactory` now has only one purpose, which is to map internal blockstate IDs to `Block` objects when reading blocks from chunks. +- The following new API methods have been added: + - `public Block->isFireProofAsItem()` + - `public Block->onProjectileHit()` + - `public ItemFrame->isGlowing()` + - `public ItemFrame->setGlowing()` +- The following new classes have been added: + - `BaseCake` + - `CakeWithCandle` + - `CakeWithDyedCandle` + - `Candle` + - `CartographyTable` + - `CopperSlab` + - `CopperStairs` + - `Copper` + - `DyedCandle` + - `GildedBlackstone` + - `HangingRoots` + - `LightningRod` + - `SmithingTable` + - `WitherRose` + - `utils\CandleTrait` + - `utils\CopperOxidation` + - `utils\CopperTrait` + +### `pocketmine\crafting` +- The following enum classes have new members: + - `ShapelessRecipeType` has new members `CARTOGRAPHY` and `SMITHING` + +### `pocketmine\data` +- `LegacyToStringBidirectionalIdMap` has been reduced to `LegacyToStringIdMap`. + - Since we never map from string ID to legacy ID, bidirectional mapping is no longer necessary. + - This affects the following subclasses: + - `LegacyBiomeIdToStringIdMap` + - `LegacyBlockIdToStringIdMap` + - `LegacyEntityIdToStringIdMap` + - `LegacyItemIdToStringIdMap` +- The following internal API methods have been added: + - `public LegacyToStringIdMap->add(string $string, int $legacy) : void` - adds a mapping from a custom legacy ID to custom string ID, needed for upgrading old saved data + - `public LegacyBlockStateMapper->addMapping(string $stringId, int $intId, int $meta, BlockStateData $stateData) : void` - adds a mapping from legacy block data to a modern blockstate, needed for upgrading old saved data + - `public BlockStateData->getState(string $name) : ?Tag` +- The following internal API methods have signature changes: + - `BlockStateData->__construct()` now accepts `array for `$states` instead of `CompoundTag` + - `BlockStateData->getStates()` now returns `array` instead of `CompoundTag` (allows reducing memory usage) +- The following classes have been added: + - `UnsupportedItemTypeException` + +### `pocketmine\item` +- `ItemFactory` has been removed. + - Vanilla item registration is now done via `VanillaItems`. + - The procedure for registering a custom item is the same as in ALPHA1, minus the `ItemFactory` step. +- The following API methods have been added: + - `public ArmorTypeInfo->getToughness() : int` + - `public ArmorTypeInfo->isFireProof() : bool` + - `public Item->isFireProof() : bool` +- The following API methods have signature changes: + - `ArmorTypeInfo->__construct()` now accepts optional parameters `int $toughness` and `bool $fireProof` +- The following classes have been added: + - `HoneyBottle` +- The following enums have new members: + - `ToolTier` has new member `NETHERITE` + +### `pocketmine\world` +- The following API methods have signature changes: + - `SubChunk->__construct()` parameter `$blocks` has been renamed to `$blockLayers`. +- The following classes have been added: + - `CopperWaxApplySound` + - `CopperWaxRemoveSound` From 66f2116e57cfff32f3529d1df5c14efee8b93fb9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 22:54:28 +0100 Subject: [PATCH 341/692] Release 5.0.0-ALPHA2 --- changelogs/5.0-alpha.md | 1 + src/VersionInfo.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 66f338047..3e3c1340f 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -377,6 +377,7 @@ Released 14th July 2022. - `utils\CopperTrait` ### `pocketmine\crafting` +- JSON models have been updated to reflect updated crafting data format. - The following enum classes have new members: - `ShapelessRecipeType` has new members `CARTOGRAPHY` and `SMITHING` diff --git a/src/VersionInfo.php b/src/VersionInfo.php index b74de0e60..c8c276527 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA2"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From c7f5215a516bdec635a740c8d3681d804bf5bf50 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Jul 2022 22:54:29 +0100 Subject: [PATCH 342/692] 5.0.0-ALPHA3 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index c8c276527..d06ebbdd9 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA2"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA3"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From d0ff6d2e365dad0fa16a320d78f6d6e52be18005 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 16 Jul 2022 19:50:33 +0100 Subject: [PATCH 343/692] Enable various types of interaction to return items to the player, without needing to have a bunch of boilerplate creative mode and held item checks it became glaringly obvious that this was needed because of #4827 and #4868. this is further needed with the addition of cauldrons. --- src/block/Anvil.php | 2 +- src/block/Bamboo.php | 2 +- src/block/BambooSapling.php | 2 +- src/block/Barrel.php | 2 +- src/block/BaseCake.php | 2 +- src/block/Bed.php | 2 +- src/block/Bell.php | 2 +- src/block/Block.php | 8 ++- src/block/BrewingStand.php | 2 +- src/block/Button.php | 2 +- src/block/Cake.php | 4 +- src/block/CakeWithCandle.php | 6 +-- src/block/CartographyTable.php | 2 +- src/block/ChemistryTable.php | 2 +- src/block/Chest.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/CraftingTable.php | 2 +- src/block/Crops.php | 2 +- src/block/DaylightSensor.php | 2 +- src/block/Dirt.php | 2 +- src/block/Door.php | 2 +- src/block/DragonEgg.php | 2 +- src/block/EnchantingTable.php | 2 +- src/block/EnderChest.php | 2 +- src/block/FenceGate.php | 2 +- src/block/FlowerPot.php | 2 +- src/block/Furnace.php | 2 +- src/block/Grass.php | 2 +- src/block/Hopper.php | 2 +- src/block/Ice.php | 4 +- src/block/ItemFrame.php | 2 +- src/block/Jukebox.php | 6 +-- src/block/Lectern.php | 2 +- src/block/Lever.php | 2 +- src/block/Light.php | 2 +- src/block/Loom.php | 2 +- src/block/Pumpkin.php | 2 +- src/block/RedstoneComparator.php | 2 +- src/block/RedstoneOre.php | 2 +- src/block/RedstoneRepeater.php | 2 +- src/block/Sapling.php | 2 +- src/block/SeaPickle.php | 4 +- src/block/ShulkerBox.php | 2 +- src/block/SmithingTable.php | 2 +- src/block/Stonecutter.php | 2 +- src/block/Sugarcane.php | 2 +- src/block/SweetBerryBush.php | 2 +- src/block/TNT.php | 6 +-- src/block/Trapdoor.php | 2 +- src/block/Wood.php | 2 +- src/block/utils/CandleTrait.php | 2 +- src/block/utils/CopperTrait.php | 2 +- src/item/Armor.php | 11 ++-- src/item/Axe.php | 4 +- src/item/Bow.php | 2 +- src/item/Bucket.php | 15 ++---- src/item/FlintSteel.php | 2 +- src/item/Hoe.php | 4 +- src/item/Item.php | 20 +++++-- src/item/LiquidBucket.php | 7 ++- src/item/PaintingItem.php | 2 +- src/item/Pickaxe.php | 4 +- src/item/ProjectileItem.php | 2 +- src/item/Shears.php | 2 +- src/item/Shovel.php | 4 +- src/item/SpawnEgg.php | 2 +- src/item/Sword.php | 4 +- src/player/Player.php | 90 ++++++++++++++++++-------------- src/world/World.php | 29 +++++----- 69 files changed, 177 insertions(+), 155 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index ef8ef3f62..aed4dac0b 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -89,7 +89,7 @@ class Anvil extends Transparent implements Fallable{ return SupportType::NONE(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $player->setCurrentWindow(new AnvilInventory($this->position)); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index c8be857b0..61cb7c665 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -149,7 +149,7 @@ class Bamboo extends Transparent{ return $top; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer){ $top = $this->seekToTop(); if($top->grow(self::getMaxHeight($top->position->getFloorX(), $top->position->getFloorZ()), mt_rand(1, 2), $player)){ diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index e1f23c565..d005f3764 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -73,7 +73,7 @@ final class BambooSapling extends Flowable{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer || $item instanceof ItemBamboo){ if($this->grow($player)){ $item->pop(); diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 2efef6bbc..14ef97e09 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -81,7 +81,7 @@ class Barrel extends Opaque{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $barrel = $this->position->getWorld()->getTile($this->position); if($barrel instanceof TileBarrel){ diff --git a/src/block/BaseCake.php b/src/block/BaseCake.php index 5fcca644a..21fd6336a 100644 --- a/src/block/BaseCake.php +++ b/src/block/BaseCake.php @@ -54,7 +54,7 @@ abstract class BaseCake extends Transparent implements FoodSource{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ return $player->consumeObject($this); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 4fd65e909..4bf4dac23 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -130,7 +130,7 @@ class Bed extends Transparent{ return null; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $other = $this->getOtherHalf(); $playerPos = $player->getPosition(); diff --git a/src/block/Bell.php b/src/block/Bell.php index bc13a3324..3f6077430 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -139,7 +139,7 @@ final class Bell extends Transparent{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $faceHit = Facing::opposite($player->getHorizontalFacing()); if($this->attachmentType->equals(BellAttachmentType::CEILING())){ diff --git a/src/block/Block.php b/src/block/Block.php index 20f77c8f1..d521cb522 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -275,8 +275,10 @@ class Block{ /** * Do the actions needed so the block is broken with the Item + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if full) */ - public function onBreak(Item $item, ?Player $player = null) : bool{ + public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ if(($t = $this->position->getWorld()->getTile($this->position)) !== null){ $t->onBlockDestroyed(); } @@ -315,8 +317,10 @@ class Block{ /** * Do actions when interacted by Item. Returns if it has done anything + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ return false; } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index ee39b0ea3..c35576d58 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -118,7 +118,7 @@ class BrewingStand extends Transparent{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $stand = $this->position->getWorld()->getTile($this->position); if($stand instanceof TileBrewingStand && $stand->canOpenWith($item->getCustomName())){ diff --git a/src/block/Button.php b/src/block/Button.php index 6cdcae351..1ffca4387 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -69,7 +69,7 @@ abstract class Button extends Flowable{ abstract protected function getActivationTime() : int; - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if(!$this->pressed){ $this->pressed = true; $this->position->getWorld()->setBlock($this->position, $this); diff --git a/src/block/Cake.php b/src/block/Cake.php index 31d1c3ad9..e6b152ce0 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -70,7 +70,7 @@ class Cake extends BaseCake{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof ItemBlock){ $block = $item->getBlock(); $resultBlock = null; @@ -87,7 +87,7 @@ class Cake extends BaseCake{ } } - return parent::onInteract($item, $face, $clickVector, $player); + return parent::onInteract($item, $face, $clickVector, $player, $returnedItems); } public function getResidue() : Block{ diff --git a/src/block/CakeWithCandle.php b/src/block/CakeWithCandle.php index 63278ea36..187442cd9 100644 --- a/src/block/CakeWithCandle.php +++ b/src/block/CakeWithCandle.php @@ -51,12 +51,12 @@ class CakeWithCandle extends BaseCake{ return VanillaBlocks::CANDLE(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($this->onInteractCandle($item, $face, $clickVector, $player)){ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($this->onInteractCandle($item, $face, $clickVector, $player, $returnedItems)){ return true; } - return parent::onInteract($item, $face, $clickVector, $player); + return parent::onInteract($item, $face, $clickVector, $player, $returnedItems); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/CartographyTable.php b/src/block/CartographyTable.php index 195c18070..67d950c5a 100644 --- a/src/block/CartographyTable.php +++ b/src/block/CartographyTable.php @@ -30,7 +30,7 @@ use pocketmine\player\Player; final class CartographyTable extends Opaque{ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $player->setCurrentWindow(new CartographyTableInventory($this->position)); } diff --git a/src/block/ChemistryTable.php b/src/block/ChemistryTable.php index d1e008d0e..27fb63674 100644 --- a/src/block/ChemistryTable.php +++ b/src/block/ChemistryTable.php @@ -33,7 +33,7 @@ final class ChemistryTable extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ //TODO return false; } diff --git a/src/block/Chest.php b/src/block/Chest.php index 55a0591ca..0019e16d5 100644 --- a/src/block/Chest.php +++ b/src/block/Chest.php @@ -74,7 +74,7 @@ class Chest extends Transparent{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $chest = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index bc6b892ca..4144bd754 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -101,7 +101,7 @@ class CocoaBlock extends Transparent{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer && $this->grow()){ $item->pop(); diff --git a/src/block/CraftingTable.php b/src/block/CraftingTable.php index cc837d003..dcd9edce2 100644 --- a/src/block/CraftingTable.php +++ b/src/block/CraftingTable.php @@ -30,7 +30,7 @@ use pocketmine\player\Player; class CraftingTable extends Opaque{ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $player->setCurrentWindow(new CraftingTableInventory($this->position)); } diff --git a/src/block/Crops.php b/src/block/Crops.php index 52242cfe4..092632bb2 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -68,7 +68,7 @@ abstract class Crops extends Flowable{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->age < self::MAX_AGE && $item instanceof Fertilizer){ $block = clone $this; $block->age += mt_rand(2, 5); diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 93ea4ce60..77a28274c 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -81,7 +81,7 @@ class DaylightSensor extends Transparent{ return SupportType::NONE(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->inverted = !$this->inverted; $this->signalStrength = $this->recalculateSignalStrength(); $this->position->getWorld()->setBlock($this->position, $this); diff --git a/src/block/Dirt.php b/src/block/Dirt.php index a3c6da660..cdf24be72 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -53,7 +53,7 @@ class Dirt extends Opaque{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($face === Facing::UP && $item instanceof Hoe){ $item->applyDamage(1); diff --git a/src/block/Door.php b/src/block/Door.php index 6657a18f0..d5497bb7c 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -148,7 +148,7 @@ class Door extends Transparent{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->open = !$this->open; $other = $this->getSide($this->top ? Facing::DOWN : Facing::UP); diff --git a/src/block/DragonEgg.php b/src/block/DragonEgg.php index db6512a9c..6b330246b 100644 --- a/src/block/DragonEgg.php +++ b/src/block/DragonEgg.php @@ -48,7 +48,7 @@ class DragonEgg extends Transparent implements Fallable{ return null; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->teleport(); return true; } diff --git a/src/block/EnchantingTable.php b/src/block/EnchantingTable.php index b76147840..f80d52d12 100644 --- a/src/block/EnchantingTable.php +++ b/src/block/EnchantingTable.php @@ -44,7 +44,7 @@ class EnchantingTable extends Transparent{ return SupportType::NONE(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ //TODO lock diff --git a/src/block/EnderChest.php b/src/block/EnderChest.php index e71206b56..68c2805f9 100644 --- a/src/block/EnderChest.php +++ b/src/block/EnderChest.php @@ -54,7 +54,7 @@ class EnderChest extends Transparent{ return SupportType::NONE(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $enderChest = $this->position->getWorld()->getTile($this->position); if($enderChest instanceof TileEnderChest && $this->getSide(Facing::UP)->isTransparent()){ diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 4fa531363..2eafb9958 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -109,7 +109,7 @@ class FenceGate extends Transparent{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->open = !$this->open; if($this->open && $player !== null){ $playerFacing = $player->getHorizontalFacing(); diff --git a/src/block/FlowerPot.php b/src/block/FlowerPot.php index e4dc03fb2..6099539a0 100644 --- a/src/block/FlowerPot.php +++ b/src/block/FlowerPot.php @@ -112,7 +112,7 @@ class FlowerPot extends Flowable{ return $block->getSupportType(Facing::UP)->hasCenterSupport(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $plant = $item->getBlock(); if($this->plant !== null){ if($this->isValidPlant($plant)){ diff --git a/src/block/Furnace.php b/src/block/Furnace.php index c1b29c986..5e2f19aab 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -67,7 +67,7 @@ class Furnace extends Opaque{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $furnace = $this->position->getWorld()->getTile($this->position); if($furnace instanceof TileFurnace && $furnace->canOpenWith($item->getCustomName())){ diff --git a/src/block/Grass.php b/src/block/Grass.php index 16580b5db..342565641 100644 --- a/src/block/Grass.php +++ b/src/block/Grass.php @@ -87,7 +87,7 @@ class Grass extends Opaque{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($face !== Facing::UP){ return false; } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index c1d01654c..9b0996d92 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -93,7 +93,7 @@ class Hopper extends Transparent{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileHopper){ //TODO: find a way to have inventories open on click without this boilerplate in every block diff --git a/src/block/Ice.php b/src/block/Ice.php index 7edbc2659..ad83bb6ba 100644 --- a/src/block/Ice.php +++ b/src/block/Ice.php @@ -38,12 +38,12 @@ class Ice extends Transparent{ return 0.98; } - public function onBreak(Item $item, ?Player $player = null) : bool{ + public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ if(($player === null || $player->isSurvival()) && !$item->hasEnchantment(VanillaEnchantments::SILK_TOUCH())){ $this->position->getWorld()->setBlock($this->position, VanillaBlocks::WATER()); return true; } - return parent::onBreak($item, $player); + return parent::onBreak($item, $player, $returnedItems); } public function ticksRandomly() : bool{ diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 831f39760..ec6d77880 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -153,7 +153,7 @@ class ItemFrame extends Flowable{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->framedItem !== null){ $this->itemRotation = ($this->itemRotation + 1) % self::ROTATIONS; }elseif(!$item->isNull()){ diff --git a/src/block/Jukebox.php b/src/block/Jukebox.php index 185426600..3d5f340b3 100644 --- a/src/block/Jukebox.php +++ b/src/block/Jukebox.php @@ -39,7 +39,7 @@ class Jukebox extends Opaque{ return 300; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ if($this->record !== null){ $this->ejectRecord(); @@ -83,9 +83,9 @@ class Jukebox extends Opaque{ $this->getPosition()->getWorld()->addSound($this->getPosition(), new RecordStopSound()); } - public function onBreak(Item $item, ?Player $player = null) : bool{ + public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ $this->stopSound(); - return parent::onBreak($item, $player); + return parent::onBreak($item, $player, $returnedItems); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 6e7026ff8..cb5a9d9fe 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -127,7 +127,7 @@ class Lectern extends Transparent{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->book === null && $item instanceof WritableBookBase){ $this->position->getWorld()->setBlock($this->position, $this->setBook($item)); $this->position->getWorld()->addSound($this->position, new LecternPlaceBookSound()); diff --git a/src/block/Lever.php b/src/block/Lever.php index d25ce1c44..55f7ba0e8 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -106,7 +106,7 @@ class Lever extends Flowable{ } } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->activated = !$this->activated; $this->position->getWorld()->setBlock($this->position, $this); $this->position->getWorld()->addSound( diff --git a/src/block/Light.php b/src/block/Light.php index 9313cb19f..804f98871 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -63,7 +63,7 @@ final class Light extends Flowable{ return $blockReplace->canBeReplaced() && $blockReplace->getTypeId() !== $this->getTypeId(); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->level = $this->level === self::MAX_LIGHT_LEVEL ? self::MIN_LIGHT_LEVEL : $this->level + 1; diff --git a/src/block/Loom.php b/src/block/Loom.php index e75594ece..a10b57723 100644 --- a/src/block/Loom.php +++ b/src/block/Loom.php @@ -34,7 +34,7 @@ final class Loom extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $player->setCurrentWindow(new LoomInventory($this->position)); return true; diff --git a/src/block/Pumpkin.php b/src/block/Pumpkin.php index 2f374670e..19b3b2e56 100644 --- a/src/block/Pumpkin.php +++ b/src/block/Pumpkin.php @@ -33,7 +33,7 @@ use function in_array; class Pumpkin extends Opaque{ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Shears && in_array($face, Facing::HORIZONTAL, true)){ $item->applyDamage(1); $this->position->getWorld()->setBlock($this->position, VanillaBlocks::CARVED_PUMPKIN()->setFacing($face)); diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index 769c7ef96..cd2004460 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -103,7 +103,7 @@ class RedstoneComparator extends Flowable{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->isSubtractMode = !$this->isSubtractMode; $this->position->getWorld()->setBlock($this->position, $this); return true; diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 1a7ed5e3b..044bb31d0 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -60,7 +60,7 @@ class RedstoneOre extends Opaque{ return $this->lit ? 9 : 0; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if(!$this->lit){ $this->lit = true; $this->position->getWorld()->setBlock($this->position, $this); //no return here - this shouldn't prevent block placement diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index b680d52cc..39b720a69 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -88,7 +88,7 @@ class RedstoneRepeater extends Flowable{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if(++$this->delay > self::MAX_DELAY){ $this->delay = self::MIN_DELAY; } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 82afb3334..3d9a32776 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -74,7 +74,7 @@ class Sapling extends Flowable{ return false; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer && $this->grow($player)){ $item->pop(); diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index d6e0f32a7..c79363062 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -103,9 +103,9 @@ class SeaPickle extends Transparent{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ //TODO: bonemeal logic (requires coral) - return parent::onInteract($item, $face, $clickVector, $player); + return parent::onInteract($item, $face, $clickVector, $player, $returnedItems); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index f37a8a73f..1cc994ef2 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -97,7 +97,7 @@ class ShulkerBox extends Opaque{ return $result; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player instanceof Player){ $shulker = $this->position->getWorld()->getTile($this->position); diff --git a/src/block/SmithingTable.php b/src/block/SmithingTable.php index 5c4976cae..741e9c02f 100644 --- a/src/block/SmithingTable.php +++ b/src/block/SmithingTable.php @@ -30,7 +30,7 @@ use pocketmine\player\Player; final class SmithingTable extends Opaque{ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $player->setCurrentWindow(new SmithingTableInventory($this->position)); } diff --git a/src/block/Stonecutter.php b/src/block/Stonecutter.php index f31e95d2c..7736381e4 100644 --- a/src/block/Stonecutter.php +++ b/src/block/Stonecutter.php @@ -37,7 +37,7 @@ class Stonecutter extends Transparent{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $player->setCurrentWindow(new StonecutterInventory($this->position)); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 6985cd487..e3c8e80cc 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -83,7 +83,7 @@ class Sugarcane extends Flowable{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer){ if(!$this->getSide(Facing::DOWN)->isSameType($this) && $this->grow()){ $item->pop(); diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 1fa1e180c..487dd81b1 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -88,7 +88,7 @@ class SweetBerryBush extends Flowable{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->age < self::STAGE_MATURE && $item instanceof Fertilizer){ $block = clone $this; $block->age++; diff --git a/src/block/TNT.php b/src/block/TNT.php index 1a749bdd2..840d74794 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -81,15 +81,15 @@ class TNT extends Opaque{ return $this; } - public function onBreak(Item $item, ?Player $player = null) : bool{ + public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->unstable){ $this->ignite(); return true; } - return parent::onBreak($item, $player); + return parent::onBreak($item, $player, $returnedItems); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof FlintSteel || $item->hasEnchantment(VanillaEnchantments::FIRE_ASPECT())){ if($item instanceof Durable){ $item->applyDamage(1); diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 74306d35e..a0288d359 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -93,7 +93,7 @@ class Trapdoor extends Transparent{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->open = !$this->open; $this->position->getWorld()->setBlock($this->position, $this); $this->position->getWorld()->addSound($this->position, new DoorSound()); diff --git a/src/block/Wood.php b/src/block/Wood.php index 276c4b679..401ca5bd7 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -69,7 +69,7 @@ class Wood extends Opaque{ return $this->woodType->isFlammable() ? 5 : 0; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if(!$this->stripped && $item instanceof Axe){ $item->applyDamage(1); $this->stripped = true; diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index d838299cc..154ccb828 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -63,7 +63,7 @@ trait CandleTrait{ } /** @see Block::onInteract() */ - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item->getTypeId() === ItemTypeIds::FLINT_AND_STEEL || $item->hasEnchantment(VanillaEnchantments::FIRE_ASPECT())){ if($this->lit){ return true; diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index e30afe69f..c1730cb26 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -68,7 +68,7 @@ trait CopperTrait{ return $this; } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if(!$this->waxed && $item->getTypeId() === ItemTypeIds::HONEYCOMB){ $this->waxed = true; $this->position->getWorld()->setBlock($this->position, $this); diff --git a/src/item/Armor.php b/src/item/Armor.php index 4574165d2..6fb538cd6 100644 --- a/src/item/Armor.php +++ b/src/item/Armor.php @@ -129,16 +129,15 @@ class Armor extends Durable{ return 0; } - public function onClickAir(Player $player, Vector3 $directionVector) : ItemUseResult{ + public function onClickAir(Player $player, Vector3 $directionVector, array &$returnedItems) : ItemUseResult{ $existing = $player->getArmorInventory()->getItem($this->getArmorSlot()); $thisCopy = clone $this; $new = $thisCopy->pop(); $player->getArmorInventory()->setItem($this->getArmorSlot(), $new); - if($thisCopy->getCount() === 0){ - $player->getInventory()->setItemInHand($existing); - }else{ //if the stack size was bigger than 1 (usually won't happen, but might be caused by plugins - $player->getInventory()->setItemInHand($thisCopy); - $player->getInventory()->addItem($existing); + $player->getInventory()->setItemInHand($existing); + if(!$thisCopy->isNull()){ + //if the stack size was bigger than 1 (usually won't happen, but might be caused by plugins) + $returnedItems[] = $thisCopy; } return ItemUseResult::SUCCESS(); } diff --git a/src/item/Axe.php b/src/item/Axe.php index 40b8b6736..57b378311 100644 --- a/src/item/Axe.php +++ b/src/item/Axe.php @@ -41,14 +41,14 @@ class Axe extends TieredTool{ return $this->tier->getBaseAttackPoints() - 1; } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ if(!$block->getBreakInfo()->breaksInstantly()){ return $this->applyDamage(1); } return false; } - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return $this->applyDamage(2); } } diff --git a/src/item/Bow.php b/src/item/Bow.php index 460b844c6..3c1320f03 100644 --- a/src/item/Bow.php +++ b/src/item/Bow.php @@ -44,7 +44,7 @@ class Bow extends Tool implements Releasable{ return 385; } - public function onReleaseUsing(Player $player) : ItemUseResult{ + public function onReleaseUsing(Player $player, array &$returnedItems) : ItemUseResult{ $arrow = VanillaItems::ARROW(); $inventory = match(true){ $player->getOffHandInventory()->contains($arrow) => $player->getOffHandInventory(), diff --git a/src/item/Bucket.php b/src/item/Bucket.php index accfa976b..b788a3022 100644 --- a/src/item/Bucket.php +++ b/src/item/Bucket.php @@ -37,7 +37,7 @@ class Bucket extends Item{ return 16; } - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ //TODO: move this to generic placement logic if($blockClicked instanceof Liquid && $blockClicked->isSource()){ $stack = clone $this; @@ -57,16 +57,9 @@ class Bucket extends Item{ if(!$ev->isCancelled()){ $player->getWorld()->setBlock($blockClicked->getPosition(), VanillaBlocks::AIR()); $player->getWorld()->addSound($blockClicked->getPosition()->add(0.5, 0.5, 0.5), $blockClicked->getBucketFillSound()); - if($player->hasFiniteResources()){ - if($stack->getCount() === 0){ - $player->getInventory()->setItemInHand($ev->getItem()); - }else{ - $player->getInventory()->setItemInHand($stack); - $player->getInventory()->addItem($ev->getItem()); - } - }else{ - $player->getInventory()->addItem($ev->getItem()); - } + + $this->pop(); + $returnedItems[] = $ev->getItem(); return ItemUseResult::SUCCESS(); } diff --git a/src/item/FlintSteel.php b/src/item/FlintSteel.php index 567f9d0f5..0ff2e754c 100644 --- a/src/item/FlintSteel.php +++ b/src/item/FlintSteel.php @@ -32,7 +32,7 @@ use pocketmine\world\sound\FlintSteelSound; class FlintSteel extends Tool{ - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ if($blockReplace->getTypeId() === BlockTypeIds::AIR){ $world = $player->getWorld(); $world->setBlock($blockReplace->getPosition(), VanillaBlocks::FIRE()); diff --git a/src/item/Hoe.php b/src/item/Hoe.php index 8fd1bbad6..1f2c2efae 100644 --- a/src/item/Hoe.php +++ b/src/item/Hoe.php @@ -33,11 +33,11 @@ class Hoe extends TieredTool{ return BlockToolType::HOE; } - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return $this->applyDamage(1); } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ if(!$block->getBreakInfo()->breaksInstantly()){ return $this->applyDamage(1); } diff --git a/src/item/Item.php b/src/item/Item.php index 4f0b814bf..7170f4fab 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -513,38 +513,48 @@ class Item implements \JsonSerializable{ /** * Called when a player uses this item on a block. + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ return ItemUseResult::NONE(); } /** * Called when a player uses the item on air, for example throwing a projectile. * Returns whether the item was changed, for example count decrease or durability change. + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onClickAir(Player $player, Vector3 $directionVector) : ItemUseResult{ + public function onClickAir(Player $player, Vector3 $directionVector, array &$returnedItems) : ItemUseResult{ return ItemUseResult::NONE(); } /** * Called when a player is using this item and releases it. Used to handle bow shoot actions. * Returns whether the item was changed, for example count decrease or durability change. + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onReleaseUsing(Player $player) : ItemUseResult{ + public function onReleaseUsing(Player $player, array &$returnedItems) : ItemUseResult{ return ItemUseResult::NONE(); } /** * Called when this item is used to destroy a block. Usually used to update durability. + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ return false; } /** * Called when this item is used to attack an entity. Usually used to update durability. + * + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return false; } diff --git a/src/item/LiquidBucket.php b/src/item/LiquidBucket.php index 8e6d41716..740f79b11 100644 --- a/src/item/LiquidBucket.php +++ b/src/item/LiquidBucket.php @@ -54,7 +54,7 @@ class LiquidBucket extends Item{ return VanillaItems::BUCKET(); } - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ if(!$blockReplace->canBeReplaced()){ return ItemUseResult::NONE(); } @@ -68,9 +68,8 @@ class LiquidBucket extends Item{ $player->getWorld()->setBlock($blockReplace->getPosition(), $resultBlock->getFlowingForm()); $player->getWorld()->addSound($blockReplace->getPosition()->add(0.5, 0.5, 0.5), $resultBlock->getBucketEmptySound()); - if($player->hasFiniteResources()){ - $player->getInventory()->setItemInHand($ev->getItem()); - } + $this->pop(); + $returnedItems[] = $ev->getItem(); return ItemUseResult::SUCCESS(); } diff --git a/src/item/PaintingItem.php b/src/item/PaintingItem.php index 1c649c8e0..f3821d0b2 100644 --- a/src/item/PaintingItem.php +++ b/src/item/PaintingItem.php @@ -37,7 +37,7 @@ use function count; class PaintingItem extends Item{ - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ if(Facing::axis($face) === Axis::Y){ return ItemUseResult::NONE(); } diff --git a/src/item/Pickaxe.php b/src/item/Pickaxe.php index 979678507..0c8fa0164 100644 --- a/src/item/Pickaxe.php +++ b/src/item/Pickaxe.php @@ -41,14 +41,14 @@ class Pickaxe extends TieredTool{ return $this->tier->getBaseAttackPoints() - 2; } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ if(!$block->getBreakInfo()->breaksInstantly()){ return $this->applyDamage(1); } return false; } - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return $this->applyDamage(2); } } diff --git a/src/item/ProjectileItem.php b/src/item/ProjectileItem.php index e36eed21a..8056af505 100644 --- a/src/item/ProjectileItem.php +++ b/src/item/ProjectileItem.php @@ -36,7 +36,7 @@ abstract class ProjectileItem extends Item{ abstract protected function createEntity(Location $location, Player $thrower) : Throwable; - public function onClickAir(Player $player, Vector3 $directionVector) : ItemUseResult{ + public function onClickAir(Player $player, Vector3 $directionVector, array &$returnedItems) : ItemUseResult{ $location = $player->getLocation(); $projectile = $this->createEntity(Location::fromObject($player->getEyePos(), $player->getWorld(), $location->yaw, $location->pitch), $player); diff --git a/src/item/Shears.php b/src/item/Shears.php index a806e649f..9c70d6cb2 100644 --- a/src/item/Shears.php +++ b/src/item/Shears.php @@ -44,7 +44,7 @@ class Shears extends Tool{ return 15; } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ return $this->applyDamage(1); } } diff --git a/src/item/Shovel.php b/src/item/Shovel.php index dde12f411..d3d0ae429 100644 --- a/src/item/Shovel.php +++ b/src/item/Shovel.php @@ -41,14 +41,14 @@ class Shovel extends TieredTool{ return $this->tier->getBaseAttackPoints() - 3; } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ if(!$block->getBreakInfo()->breaksInstantly()){ return $this->applyDamage(1); } return false; } - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return $this->applyDamage(2); } } diff --git a/src/item/SpawnEgg.php b/src/item/SpawnEgg.php index 84e8e2cf5..1147a951d 100644 --- a/src/item/SpawnEgg.php +++ b/src/item/SpawnEgg.php @@ -34,7 +34,7 @@ abstract class SpawnEgg extends Item{ abstract protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity; - public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector) : ItemUseResult{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ $entity = $this->createEntity($player->getWorld(), $blockReplace->getPosition()->add(0.5, 0, 0.5), lcg_value() * 360, 0); if($this->hasCustomName()){ diff --git a/src/item/Sword.php b/src/item/Sword.php index aee1e997e..5576f3c12 100644 --- a/src/item/Sword.php +++ b/src/item/Sword.php @@ -49,14 +49,14 @@ class Sword extends TieredTool{ return 10; } - public function onDestroyBlock(Block $block) : bool{ + public function onDestroyBlock(Block $block, array &$returnedItems) : bool{ if(!$block->getBreakInfo()->breaksInstantly()){ return $this->applyDamage(2); } return false; } - public function onAttackEntity(Entity $victim) : bool{ + public function onAttackEntity(Entity $victim, array &$returnedItems) : bool{ return $this->applyDamage(1); } } diff --git a/src/player/Player.php b/src/player/Player.php index aa391cccc..ddea775a2 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -54,6 +54,7 @@ use pocketmine\event\player\PlayerChatEvent; use pocketmine\event\player\PlayerCommandPreprocessEvent; use pocketmine\event\player\PlayerDeathEvent; use pocketmine\event\player\PlayerDisplayNameChangeEvent; +use pocketmine\event\player\PlayerDropItemEvent; use pocketmine\event\player\PlayerEmoteEvent; use pocketmine\event\player\PlayerEntityInteractEvent; use pocketmine\event\player\PlayerExhaustEvent; @@ -1443,6 +1444,39 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ return true; } + /** + * @param Item[] $extraReturnedItems + */ + private function returnItemsFromAction(Item $oldHeldItem, Item $newHeldItem, array $extraReturnedItems) : void{ + $heldItemChanged = false; + if($this->hasFiniteResources()){ + if(!$newHeldItem->equalsExact($oldHeldItem) && $oldHeldItem->equalsExact($this->inventory->getItemInHand())){ + if($newHeldItem instanceof Durable && $newHeldItem->isBroken()){ + $this->broadcastSound(new ItemBreakSound()); + } + $this->inventory->setItemInHand($newHeldItem); + $heldItemChanged = true; + } + }else{ + $newHeldItem = $oldHeldItem; + } + + if($heldItemChanged && count($extraReturnedItems) > 0 && $newHeldItem->isNull()){ + $this->inventory->setItemInHand(array_shift($extraReturnedItems)); + } + foreach($this->inventory->addItem(...$extraReturnedItems) as $drop){ + //TODO: we can't generate a transaction for this since the items aren't coming from an inventory :( + $ev = new PlayerDropItemEvent($this, $drop); + if($this->isSpectator()){ + $ev->cancel(); + } + $ev->call(); + if(!$ev->isCancelled()){ + $this->dropItem($drop); + } + } + } + /** * Activates the item in hand, for example throwing a projectile. * @@ -1464,18 +1498,14 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ return false; } - $result = $item->onClickAir($this, $directionVector); + $returnedItems = []; + $result = $item->onClickAir($this, $directionVector, $returnedItems); if($result->equals(ItemUseResult::FAIL())){ return false; } $this->resetItemCooldown($item); - if($this->hasFiniteResources() && !$item->equalsExact($oldItem) && $oldItem->equalsExact($this->inventory->getItemInHand())){ - if($item instanceof Durable && $item->isBroken()){ - $this->broadcastSound(new ItemBreakSound()); - } - $this->inventory->setItemInHand($item); - } + $this->returnItemsFromAction($oldItem, $item, $returnedItems); $this->setUsingItem($item instanceof Releasable && $item->canStartUsingItem($this)); @@ -1505,11 +1535,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->setUsingItem(false); $this->resetItemCooldown($slot); - if($this->hasFiniteResources() && $oldItem->equalsExact($this->inventory->getItemInHand())){ - $slot->pop(); - $this->inventory->setItemInHand($slot); - $this->inventory->addItem($slot->getResidue()); - } + $slot->pop(); + $this->returnItemsFromAction($oldItem, $slot, [$slot->getResidue()]); return true; } @@ -1531,15 +1558,11 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $oldItem = clone $item; - $result = $item->onReleaseUsing($this); + $returnedItems = []; + $result = $item->onReleaseUsing($this, $returnedItems); if($result->equals(ItemUseResult::SUCCESS())){ $this->resetItemCooldown($item); - if(!$item->equalsExact($oldItem) && $oldItem->equalsExact($this->inventory->getItemInHand())){ - if($item instanceof Durable && $item->isBroken()){ - $this->broadcastSound(new ItemBreakSound()); - } - $this->inventory->setItemInHand($item); - } + $this->returnItemsFromAction($oldItem, $item, $returnedItems); return true; } @@ -1652,13 +1675,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->stopBreakBlock($pos); $item = $this->inventory->getItemInHand(); $oldItem = clone $item; - if($this->getWorld()->useBreakOn($pos, $item, $this, true)){ - if($this->hasFiniteResources() && !$item->equalsExact($oldItem) && $oldItem->equalsExact($this->inventory->getItemInHand())){ - if($item instanceof Durable && $item->isBroken()){ - $this->broadcastSound(new ItemBreakSound()); - } - $this->inventory->setItemInHand($item); - } + $returnedItems = []; + if($this->getWorld()->useBreakOn($pos, $item, $this, true, $returnedItems)){ + $this->returnItemsFromAction($oldItem, $item, $returnedItems); $this->hungerManager->exhaust(0.005, PlayerExhaustEvent::CAUSE_MINING); return true; } @@ -1681,13 +1700,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->broadcastAnimation(new ArmSwingAnimation($this), $this->getViewers()); $item = $this->inventory->getItemInHand(); //this is a copy of the real item $oldItem = clone $item; - if($this->getWorld()->useItemOn($pos, $item, $face, $clickOffset, $this, true)){ - if($this->hasFiniteResources() && !$item->equalsExact($oldItem) && $oldItem->equalsExact($this->inventory->getItemInHand())){ - if($item instanceof Durable && $item->isBroken()){ - $this->broadcastSound(new ItemBreakSound()); - } - $this->inventory->setItemInHand($item); - } + $returnedItems = []; + if($this->getWorld()->useItemOn($pos, $item, $face, $clickOffset, $this, true, $returnedItems)){ + $this->returnItemsFromAction($oldItem, $item, $returnedItems); return true; } }else{ @@ -1762,12 +1777,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ if($this->isAlive()){ //reactive damage like thorns might cause us to be killed by attacking another mob, which //would mean we'd already have dropped the inventory by the time we reached here - if($heldItem->onAttackEntity($entity) && $this->hasFiniteResources() && $oldItem->equalsExact($this->inventory->getItemInHand())){ //always fire the hook, even if we are survival - if($heldItem instanceof Durable && $heldItem->isBroken()){ - $this->broadcastSound(new ItemBreakSound()); - } - $this->inventory->setItemInHand($heldItem); - } + $returnedItems = []; + $heldItem->onAttackEntity($entity, $returnedItems); + $this->returnItemsFromAction($oldItem, $heldItem, $returnedItems); $this->hungerManager->exhaust(0.1, PlayerExhaustEvent::CAUSE_ATTACK); } diff --git a/src/world/World.php b/src/world/World.php index fab04e87d..3f905e962 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1660,9 +1660,10 @@ class World implements ChunkManager{ * Tries to break a block using a item, including Player time checks if available * It'll try to lower the durability if Item is a tool, and set it to Air if broken. * - * @param Item $item reference parameter (if null, can break anything) + * @param Item &$item reference parameter (if null, can break anything) + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped, if the inventory is full) */ - public function useBreakOn(Vector3 $vector, Item &$item = null, ?Player $player = null, bool $createParticles = false) : bool{ + public function useBreakOn(Vector3 $vector, Item &$item = null, ?Player $player = null, bool $createParticles = false, array &$returnedItems = []) : bool{ $vector = $vector->floor(); $chunkX = $vector->getFloorX() >> Chunk::COORD_BIT_SIZE; @@ -1724,10 +1725,10 @@ class World implements ChunkManager{ } foreach($affectedBlocks as $t){ - $this->destroyBlockInternal($t, $item, $player, $createParticles); + $this->destroyBlockInternal($t, $item, $player, $createParticles, $returnedItems); } - $item->onDestroyBlock($target); + $item->onDestroyBlock($target, $returnedItems); if(count($drops) > 0){ $dropPos = $vector->add(0.5, 0.5, 0.5); @@ -1745,12 +1746,15 @@ class World implements ChunkManager{ return true; } - private function destroyBlockInternal(Block $target, Item $item, ?Player $player = null, bool $createParticles = false) : void{ + /** + * @param Item[] &$returnedItems + */ + private function destroyBlockInternal(Block $target, Item $item, ?Player $player, bool $createParticles, array &$returnedItems) : void{ if($createParticles){ $this->addParticle($target->getPosition()->add(0.5, 0.5, 0.5), new BlockBreakParticle($target)); } - $target->onBreak($item, $player); + $target->onBreak($item, $player, $returnedItems); $tile = $this->getTile($target->getPosition()); if($tile !== null){ @@ -1761,10 +1765,11 @@ class World implements ChunkManager{ /** * Uses a item on a position and face, placing it or activating the block * - * @param Player|null $player default null - * @param bool $playSound Whether to play a block-place sound if the block was placed successfully. + * @param Player|null $player default null + * @param bool $playSound Whether to play a block-place sound if the block was placed successfully. + * @param Item[] &$returnedItems Items to be added to the target's inventory (or dropped if the inventory is full) */ - public function useItemOn(Vector3 $vector, Item &$item, int $face, ?Vector3 $clickVector = null, ?Player $player = null, bool $playSound = false) : bool{ + public function useItemOn(Vector3 $vector, Item &$item, int $face, ?Vector3 $clickVector = null, ?Player $player = null, bool $playSound = false, array &$returnedItems = []) : bool{ $blockClicked = $this->getBlock($vector); $blockReplace = $blockClicked->getSide($face); @@ -1794,18 +1799,18 @@ class World implements ChunkManager{ $ev->call(); if(!$ev->isCancelled()){ - if((!$player->isSneaking() || $item->isNull()) && $blockClicked->onInteract($item, $face, $clickVector, $player)){ + if((!$player->isSneaking() || $item->isNull()) && $blockClicked->onInteract($item, $face, $clickVector, $player, $returnedItems)){ return true; } - $result = $item->onInteractBlock($player, $blockReplace, $blockClicked, $face, $clickVector); + $result = $item->onInteractBlock($player, $blockReplace, $blockClicked, $face, $clickVector, $returnedItems); if(!$result->equals(ItemUseResult::NONE())){ return $result->equals(ItemUseResult::SUCCESS()); } }else{ return false; } - }elseif($blockClicked->onInteract($item, $face, $clickVector, $player)){ + }elseif($blockClicked->onInteract($item, $face, $clickVector, $player, $returnedItems)){ return true; } From 81edb1bed494639f512427bd97cf481e6f777fd8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 16 Jul 2022 20:00:43 +0100 Subject: [PATCH 344/692] GlassBottle: implement filling using API changes from 4afd3dcabfa6b9c645ab8b15fade1e37f889482f closes #4827 --- src/item/GlassBottle.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/item/GlassBottle.php b/src/item/GlassBottle.php index ca59fd2b3..bda6d132e 100644 --- a/src/item/GlassBottle.php +++ b/src/item/GlassBottle.php @@ -23,6 +23,21 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\block\Block; +use pocketmine\block\BlockTypeIds; +use pocketmine\math\Vector3; +use pocketmine\player\Player; + class GlassBottle extends Item{ + public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{ + if($blockClicked->getTypeId() === BlockTypeIds::WATER){ + $this->pop(); + $returnedItems[] = VanillaItems::POTION()->setType(PotionType::WATER()); + + return ItemUseResult::SUCCESS(); + } + + return ItemUseResult::NONE(); + } } From b3f8b5ff375381b3bcb221d55b9a47645bf6280e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 16 Jul 2022 20:01:29 +0100 Subject: [PATCH 345/692] Fix CS --- src/player/Player.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/player/Player.php b/src/player/Player.php index ddea775a2..2548515ef 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -133,6 +133,7 @@ use pocketmine\world\World; use Ramsey\Uuid\UuidInterface; use function abs; use function array_map; +use function array_shift; use function assert; use function count; use function explode; From 4f2f9b435214a60964fbe6758b9a3a7ab5f16756 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 16 Jul 2022 00:37:32 +0100 Subject: [PATCH 346/692] Block::readStateFromWorld() now returns the block object that should be used for the target position this enables changing the block type completely if the situation calls for it. --- src/block/BaseBanner.php | 4 +++- src/block/BaseSign.php | 4 +++- src/block/Bed.php | 4 +++- src/block/Block.php | 7 ++++++- src/block/Door.php | 4 +++- src/block/Fence.php | 4 +++- src/block/FlowerPot.php | 4 +++- src/block/ItemFrame.php | 4 +++- src/block/Jukebox.php | 4 +++- src/block/Lectern.php | 4 +++- src/block/Liquid.php | 4 +++- src/block/Note.php | 4 +++- src/block/RedstoneComparator.php | 4 +++- src/block/RedstoneWire.php | 4 +++- src/block/ShulkerBox.php | 4 +++- src/block/Skull.php | 4 +++- src/block/Stair.php | 4 +++- src/block/Thin.php | 4 +++- src/world/World.php | 12 ++++++++++-- 19 files changed, 67 insertions(+), 20 deletions(-) diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index fd2b225bf..d5f859f7c 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -53,13 +53,15 @@ abstract class BaseBanner extends Transparent{ parent::__construct($idInfo, $name, $breakInfo); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileBanner){ $this->color = $tile->getBaseColor(); $this->setPatterns($tile->getPatterns()); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index 3061030a8..7ce7a829f 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -58,13 +58,15 @@ abstract class BaseSign extends Transparent{ $this->asItemCallback = $asItemCallback; } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileSign){ $this->text = $tile->getText(); $this->editorEntityRuntimeId = $tile->getEditorEntityRuntimeId(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Bed.php b/src/block/Bed.php index 4bf4dac23..258f9ce06 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -68,13 +68,15 @@ class Bed extends Transparent{ $w->writeBool($this->head); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); //read extra state information from the tile - this is an ugly hack $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileBed){ $this->color = $tile->getColor(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Block.php b/src/block/Block.php index d521cb522..383b28797 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -189,9 +189,14 @@ class Block{ * * Clears any cached precomputed objects, such as bounding boxes. Remove any outdated precomputed things such as * AABBs and force recalculation. + * + * A replacement block may be returned. This is useful if the block type changed due to reading of world data (e.g. + * data from a block entity). */ - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ $this->collisionBoxes = null; + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Door.php b/src/block/Door.php index d5497bb7c..9f99de849 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -58,7 +58,7 @@ class Door extends Transparent{ $w->writeBool($this->open); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); //copy door properties from other half @@ -71,6 +71,8 @@ class Door extends Transparent{ $this->hingeRight = $other->hingeRight; } } + + return $this; } public function isTop() : bool{ return $this->top; } diff --git a/src/block/Fence.php b/src/block/Fence.php index 08c9b5eac..7180b38ea 100644 --- a/src/block/Fence.php +++ b/src/block/Fence.php @@ -37,7 +37,7 @@ class Fence extends Transparent{ return 0.25; } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); foreach(Facing::HORIZONTAL as $facing){ @@ -48,6 +48,8 @@ class Fence extends Transparent{ unset($this->connections[$facing]); } } + + return $this; } /** diff --git a/src/block/FlowerPot.php b/src/block/FlowerPot.php index 6099539a0..f2cafe15e 100644 --- a/src/block/FlowerPot.php +++ b/src/block/FlowerPot.php @@ -36,7 +36,7 @@ class FlowerPot extends Flowable{ protected ?Block $plant = null; - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileFlowerPot){ @@ -44,6 +44,8 @@ class FlowerPot extends Flowable{ }else{ $this->setPlant(null); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index ec6d77880..8785fbd54 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -71,7 +71,7 @@ class ItemFrame extends Flowable{ $w->writeBool($this->hasMap); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileItemFrame){ @@ -82,6 +82,8 @@ class ItemFrame extends Flowable{ $this->itemRotation = $tile->getItemRotation() % self::ROTATIONS; $this->itemDropChance = $tile->getItemDropChance(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Jukebox.php b/src/block/Jukebox.php index 3d5f340b3..811148f74 100644 --- a/src/block/Jukebox.php +++ b/src/block/Jukebox.php @@ -96,12 +96,14 @@ class Jukebox extends Opaque{ return $drops; } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $jukebox = $this->position->getWorld()->getTile($this->position); if($jukebox instanceof JukeboxTile){ $this->record = $jukebox->getRecord(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Lectern.php b/src/block/Lectern.php index cb5a9d9fe..23c971ae2 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -59,13 +59,15 @@ class Lectern extends Transparent{ $w->writeBool($this->producingSignal); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileLectern){ $this->viewedPage = $tile->getViewedPage(); $this->book = $tile->getBook(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 81f34e6f6..e1bafbcbc 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -160,9 +160,11 @@ abstract class Liquid extends Transparent{ return $block->falling ? 0 : $block->decay; } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $this->flowVector = null; + + return $this; } public function getFlowVector() : Vector3{ diff --git a/src/block/Note.php b/src/block/Note.php index 8417ff8e8..b67891b87 100644 --- a/src/block/Note.php +++ b/src/block/Note.php @@ -32,7 +32,7 @@ class Note extends Opaque{ private int $pitch = self::MIN_PITCH; - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileNote){ @@ -40,6 +40,8 @@ class Note extends Opaque{ }else{ $this->pitch = self::MIN_PITCH; } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index cd2004460..aeaaeb543 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -60,12 +60,14 @@ class RedstoneComparator extends Flowable{ $w->writeBool($this->powered); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof Comparator){ $this->signalStrength = $tile->getSignalStrength(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/RedstoneWire.php b/src/block/RedstoneWire.php index 7c770e9c4..022672b5d 100644 --- a/src/block/RedstoneWire.php +++ b/src/block/RedstoneWire.php @@ -41,9 +41,11 @@ class RedstoneWire extends Flowable{ return false; } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); //TODO: check connections to nearby redstone components + + return $this; } public function onNearbyBlockChange() : void{ diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index 1cc994ef2..b5b2223d8 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -53,12 +53,14 @@ class ShulkerBox extends Opaque{ } } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $shulker = $this->position->getWorld()->getTile($this->position); if($shulker instanceof TileShulkerBox){ $this->facing = $shulker->getFacing(); } + + return $this; } public function getMaxStackSize() : int{ diff --git a/src/block/Skull.php b/src/block/Skull.php index 4dbdfb823..33da1da9b 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -77,13 +77,15 @@ class Skull extends Flowable{ $w->writeFacing($this->facing); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileSkull){ $this->skullType = $tile->getSkullType(); $this->rotation = $tile->getRotation(); } + + return $this; } public function writeStateToWorld() : void{ diff --git a/src/block/Stair.php b/src/block/Stair.php index 67a3d7b40..5a585277b 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -59,7 +59,7 @@ class Stair extends Transparent{ $w->writeBool($this->upsideDown); } - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $clockwise = Facing::rotateY($this->facing, true); @@ -70,6 +70,8 @@ class Stair extends Transparent{ }else{ $this->shape = StairShape::STRAIGHT(); } + + return $this; } public function isUpsideDown() : bool{ return $this->upsideDown; } diff --git a/src/block/Thin.php b/src/block/Thin.php index ad5824494..28afef3da 100644 --- a/src/block/Thin.php +++ b/src/block/Thin.php @@ -33,7 +33,7 @@ class Thin extends Transparent{ /** @var bool[] facing => dummy */ protected array $connections = []; - public function readStateFromWorld() : void{ + public function readStateFromWorld() : Block{ parent::readStateFromWorld(); foreach(Facing::HORIZONTAL as $facing){ @@ -44,6 +44,8 @@ class Thin extends Transparent{ unset($this->connections[$facing]); } } + + return $this; } protected function recalculateCollisionBoxes() : array{ diff --git a/src/world/World.php b/src/world/World.php index 3f905e962..7d5366b0b 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -824,7 +824,11 @@ class World implements ChunkManager{ } $block = $this->getBlockAt($x, $y, $z); - $block->readStateFromWorld(); //for blocks like fences, force recalculation of connected AABBs + $replacement = $block->readStateFromWorld(); //for blocks like fences, force recalculation of connected AABBs + if($replacement !== $block){ + $replacement->position($this, $x, $y, $z); + $block = $replacement; + } $ev = new BlockUpdateEvent($block); $ev->call(); @@ -1548,7 +1552,11 @@ class World implements ChunkManager{ $addToCache = false; }else{ $dynamicStateRead = true; - $block->readStateFromWorld(); + $replacement = $block->readStateFromWorld(); + if($replacement !== $block){ + $replacement->position($this, $x, $y, $z); + $block = $replacement; + } $dynamicStateRead = false; } From 012b668537774515c0444556d17be4ef8a97d90f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 17 Jul 2022 21:23:41 +0100 Subject: [PATCH 347/692] Avoid bogus assumptions about block and item NBT on tiles --- src/block/tile/FlowerPot.php | 3 ++- src/block/tile/ItemFrame.php | 3 ++- src/block/tile/Jukebox.php | 3 ++- src/block/tile/Lectern.php | 3 ++- src/network/mcpe/convert/ItemTranslator.php | 11 +++++++++++ src/network/mcpe/convert/RuntimeBlockMapping.php | 12 ++++++++++++ 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 3544cd5fb..e778d0774 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -31,6 +31,7 @@ use pocketmine\data\SavedDataLoadingException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ShortTag; +use pocketmine\network\mcpe\convert\RuntimeBlockMapping; use pocketmine\world\format\io\GlobalBlockStateHandlers; /** @@ -88,7 +89,7 @@ class FlowerPot extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setTag(self::TAG_PLANT_BLOCK, GlobalBlockStateHandlers::getSerializer()->serialize($this->plant->getStateId())->toNbt()); + $nbt->setTag(self::TAG_PLANT_BLOCK, RuntimeBlockMapping::getInstance()->toStateData($this->plant->getStateId())->toNbt()); } } } diff --git a/src/block/tile/ItemFrame.php b/src/block/tile/ItemFrame.php index 92db02d5f..7482fa089 100644 --- a/src/block/tile/ItemFrame.php +++ b/src/block/tile/ItemFrame.php @@ -27,6 +27,7 @@ use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\network\mcpe\convert\ItemTranslator; use pocketmine\world\World; /** @@ -99,7 +100,7 @@ class ItemFrame extends Spawnable{ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, $this->itemDropChance); $nbt->setByte(self::TAG_ITEM_ROTATION, $this->itemRotation); if(!$this->item->isNull()){ - $nbt->setTag(self::TAG_ITEM, $this->item->nbtSerialize()); + $nbt->setTag(self::TAG_ITEM, ItemTranslator::getInstance()->toNetworkNbt($this->item)); } } } diff --git a/src/block/tile/Jukebox.php b/src/block/tile/Jukebox.php index 3154c6a07..12dd3c302 100644 --- a/src/block/tile/Jukebox.php +++ b/src/block/tile/Jukebox.php @@ -26,6 +26,7 @@ namespace pocketmine\block\tile; use pocketmine\item\Item; use pocketmine\item\Record; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\network\mcpe\convert\ItemTranslator; class Jukebox extends Spawnable{ private const TAG_RECORD = "RecordItem"; //Item CompoundTag @@ -58,7 +59,7 @@ class Jukebox extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ //this is needed for the note particles to show on the client side if($this->record !== null){ - $nbt->setTag(self::TAG_RECORD, $this->record->nbtSerialize()); + $nbt->setTag(self::TAG_RECORD, ItemTranslator::getInstance()->toNetworkNbt($this->record)); } } } diff --git a/src/block/tile/Lectern.php b/src/block/tile/Lectern.php index 28be8904e..f094d2316 100644 --- a/src/block/tile/Lectern.php +++ b/src/block/tile/Lectern.php @@ -26,6 +26,7 @@ namespace pocketmine\block\tile; use pocketmine\item\Item; use pocketmine\item\WritableBookBase; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\network\mcpe\convert\ItemTranslator; use function count; /** @@ -80,7 +81,7 @@ class Lectern extends Spawnable{ $nbt->setByte(self::TAG_HAS_BOOK, $this->book !== null ? 1 : 0); $nbt->setInt(self::TAG_PAGE, $this->viewedPage); if($this->book !== null){ - $nbt->setTag(self::TAG_BOOK, $this->book->nbtSerialize()); + $nbt->setTag(self::TAG_BOOK, ItemTranslator::getInstance()->toNetworkNbt($this->book)); $nbt->setInt(self::TAG_TOTAL_PAGES, count($this->book->getPages())); } } diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index eb36ecdd2..b5a90c8a4 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -28,6 +28,7 @@ use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; +use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\item\Item; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; @@ -96,6 +97,16 @@ final class ItemTranslator{ return [$numericId, $itemData->getMeta(), $blockRuntimeId]; } + /** + * @throws ItemTypeSerializeException + */ + public function toNetworkNbt(Item $item) : SavedItemStackData{ + //TODO: this relies on the assumption that network item NBT is the same as disk item NBT, which may not always + //be true - if we stick on an older world version while updating network version, this could be a problem (and + //may be a problem for multi version implementations) + return $this->itemSerializer->serializeStack($item); + } + /** * @throws TypeConversionException */ diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index c5945e28d..20cea50cb 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -94,6 +94,18 @@ final class RuntimeBlockMapping{ return $this->networkIdCache[$internalStateId] = $networkId; } + /** + * Looks up the network state data associated with the given internal state ID. + */ + public function toStateData(int $internalStateId) : BlockStateData{ + //we don't directly use the blockstate serializer here - we can't assume that the network blockstate NBT is the + //same as the disk blockstate NBT, in case we decide to have different world version than network version (or in + //case someone wants to implement multi version). + $networkRuntimeId = $this->toRuntimeId($internalStateId); + + return $this->blockStateDictionary->getDataFromStateId($networkRuntimeId) ?? throw new AssumptionFailedError("We just looked up this state ID, so it must exist"); + } + public function getBlockStateDictionary() : BlockStateDictionary{ return $this->blockStateDictionary; } public function getFallbackStateData() : BlockStateData{ return $this->fallbackStateData; } From 172bd9a12906794fa3811a1a01fc1a468a142bbc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 17 Jul 2022 21:24:27 +0100 Subject: [PATCH 348/692] ... --- src/network/mcpe/convert/ItemTranslator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index b5a90c8a4..13a9bad4f 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -28,8 +28,8 @@ use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; use pocketmine\data\bedrock\item\ItemTypeSerializeException; use pocketmine\data\bedrock\item\SavedItemData; -use pocketmine\data\bedrock\item\SavedItemStackData; use pocketmine\item\Item; +use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; @@ -100,11 +100,11 @@ final class ItemTranslator{ /** * @throws ItemTypeSerializeException */ - public function toNetworkNbt(Item $item) : SavedItemStackData{ + public function toNetworkNbt(Item $item) : CompoundTag{ //TODO: this relies on the assumption that network item NBT is the same as disk item NBT, which may not always //be true - if we stick on an older world version while updating network version, this could be a problem (and //may be a problem for multi version implementations) - return $this->itemSerializer->serializeStack($item); + return $this->itemSerializer->serializeStack($item)->toNbt(); } /** From 8660dfe57648dd84faf3430ef0a312f909d30c64 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 18 Jul 2022 15:13:40 +0100 Subject: [PATCH 349/692] Generate traits for runtime enum serialization instead of helper classes --- build/generate-runtime-enum-serializers.php | 26 +++++++----- src/block/Bell.php | 6 +-- src/block/Lever.php | 6 +-- src/block/RedMushroomBlock.php | 6 +-- src/block/Skull.php | 6 +-- src/block/Slab.php | 6 +-- src/block/utils/ColoredTrait.php | 6 +-- src/block/utils/CopperTrait.php | 6 +-- src/block/utils/CoralTypeTrait.php | 6 +-- src/data/runtime/RuntimeDataReader.php | 1 + src/data/runtime/RuntimeDataWriter.php | 1 + ...r.php => RuntimeEnumDeserializerTrait.php} | 40 ++++++++++--------- ...zer.php => RuntimeEnumSerializerTrait.php} | 40 ++++++++++--------- src/item/Banner.php | 3 +- src/item/Dye.php | 3 +- src/item/Potion.php | 3 +- src/item/SplashPotion.php | 3 +- 17 files changed, 81 insertions(+), 87 deletions(-) rename src/data/runtime/{RuntimeEnumDeserializer.php => RuntimeEnumDeserializerTrait.php} (85%) rename src/data/runtime/{RuntimeEnumSerializer.php => RuntimeEnumSerializerTrait.php} (84%) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 322a62fb0..ff0ad8bed 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -59,8 +59,8 @@ function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $lines = []; $functionName = "write$virtualTypeName"; - $lines[] = "public static function $functionName(RuntimeDataWriter \$w, \\$nativeTypeName \$value) : void{"; - $lines[] = "\t\$w->writeInt($bits, match(\$value){"; + $lines[] = "public function $functionName(\\$nativeTypeName \$value) : void{"; + $lines[] = "\t\$this->writeInt($bits, match(\$value){"; foreach($memberNames as $key => $memberName){ $lines[] = "\t\t$memberName => $key,"; @@ -84,8 +84,8 @@ function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array $lines = []; $functionName = "read$virtualTypeName"; - $lines[] = "public static function $functionName(RuntimeDataReader \$r) : \\$nativeTypeName{"; - $lines[] = "\treturn match(\$r->readInt($bits)){"; + $lines[] = "public function $functionName() : \\$nativeTypeName{"; + $lines[] = "\treturn match(\$this->readInt($bits)){"; foreach($memberNames as $key => $memberName){ $lines[] = "\t\t$key => $memberName,"; @@ -165,8 +165,16 @@ $enumsUsed = [ PotionType::getAll() ]; -$readerFuncs = []; -$writerFuncs = []; +$readerFuncs = [ + "" => [ + "abstract public function readInt(int \$bits) : int;" + ] +]; +$writerFuncs = [ + "" => [ + "abstract public function writeInt(int \$bits, int \$value) : void;" + ] +]; $functionName = ""; foreach($enumsUsed as $enumMembers){ @@ -220,14 +228,14 @@ namespace pocketmine\data\runtime; HEADER; - echo "final class $className{\n\n"; + echo "trait $className{\n\n"; echo implode("\n\n", array_map(fn(array $functionLines) => "\t" . implode("\n\t", $functionLines), $functions)); echo "\n\n}\n"; file_put_contents(dirname(__DIR__) . '/src/data/runtime/' . $className . '.php', ob_get_clean()); } -printFunctions($writerFuncs, "RuntimeEnumSerializer"); -printFunctions($readerFuncs, "RuntimeEnumDeserializer"); +printFunctions($writerFuncs, "RuntimeEnumSerializerTrait"); +printFunctions($readerFuncs, "RuntimeEnumDeserializerTrait"); echo "Done. Don't forget to run CS fixup after generating code.\n"; diff --git a/src/block/Bell.php b/src/block/Bell.php index 3f6077430..48ceb667f 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -29,8 +29,6 @@ use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -52,12 +50,12 @@ final class Bell extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->attachmentType = RuntimeEnumDeserializer::readBellAttachmentType($r); + $this->attachmentType = $r->readBellAttachmentType(); $this->facing = $r->readHorizontalFacing(); } protected function encodeState(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeBellAttachmentType($w, $this->attachmentType); + $w->writeBellAttachmentType($this->attachmentType); $w->writeHorizontalFacing($this->facing); } diff --git a/src/block/Lever.php b/src/block/Lever.php index 55f7ba0e8..a8d31cd29 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -26,8 +26,6 @@ namespace pocketmine\block; use pocketmine\block\utils\LeverFacing; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -50,12 +48,12 @@ class Lever extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = RuntimeEnumDeserializer::readLeverFacing($r); + $this->facing = $r->readLeverFacing(); $this->activated = $r->readBool(); } protected function encodeState(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeLeverFacing($w, $this->facing); + $w->writeLeverFacing($this->facing); $w->writeBool($this->activated); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 17f9d4490..a36182da1 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -26,8 +26,6 @@ namespace pocketmine\block; use pocketmine\block\utils\MushroomBlockType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use function mt_rand; @@ -42,11 +40,11 @@ class RedMushroomBlock extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->mushroomBlockType = RuntimeEnumDeserializer::readMushroomBlockType($r); + $this->mushroomBlockType = $r->readMushroomBlockType(); } protected function encodeState(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeMushroomBlockType($w, $this->mushroomBlockType); + $w->writeMushroomBlockType($this->mushroomBlockType); } public function getMushroomBlockType() : MushroomBlockType{ return $this->mushroomBlockType; } diff --git a/src/block/Skull.php b/src/block/Skull.php index 33da1da9b..25730341a 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -28,8 +28,6 @@ use pocketmine\block\utils\SkullType; use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -56,11 +54,11 @@ class Skull extends Flowable{ public function getRequiredTypeDataBits() : int{ return 3; } protected function decodeType(RuntimeDataReader $r) : void{ - $this->skullType = RuntimeEnumDeserializer::readSkullType($r); + $this->skullType = $r->readSkullType(); } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeSkullType($w, $this->skullType); + $w->writeSkullType($this->skullType); } public function getRequiredStateDataBits() : int{ return 3; } diff --git a/src/block/Slab.php b/src/block/Slab.php index a1604d79c..cff1079cb 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -27,8 +27,6 @@ use pocketmine\block\utils\SlabType; use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -47,11 +45,11 @@ class Slab extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } protected function decodeState(RuntimeDataReader $r) : void{ - $this->slabType = RuntimeEnumDeserializer::readSlabType($r); + $this->slabType = $r->readSlabType(); } protected function encodeState(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeSlabType($w, $this->slabType); + $w->writeSlabType($this->slabType); } public function isTransparent() : bool{ diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 3529f45af..7abfd82b7 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -26,8 +26,6 @@ namespace pocketmine\block\utils; use pocketmine\block\Block; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; trait ColoredTrait{ /** @var DyeColor */ @@ -37,12 +35,12 @@ trait ColoredTrait{ /** @see Block::decodeType() */ protected function decodeType(RuntimeDataReader $r) : void{ - $this->color = RuntimeEnumDeserializer::readDyeColor($r); + $this->color = $r->readDyeColor(); } /** @see Block::encodeType() */ protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeDyeColor($w, $this->color); + $w->writeDyeColor($this->color); } public function getColor() : DyeColor{ return $this->color; } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index c1730cb26..eefb8d445 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -25,8 +25,6 @@ namespace pocketmine\block\utils; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\item\ItemTypeIds; @@ -43,12 +41,12 @@ trait CopperTrait{ public function getRequiredTypeDataBits() : int{ return 3; } protected function decodeType(RuntimeDataReader $r) : void{ - $this->oxidation = RuntimeEnumDeserializer::readCopperOxidation($r); + $this->oxidation = $r->readCopperOxidation(); $this->waxed = $r->readBool(); } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeCopperOxidation($w, $this->oxidation); + $w->writeCopperOxidation($this->oxidation); $w->writeBool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 2e301f302..7ce28caa0 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -26,8 +26,6 @@ namespace pocketmine\block\utils; use pocketmine\block\Block; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumDeserializer; -use pocketmine\data\runtime\RuntimeEnumSerializer; trait CoralTypeTrait{ protected CoralType $coralType; @@ -37,13 +35,13 @@ trait CoralTypeTrait{ /** @see Block::decodeType() */ protected function decodeType(RuntimeDataReader $r) : void{ - $this->coralType = RuntimeEnumDeserializer::readCoralType($r); + $this->coralType = $r->readCoralType(); $this->dead = $r->readBool(); } /** @see Block::encodeType() */ protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeCoralType($w, $this->coralType); + $w->writeCoralType($this->coralType); $w->writeBool($this->dead); } diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index a5bcc72cf..7fbede9b1 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -29,6 +29,7 @@ use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; final class RuntimeDataReader{ + use RuntimeEnumDeserializerTrait; private int $offset = 0; diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index c475e4428..ac7f1f464 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -29,6 +29,7 @@ use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; final class RuntimeDataWriter{ + use RuntimeEnumSerializerTrait; private int $value = 0; private int $offset = 0; diff --git a/src/data/runtime/RuntimeEnumDeserializer.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php similarity index 85% rename from src/data/runtime/RuntimeEnumDeserializer.php rename to src/data/runtime/RuntimeEnumDeserializerTrait.php index fe20039d6..b23ec5435 100644 --- a/src/data/runtime/RuntimeEnumDeserializer.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -27,10 +27,12 @@ namespace pocketmine\data\runtime; * This class is auto-generated. Do not edit it manually. * @see build/generate-runtime-enum-serializers.php */ -final class RuntimeEnumDeserializer{ +trait RuntimeEnumDeserializerTrait{ - public static function readBellAttachmentType(RuntimeDataReader $r) : \pocketmine\block\utils\BellAttachmentType{ - return match($r->readInt(2)){ + abstract public function readInt(int $bits) : int; + + public function readBellAttachmentType() : \pocketmine\block\utils\BellAttachmentType{ + return match($this->readInt(2)){ 0 => \pocketmine\block\utils\BellAttachmentType::CEILING(), 1 => \pocketmine\block\utils\BellAttachmentType::FLOOR(), 2 => \pocketmine\block\utils\BellAttachmentType::ONE_WALL(), @@ -39,8 +41,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readCopperOxidation(RuntimeDataReader $r) : \pocketmine\block\utils\CopperOxidation{ - return match($r->readInt(2)){ + public function readCopperOxidation() : \pocketmine\block\utils\CopperOxidation{ + return match($this->readInt(2)){ 0 => \pocketmine\block\utils\CopperOxidation::EXPOSED(), 1 => \pocketmine\block\utils\CopperOxidation::NONE(), 2 => \pocketmine\block\utils\CopperOxidation::OXIDIZED(), @@ -49,8 +51,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readCoralType(RuntimeDataReader $r) : \pocketmine\block\utils\CoralType{ - return match($r->readInt(3)){ + public function readCoralType() : \pocketmine\block\utils\CoralType{ + return match($this->readInt(3)){ 0 => \pocketmine\block\utils\CoralType::BRAIN(), 1 => \pocketmine\block\utils\CoralType::BUBBLE(), 2 => \pocketmine\block\utils\CoralType::FIRE(), @@ -60,8 +62,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readDyeColor(RuntimeDataReader $r) : \pocketmine\block\utils\DyeColor{ - return match($r->readInt(4)){ + public function readDyeColor() : \pocketmine\block\utils\DyeColor{ + return match($this->readInt(4)){ 0 => \pocketmine\block\utils\DyeColor::BLACK(), 1 => \pocketmine\block\utils\DyeColor::BLUE(), 2 => \pocketmine\block\utils\DyeColor::BROWN(), @@ -82,8 +84,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readLeverFacing(RuntimeDataReader $r) : \pocketmine\block\utils\LeverFacing{ - return match($r->readInt(3)){ + public function readLeverFacing() : \pocketmine\block\utils\LeverFacing{ + return match($this->readInt(3)){ 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), 1 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z(), 2 => \pocketmine\block\utils\LeverFacing::EAST(), @@ -96,8 +98,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readMushroomBlockType(RuntimeDataReader $r) : \pocketmine\block\utils\MushroomBlockType{ - return match($r->readInt(4)){ + public function readMushroomBlockType() : \pocketmine\block\utils\MushroomBlockType{ + return match($this->readInt(4)){ 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), 1 => \pocketmine\block\utils\MushroomBlockType::CAP_EAST(), 2 => \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE(), @@ -113,8 +115,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readPotionType(RuntimeDataReader $r) : \pocketmine\item\PotionType{ - return match($r->readInt(6)){ + public function readPotionType() : \pocketmine\item\PotionType{ + return match($this->readInt(6)){ 0 => \pocketmine\item\PotionType::AWKWARD(), 1 => \pocketmine\item\PotionType::FIRE_RESISTANCE(), 2 => \pocketmine\item\PotionType::HARMING(), @@ -161,8 +163,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readSkullType(RuntimeDataReader $r) : \pocketmine\block\utils\SkullType{ - return match($r->readInt(3)){ + public function readSkullType() : \pocketmine\block\utils\SkullType{ + return match($this->readInt(3)){ 0 => \pocketmine\block\utils\SkullType::CREEPER(), 1 => \pocketmine\block\utils\SkullType::DRAGON(), 2 => \pocketmine\block\utils\SkullType::PLAYER(), @@ -173,8 +175,8 @@ final class RuntimeEnumDeserializer{ }; } - public static function readSlabType(RuntimeDataReader $r) : \pocketmine\block\utils\SlabType{ - return match($r->readInt(2)){ + public function readSlabType() : \pocketmine\block\utils\SlabType{ + return match($this->readInt(2)){ 0 => \pocketmine\block\utils\SlabType::BOTTOM(), 1 => \pocketmine\block\utils\SlabType::DOUBLE(), 2 => \pocketmine\block\utils\SlabType::TOP(), diff --git a/src/data/runtime/RuntimeEnumSerializer.php b/src/data/runtime/RuntimeEnumSerializerTrait.php similarity index 84% rename from src/data/runtime/RuntimeEnumSerializer.php rename to src/data/runtime/RuntimeEnumSerializerTrait.php index 53593588f..ec423dcd9 100644 --- a/src/data/runtime/RuntimeEnumSerializer.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -27,10 +27,12 @@ namespace pocketmine\data\runtime; * This class is auto-generated. Do not edit it manually. * @see build/generate-runtime-enum-serializers.php */ -final class RuntimeEnumSerializer{ +trait RuntimeEnumSerializerTrait{ - public static function writeBellAttachmentType(RuntimeDataWriter $w, \pocketmine\block\utils\BellAttachmentType $value) : void{ - $w->writeInt(2, match($value){ + abstract public function writeInt(int $bits, int $value) : void; + + public function writeBellAttachmentType(\pocketmine\block\utils\BellAttachmentType $value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\BellAttachmentType::CEILING() => 0, \pocketmine\block\utils\BellAttachmentType::FLOOR() => 1, \pocketmine\block\utils\BellAttachmentType::ONE_WALL() => 2, @@ -39,8 +41,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeCopperOxidation(RuntimeDataWriter $w, \pocketmine\block\utils\CopperOxidation $value) : void{ - $w->writeInt(2, match($value){ + public function writeCopperOxidation(\pocketmine\block\utils\CopperOxidation $value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\CopperOxidation::EXPOSED() => 0, \pocketmine\block\utils\CopperOxidation::NONE() => 1, \pocketmine\block\utils\CopperOxidation::OXIDIZED() => 2, @@ -49,8 +51,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeCoralType(RuntimeDataWriter $w, \pocketmine\block\utils\CoralType $value) : void{ - $w->writeInt(3, match($value){ + public function writeCoralType(\pocketmine\block\utils\CoralType $value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\CoralType::BRAIN() => 0, \pocketmine\block\utils\CoralType::BUBBLE() => 1, \pocketmine\block\utils\CoralType::FIRE() => 2, @@ -60,8 +62,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeDyeColor(RuntimeDataWriter $w, \pocketmine\block\utils\DyeColor $value) : void{ - $w->writeInt(4, match($value){ + public function writeDyeColor(\pocketmine\block\utils\DyeColor $value) : void{ + $this->writeInt(4, match($value){ \pocketmine\block\utils\DyeColor::BLACK() => 0, \pocketmine\block\utils\DyeColor::BLUE() => 1, \pocketmine\block\utils\DyeColor::BROWN() => 2, @@ -82,8 +84,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeLeverFacing(RuntimeDataWriter $w, \pocketmine\block\utils\LeverFacing $value) : void{ - $w->writeInt(3, match($value){ + public function writeLeverFacing(\pocketmine\block\utils\LeverFacing $value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z() => 1, \pocketmine\block\utils\LeverFacing::EAST() => 2, @@ -96,8 +98,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeMushroomBlockType(RuntimeDataWriter $w, \pocketmine\block\utils\MushroomBlockType $value) : void{ - $w->writeInt(4, match($value){ + public function writeMushroomBlockType(\pocketmine\block\utils\MushroomBlockType $value) : void{ + $this->writeInt(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, \pocketmine\block\utils\MushroomBlockType::CAP_EAST() => 1, \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE() => 2, @@ -113,8 +115,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writePotionType(RuntimeDataWriter $w, \pocketmine\item\PotionType $value) : void{ - $w->writeInt(6, match($value){ + public function writePotionType(\pocketmine\item\PotionType $value) : void{ + $this->writeInt(6, match($value){ \pocketmine\item\PotionType::AWKWARD() => 0, \pocketmine\item\PotionType::FIRE_RESISTANCE() => 1, \pocketmine\item\PotionType::HARMING() => 2, @@ -161,8 +163,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeSkullType(RuntimeDataWriter $w, \pocketmine\block\utils\SkullType $value) : void{ - $w->writeInt(3, match($value){ + public function writeSkullType(\pocketmine\block\utils\SkullType $value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\SkullType::CREEPER() => 0, \pocketmine\block\utils\SkullType::DRAGON() => 1, \pocketmine\block\utils\SkullType::PLAYER() => 2, @@ -173,8 +175,8 @@ final class RuntimeEnumSerializer{ }); } - public static function writeSlabType(RuntimeDataWriter $w, \pocketmine\block\utils\SlabType $value) : void{ - $w->writeInt(2, match($value){ + public function writeSlabType(\pocketmine\block\utils\SlabType $value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\SlabType::BOTTOM() => 0, \pocketmine\block\utils\SlabType::DOUBLE() => 1, \pocketmine\block\utils\SlabType::TOP() => 2, diff --git a/src/item/Banner.php b/src/item/Banner.php index 57202d388..6fd242c03 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -30,7 +30,6 @@ use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\BannerPatternTypeIdMap; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; @@ -65,7 +64,7 @@ class Banner extends ItemBlockWallOrFloor{ } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeDyeColor($w, $this->color); + $w->writeDyeColor($this->color); } /** diff --git a/src/item/Dye.php b/src/item/Dye.php index fa93a1471..70b073059 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -25,7 +25,6 @@ namespace pocketmine\item; use pocketmine\block\utils\DyeColor; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumSerializer; class Dye extends Item{ private DyeColor $color; @@ -36,7 +35,7 @@ class Dye extends Item{ } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writeDyeColor($w, $this->color); + $w->writeDyeColor($this->color); } public function getColor() : DyeColor{ diff --git a/src/item/Potion.php b/src/item/Potion.php index 462d6abed..d1e40b673 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\entity\Living; use pocketmine\player\Player; @@ -38,7 +37,7 @@ class Potion extends Item implements ConsumableItem{ } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writePotionType($w, $this->potionType); + $w->writePotionType($this->potionType); } public function getType() : PotionType{ return $this->potionType; } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index ab1bab4d3..52ae10e64 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\data\runtime\RuntimeDataWriter; -use pocketmine\data\runtime\RuntimeEnumSerializer; use pocketmine\entity\Location; use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity; use pocketmine\entity\projectile\Throwable; @@ -40,7 +39,7 @@ class SplashPotion extends ProjectileItem{ } protected function encodeType(RuntimeDataWriter $w) : void{ - RuntimeEnumSerializer::writePotionType($w, $this->potionType); + $w->writePotionType($this->potionType); } public function getType() : PotionType{ return $this->potionType; } From b8d1b00985bc0495247793ac6431107bb56182e3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 18 Jul 2022 15:26:14 +0100 Subject: [PATCH 350/692] phpstan fail very sad :( --- build/generate-runtime-enum-serializers.php | 2 +- src/data/runtime/RuntimeEnumSerializerTrait.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index ff0ad8bed..944eb9772 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -172,7 +172,7 @@ $readerFuncs = [ ]; $writerFuncs = [ "" => [ - "abstract public function writeInt(int \$bits, int \$value) : void;" + "abstract public function writeInt(int \$bits, int \$value) : self;" ] ]; $functionName = ""; diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index ec423dcd9..8d0d98a9f 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -29,7 +29,7 @@ namespace pocketmine\data\runtime; */ trait RuntimeEnumSerializerTrait{ - abstract public function writeInt(int $bits, int $value) : void; + abstract public function writeInt(int $bits, int $value) : self; public function writeBellAttachmentType(\pocketmine\block\utils\BellAttachmentType $value) : void{ $this->writeInt(2, match($value){ From cf34f88a679296f552b8663b97090342d86f5b0d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 18 Jul 2022 15:48:03 +0100 Subject: [PATCH 351/692] Make Block::decodeState() and encodeState() more codegen-friendly --- src/block/BrewingStand.php | 21 ++-------------- src/block/Vine.php | 8 ++---- src/data/runtime/RuntimeDataReader.php | 34 ++++++++++++++++++++++++++ src/data/runtime/RuntimeDataWriter.php | 34 ++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index c35576d58..c0e3d9e37 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -47,28 +47,11 @@ class BrewingStand extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } protected function decodeState(RuntimeDataReader $r) : void{ - $result = []; - foreach([ - BrewingStandSlot::EAST(), - BrewingStandSlot::NORTHWEST(), - BrewingStandSlot::SOUTHWEST(), - ] as $member){ - if($r->readBool()){ - $result[$member->id()] = $member; - } - } - - $this->setSlots($result); + $this->setSlots($r->readBrewingStandSlots()); } protected function encodeState(RuntimeDataWriter $w) : void{ - foreach([ - BrewingStandSlot::EAST(), - BrewingStandSlot::NORTHWEST(), - BrewingStandSlot::SOUTHWEST(), - ] as $member){ - $w->writeBool(isset($this->slots[$member->id()])); - } + $w->writeBrewingStandSlots($this->getSlots()); } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Vine.php b/src/block/Vine.php index d716b5eb8..a90de6c8d 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -43,15 +43,11 @@ class Vine extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } protected function decodeState(RuntimeDataReader $r) : void{ - foreach(Facing::HORIZONTAL as $facing){ - $this->setFace($facing, $r->readBool()); - } + $this->faces = $r->readHorizontalFacingFlags(); } protected function encodeState(RuntimeDataWriter $w) : void{ - foreach(Facing::HORIZONTAL as $facing){ - $w->writeBool($this->hasFace($facing)); - } + $w->writeHorizontalFacingFlags($this->faces); } /** @return int[] */ diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index 7fbede9b1..5ed08cdf8 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\runtime; +use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -71,6 +72,20 @@ final class RuntimeDataReader{ }; } + /** + * @return int[] + */ + public function readHorizontalFacingFlags() : array{ + $result = []; + foreach(Facing::HORIZONTAL as $facing){ + if($this->readBool()){ + $result[$facing] = $facing; + } + } + + return $result; + } + public function readFacing() : int{ return match($this->readInt(3)){ 0 => Facing::DOWN, @@ -121,5 +136,24 @@ final class RuntimeDataReader{ return $connections; } + /** + * @return BrewingStandSlot[] + * @phpstan-return array + */ + public function readBrewingStandSlots() : array{ + $result = []; + foreach([ + BrewingStandSlot::EAST(), + BrewingStandSlot::NORTHWEST(), + BrewingStandSlot::SOUTHWEST(), + ] as $member){ + if($this->readBool()){ + $result[$member->id()] = $member; + } + } + + return $result; + } + public function getOffset() : int{ return $this->offset; } } diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index ac7f1f464..a0d7ba7ba 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -23,10 +23,12 @@ declare(strict_types=1); namespace pocketmine\data\runtime; +use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; +use function array_flip; final class RuntimeDataWriter{ use RuntimeEnumSerializerTrait; @@ -78,6 +80,20 @@ final class RuntimeDataWriter{ }); } + /** + * @param int[] $faces + * + * @return $this + */ + public function writeHorizontalFacingFlags(array $faces) : self{ + $uniqueFaces = array_flip($faces); + foreach(Facing::HORIZONTAL as $facing){ + $this->writeBool(isset($uniqueFaces[$facing])); + } + + return $this; + } + public function writeFacing(int $facing) : self{ return $this->writeInt(3, match($facing){ 0 => Facing::DOWN, @@ -125,6 +141,24 @@ final class RuntimeDataWriter{ return $this; } + /** + * @param BrewingStandSlot[] $slots + * @phpstan-param array $slots + * + * @return $this + */ + public function writeBrewingStandSlots(array $slots) : self{ + foreach([ + BrewingStandSlot::EAST(), + BrewingStandSlot::NORTHWEST(), + BrewingStandSlot::SOUTHWEST(), + ] as $member){ + $this->writeBool(isset($slots[$member->id()])); + } + + return $this; + } + public function getValue() : int{ return $this->value; } public function getOffset() : int{ return $this->offset; } From 6d4279671e7ee5b0987f1e8e0e1e9c076fd0565a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 18 Jul 2022 18:25:41 +0100 Subject: [PATCH 352/692] A giant hack to cut down code needed for runtime block serialization by 50% this also avoids repeated information and inconsistencies. --- build/generate-runtime-enum-serializers.php | 15 ++-- src/block/Anvil.php | 16 +--- src/block/Bamboo.php | 14 +-- src/block/BambooSapling.php | 8 +- src/block/Barrel.php | 11 +-- src/block/Bed.php | 14 +-- src/block/Bedrock.php | 8 +- src/block/Bell.php | 11 +-- src/block/Block.php | 22 ++--- src/block/BrewingStand.php | 8 +- src/block/Button.php | 11 +-- src/block/Cactus.php | 8 +- src/block/Cake.php | 8 +- src/block/CakeWithDyedCandle.php | 6 ++ src/block/Candle.php | 12 +-- src/block/CocoaBlock.php | 11 +-- src/block/CopperStairs.php | 6 ++ src/block/Crops.php | 8 +- src/block/DaylightSensor.php | 11 +-- src/block/DetectorRail.php | 11 +-- src/block/Dirt.php | 8 +- src/block/Door.php | 17 ++-- src/block/DoublePlant.php | 8 +- src/block/DyedCandle.php | 6 ++ src/block/EndPortalFrame.php | 11 +-- src/block/Farmland.php | 8 +- src/block/FenceGate.php | 14 +-- src/block/Fire.php | 8 +- src/block/FloorCoralFan.php | 8 +- src/block/FrostedIce.php | 8 +- src/block/Furnace.php | 11 +-- src/block/Hopper.php | 16 +--- src/block/ItemFrame.php | 19 ++-- src/block/Lantern.php | 8 +- src/block/Leaves.php | 11 +-- src/block/Lectern.php | 11 +-- src/block/Lever.php | 11 +-- src/block/Light.php | 8 +- src/block/Liquid.php | 14 +-- src/block/NetherPortal.php | 8 +- src/block/NetherWartPlant.php | 8 +- src/block/Rail.php | 13 +-- src/block/RedMushroomBlock.php | 8 +- src/block/RedstoneComparator.php | 15 +--- src/block/RedstoneLamp.php | 8 +- src/block/RedstoneOre.php | 8 +- src/block/RedstoneRepeater.php | 14 +-- src/block/RedstoneTorch.php | 11 +-- src/block/Sapling.php | 8 +- src/block/SeaPickle.php | 11 +-- src/block/ShulkerBox.php | 6 +- src/block/SimplePressurePlate.php | 8 +- src/block/Skull.php | 21 +---- src/block/Slab.php | 8 +- src/block/SnowLayer.php | 8 +- src/block/Sponge.php | 8 +- src/block/Stair.php | 11 +-- src/block/StraightOnlyRail.php | 13 +-- src/block/Sugarcane.php | 8 +- src/block/SweetBerryBush.php | 8 +- src/block/TNT.php | 16 +--- src/block/Torch.php | 13 +-- src/block/Trapdoor.php | 14 +-- src/block/Tripwire.php | 17 ++-- src/block/TripwireHook.php | 14 +-- src/block/UnknownBlock.php | 8 +- src/block/Vine.php | 8 +- src/block/Wall.php | 11 +-- src/block/WallCoralFan.php | 8 +- src/block/Wood.php | 8 +- .../AnalogRedstoneSignalEmitterTrait.php | 8 +- src/block/utils/AnyFacingTrait.php | 8 +- src/block/utils/CandleTrait.php | 8 +- src/block/utils/ColoredTrait.php | 11 +-- src/block/utils/CopperTrait.php | 20 +++-- src/block/utils/CoralTypeTrait.php | 14 +-- src/block/utils/HorizontalFacingTrait.php | 8 +- src/block/utils/PillarRotationTrait.php | 8 +- .../utils/RailPoweredByRedstoneTrait.php | 11 +-- src/block/utils/SignLikeRotationTrait.php | 8 +- src/data/runtime/RuntimeDataReader.php | 88 +++++++++++++------ src/data/runtime/RuntimeDataWriter.php | 65 +++++++------- .../runtime/RuntimeEnumDeserializerTrait.php | 38 ++++---- .../runtime/RuntimeEnumSerializerTrait.php | 38 ++++---- src/item/Banner.php | 2 +- src/item/CoralFan.php | 2 +- src/item/Dye.php | 2 +- src/item/ItemBlock.php | 2 +- src/item/Potion.php | 2 +- src/item/SplashPotion.php | 2 +- 90 files changed, 380 insertions(+), 717 deletions(-) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 944eb9772..65d2b3a61 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -41,6 +41,7 @@ use function dirname; use function file_put_contents; use function implode; use function ksort; +use function lcfirst; use function log; use function ob_get_clean; use function ob_start; @@ -58,9 +59,9 @@ function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $bits = getBitsRequired($memberNames); $lines = []; - $functionName = "write$virtualTypeName"; + $functionName = lcfirst($virtualTypeName); $lines[] = "public function $functionName(\\$nativeTypeName \$value) : void{"; - $lines[] = "\t\$this->writeInt($bits, match(\$value){"; + $lines[] = "\t\$this->int($bits, match(\$value){"; foreach($memberNames as $key => $memberName){ $lines[] = "\t\t$memberName => $key,"; @@ -83,9 +84,9 @@ function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array $bits = getBitsRequired($memberNames); $lines = []; - $functionName = "read$virtualTypeName"; - $lines[] = "public function $functionName() : \\$nativeTypeName{"; - $lines[] = "\treturn match(\$this->readInt($bits)){"; + $functionName = lcfirst($virtualTypeName); + $lines[] = "public function $functionName(\\$nativeTypeName &\$value) : void{"; + $lines[] = "\t\$value = match(\$this->readInt($bits)){"; foreach($memberNames as $key => $memberName){ $lines[] = "\t\t$key => $memberName,"; @@ -167,12 +168,12 @@ $enumsUsed = [ $readerFuncs = [ "" => [ - "abstract public function readInt(int \$bits) : int;" + "abstract protected function readInt(int \$bits) : int;" ] ]; $writerFuncs = [ "" => [ - "abstract public function writeInt(int \$bits, int \$value) : self;" + "abstract public function int(int \$bits, int \$value) : void;" ] ]; $functionName = ""; diff --git a/src/block/Anvil.php b/src/block/Anvil.php index aed4dac0b..0472e4cc7 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -49,22 +49,14 @@ class Anvil extends Transparent implements Fallable{ public function getRequiredTypeDataBits() : int{ return 2; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->setDamage($r->readBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED)); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->getDamage()); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->setFacing($r->readHorizontalFacing()); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->getFacing()); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); } public function getDamage() : int{ return $this->damage; } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 61cb7c665..f231d19b5 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -58,16 +58,10 @@ class Bamboo extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->setLeafSize($r->readBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES)); - $this->setThick($r->readBool()); - $this->setReady($r->readBool()); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->getLeafSize()); - $w->writeBool($this->isThick()); - $w->writeBool($this->isReady()); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); + $w->bool($this->thick); + $w->bool($this->ready); } public function isThick() : bool{ return $this->thick; } diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index d005f3764..216dc255a 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -39,12 +39,8 @@ final class BambooSapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->setReady($r->readBool()); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->isReady()); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->ready); } public function isReady() : bool{ return $this->ready; } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 14ef97e09..68c344825 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -41,14 +41,9 @@ class Barrel extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->setFacing($r->readFacing()); - $this->setOpen($r->readBool()); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->getFacing()); - $w->writeBool($this->isOpen()); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facing($this->facing); + $w->bool($this->open); } public function isOpen() : bool{ diff --git a/src/block/Bed.php b/src/block/Bed.php index 258f9ce06..350bf865d 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -56,16 +56,10 @@ class Bed extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->occupied = $r->readBool(); - $this->head = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->occupied); - $w->writeBool($this->head); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->occupied); + $w->bool($this->head); } public function readStateFromWorld() : Block{ diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index ac8e95037..b4252d27c 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -31,12 +31,8 @@ class Bedrock extends Opaque{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->burnsForever = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->burnsForever); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->burnsForever); } public function burnsForever() : bool{ diff --git a/src/block/Bell.php b/src/block/Bell.php index 48ceb667f..3cc131792 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -49,14 +49,9 @@ final class Bell extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->attachmentType = $r->readBellAttachmentType(); - $this->facing = $r->readHorizontalFacing(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBellAttachmentType($this->attachmentType); - $w->writeHorizontalFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bellAttachmentType($this->attachmentType); + $w->horizontalFacing($this->facing); } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Block.php b/src/block/Block.php index 383b28797..aab1a3bc8 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -107,7 +107,7 @@ class Block{ $givenBits = $typeBits; $reader = new RuntimeDataReader($givenBits, $data); - $this->decodeType($reader); + $this->describeType($reader); $readBits = $reader->getOffset(); if($typeBits !== $readBits){ throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were provided, but $readBits were read"); @@ -124,21 +124,13 @@ class Block{ $reader = new RuntimeDataReader($givenBits, $data); $this->decodeTypeData($reader->readInt($typeBits)); - $this->decodeState($reader); + $this->describeState($reader); $readBits = $reader->getOffset() - $typeBits; if($stateBits !== $readBits){ throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were provided, but $readBits were read"); } } - protected function decodeType(RuntimeDataReader $r) : void{ - //NOOP - } - - protected function decodeState(RuntimeDataReader $r) : void{ - //NOOP - } - /** * @internal */ @@ -147,7 +139,7 @@ class Block{ $requiredBits = $typeBits; $writer = new RuntimeDataWriter($requiredBits); - $this->encodeType($writer); + $this->describeType($writer); $writtenBits = $writer->getOffset(); if($typeBits !== $writtenBits){ throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were expected, but $writtenBits were written"); @@ -164,9 +156,9 @@ class Block{ $stateBits = $this->getRequiredStateDataBits(); $requiredBits = $typeBits + $stateBits; $writer = new RuntimeDataWriter($requiredBits); - $writer->writeInt($typeBits, $this->computeTypeData()); + $writer->int($typeBits, $this->computeTypeData()); - $this->encodeState($writer); + $this->describeState($writer); $writtenBits = $writer->getOffset() - $typeBits; if($stateBits !== $writtenBits){ throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were expected, but $writtenBits were written"); @@ -175,11 +167,11 @@ class Block{ return $writer->getValue(); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ //NOOP } - protected function encodeState(RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ //NOOP } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index c0e3d9e37..dabaa75e2 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -46,12 +46,8 @@ class BrewingStand extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->setSlots($r->readBrewingStandSlots()); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBrewingStandSlots($this->getSlots()); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->brewingStandSlots($this->slots); } protected function recalculateCollisionBoxes() : array{ diff --git a/src/block/Button.php b/src/block/Button.php index 1ffca4387..98fcf69a2 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -41,14 +41,9 @@ abstract class Button extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readFacing(); - $this->pressed = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); - $w->writeBool($this->pressed); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facing($this->facing); + $w->bool($this->pressed); } public function isPressed() : bool{ return $this->pressed; } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index f1c4a5909..40087f53e 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -44,12 +44,8 @@ class Cactus extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Cake.php b/src/block/Cake.php index e6b152ce0..a17a767c1 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -39,12 +39,8 @@ class Cake extends BaseCake{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->bites = $r->readBoundedInt(3, 0, self::MAX_BITES); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, 0, self::MAX_BITES, $this->bites); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } /** diff --git a/src/block/CakeWithDyedCandle.php b/src/block/CakeWithDyedCandle.php index 959017e4d..211da887a 100644 --- a/src/block/CakeWithDyedCandle.php +++ b/src/block/CakeWithDyedCandle.php @@ -24,10 +24,16 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\ColoredTrait; +use pocketmine\block\utils\DyeColor; class CakeWithDyedCandle extends CakeWithCandle{ use ColoredTrait; + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + $this->color = DyeColor::WHITE(); + parent::__construct($idInfo, $name, $breakInfo); + } + public function getCandle() : Candle{ return VanillaBlocks::DYED_CANDLE()->setColor($this->color); } diff --git a/src/block/Candle.php b/src/block/Candle.php index b917b7101..bda600edc 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -37,8 +37,7 @@ use pocketmine\world\BlockTransaction; class Candle extends Transparent{ use CandleTrait { - decodeState as decodeLitState; - encodeState as encodeLitState; + describeState as encodeLitState; getLightLevel as getBaseLightLevel; } @@ -51,14 +50,9 @@ class Candle extends Transparent{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->decodeLitState($r); - $this->count = $r->readBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ $this->encodeLitState($w); - $w->writeBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); + $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); } public function getCount() : int{ return $this->count; } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 4144bd754..47213f82f 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -49,14 +49,9 @@ class CocoaBlock extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/CopperStairs.php b/src/block/CopperStairs.php index b16d49ec1..a932938d2 100644 --- a/src/block/CopperStairs.php +++ b/src/block/CopperStairs.php @@ -23,8 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CopperTrait; class CopperStairs extends Stair{ use CopperTrait; + + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + $this->oxidation = CopperOxidation::NONE(); + parent::__construct($idInfo, $name, $breakInfo); + } } diff --git a/src/block/Crops.php b/src/block/Crops.php index 092632bb2..4052485c6 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -41,12 +41,8 @@ abstract class Crops extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(3, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 77a28274c..d266817d1 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -44,14 +44,9 @@ class DaylightSensor extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->signalStrength = $r->readBoundedInt(4, 0, 15); - $this->inverted = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, 15, $this->signalStrength); - $w->writeBool($this->inverted); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, 15, $this->signalStrength); + $w->bool($this->inverted); } public function isInverted() : bool{ diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 716597214..92c60f9f8 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -31,14 +31,9 @@ class DetectorRail extends StraightOnlyRail{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - parent::decodeState($r); - $this->activated = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - parent::encodeState($w); - $w->writeBool($this->activated); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + parent::describeState($w); + $w->bool($this->activated); } public function isActivated() : bool{ return $this->activated; } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index cdf24be72..c1e4e26c1 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -37,12 +37,8 @@ class Dirt extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->coarse = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBool($this->coarse); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->coarse); } public function isCoarse() : bool{ return $this->coarse; } diff --git a/src/block/Door.php b/src/block/Door.php index 9f99de849..366670a41 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -44,18 +44,11 @@ class Door extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->top = $r->readBool(); - $this->hingeRight = $r->readBool(); - $this->open = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->top); - $w->writeBool($this->hingeRight); - $w->writeBool($this->open); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->top); + $w->bool($this->hingeRight); + $w->bool($this->open); } public function readStateFromWorld() : Block{ diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index f291298f4..4874826d2 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -36,12 +36,8 @@ class DoublePlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->top = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->top); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->top); } public function isTop() : bool{ return $this->top; } diff --git a/src/block/DyedCandle.php b/src/block/DyedCandle.php index b90aabac1..76b9a1427 100644 --- a/src/block/DyedCandle.php +++ b/src/block/DyedCandle.php @@ -24,10 +24,16 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\ColoredTrait; +use pocketmine\block\utils\DyeColor; class DyedCandle extends Candle{ use ColoredTrait; + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + $this->color = DyeColor::WHITE(); + parent::__construct($idInfo, $name, $breakInfo); + } + protected function getCandleIfCompatibleType(Block $block) : ?Candle{ $result = parent::getCandleIfCompatibleType($block); //different coloured candles can't be combined in the same block diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 5cc4294c8..2e4250984 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -38,14 +38,9 @@ class EndPortalFrame extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->eye = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->eye); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->eye); } public function hasEye() : bool{ return $this->eye; } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 9cbb55c93..037f31bbb 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -40,12 +40,8 @@ class Farmland extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->wetness = $r->readBoundedInt(3, 0, self::MAX_WETNESS); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, 0, self::MAX_WETNESS, $this->wetness); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } public function getWetness() : int{ return $this->wetness; } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 2eafb9958..d18f1dcc0 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -45,16 +45,10 @@ class FenceGate extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->open = $r->readBool(); - $this->inWall = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->open); - $w->writeBool($this->inWall); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->open); + $w->bool($this->inWall); } public function isOpen() : bool{ return $this->open; } diff --git a/src/block/Fire.php b/src/block/Fire.php index 45546c720..30ecb6138 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -42,12 +42,8 @@ class Fire extends BaseFire{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 24769ae5b..250fe0e4c 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -40,12 +40,8 @@ final class FloorCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->axis = $r->readHorizontalAxis(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalAxis($this->axis); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalAxis($this->axis); } public function getAxis() : int{ return $this->axis; } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 8aba73644..0cce7ca98 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -35,12 +35,8 @@ class FrostedIce extends Ice{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 5e2f19aab..3ec395883 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -41,14 +41,9 @@ class Furnace extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->lit = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->lit); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->lit); } public function getLightLevel() : int{ diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 9b0996d92..603a48bae 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -26,7 +26,6 @@ namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -43,18 +42,9 @@ class Hopper extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $facing = $r->readFacing(); - if($facing === Facing::UP){ - throw new InvalidSerializedRuntimeDataException("Hopper may not face upward"); - } - $this->facing = $facing; - $this->powered = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facingExcept($this->facing, Facing::UP); + $w->bool($this->powered); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 8785fbd54..8443972ec 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -51,24 +51,15 @@ class ItemFrame extends Flowable{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->glowing = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBool($this->glowing); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->glowing); } public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readFacing(); - $this->hasMap = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); - $w->writeBool($this->hasMap); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facing($this->facing); + $w->bool($this->hasMap); } public function readStateFromWorld() : Block{ diff --git a/src/block/Lantern.php b/src/block/Lantern.php index 825a54560..d33ed5883 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -46,12 +46,8 @@ class Lantern extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->hanging = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->hanging); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->hanging); } public function isHanging() : bool{ return $this->hanging; } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 93c423e06..c63939cd8 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -50,14 +50,9 @@ class Leaves extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->noDecay = $r->readBool(); - $this->checkDecay = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->noDecay); - $w->writeBool($this->checkDecay); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->noDecay); + $w->bool($this->checkDecay); } public function isNoDecay() : bool{ return $this->noDecay; } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 23c971ae2..66c857110 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -49,14 +49,9 @@ class Lectern extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->producingSignal = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->producingSignal); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->producingSignal); } public function readStateFromWorld() : Block{ diff --git a/src/block/Lever.php b/src/block/Lever.php index a8d31cd29..d8cb30658 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -47,14 +47,9 @@ class Lever extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readLeverFacing(); - $this->activated = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeLeverFacing($this->facing); - $w->writeBool($this->activated); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->leverFacing($this->facing); + $w->bool($this->activated); } public function getFacing() : LeverFacing{ return $this->facing; } diff --git a/src/block/Light.php b/src/block/Light.php index 804f98871..397a8f98d 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -37,12 +37,8 @@ final class Light extends Flowable{ public function getRequiredTypeDataBits() : int{ return 4; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->level = $r->readBoundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } public function getLightLevel() : int{ return $this->level; } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index e1bafbcbc..914b88404 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -51,16 +51,10 @@ abstract class Liquid extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->decay = $r->readBoundedInt(3, 0, self::MAX_DECAY); - $this->falling = $r->readBool(); - $this->still = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, 0, self::MAX_DECAY, $this->decay); - $w->writeBool($this->falling); - $w->writeBool($this->still); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); + $w->bool($this->falling); + $w->bool($this->still); } public function isFalling() : bool{ return $this->falling; } diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 0c957a617..7a12ebd74 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -37,12 +37,8 @@ class NetherPortal extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->axis = $r->readHorizontalAxis(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalAxis($this->axis); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalAxis($this->axis); } public function getAxis() : int{ diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 13da176e7..a9325d92f 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -40,12 +40,8 @@ class NetherWartPlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(2, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(2, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/Rail.php b/src/block/Rail.php index 5cce50949..31d74c061 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Facing; @@ -38,16 +37,8 @@ class Rail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $railShape = $r->readInt(4); - if(!isset(RailConnectionInfo::CONNECTIONS[$railShape]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$railShape])){ - throw new InvalidSerializedRuntimeDataException("Invalid rail shape $railShape"); - } - $this->railShape = $railShape; - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(4, $this->railShape); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->railShape($this->railShape); } protected function setShapeFromConnections(array $connections) : void{ diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index a36182da1..c9595e633 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -39,12 +39,8 @@ class RedMushroomBlock extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->mushroomBlockType = $r->readMushroomBlockType(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeMushroomBlockType($this->mushroomBlockType); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->mushroomBlockType($this->mushroomBlockType); } public function getMushroomBlockType() : MushroomBlockType{ return $this->mushroomBlockType; } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index aeaaeb543..50fe4d28f 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -47,17 +47,10 @@ class RedstoneComparator extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->isSubtractMode = $r->readBool(); - $this->powered = $r->readBool(); - //TODO: this doesn't call the decoder from AnalogRedstoneSignalEmitter - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->isSubtractMode); - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->isSubtractMode); + $w->bool($this->powered); } public function readStateFromWorld() : Block{ diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 4b10797a4..9a8c3785c 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -32,12 +32,8 @@ class RedstoneLamp extends Opaque{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->powered = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->powered); } public function getLightLevel() : int{ diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 044bb31d0..c4f449700 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -36,12 +36,8 @@ class RedstoneOre extends Opaque{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->lit = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->lit); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->lit); } public function isLit() : bool{ diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 39b720a69..b72d25463 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -46,16 +46,10 @@ class RedstoneRepeater extends Flowable{ public function getRequiredStateDataBits() : int{ return 5; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->delay = $r->readBoundedInt(2, self::MIN_DELAY, self::MAX_DELAY); - $this->powered = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBoundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); + $w->bool($this->powered); } public function getDelay() : int{ return $this->delay; } diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index 420a07098..ba37039f2 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -31,14 +31,9 @@ class RedstoneTorch extends Torch{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - parent::decodeState($r); - $this->lit = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - parent::encodeState($w); - $w->writeBool($this->lit); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + parent::describeState($w); + $w->bool($this->lit); } public function isLit() : bool{ diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 3d9a32776..c7117d4b2 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -49,12 +49,8 @@ class Sapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->ready = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->ready); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->ready); } public function isReady() : bool{ return $this->ready; } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index c79363062..fe2cd1dac 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -41,14 +41,9 @@ class SeaPickle extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->count = $r->readBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT); - $this->underwater = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); - $w->writeBool($this->underwater); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); + $w->bool($this->underwater); } public function getCount() : int{ return $this->count; } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index b5b2223d8..72236be48 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -37,11 +37,7 @@ class ShulkerBox extends Opaque{ public function getRequiredStateDataBits() : int{ return 0; } - protected function decodeState(RuntimeDataReader $r) : void{ - //NOOP - we don't read or write facing here, because the tile persists it - } - - protected function encodeState(RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index cf203e35f..1d0a9d8c1 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -31,12 +31,8 @@ abstract class SimplePressurePlate extends PressurePlate{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->pressed = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->pressed); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->pressed); } public function isPressed() : bool{ return $this->pressed; } diff --git a/src/block/Skull.php b/src/block/Skull.php index 25730341a..b7a707476 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\utils\SkullType; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -53,26 +52,14 @@ class Skull extends Flowable{ public function getRequiredTypeDataBits() : int{ return 3; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->skullType = $r->readSkullType(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeSkullType($this->skullType); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->skullType($this->skullType); } public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $facing = $r->readFacing(); - if($facing === Facing::DOWN){ - throw new InvalidSerializedRuntimeDataException("Skull may not face down"); - } - $this->facing = $facing; - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facingExcept($this->facing, Facing::DOWN); } public function readStateFromWorld() : Block{ diff --git a/src/block/Slab.php b/src/block/Slab.php index cff1079cb..37eaf5e6b 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -44,12 +44,8 @@ class Slab extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->slabType = $r->readSlabType(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeSlabType($this->slabType); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->slabType($this->slabType); } public function isTransparent() : bool{ diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index f45afc9f9..65c08333e 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -49,12 +49,8 @@ class SnowLayer extends Flowable implements Fallable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->layers = $r->readBoundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } public function getLayers() : int{ return $this->layers; } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index d2752a18f..d4eceb542 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -31,12 +31,8 @@ class Sponge extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->wet = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBool($this->wet); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->wet); } public function isWet() : bool{ return $this->wet; } diff --git a/src/block/Stair.php b/src/block/Stair.php index 5a585277b..541266f0a 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -49,14 +49,9 @@ class Stair extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->upsideDown = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->upsideDown); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->upsideDown); } public function readStateFromWorld() : Block{ diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 1c09c3cae..9b8141355 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use function array_keys; @@ -40,16 +39,8 @@ class StraightOnlyRail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $railShape = $r->readInt(3); - if(!isset(RailConnectionInfo::CONNECTIONS[$railShape])){ - throw new InvalidSerializedRuntimeDataException("No rail shape matches meta $railShape"); - } - $this->railShape = $railShape; - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeInt(3, $this->railShape); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->straightOnlyRailShape($this->railShape); } protected function setShapeFromConnections(array $connections) : void{ diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index e3c8e80cc..2697a14f9 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -40,12 +40,8 @@ class Sugarcane extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(4, 0, self::MAX_AGE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, self::MAX_AGE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } private function grow() : bool{ diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 487dd81b1..ac040976a 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -48,12 +48,8 @@ class SweetBerryBush extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->age = $r->readBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } public function getAge() : int{ return $this->age; } diff --git a/src/block/TNT.php b/src/block/TNT.php index 840d74794..1b435b011 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -47,22 +47,14 @@ class TNT extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->worksUnderwater = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBool($this->worksUnderwater); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->worksUnderwater); } public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->unstable = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->unstable); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->unstable); } public function isUnstable() : bool{ return $this->unstable; } diff --git a/src/block/Torch.php b/src/block/Torch.php index dbb9014a8..b84012839 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -40,16 +39,8 @@ class Torch extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $facing = $r->readFacing(); - if($facing === Facing::DOWN){ - throw new InvalidSerializedRuntimeDataException("Torch cannot have a DOWN facing"); - } - $this->facing = $facing; - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facingExcept($this->facing, Facing::DOWN); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index a0288d359..57b9f4f65 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -43,16 +43,10 @@ class Trapdoor extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->top = $r->readBool(); - $this->open = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->top); - $w->writeBool($this->open); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->top); + $w->bool($this->open); } public function isOpen() : bool{ return $this->open; } diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 1971b391c..74d55ffba 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -36,18 +36,11 @@ class Tripwire extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->triggered = $r->readBool(); - $this->suspended = $r->readBool(); - $this->connected = $r->readBool(); - $this->disarmed = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->triggered); - $w->writeBool($this->suspended); - $w->writeBool($this->connected); - $w->writeBool($this->disarmed); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->triggered); + $w->bool($this->suspended); + $w->bool($this->connected); + $w->bool($this->disarmed); } public function isTriggered() : bool{ return $this->triggered; } diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index bd240d20e..cb39e42d0 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -41,16 +41,10 @@ class TripwireHook extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - $this->connected = $r->readBool(); - $this->powered = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); - $w->writeBool($this->connected); - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); + $w->bool($this->connected); + $w->bool($this->powered); } public function isConnected() : bool{ return $this->connected; } diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 753aee99d..52cbb4e64 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -36,14 +36,10 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - protected function decodeType(RuntimeDataReader $r) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block - $this->stateData = $r->readInt(Block::INTERNAL_STATE_DATA_BITS); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeInt(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); + $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); } public function canBePlaced() : bool{ diff --git a/src/block/Vine.php b/src/block/Vine.php index a90de6c8d..40e2cd5e8 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -42,12 +42,8 @@ class Vine extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->faces = $r->readHorizontalFacingFlags(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacingFlags($this->faces); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacingFlags($this->faces); } /** @return int[] */ diff --git a/src/block/Wall.php b/src/block/Wall.php index e3ceff6ce..d4c116bda 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -45,14 +45,9 @@ class Wall extends Transparent{ public function getRequiredStateDataBits() : int{ return 9; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->connections = $r->readWallConnections(); - $this->post = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeWallConnections($this->connections); - $w->writeBool($this->post); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->wallConnections($this->connections); + $w->bool($this->post); } /** diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 9164c2cf1..b678d80ed 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -39,12 +39,8 @@ final class WallCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/Wood.php b/src/block/Wood.php index 401ca5bd7..50032eaa1 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -41,12 +41,8 @@ class Wood extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->stripped = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeBool($this->stripped); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->stripped); } public function isStripped() : bool{ return $this->stripped; } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 1b9f5b26b..4c8cd5be9 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -31,12 +31,8 @@ trait AnalogRedstoneSignalEmitterTrait{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->signalStrength = $r->readBoundedInt(4, 0, 15); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, 15, $this->signalStrength); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, 15, $this->signalStrength); } public function getOutputSignalStrength() : int{ return $this->signalStrength; } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index c6ccd5645..cf98507d3 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -32,12 +32,8 @@ trait AnyFacingTrait{ public function getRequiredStateDataBits() : int{ return 3; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readFacing(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->facing($this->facing); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index 154ccb828..bb1e3fba3 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -42,12 +42,8 @@ trait CandleTrait{ public function getRequiredStateDataBits() : int{ return 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->lit = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBool($this->lit); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->bool($this->lit); } public function getLightLevel() : int{ diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 7abfd82b7..00e0d61a2 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -33,14 +33,9 @@ trait ColoredTrait{ public function getRequiredTypeDataBits() : int{ return 4; } - /** @see Block::decodeType() */ - protected function decodeType(RuntimeDataReader $r) : void{ - $this->color = $r->readDyeColor(); - } - - /** @see Block::encodeType() */ - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeDyeColor($this->color); + /** @see Block::describeType() */ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->dyeColor($this->color); } public function getColor() : DyeColor{ return $this->color; } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index eefb8d445..3d47b64ef 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\block\BlockBreakInfo; +use pocketmine\block\BlockIdentifier; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Axe; @@ -36,18 +38,18 @@ use pocketmine\world\sound\ItemUseOnBlockSound; trait CopperTrait{ private CopperOxidation $oxidation; - private bool $waxed; + private bool $waxed = false; + + public function __construct(BlockIdentifier $identifier, string $name, BlockBreakInfo $breakInfo){ + $this->oxidation = CopperOxidation::NONE(); + parent::__construct($identifier, $name, $breakInfo); + } public function getRequiredTypeDataBits() : int{ return 3; } - protected function decodeType(RuntimeDataReader $r) : void{ - $this->oxidation = $r->readCopperOxidation(); - $this->waxed = $r->readBool(); - } - - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeCopperOxidation($this->oxidation); - $w->writeBool($this->waxed); + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->copperOxidation($this->oxidation); + $w->bool($this->waxed); } public function getOxidation() : CopperOxidation{ return $this->oxidation; } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 7ce28caa0..ccab725e1 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -33,16 +33,10 @@ trait CoralTypeTrait{ public function getRequiredTypeDataBits() : int{ return 4; } - /** @see Block::decodeType() */ - protected function decodeType(RuntimeDataReader $r) : void{ - $this->coralType = $r->readCoralType(); - $this->dead = $r->readBool(); - } - - /** @see Block::encodeType() */ - protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeCoralType($this->coralType); - $w->writeBool($this->dead); + /** @see Block::describeType() */ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->coralType($this->coralType); + $w->bool($this->dead); } public function getCoralType() : CoralType{ return $this->coralType; } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index c20bab71e..437dd2cf3 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -33,12 +33,8 @@ trait HorizontalFacingTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->facing = $r->readHorizontalFacing(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeHorizontalFacing($this->facing); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->horizontalFacing($this->facing); } public function getFacing() : int{ return $this->facing; } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index c8fe6216b..8c1480b03 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -38,12 +38,8 @@ trait PillarRotationTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->axis = $r->readAxis(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeAxis($this->axis); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->axis($this->axis); } /** @see Axis */ diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 361129518..64a03f35e 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -31,13 +31,8 @@ trait RailPoweredByRedstoneTrait{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function decodeState(RuntimeDataReader $r) : void{ - parent::decodeState($r); - $this->powered = $r->readBool(); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - parent::encodeState($w); - $w->writeBool($this->powered); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + parent::describeState($w); + $w->bool($this->powered); } } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index 96d0b9ef6..e2c6d7609 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -33,12 +33,8 @@ trait SignLikeRotationTrait{ public function getRequiredStateDataBits() : int{ return 4; } - protected function decodeState(RuntimeDataReader $r) : void{ - $this->rotation = $r->readBoundedInt(4, 0, 15); - } - - protected function encodeState(RuntimeDataWriter $w) : void{ - $w->writeBoundedInt(4, 0, 15, $this->rotation); + protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->boundedInt(4, 0, 15, $this->rotation); } public function getRotation() : int{ return $this->rotation; } diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index 5ed08cdf8..f09d857f5 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\runtime; use pocketmine\block\utils\BrewingStandSlot; +use pocketmine\block\utils\RailConnectionInfo; use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -50,20 +51,28 @@ final class RuntimeDataReader{ return $value; } - public function readBoundedInt(int $bits, int $min, int $max) : int{ + public function int(int $bits, int &$value) : void{ + $value = $this->readInt($bits); + } + + public function boundedInt(int $bits, int $min, int $max, int &$value) : void{ $result = $this->readInt($bits) + $min; if($result < $min || $result > $max){ throw new InvalidSerializedRuntimeDataException("Value is outside the range $min - $max"); } - return $result; + $value = $result; } - public function readBool() : bool{ + protected function readBool() : bool{ return $this->readInt(1) === 1; } - public function readHorizontalFacing() : int{ - return match($this->readInt(2)){ + public function bool(bool &$value) : void{ + $value = $this->readBool(); + } + + public function horizontalFacing(int &$facing) : void{ + $facing = match($this->readInt(2)){ 0 => Facing::NORTH, 1 => Facing::EAST, 2 => Facing::SOUTH, @@ -73,9 +82,9 @@ final class RuntimeDataReader{ } /** - * @return int[] + * @param int[] $faces */ - public function readHorizontalFacingFlags() : array{ + public function horizontalFacingFlags(array &$faces) : void{ $result = []; foreach(Facing::HORIZONTAL as $facing){ if($this->readBool()){ @@ -83,11 +92,11 @@ final class RuntimeDataReader{ } } - return $result; + $faces = $result; } - public function readFacing() : int{ - return match($this->readInt(3)){ + public function facing(int &$facing) : void{ + $facing = match($this->readInt(3)){ 0 => Facing::DOWN, 1 => Facing::UP, 2 => Facing::NORTH, @@ -98,8 +107,18 @@ final class RuntimeDataReader{ }; } - public function readAxis() : int{ - return match($this->readInt(2)){ + public function facingExcept(int &$facing, int $except) : void{ + $result = 0; + $this->facing($result); + if($result === $except){ + throw new InvalidSerializedRuntimeDataException("Illegal facing value"); + } + + $facing = $result; + } + + public function axis(int &$axis) : void{ + $axis = match($this->readInt(2)){ 0 => Axis::X, 1 => Axis::Z, 2 => Axis::Y, @@ -107,8 +126,8 @@ final class RuntimeDataReader{ }; } - public function readHorizontalAxis() : int{ - return match($this->readInt(1)){ + public function horizontalAxis(int &$axis) : void{ + $axis = match($this->readInt(1)){ 0 => Axis::X, 1 => Axis::Z, default => throw new AssumptionFailedError("Unreachable") @@ -116,16 +135,17 @@ final class RuntimeDataReader{ } /** - * @return WallConnectionType[] - * @phpstan-return array + * @param WallConnectionType[] $connections + * @phpstan-param array $connections */ - public function readWallConnections() : array{ - $connections = []; + public function wallConnections(array &$connections) : void{ + $result = []; //TODO: we can pack this into 7 bits instead of 8 foreach(Facing::HORIZONTAL as $facing){ - $type = $this->readBoundedInt(2, 0, 2); + $type = 0; + $this->boundedInt(2, 0, 2, $type); if($type !== 0){ - $connections[$facing] = match($type){ + $result[$facing] = match($type){ 1 => WallConnectionType::SHORT(), 2 => WallConnectionType::TALL(), default => throw new AssumptionFailedError("Unreachable") @@ -133,14 +153,14 @@ final class RuntimeDataReader{ } } - return $connections; + $connections = $result; } /** - * @return BrewingStandSlot[] - * @phpstan-return array + * @param BrewingStandSlot[] $slots + * @phpstan-param array $slots */ - public function readBrewingStandSlots() : array{ + public function brewingStandSlots(array &$slots) : void{ $result = []; foreach([ BrewingStandSlot::EAST(), @@ -152,7 +172,25 @@ final class RuntimeDataReader{ } } - return $result; + $slots = $result; + } + + public function railShape(int &$railShape) : void{ + $result = $this->readInt(4); + if(!isset(RailConnectionInfo::CONNECTIONS[$result]) && !isset(RailConnectionInfo::CURVE_CONNECTIONS[$result])){ + throw new InvalidSerializedRuntimeDataException("Invalid rail shape $result"); + } + + $railShape = $result; + } + + public function straightOnlyRailShape(int &$railShape) : void{ + $result = $this->readInt(3); + if(!isset(RailConnectionInfo::CONNECTIONS[$result])){ + throw new InvalidSerializedRuntimeDataException("No rail shape matches meta $result"); + } + + $railShape = $result; } public function getOffset() : int{ return $this->offset; } diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index a0d7ba7ba..23aa45b39 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -40,8 +40,7 @@ final class RuntimeDataWriter{ private int $maxBits ){} - /** @return $this */ - public function writeInt(int $bits, int $value) : self{ + public function int(int $bits, int $value) : void{ if($this->offset + $bits > $this->maxBits){ throw new \InvalidArgumentException("Bit buffer cannot be larger than $this->maxBits bits (already have $this->offset bits)"); } @@ -51,27 +50,21 @@ final class RuntimeDataWriter{ $this->value |= ($value << $this->offset); $this->offset += $bits; - - return $this; } - /** @return $this */ - public function writeBoundedInt(int $bits, int $min, int $max, int $value) : self{ + public function boundedInt(int $bits, int $min, int $max, int $value) : void{ if($value < $min || $value > $max){ throw new \InvalidArgumentException("Value $value is outside the range $min - $max"); } - $this->writeInt($bits, $value - $min); - return $this; + $this->int($bits, $value - $min); } - /** @return $this */ - public function writeBool(bool $value) : self{ - return $this->writeInt(1, $value ? 1 : 0); + public function bool(bool $value) : void{ + $this->int(1, $value ? 1 : 0); } - /** @return $this */ - public function writeHorizontalFacing(int $facing) : self{ - return $this->writeInt(2, match($facing){ + public function horizontalFacing(int $facing) : void{ + $this->int(2, match($facing){ Facing::NORTH => 0, Facing::EAST => 1, Facing::SOUTH => 2, @@ -82,20 +75,16 @@ final class RuntimeDataWriter{ /** * @param int[] $faces - * - * @return $this */ - public function writeHorizontalFacingFlags(array $faces) : self{ + public function horizontalFacingFlags(array $faces) : void{ $uniqueFaces = array_flip($faces); foreach(Facing::HORIZONTAL as $facing){ - $this->writeBool(isset($uniqueFaces[$facing])); + $this->bool(isset($uniqueFaces[$facing])); } - - return $this; } - public function writeFacing(int $facing) : self{ - return $this->writeInt(3, match($facing){ + public function facing(int $facing) : void{ + $this->int(3, match($facing){ 0 => Facing::DOWN, 1 => Facing::UP, 2 => Facing::NORTH, @@ -106,8 +95,12 @@ final class RuntimeDataWriter{ }); } - public function writeAxis(int $axis) : self{ - return $this->writeInt(2, match($axis){ + public function facingExcept(int $facing, int $except) : void{ + $this->facing($facing); + } + + public function axis(int $axis) : void{ + $this->int(2, match($axis){ Axis::X => 0, Axis::Z => 1, Axis::Y => 2, @@ -115,8 +108,8 @@ final class RuntimeDataWriter{ }); } - public function writeHorizontalAxis(int $axis) : self{ - return $this->writeInt(1, match($axis){ + public function horizontalAxis(int $axis) : void{ + $this->int(1, match($axis){ Axis::X => 0, Axis::Z => 1, default => throw new \InvalidArgumentException("Invalid horizontal axis $axis") @@ -127,36 +120,38 @@ final class RuntimeDataWriter{ * @param WallConnectionType[] $connections * @phpstan-param array $connections */ - public function writeWallConnections(array $connections) : self{ + public function wallConnections(array $connections) : void{ //TODO: we can pack this into 7 bits instead of 8 foreach(Facing::HORIZONTAL as $facing){ - $this->writeBoundedInt(2, 0, 2, match($connections[$facing] ?? null){ + $this->boundedInt(2, 0, 2, match($connections[$facing] ?? null){ null => 0, WallConnectionType::SHORT() => 1, WallConnectionType::TALL() => 2, default => throw new AssumptionFailedError("Unreachable") }); } - - return $this; } /** * @param BrewingStandSlot[] $slots * @phpstan-param array $slots - * - * @return $this */ - public function writeBrewingStandSlots(array $slots) : self{ + public function brewingStandSlots(array $slots) : void{ foreach([ BrewingStandSlot::EAST(), BrewingStandSlot::NORTHWEST(), BrewingStandSlot::SOUTHWEST(), ] as $member){ - $this->writeBool(isset($slots[$member->id()])); + $this->bool(isset($slots[$member->id()])); } + } - return $this; + public function railShape(int $railShape) : void{ + $this->int(4, $railShape); + } + + public function straightOnlyRailShape(int $railShape) : void{ + $this->int(3, $railShape); } public function getValue() : int{ return $this->value; } diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index b23ec5435..5c2a9adcd 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -29,10 +29,10 @@ namespace pocketmine\data\runtime; */ trait RuntimeEnumDeserializerTrait{ - abstract public function readInt(int $bits) : int; + abstract protected function readInt(int $bits) : int; - public function readBellAttachmentType() : \pocketmine\block\utils\BellAttachmentType{ - return match($this->readInt(2)){ + public function bellAttachmentType(\pocketmine\block\utils\BellAttachmentType &$value) : void{ + $value = match($this->readInt(2)){ 0 => \pocketmine\block\utils\BellAttachmentType::CEILING(), 1 => \pocketmine\block\utils\BellAttachmentType::FLOOR(), 2 => \pocketmine\block\utils\BellAttachmentType::ONE_WALL(), @@ -41,8 +41,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readCopperOxidation() : \pocketmine\block\utils\CopperOxidation{ - return match($this->readInt(2)){ + public function copperOxidation(\pocketmine\block\utils\CopperOxidation &$value) : void{ + $value = match($this->readInt(2)){ 0 => \pocketmine\block\utils\CopperOxidation::EXPOSED(), 1 => \pocketmine\block\utils\CopperOxidation::NONE(), 2 => \pocketmine\block\utils\CopperOxidation::OXIDIZED(), @@ -51,8 +51,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readCoralType() : \pocketmine\block\utils\CoralType{ - return match($this->readInt(3)){ + public function coralType(\pocketmine\block\utils\CoralType &$value) : void{ + $value = match($this->readInt(3)){ 0 => \pocketmine\block\utils\CoralType::BRAIN(), 1 => \pocketmine\block\utils\CoralType::BUBBLE(), 2 => \pocketmine\block\utils\CoralType::FIRE(), @@ -62,8 +62,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readDyeColor() : \pocketmine\block\utils\DyeColor{ - return match($this->readInt(4)){ + public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{ + $value = match($this->readInt(4)){ 0 => \pocketmine\block\utils\DyeColor::BLACK(), 1 => \pocketmine\block\utils\DyeColor::BLUE(), 2 => \pocketmine\block\utils\DyeColor::BROWN(), @@ -84,8 +84,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readLeverFacing() : \pocketmine\block\utils\LeverFacing{ - return match($this->readInt(3)){ + public function leverFacing(\pocketmine\block\utils\LeverFacing &$value) : void{ + $value = match($this->readInt(3)){ 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), 1 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z(), 2 => \pocketmine\block\utils\LeverFacing::EAST(), @@ -98,8 +98,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readMushroomBlockType() : \pocketmine\block\utils\MushroomBlockType{ - return match($this->readInt(4)){ + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ + $value = match($this->readInt(4)){ 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), 1 => \pocketmine\block\utils\MushroomBlockType::CAP_EAST(), 2 => \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE(), @@ -115,8 +115,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readPotionType() : \pocketmine\item\PotionType{ - return match($this->readInt(6)){ + public function potionType(\pocketmine\item\PotionType &$value) : void{ + $value = match($this->readInt(6)){ 0 => \pocketmine\item\PotionType::AWKWARD(), 1 => \pocketmine\item\PotionType::FIRE_RESISTANCE(), 2 => \pocketmine\item\PotionType::HARMING(), @@ -163,8 +163,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readSkullType() : \pocketmine\block\utils\SkullType{ - return match($this->readInt(3)){ + public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ + $value = match($this->readInt(3)){ 0 => \pocketmine\block\utils\SkullType::CREEPER(), 1 => \pocketmine\block\utils\SkullType::DRAGON(), 2 => \pocketmine\block\utils\SkullType::PLAYER(), @@ -175,8 +175,8 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function readSlabType() : \pocketmine\block\utils\SlabType{ - return match($this->readInt(2)){ + public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ + $value = match($this->readInt(2)){ 0 => \pocketmine\block\utils\SlabType::BOTTOM(), 1 => \pocketmine\block\utils\SlabType::DOUBLE(), 2 => \pocketmine\block\utils\SlabType::TOP(), diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index 8d0d98a9f..16c01fd39 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -29,10 +29,10 @@ namespace pocketmine\data\runtime; */ trait RuntimeEnumSerializerTrait{ - abstract public function writeInt(int $bits, int $value) : self; + abstract public function int(int $bits, int $value) : void; - public function writeBellAttachmentType(\pocketmine\block\utils\BellAttachmentType $value) : void{ - $this->writeInt(2, match($value){ + public function bellAttachmentType(\pocketmine\block\utils\BellAttachmentType $value) : void{ + $this->int(2, match($value){ \pocketmine\block\utils\BellAttachmentType::CEILING() => 0, \pocketmine\block\utils\BellAttachmentType::FLOOR() => 1, \pocketmine\block\utils\BellAttachmentType::ONE_WALL() => 2, @@ -41,8 +41,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeCopperOxidation(\pocketmine\block\utils\CopperOxidation $value) : void{ - $this->writeInt(2, match($value){ + public function copperOxidation(\pocketmine\block\utils\CopperOxidation $value) : void{ + $this->int(2, match($value){ \pocketmine\block\utils\CopperOxidation::EXPOSED() => 0, \pocketmine\block\utils\CopperOxidation::NONE() => 1, \pocketmine\block\utils\CopperOxidation::OXIDIZED() => 2, @@ -51,8 +51,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeCoralType(\pocketmine\block\utils\CoralType $value) : void{ - $this->writeInt(3, match($value){ + public function coralType(\pocketmine\block\utils\CoralType $value) : void{ + $this->int(3, match($value){ \pocketmine\block\utils\CoralType::BRAIN() => 0, \pocketmine\block\utils\CoralType::BUBBLE() => 1, \pocketmine\block\utils\CoralType::FIRE() => 2, @@ -62,8 +62,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeDyeColor(\pocketmine\block\utils\DyeColor $value) : void{ - $this->writeInt(4, match($value){ + public function dyeColor(\pocketmine\block\utils\DyeColor $value) : void{ + $this->int(4, match($value){ \pocketmine\block\utils\DyeColor::BLACK() => 0, \pocketmine\block\utils\DyeColor::BLUE() => 1, \pocketmine\block\utils\DyeColor::BROWN() => 2, @@ -84,8 +84,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeLeverFacing(\pocketmine\block\utils\LeverFacing $value) : void{ - $this->writeInt(3, match($value){ + public function leverFacing(\pocketmine\block\utils\LeverFacing $value) : void{ + $this->int(3, match($value){ \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z() => 1, \pocketmine\block\utils\LeverFacing::EAST() => 2, @@ -98,8 +98,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeMushroomBlockType(\pocketmine\block\utils\MushroomBlockType $value) : void{ - $this->writeInt(4, match($value){ + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType $value) : void{ + $this->int(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, \pocketmine\block\utils\MushroomBlockType::CAP_EAST() => 1, \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE() => 2, @@ -115,8 +115,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writePotionType(\pocketmine\item\PotionType $value) : void{ - $this->writeInt(6, match($value){ + public function potionType(\pocketmine\item\PotionType $value) : void{ + $this->int(6, match($value){ \pocketmine\item\PotionType::AWKWARD() => 0, \pocketmine\item\PotionType::FIRE_RESISTANCE() => 1, \pocketmine\item\PotionType::HARMING() => 2, @@ -163,8 +163,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeSkullType(\pocketmine\block\utils\SkullType $value) : void{ - $this->writeInt(3, match($value){ + public function skullType(\pocketmine\block\utils\SkullType $value) : void{ + $this->int(3, match($value){ \pocketmine\block\utils\SkullType::CREEPER() => 0, \pocketmine\block\utils\SkullType::DRAGON() => 1, \pocketmine\block\utils\SkullType::PLAYER() => 2, @@ -175,8 +175,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function writeSlabType(\pocketmine\block\utils\SlabType $value) : void{ - $this->writeInt(2, match($value){ + public function slabType(\pocketmine\block\utils\SlabType $value) : void{ + $this->int(2, match($value){ \pocketmine\block\utils\SlabType::BOTTOM() => 0, \pocketmine\block\utils\SlabType::DOUBLE() => 1, \pocketmine\block\utils\SlabType::TOP() => 2, diff --git a/src/item/Banner.php b/src/item/Banner.php index 6fd242c03..80def9ad5 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -64,7 +64,7 @@ class Banner extends ItemBlockWallOrFloor{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeDyeColor($this->color); + $w->dyeColor($this->color); } /** diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index 964420503..acb8d3577 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -33,7 +33,7 @@ use pocketmine\math\Facing; final class CoralFan extends Item{ use CoralTypeTrait { - encodeType as encodeCoralType; + describeType as encodeCoralType; } public function __construct(ItemIdentifier $identifier){ diff --git a/src/item/Dye.php b/src/item/Dye.php index 70b073059..6f550ae18 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -35,7 +35,7 @@ class Dye extends Item{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeDyeColor($this->color); + $w->dyeColor($this->color); } public function getColor() : DyeColor{ diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 4ce6c2947..b923b9d7e 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -45,7 +45,7 @@ final class ItemBlock extends Item{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writeInt(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); + $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); } public function getBlock(?int $clickedFace = null) : Block{ diff --git a/src/item/Potion.php b/src/item/Potion.php index d1e40b673..5848dee47 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -37,7 +37,7 @@ class Potion extends Item implements ConsumableItem{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writePotionType($this->potionType); + $w->potionType($this->potionType); } public function getType() : PotionType{ return $this->potionType; } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index 52ae10e64..ca4023e6a 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -39,7 +39,7 @@ class SplashPotion extends ProjectileItem{ } protected function encodeType(RuntimeDataWriter $w) : void{ - $w->writePotionType($this->potionType); + $w->potionType($this->potionType); } public function getType() : PotionType{ return $this->potionType; } From b0a492c06384f11fe771662f1a62bdf6fadd86ff Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 18 Jul 2022 18:47:30 +0100 Subject: [PATCH 353/692] Move simple block (de)serializer registrations into their own functions --- .../BlockObjectToBlockStateSerializer.php | 834 +++++++++--------- .../BlockStateToBlockObjectDeserializer.php | 696 +++++++-------- 2 files changed, 769 insertions(+), 761 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 71487e461..553f84ff0 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -176,6 +176,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ public function __construct(){ $this->registerCandleSerializers(); + $this->registerSimpleSerializers(); $this->registerSerializers(); } @@ -291,355 +292,41 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ })->writeBool(StateNames::LIT, $block->isLit())); } - private function registerSerializers() : void{ - $this->map(Blocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); - $this->map(Blocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); - $this->map(Blocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); - $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); - $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); - $this->map(Blocks::ACACIA_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::ACACIA_STANDING_SIGN))); - $this->map(Blocks::ACACIA_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::ACACIA_STAIRS))); - $this->map(Blocks::ACACIA_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::ACACIA_TRAPDOOR))); - $this->map(Blocks::ACACIA_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::ACACIA_WALL_SIGN))); - $this->map(Blocks::ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::ACTIVATOR_RAIL(), function(ActivatorRail $block) : Writer{ - return Writer::create(Ids::ACTIVATOR_RAIL) - ->writeBool(StateNames::RAIL_DATA_BIT, $block->isPowered()) - ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); - }); + private function registerSimpleSerializers() : void{ $this->mapSimple(Blocks::AIR(), Ids::AIR); - $this->map(Blocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); - $this->map(Blocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) - ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); $this->mapSimple(Blocks::AMETHYST(), Ids::AMETHYST_BLOCK); $this->mapSimple(Blocks::ANCIENT_DEBRIS(), Ids::ANCIENT_DEBRIS); - $this->map(Blocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); - $this->map(Blocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); - $this->map(Blocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); - $this->map(Blocks::ANDESITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_ANDESITE)); - $this->map(Blocks::ANVIL(), function(Anvil $block) : Writer{ - return Writer::create(Ids::ANVIL) - ->writeLegacyHorizontalFacing($block->getFacing()) - ->writeString(StateNames::DAMAGE, match($damage = $block->getDamage()){ - 0 => StringValues::DAMAGE_UNDAMAGED, - 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, - 2 => StringValues::DAMAGE_VERY_DAMAGED, - default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), - }); - }); - $this->map(Blocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); - $this->map(Blocks::BAMBOO(), function(Bamboo $block) : Writer{ - return Writer::create(Ids::BAMBOO) - ->writeBool(StateNames::AGE_BIT, $block->isReady()) - ->writeString(StateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ - Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, - Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, - Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, - default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), - }) - ->writeString(StateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); - }); - $this->map(Blocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ - return Writer::create(Ids::BAMBOO_SAPLING) - ->writeBool(StateNames::AGE_BIT, $block->isReady()) - - //TODO: bug in MCPE - ->writeString(StateNames::SAPLING_TYPE, StringValues::SAPLING_TYPE_OAK); - }); - $this->map(Blocks::BANNER(), function(FloorBanner $block) : Writer{ - return Writer::create(Ids::STANDING_BANNER) - ->writeInt(StateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); - }); - $this->map(Blocks::BARREL(), function(Barrel $block) : Writer{ - return Writer::create(Ids::BARREL) - ->writeBool(StateNames::OPEN_BIT, $block->isOpen()) - ->writeFacingDirection($block->getFacing()); - }); $this->mapSimple(Blocks::BARRIER(), Ids::BARRIER); - $this->map(Blocks::BASALT(), function(SimplePillar $block) : Writer{ - return Writer::create(Ids::BASALT) - ->writePillarAxis($block->getAxis()); - }); $this->mapSimple(Blocks::BEACON(), Ids::BEACON); - $this->map(Blocks::BED(), function(Bed $block) : Writer{ - return Writer::create(Ids::BED) - ->writeBool(StateNames::HEAD_PIECE_BIT, $block->isHeadPart()) - ->writeBool(StateNames::OCCUPIED_BIT, $block->isOccupied()) - ->writeLegacyHorizontalFacing($block->getFacing()); - }); - $this->map(Blocks::BEDROCK(), function(Block $block) : Writer{ - return Writer::create(Ids::BEDROCK) - ->writeBool(StateNames::INFINIBURN_BIT, $block->burnsForever()); - }); - $this->map(Blocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT))); - $this->map(Blocks::BELL(), function(Bell $block) : Writer{ - return Writer::create(Ids::BELL) - ->writeBellAttachmentType($block->getAttachmentType()) - ->writeBool(StateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy - ->writeLegacyHorizontalFacing($block->getFacing()); - - }); - $this->map(Blocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); - $this->map(Blocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); - $this->map(Blocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); - $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); - $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); - $this->map(Blocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); - $this->map(Blocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); - $this->mapStairs(Blocks::BIRCH_STAIRS(), Ids::BIRCH_STAIRS); - $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); - $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); - $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); $this->mapSimple(Blocks::BLACKSTONE(), Ids::BLACKSTONE); - $this->mapSlab(Blocks::BLACKSTONE_SLAB(), Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB); - $this->mapStairs(Blocks::BLACKSTONE_STAIRS(), Ids::BLACKSTONE_STAIRS); - $this->map(Blocks::BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::BLACKSTONE_WALL))); - $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); $this->mapSimple(Blocks::BLUE_ICE(), Ids::BLUE_ICE); - $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); - $this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); - $this->map(Blocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ - return Writer::create(Ids::BONE_BLOCK) - ->writeInt(StateNames::DEPRECATED, 0) - ->writePillarAxis($block->getAxis()); - }); $this->mapSimple(Blocks::BOOKSHELF(), Ids::BOOKSHELF); - $this->map(Blocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ - return Writer::create(Ids::BREWING_STAND) - ->writeBool(StateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) - ->writeBool(StateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) - ->writeBool(StateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); - }); $this->mapSimple(Blocks::BRICKS(), Ids::BRICK_BLOCK); - $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); - $this->mapStairs(Blocks::BRICK_STAIRS(), Ids::BRICK_STAIRS); - $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); $this->mapSimple(Blocks::BROWN_MUSHROOM(), Ids::BROWN_MUSHROOM); - $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); - $this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{ - return Writer::create(Ids::CACTUS) - ->writeInt(StateNames::AGE, $block->getAge()); - }); - $this->map(Blocks::CAKE(), function(Cake $block) : Writer{ - return Writer::create(Ids::CAKE) - ->writeInt(StateNames::BITE_COUNTER, $block->getBites()); - }); $this->mapSimple(Blocks::CALCITE(), Ids::CALCITE); - $this->map(Blocks::CARPET(), function(Carpet $block) : Writer{ - return Writer::create(Ids::CARPET) - ->writeColor($block->getColor()); - }); - $this->map(Blocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); $this->mapSimple(Blocks::CARTOGRAPHY_TABLE(), Ids::CARTOGRAPHY_TABLE); - $this->map(Blocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ - return Writer::create(Ids::CARVED_PUMPKIN) - ->writeLegacyHorizontalFacing($block->getFacing()); - }); $this->mapSimple(Blocks::CHEMICAL_HEAT(), Ids::CHEMICAL_HEAT); - $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ - return Writer::create(Ids::CHEST) - ->writeHorizontalFacing($block->getFacing()); - }); $this->mapSimple(Blocks::CHISELED_DEEPSLATE(), Ids::CHISELED_DEEPSLATE); $this->mapSimple(Blocks::CHISELED_NETHER_BRICKS(), Ids::CHISELED_NETHER_BRICKS); $this->mapSimple(Blocks::CHISELED_POLISHED_BLACKSTONE(), Ids::CHISELED_POLISHED_BLACKSTONE); - $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); - $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); - $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); - $this->map(Blocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); $this->mapSimple(Blocks::CLAY(), Ids::CLAY); $this->mapSimple(Blocks::COAL(), Ids::COAL_BLOCK); $this->mapSimple(Blocks::COAL_ORE(), Ids::COAL_ORE); $this->mapSimple(Blocks::COBBLED_DEEPSLATE(), Ids::COBBLED_DEEPSLATE); - $this->mapSlab(Blocks::COBBLED_DEEPSLATE_SLAB(), Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB); - $this->mapStairs(Blocks::COBBLED_DEEPSLATE_STAIRS(), Ids::COBBLED_DEEPSLATE_STAIRS); - $this->map(Blocks::COBBLED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::COBBLED_DEEPSLATE_WALL))); $this->mapSimple(Blocks::COBBLESTONE(), Ids::COBBLESTONE); - $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); - $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); - $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); $this->mapSimple(Blocks::COBWEB(), Ids::WEB); - $this->map(Blocks::COPPER(), function(Copper $block) : Writer{ - $oxidation = $block->getOxidation(); - return new Writer($block->isWaxed() ? - Helper::selectCopperId($oxidation, Ids::WAXED_COPPER, Ids::WAXED_EXPOSED_COPPER, Ids::WAXED_WEATHERED_COPPER, Ids::WAXED_OXIDIZED_COPPER) : - Helper::selectCopperId($oxidation, Ids::COPPER_BLOCK, Ids::EXPOSED_COPPER, Ids::WEATHERED_COPPER, Ids::OXIDIZED_COPPER) - ); - }); - $this->map(Blocks::CUT_COPPER(), function(Copper $block) : Writer{ - $oxidation = $block->getOxidation(); - return new Writer($block->isWaxed() ? - Helper::selectCopperId($oxidation, Ids::WAXED_CUT_COPPER, Ids::WAXED_EXPOSED_CUT_COPPER, Ids::WAXED_WEATHERED_CUT_COPPER, Ids::WAXED_OXIDIZED_CUT_COPPER) : - Helper::selectCopperId($oxidation, Ids::CUT_COPPER, Ids::EXPOSED_CUT_COPPER, Ids::WEATHERED_CUT_COPPER, Ids::OXIDIZED_CUT_COPPER) - ); - }); - $this->map(Blocks::CUT_COPPER_SLAB(), function(CopperSlab $block) : Writer{ - $oxidation = $block->getOxidation(); - return Helper::encodeSlab( - $block, - ($block->isWaxed() ? - Helper::selectCopperId( - $oxidation, - Ids::WAXED_CUT_COPPER_SLAB, - Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, - Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, - Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB - ) : - Helper::selectCopperId( - $oxidation, - Ids::CUT_COPPER_SLAB, - Ids::EXPOSED_CUT_COPPER_SLAB, - Ids::WEATHERED_CUT_COPPER_SLAB, - Ids::OXIDIZED_CUT_COPPER_SLAB - ) - ), - ($block->isWaxed() ? - Helper::selectCopperId( - $oxidation, - Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, - Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, - Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, - Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB - ) : - Helper::selectCopperId( - $oxidation, - Ids::DOUBLE_CUT_COPPER_SLAB, - Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, - Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, - Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB - ) - ) - ); - }); - $this->map(Blocks::CUT_COPPER_STAIRS(), function(CopperStairs $block) : Writer{ - $oxidation = $block->getOxidation(); - return Helper::encodeStairs( - $block, - new Writer($block->isWaxed() ? - Helper::selectCopperId( - $oxidation, - Ids::WAXED_CUT_COPPER_STAIRS, - Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, - Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, - Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS - ) : - Helper::selectCopperId( - $oxidation, - Ids::CUT_COPPER_STAIRS, - Ids::EXPOSED_CUT_COPPER_STAIRS, - Ids::WEATHERED_CUT_COPPER_STAIRS, - Ids::OXIDIZED_CUT_COPPER_STAIRS - ) - ) - ); - }); - $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ - return Writer::create(Ids::COCOA) - ->writeInt(StateNames::AGE, $block->getAge()) - ->writeLegacyHorizontalFacing(Facing::opposite($block->getFacing())); - }); - $this->map(Blocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); - $this->map(Blocks::CONCRETE(), function(Concrete $block) : Writer{ - return Writer::create(Ids::CONCRETE) - ->writeColor($block->getColor()); - }); - $this->map(Blocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ - return Writer::create(Ids::CONCRETE_POWDER) - ->writeColor($block->getColor()); - }); $this->mapSimple(Blocks::COPPER_ORE(), Ids::COPPER_ORE); - $this->map(Blocks::CORAL(), function(Coral $block) : Writer{ - return Writer::create(Ids::CORAL) - ->writeBool(StateNames::DEAD_BIT, $block->isDead()) - ->writeCoralType($block->getCoralType()); - }); - $this->map(Blocks::CORAL_BLOCK(), function(CoralBlock $block) : Writer{ - return Writer::create(Ids::CORAL_BLOCK) - ->writeBool(StateNames::DEAD_BIT, $block->isDead()) - ->writeCoralType($block->getCoralType()); - }); - $this->map(Blocks::CORAL_FAN(), function(FloorCoralFan $block) : Writer{ - return Writer::create($block->isDead() ? Ids::CORAL_FAN_DEAD : Ids::CORAL_FAN) - ->writeCoralType($block->getCoralType()) - ->writeInt(StateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ - Axis::X => 0, - Axis::Z => 1, - default => throw new BlockStateSerializeException("Invalid axis {$axis}"), - }); - }); - $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); $this->mapSimple(Blocks::CRACKED_DEEPSLATE_BRICKS(), Ids::CRACKED_DEEPSLATE_BRICKS); $this->mapSimple(Blocks::CRACKED_DEEPSLATE_TILES(), Ids::CRACKED_DEEPSLATE_TILES); $this->mapSimple(Blocks::CRACKED_NETHER_BRICKS(), Ids::CRACKED_NETHER_BRICKS); $this->mapSimple(Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS(), Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS); - $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); $this->mapSimple(Blocks::CRAFTING_TABLE(), Ids::CRAFTING_TABLE); - $this->map(Blocks::CRIMSON_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::CRIMSON_BUTTON))); - $this->map(Blocks::CRIMSON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::CRIMSON_DOOR))); $this->mapSimple(Blocks::CRIMSON_FENCE(), Ids::CRIMSON_FENCE); - $this->map(Blocks::CRIMSON_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::CRIMSON_FENCE_GATE))); - $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); $this->mapSimple(Blocks::CRIMSON_PLANKS(), Ids::CRIMSON_PLANKS); - $this->map(Blocks::CRIMSON_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::CRIMSON_PRESSURE_PLATE))); - $this->map(Blocks::CRIMSON_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::CRIMSON_STANDING_SIGN))); - $this->mapSlab(Blocks::CRIMSON_SLAB(), Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB); - $this->mapStairs(Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS); - $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); - $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); - $this->map(Blocks::CRIMSON_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::CRIMSON_WALL_SIGN))); $this->mapSimple(Blocks::CRYING_OBSIDIAN(), Ids::CRYING_OBSIDIAN); - $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); - $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); - $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); - $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); $this->mapSimple(Blocks::DANDELION(), Ids::YELLOW_FLOWER); - $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); - $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); - $this->map(Blocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); - $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); - $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); - $this->map(Blocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); - $this->map(Blocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); - $this->mapStairs(Blocks::DARK_OAK_STAIRS(), Ids::DARK_OAK_STAIRS); - $this->map(Blocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); - $this->map(Blocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); - $this->map(Blocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->map(Blocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) - ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); - $this->map(Blocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); - $this->mapStairs(Blocks::DARK_PRISMARINE_STAIRS(), Ids::DARK_PRISMARINE_STAIRS); - $this->map(Blocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ - return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) - ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); - }); $this->mapSimple(Blocks::DEAD_BUSH(), Ids::DEADBUSH); - $this->map(Blocks::DEEPSLATE(), function(SimplePillar $block) : Writer{ - return Writer::create(Ids::DEEPSLATE) - ->writePillarAxis($block->getAxis()); - }); $this->mapSimple(Blocks::DEEPSLATE_BRICKS(), Ids::DEEPSLATE_BRICKS); - $this->mapSlab(Blocks::DEEPSLATE_BRICK_SLAB(), Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB); - $this->mapStairs(Blocks::DEEPSLATE_BRICK_STAIRS(), Ids::DEEPSLATE_BRICK_STAIRS); - $this->map(Blocks::DEEPSLATE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_BRICK_WALL))); $this->mapSimple(Blocks::DEEPSLATE_COAL_ORE(), Ids::DEEPSLATE_COAL_ORE); $this->mapSimple(Blocks::DEEPSLATE_COPPER_ORE(), Ids::DEEPSLATE_COPPER_ORE); $this->mapSimple(Blocks::DEEPSLATE_DIAMOND_ORE(), Ids::DEEPSLATE_DIAMOND_ORE); @@ -647,33 +334,11 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::DEEPSLATE_GOLD_ORE(), Ids::DEEPSLATE_GOLD_ORE); $this->mapSimple(Blocks::DEEPSLATE_IRON_ORE(), Ids::DEEPSLATE_IRON_ORE); $this->mapSimple(Blocks::DEEPSLATE_LAPIS_LAZULI_ORE(), Ids::DEEPSLATE_LAPIS_ORE); - $this->map(Blocks::DEEPSLATE_REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_DEEPSLATE_REDSTONE_ORE : Ids::DEEPSLATE_REDSTONE_ORE)); $this->mapSimple(Blocks::DEEPSLATE_TILES(), Ids::DEEPSLATE_TILES); - $this->mapSlab(Blocks::DEEPSLATE_TILE_SLAB(), Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB); - $this->mapStairs(Blocks::DEEPSLATE_TILE_STAIRS(), Ids::DEEPSLATE_TILE_STAIRS); - $this->map(Blocks::DEEPSLATE_TILE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_TILE_WALL))); - $this->map(Blocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ - return Writer::create(Ids::DETECTOR_RAIL) - ->writeBool(StateNames::RAIL_DATA_BIT, $block->isActivated()) - ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); - }); $this->mapSimple(Blocks::DIAMOND(), Ids::DIAMOND_BLOCK); $this->mapSimple(Blocks::DIAMOND_ORE(), Ids::DIAMOND_ORE); - $this->map(Blocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); - $this->map(Blocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); - $this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS); - $this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); - $this->map(Blocks::DIRT(), function(Dirt $block) : Writer{ - return Writer::create(Ids::DIRT) - ->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); - }); - $this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); $this->mapSimple(Blocks::DRAGON_EGG(), Ids::DRAGON_EGG); $this->mapSimple(Blocks::DRIED_KELP(), Ids::DRIED_KELP_BLOCK); - $this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ - return Writer::create(Ids::SHULKER_BOX) - ->writeColor($block->getColor()); - }); $this->mapSimple(Blocks::ELEMENT_ACTINIUM(), Ids::ELEMENT_89); $this->mapSimple(Blocks::ELEMENT_ALUMINUM(), Ids::ELEMENT_13); $this->mapSimple(Blocks::ELEMENT_AMERICIUM(), Ids::ELEMENT_95); @@ -697,7 +362,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::ELEMENT_CHLORINE(), Ids::ELEMENT_17); $this->mapSimple(Blocks::ELEMENT_CHROMIUM(), Ids::ELEMENT_24); $this->mapSimple(Blocks::ELEMENT_COBALT(), Ids::ELEMENT_27); - $this->map(Blocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); $this->mapSimple(Blocks::ELEMENT_COPERNICIUM(), Ids::ELEMENT_112); $this->mapSimple(Blocks::ELEMENT_COPPER(), Ids::ELEMENT_29); $this->mapSimple(Blocks::ELEMENT_CURIUM(), Ids::ELEMENT_96); @@ -797,6 +461,423 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::EMERALD(), Ids::EMERALD_BLOCK); $this->mapSimple(Blocks::EMERALD_ORE(), Ids::EMERALD_ORE); $this->mapSimple(Blocks::ENCHANTING_TABLE(), Ids::ENCHANTING_TABLE); + $this->mapSimple(Blocks::END_STONE(), Ids::END_STONE); + $this->mapSimple(Blocks::END_STONE_BRICKS(), Ids::END_BRICKS); + $this->mapSimple(Blocks::FLETCHING_TABLE(), Ids::FLETCHING_TABLE); + $this->mapSimple(Blocks::GILDED_BLACKSTONE(), Ids::GILDED_BLACKSTONE); + $this->mapSimple(Blocks::GLASS(), Ids::GLASS); + $this->mapSimple(Blocks::GLASS_PANE(), Ids::GLASS_PANE); + $this->mapSimple(Blocks::GLOWING_OBSIDIAN(), Ids::GLOWINGOBSIDIAN); + $this->mapSimple(Blocks::GLOWSTONE(), Ids::GLOWSTONE); + $this->mapSimple(Blocks::GOLD(), Ids::GOLD_BLOCK); + $this->mapSimple(Blocks::GOLD_ORE(), Ids::GOLD_ORE); + $this->mapSimple(Blocks::GRASS(), Ids::GRASS); + $this->mapSimple(Blocks::GRASS_PATH(), Ids::GRASS_PATH); + $this->mapSimple(Blocks::GRAVEL(), Ids::GRAVEL); + $this->mapSimple(Blocks::HANGING_ROOTS(), Ids::HANGING_ROOTS); + $this->mapSimple(Blocks::HARDENED_CLAY(), Ids::HARDENED_CLAY); + $this->mapSimple(Blocks::HARDENED_GLASS(), Ids::HARD_GLASS); + $this->mapSimple(Blocks::HARDENED_GLASS_PANE(), Ids::HARD_GLASS_PANE); + $this->mapSimple(Blocks::HONEYCOMB(), Ids::HONEYCOMB_BLOCK); + $this->mapSimple(Blocks::ICE(), Ids::ICE); + $this->mapSimple(Blocks::INFO_UPDATE(), Ids::INFO_UPDATE); + $this->mapSimple(Blocks::INFO_UPDATE2(), Ids::INFO_UPDATE2); + $this->mapSimple(Blocks::INVISIBLE_BEDROCK(), Ids::INVISIBLE_BEDROCK); + $this->mapSimple(Blocks::IRON(), Ids::IRON_BLOCK); + $this->mapSimple(Blocks::IRON_BARS(), Ids::IRON_BARS); + $this->mapSimple(Blocks::IRON_ORE(), Ids::IRON_ORE); + $this->mapSimple(Blocks::JUKEBOX(), Ids::JUKEBOX); + $this->mapSimple(Blocks::LAPIS_LAZULI(), Ids::LAPIS_BLOCK); + $this->mapSimple(Blocks::LAPIS_LAZULI_ORE(), Ids::LAPIS_ORE); + $this->mapSimple(Blocks::LEGACY_STONECUTTER(), Ids::STONECUTTER); + $this->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY); + $this->mapSimple(Blocks::MAGMA(), Ids::MAGMA); + $this->mapSimple(Blocks::MANGROVE_FENCE(), Ids::MANGROVE_FENCE); + $this->mapSimple(Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS); + $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); + $this->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER); + $this->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE); + $this->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS); + $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); + $this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK); + $this->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK); + $this->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK); + $this->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE); + $this->mapSimple(Blocks::NETHER_GOLD_ORE(), Ids::NETHER_GOLD_ORE); + $this->mapSimple(Blocks::NETHER_QUARTZ_ORE(), Ids::QUARTZ_ORE); + $this->mapSimple(Blocks::NETHER_REACTOR_CORE(), Ids::NETHERREACTOR); + $this->mapSimple(Blocks::NETHER_WART_BLOCK(), Ids::NETHER_WART_BLOCK); + $this->mapSimple(Blocks::NOTE_BLOCK(), Ids::NOTEBLOCK); + $this->mapSimple(Blocks::OBSIDIAN(), Ids::OBSIDIAN); + $this->mapSimple(Blocks::PACKED_ICE(), Ids::PACKED_ICE); + $this->mapSimple(Blocks::PODZOL(), Ids::PODZOL); + $this->mapSimple(Blocks::POLISHED_BLACKSTONE(), Ids::POLISHED_BLACKSTONE); + $this->mapSimple(Blocks::POLISHED_BLACKSTONE_BRICKS(), Ids::POLISHED_BLACKSTONE_BRICKS); + $this->mapSimple(Blocks::POLISHED_DEEPSLATE(), Ids::POLISHED_DEEPSLATE); + $this->mapSimple(Blocks::QUARTZ_BRICKS(), Ids::QUARTZ_BRICKS); + $this->mapSimple(Blocks::RAW_COPPER(), Ids::RAW_COPPER_BLOCK); + $this->mapSimple(Blocks::RAW_GOLD(), Ids::RAW_GOLD_BLOCK); + $this->mapSimple(Blocks::RAW_IRON(), Ids::RAW_IRON_BLOCK); + $this->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK); + $this->mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM); + $this->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK); + $this->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6); + $this->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN); + $this->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT); + $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); + $this->mapSimple(Blocks::SLIME(), Ids::SLIME); + $this->mapSimple(Blocks::SMITHING_TABLE(), Ids::SMITHING_TABLE); + $this->mapSimple(Blocks::SMOOTH_BASALT(), Ids::SMOOTH_BASALT); + $this->mapSimple(Blocks::SMOOTH_STONE(), Ids::SMOOTH_STONE); + $this->mapSimple(Blocks::SNOW(), Ids::SNOW); + $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); + $this->mapSimple(Blocks::SOUL_SOIL(), Ids::SOUL_SOIL); + $this->mapSimple(Blocks::TINTED_GLASS(), Ids::TINTED_GLASS); + $this->mapSimple(Blocks::TUFF(), Ids::TUFF); + $this->mapSimple(Blocks::WARPED_FENCE(), Ids::WARPED_FENCE); + $this->mapSimple(Blocks::WARPED_PLANKS(), Ids::WARPED_PLANKS); + $this->mapSimple(Blocks::WARPED_WART_BLOCK(), Ids::WARPED_WART_BLOCK); + $this->mapSimple(Blocks::WITHER_ROSE(), Ids::WITHER_ROSE); + } + + private function registerSerializers() : void{ + $this->map(Blocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); + $this->map(Blocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); + $this->map(Blocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); + $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); + $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); + $this->map(Blocks::ACACIA_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::ACACIA_STANDING_SIGN))); + $this->map(Blocks::ACACIA_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_ACACIA)); + $this->map(Blocks::ACACIA_STAIRS(), fn(WoodenStairs $block) => Helper::encodeStairs($block, new Writer(Ids::ACACIA_STAIRS))); + $this->map(Blocks::ACACIA_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::ACACIA_TRAPDOOR))); + $this->map(Blocks::ACACIA_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::ACACIA_WALL_SIGN))); + $this->map(Blocks::ACACIA_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::ACTIVATOR_RAIL(), function(ActivatorRail $block) : Writer{ + return Writer::create(Ids::ACTIVATOR_RAIL) + ->writeBool(StateNames::RAIL_DATA_BIT, $block->isPowered()) + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(Blocks::ALLIUM(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ALLIUM)); + $this->map(Blocks::ALL_SIDED_MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) + ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_ALL_STEM)); + $this->map(Blocks::ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE)); + $this->map(Blocks::ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_ANDESITE)); + $this->map(Blocks::ANDESITE_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::ANDESITE_STAIRS))); + $this->map(Blocks::ANDESITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_ANDESITE)); + $this->map(Blocks::ANVIL(), function(Anvil $block) : Writer{ + return Writer::create(Ids::ANVIL) + ->writeLegacyHorizontalFacing($block->getFacing()) + ->writeString(StateNames::DAMAGE, match($damage = $block->getDamage()){ + 0 => StringValues::DAMAGE_UNDAMAGED, + 1 => StringValues::DAMAGE_SLIGHTLY_DAMAGED, + 2 => StringValues::DAMAGE_VERY_DAMAGED, + default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), + }); + }); + $this->map(Blocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); + $this->map(Blocks::BAMBOO(), function(Bamboo $block) : Writer{ + return Writer::create(Ids::BAMBOO) + ->writeBool(StateNames::AGE_BIT, $block->isReady()) + ->writeString(StateNames::BAMBOO_LEAF_SIZE, match($block->getLeafSize()){ + Bamboo::NO_LEAVES => StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES, + Bamboo::SMALL_LEAVES => StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES, + Bamboo::LARGE_LEAVES => StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES, + default => throw new BlockStateSerializeException("Invalid Bamboo leaf thickness " . $block->getLeafSize()), + }) + ->writeString(StateNames::BAMBOO_STALK_THICKNESS, $block->isThick() ? StringValues::BAMBOO_STALK_THICKNESS_THICK : StringValues::BAMBOO_STALK_THICKNESS_THIN); + }); + $this->map(Blocks::BAMBOO_SAPLING(), function(BambooSapling $block) : Writer{ + return Writer::create(Ids::BAMBOO_SAPLING) + ->writeBool(StateNames::AGE_BIT, $block->isReady()) + + //TODO: bug in MCPE + ->writeString(StateNames::SAPLING_TYPE, StringValues::SAPLING_TYPE_OAK); + }); + $this->map(Blocks::BANNER(), function(FloorBanner $block) : Writer{ + return Writer::create(Ids::STANDING_BANNER) + ->writeInt(StateNames::GROUND_SIGN_DIRECTION, $block->getRotation()); + }); + $this->map(Blocks::BARREL(), function(Barrel $block) : Writer{ + return Writer::create(Ids::BARREL) + ->writeBool(StateNames::OPEN_BIT, $block->isOpen()) + ->writeFacingDirection($block->getFacing()); + }); + $this->map(Blocks::BASALT(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::BASALT) + ->writePillarAxis($block->getAxis()); + }); + $this->map(Blocks::BED(), function(Bed $block) : Writer{ + return Writer::create(Ids::BED) + ->writeBool(StateNames::HEAD_PIECE_BIT, $block->isHeadPart()) + ->writeBool(StateNames::OCCUPIED_BIT, $block->isOccupied()) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(Blocks::BEDROCK(), function(Block $block) : Writer{ + return Writer::create(Ids::BEDROCK) + ->writeBool(StateNames::INFINIBURN_BIT, $block->burnsForever()); + }); + $this->map(Blocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT))); + $this->map(Blocks::BELL(), function(Bell $block) : Writer{ + return Writer::create(Ids::BELL) + ->writeBellAttachmentType($block->getAttachmentType()) + ->writeBool(StateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy + ->writeLegacyHorizontalFacing($block->getFacing()); + + }); + $this->map(Blocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); + $this->map(Blocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); + $this->map(Blocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); + $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); + $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); + $this->map(Blocks::BIRCH_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_BIRCH)); + $this->map(Blocks::BIRCH_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::BIRCH_STANDING_SIGN))); + $this->map(Blocks::BIRCH_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_BIRCH)); + $this->mapStairs(Blocks::BIRCH_STAIRS(), Ids::BIRCH_STAIRS); + $this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR))); + $this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN))); + $this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->mapSlab(Blocks::BLACKSTONE_SLAB(), Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB); + $this->mapStairs(Blocks::BLACKSTONE_STAIRS(), Ids::BLACKSTONE_STAIRS); + $this->map(Blocks::BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::BLACKSTONE_WALL))); + $this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE)); + $this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID)); + $this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP))); + $this->map(Blocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{ + return Writer::create(Ids::BONE_BLOCK) + ->writeInt(StateNames::DEPRECATED, 0) + ->writePillarAxis($block->getAxis()); + }); + $this->map(Blocks::BREWING_STAND(), function(BrewingStand $block) : Writer{ + return Writer::create(Ids::BREWING_STAND) + ->writeBool(StateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST())) + ->writeBool(StateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST())) + ->writeBool(StateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST())); + }); + $this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK)); + $this->mapStairs(Blocks::BRICK_STAIRS(), Ids::BRICK_STAIRS); + $this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK)); + $this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK))); + $this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{ + return Writer::create(Ids::CACTUS) + ->writeInt(StateNames::AGE, $block->getAge()); + }); + $this->map(Blocks::CAKE(), function(Cake $block) : Writer{ + return Writer::create(Ids::CAKE) + ->writeInt(StateNames::BITE_COUNTER, $block->getBites()); + }); + $this->map(Blocks::CARPET(), function(Carpet $block) : Writer{ + return Writer::create(Ids::CARPET) + ->writeColor($block->getColor()); + }); + $this->map(Blocks::CARROTS(), fn(Carrot $block) => Helper::encodeCrops($block, new Writer(Ids::CARROTS))); + $this->map(Blocks::CARVED_PUMPKIN(), function(CarvedPumpkin $block) : Writer{ + return Writer::create(Ids::CARVED_PUMPKIN) + ->writeLegacyHorizontalFacing($block->getFacing()); + }); + $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ + return Writer::create(Ids::CHEST) + ->writeHorizontalFacing($block->getFacing()); + }); + $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); + $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); + $this->map(Blocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); + $this->mapSlab(Blocks::COBBLED_DEEPSLATE_SLAB(), Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB); + $this->mapStairs(Blocks::COBBLED_DEEPSLATE_STAIRS(), Ids::COBBLED_DEEPSLATE_STAIRS); + $this->map(Blocks::COBBLED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::COBBLED_DEEPSLATE_WALL))); + $this->map(Blocks::COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_COBBLESTONE)); + $this->mapStairs(Blocks::COBBLESTONE_STAIRS(), Ids::STONE_STAIRS); + $this->map(Blocks::COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_COBBLESTONE)); + $this->map(Blocks::COPPER(), function(Copper $block) : Writer{ + $oxidation = $block->getOxidation(); + return new Writer($block->isWaxed() ? + Helper::selectCopperId($oxidation, Ids::WAXED_COPPER, Ids::WAXED_EXPOSED_COPPER, Ids::WAXED_WEATHERED_COPPER, Ids::WAXED_OXIDIZED_COPPER) : + Helper::selectCopperId($oxidation, Ids::COPPER_BLOCK, Ids::EXPOSED_COPPER, Ids::WEATHERED_COPPER, Ids::OXIDIZED_COPPER) + ); + }); + $this->map(Blocks::CUT_COPPER(), function(Copper $block) : Writer{ + $oxidation = $block->getOxidation(); + return new Writer($block->isWaxed() ? + Helper::selectCopperId($oxidation, Ids::WAXED_CUT_COPPER, Ids::WAXED_EXPOSED_CUT_COPPER, Ids::WAXED_WEATHERED_CUT_COPPER, Ids::WAXED_OXIDIZED_CUT_COPPER) : + Helper::selectCopperId($oxidation, Ids::CUT_COPPER, Ids::EXPOSED_CUT_COPPER, Ids::WEATHERED_CUT_COPPER, Ids::OXIDIZED_CUT_COPPER) + ); + }); + $this->map(Blocks::CUT_COPPER_SLAB(), function(CopperSlab $block) : Writer{ + $oxidation = $block->getOxidation(); + return Helper::encodeSlab( + $block, + ($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_CUT_COPPER_SLAB, + Ids::WAXED_EXPOSED_CUT_COPPER_SLAB, + Ids::WAXED_WEATHERED_CUT_COPPER_SLAB, + Ids::WAXED_OXIDIZED_CUT_COPPER_SLAB + ) : + Helper::selectCopperId( + $oxidation, + Ids::CUT_COPPER_SLAB, + Ids::EXPOSED_CUT_COPPER_SLAB, + Ids::WEATHERED_CUT_COPPER_SLAB, + Ids::OXIDIZED_CUT_COPPER_SLAB + ) + ), + ($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_EXPOSED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_WEATHERED_DOUBLE_CUT_COPPER_SLAB, + Ids::WAXED_OXIDIZED_DOUBLE_CUT_COPPER_SLAB + ) : + Helper::selectCopperId( + $oxidation, + Ids::DOUBLE_CUT_COPPER_SLAB, + Ids::EXPOSED_DOUBLE_CUT_COPPER_SLAB, + Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, + Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB + ) + ) + ); + }); + $this->map(Blocks::CUT_COPPER_STAIRS(), function(CopperStairs $block) : Writer{ + $oxidation = $block->getOxidation(); + return Helper::encodeStairs( + $block, + new Writer($block->isWaxed() ? + Helper::selectCopperId( + $oxidation, + Ids::WAXED_CUT_COPPER_STAIRS, + Ids::WAXED_EXPOSED_CUT_COPPER_STAIRS, + Ids::WAXED_WEATHERED_CUT_COPPER_STAIRS, + Ids::WAXED_OXIDIZED_CUT_COPPER_STAIRS + ) : + Helper::selectCopperId( + $oxidation, + Ids::CUT_COPPER_STAIRS, + Ids::EXPOSED_CUT_COPPER_STAIRS, + Ids::WEATHERED_CUT_COPPER_STAIRS, + Ids::OXIDIZED_CUT_COPPER_STAIRS + ) + ) + ); + }); + $this->map(Blocks::COCOA_POD(), function(CocoaBlock $block) : Writer{ + return Writer::create(Ids::COCOA) + ->writeInt(StateNames::AGE, $block->getAge()) + ->writeLegacyHorizontalFacing(Facing::opposite($block->getFacing())); + }); + $this->map(Blocks::COMPOUND_CREATOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR, new Writer(Ids::CHEMISTRY_TABLE))); + $this->map(Blocks::CONCRETE(), function(Concrete $block) : Writer{ + return Writer::create(Ids::CONCRETE) + ->writeColor($block->getColor()); + }); + $this->map(Blocks::CONCRETE_POWDER(), function(ConcretePowder $block) : Writer{ + return Writer::create(Ids::CONCRETE_POWDER) + ->writeColor($block->getColor()); + }); + $this->map(Blocks::CORAL(), function(Coral $block) : Writer{ + return Writer::create(Ids::CORAL) + ->writeBool(StateNames::DEAD_BIT, $block->isDead()) + ->writeCoralType($block->getCoralType()); + }); + $this->map(Blocks::CORAL_BLOCK(), function(CoralBlock $block) : Writer{ + return Writer::create(Ids::CORAL_BLOCK) + ->writeBool(StateNames::DEAD_BIT, $block->isDead()) + ->writeCoralType($block->getCoralType()); + }); + $this->map(Blocks::CORAL_FAN(), function(FloorCoralFan $block) : Writer{ + return Writer::create($block->isDead() ? Ids::CORAL_FAN_DEAD : Ids::CORAL_FAN) + ->writeCoralType($block->getCoralType()) + ->writeInt(StateNames::CORAL_FAN_DIRECTION, match($axis = $block->getAxis()){ + Axis::X => 0, + Axis::Z => 1, + default => throw new BlockStateSerializeException("Invalid axis {$axis}"), + }); + }); + $this->map(Blocks::CORNFLOWER(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_CORNFLOWER)); + $this->map(Blocks::CRACKED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CRACKED)); + $this->map(Blocks::CRIMSON_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::CRIMSON_BUTTON))); + $this->map(Blocks::CRIMSON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::CRIMSON_DOOR))); + $this->map(Blocks::CRIMSON_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::CRIMSON_FENCE_GATE))); + $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); + $this->map(Blocks::CRIMSON_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::CRIMSON_PRESSURE_PLATE))); + $this->map(Blocks::CRIMSON_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::CRIMSON_STANDING_SIGN))); + $this->mapSlab(Blocks::CRIMSON_SLAB(), Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB); + $this->mapStairs(Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS); + $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); + $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); + $this->map(Blocks::CRIMSON_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::CRIMSON_WALL_SIGN))); + $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE)); + $this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); + $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); + $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); + $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); + $this->map(Blocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); + $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); + $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) + ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); + $this->map(Blocks::DARK_OAK_SAPLING(), fn(Sapling $block) => Helper::encodeSapling($block, StringValues::SAPLING_TYPE_DARK_OAK)); + $this->map(Blocks::DARK_OAK_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::DARKOAK_STANDING_SIGN))); + $this->map(Blocks::DARK_OAK_SLAB(), fn(Slab $block) => Helper::encodeWoodenSlab($block, StringValues::WOOD_TYPE_DARK_OAK)); + $this->mapStairs(Blocks::DARK_OAK_STAIRS(), Ids::DARK_OAK_STAIRS); + $this->map(Blocks::DARK_OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::DARK_OAK_TRAPDOOR))); + $this->map(Blocks::DARK_OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::DARKOAK_WALL_SIGN))); + $this->map(Blocks::DARK_OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); + $this->map(Blocks::DARK_PRISMARINE(), fn() => Writer::create(Ids::PRISMARINE) + ->writeString(StateNames::PRISMARINE_BLOCK_TYPE, StringValues::PRISMARINE_BLOCK_TYPE_DARK)); + $this->map(Blocks::DARK_PRISMARINE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PRISMARINE_DARK)); + $this->mapStairs(Blocks::DARK_PRISMARINE_STAIRS(), Ids::DARK_PRISMARINE_STAIRS); + $this->map(Blocks::DAYLIGHT_SENSOR(), function(DaylightSensor $block) : Writer{ + return Writer::create($block->isInverted() ? Ids::DAYLIGHT_DETECTOR_INVERTED : Ids::DAYLIGHT_DETECTOR) + ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); + }); + $this->map(Blocks::DEEPSLATE(), function(SimplePillar $block) : Writer{ + return Writer::create(Ids::DEEPSLATE) + ->writePillarAxis($block->getAxis()); + }); + $this->mapSlab(Blocks::DEEPSLATE_BRICK_SLAB(), Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB); + $this->mapStairs(Blocks::DEEPSLATE_BRICK_STAIRS(), Ids::DEEPSLATE_BRICK_STAIRS); + $this->map(Blocks::DEEPSLATE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_BRICK_WALL))); + $this->map(Blocks::DEEPSLATE_REDSTONE_ORE(), fn(RedstoneOre $block) => new Writer($block->isLit() ? Ids::LIT_DEEPSLATE_REDSTONE_ORE : Ids::DEEPSLATE_REDSTONE_ORE)); + $this->mapSlab(Blocks::DEEPSLATE_TILE_SLAB(), Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB); + $this->mapStairs(Blocks::DEEPSLATE_TILE_STAIRS(), Ids::DEEPSLATE_TILE_STAIRS); + $this->map(Blocks::DEEPSLATE_TILE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::DEEPSLATE_TILE_WALL))); + $this->map(Blocks::DETECTOR_RAIL(), function(DetectorRail $block) : Writer{ + return Writer::create(Ids::DETECTOR_RAIL) + ->writeBool(StateNames::RAIL_DATA_BIT, $block->isActivated()) + ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); + }); + $this->map(Blocks::DIORITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_DIORITE)); + $this->map(Blocks::DIORITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_DIORITE)); + $this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS); + $this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); + $this->map(Blocks::DIRT(), function(Dirt $block) : Writer{ + return Writer::create(Ids::DIRT) + ->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); + }); + $this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); + $this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ + return Writer::create(Ids::SHULKER_BOX) + ->writeColor($block->getColor()); + }); + $this->map(Blocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); $this->map(Blocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ return Writer::create(Ids::ENDER_CHEST) ->writeHorizontalFacing($block->getFacing()); @@ -810,8 +891,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::END_ROD) ->writeEndRodFacingDirection($block->getFacing()); }); - $this->mapSimple(Blocks::END_STONE(), Ids::END_STONE); - $this->mapSimple(Blocks::END_STONE_BRICKS(), Ids::END_BRICKS); $this->map(Blocks::END_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_END_STONE_BRICK)); $this->mapStairs(Blocks::END_STONE_BRICK_STAIRS(), Ids::END_BRICK_STAIRS); $this->map(Blocks::END_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_END_BRICK)); @@ -826,7 +905,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::FIRE) ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->mapSimple(Blocks::FLETCHING_TABLE(), Ids::FLETCHING_TABLE); $this->map(Blocks::FLOWER_POT(), function() : Writer{ return Writer::create(Ids::FLOWER_POT) ->writeBool(StateNames::UPDATE_BIT, true); //to keep MCPE happy @@ -836,9 +914,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::AGE, $block->getAge()); }); $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); - $this->mapSimple(Blocks::GILDED_BLACKSTONE(), Ids::GILDED_BLACKSTONE); - $this->mapSimple(Blocks::GLASS(), Ids::GLASS); - $this->mapSimple(Blocks::GLASS_PANE(), Ids::GLASS_PANE); $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ return Writer::create(match ($color = $block->getColor()) { DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA, @@ -861,34 +936,21 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }) ->writeHorizontalFacing($block->getFacing()); }); - $this->mapSimple(Blocks::GLOWING_OBSIDIAN(), Ids::GLOWINGOBSIDIAN); - $this->mapSimple(Blocks::GLOWSTONE(), Ids::GLOWSTONE); - $this->mapSimple(Blocks::GOLD(), Ids::GOLD_BLOCK); - $this->mapSimple(Blocks::GOLD_ORE(), Ids::GOLD_ORE); $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); $this->mapStairs(Blocks::GRANITE_STAIRS(), Ids::GRANITE_STAIRS); $this->map(Blocks::GRANITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_GRANITE)); - $this->mapSimple(Blocks::GRASS(), Ids::GRASS); - $this->mapSimple(Blocks::GRASS_PATH(), Ids::GRASS_PATH); - $this->mapSimple(Blocks::GRAVEL(), Ids::GRAVEL); $this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG))); - $this->mapSimple(Blocks::HANGING_ROOTS(), Ids::HANGING_ROOTS); - $this->mapSimple(Blocks::HARDENED_CLAY(), Ids::HARDENED_CLAY); - $this->mapSimple(Blocks::HARDENED_GLASS(), Ids::HARD_GLASS); - $this->mapSimple(Blocks::HARDENED_GLASS_PANE(), Ids::HARD_GLASS_PANE); $this->map(Blocks::HAY_BALE(), function(HayBale $block) : Writer{ return Writer::create(Ids::HAY_BLOCK) ->writeInt(StateNames::DEPRECATED, 0) ->writePillarAxis($block->getAxis()); }); - $this->mapSimple(Blocks::HONEYCOMB(), Ids::HONEYCOMB_BLOCK); $this->map(Blocks::HOPPER(), function(Hopper $block) : Writer{ return Writer::create(Ids::HOPPER) ->writeBool(StateNames::TOGGLE_BIT, $block->isPowered()) ->writeFacingWithoutUp($block->getFacing()); }); - $this->mapSimple(Blocks::ICE(), Ids::ICE); $this->map(Blocks::INFESTED_CHISELED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK)); $this->map(Blocks::INFESTED_COBBLESTONE(), fn() => Writer::create(Ids::MONSTER_EGG) @@ -901,13 +963,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE)); $this->map(Blocks::INFESTED_STONE_BRICK(), fn() => Writer::create(Ids::MONSTER_EGG) ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); - $this->mapSimple(Blocks::INFO_UPDATE(), Ids::INFO_UPDATE); - $this->mapSimple(Blocks::INFO_UPDATE2(), Ids::INFO_UPDATE2); - $this->mapSimple(Blocks::INVISIBLE_BEDROCK(), Ids::INVISIBLE_BEDROCK); - $this->mapSimple(Blocks::IRON(), Ids::IRON_BLOCK); - $this->mapSimple(Blocks::IRON_BARS(), Ids::IRON_BARS); $this->map(Blocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); - $this->mapSimple(Blocks::IRON_ORE(), Ids::IRON_ORE); $this->map(Blocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); $this->map(Blocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ return Writer::create($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME) @@ -915,7 +971,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) ->writeFacingDirection($block->getFacing()); }); - $this->mapSimple(Blocks::JUKEBOX(), Ids::JUKEBOX); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); $this->map(Blocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); $this->map(Blocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) @@ -942,8 +997,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LANTERN) ->writeBool(StateNames::HANGING, $block->isHanging()); }); - $this->mapSimple(Blocks::LAPIS_LAZULI(), Ids::LAPIS_BLOCK); - $this->mapSimple(Blocks::LAPIS_LAZULI_ORE(), Ids::LAPIS_ORE); $this->map(Blocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_FERN, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA)); $this->map(Blocks::LECTERN(), function(Lectern $block) : Writer{ @@ -951,7 +1004,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::POWERED_BIT, $block->isProducingSignal()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->mapSimple(Blocks::LEGACY_STONECUTTER(), Ids::STONECUTTER); $this->map(Blocks::LEVER(), function(Lever $block) : Writer{ return Writer::create(Ids::LEVER) ->writeBool(StateNames::OPEN_BIT, $block->isActivated()) @@ -977,7 +1029,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY)); - $this->mapSimple(Blocks::LILY_PAD(), Ids::WATERLILY); $this->map(Blocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{ return Writer::create(Ids::LIT_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); @@ -986,13 +1037,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::LOOM) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->mapSimple(Blocks::MAGMA(), Ids::MAGMA); $this->map(Blocks::MANGROVE_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::MANGROVE_BUTTON))); $this->map(Blocks::MANGROVE_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::MANGROVE_DOOR))); - $this->mapSimple(Blocks::MANGROVE_FENCE(), Ids::MANGROVE_FENCE); $this->map(Blocks::MANGROVE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::MANGROVE_FENCE_GATE))); $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); - $this->mapSimple(Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS); $this->map(Blocks::MANGROVE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::MANGROVE_PRESSURE_PLATE))); $this->map(Blocks::MANGROVE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::MANGROVE_STANDING_SIGN))); $this->mapSlab(Blocks::MANGROVE_SLAB(), Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB); @@ -1011,14 +1059,11 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ } }); $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); - $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); $this->map(Blocks::MOB_HEAD(), function(Skull $block) : Writer{ return Writer::create(Ids::SKULL) ->writeFacingWithoutDown($block->getFacing()); }); - $this->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER); - $this->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE); $this->map(Blocks::MOSSY_COBBLESTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_MOSSY_COBBLESTONE)); $this->mapStairs(Blocks::MOSSY_COBBLESTONE_STAIRS(), Ids::MOSSY_COBBLESTONE_STAIRS); $this->map(Blocks::MOSSY_COBBLESTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_COBBLESTONE)); @@ -1026,21 +1071,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MOSSY_STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_MOSSY_STONE_BRICK)); $this->mapStairs(Blocks::MOSSY_STONE_BRICK_STAIRS(), Ids::MOSSY_STONE_BRICK_STAIRS); $this->map(Blocks::MOSSY_STONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_MOSSY_STONE_BRICK)); - $this->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS); $this->mapSlab(Blocks::MUD_BRICK_SLAB(), Ids::MUD_BRICK_SLAB, Ids::MUD_BRICK_DOUBLE_SLAB); $this->mapStairs(Blocks::MUD_BRICK_STAIRS(), Ids::MUD_BRICK_STAIRS); $this->map(Blocks::MUD_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::MUD_BRICK_WALL))); $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); - $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); - $this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK); - $this->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK); - $this->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK); - $this->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE); $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); $this->mapStairs(Blocks::NETHER_BRICK_STAIRS(), Ids::NETHER_BRICK_STAIRS); $this->map(Blocks::NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_NETHER_BRICK)); - $this->mapSimple(Blocks::NETHER_GOLD_ORE(), Ids::NETHER_GOLD_ORE); $this->map(Blocks::NETHER_PORTAL(), function(NetherPortal $block) : Writer{ return Writer::create(Ids::PORTAL) ->writeString(StateNames::PORTAL_AXIS, match($block->getAxis()){ @@ -1049,14 +1087,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Nether Portal axis " . $block->getAxis()), }); }); - $this->mapSimple(Blocks::NETHER_QUARTZ_ORE(), Ids::QUARTZ_ORE); - $this->mapSimple(Blocks::NETHER_REACTOR_CORE(), Ids::NETHERREACTOR); $this->map(Blocks::NETHER_WART(), function(NetherWartPlant $block) : Writer{ return Writer::create(Ids::NETHER_WART) ->writeInt(StateNames::AGE, $block->getAge()); }); - $this->mapSimple(Blocks::NETHER_WART_BLOCK(), Ids::NETHER_WART_BLOCK); - $this->mapSimple(Blocks::NOTE_BLOCK(), Ids::NOTEBLOCK); $this->map(Blocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); $this->map(Blocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); $this->map(Blocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) @@ -1074,13 +1108,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::OAK_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::TRAPDOOR))); $this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN))); $this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block)); - $this->mapSimple(Blocks::OBSIDIAN(), Ids::OBSIDIAN); $this->map(Blocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE)); $this->map(Blocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE)); - $this->mapSimple(Blocks::PACKED_ICE(), Ids::PACKED_ICE); $this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK)); - $this->mapSimple(Blocks::PODZOL(), Ids::PODZOL); $this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH)); $this->map(Blocks::POLISHED_ANDESITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_POLISHED_ANDESITE)); $this->mapStairs(Blocks::POLISHED_ANDESITE_STAIRS(), Ids::POLISHED_ANDESITE_STAIRS); @@ -1088,8 +1119,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::POLISHED_BASALT) ->writePillarAxis($block->getAxis()); }); - $this->mapSimple(Blocks::POLISHED_BLACKSTONE(), Ids::POLISHED_BLACKSTONE); - $this->mapSimple(Blocks::POLISHED_BLACKSTONE_BRICKS(), Ids::POLISHED_BLACKSTONE_BRICKS); $this->mapSlab(Blocks::POLISHED_BLACKSTONE_BRICK_SLAB(), Ids::POLISHED_BLACKSTONE_BRICK_SLAB, Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB); $this->mapStairs(Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS(), Ids::POLISHED_BLACKSTONE_BRICK_STAIRS); $this->map(Blocks::POLISHED_BLACKSTONE_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_BRICK_WALL))); @@ -1098,7 +1127,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSlab(Blocks::POLISHED_BLACKSTONE_SLAB(), Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB); $this->mapStairs(Blocks::POLISHED_BLACKSTONE_STAIRS(), Ids::POLISHED_BLACKSTONE_STAIRS); $this->map(Blocks::POLISHED_BLACKSTONE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_BLACKSTONE_WALL))); - $this->mapSimple(Blocks::POLISHED_DEEPSLATE(), Ids::POLISHED_DEEPSLATE); $this->mapSlab(Blocks::POLISHED_DEEPSLATE_SLAB(), Ids::POLISHED_DEEPSLATE_SLAB, Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB); $this->mapStairs(Blocks::POLISHED_DEEPSLATE_STAIRS(), Ids::POLISHED_DEEPSLATE_STAIRS); $this->map(Blocks::POLISHED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::POLISHED_DEEPSLATE_WALL))); @@ -1143,7 +1171,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::PURPUR_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_PURPUR)); $this->mapStairs(Blocks::PURPUR_STAIRS(), Ids::PURPUR_STAIRS); $this->map(Blocks::QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_DEFAULT, Axis::Y)); - $this->mapSimple(Blocks::QUARTZ_BRICKS(), Ids::QUARTZ_BRICKS); $this->map(Blocks::QUARTZ_PILLAR(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_LINES, $block->getAxis())); $this->map(Blocks::QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_QUARTZ)); $this->mapStairs(Blocks::QUARTZ_STAIRS(), Ids::QUARTZ_STAIRS); @@ -1151,10 +1178,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::RAIL) ->writeInt(StateNames::RAIL_DIRECTION, $block->getShape()); }); - $this->mapSimple(Blocks::RAW_COPPER(), Ids::RAW_COPPER_BLOCK); - $this->mapSimple(Blocks::RAW_GOLD(), Ids::RAW_GOLD_BLOCK); - $this->mapSimple(Blocks::RAW_IRON(), Ids::RAW_IRON_BLOCK); - $this->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK); $this->map(Blocks::REDSTONE_COMPARATOR(), function(RedstoneComparator $block) : Writer{ return Writer::create($block->isPowered() ? Ids::POWERED_COMPARATOR : Ids::UNPOWERED_COMPARATOR) ->writeBool(StateNames::OUTPUT_LIT_BIT, $block->isPowered()) @@ -1176,9 +1199,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::REDSTONE_WIRE) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); }); - $this->mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM); $this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK))); - $this->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK); $this->map(Blocks::RED_NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_RED_NETHER_BRICK)); $this->mapStairs(Blocks::RED_NETHER_BRICK_STAIRS(), Ids::RED_NETHER_BRICK_STAIRS); $this->map(Blocks::RED_NETHER_BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_NETHER_BRICK)); @@ -1190,7 +1211,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::RED_SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_RED_SANDSTONE)); $this->map(Blocks::RED_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_RG))); $this->map(Blocks::RED_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_RED)); - $this->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6); $this->map(Blocks::ROSE_BUSH(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_ROSE, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::SAND(), fn() => Writer::create(Ids::SAND) ->writeString(StateNames::SAND_TYPE, StringValues::SAND_TYPE_NORMAL)); @@ -1198,18 +1218,12 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SANDSTONE)); $this->mapStairs(Blocks::SANDSTONE_STAIRS(), Ids::SANDSTONE_STAIRS); $this->map(Blocks::SANDSTONE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_SANDSTONE)); - $this->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN); $this->map(Blocks::SEA_PICKLE(), function(SeaPickle $block) : Writer{ return Writer::create(Ids::SEA_PICKLE) ->writeBool(StateNames::DEAD_BIT, !$block->isUnderwater()) ->writeInt(StateNames::CLUSTER_COUNT, $block->getCount() - 1); }); - $this->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT); - $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); - $this->mapSimple(Blocks::SLIME(), Ids::SLIME); - $this->mapSimple(Blocks::SMITHING_TABLE(), Ids::SMITHING_TABLE); $this->map(Blocks::SMOKER(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::SMOKER, Ids::LIT_SMOKER)); - $this->mapSimple(Blocks::SMOOTH_BASALT(), Ids::SMOOTH_BASALT); $this->map(Blocks::SMOOTH_QUARTZ(), fn() => Helper::encodeQuartz(StringValues::CHISEL_TYPE_SMOOTH, Axis::Y)); $this->map(Blocks::SMOOTH_QUARTZ_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_SMOOTH_QUARTZ)); $this->mapStairs(Blocks::SMOOTH_QUARTZ_STAIRS(), Ids::SMOOTH_QUARTZ_STAIRS); @@ -1219,9 +1233,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::SMOOTH_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_SMOOTH)); $this->map(Blocks::SMOOTH_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab2($block, StringValues::STONE_SLAB_TYPE_2_SMOOTH_SANDSTONE)); $this->mapStairs(Blocks::SMOOTH_SANDSTONE_STAIRS(), Ids::SMOOTH_SANDSTONE_STAIRS); - $this->mapSimple(Blocks::SMOOTH_STONE(), Ids::SMOOTH_STONE); $this->map(Blocks::SMOOTH_STONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_SMOOTH_STONE)); - $this->mapSimple(Blocks::SNOW(), Ids::SNOW); $this->map(Blocks::SNOW_LAYER(), function(SnowLayer $block) : Writer{ return Writer::create(Ids::SNOW_LAYER) ->writeBool(StateNames::COVERED_BIT, false) @@ -1235,8 +1247,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::SOUL_LANTERN) ->writeBool(StateNames::HANGING, $block->isHanging()); }); - $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); - $this->mapSimple(Blocks::SOUL_SOIL(), Ids::SOUL_SOIL); $this->map(Blocks::SOUL_TORCH(), function(Torch $block) : Writer{ return Writer::create(Ids::SOUL_TORCH) ->writeTorchFacing($block->getFacing()); @@ -1304,7 +1314,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::TALL_GRASS(), fn() => Writer::create(Ids::TALLGRASS) ->writeString(StateNames::TALL_GRASS_TYPE, StringValues::TALL_GRASS_TYPE_TALL)); - $this->mapSimple(Blocks::TINTED_GLASS(), Ids::TINTED_GLASS); $this->map(Blocks::TNT(), function(TNT $block) : Writer{ return Writer::create(Ids::TNT) ->writeBool(StateNames::ALLOW_UNDERWATER_BIT, $block->worksUnderwater()) @@ -1331,7 +1340,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::POWERED_BIT, $block->isPowered()) ->writeLegacyHorizontalFacing($block->getFacing()); }); - $this->mapSimple(Blocks::TUFF(), Ids::TUFF); $this->map(Blocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ return Writer::create(Ids::UNDERWATER_TORCH) ->writeTorchFacing($block->getFacing()); @@ -1358,10 +1366,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::WARPED_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::WARPED_BUTTON))); $this->map(Blocks::WARPED_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::WARPED_DOOR))); - $this->mapSimple(Blocks::WARPED_FENCE(), Ids::WARPED_FENCE); $this->map(Blocks::WARPED_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::WARPED_FENCE_GATE))); $this->map(Blocks::WARPED_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_HYPHAE, Ids::STRIPPED_WARPED_HYPHAE)); - $this->mapSimple(Blocks::WARPED_PLANKS(), Ids::WARPED_PLANKS); $this->map(Blocks::WARPED_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WARPED_PRESSURE_PLATE))); $this->map(Blocks::WARPED_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::WARPED_STANDING_SIGN))); $this->mapSlab(Blocks::WARPED_SLAB(), Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB); @@ -1369,7 +1375,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); $this->map(Blocks::WARPED_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WARPED_WALL_SIGN))); - $this->mapSimple(Blocks::WARPED_WART_BLOCK(), Ids::WARPED_WART_BLOCK); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) @@ -1381,7 +1386,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); $this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); - $this->mapSimple(Blocks::WITHER_ROSE(), Ids::WITHER_ROSE); $this->map(Blocks::WOOL(), function(Wool $block) : Writer{ return Writer::create(Ids::WOOL) ->writeColor($block->getColor()); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 8923008df..111abbc80 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -60,6 +60,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize public function __construct(){ $this->registerCandleDeserializers(); + $this->registerSimpleDeserializers(); $this->registerDeserializers(); } @@ -135,151 +136,20 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); } - private function registerDeserializers() : void{ - $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); - $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); - $this->map(Ids::ACACIA_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::ACACIA_FENCE_GATE(), $in)); - $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::ACACIA_PRESSURE_PLATE(), $in)); - $this->mapStairs(Ids::ACACIA_STAIRS, fn() => Blocks::ACACIA_STAIRS()); - $this->map(Ids::ACACIA_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::ACACIA_SIGN(), $in)); - $this->map(Ids::ACACIA_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::ACACIA_TRAPDOOR(), $in)); - $this->map(Ids::ACACIA_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::ACACIA_WALL_SIGN(), $in)); - $this->map(Ids::ACTIVATOR_RAIL, function(Reader $in) : Block{ - return Blocks::ACTIVATOR_RAIL() - ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); - }); + private function registerSimpleDeserializers() : void{ $this->map(Ids::AIR, fn() => Blocks::AIR()); $this->map(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); $this->map(Ids::ANCIENT_DEBRIS, fn() => Blocks::ANCIENT_DEBRIS()); - $this->mapStairs(Ids::ANDESITE_STAIRS, fn() => Blocks::ANDESITE_STAIRS()); - $this->map(Ids::ANVIL, function(Reader $in) : Block{ - return Blocks::ANVIL() - ->setDamage(match($value = $in->readString(StateNames::DAMAGE)){ - StringValues::DAMAGE_UNDAMAGED => 0, - StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, - StringValues::DAMAGE_VERY_DAMAGED => 2, - StringValues::DAMAGE_BROKEN => 0, - default => throw $in->badValueException(StateNames::DAMAGE, $value), - }) - ->setFacing($in->readLegacyHorizontalFacing()); - }); - $this->map(Ids::BAMBOO, function(Reader $in) : Block{ - return Blocks::BAMBOO() - ->setLeafSize(match($value = $in->readString(StateNames::BAMBOO_LEAF_SIZE)){ - StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, - StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, - default => throw $in->badValueException(StateNames::BAMBOO_LEAF_SIZE, $value), - }) - ->setReady($in->readBool(StateNames::AGE_BIT)) - ->setThick(match($value = $in->readString(StateNames::BAMBOO_STALK_THICKNESS)){ - StringValues::BAMBOO_STALK_THICKNESS_THIN => false, - StringValues::BAMBOO_STALK_THICKNESS_THICK => true, - default => throw $in->badValueException(StateNames::BAMBOO_STALK_THICKNESS, $value), - }); - }); - $this->map(Ids::BAMBOO_SAPLING, function(Reader $in) : Block{ - $in->ignored(StateNames::SAPLING_TYPE); //bug in MCPE - return Blocks::BAMBOO_SAPLING()->setReady($in->readBool(StateNames::AGE_BIT)); - }); - $this->map(Ids::BARREL, function(Reader $in) : Block{ - return Blocks::BARREL() - ->setFacing($in->readFacingDirection()) - ->setOpen($in->readBool(StateNames::OPEN_BIT)); - }); $this->map(Ids::BARRIER, fn() => Blocks::BARRIER()); - $this->map(Ids::BASALT, function(Reader $in){ - return Blocks::BASALT() - ->setAxis($in->readPillarAxis()); - }); $this->map(Ids::BEACON, fn() => Blocks::BEACON()); - $this->map(Ids::BED, function(Reader $in) : Block{ - return Blocks::BED() - ->setFacing($in->readLegacyHorizontalFacing()) - ->setHead($in->readBool(StateNames::HEAD_PIECE_BIT)) - ->setOccupied($in->readBool(StateNames::OCCUPIED_BIT)); - }); - $this->map(Ids::BEDROCK, function(Reader $in) : Block{ - return Blocks::BEDROCK() - ->setBurnsForever($in->readBool(StateNames::INFINIBURN_BIT)); - }); - $this->map(Ids::BEETROOT, fn(Reader $in) => Helper::decodeCrops(Blocks::BEETROOTS(), $in)); - $this->map(Ids::BELL, function(Reader $in) : Block{ - $in->ignored(StateNames::TOGGLE_BIT); //only useful at runtime - return Blocks::BELL() - ->setFacing($in->readLegacyHorizontalFacing()) - ->setAttachmentType($in->readBellAttachmentType()); - }); - $this->map(Ids::BIRCH_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::BIRCH_BUTTON(), $in)); - $this->map(Ids::BIRCH_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::BIRCH_DOOR(), $in)); - $this->map(Ids::BIRCH_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::BIRCH_FENCE_GATE(), $in)); - $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::BIRCH_PRESSURE_PLATE(), $in)); - $this->mapStairs(Ids::BIRCH_STAIRS, fn() => Blocks::BIRCH_STAIRS()); - $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); - $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); - $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); $this->map(Ids::BLACKSTONE, fn() => Blocks::BLACKSTONE()); - $this->mapSlab(Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::BLACKSTONE_SLAB()); - $this->mapStairs(Ids::BLACKSTONE_STAIRS, fn() => Blocks::BLACKSTONE_STAIRS()); - $this->map(Ids::BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::BLACKSTONE_WALL(), $in)); - $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); - $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ - return Blocks::BLAST_FURNACE() - ->setFacing($in->readHorizontalFacing()) - ->setLit(false); - }); - $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); $this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); - $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ - $in->ignored(StateNames::DEPRECATED); - return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); - }); $this->map(Ids::BOOKSHELF, fn() => Blocks::BOOKSHELF()); - $this->map(Ids::BREWING_STAND, function(Reader $in) : Block{ - return Blocks::BREWING_STAND() - ->setSlot(BrewingStandSlot::EAST(), $in->readBool(StateNames::BREWING_STAND_SLOT_A_BIT)) - ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_B_BIT)) - ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT)); - }); $this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); - $this->mapStairs(Ids::BRICK_STAIRS, fn() => Blocks::BRICK_STAIRS()); - $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); $this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); - $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); - $this->map(Ids::CACTUS, function(Reader $in) : Block{ - return Blocks::CACTUS() - ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); - }); - $this->map(Ids::CAKE, function(Reader $in) : Block{ - return Blocks::CAKE() - ->setBites($in->readBoundedInt(StateNames::BITE_COUNTER, 0, 6)); - }); $this->map(Ids::CALCITE, fn() => Blocks::CALCITE()); - $this->map(Ids::CARPET, function(Reader $in) : Block{ - return Blocks::CARPET() - ->setColor($in->readColor()); - }); - $this->map(Ids::CARROTS, fn(Reader $in) => Helper::decodeCrops(Blocks::CARROTS(), $in)); $this->map(Ids::CARTOGRAPHY_TABLE, fn() => Blocks::CARTOGRAPHY_TABLE()); - $this->map(Ids::CARVED_PUMPKIN, function(Reader $in) : Block{ - return Blocks::CARVED_PUMPKIN() - ->setFacing($in->readLegacyHorizontalFacing()); - }); $this->map(Ids::CHEMICAL_HEAT, fn() => Blocks::CHEMICAL_HEAT()); - $this->map(Ids::CHEMISTRY_TABLE, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::CHEMISTRY_TABLE_TYPE)){ - StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => Blocks::COMPOUND_CREATOR(), - StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => Blocks::ELEMENT_CONSTRUCTOR(), - StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => Blocks::LAB_TABLE(), - StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => Blocks::MATERIAL_REDUCER(), - default => throw $in->badValueException(StateNames::CHEMISTRY_TABLE_TYPE, $type), - })->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); - }); - $this->map(Ids::CHEST, function(Reader $in) : Block{ - return Blocks::CHEST() - ->setFacing($in->readHorizontalFacing()); - }); $this->map(Ids::CHISELED_DEEPSLATE, fn() => Blocks::CHISELED_DEEPSLATE()); $this->map(Ids::CHISELED_NETHER_BRICKS, fn() => Blocks::CHISELED_NETHER_BRICKS()); $this->map(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); @@ -287,104 +157,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); $this->map(Ids::COBBLED_DEEPSLATE, fn() => Blocks::COBBLED_DEEPSLATE()); - $this->mapSlab(Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::COBBLED_DEEPSLATE_SLAB()); - $this->mapStairs(Ids::COBBLED_DEEPSLATE_STAIRS, fn() => Blocks::COBBLED_DEEPSLATE_STAIRS()); - $this->map(Ids::COBBLED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::COBBLED_DEEPSLATE_WALL(), $in)); $this->map(Ids::COBBLESTONE, fn() => Blocks::COBBLESTONE()); - $this->map(Ids::COBBLESTONE_WALL, fn(Reader $in) => Helper::mapLegacyWallType($in)); - $this->map(Ids::COCOA, function(Reader $in) : Block{ - return Blocks::COCOA_POD() - ->setAge($in->readBoundedInt(StateNames::AGE, 0, 2)) - ->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); - }); - $this->map(Ids::COLORED_TORCH_BP, function(Reader $in) : Block{ - return $in->readBool(StateNames::COLOR_BIT) ? - Blocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : - Blocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); - }); - $this->map(Ids::COLORED_TORCH_RG, function(Reader $in) : Block{ - return $in->readBool(StateNames::COLOR_BIT) ? - Blocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : - Blocks::RED_TORCH()->setFacing($in->readTorchFacing()); - }); - $this->map(Ids::CONCRETE, function(Reader $in) : Block{ - return Blocks::CONCRETE() - ->setColor($in->readColor()); - }); - $this->map(Ids::CONCRETE_POWDER, function(Reader $in) : Block{ - return Blocks::CONCRETE_POWDER() - ->setColor($in->readColor()); - }); - $this->map(Ids::COPPER_BLOCK, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::NONE())); - $this->map(Ids::CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::NONE())); - $this->mapSlab(Ids::CUT_COPPER_SLAB, Ids::DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::NONE())); - $this->mapStairs(Ids::CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::NONE())); $this->map(Ids::COPPER_ORE, fn() => Blocks::COPPER_ORE()); - $this->map(Ids::CORAL, function(Reader $in) : Block{ - return Blocks::CORAL() - ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(StateNames::DEAD_BIT)); - }); - $this->map(Ids::CORAL_BLOCK, function(Reader $in) : Block{ - return Blocks::CORAL_BLOCK() - ->setCoralType($in->readCoralType()) - ->setDead($in->readBool(StateNames::DEAD_BIT)); - }); - $this->map(Ids::CORAL_FAN, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) - ->setDead(false)); - $this->map(Ids::CORAL_FAN_DEAD, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) - ->setDead(true)); - $this->map(Ids::CORAL_FAN_HANG, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) - ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); - $this->map(Ids::CORAL_FAN_HANG2, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) - ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); - $this->map(Ids::CORAL_FAN_HANG3, function(Reader $in) : Block{ - $in->ignored(StateNames::CORAL_HANG_TYPE_BIT); //the game always writes this, even though it's not used - return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) - ->setCoralType(CoralType::HORN()); - }); $this->map(Ids::CRACKED_DEEPSLATE_BRICKS, fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); $this->map(Ids::CRACKED_DEEPSLATE_TILES, fn() => Blocks::CRACKED_DEEPSLATE_TILES()); $this->map(Ids::CRACKED_NETHER_BRICKS, fn() => Blocks::CRACKED_NETHER_BRICKS()); $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); - $this->map(Ids::CRIMSON_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::CRIMSON_BUTTON(), $in)); - $this->map(Ids::CRIMSON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::CRIMSON_DOOR(), $in)); - $this->mapSlab(Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB, fn() => Blocks::CRIMSON_SLAB()); $this->map(Ids::CRIMSON_FENCE, fn() => Blocks::CRIMSON_FENCE()); - $this->map(Ids::CRIMSON_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::CRIMSON_FENCE_GATE(), $in)); - $this->map(Ids::CRIMSON_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_HYPHAE(), false, $in)); $this->map(Ids::CRIMSON_PLANKS, fn() => Blocks::CRIMSON_PLANKS()); - $this->map(Ids::CRIMSON_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::CRIMSON_PRESSURE_PLATE(), $in)); - $this->mapStairs(Ids::CRIMSON_STAIRS, fn() => Blocks::CRIMSON_STAIRS()); - $this->map(Ids::CRIMSON_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::CRIMSON_SIGN(), $in)); - $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); - $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); - $this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in)); $this->map(Ids::CRYING_OBSIDIAN, fn() => Blocks::CRYING_OBSIDIAN()); - $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); - $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); - $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); - $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); - $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::DARK_OAK_PRESSURE_PLATE(), $in)); - $this->mapStairs(Ids::DARK_OAK_STAIRS, fn() => Blocks::DARK_OAK_STAIRS()); - $this->map(Ids::DARK_OAK_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::DARK_OAK_TRAPDOOR(), $in)); - $this->mapStairs(Ids::DARK_PRISMARINE_STAIRS, fn() => Blocks::DARK_PRISMARINE_STAIRS()); - $this->map(Ids::DARKOAK_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::DARK_OAK_SIGN(), $in)); - $this->map(Ids::DARKOAK_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::DARK_OAK_WALL_SIGN(), $in)); - $this->map(Ids::DAYLIGHT_DETECTOR, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) - ->setInverted(false)); - $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) - ->setInverted(true)); $this->map(Ids::DEADBUSH, fn() => Blocks::DEAD_BUSH()); - $this->map(Ids::DEEPSLATE, function(Reader $in) : Block{ - return Blocks::DEEPSLATE() - ->setAxis($in->readPillarAxis()); - }); $this->map(Ids::DEEPSLATE_BRICKS, fn() => Blocks::DEEPSLATE_BRICKS()); - $this->mapSlab(Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_BRICK_SLAB()); - $this->mapStairs(Ids::DEEPSLATE_BRICK_STAIRS, fn() => Blocks::DEEPSLATE_BRICK_STAIRS()); - $this->map(Ids::DEEPSLATE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_BRICK_WALL(), $in)); $this->map(Ids::DEEPSLATE_COAL_ORE, fn() => Blocks::DEEPSLATE_COAL_ORE()); $this->map(Ids::DEEPSLATE_COPPER_ORE, fn() => Blocks::DEEPSLATE_COPPER_ORE()); $this->map(Ids::DEEPSLATE_DIAMOND_ORE, fn() => Blocks::DEEPSLATE_DIAMOND_ORE()); @@ -392,58 +176,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::DEEPSLATE_GOLD_ORE, fn() => Blocks::DEEPSLATE_GOLD_ORE()); $this->map(Ids::DEEPSLATE_IRON_ORE, fn() => Blocks::DEEPSLATE_IRON_ORE()); $this->map(Ids::DEEPSLATE_LAPIS_ORE, fn() => Blocks::DEEPSLATE_LAPIS_LAZULI_ORE()); - $this->map(Ids::DEEPSLATE_REDSTONE_ORE, fn() => Blocks::DEEPSLATE_REDSTONE_ORE()->setLit(false)); $this->map(Ids::DEEPSLATE_TILES, fn() => Blocks::DEEPSLATE_TILES()); - $this->mapSlab(Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_TILE_SLAB()); - $this->mapStairs(Ids::DEEPSLATE_TILE_STAIRS, fn() => Blocks::DEEPSLATE_TILE_STAIRS()); - $this->map(Ids::DEEPSLATE_TILE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_TILE_WALL(), $in)); - $this->map(Ids::DETECTOR_RAIL, function(Reader $in) : Block{ - return Blocks::DETECTOR_RAIL() - ->setActivated($in->readBool(StateNames::RAIL_DATA_BIT)) - ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); - }); $this->map(Ids::DIAMOND_BLOCK, fn() => Blocks::DIAMOND()); $this->map(Ids::DIAMOND_ORE, fn() => Blocks::DIAMOND_ORE()); - $this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS()); - $this->map(Ids::DIRT, function(Reader $in) : Block{ - return Blocks::DIRT() - ->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){ - StringValues::DIRT_TYPE_NORMAL => false, - StringValues::DIRT_TYPE_COARSE => true, - default => throw $in->badValueException(StateNames::DIRT_TYPE, $value), - }); - }); - $this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){ - StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(), - StringValues::DOUBLE_PLANT_TYPE_GRASS => Blocks::DOUBLE_TALLGRASS(), - StringValues::DOUBLE_PLANT_TYPE_PAEONIA => Blocks::PEONY(), - StringValues::DOUBLE_PLANT_TYPE_ROSE => Blocks::ROSE_BUSH(), - StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => Blocks::SUNFLOWER(), - StringValues::DOUBLE_PLANT_TYPE_SYRINGA => Blocks::LILAC(), - default => throw $in->badValueException(StateNames::DOUBLE_PLANT_TYPE, $type), - })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB2, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB3, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB4, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_WOODEN_SLAB, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); - }); $this->map(Ids::DRAGON_EGG, fn() => Blocks::DRAGON_EGG()); $this->map(Ids::DRIED_KELP_BLOCK, fn() => Blocks::DRIED_KELP()); $this->map(Ids::ELEMENT_0, fn() => Blocks::ELEMENT_ZERO()); @@ -568,8 +303,355 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::EMERALD_BLOCK, fn() => Blocks::EMERALD()); $this->map(Ids::EMERALD_ORE, fn() => Blocks::EMERALD_ORE()); $this->map(Ids::ENCHANTING_TABLE, fn() => Blocks::ENCHANTING_TABLE()); - $this->mapStairs(Ids::END_BRICK_STAIRS, fn() => Blocks::END_STONE_BRICK_STAIRS()); $this->map(Ids::END_BRICKS, fn() => Blocks::END_STONE_BRICKS()); + $this->map(Ids::END_STONE, fn() => Blocks::END_STONE()); + $this->map(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); + $this->map(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); + $this->map(Ids::GLASS, fn() => Blocks::GLASS()); + $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); + $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); + $this->map(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); + $this->map(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); + $this->map(Ids::GOLD_ORE, fn() => Blocks::GOLD_ORE()); + $this->map(Ids::GRASS, fn() => Blocks::GRASS()); + $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); + $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); + $this->map(Ids::HANGING_ROOTS, fn() => Blocks::HANGING_ROOTS()); + $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); + $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); + $this->map(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); + $this->map(Ids::HONEYCOMB_BLOCK, fn() => Blocks::HONEYCOMB()); + $this->map(Ids::ICE, fn() => Blocks::ICE()); + $this->map(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); + $this->map(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); + $this->map(Ids::INVISIBLE_BEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); + $this->map(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); + $this->map(Ids::IRON_BLOCK, fn() => Blocks::IRON()); + $this->map(Ids::IRON_ORE, fn() => Blocks::IRON_ORE()); + $this->map(Ids::JUKEBOX, fn() => Blocks::JUKEBOX()); + $this->map(Ids::LAPIS_BLOCK, fn() => Blocks::LAPIS_LAZULI()); + $this->map(Ids::LAPIS_ORE, fn() => Blocks::LAPIS_LAZULI_ORE()); + $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); + $this->map(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); + $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); + $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); + $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); + $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); + $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); + $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); + $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); + $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); + $this->map(Ids::NETHER_GOLD_ORE, fn() => Blocks::NETHER_GOLD_ORE()); + $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); + $this->map(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE()); + $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); + $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); + $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); + $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); + $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); + $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); + $this->map(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); + $this->map(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); + $this->map(Ids::POLISHED_DEEPSLATE, fn() => Blocks::POLISHED_DEEPSLATE()); + $this->map(Ids::QUARTZ_BRICKS, fn() => Blocks::QUARTZ_BRICKS()); + $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); + $this->map(Ids::RAW_COPPER_BLOCK, fn() => Blocks::RAW_COPPER()); + $this->map(Ids::RAW_GOLD_BLOCK, fn() => Blocks::RAW_GOLD()); + $this->map(Ids::RAW_IRON_BLOCK, fn() => Blocks::RAW_IRON()); + $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); + $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); + $this->map(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); + $this->map(Ids::RESERVED6, fn() => Blocks::RESERVED6()); + $this->map(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); + $this->map(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); + $this->map(Ids::SLIME, fn() => Blocks::SLIME()); + $this->map(Ids::SMITHING_TABLE, fn() => Blocks::SMITHING_TABLE()); + $this->map(Ids::SMOOTH_BASALT, fn() => Blocks::SMOOTH_BASALT()); + $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); + $this->map(Ids::SNOW, fn() => Blocks::SNOW()); + $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); + $this->map(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); + $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); + $this->map(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); + $this->map(Ids::TUFF, fn() => Blocks::TUFF()); + $this->map(Ids::UNDYED_SHULKER_BOX, fn() => Blocks::SHULKER_BOX()); + $this->map(Ids::WARPED_FENCE, fn() => Blocks::WARPED_FENCE()); + $this->map(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); + $this->map(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); + $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); + $this->map(Ids::WEB, fn() => Blocks::COBWEB()); + $this->map(Ids::WITHER_ROSE, fn() => Blocks::WITHER_ROSE()); + $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); + } + + private function registerDeserializers() : void{ + $this->map(Ids::ACACIA_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::ACACIA_BUTTON(), $in)); + $this->map(Ids::ACACIA_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::ACACIA_DOOR(), $in)); + $this->map(Ids::ACACIA_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::ACACIA_FENCE_GATE(), $in)); + $this->map(Ids::ACACIA_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::ACACIA_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::ACACIA_STAIRS, fn() => Blocks::ACACIA_STAIRS()); + $this->map(Ids::ACACIA_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::ACACIA_SIGN(), $in)); + $this->map(Ids::ACACIA_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::ACACIA_TRAPDOOR(), $in)); + $this->map(Ids::ACACIA_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::ACACIA_WALL_SIGN(), $in)); + $this->map(Ids::ACTIVATOR_RAIL, function(Reader $in) : Block{ + return Blocks::ACTIVATOR_RAIL() + ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); + }); + $this->mapStairs(Ids::ANDESITE_STAIRS, fn() => Blocks::ANDESITE_STAIRS()); + $this->map(Ids::ANVIL, function(Reader $in) : Block{ + return Blocks::ANVIL() + ->setDamage(match($value = $in->readString(StateNames::DAMAGE)){ + StringValues::DAMAGE_UNDAMAGED => 0, + StringValues::DAMAGE_SLIGHTLY_DAMAGED => 1, + StringValues::DAMAGE_VERY_DAMAGED => 2, + StringValues::DAMAGE_BROKEN => 0, + default => throw $in->badValueException(StateNames::DAMAGE, $value), + }) + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::BAMBOO, function(Reader $in) : Block{ + return Blocks::BAMBOO() + ->setLeafSize(match($value = $in->readString(StateNames::BAMBOO_LEAF_SIZE)){ + StringValues::BAMBOO_LEAF_SIZE_NO_LEAVES => Bamboo::NO_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_SMALL_LEAVES => Bamboo::SMALL_LEAVES, + StringValues::BAMBOO_LEAF_SIZE_LARGE_LEAVES => Bamboo::LARGE_LEAVES, + default => throw $in->badValueException(StateNames::BAMBOO_LEAF_SIZE, $value), + }) + ->setReady($in->readBool(StateNames::AGE_BIT)) + ->setThick(match($value = $in->readString(StateNames::BAMBOO_STALK_THICKNESS)){ + StringValues::BAMBOO_STALK_THICKNESS_THIN => false, + StringValues::BAMBOO_STALK_THICKNESS_THICK => true, + default => throw $in->badValueException(StateNames::BAMBOO_STALK_THICKNESS, $value), + }); + }); + $this->map(Ids::BAMBOO_SAPLING, function(Reader $in) : Block{ + $in->ignored(StateNames::SAPLING_TYPE); //bug in MCPE + return Blocks::BAMBOO_SAPLING()->setReady($in->readBool(StateNames::AGE_BIT)); + }); + $this->map(Ids::BARREL, function(Reader $in) : Block{ + return Blocks::BARREL() + ->setFacing($in->readFacingDirection()) + ->setOpen($in->readBool(StateNames::OPEN_BIT)); + }); + $this->map(Ids::BASALT, function(Reader $in){ + return Blocks::BASALT() + ->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::BED, function(Reader $in) : Block{ + return Blocks::BED() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setHead($in->readBool(StateNames::HEAD_PIECE_BIT)) + ->setOccupied($in->readBool(StateNames::OCCUPIED_BIT)); + }); + $this->map(Ids::BEDROCK, function(Reader $in) : Block{ + return Blocks::BEDROCK() + ->setBurnsForever($in->readBool(StateNames::INFINIBURN_BIT)); + }); + $this->map(Ids::BEETROOT, fn(Reader $in) => Helper::decodeCrops(Blocks::BEETROOTS(), $in)); + $this->map(Ids::BELL, function(Reader $in) : Block{ + $in->ignored(StateNames::TOGGLE_BIT); //only useful at runtime + return Blocks::BELL() + ->setFacing($in->readLegacyHorizontalFacing()) + ->setAttachmentType($in->readBellAttachmentType()); + }); + $this->map(Ids::BIRCH_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::BIRCH_BUTTON(), $in)); + $this->map(Ids::BIRCH_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::BIRCH_DOOR(), $in)); + $this->map(Ids::BIRCH_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::BIRCH_FENCE_GATE(), $in)); + $this->map(Ids::BIRCH_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::BIRCH_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::BIRCH_STAIRS, fn() => Blocks::BIRCH_STAIRS()); + $this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in)); + $this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in)); + $this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in)); + $this->mapSlab(Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::BLACKSTONE_SLAB()); + $this->mapStairs(Ids::BLACKSTONE_STAIRS, fn() => Blocks::BLACKSTONE_STAIRS()); + $this->map(Ids::BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::BLACKSTONE_WALL(), $in)); + $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); + $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ + return Blocks::BLAST_FURNACE() + ->setFacing($in->readHorizontalFacing()) + ->setLit(false); + }); + $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); + $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ + $in->ignored(StateNames::DEPRECATED); + return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); + }); + $this->map(Ids::BREWING_STAND, function(Reader $in) : Block{ + return Blocks::BREWING_STAND() + ->setSlot(BrewingStandSlot::EAST(), $in->readBool(StateNames::BREWING_STAND_SLOT_A_BIT)) + ->setSlot(BrewingStandSlot::SOUTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_B_BIT)) + ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT)); + }); + $this->mapStairs(Ids::BRICK_STAIRS, fn() => Blocks::BRICK_STAIRS()); + $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); + $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); + $this->map(Ids::CACTUS, function(Reader $in) : Block{ + return Blocks::CACTUS() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); + }); + $this->map(Ids::CAKE, function(Reader $in) : Block{ + return Blocks::CAKE() + ->setBites($in->readBoundedInt(StateNames::BITE_COUNTER, 0, 6)); + }); + $this->map(Ids::CARPET, function(Reader $in) : Block{ + return Blocks::CARPET() + ->setColor($in->readColor()); + }); + $this->map(Ids::CARROTS, fn(Reader $in) => Helper::decodeCrops(Blocks::CARROTS(), $in)); + $this->map(Ids::CARVED_PUMPKIN, function(Reader $in) : Block{ + return Blocks::CARVED_PUMPKIN() + ->setFacing($in->readLegacyHorizontalFacing()); + }); + $this->map(Ids::CHEMISTRY_TABLE, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::CHEMISTRY_TABLE_TYPE)){ + StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => Blocks::COMPOUND_CREATOR(), + StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR => Blocks::ELEMENT_CONSTRUCTOR(), + StringValues::CHEMISTRY_TABLE_TYPE_LAB_TABLE => Blocks::LAB_TABLE(), + StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER => Blocks::MATERIAL_REDUCER(), + default => throw $in->badValueException(StateNames::CHEMISTRY_TABLE_TYPE, $type), + })->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); + }); + $this->map(Ids::CHEST, function(Reader $in) : Block{ + return Blocks::CHEST() + ->setFacing($in->readHorizontalFacing()); + }); + $this->mapSlab(Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::COBBLED_DEEPSLATE_SLAB()); + $this->mapStairs(Ids::COBBLED_DEEPSLATE_STAIRS, fn() => Blocks::COBBLED_DEEPSLATE_STAIRS()); + $this->map(Ids::COBBLED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::COBBLED_DEEPSLATE_WALL(), $in)); + $this->map(Ids::COBBLESTONE_WALL, fn(Reader $in) => Helper::mapLegacyWallType($in)); + $this->map(Ids::COCOA, function(Reader $in) : Block{ + return Blocks::COCOA_POD() + ->setAge($in->readBoundedInt(StateNames::AGE, 0, 2)) + ->setFacing(Facing::opposite($in->readLegacyHorizontalFacing())); + }); + $this->map(Ids::COLORED_TORCH_BP, function(Reader $in) : Block{ + return $in->readBool(StateNames::COLOR_BIT) ? + Blocks::PURPLE_TORCH()->setFacing($in->readTorchFacing()) : + Blocks::BLUE_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::COLORED_TORCH_RG, function(Reader $in) : Block{ + return $in->readBool(StateNames::COLOR_BIT) ? + Blocks::GREEN_TORCH()->setFacing($in->readTorchFacing()) : + Blocks::RED_TORCH()->setFacing($in->readTorchFacing()); + }); + $this->map(Ids::CONCRETE, function(Reader $in) : Block{ + return Blocks::CONCRETE() + ->setColor($in->readColor()); + }); + $this->map(Ids::CONCRETE_POWDER, function(Reader $in) : Block{ + return Blocks::CONCRETE_POWDER() + ->setColor($in->readColor()); + }); + $this->map(Ids::COPPER_BLOCK, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::NONE())); + $this->map(Ids::CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::NONE())); + $this->mapSlab(Ids::CUT_COPPER_SLAB, Ids::DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::NONE())); + $this->mapStairs(Ids::CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::NONE())); + $this->map(Ids::CORAL, function(Reader $in) : Block{ + return Blocks::CORAL() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(StateNames::DEAD_BIT)); + }); + $this->map(Ids::CORAL_BLOCK, function(Reader $in) : Block{ + return Blocks::CORAL_BLOCK() + ->setCoralType($in->readCoralType()) + ->setDead($in->readBool(StateNames::DEAD_BIT)); + }); + $this->map(Ids::CORAL_FAN, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) + ->setDead(false)); + $this->map(Ids::CORAL_FAN_DEAD, fn(Reader $in) => Helper::decodeFloorCoralFan(Blocks::CORAL_FAN(), $in) + ->setDead(true)); + $this->map(Ids::CORAL_FAN_HANG, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::BRAIN() : CoralType::TUBE())); + $this->map(Ids::CORAL_FAN_HANG2, fn(Reader $in) => Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType($in->readBool(StateNames::CORAL_HANG_TYPE_BIT) ? CoralType::FIRE() : CoralType::BUBBLE())); + $this->map(Ids::CORAL_FAN_HANG3, function(Reader $in) : Block{ + $in->ignored(StateNames::CORAL_HANG_TYPE_BIT); //the game always writes this, even though it's not used + return Helper::decodeWallCoralFan(Blocks::WALL_CORAL_FAN(), $in) + ->setCoralType(CoralType::HORN()); + }); + $this->map(Ids::CRIMSON_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::CRIMSON_BUTTON(), $in)); + $this->map(Ids::CRIMSON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::CRIMSON_DOOR(), $in)); + $this->mapSlab(Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB, fn() => Blocks::CRIMSON_SLAB()); + $this->map(Ids::CRIMSON_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::CRIMSON_FENCE_GATE(), $in)); + $this->map(Ids::CRIMSON_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_HYPHAE(), false, $in)); + $this->map(Ids::CRIMSON_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::CRIMSON_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::CRIMSON_STAIRS, fn() => Blocks::CRIMSON_STAIRS()); + $this->map(Ids::CRIMSON_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::CRIMSON_SIGN(), $in)); + $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); + $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); + $this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in)); + $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); + $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); + $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); + $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); + $this->map(Ids::DARK_OAK_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::DARK_OAK_PRESSURE_PLATE(), $in)); + $this->mapStairs(Ids::DARK_OAK_STAIRS, fn() => Blocks::DARK_OAK_STAIRS()); + $this->map(Ids::DARK_OAK_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::DARK_OAK_TRAPDOOR(), $in)); + $this->mapStairs(Ids::DARK_PRISMARINE_STAIRS, fn() => Blocks::DARK_PRISMARINE_STAIRS()); + $this->map(Ids::DARKOAK_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::DARK_OAK_SIGN(), $in)); + $this->map(Ids::DARKOAK_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::DARK_OAK_WALL_SIGN(), $in)); + $this->map(Ids::DAYLIGHT_DETECTOR, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) + ->setInverted(false)); + $this->map(Ids::DAYLIGHT_DETECTOR_INVERTED, fn(Reader $in) => Helper::decodeDaylightSensor(Blocks::DAYLIGHT_SENSOR(), $in) + ->setInverted(true)); + $this->map(Ids::DEEPSLATE, function(Reader $in) : Block{ + return Blocks::DEEPSLATE() + ->setAxis($in->readPillarAxis()); + }); + $this->mapSlab(Ids::DEEPSLATE_BRICK_SLAB, Ids::DEEPSLATE_BRICK_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_BRICK_SLAB()); + $this->mapStairs(Ids::DEEPSLATE_BRICK_STAIRS, fn() => Blocks::DEEPSLATE_BRICK_STAIRS()); + $this->map(Ids::DEEPSLATE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_BRICK_WALL(), $in)); + $this->map(Ids::DEEPSLATE_REDSTONE_ORE, fn() => Blocks::DEEPSLATE_REDSTONE_ORE()->setLit(false)); + $this->mapSlab(Ids::DEEPSLATE_TILE_SLAB, Ids::DEEPSLATE_TILE_DOUBLE_SLAB, fn() => Blocks::DEEPSLATE_TILE_SLAB()); + $this->mapStairs(Ids::DEEPSLATE_TILE_STAIRS, fn() => Blocks::DEEPSLATE_TILE_STAIRS()); + $this->map(Ids::DEEPSLATE_TILE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::DEEPSLATE_TILE_WALL(), $in)); + $this->map(Ids::DETECTOR_RAIL, function(Reader $in) : Block{ + return Blocks::DETECTOR_RAIL() + ->setActivated($in->readBool(StateNames::RAIL_DATA_BIT)) + ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); + }); + $this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS()); + $this->map(Ids::DIRT, function(Reader $in) : Block{ + return Blocks::DIRT() + ->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){ + StringValues::DIRT_TYPE_NORMAL => false, + StringValues::DIRT_TYPE_COARSE => true, + default => throw $in->badValueException(StateNames::DIRT_TYPE, $value), + }); + }); + $this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{ + return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){ + StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(), + StringValues::DOUBLE_PLANT_TYPE_GRASS => Blocks::DOUBLE_TALLGRASS(), + StringValues::DOUBLE_PLANT_TYPE_PAEONIA => Blocks::PEONY(), + StringValues::DOUBLE_PLANT_TYPE_ROSE => Blocks::ROSE_BUSH(), + StringValues::DOUBLE_PLANT_TYPE_SUNFLOWER => Blocks::SUNFLOWER(), + StringValues::DOUBLE_PLANT_TYPE_SYRINGA => Blocks::LILAC(), + default => throw $in->badValueException(StateNames::DOUBLE_PLANT_TYPE, $type), + })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); + }); + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs + return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB2, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs + return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB3, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs + return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB4, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs + return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->map(Ids::DOUBLE_WOODEN_SLAB, function(Reader $in) : Block{ + $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs + return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); + }); + $this->mapStairs(Ids::END_BRICK_STAIRS, fn() => Blocks::END_STONE_BRICK_STAIRS()); $this->map(Ids::END_PORTAL_FRAME, function(Reader $in) : Block{ return Blocks::END_PORTAL_FRAME() ->setEye($in->readBool(StateNames::END_PORTAL_EYE_BIT)) @@ -579,7 +661,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::END_ROD() ->setFacing($in->readEndRodFacingDirection()); }); - $this->map(Ids::END_STONE, fn() => Blocks::END_STONE()); $this->map(Ids::ENDER_CHEST, function(Reader $in) : Block{ return Blocks::ENDER_CHEST() ->setFacing($in->readHorizontalFacing()); @@ -608,7 +689,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::FIRE() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); - $this->map(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); $this->map(Ids::FLOWER_POT, function(Reader $in) : Block{ $in->ignored(StateNames::UPDATE_BIT); return Blocks::FLOWER_POT(); @@ -625,28 +705,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); - $this->map(Ids::GLASS, fn() => Blocks::GLASS()); - $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); $this->map(Ids::GLOW_FRAME, fn(Reader $in) => Helper::decodeItemFrame($in, true)); - $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); - $this->map(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); - $this->map(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); - $this->map(Ids::GOLD_ORE, fn() => Blocks::GOLD_ORE()); $this->map(Ids::GOLDEN_RAIL, function(Reader $in) : Block{ return Blocks::POWERED_RAIL() ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); $this->mapStairs(Ids::GRANITE_STAIRS, fn() => Blocks::GRANITE_STAIRS()); - $this->map(Ids::GRASS, fn() => Blocks::GRASS()); - $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); - $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); - $this->map(Ids::HANGING_ROOTS, fn() => Blocks::HANGING_ROOTS()); - $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); - $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); $this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{ return Blocks::STAINED_HARDENED_GLASS() ->setColor($in->readColor()); @@ -655,28 +722,18 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::STAINED_HARDENED_GLASS_PANE() ->setColor($in->readColor()); }); - $this->map(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); $this->map(Ids::HAY_BLOCK, function(Reader $in) : Block{ $in->ignored(StateNames::DEPRECATED); return Blocks::HAY_BALE()->setAxis($in->readPillarAxis()); }); $this->map(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), $in)); - $this->map(Ids::HONEYCOMB_BLOCK, fn() => Blocks::HONEYCOMB()); $this->map(Ids::HOPPER, function(Reader $in) : Block{ return Blocks::HOPPER() ->setFacing($in->readFacingWithoutUp()) ->setPowered($in->readBool(StateNames::TOGGLE_BIT)); }); - $this->map(Ids::ICE, fn() => Blocks::ICE()); - $this->map(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); - $this->map(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); - $this->map(Ids::INVISIBLE_BEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); - $this->map(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); - $this->map(Ids::IRON_BLOCK, fn() => Blocks::IRON()); $this->map(Ids::IRON_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::IRON_DOOR(), $in)); - $this->map(Ids::IRON_ORE, fn() => Blocks::IRON_ORE()); $this->map(Ids::IRON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::IRON_TRAPDOOR(), $in)); - $this->map(Ids::JUKEBOX, fn() => Blocks::JUKEBOX()); $this->map(Ids::JUNGLE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::JUNGLE_BUTTON(), $in)); $this->map(Ids::JUNGLE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::JUNGLE_DOOR(), $in)); $this->map(Ids::JUNGLE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::JUNGLE_FENCE_GATE(), $in)); @@ -693,8 +750,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::LANTERN() ->setHanging($in->readBool(StateNames::HANGING)); }); - $this->map(Ids::LAPIS_BLOCK, fn() => Blocks::LAPIS_LAZULI()); - $this->map(Ids::LAPIS_ORE, fn() => Blocks::LAPIS_LAZULI_ORE()); $this->map(Ids::LAVA, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::LAVA(), $in)); $this->map(Ids::LEAVES, function(Reader $in) : Block{ return (match($type = $in->readString(StateNames::OLD_LEAF_TYPE)){ @@ -792,14 +847,11 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readLegacyHorizontalFacing()); }); $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); - $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); $this->map(Ids::MANGROVE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::MANGROVE_BUTTON(), $in)); $this->map(Ids::MANGROVE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::MANGROVE_DOOR(), $in)); $this->mapSlab(Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB, fn() => Blocks::MANGROVE_SLAB()); - $this->map(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); $this->map(Ids::MANGROVE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::MANGROVE_FENCE_GATE(), $in)); $this->map(Ids::MANGROVE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_LOG(), false, $in)); - $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); $this->map(Ids::MANGROVE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::MANGROVE_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::MANGROVE_STAIRS, fn() => Blocks::MANGROVE_STAIRS()); $this->map(Ids::MANGROVE_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::MANGROVE_SIGN(), $in)); @@ -809,9 +861,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $in->ignored(StateNames::STRIPPED_BIT); //this is also ignored by vanilla return Helper::decodeLog(Blocks::MANGROVE_WOOD(), false, $in); }); - $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); $this->map(Ids::MELON_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::MELON_STEM(), $in)); - $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); $this->map(Ids::MONSTER_EGG, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::MONSTER_EGG_STONE_TYPE)){ StringValues::MONSTER_EGG_STONE_TYPE_CHISELED_STONE_BRICK => Blocks::INFESTED_CHISELED_STONE_BRICK(), @@ -823,36 +873,23 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::MONSTER_EGG_STONE_TYPE, $type), }; }); - $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); $this->mapStairs(Ids::MOSSY_COBBLESTONE_STAIRS, fn() => Blocks::MOSSY_COBBLESTONE_STAIRS()); $this->mapStairs(Ids::MOSSY_STONE_BRICK_STAIRS, fn() => Blocks::MOSSY_STONE_BRICK_STAIRS()); - $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); $this->mapSlab(Ids::MUD_BRICK_SLAB, Ids::MUD_BRICK_DOUBLE_SLAB, fn() => Blocks::MUD_BRICK_SLAB()); $this->mapStairs(Ids::MUD_BRICK_STAIRS, fn() => Blocks::MUD_BRICK_STAIRS()); $this->map(Ids::MUD_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::MUD_BRICK_WALL(), $in)); - $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); - $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); - $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); $this->mapStairs(Ids::NETHER_BRICK_STAIRS, fn() => Blocks::NETHER_BRICK_STAIRS()); - $this->map(Ids::NETHER_GOLD_ORE, fn() => Blocks::NETHER_GOLD_ORE()); $this->map(Ids::NETHER_WART, function(Reader $in) : Block{ return Blocks::NETHER_WART() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); }); - $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); - $this->map(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE()); - $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); - $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); $this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS()); - $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); $this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS()); - $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); $this->map(Ids::OXIDIZED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED())); $this->map(Ids::OXIDIZED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED())); $this->mapSlab(Ids::OXIDIZED_CUT_COPPER_SLAB, Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED())); $this->mapStairs(Ids::OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED())); - $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); $this->map(Ids::PLANKS, function(Reader $in) : Block{ return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ @@ -865,23 +902,19 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodName), }; }); - $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); $this->mapStairs(Ids::POLISHED_ANDESITE_STAIRS, fn() => Blocks::POLISHED_ANDESITE_STAIRS()); $this->map(Ids::POLISHED_BASALT, function(Reader $in) : Block{ return Blocks::POLISHED_BASALT() ->setAxis($in->readPillarAxis()); }); - $this->map(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); $this->map(Ids::POLISHED_BLACKSTONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::POLISHED_BLACKSTONE_BUTTON(), $in)); $this->mapSlab(Ids::POLISHED_BLACKSTONE_SLAB, Ids::POLISHED_BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::POLISHED_BLACKSTONE_SLAB()); $this->map(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::POLISHED_BLACKSTONE_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::POLISHED_BLACKSTONE_STAIRS, fn() => Blocks::POLISHED_BLACKSTONE_STAIRS()); $this->map(Ids::POLISHED_BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_BLACKSTONE_WALL(), $in)); - $this->map(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); $this->mapSlab(Ids::POLISHED_BLACKSTONE_BRICK_SLAB, Ids::POLISHED_BLACKSTONE_BRICK_DOUBLE_SLAB, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_SLAB()); $this->mapStairs(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS, fn() => Blocks::POLISHED_BLACKSTONE_BRICK_STAIRS()); $this->map(Ids::POLISHED_BLACKSTONE_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_BLACKSTONE_BRICK_WALL(), $in)); - $this->map(Ids::POLISHED_DEEPSLATE, fn() => Blocks::POLISHED_DEEPSLATE()); $this->mapSlab(Ids::POLISHED_DEEPSLATE_SLAB, Ids::POLISHED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::POLISHED_DEEPSLATE_SLAB()); $this->mapStairs(Ids::POLISHED_DEEPSLATE_STAIRS, fn() => Blocks::POLISHED_DEEPSLATE_STAIRS()); $this->map(Ids::POLISHED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::POLISHED_DEEPSLATE_WALL(), $in)); @@ -947,16 +980,11 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return throw $in->badValueException(StateNames::CHISEL_TYPE, $type); } }); - $this->map(Ids::QUARTZ_BRICKS, fn() => Blocks::QUARTZ_BRICKS()); - $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); $this->mapStairs(Ids::QUARTZ_STAIRS, fn() => Blocks::QUARTZ_STAIRS()); $this->map(Ids::RAIL, function(Reader $in) : Block{ return Blocks::RAIL() ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 9)); }); - $this->map(Ids::RAW_COPPER_BLOCK, fn() => Blocks::RAW_COPPER()); - $this->map(Ids::RAW_GOLD_BLOCK, fn() => Blocks::RAW_GOLD()); - $this->map(Ids::RAW_IRON_BLOCK, fn() => Blocks::RAW_IRON()); $this->map(Ids::RED_FLOWER, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::FLOWER_TYPE)){ StringValues::FLOWER_TYPE_ALLIUM => Blocks::ALLIUM(), @@ -974,9 +1002,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; }); $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); - $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); $this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in)); - $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); $this->mapStairs(Ids::RED_NETHER_BRICK_STAIRS, fn() => Blocks::RED_NETHER_BRICK_STAIRS()); $this->map(Ids::RED_SANDSTONE, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::SAND_STONE_TYPE)){ @@ -988,7 +1014,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }; }); $this->mapStairs(Ids::RED_SANDSTONE_STAIRS, fn() => Blocks::RED_SANDSTONE_STAIRS()); - $this->map(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); $this->map(Ids::REDSTONE_LAMP, function() : Block{ return Blocks::REDSTONE_LAMP() ->setPowered(false); @@ -1010,7 +1035,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::SUGARCANE() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 15)); }); - $this->map(Ids::RESERVED6, fn() => Blocks::RESERVED6()); $this->map(Ids::SAND, function(Reader $in) : Block{ return match($value = $in->readString(StateNames::SAND_TYPE)){ StringValues::SAND_TYPE_NORMAL => Blocks::SAND(), @@ -1040,13 +1064,11 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }) ->setReady($in->readBool(StateNames::AGE_BIT)); }); - $this->map(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); $this->map(Ids::SEA_PICKLE, function(Reader $in) : Block{ return Blocks::SEA_PICKLE() ->setCount($in->readBoundedInt(StateNames::CLUSTER_COUNT, 0, 3) + 1) ->setUnderwater(!$in->readBool(StateNames::DEAD_BIT)); }); - $this->map(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); $this->map(Ids::SHULKER_BOX, function(Reader $in) : Block{ return Blocks::DYED_SHULKER_BOX() ->setColor($in->readColor()); @@ -1056,19 +1078,14 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::MOB_HEAD() ->setFacing($in->readFacingWithoutDown()); }); - $this->map(Ids::SLIME, fn() => Blocks::SLIME()); - $this->map(Ids::SMITHING_TABLE, fn() => Blocks::SMITHING_TABLE()); $this->map(Ids::SMOKER, function(Reader $in) : Block{ return Blocks::SMOKER() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::SMOOTH_BASALT, fn() => Blocks::SMOOTH_BASALT()); $this->mapStairs(Ids::SMOOTH_QUARTZ_STAIRS, fn() => Blocks::SMOOTH_QUARTZ_STAIRS()); $this->mapStairs(Ids::SMOOTH_RED_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_RED_SANDSTONE_STAIRS()); $this->mapStairs(Ids::SMOOTH_SANDSTONE_STAIRS, fn() => Blocks::SMOOTH_SANDSTONE_STAIRS()); - $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); - $this->map(Ids::SNOW, fn() => Blocks::SNOW()); $this->map(Ids::SNOW_LAYER, function(Reader $in) : Block{ $in->ignored(StateNames::COVERED_BIT); //seems to be useless return Blocks::SNOW_LAYER()->setLayers($in->readBoundedInt(StateNames::HEIGHT, 0, 7) + 1); @@ -1081,8 +1098,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::SOUL_LANTERN() ->setHanging($in->readBool(StateNames::HANGING)); }); - $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); - $this->map(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); $this->map(Ids::SOUL_TORCH, function(Reader $in) : Block{ return Blocks::SOUL_TORCH() ->setFacing($in->readTorchFacing()); @@ -1149,7 +1164,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::STONE_BRICK_TYPE, $type), }; }); - $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); $this->map(Ids::STONECUTTER_BLOCK, function(Reader $in) : Block{ return Blocks::STONECUTTER() ->setFacing($in->readHorizontalFacing()); @@ -1179,7 +1193,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize default => throw $in->badValueException(StateNames::TALL_GRASS_TYPE, $type), }; }); - $this->map(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); $this->map(Ids::TNT, function(Reader $in) : Block{ return Blocks::TNT() ->setUnstable($in->readBool(StateNames::EXPLODE_BIT)) @@ -1207,12 +1220,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize ->setFacing($in->readLegacyHorizontalFacing()) ->setPowered($in->readBool(StateNames::POWERED_BIT)); }); - $this->map(Ids::TUFF, fn() => Blocks::TUFF()); $this->map(Ids::UNDERWATER_TORCH, function(Reader $in) : Block{ return Blocks::UNDERWATER_TORCH() ->setFacing($in->readTorchFacing()); }); - $this->map(Ids::UNDYED_SHULKER_BOX, fn() => Blocks::SHULKER_BOX()); $this->map(Ids::UNLIT_REDSTONE_TORCH, function(Reader $in) : Block{ return Blocks::REDSTONE_TORCH() ->setFacing($in->readTorchFacing()) @@ -1237,19 +1248,15 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WARPED_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::WARPED_BUTTON(), $in)); $this->map(Ids::WARPED_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::WARPED_DOOR(), $in)); $this->mapSlab(Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB, fn() => Blocks::WARPED_SLAB()); - $this->map(Ids::WARPED_FENCE, fn() => Blocks::WARPED_FENCE()); $this->map(Ids::WARPED_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::WARPED_FENCE_GATE(), $in)); $this->map(Ids::WARPED_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_HYPHAE(), false, $in)); - $this->map(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); $this->map(Ids::WARPED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::WARPED_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::WARPED_STAIRS, fn() => Blocks::WARPED_STAIRS()); $this->map(Ids::WARPED_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::WARPED_SIGN(), $in)); $this->map(Ids::WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), false, $in)); $this->map(Ids::WARPED_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::WARPED_TRAPDOOR(), $in)); $this->map(Ids::WARPED_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::WARPED_WALL_SIGN(), $in)); - $this->map(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); $this->map(Ids::WATER, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::WATER(), $in)); - $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); $this->map(Ids::WAXED_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::COPPER(), CopperOxidation::NONE())); $this->map(Ids::WAXED_CUT_COPPER, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER(), CopperOxidation::NONE())); $this->mapSlab(Ids::WAXED_CUT_COPPER_SLAB, Ids::WAXED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeWaxedCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::NONE())); @@ -1270,10 +1277,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::WEATHERED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::WEATHERED())); $this->mapSlab(Ids::WEATHERED_CUT_COPPER_SLAB, Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::WEATHERED())); $this->mapStairs(Ids::WEATHERED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::WEATHERED())); - $this->map(Ids::WEB, fn() => Blocks::COBWEB()); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); - $this->map(Ids::WITHER_ROSE, fn() => Blocks::WITHER_ROSE()); $this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), @@ -1291,7 +1296,6 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::WOOL() ->setColor($in->readColor()); }); - $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); } From afaf9dbc88591e48dbfcf62ec7d76099ea6e6105 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 15:32:08 +0100 Subject: [PATCH 354/692] Rename LegacyBlockStateMapper -> BlockIdMetaUpgrader this more accurately describes what it's used for. --- src/data/bedrock/block/upgrade/BlockDataUpgrader.php | 2 +- .../{LegacyBlockStateMapper.php => BlockIdMetaUpgrader.php} | 2 +- src/world/format/io/GlobalBlockStateHandlers.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/data/bedrock/block/upgrade/{LegacyBlockStateMapper.php => BlockIdMetaUpgrader.php} (98%) diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index 785a36af8..3fae1d241 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -30,7 +30,7 @@ use pocketmine\nbt\tag\CompoundTag; final class BlockDataUpgrader{ public function __construct( - private LegacyBlockStateMapper $legacyBlockStateMapper, + private BlockIdMetaUpgrader $legacyBlockStateMapper, private BlockStateUpgrader $blockStateUpgrader ){} diff --git a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php similarity index 98% rename from src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php rename to src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php index 3b32ef15a..3bb63a623 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockStateMapper.php +++ b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php @@ -30,7 +30,7 @@ use pocketmine\utils\BinaryStream; /** * Handles translating legacy 1.12 block ID/meta into modern blockstates. */ -final class LegacyBlockStateMapper{ +final class BlockIdMetaUpgrader{ /** * @param BlockStateData[][] $mappingTable * @phpstan-param array> $mappingTable diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 4cbf645d6..2ba979a66 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -31,10 +31,10 @@ use pocketmine\data\bedrock\block\CachingBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockStateToBlockObjectDeserializer; use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; +use pocketmine\data\bedrock\block\upgrade\BlockIdMetaUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; -use pocketmine\data\bedrock\block\upgrade\LegacyBlockStateMapper; use pocketmine\errorhandler\ErrorToExceptionHandler; use Webmozart\PathUtil\Path; use function file_get_contents; @@ -69,7 +69,7 @@ final class GlobalBlockStateHandlers{ BlockStateData::CURRENT_VERSION )); self::$blockDataUpgrader = new BlockDataUpgrader( - LegacyBlockStateMapper::loadFromString( + BlockIdMetaUpgrader::loadFromString( ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, '1.12.0_to_1.18.10_blockstate_map.bin' From b36b65927c4e0e380a638adfaf0c3021eb333e67 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 16:02:35 +0100 Subject: [PATCH 355/692] BlockDataUpgrader: expose BlockIdMetaUpgrader via getter --- src/data/bedrock/block/upgrade/BlockDataUpgrader.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index 3fae1d241..e27469ac2 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -30,16 +30,16 @@ use pocketmine\nbt\tag\CompoundTag; final class BlockDataUpgrader{ public function __construct( - private BlockIdMetaUpgrader $legacyBlockStateMapper, + private BlockIdMetaUpgrader $blockIdMetaUpgrader, private BlockStateUpgrader $blockStateUpgrader ){} public function upgradeIntIdMeta(int $id, int $meta) : ?BlockStateData{ - return $this->legacyBlockStateMapper->fromIntIdMeta($id, $meta); + return $this->blockIdMetaUpgrader->fromIntIdMeta($id, $meta); } public function upgradeStringIdMeta(string $id, int $meta) : ?BlockStateData{ - return $this->legacyBlockStateMapper->fromStringIdMeta($id, $meta); + return $this->blockIdMetaUpgrader->fromStringIdMeta($id, $meta); } public function upgradeBlockStateNbt(CompoundTag $tag) : ?BlockStateData{ @@ -62,4 +62,6 @@ final class BlockDataUpgrader{ } public function getBlockStateUpgrader() : BlockStateUpgrader{ return $this->blockStateUpgrader; } + + public function getBlockIdMetaUpgrader() : BlockIdMetaUpgrader{ return $this->blockIdMetaUpgrader; } } From 9a8902d1fe26d492346c9e9a50ab99dd28e5d5fd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 16:08:05 +0100 Subject: [PATCH 356/692] LegacyToStringMap: don't throw if the existing mapping is the same as the one we want to register this was making it inconvenient for plugins to use BlockIdMetaUpgrader->addMapping(), because the block legacy ID map contains IDs up to 1.16, but the table of mapped 1.12 blockstates only goes up to ... well ... 1.12. This left a gap of several versions' blocks unable to be mapped. --- src/data/bedrock/LegacyToStringIdMap.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/bedrock/LegacyToStringIdMap.php b/src/data/bedrock/LegacyToStringIdMap.php index d808b35df..e5181e193 100644 --- a/src/data/bedrock/LegacyToStringIdMap.php +++ b/src/data/bedrock/LegacyToStringIdMap.php @@ -66,6 +66,9 @@ abstract class LegacyToStringIdMap{ public function add(string $string, int $legacy) : void{ if(isset($this->legacyToString[$legacy])){ + if($this->legacyToString[$legacy] === $string){ + return; + } throw new \InvalidArgumentException("Legacy ID $legacy is already mapped to string " . $this->legacyToString[$legacy]); } $this->legacyToString[$legacy] = $string; From f64e306fb8f94d577178ee16c1e6df79eb599308 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 16:21:27 +0100 Subject: [PATCH 357/692] Make BlockIdMetaUpgrader API less dumb the old impl prevented registering more than one meta -> state mapping since the legacy numeric ID map would throw an exception if attempting to map the same ID more than once. --- .../bedrock/block/upgrade/BlockIdMetaUpgrader.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php index 3bb63a623..ef8267295 100644 --- a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php @@ -52,16 +52,23 @@ final class BlockIdMetaUpgrader{ return $this->fromStringIdMeta($stringId, $meta); } + /** + * Adds a mapping of legacy block numeric ID to modern string ID. This is used for upgrading blocks from pre-1.2.13 + * worlds (PM3). It's also needed for upgrading flower pot contents and falling blocks from PM4 worlds. + */ + public function addIntIdToStringIdMapping(int $intId, string $stringId) : void{ + $this->legacyNumericIdMap->add($stringId, $intId); + } + /** * Adds a mapping of legacy block ID and meta to modern blockstate data. This may be needed for upgrading data from * stored custom blocks from older versions of PocketMine-MP. */ - public function addMapping(string $stringId, int $intId, int $meta, BlockStateData $stateData) : void{ + public function addIdMetaToStateMapping(string $stringId, int $meta, BlockStateData $stateData) : void{ if(isset($this->mappingTable[$stringId][$meta])){ throw new \InvalidArgumentException("A mapping for $stringId:$meta already exists"); } $this->mappingTable[$stringId][$meta] = $stateData; - $this->legacyNumericIdMap->add($stringId, $intId); } public static function loadFromString(string $data, LegacyBlockIdToStringIdMap $idMap, BlockStateUpgrader $blockStateUpgrader) : self{ From 87b840ff97fc604869eacb1f3897e76c812beab6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 17:47:41 +0100 Subject: [PATCH 358/692] Added a hack to allow tiles to trigger client-side render updates on blocks without actually changing the block Bedrock block entity updates don't directly trigger block rendering updates. This is a problem when the block entity data affects the block's appearance directly (e.g. cauldron water colour, flower pot contents), because it means changing them won't directly result in a client-side render update. This hack allows tiles to spoof block updates without actually changing the server-side block, keeping the internals and API clean of random shitbox workarounds. fixes #5174 fixes #4944 --- src/block/tile/FlowerPot.php | 6 ++++++ src/block/tile/Spawnable.php | 20 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 2 +- src/world/World.php | 18 ++++++++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index e778d0774..9ef15053a 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -27,7 +27,9 @@ use pocketmine\block\Air; use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\SavedDataLoadingException; +use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ShortTag; @@ -92,4 +94,8 @@ class FlowerPot extends Spawnable{ $nbt->setTag(self::TAG_PLANT_BLOCK, RuntimeBlockMapping::getInstance()->toStateData($this->plant->getStateId())->toNbt()); } } + + public function getRenderUpdateBugWorkaroundStateProperties(Block $block) : array{ + return [BlockStateNames::UPDATE_BIT => new ByteTag(1)]; + } } diff --git a/src/block/tile/Spawnable.php b/src/block/tile/Spawnable.php index 73ad2142a..67bc72fd9 100644 --- a/src/block/tile/Spawnable.php +++ b/src/block/tile/Spawnable.php @@ -23,7 +23,11 @@ declare(strict_types=1); namespace pocketmine\block\tile; +use pocketmine\block\Block; +use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\nbt\tag\IntTag; +use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\protocol\types\CacheableNbt; use function get_class; @@ -49,6 +53,22 @@ abstract class Spawnable extends Tile{ $this->spawnCompoundCache = null; } + /** + * The Bedrock client won't re-render a block if the block's state properties didn't change. This is a problem when + * the tile may affect the block's appearance. For example, a cauldron's liquid changes colour based on the dye + * inside. + * + * This is worked around in vanilla by modifying one of the block's state properties to a different value, and then + * changing it back again. Since we don't want to litter core implementation with hacks like this, we brush it under + * the rug into Tile. + * + * @return ByteTag[]|IntTag[]|StringTag[] + * @phpstan-return array + */ + public function getRenderUpdateBugWorkaroundStateProperties(Block $block) : array{ + return []; + } + /** * Returns encoded NBT (varint, little-endian) used to spawn this tile to clients. Uses cache where possible, * populates cache if it is null. diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 553f84ff0..26958f598 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -907,7 +907,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::FLOWER_POT(), function() : Writer{ return Writer::create(Ids::FLOWER_POT) - ->writeBool(StateNames::UPDATE_BIT, true); //to keep MCPE happy + ->writeBool(StateNames::UPDATE_BIT, false); //to keep MCPE happy }); $this->map(Blocks::FROSTED_ICE(), function(FrostedIce $block) : Writer{ return Writer::create(Ids::FROSTED_ICE) diff --git a/src/world/World.php b/src/world/World.php index 7d5366b0b..870478992 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -36,6 +36,7 @@ use pocketmine\block\tile\TileFactory; use pocketmine\block\UnknownBlock; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\BiomeIds; +use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\EntityFactory; @@ -948,6 +949,22 @@ class World implements ChunkManager{ $fullBlock = $this->getBlockAt($b->x, $b->y, $b->z); $blockPosition = BlockPosition::fromVector3($b); + + $tile = $this->getTileAt($b->x, $b->y, $b->z); + if($tile instanceof Spawnable && ($fakeStateProperties = $tile->getRenderUpdateBugWorkaroundStateProperties($fullBlock)) !== null){ + $originalStateData = $blockMapping->toStateData($fullBlock->getStateId()); + $fakeStateData = new BlockStateData( + $originalStateData->getName(), + array_merge($originalStateData->getStates(), $fakeStateProperties), + $originalStateData->getVersion() + ); + $packets[] = UpdateBlockPacket::create( + $blockPosition, + $blockMapping->getBlockStateDictionary()->lookupStateIdFromData($fakeStateData) ?? throw new AssumptionFailedError("Unmapped fake blockstate data: " . $fakeStateData->toNbt()), + UpdateBlockPacket::FLAG_NETWORK, + UpdateBlockPacket::DATA_LAYER_NORMAL + ); + } $packets[] = UpdateBlockPacket::create( $blockPosition, $blockMapping->toRuntimeId($fullBlock->getStateId()), @@ -955,7 +972,6 @@ class World implements ChunkManager{ UpdateBlockPacket::DATA_LAYER_NORMAL ); - $tile = $this->getTileAt($b->x, $b->y, $b->z); if($tile instanceof Spawnable){ $packets[] = BlockActorDataPacket::create($blockPosition, $tile->getSerializedSpawnCompound()); } From eccfb3bbe21a1fc3c4b2fde77fc8bb4de0066980 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 17:59:53 +0100 Subject: [PATCH 359/692] World: fix borked check --- src/world/World.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/World.php b/src/world/World.php index 870478992..68ea37fa0 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -951,7 +951,7 @@ class World implements ChunkManager{ $blockPosition = BlockPosition::fromVector3($b); $tile = $this->getTileAt($b->x, $b->y, $b->z); - if($tile instanceof Spawnable && ($fakeStateProperties = $tile->getRenderUpdateBugWorkaroundStateProperties($fullBlock)) !== null){ + if($tile instanceof Spawnable && count($fakeStateProperties = $tile->getRenderUpdateBugWorkaroundStateProperties($fullBlock)) > 0){ $originalStateData = $blockMapping->toStateData($fullBlock->getStateId()); $fakeStateData = new BlockStateData( $originalStateData->getName(), From fa201b081c44bf767dc89fabdf9ec4282252d6c8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 19 Jul 2022 20:28:09 +0100 Subject: [PATCH 360/692] Added spore blossoms I got tired of the flood of warning messages every time someone joined the dev server... --- src/block/BlockTypeIds.php | 3 +- src/block/SporeBlossom.php | 56 +++++++++++++++++++ src/block/VanillaBlocks.php | 6 ++ src/block/tile/SporeBlossom.php | 46 +++++++++++++++ src/block/tile/TileFactory.php | 1 + .../BlockObjectToBlockStateSerializer.php | 1 + .../BlockStateToBlockObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + .../block_factory_consistency_check.json | 2 +- 9 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 src/block/SporeBlossom.php create mode 100644 src/block/tile/SporeBlossom.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 8ef7a2ee2..27fc92bd5 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -693,6 +693,7 @@ final class BlockTypeIds{ public const CARTOGRAPHY_TABLE = 10666; public const SMITHING_TABLE = 10667; public const NETHERITE = 10668; + public const SPORE_BLOSSOM = 10669; - public const FIRST_UNUSED_BLOCK_ID = 10669; + public const FIRST_UNUSED_BLOCK_ID = 10670; } diff --git a/src/block/SporeBlossom.php b/src/block/SporeBlossom.php new file mode 100644 index 000000000..83f9723c8 --- /dev/null +++ b/src/block/SporeBlossom.php @@ -0,0 +1,56 @@ +getSupportType(Facing::DOWN)->equals(SupportType::FULL()); + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canBeSupportedBy($blockReplace->getSide(Facing::UP))){ + return false; + } + + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedBy($this->getSide(Facing::UP))){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function getDropsForCompatibleTool(Item $item) : array{ + return []; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index c3a76bbeb..679e51553 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -636,6 +636,7 @@ use function mb_strtolower; * @method static Opaque SOUL_SOIL() * @method static Torch SOUL_TORCH() * @method static Sponge SPONGE() + * @method static SporeBlossom SPORE_BLOSSOM() * @method static WoodenButton SPRUCE_BUTTON() * @method static WoodenDoor SPRUCE_DOOR() * @method static WoodenFence SPRUCE_FENCE() @@ -1159,6 +1160,7 @@ final class VanillaBlocks{ self::registerBlocksR14(); self::registerBlocksR16(); self::registerBlocksR17(); + self::registerBlocksR18(); self::registerMudBlocks(); self::registerCraftingTables(); @@ -1498,6 +1500,10 @@ final class VanillaBlocks{ self::register("hanging_roots", new HangingRoots(new BID(Ids::HANGING_ROOTS), "Hanging Roots", BreakInfo::instant(ToolType::SHEARS, 1))); } + private static function registerBlocksR18() : void{ + self::register("spore_blossom", new SporeBlossom(new BID(Ids::SPORE_BLOSSOM), "Spore Blossom", BreakInfo::instant())); + } + private static function registerMudBlocks() : void{ $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); diff --git a/src/block/tile/SporeBlossom.php b/src/block/tile/SporeBlossom.php new file mode 100644 index 000000000..ba048ecb3 --- /dev/null +++ b/src/block/tile/SporeBlossom.php @@ -0,0 +1,46 @@ +register(ShulkerBox::class, ["ShulkerBox", "minecraft:shulker_box"]); $this->register(Sign::class, ["Sign", "minecraft:sign"]); $this->register(Smoker::class, ["Smoker", "minecraft:smoker"]); + $this->register(SporeBlossom::class, ["SporeBlossom", "minecraft:spore_blossom"]); $this->register(Skull::class, ["Skull", "minecraft:skull"]); //TODO: Campfire diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 26958f598..27b620ee0 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -532,6 +532,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::SNOW(), Ids::SNOW); $this->mapSimple(Blocks::SOUL_SAND(), Ids::SOUL_SAND); $this->mapSimple(Blocks::SOUL_SOIL(), Ids::SOUL_SOIL); + $this->mapSimple(Blocks::SPORE_BLOSSOM(), Ids::SPORE_BLOSSOM); $this->mapSimple(Blocks::TINTED_GLASS(), Ids::TINTED_GLASS); $this->mapSimple(Blocks::TUFF(), Ids::TUFF); $this->mapSimple(Blocks::WARPED_FENCE(), Ids::WARPED_FENCE); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 111abbc80..fb689c294 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -371,6 +371,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::SNOW, fn() => Blocks::SNOW()); $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); $this->map(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); + $this->map(Ids::SPORE_BLOSSOM, fn() => Blocks::SPORE_BLOSSOM()); $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); $this->map(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); $this->map(Ids::TUFF, fn() => Blocks::TUFF()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c96f2ead0..1cdca32ad 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -944,6 +944,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("soul_soil", fn() => Blocks::SOUL_SOIL()); $result->registerBlock("soul_torch", fn() => Blocks::SOUL_TORCH()); $result->registerBlock("sponge", fn() => Blocks::SPONGE()); + $result->registerBlock("spore_blossom", fn() => Blocks::SPORE_BLOSSOM()); $result->registerBlock("spruce_button", fn() => Blocks::SPRUCE_BUTTON()); $result->registerBlock("spruce_door", fn() => Blocks::SPRUCE_DOOR()); $result->registerBlock("spruce_door_block", fn() => Blocks::SPRUCE_DOOR()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index f1852b0d9..475485f54 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 44c4118080ab2dc0296fd203361e88e4116c134e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Jul 2022 15:22:47 +0100 Subject: [PATCH 361/692] fix CS again --- src/block/tile/SporeBlossom.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/block/tile/SporeBlossom.php b/src/block/tile/SporeBlossom.php index ba048ecb3..46ad80e10 100644 --- a/src/block/tile/SporeBlossom.php +++ b/src/block/tile/SporeBlossom.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block\tile; -use pocketmine\nbt\NbtDataException; use pocketmine\nbt\tag\CompoundTag; /** From 466307a43f580a8dc9103f7e4cdf4a1346a41b48 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Jul 2022 15:46:43 +0100 Subject: [PATCH 362/692] Attempting to reduce IDE performance hit of working in StringToItemParser --- src/item/StringToItemParser.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 1cdca32ad..2a8b9d107 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -46,6 +46,15 @@ final class StringToItemParser extends StringToTParser{ private static function make() : self{ $result = new self; + self::registerDynamicBlocks($result); + self::registerBlocks($result); + self::registerDynamicItems($result); + self::registerItems($result); + + return $result; + } + + private static function registerDynamicBlocks(self $result) : void{ foreach(DyeColor::getAll() as $color){ $prefix = fn(string $name) => $color->name() . "_" . $name; //wall and floor banner are the same item @@ -63,9 +72,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock($prefix("stained_hardened_glass_pane"), fn() => Blocks::STAINED_HARDENED_GLASS_PANE()->setColor($color)); $result->registerBlock($prefix("wool"), fn() => Blocks::WOOL()->setColor($color)); $result->registerBlock($prefix("shulker_box"), fn() => Blocks::DYED_SHULKER_BOX()->setColor($color)); - - $result->register($prefix("dye"), fn() => Items::DYE()->setColor($color)); } + foreach(CoralType::getAll() as $coralType){ $prefix = fn(string $name) => $coralType->name() . "_" . $name; $result->registerBlock($prefix("coral"), fn() => Blocks::CORAL()->setCoralType($coralType)); @@ -90,7 +98,9 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock($prefix . "cut_copper_slab", fn() => Blocks::CUT_COPPER_SLAB()->setOxidation($oxidation)->setWaxed($waxed)); } } + } + private static function registerBlocks(self $result) : void{ $result->registerBlock("acacia_button", fn() => Blocks::ACACIA_BUTTON()); $result->registerBlock("acacia_door", fn() => Blocks::ACACIA_DOOR()); $result->registerBlock("acacia_door_block", fn() => Blocks::ACACIA_DOOR()); @@ -1085,6 +1095,17 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("workbench", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("yellow_flower", fn() => Blocks::DANDELION()); $result->registerBlock("zombie_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); + } + + private static function registerDynamicItems(self $result) : void{ + foreach(DyeColor::getAll() as $color){ + $prefix = fn(string $name) => $color->name() . "_" . $name; + + $result->register($prefix("dye"), fn() => Items::DYE()->setColor($color)); + } + } + + private static function registerItems(self $result) : void{ $result->register("acacia_boat", fn() => Items::ACACIA_BOAT()); $result->register("amethyst_shard", fn() => Items::AMETHYST_SHARD()); @@ -1466,8 +1487,6 @@ final class StringToItemParser extends StringToTParser{ $result->register("writable_book", fn() => Items::WRITABLE_BOOK()); $result->register("written_book", fn() => Items::WRITTEN_BOOK()); $result->register("zombie_spawn_egg", fn() => Items::ZOMBIE_SPAWN_EGG()); - - return $result; } /** @phpstan-param \Closure(string $input) : Block $callback */ From c1acf443372f7aed9c729bdad20eeb3342cd4697 Mon Sep 17 00:00:00 2001 From: Dylan T Date: Wed, 20 Jul 2022 16:12:58 +0100 Subject: [PATCH 363/692] Implement cauldrons (#5163) the following things are currently not implemented: - particle/sound effects when an entity extinguishes itself - particle/sound effects when mixing different stuff in a cauldron - powder snow cauldron both of these things are contingent on #5169, but for the time being, the PR is functionally complete and I want to move on to something else without being stalled by the particle+sound problem (which I haven't yet decided how to solve). --- src/block/BlockTypeIds.php | 7 +- src/block/Cauldron.php | 104 +++++++++ src/block/FillableCauldron.php | 132 +++++++++++ src/block/LavaCauldron.php | 88 ++++++++ src/block/PotionCauldron.php | 108 +++++++++ src/block/VanillaBlocks.php | 14 ++ src/block/WaterCauldron.php | 209 ++++++++++++++++++ src/block/tile/Cauldron.php | 135 +++++++++++ src/block/tile/TileFactory.php | 1 + .../BlockObjectToBlockStateSerializer.php | 10 + .../convert/BlockStateSerializerHelper.php | 6 + .../BlockStateToBlockObjectDeserializer.php | 20 ++ src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 1 + src/item/ItemTypeIds.php | 4 +- src/item/StringToItemParser.php | 1 + src/world/sound/CauldronAddDyeSound.php | 35 +++ src/world/sound/CauldronCleanItemSound.php | 35 +++ src/world/sound/CauldronDyeItemSound.php | 35 +++ src/world/sound/CauldronEmptyLavaSound.php | 35 +++ src/world/sound/CauldronEmptyPotionSound.php | 35 +++ .../sound/CauldronEmptyPowderSnowSound.php | 35 +++ src/world/sound/CauldronEmptyWaterSound.php | 35 +++ src/world/sound/CauldronFillLavaSound.php | 35 +++ src/world/sound/CauldronFillPotionSound.php | 35 +++ .../sound/CauldronFillPowderSnowSound.php | 35 +++ src/world/sound/CauldronFillWaterSound.php | 35 +++ .../block_factory_consistency_check.json | 2 +- .../BlockSerializerDeserializerTest.php | 6 + 29 files changed, 1231 insertions(+), 4 deletions(-) create mode 100644 src/block/Cauldron.php create mode 100644 src/block/FillableCauldron.php create mode 100644 src/block/LavaCauldron.php create mode 100644 src/block/PotionCauldron.php create mode 100644 src/block/WaterCauldron.php create mode 100644 src/block/tile/Cauldron.php create mode 100644 src/world/sound/CauldronAddDyeSound.php create mode 100644 src/world/sound/CauldronCleanItemSound.php create mode 100644 src/world/sound/CauldronDyeItemSound.php create mode 100644 src/world/sound/CauldronEmptyLavaSound.php create mode 100644 src/world/sound/CauldronEmptyPotionSound.php create mode 100644 src/world/sound/CauldronEmptyPowderSnowSound.php create mode 100644 src/world/sound/CauldronEmptyWaterSound.php create mode 100644 src/world/sound/CauldronFillLavaSound.php create mode 100644 src/world/sound/CauldronFillPotionSound.php create mode 100644 src/world/sound/CauldronFillPowderSnowSound.php create mode 100644 src/world/sound/CauldronFillWaterSound.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 27fc92bd5..69c4d6ee6 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -694,6 +694,11 @@ final class BlockTypeIds{ public const SMITHING_TABLE = 10667; public const NETHERITE = 10668; public const SPORE_BLOSSOM = 10669; + public const CAULDRON = 10670; + public const WATER_CAULDRON = 10671; + public const LAVA_CAULDRON = 10672; + public const POTION_CAULDRON = 10673; + public const POWDER_SNOW_CAULDRON = 10674; - public const FIRST_UNUSED_BLOCK_ID = 10670; + public const FIRST_UNUSED_BLOCK_ID = 10675; } diff --git a/src/block/Cauldron.php b/src/block/Cauldron.php new file mode 100644 index 000000000..da1a938b2 --- /dev/null +++ b/src/block/Cauldron.php @@ -0,0 +1,104 @@ +position->getWorld()->getTile($this->position); + assert($tile instanceof TileCauldron); + + //empty cauldrons don't use this information + $tile->setCustomWaterColor(null); + $tile->setPotionItem(null); + } + + protected function recalculateCollisionBoxes() : array{ + $result = [ + AxisAlignedBB::one()->trim(Facing::UP, 11 / 16) //bottom of the cauldron + ]; + + foreach(Facing::HORIZONTAL as $f){ //add the frame parts around the bowl + $result[] = AxisAlignedBB::one()->trim($f, 14 / 16); + } + return $result; + } + + public function getSupportType(int $facing) : SupportType{ + return $facing === Facing::UP ? SupportType::EDGE() : SupportType::NONE(); + } + + /** + * @param Item[] &$returnedItems + */ + private function fill(int $amount, FillableCauldron $result, Item $usedItem, Item $returnedItem, array &$returnedItems) : void{ + $this->position->getWorld()->setBlock($this->position, $result->setFillLevel($amount)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), $result->getFillSound()); + + $usedItem->pop(); + $returnedItems[] = $returnedItem; + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($item->getTypeId() === ItemTypeIds::WATER_BUCKET){ + $this->fill(FillableCauldron::MAX_FILL_LEVEL, VanillaBlocks::WATER_CAULDRON(), $item, VanillaItems::BUCKET(), $returnedItems); + }elseif($item->getTypeId() === ItemTypeIds::LAVA_BUCKET){ + $this->fill(FillableCauldron::MAX_FILL_LEVEL, VanillaBlocks::LAVA_CAULDRON(), $item, VanillaItems::BUCKET(), $returnedItems); + }elseif($item->getTypeId() === ItemTypeIds::POWDER_SNOW_BUCKET){ + //TODO: powder snow cauldron + }elseif($item instanceof Potion || $item instanceof SplashPotion){ //TODO: lingering potion + if($item->getType()->equals(PotionType::WATER())){ + $this->fill(WaterCauldron::WATER_BOTTLE_FILL_AMOUNT, VanillaBlocks::WATER_CAULDRON(), $item, VanillaItems::GLASS_BOTTLE(), $returnedItems); + }else{ + $this->fill(PotionCauldron::POTION_FILL_AMOUNT, VanillaBlocks::POTION_CAULDRON()->setPotionItem($item), $item, VanillaItems::GLASS_BOTTLE(), $returnedItems); + } + } + + return true; + } + + public function onNearbyBlockChange() : void{ + $world = $this->position->getWorld(); + if($world->getBlock($this->position->up())->getTypeId() === BlockTypeIds::WATER){ + $cauldron = VanillaBlocks::WATER_CAULDRON()->setFillLevel(FillableCauldron::MAX_FILL_LEVEL); + $world->setBlock($this->position, $cauldron); + $world->addSound($this->position->add(0.5, 0.5, 0.5), $cauldron->getFillSound()); + } + } +} diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php new file mode 100644 index 000000000..acc16e575 --- /dev/null +++ b/src/block/FillableCauldron.php @@ -0,0 +1,132 @@ +boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); + } + + public function getFillLevel() : int{ return $this->fillLevel; } + + /** @return $this */ + public function setFillLevel(int $fillLevel) : self{ + if($fillLevel < self::MIN_FILL_LEVEL || $fillLevel > self::MAX_FILL_LEVEL){ + throw new \InvalidArgumentException("Fill level must be in range " . self::MIN_FILL_LEVEL . " ... " . self::MAX_FILL_LEVEL); + } + $this->fillLevel = $fillLevel; + return $this; + } + + protected function recalculateCollisionBoxes() : array{ + $result = [ + AxisAlignedBB::one()->trim(Facing::UP, 11 / 16) //bottom of the cauldron + ]; + + foreach(Facing::HORIZONTAL as $f){ //add the frame parts around the bowl + $result[] = AxisAlignedBB::one()->trim($f, 14 / 16); + } + return $result; + } + + public function getSupportType(int $facing) : SupportType{ + return $facing === Facing::UP ? SupportType::EDGE() : SupportType::NONE(); + } + + protected function withFillLevel(int $fillLevel) : Block{ + return $fillLevel === 0 ? VanillaBlocks::CAULDRON() : $this->setFillLevel(min(self::MAX_FILL_LEVEL, $fillLevel)); + } + + /** + * @param Item[] &$returnedItems + */ + protected function addFillLevels(int $amount, Item $usedItem, Item $returnedItem, array &$returnedItems) : void{ + if($this->fillLevel >= self::MAX_FILL_LEVEL){ + return; + } + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->fillLevel + $amount)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), $this->getFillSound()); + + $usedItem->pop(); + $returnedItems[] = $returnedItem; + } + + /** + * @param Item[] &$returnedItems + */ + protected function removeFillLevels(int $amount, Item $usedItem, Item $returnedItem, array &$returnedItems) : void{ + if($this->fillLevel < $amount){ + return; + } + + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->fillLevel - $amount)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), $this->getEmptySound()); + + $usedItem->pop(); + $returnedItems[] = $returnedItem; + } + + /** + * Returns the sound played when adding levels to the cauldron liquid. + */ + abstract public function getFillSound() : Sound; + + /** + * Returns the sound played when removing levels from the cauldron liquid. + */ + abstract public function getEmptySound() : Sound; + + /** + * @param Item[] &$returnedItems + */ + protected function mix(Item $usedItem, Item $returnedItem, array &$returnedItems) : void{ + $this->position->getWorld()->setBlock($this->position, VanillaBlocks::CAULDRON()); + //TODO: sounds and particles + + $usedItem->pop(); + $returnedItems[] = $returnedItem; + } + + public function asItem() : Item{ + return VanillaBlocks::CAULDRON()->asItem(); + } +} diff --git a/src/block/LavaCauldron.php b/src/block/LavaCauldron.php new file mode 100644 index 000000000..3df903e22 --- /dev/null +++ b/src/block/LavaCauldron.php @@ -0,0 +1,88 @@ +position->getWorld()->getTile($this->position); + assert($tile instanceof TileCauldron); + + $tile->setCustomWaterColor(null); + $tile->setPotionItem(null); + } + + public function getLightLevel() : int{ + return 15; + } + + public function getFillSound() : Sound{ + return new CauldronFillLavaSound(); + } + + public function getEmptySound() : Sound{ + return new CauldronEmptyLavaSound(); + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + match($item->getTypeId()){ + ItemTypeIds::BUCKET => $this->removeFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::LAVA_BUCKET(), $returnedItems), + ItemTypeIds::POWDER_SNOW_BUCKET, ItemTypeIds::WATER_BUCKET => $this->mix($item, VanillaItems::BUCKET(), $returnedItems), + ItemTypeIds::LINGERING_POTION, ItemTypeIds::POTION, ItemTypeIds::SPLASH_POTION => $this->mix($item, VanillaItems::GLASS_BOTTLE(), $returnedItems), + default => null + }; + return true; + } + + public function hasEntityCollision() : bool{ return true; } + + public function onEntityInside(Entity $entity) : bool{ + $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); + $entity->attack($ev); + + $ev = new EntityCombustByBlockEvent($this, $entity, 8); + $ev->call(); + if(!$ev->isCancelled()){ + $entity->setOnFire($ev->getDuration()); + } + + return true; + } +} diff --git a/src/block/PotionCauldron.php b/src/block/PotionCauldron.php new file mode 100644 index 000000000..d0bcf2af5 --- /dev/null +++ b/src/block/PotionCauldron.php @@ -0,0 +1,108 @@ +position->getWorld()->getTile($this->position); + $this->potionItem = $tile instanceof TileCauldron ? $tile->getPotionItem() : null; + + return $this; + } + + public function writeStateToWorld() : void{ + parent::writeStateToWorld(); + $tile = $this->position->getWorld()->getTile($this->position); + assert($tile instanceof TileCauldron); + $tile->setCustomWaterColor(null); + $tile->setPotionItem($this->potionItem); + } + + public function getPotionItem() : ?Item{ return $this->potionItem === null ? null : clone $this->potionItem; } + + /** @return $this */ + public function setPotionItem(?Item $potionItem) : self{ + $this->potionItem = $potionItem !== null ? (clone $potionItem)->setCount(1) : null; + return $this; + } + + public function getFillSound() : Sound{ + return new CauldronFillPotionSound(); + } + + public function getEmptySound() : Sound{ + return new CauldronEmptyPotionSound(); + } + + /** + * @param Item[] &$returnedItems + */ + protected function addFillLevelsOrMix(int $amount, Item $usedItem, Item $returnedItem, array &$returnedItems) : void{ + if($this->potionItem !== null && !$usedItem->equals($this->potionItem, true, false)){ + $this->mix($usedItem, $returnedItem, $returnedItems); + }else{ + $this->addFillLevels($amount, $usedItem, $returnedItem, $returnedItems); + } + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + match($item->getTypeId()){ + ItemTypeIds::LINGERING_POTION, ItemTypeIds::POTION, ItemTypeIds::SPLASH_POTION => $this->addFillLevelsOrMix(self::POTION_FILL_AMOUNT, $item, VanillaItems::GLASS_BOTTLE(), $returnedItems), + ItemTypeIds::GLASS_BOTTLE => $this->potionItem === null ? null : $this->removeFillLevels(self::POTION_FILL_AMOUNT, $item, clone $this->potionItem, $returnedItems), + ItemTypeIds::LAVA_BUCKET, ItemTypeIds::POWDER_SNOW_BUCKET, ItemTypeIds::WATER_BUCKET => $this->mix($item, VanillaItems::BUCKET(), $returnedItems), + //TODO: tipped arrows + default => null + }; + return true; + } + + public function onNearbyBlockChange() : void{ + $world = $this->position->getWorld(); + if($world->getBlock($this->position->up())->getTypeId() === BlockTypeIds::WATER){ + $cauldron = VanillaBlocks::WATER_CAULDRON()->setFillLevel(FillableCauldron::MAX_FILL_LEVEL); + $world->setBlock($this->position, $cauldron); + $world->addSound($this->position->add(0.5, 0.5, 0.5), $cauldron->getFillSound()); + } + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 679e51553..a900cabe5 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -34,6 +34,7 @@ use pocketmine\block\tile\Bed as TileBed; use pocketmine\block\tile\Bell as TileBell; use pocketmine\block\tile\BlastFurnace as TileBlastFurnace; use pocketmine\block\tile\BrewingStand as TileBrewingStand; +use pocketmine\block\tile\Cauldron as TileCauldron; use pocketmine\block\tile\Chest as TileChest; use pocketmine\block\tile\Comparator as TileComparator; use pocketmine\block\tile\DaylightSensor as TileDaylightSensor; @@ -143,6 +144,7 @@ use function mb_strtolower; * @method static Carrot CARROTS() * @method static CartographyTable CARTOGRAPHY_TABLE() * @method static CarvedPumpkin CARVED_PUMPKIN() + * @method static Cauldron CAULDRON() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() * @method static Opaque CHISELED_DEEPSLATE() @@ -453,6 +455,7 @@ use function mb_strtolower; * @method static LapisOre LAPIS_LAZULI_ORE() * @method static DoubleTallGrass LARGE_FERN() * @method static Lava LAVA() + * @method static LavaCauldron LAVA_CAULDRON() * @method static Lectern LECTERN() * @method static Opaque LEGACY_STONECUTTER() * @method static Lever LEVER() @@ -558,6 +561,7 @@ use function mb_strtolower; * @method static Stair POLISHED_GRANITE_STAIRS() * @method static Flower POPPY() * @method static Potato POTATOES() + * @method static PotionCauldron POTION_CAULDRON() * @method static PoweredRail POWERED_RAIL() * @method static Opaque PRISMARINE() * @method static Opaque PRISMARINE_BRICKS() @@ -697,6 +701,7 @@ use function mb_strtolower; * @method static WallSign WARPED_WALL_SIGN() * @method static Opaque WARPED_WART_BLOCK() * @method static Water WATER() + * @method static WaterCauldron WATER_CAULDRON() * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() * @method static Wheat WHEAT() @@ -1166,6 +1171,7 @@ final class VanillaBlocks{ self::registerCraftingTables(); self::registerOres(); self::registerWoodenBlocks(); + self::registerCauldronBlocks(); } private static function registerWoodenBlocks() : void{ @@ -1513,4 +1519,12 @@ final class VanillaBlocks{ self::register("mud_brick_wall", new Wall(new BID(Ids::MUD_BRICK_WALL), "Mud Brick Wall", $mudBricksBreakInfo)); } + private static function registerCauldronBlocks() : void{ + $cauldronBreakInfo = new BreakInfo(2, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + + self::register("cauldron", new Cauldron(new BID(Ids::CAULDRON, TileCauldron::class), "Cauldron", $cauldronBreakInfo)); + self::register("water_cauldron", new WaterCauldron(new BID(Ids::WATER_CAULDRON, TileCauldron::class), "Water Cauldron", $cauldronBreakInfo)); + self::register("lava_cauldron", new LavaCauldron(new BID(Ids::LAVA_CAULDRON, TileCauldron::class), "Lava Cauldron", $cauldronBreakInfo)); + self::register("potion_cauldron", new PotionCauldron(new BID(Ids::POTION_CAULDRON, TileCauldron::class), "Potion Cauldron", $cauldronBreakInfo)); + } } diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php new file mode 100644 index 000000000..f346ac4a0 --- /dev/null +++ b/src/block/WaterCauldron.php @@ -0,0 +1,209 @@ +position->getWorld()->getTile($this->position); + + $potionItem = $tile instanceof TileCauldron ? $tile->getPotionItem() : null; + if($potionItem !== null){ + //TODO: HACK! we keep potion cauldrons as a separate block type due to different behaviour, but in the + //blockstate they are typically indistinguishable from water cauldrons. This hack converts cauldrons into + //their appropriate type. + return VanillaBlocks::POTION_CAULDRON()->setFillLevel($this->getFillLevel())->setPotionItem($potionItem); + } + + $this->customWaterColor = $tile instanceof TileCauldron ? $tile->getCustomWaterColor() : null; + + return $this; + } + + public function writeStateToWorld() : void{ + parent::writeStateToWorld(); + $tile = $this->position->getWorld()->getTile($this->position); + assert($tile instanceof TileCauldron); + $tile->setCustomWaterColor($this->customWaterColor); + $tile->setPotionItem(null); + } + + /** @return Color|null */ + public function getCustomWaterColor() : ?Color{ return $this->customWaterColor; } + + /** @return $this */ + public function setCustomWaterColor(?Color $customWaterColor) : self{ + $this->customWaterColor = $customWaterColor; + return $this; + } + + public function getFillSound() : Sound{ + return new CauldronFillWaterSound(); + } + + public function getEmptySound() : Sound{ + return new CauldronEmptyWaterSound(); + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if(($newColor = match($item->getTypeId()){ + ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE()->getRgbValue(), + ItemTypeIds::INK_SAC => DyeColor::BLACK()->getRgbValue(), + ItemTypeIds::COCOA_BEANS => DyeColor::BROWN()->getRgbValue(), + ItemTypeIds::BONE_MEAL => DyeColor::WHITE()->getRgbValue(), + ItemTypeIds::DYE => $item instanceof Dye ? $item->getColor()->getRgbValue() : null, + default => null + }) !== null && $newColor->toRGBA() !== $this->customWaterColor?->toRGBA() + ){ + $this->position->getWorld()->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor))); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound()); + + $item->pop(); + }elseif($item instanceof Potion || $item instanceof SplashPotion){ //TODO: lingering potion + if($item->getType()->equals(PotionType::WATER())){ + $this->addFillLevels(self::WATER_BOTTLE_FILL_AMOUNT, $item, VanillaItems::GLASS_BOTTLE(), $returnedItems); + }else{ + $this->mix($item, VanillaItems::GLASS_BOTTLE(), $returnedItems); + } + }elseif($item instanceof Armor){ + if($this->customWaterColor !== null){ + if(match($item->getTypeId()){ //TODO: a DyeableArmor class would probably be a better idea, since not all types of armor are dyeable + ItemTypeIds::LEATHER_CAP, + ItemTypeIds::LEATHER_TUNIC, + ItemTypeIds::LEATHER_PANTS, + ItemTypeIds::LEATHER_BOOTS => true, + default => false + } && $item->getCustomColor()?->toRGBA() !== $this->customWaterColor->toRGBA()){ + $item->setCustomColor($this->customWaterColor); + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::DYE_ARMOR_USE_AMOUNT)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronDyeItemSound()); + } + }elseif($item->getCustomColor() !== null){ + $item->clearCustomColor(); + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_ARMOR_USE_AMOUNT)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + } + }elseif($item instanceof Banner){ + $patterns = $item->getPatterns(); + if(count($patterns) > 0 && $this->customWaterColor === null){ + array_pop($patterns); + $item->setPatterns($patterns); + + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + } + }elseif($item instanceof ItemBlock && $item->getBlock()->getTypeId() === BlockTypeIds::DYED_SHULKER_BOX){ + if($this->customWaterColor === null){ + $newItem = VanillaBlocks::SHULKER_BOX()->asItem(); + $newItem->setNamedTag($item->getNamedTag()); + + $item->pop(); + $returnedItems[] = $newItem; + + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_SHULKER_BOX_USE_AMOUNT)); + $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + } + }else{ + match($item->getTypeId()){ + ItemTypeIds::WATER_BUCKET => $this->addFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::BUCKET(), $returnedItems), + ItemTypeIds::BUCKET => $this->removeFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::WATER_BUCKET(), $returnedItems), + ItemTypeIds::GLASS_BOTTLE => $this->removeFillLevels(self::WATER_BOTTLE_FILL_AMOUNT, $item, VanillaItems::POTION()->setType(PotionType::WATER()), $returnedItems), + ItemTypeIds::LAVA_BUCKET, ItemTypeIds::POWDER_SNOW_BUCKET => $this->mix($item, VanillaItems::BUCKET(), $returnedItems), + default => null + }; + } + + return true; + } + + public function hasEntityCollision() : bool{ return true; } + + public function onEntityInside(Entity $entity) : bool{ + if($entity->isOnFire()){ + $entity->extinguish(); + //TODO: particles + + $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::ENTITY_EXTINGUISH_USE_AMOUNT)); + } + + return true; + } + + public function onNearbyBlockChange() : void{ + $hasCustomWaterColor = $this->customWaterColor !== null; + if($this->getFillLevel() < self::MAX_FILL_LEVEL || $hasCustomWaterColor){ + $world = $this->position->getWorld(); + if($world->getBlock($this->position->up())->getTypeId() === BlockTypeIds::WATER){ + if($hasCustomWaterColor){ + //TODO: particles + } + $world->setBlock($this->position, $this->setCustomWaterColor(null)->setFillLevel(FillableCauldron::MAX_FILL_LEVEL)); + $world->addSound($this->position->add(0.5, 0.5, 0.5), $this->getFillSound()); + } + } + } +} diff --git a/src/block/tile/Cauldron.php b/src/block/tile/Cauldron.php new file mode 100644 index 000000000..d10f97e14 --- /dev/null +++ b/src/block/tile/Cauldron.php @@ -0,0 +1,135 @@ +potionItem; } + + public function setPotionItem(?Item $potionItem) : void{ + $this->potionItem = $potionItem; + } + + public function getCustomWaterColor() : ?Color{ return $this->customWaterColor; } + + public function setCustomWaterColor(?Color $customWaterColor) : void{ + $this->customWaterColor = $customWaterColor; + } + + protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ + $nbt->setShort(self::TAG_POTION_CONTAINER_TYPE, match($this->potionItem?->getTypeId()){ + ItemTypeIds::POTION => self::POTION_CONTAINER_TYPE_NORMAL, + ItemTypeIds::SPLASH_POTION => self::POTION_CONTAINER_TYPE_SPLASH, + ItemTypeIds::LINGERING_POTION => self::POTION_CONTAINER_TYPE_LINGERING, + null => self::POTION_CONTAINER_TYPE_NONE, + default => throw new AssumptionFailedError("Unexpected potion item type") + }); + + //TODO: lingering potion + $type = $this->potionItem instanceof Potion || $this->potionItem instanceof SplashPotion ? $this->potionItem->getType() : null; + $nbt->setShort(self::TAG_POTION_ID, $type === null ? self::POTION_ID_NONE : PotionTypeIdMap::getInstance()->toId($type)); + + if($this->customWaterColor !== null){ + $nbt->setInt(self::TAG_CUSTOM_COLOR, Binary::signInt($this->customWaterColor->toARGB())); + } + } + + public function readSaveData(CompoundTag $nbt) : void{ + $containerType = $nbt->getShort(self::TAG_POTION_CONTAINER_TYPE, self::POTION_CONTAINER_TYPE_NONE); + $potionId = $nbt->getShort(self::TAG_POTION_ID, self::POTION_ID_NONE); + if($containerType !== self::POTION_CONTAINER_TYPE_NONE && $potionId !== self::POTION_ID_NONE){ + $potionType = PotionTypeIdMap::getInstance()->fromId($potionId); + if($potionType === null){ + throw new SavedDataLoadingException("Unknown potion type ID $potionId"); + } + $this->potionItem = match($containerType){ + self::POTION_CONTAINER_TYPE_NORMAL => VanillaItems::POTION()->setType($potionType), + self::POTION_CONTAINER_TYPE_SPLASH => VanillaItems::SPLASH_POTION()->setType($potionType), + self::POTION_CONTAINER_TYPE_LINGERING => throw new SavedDataLoadingException("Not implemented"), + default => throw new SavedDataLoadingException("Invalid potion container type ID $containerType") + }; + }else{ + $this->potionItem = null; + } + + $this->customWaterColor = ($customColorTag = $nbt->getTag(self::TAG_CUSTOM_COLOR)) instanceof IntTag ? Color::fromARGB(Binary::unsignInt($customColorTag->getValue())) : null; + } + + protected function writeSaveData(CompoundTag $nbt) : void{ + $nbt->setShort(self::TAG_POTION_CONTAINER_TYPE, match($this->potionItem?->getTypeId()){ + ItemTypeIds::POTION => self::POTION_CONTAINER_TYPE_NORMAL, + ItemTypeIds::SPLASH_POTION => self::POTION_CONTAINER_TYPE_SPLASH, + ItemTypeIds::LINGERING_POTION => self::POTION_CONTAINER_TYPE_LINGERING, + null => self::POTION_CONTAINER_TYPE_NONE, + default => throw new AssumptionFailedError("Unexpected potion item type") + }); + + //TODO: lingering potion + $type = $this->potionItem instanceof Potion || $this->potionItem instanceof SplashPotion ? $this->potionItem->getType() : null; + $nbt->setShort(self::TAG_POTION_ID, $type === null ? self::POTION_ID_NONE : PotionTypeIdMap::getInstance()->toId($type)); + + if($this->customWaterColor !== null){ + $nbt->setInt(self::TAG_CUSTOM_COLOR, Binary::signInt($this->customWaterColor->toARGB())); + } + } + + public function getRenderUpdateBugWorkaroundStateProperties(Block $block) : array{ + if($block instanceof FillableCauldron){ + $realFillLevel = $block->getFillLevel(); + return [BlockStateNames::FILL_LEVEL => new IntTag($realFillLevel === FillableCauldron::MAX_FILL_LEVEL ? FillableCauldron::MIN_FILL_LEVEL : $realFillLevel + 1)]; + } + + return []; + } +} diff --git a/src/block/tile/TileFactory.php b/src/block/tile/TileFactory.php index d321c4754..4a9c73872 100644 --- a/src/block/tile/TileFactory.php +++ b/src/block/tile/TileFactory.php @@ -57,6 +57,7 @@ final class TileFactory{ $this->register(Bell::class, ["Bell", "minecraft:bell"]); $this->register(BlastFurnace::class, ["BlastFurnace", "minecraft:blast_furnace"]); $this->register(BrewingStand::class, ["BrewingStand", "minecraft:brewing_stand"]); + $this->register(Cauldron::class, ["Cauldron", "minecraft:cauldron"]); $this->register(Chest::class, ["Chest", "minecraft:chest"]); $this->register(Comparator::class, ["Comparator", "minecraft:comparator"]); $this->register(DaylightSensor::class, ["DaylightDetector", "minecraft:daylight_detector"]); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 27b620ee0..cba222dab 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -68,6 +68,7 @@ use pocketmine\block\EndPortalFrame; use pocketmine\block\EndRod; use pocketmine\block\Farmland; use pocketmine\block\FenceGate; +use pocketmine\block\FillableCauldron; use pocketmine\block\Fire; use pocketmine\block\FloorBanner; use pocketmine\block\FloorCoralFan; @@ -176,6 +177,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ public function __construct(){ $this->registerCandleSerializers(); + $this->registerCauldronSerializers(); $this->registerSimpleSerializers(); $this->registerSerializers(); } @@ -292,6 +294,14 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ })->writeBool(StateNames::LIT, $block->isLit())); } + private function registerCauldronSerializers() : void{ + $this->map(Blocks::CAULDRON(), fn() => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, 0, new Writer(Ids::CAULDRON))); + $this->map(Blocks::LAVA_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_LAVA, $b->getFillLevel(), new Writer(Ids::LAVA_CAULDRON))); + //potion cauldrons store their real information in the block actor data + $this->map(Blocks::POTION_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, $b->getFillLevel(), new Writer(Ids::CAULDRON))); + $this->map(Blocks::WATER_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, $b->getFillLevel(), new Writer(Ids::CAULDRON))); + } + private function registerSimpleSerializers() : void{ $this->mapSimple(Blocks::AIR(), Ids::AIR); $this->mapSimple(Blocks::AMETHYST(), Ids::AMETHYST_BLOCK); diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index cd16b45b7..c87b64788 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -91,6 +91,12 @@ final class BlockStateSerializerHelper{ ->writeTorchFacing($block->getFacing()); } + public static function encodeCauldron(string $liquid, int $fillLevel, BlockStateWriter $out) : BlockStateWriter{ + return $out + ->writeString(BlockStateNames::CAULDRON_LIQUID, $liquid) + ->writeInt(BlockStateNames::FILL_LEVEL, $fillLevel); + } + public static function selectCopperId(CopperOxidation $oxidation, string $noneId, string $exposedId, string $weatheredId, string $oxidizedId) : string{ return match($oxidation){ CopperOxidation::NONE() => $noneId, diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index fb689c294..765a5ae1d 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -60,6 +60,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize public function __construct(){ $this->registerCandleDeserializers(); + $this->registerCauldronDeserializers(); $this->registerSimpleDeserializers(); $this->registerDeserializers(); } @@ -136,6 +137,25 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); } + private function registerCauldronDeserializers() : void{ + $deserializer = function(Reader $in) : Block{ + $level = $in->readBoundedInt(StateNames::FILL_LEVEL, 0, 6); + if($level === 0){ + $in->ignored(StateNames::CAULDRON_LIQUID); + return Blocks::CAULDRON(); + } + + return (match($liquid = $in->readString(StateNames::CAULDRON_LIQUID)){ + StringValues::CAULDRON_LIQUID_WATER => Blocks::WATER_CAULDRON(), + StringValues::CAULDRON_LIQUID_LAVA => Blocks::LAVA_CAULDRON(), + StringValues::CAULDRON_LIQUID_POWDER_SNOW => throw new UnsupportedBlockStateException("Powder snow is not supported yet"), + default => throw $in->badValueException(StateNames::CAULDRON_LIQUID, $liquid) + })->setFillLevel($level); + }; + $this->map(Ids::CAULDRON, $deserializer); + $this->map(Ids::LAVA_CAULDRON, $deserializer); + } + private function registerSimpleDeserializers() : void{ $this->map(Ids::AIR, fn() => Blocks::AIR()); $this->map(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index dfa463bc8..85d415d6a 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -198,7 +198,7 @@ final class ItemDeserializer{ $this->map(Ids::CARROT, fn() => Items::CARROT()); //TODO: minecraft:carrot_on_a_stick //TODO: minecraft:cat_spawn_egg - //TODO: minecraft:cauldron + $this->map(Ids::CAULDRON, fn() => Blocks::CAULDRON()->asItem()); //TODO: minecraft:cave_spider_spawn_egg //TODO: minecraft:chain $this->map(Ids::CHAINMAIL_BOOTS, fn() => Items::CHAINMAIL_BOOTS()); diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index b652d3a3a..0c993f2e6 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -229,6 +229,7 @@ final class ItemSerializer{ $this->mapBlock(Blocks::BIRCH_DOOR(), self::id(Ids::BIRCH_DOOR)); $this->mapBlock(Blocks::BREWING_STAND(), self::id(Ids::BREWING_STAND)); $this->mapBlock(Blocks::CAKE(), self::id(Ids::CAKE)); + $this->mapBlock(Blocks::CAULDRON(), self::id(Ids::CAULDRON)); $this->mapBlock(Blocks::CRIMSON_DOOR(), self::id(Ids::CRIMSON_DOOR)); $this->mapBlock(Blocks::DARK_OAK_DOOR(), self::id(Ids::DARK_OAK_DOOR)); $this->mapBlock(Blocks::FLOWER_POT(), self::id(Ids::FLOWER_POT)); diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index ff6ef0a04..d82f23642 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -294,6 +294,8 @@ final class ItemTypeIds{ public const RAW_GOLD = 20255; public const SPYGLASS = 20256; public const NETHERITE_SCRAP = 20257; + public const POWDER_SNOW_BUCKET = 20258; + public const LINGERING_POTION = 20259; - public const FIRST_UNUSED_ITEM_ID = 20258; + public const FIRST_UNUSED_ITEM_ID = 20260; } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 2a8b9d107..0b41a7826 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -197,6 +197,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("carrot_block", fn() => Blocks::CARROTS()); $result->registerBlock("carrots", fn() => Blocks::CARROTS()); $result->registerBlock("carved_pumpkin", fn() => Blocks::CARVED_PUMPKIN()); + $result->registerBlock("cauldron", fn() => Blocks::CAULDRON()); $result->registerBlock("chemical_heat", fn() => Blocks::CHEMICAL_HEAT()); $result->registerBlock("chemistry_table", fn() => Blocks::COMPOUND_CREATOR()); $result->registerBlock("chest", fn() => Blocks::CHEST()); diff --git a/src/world/sound/CauldronAddDyeSound.php b/src/world/sound/CauldronAddDyeSound.php new file mode 100644 index 000000000..2a427959e --- /dev/null +++ b/src/world/sound/CauldronAddDyeSound.php @@ -0,0 +1,35 @@ +getMessage()); } + if($block->getTypeId() === BlockTypeIds::POTION_CAULDRON){ + //this pretends to be a water cauldron in the blockstate, and stores its actual data in the blockentity + continue; + } + //The following are workarounds for differences in blockstate representation in Bedrock vs PM //In these cases, some properties are not stored in the blockstate (but rather in the block entity NBT), but //they do form part of the internal blockstate hash in PM. This leads to inconsistencies when serializing From 67682cbf27ba40176af16e836d31d96131ebb118 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Jul 2022 20:19:36 +0100 Subject: [PATCH 364/692] Added chorus plant and flower --- src/block/BlockTypeIds.php | 4 +- src/block/ChorusFlower.php | 236 ++++++++++++++++++ src/block/ChorusPlant.php | 102 ++++++++ src/block/VanillaBlocks.php | 9 + .../BlockObjectToBlockStateSerializer.php | 6 + .../BlockStateToBlockObjectDeserializer.php | 6 + src/item/StringToItemParser.php | 2 + src/world/sound/ChorusFlowerDieSound.php | 35 +++ src/world/sound/ChorusFlowerGrowSound.php | 35 +++ .../block_factory_consistency_check.json | 2 +- 10 files changed, 435 insertions(+), 2 deletions(-) create mode 100644 src/block/ChorusFlower.php create mode 100644 src/block/ChorusPlant.php create mode 100644 src/world/sound/ChorusFlowerDieSound.php create mode 100644 src/world/sound/ChorusFlowerGrowSound.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 69c4d6ee6..cf84b2a60 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -699,6 +699,8 @@ final class BlockTypeIds{ public const LAVA_CAULDRON = 10672; public const POTION_CAULDRON = 10673; public const POWDER_SNOW_CAULDRON = 10674; + public const CHORUS_FLOWER = 10675; + public const CHORUS_PLANT = 10676; - public const FIRST_UNUSED_BLOCK_ID = 10675; + public const FIRST_UNUSED_BLOCK_ID = 10676; } diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php new file mode 100644 index 000000000..2a0c9ac02 --- /dev/null +++ b/src/block/ChorusFlower.php @@ -0,0 +1,236 @@ +boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); + } + + public function getAge() : int{ return $this->age; } + + /** @return $this */ + public function setAge(int $age) : self{ + if($age < self::MIN_AGE || $age > self::MAX_AGE){ + throw new \InvalidArgumentException("Age must be in the range " . self::MIN_AGE . " ... " . self::MAX_AGE); + } + $this->age = $age; + return $this; + } + + protected function recalculateCollisionBoxes() : array{ + return [AxisAlignedBB::one()]; + } + + private function canBeSupportedAt(Position $position) : bool{ + $world = $position->getWorld(); + $down = $world->getBlock($position->down()); + + if($down->getTypeId() === BlockTypeIds::END_STONE || $down->getTypeId() === BlockTypeIds::CHORUS_PLANT){ + return true; + } + + $plantAdjacent = false; + foreach($position->sidesAroundAxis(Axis::Y) as $sidePosition){ + $block = $world->getBlock($sidePosition); + + if($block->getTypeId() === BlockTypeIds::CHORUS_PLANT){ + if($plantAdjacent){ //at most one plant may be horizontally adjacent + return false; + } + $plantAdjacent = true; + }elseif($block->getTypeId() !== BlockTypeIds::AIR){ + return false; + } + } + + return $plantAdjacent; + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canBeSupportedAt($blockReplace->getPosition())){ + return false; + } + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedAt($this->position)){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + $this->position->getWorld()->useBreakOn($this->position); + } + + public function ticksRandomly() : bool{ return $this->age < self::MAX_AGE; } + + /** + * @phpstan-return array{int, bool} + */ + private function scanStem() : array{ + $world = $this->position->getWorld(); + + $stemHeight = 0; + $endStoneBelow = false; + for($yOffset = 0; $yOffset < self::MAX_STEM_HEIGHT; $yOffset++, $stemHeight++){ + $down = $world->getBlock($this->position->down($yOffset + 1)); + + if($down->getTypeId() !== BlockTypeIds::CHORUS_PLANT){ + if($down->getTypeId() === BlockTypeIds::END_STONE){ + $endStoneBelow = true; + } + break; + } + } + + return [$stemHeight, $endStoneBelow]; + } + + private function allHorizontalBlocksEmpty(World $world, Vector3 $position, ?int $except) : bool{ + foreach($position->sidesAroundAxis(Axis::Y) as $facing => $sidePosition){ + if($facing === $except){ + continue; + } + if($world->getBlock($sidePosition)->getTypeId() !== BlockTypeIds::AIR){ + return false; + } + } + + return true; + } + + private function canGrowUpwards(int $stemHeight, bool $endStoneBelow) : bool{ + $world = $this->position->getWorld(); + + $up = $this->position->up(); + if( + //the space above must be empty and writable + !$world->isInWorld($up->x, $up->y, $up->z) || + $world->getBlock($up)->getTypeId() !== BlockTypeIds::AIR || + ( + //the space above that must be empty, but doesn't need to be writable + $world->isInWorld($up->x, $up->y + 1, $up->z) && + $world->getBlock($up->up())->getTypeId() !== BlockTypeIds::AIR + ) + ){ + return false; + } + + if($this->getSide(Facing::DOWN)->getTypeId() !== BlockTypeIds::AIR){ + if($stemHeight >= self::MAX_STEM_HEIGHT){ + return false; + } + + if($stemHeight > 1 && $stemHeight > mt_rand(0, $endStoneBelow ? 4 : 3)){ //chance decreases for each added block of chorus plant + return false; + } + } + + return $this->allHorizontalBlocksEmpty($world, $up, null); + } + + private function grow(int $facing, int $ageChange, ?BlockTransaction $tx) : BlockTransaction{ + if($tx === null){ + $tx = new BlockTransaction($this->position->getWorld()); + } + $tx->addBlock($this->position->getSide($facing), (clone $this)->setAge($this->getAge() + $ageChange)); + + return $tx; + } + + public function onRandomTick() : void{ + $world = $this->position->getWorld(); + + if($this->age >= self::MAX_AGE){ + return; + } + + $tx = null; + + [$stemHeight, $endStoneBelow] = $this->scanStem(); + if($this->canGrowUpwards($stemHeight, $endStoneBelow)){ + $tx = $this->grow(Facing::UP, 0, $tx); + }else{ + $facingVisited = []; + for($attempts = 0, $maxAttempts = mt_rand(0, $endStoneBelow ? 4 : 3); $attempts < $maxAttempts; $attempts++){ + $facing = Facing::HORIZONTAL[array_rand(Facing::HORIZONTAL)]; + if(isset($facingVisited[$facing])){ + continue; + } + $facingVisited[$facing] = true; + + $sidePosition = $this->position->getSide($facing); + if( + $world->getBlock($sidePosition)->getTypeId() === BlockTypeIds::AIR && + $world->getBlock($sidePosition->down())->getTypeId() === BlockTypeIds::AIR && + $this->allHorizontalBlocksEmpty($world, $sidePosition, Facing::opposite($facing)) + ){ + $tx = $this->grow($facing, 1, $tx); + } + } + } + + if($tx !== null){ + $tx->addBlock($this->position, VanillaBlocks::CHORUS_PLANT()); + $ev = new StructureGrowEvent($this, $tx, null); + $ev->call(); + if(!$ev->isCancelled() && $tx->apply()){ + $world->addSound($this->position->add(0.5, 0.5, 0.5), new ChorusFlowerGrowSound()); + } + }else{ + $world->addSound($this->position->add(0.5, 0.5, 0.5), new ChorusFlowerDieSound()); + $this->position->getWorld()->setBlock($this->position, $this->setAge(self::MAX_AGE)); + } + } +} diff --git a/src/block/ChorusPlant.php b/src/block/ChorusPlant.php new file mode 100644 index 000000000..ebc5308ee --- /dev/null +++ b/src/block/ChorusPlant.php @@ -0,0 +1,102 @@ +getAllSides() as $facing => $block){ + $id = $block->getTypeId(); + if($id !== BlockTypeIds::END_STONE && $id !== BlockTypeIds::CHORUS_FLOWER && !$block->isSameType($this)){ + $bb->trim($facing, 2 / 16); + } + } + + return [$bb]; + } + + private function canBeSupportedBy(Block $block) : bool{ + return $block->isSameType($this) || $block->getTypeId() === BlockTypeIds::END_STONE; + } + + private function canStay(Position $position) : bool{ + $world = $position->getWorld(); + + $down = $world->getBlock($position->down()); + $verticalAir = $down->getTypeId() === BlockTypeIds::AIR || $world->getBlock($position->up())->getTypeId() === BlockTypeIds::AIR; + + foreach($position->sidesAroundAxis(Axis::Y) as $sidePosition){ + $block = $world->getBlock($sidePosition); + + if($block->getTypeId() === BlockTypeIds::CHORUS_PLANT){ + if(!$verticalAir){ + return false; + } + + if($this->canBeSupportedBy($block->getSide(Facing::DOWN))){ + return true; + } + } + } + + if($this->canBeSupportedBy($down)){ + return true; + } + + return false; + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canStay($blockReplace->getPosition())){ + return false; + } + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canStay($this->position)){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function getDropsForCompatibleTool(Item $item) : array{ + if(mt_rand(0, 1) === 1){ + return [VanillaItems::CHORUS_FRUIT()]; + } + + return []; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index a900cabe5..830c59b1b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -154,6 +154,8 @@ use function mb_strtolower; * @method static Opaque CHISELED_RED_SANDSTONE() * @method static Opaque CHISELED_SANDSTONE() * @method static Opaque CHISELED_STONE_BRICKS() + * @method static ChorusFlower CHORUS_FLOWER() + * @method static ChorusPlant CHORUS_PLANT() * @method static Clay CLAY() * @method static Coal COAL() * @method static CoalOre COAL_ORE() @@ -1169,6 +1171,7 @@ final class VanillaBlocks{ self::registerMudBlocks(); self::registerCraftingTables(); + self::registerChorusBlocks(); self::registerOres(); self::registerWoodenBlocks(); self::registerCauldronBlocks(); @@ -1375,6 +1378,12 @@ final class VanillaBlocks{ self::register("smithing_table", new SmithingTable(new BID(Ids::SMITHING_TABLE), "Smithing Table", $craftingBlockBreakInfo)); } + private static function registerChorusBlocks() : void{ + $chorusBlockBreakInfo = new BreakInfo(0.4, ToolType::AXE); + self::register("chorus_plant", new ChorusPlant(new BID(Ids::CHORUS_PLANT), "Chorus Plant", $chorusBlockBreakInfo)); + self::register("chorus_flower", new ChorusFlower(new BID(Ids::CHORUS_FLOWER), "Chorus Flower", $chorusBlockBreakInfo)); + } + private static function registerBlocksR13() : void{ self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", BreakInfo::instant())); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index cba222dab..7a95c7058 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -47,6 +47,7 @@ use pocketmine\block\Carrot; use pocketmine\block\CarvedPumpkin; use pocketmine\block\ChemistryTable; use pocketmine\block\Chest; +use pocketmine\block\ChorusFlower; use pocketmine\block\CocoaBlock; use pocketmine\block\Concrete; use pocketmine\block\ConcretePowder; @@ -319,6 +320,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::CHISELED_DEEPSLATE(), Ids::CHISELED_DEEPSLATE); $this->mapSimple(Blocks::CHISELED_NETHER_BRICKS(), Ids::CHISELED_NETHER_BRICKS); $this->mapSimple(Blocks::CHISELED_POLISHED_BLACKSTONE(), Ids::CHISELED_POLISHED_BLACKSTONE); + $this->mapSimple(Blocks::CHORUS_PLANT(), Ids::CHORUS_PLANT); $this->mapSimple(Blocks::CLAY(), Ids::CLAY); $this->mapSimple(Blocks::COAL(), Ids::COAL_BLOCK); $this->mapSimple(Blocks::COAL_ORE(), Ids::COAL_ORE); @@ -704,6 +706,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); $this->map(Blocks::CHISELED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); $this->map(Blocks::CHISELED_STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_CHISELED)); + $this->map(Blocks::CHORUS_FLOWER(), function(ChorusFlower $block) : Writer{ + return Writer::create(Ids::CHORUS_FLOWER) + ->writeInt(StateNames::AGE, $block->getAge()); + }); $this->mapSlab(Blocks::COBBLED_DEEPSLATE_SLAB(), Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB); $this->mapStairs(Blocks::COBBLED_DEEPSLATE_STAIRS(), Ids::COBBLED_DEEPSLATE_STAIRS); $this->map(Blocks::COBBLED_DEEPSLATE_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::COBBLED_DEEPSLATE_WALL))); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 765a5ae1d..77ac319be 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; +use pocketmine\block\ChorusFlower; use pocketmine\block\Light; use pocketmine\block\Slab; use pocketmine\block\Stair; @@ -173,6 +174,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::CHISELED_DEEPSLATE, fn() => Blocks::CHISELED_DEEPSLATE()); $this->map(Ids::CHISELED_NETHER_BRICKS, fn() => Blocks::CHISELED_NETHER_BRICKS()); $this->map(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); + $this->map(Ids::CHORUS_PLANT, fn() => Blocks::CHORUS_PLANT()); $this->map(Ids::CLAY, fn() => Blocks::CLAY()); $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); @@ -537,6 +539,10 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize return Blocks::CHEST() ->setFacing($in->readHorizontalFacing()); }); + $this->map(Ids::CHORUS_FLOWER, function(Reader $in) : Block{ + return Blocks::CHORUS_FLOWER() + ->setAge($in->readBoundedInt(StateNames::AGE, ChorusFlower::MIN_AGE, ChorusFlower::MAX_AGE)); + }); $this->mapSlab(Ids::COBBLED_DEEPSLATE_SLAB, Ids::COBBLED_DEEPSLATE_DOUBLE_SLAB, fn() => Blocks::COBBLED_DEEPSLATE_SLAB()); $this->mapStairs(Ids::COBBLED_DEEPSLATE_STAIRS, fn() => Blocks::COBBLED_DEEPSLATE_STAIRS()); $this->map(Ids::COBBLED_DEEPSLATE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::COBBLED_DEEPSLATE_WALL(), $in)); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 0b41a7826..eab33700a 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -209,6 +209,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("chiseled_red_sandstone", fn() => Blocks::CHISELED_RED_SANDSTONE()); $result->registerBlock("chiseled_sandstone", fn() => Blocks::CHISELED_SANDSTONE()); $result->registerBlock("chiseled_stone_bricks", fn() => Blocks::CHISELED_STONE_BRICKS()); + $result->registerBlock("chorus_flower", fn() => Blocks::CHORUS_FLOWER()); + $result->registerBlock("chorus_plant", fn() => Blocks::CHORUS_PLANT()); $result->registerBlock("clay_block", fn() => Blocks::CLAY()); $result->registerBlock("coal_block", fn() => Blocks::COAL()); $result->registerBlock("coal_ore", fn() => Blocks::COAL_ORE()); diff --git a/src/world/sound/ChorusFlowerDieSound.php b/src/world/sound/ChorusFlowerDieSound.php new file mode 100644 index 000000000..c91bdf9ed --- /dev/null +++ b/src/world/sound/ChorusFlowerDieSound.php @@ -0,0 +1,35 @@ + Date: Wed, 20 Jul 2022 20:20:14 +0100 Subject: [PATCH 365/692] LegacyStringToItemParser: special-case air, which the item deserializer doesn't recognize --- src/item/LegacyStringToItemParser.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index 12c10f874..f8a14dde0 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -118,7 +118,13 @@ final class LegacyStringToItemParser{ throw new LegacyStringToItemParserException("Unable to parse \"" . $b[1] . "\" from \"" . $input . "\" as a valid meta value"); } - $legacyId = $this->map[strtolower($b[0])] ?? null; + $lower = strtolower($b[0]); + if($lower === "0" || $lower === "air"){ + //item deserializer doesn't recognize air items since they aren't supposed to exist + return VanillaItems::AIR(); + } + + $legacyId = $this->map[$lower] ?? null; if($legacyId === null){ throw new LegacyStringToItemParserException("Unable to resolve \"" . $input . "\" to a valid item"); } From 2d2df22ee7902ce9283de22ffeae5d6a80d50907 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 20 Jul 2022 20:47:34 +0100 Subject: [PATCH 366/692] Ignore some PHPStan errors --- tests/phpstan/configs/actual-problems.neon | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 2306d422b..c3b0b6b47 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -105,6 +105,21 @@ parameters: count: 1 path: ../../../src/block/Cactus.php + - + message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" + count: 2 + path: ../../../src/block/ChorusFlower.php + + - + message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" + count: 2 + path: ../../../src/block/ChorusFlower.php + + - + message: "#^Parameter \\#3 \\$z of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" + count: 2 + path: ../../../src/block/ChorusFlower.php + - message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:getRealBlockSkyLightAt\\(\\) expects int, float\\|int given\\.$#" count: 1 From bedf79e2cda63a6a7f14348f1aa3eae92a79c388 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 21 Jul 2022 16:12:27 +0100 Subject: [PATCH 367/692] BaseWorldProvider: don't crash the server when encountering an unknown block --- src/world/format/io/BaseWorldProvider.php | 13 +++++++++---- src/world/format/io/GlobalBlockStateHandlers.php | 7 +++++++ src/world/format/io/leveldb/LevelDB.php | 5 +---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index dc9f296fb..cd1cc9b5f 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io; -use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\block\BlockTypeNames; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; use pocketmine\world\format\PalettedBlockArray; @@ -62,10 +61,16 @@ abstract class BaseWorldProvider implements WorldProvider{ $newStateData = $blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); if($newStateData === null){ //TODO: remember data for unknown states so we can implement them later - $newStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + $newStateData = GlobalBlockStateHandlers::getUnknownBlockStateData(); } - $newPalette[$k] = $blockStateDeserializer->deserialize($newStateData); + try{ + $newPalette[$k] = $blockStateDeserializer->deserialize($newStateData); + }catch(BlockStateDeserializeException){ + //TODO: this needs to be logged + //TODO: maybe we can remember unknown states for later saving instead of discarding them and destroying maps... + $newPalette[$k] = $blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); + } } //TODO: this is sub-optimal since it reallocates the offset table multiple times diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 2ba979a66..195b9337a 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -26,6 +26,7 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\block\BlockStateSerializer; +use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\data\bedrock\block\CachingBlockStateDeserializer; use pocketmine\data\bedrock\block\CachingBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; @@ -54,6 +55,8 @@ final class GlobalBlockStateHandlers{ private static ?BlockDataUpgrader $blockDataUpgrader = null; + private static ?BlockStateData $unknownBlockStateData = null; + public static function getDeserializer() : BlockStateDeserializer{ return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer(new BlockStateToBlockObjectDeserializer()); } @@ -83,4 +86,8 @@ final class GlobalBlockStateHandlers{ return self::$blockDataUpgrader; } + + public static function getUnknownBlockStateData() : BlockStateData{ + return self::$unknownBlockStateData ??= new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 92e2fa853..4d8794e31 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -26,9 +26,7 @@ namespace pocketmine\world\format\io\leveldb; use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; -use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializeException; -use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; @@ -178,9 +176,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $palette[] = $blockStateDeserializer->deserialize($blockStateData); }catch(BlockStateDeserializeException){ //TODO: remember data for unknown states so we can implement them later - //TODO: this is slow; we need to cache this //TODO: log this - $palette[] = $blockStateDeserializer->deserialize(new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION)); + $palette[] = $blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); } }catch(NbtException | BlockStateDeserializeException $e){ throw new CorruptedChunkException("Invalid blockstate NBT at offset $i in paletted storage: " . $e->getMessage(), 0, $e); From a7313ed9d938d7275a30a09c1b4e86323a531e05 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 15:57:37 +0100 Subject: [PATCH 368/692] Added rooted dirt --- build/generate-runtime-enum-serializers.php | 2 + src/block/Dirt.php | 42 +++++++++++----- src/block/Grass.php | 3 +- src/block/Mycelium.php | 3 +- src/block/utils/DirtType.php | 48 +++++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 11 ++++- .../BlockStateToBlockObjectDeserializer.php | 8 ++-- .../runtime/RuntimeEnumDeserializerTrait.php | 9 ++++ .../runtime/RuntimeEnumSerializerTrait.php | 9 ++++ src/item/StringToItemParser.php | 7 ++- .../block_factory_consistency_check.json | 2 +- 11 files changed, 124 insertions(+), 20 deletions(-) create mode 100644 src/block/utils/DirtType.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 65d2b3a61..c50414281 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -26,6 +26,7 @@ namespace pocketmine\build\generate_runtime_enum_serializers; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\MushroomBlockType; @@ -158,6 +159,7 @@ $enumsUsed = [ BellAttachmentType::getAll(), CopperOxidation::getAll(), CoralType::getAll(), + DirtType::getAll(), DyeColor::getAll(), LeverFacing::getAll(), MushroomBlockType::getAll(), diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 4a2d90d8a..90cfadc29 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -23,8 +23,10 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\DirtType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\item\Fertilizer; use pocketmine\item\Hoe; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -33,32 +35,50 @@ use pocketmine\player\Player; use pocketmine\world\sound\ItemUseOnBlockSound; class Dirt extends Opaque{ - protected bool $coarse = false; + protected DirtType $dirtType; - public function getRequiredTypeDataBits() : int{ return 1; } - - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ - $w->bool($this->coarse); + public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + $this->dirtType = DirtType::NORMAL(); + parent::__construct($idInfo, $name, $breakInfo); } - public function isCoarse() : bool{ return $this->coarse; } + public function getRequiredTypeDataBits() : int{ return 2; } + + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->dirtType($this->dirtType); + } + + public function getDirtType() : DirtType{ return $this->dirtType; } /** @return $this */ - public function setCoarse(bool $coarse) : self{ - $this->coarse = $coarse; + public function setDirtType(DirtType $dirtType) : self{ + $this->dirtType = $dirtType; return $this; } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + $world = $this->position->getWorld(); if($face === Facing::UP && $item instanceof Hoe){ $item->applyDamage(1); - $newBlock = $this->coarse ? VanillaBlocks::DIRT() : VanillaBlocks::FARMLAND(); - $world = $this->position->getWorld(); - $world->addSound($this->position->add(0.5, 0.5, 0.5), new ItemUseOnBlockSound($newBlock)); + $newBlock = $this->dirtType->equals(DirtType::NORMAL()) ? VanillaBlocks::FARMLAND() : VanillaBlocks::DIRT(); + $center = $this->position->add(0.5, 0.5, 0.5); + $world->addSound($center, new ItemUseOnBlockSound($newBlock)); $world->setBlock($this->position, $newBlock); + if($this->dirtType->equals(DirtType::ROOTED())){ + $world->dropItem($center, VanillaBlocks::HANGING_ROOTS()->asItem()); + } return true; + }elseif($this->dirtType->equals(DirtType::ROOTED()) && $item instanceof Fertilizer){ + $down = $this->getSide(Facing::DOWN); + if($down->getTypeId() !== BlockTypeIds::AIR){ + return true; + } + + $item->pop(); + $world->setBlock($down->position, VanillaBlocks::HANGING_ROOTS()); + //TODO: bonemeal particles, growth sounds } return false; diff --git a/src/block/Grass.php b/src/block/Grass.php index 14353ac7c..54975d046 100644 --- a/src/block/Grass.php +++ b/src/block/Grass.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\DirtType; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Hoe; @@ -72,7 +73,7 @@ class Grass extends Opaque{ $b = $world->getBlockAt($x, $y, $z); if( !($b instanceof Dirt) || - $b->isCoarse() || + !$b->getDirtType()->equals(DirtType::NORMAL()) || $world->getFullLightAt($x, $y + 1, $z) < 4 || $world->getBlockAt($x, $y + 1, $z)->getLightFilter() >= 2 ){ diff --git a/src/block/Mycelium.php b/src/block/Mycelium.php index f7e989c45..c87f89367 100644 --- a/src/block/Mycelium.php +++ b/src/block/Mycelium.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\DirtType; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -51,7 +52,7 @@ class Mycelium extends Opaque{ $z = mt_rand($this->position->z - 1, $this->position->z + 1); $world = $this->position->getWorld(); $block = $world->getBlockAt($x, $y, $z); - if($block instanceof Dirt && !$block->isCoarse()){ + if($block instanceof Dirt && $block->getDirtType()->equals(DirtType::NORMAL())){ if($block->getSide(Facing::UP) instanceof Transparent){ $ev = new BlockSpreadEvent($block, $this, VanillaBlocks::MYCELIUM()); $ev->call(); diff --git a/src/block/utils/DirtType.php b/src/block/utils/DirtType.php new file mode 100644 index 000000000..536268676 --- /dev/null +++ b/src/block/utils/DirtType.php @@ -0,0 +1,48 @@ +mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS); $this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE)); $this->map(Blocks::DIRT(), function(Dirt $block) : Writer{ + $dirtType = $block->getDirtType(); + if($dirtType->equals(DirtType::ROOTED())){ + return new Writer(Ids::DIRT_WITH_ROOTS); + } return Writer::create(Ids::DIRT) - ->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL); + ->writeString(StateNames::DIRT_TYPE, match($dirtType){ + DirtType::COARSE() => StringValues::DIRT_TYPE_COARSE, + DirtType::NORMAL() => StringValues::DIRT_TYPE_NORMAL, + default => throw new AssumptionFailedError("Unhandled dirt type " . $dirtType->name()) + }); }); $this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT))); $this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{ diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 77ac319be..fac4eef3a 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -33,6 +33,7 @@ use pocketmine\block\SweetBerryBush; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; @@ -641,12 +642,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS()); $this->map(Ids::DIRT, function(Reader $in) : Block{ return Blocks::DIRT() - ->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){ - StringValues::DIRT_TYPE_NORMAL => false, - StringValues::DIRT_TYPE_COARSE => true, + ->setDirtType(match($value = $in->readString(StateNames::DIRT_TYPE)){ + StringValues::DIRT_TYPE_NORMAL => DirtType::NORMAL(), + StringValues::DIRT_TYPE_COARSE => DirtType::COARSE(), default => throw $in->badValueException(StateNames::DIRT_TYPE, $value), }); }); + $this->map(Ids::DIRT_WITH_ROOTS, fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED())); $this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{ return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){ StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(), diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index 5c2a9adcd..b9c749242 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -62,6 +62,15 @@ trait RuntimeEnumDeserializerTrait{ }; } + public function dirtType(\pocketmine\block\utils\DirtType &$value) : void{ + $value = match($this->readInt(2)){ + 0 => \pocketmine\block\utils\DirtType::COARSE(), + 1 => \pocketmine\block\utils\DirtType::NORMAL(), + 2 => \pocketmine\block\utils\DirtType::ROOTED(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for DirtType") + }; + } + public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{ $value = match($this->readInt(4)){ 0 => \pocketmine\block\utils\DyeColor::BLACK(), diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index 16c01fd39..4b62803ad 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -62,6 +62,15 @@ trait RuntimeEnumSerializerTrait{ }); } + public function dirtType(\pocketmine\block\utils\DirtType $value) : void{ + $this->int(2, match($value){ + \pocketmine\block\utils\DirtType::COARSE() => 0, + \pocketmine\block\utils\DirtType::NORMAL() => 1, + \pocketmine\block\utils\DirtType::ROOTED() => 2, + default => throw new \pocketmine\utils\AssumptionFailedError("All DirtType cases should be covered") + }); + } + public function dyeColor(\pocketmine\block\utils\DyeColor $value) : void{ $this->int(4, match($value){ \pocketmine\block\utils\DyeColor::BLACK() => 0, diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index eab33700a..7586867ef 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -27,6 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\Light; use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; +use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; @@ -214,7 +215,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("clay_block", fn() => Blocks::CLAY()); $result->registerBlock("coal_block", fn() => Blocks::COAL()); $result->registerBlock("coal_ore", fn() => Blocks::COAL_ORE()); - $result->registerBlock("coarse_dirt", fn() => Blocks::DIRT()->setCoarse(true)); + $result->registerBlock("coarse_dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::COARSE())); $result->registerBlock("cobble", fn() => Blocks::COBBLESTONE()); $result->registerBlock("cobble_stairs", fn() => Blocks::COBBLESTONE_STAIRS()); $result->registerBlock("cobble_wall", fn() => Blocks::COBBLESTONE_WALL()); @@ -329,7 +330,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("diorite_slab", fn() => Blocks::DIORITE_SLAB()); $result->registerBlock("diorite_stairs", fn() => Blocks::DIORITE_STAIRS()); $result->registerBlock("diorite_wall", fn() => Blocks::DIORITE_WALL()); - $result->registerBlock("dirt", fn() => Blocks::DIRT()); + $result->registerBlock("dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::NORMAL())); + $result->registerBlock("dirt_with_roots", fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED())); $result->registerBlock("door_block", fn() => Blocks::OAK_DOOR()); $result->registerBlock("double_plant", fn() => Blocks::SUNFLOWER()); $result->registerBlock("double_red_sandstone_slab", fn() => Blocks::RED_SANDSTONE_SLAB()->setSlabType(SlabType::DOUBLE())); @@ -914,6 +916,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("repeater", fn() => Blocks::REDSTONE_REPEATER()); $result->registerBlock("repeater_block", fn() => Blocks::REDSTONE_REPEATER()); $result->registerBlock("reserved6", fn() => Blocks::RESERVED6()); + $result->registerBlock("rooted_dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED())); $result->registerBlock("rose", fn() => Blocks::POPPY()); $result->registerBlock("rose_bush", fn() => Blocks::ROSE_BUSH()); $result->registerBlock("sand", fn() => Blocks::SAND()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 5c59869c7..58c22103e 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From b13f333b2ecdd4eac81c772ebf5ef0e1cc8efe70 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 16:40:46 +0100 Subject: [PATCH 369/692] Added mud and packed mud --- src/block/BlockTypeIds.php | 2 +- src/block/Dirt.php | 9 +++++++++ src/block/VanillaBlocks.php | 5 +++++ .../block/convert/BlockObjectToBlockStateSerializer.php | 2 ++ .../convert/BlockStateToBlockObjectDeserializer.php | 2 ++ src/item/StringToItemParser.php | 2 ++ tests/phpunit/block/block_factory_consistency_check.json | 2 +- 7 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index cf84b2a60..5171f4094 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -702,5 +702,5 @@ final class BlockTypeIds{ public const CHORUS_FLOWER = 10675; public const CHORUS_PLANT = 10676; - public const FIRST_UNUSED_BLOCK_ID = 10676; + public const FIRST_UNUSED_BLOCK_ID = 10677; } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 90cfadc29..d496cdab5 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -29,10 +29,14 @@ use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Fertilizer; use pocketmine\item\Hoe; use pocketmine\item\Item; +use pocketmine\item\Potion; +use pocketmine\item\PotionType; +use pocketmine\item\SplashPotion; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\sound\ItemUseOnBlockSound; +use pocketmine\world\sound\WaterSplashSound; class Dirt extends Opaque{ protected DirtType $dirtType; @@ -79,6 +83,11 @@ class Dirt extends Opaque{ $item->pop(); $world->setBlock($down->position, VanillaBlocks::HANGING_ROOTS()); //TODO: bonemeal particles, growth sounds + }elseif(($item instanceof Potion || $item instanceof SplashPotion) && $item->getType()->equals(PotionType::WATER())){ + $item->pop(); + $world->setBlock($this->position, VanillaBlocks::MUD()); + $world->addSound($this->position, new WaterSplashSound(0.5)); + return true; } return false; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 830c59b1b..89c62732c 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -495,6 +495,7 @@ use function mb_strtolower; * @method static Slab MOSSY_STONE_BRICK_SLAB() * @method static Stair MOSSY_STONE_BRICK_STAIRS() * @method static Wall MOSSY_STONE_BRICK_WALL() + * @method static Opaque MUD() * @method static Opaque MUD_BRICKS() * @method static Slab MUD_BRICK_SLAB() * @method static Stair MUD_BRICK_STAIRS() @@ -534,6 +535,7 @@ use function mb_strtolower; * @method static Flower ORANGE_TULIP() * @method static Flower OXEYE_DAISY() * @method static PackedIce PACKED_ICE() + * @method static Opaque PACKED_MUD() * @method static DoublePlant PEONY() * @method static Flower PINK_TULIP() * @method static Podzol PODZOL() @@ -1520,6 +1522,9 @@ final class VanillaBlocks{ } private static function registerMudBlocks() : void{ + self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", new BreakInfo(1.0, ToolType::PICKAXE, 0, 15.0))); + $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); self::register("mud_bricks", new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 40c1c2641..1bb8ba733 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -510,6 +510,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); $this->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER); $this->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE); + $this->mapSimple(Blocks::MUD(), Ids::MUD); $this->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS); $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); $this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK); @@ -523,6 +524,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::NOTE_BLOCK(), Ids::NOTEBLOCK); $this->mapSimple(Blocks::OBSIDIAN(), Ids::OBSIDIAN); $this->mapSimple(Blocks::PACKED_ICE(), Ids::PACKED_ICE); + $this->mapSimple(Blocks::PACKED_MUD(), Ids::PACKED_MUD); $this->mapSimple(Blocks::PODZOL(), Ids::PODZOL); $this->mapSimple(Blocks::POLISHED_BLACKSTONE(), Ids::POLISHED_BLACKSTONE); $this->mapSimple(Blocks::POLISHED_BLACKSTONE_BRICKS(), Ids::POLISHED_BLACKSTONE_BRICKS); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index fac4eef3a..d82abac59 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -360,6 +360,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); + $this->map(Ids::MUD, fn() => Blocks::MUD()); $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); @@ -372,6 +373,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); + $this->map(Ids::PACKED_MUD, fn() => Blocks::PACKED_MUD()); $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); $this->map(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); $this->map(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 7586867ef..3d0f858d5 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -774,6 +774,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mossy_stone_brick_stairs", fn() => Blocks::MOSSY_STONE_BRICK_STAIRS()); $result->registerBlock("mossy_stone_brick_wall", fn() => Blocks::MOSSY_STONE_BRICK_WALL()); $result->registerBlock("mossy_stone_bricks", fn() => Blocks::MOSSY_STONE_BRICKS()); + $result->registerBlock("mud", fn() => Blocks::MUD()); $result->registerBlock("mud_bricks", fn() => Blocks::MUD_BRICKS()); $result->registerBlock("mud_brick_slab", fn() => Blocks::MUD_BRICK_SLAB()); $result->registerBlock("mud_brick_stairs", fn() => Blocks::MUD_BRICK_STAIRS()); @@ -824,6 +825,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("orange_tulip", fn() => Blocks::ORANGE_TULIP()); $result->registerBlock("oxeye_daisy", fn() => Blocks::OXEYE_DAISY()); $result->registerBlock("packed_ice", fn() => Blocks::PACKED_ICE()); + $result->registerBlock("packed_mud", fn() => Blocks::PACKED_MUD()); $result->registerBlock("peony", fn() => Blocks::PEONY()); $result->registerBlock("pink_tulip", fn() => Blocks::PINK_TULIP()); $result->registerBlock("plank", fn() => Blocks::OAK_PLANKS()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 58c22103e..f8042af50 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 17635e770b78625fc3e8d148ced3134a9bc432e6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 16:49:58 +0100 Subject: [PATCH 370/692] ................. --- src/world/sound/WaterSplashSound.php | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/world/sound/WaterSplashSound.php diff --git a/src/world/sound/WaterSplashSound.php b/src/world/sound/WaterSplashSound.php new file mode 100644 index 000000000..f7b662ec8 --- /dev/null +++ b/src/world/sound/WaterSplashSound.php @@ -0,0 +1,48 @@ + 1){ + throw new \InvalidArgumentException("Volume must be between 0 and 1"); + } + } + + public function encode(Vector3 $pos) : array{ + return [LevelSoundEventPacket::create( + LevelSoundEvent::SPLASH, + $pos, + (int) ($this->volume * 16777215), + ":", + false, + false + )]; + } +} From 38e495babf29d600d9f13cc76042071ca841fbd8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 17:20:23 +0100 Subject: [PATCH 371/692] Added mangrove roots and muddy mangrove roots --- src/block/BlockTypeIds.php | 4 ++- src/block/MangroveRoots.php | 31 +++++++++++++++++++ src/block/VanillaBlocks.php | 6 ++++ .../BlockObjectToBlockStateSerializer.php | 2 ++ .../BlockStateToBlockObjectDeserializer.php | 2 ++ src/item/StringToItemParser.php | 2 ++ 6 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/block/MangroveRoots.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 5171f4094..b6a5c31fe 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -701,6 +701,8 @@ final class BlockTypeIds{ public const POWDER_SNOW_CAULDRON = 10674; public const CHORUS_FLOWER = 10675; public const CHORUS_PLANT = 10676; + public const MANGROVE_ROOTS = 10677; + public const MUDDY_MANGROVE_ROOTS = 10678; - public const FIRST_UNUSED_BLOCK_ID = 10677; + public const FIRST_UNUSED_BLOCK_ID = 10679; } diff --git a/src/block/MangroveRoots.php b/src/block/MangroveRoots.php new file mode 100644 index 000000000..c9bc49a3b --- /dev/null +++ b/src/block/MangroveRoots.php @@ -0,0 +1,31 @@ +mapSimple(Blocks::MAGMA(), Ids::MAGMA); $this->mapSimple(Blocks::MANGROVE_FENCE(), Ids::MANGROVE_FENCE); $this->mapSimple(Blocks::MANGROVE_PLANKS(), Ids::MANGROVE_PLANKS); + $this->mapSimple(Blocks::MANGROVE_ROOTS(), Ids::MANGROVE_ROOTS); $this->mapSimple(Blocks::MELON(), Ids::MELON_BLOCK); $this->mapSimple(Blocks::MONSTER_SPAWNER(), Ids::MOB_SPAWNER); $this->mapSimple(Blocks::MOSSY_COBBLESTONE(), Ids::MOSSY_COBBLESTONE); $this->mapSimple(Blocks::MUD(), Ids::MUD); + $this->mapSimple(Blocks::MUDDY_MANGROVE_ROOTS(), Ids::MUDDY_MANGROVE_ROOTS); $this->mapSimple(Blocks::MUD_BRICKS(), Ids::MUD_BRICKS); $this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM); $this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index d82abac59..277cdb394 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -357,10 +357,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); $this->map(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); + $this->map(Ids::MANGROVE_ROOTS, fn() => Blocks::MANGROVE_ROOTS()); $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); $this->map(Ids::MUD, fn() => Blocks::MUD()); + $this->map(Ids::MUDDY_MANGROVE_ROOTS, fn() => Blocks::MUDDY_MANGROVE_ROOTS()); $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 3d0f858d5..ced95eba5 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -750,6 +750,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mangrove_log", fn() => Blocks::MANGROVE_LOG()->setStripped(false)); $result->registerBlock("mangrove_planks", fn() => Blocks::MANGROVE_PLANKS()); $result->registerBlock("mangrove_pressure_plate", fn() => Blocks::MANGROVE_PRESSURE_PLATE()); + $result->registerBlock("mangrove_roots", fn() => Blocks::MANGROVE_ROOTS()); $result->registerBlock("mangrove_sign", fn() => Blocks::MANGROVE_SIGN()); $result->registerBlock("mangrove_slab", fn() => Blocks::MANGROVE_SLAB()); $result->registerBlock("mangrove_stairs", fn() => Blocks::MANGROVE_STAIRS()); @@ -779,6 +780,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mud_brick_slab", fn() => Blocks::MUD_BRICK_SLAB()); $result->registerBlock("mud_brick_stairs", fn() => Blocks::MUD_BRICK_STAIRS()); $result->registerBlock("mud_brick_wall", fn() => Blocks::MUD_BRICK_WALL()); + $result->registerBlock("muddy_mangrove_roots", fn() => Blocks::MUDDY_MANGROVE_ROOTS()); $result->registerBlock("mushroom_stem", fn() => Blocks::MUSHROOM_STEM()); $result->registerBlock("mycelium", fn() => Blocks::MYCELIUM()); $result->registerBlock("nether_brick_block", fn() => Blocks::NETHER_BRICKS()); From 4419161a496f00e39d9b25e848551804ea3d2909 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 17:39:26 +0100 Subject: [PATCH 372/692] Updated consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index f8042af50..4669ee31b 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 102406ee79f57759fa75e603c1fb68ab23e7e12a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 17:40:38 +0100 Subject: [PATCH 373/692] Added froglights --- build/generate-runtime-enum-serializers.php | 2 + src/block/BlockTypeIds.php | 3 +- src/block/Froglight.php | 56 +++++++++++++++++++ src/block/VanillaBlocks.php | 2 + src/block/utils/FroglightType.php | 48 ++++++++++++++++ .../BlockObjectToBlockStateSerializer.php | 11 ++++ .../BlockStateToBlockObjectDeserializer.php | 4 ++ .../runtime/RuntimeEnumDeserializerTrait.php | 9 +++ .../runtime/RuntimeEnumSerializerTrait.php | 9 +++ src/item/StringToItemParser.php | 5 ++ .../block_factory_consistency_check.json | 2 +- 11 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 src/block/Froglight.php create mode 100644 src/block/utils/FroglightType.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index c50414281..7118abf41 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -28,6 +28,7 @@ use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\FroglightType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\MushroomBlockType; use pocketmine\block\utils\SkullType; @@ -161,6 +162,7 @@ $enumsUsed = [ CoralType::getAll(), DirtType::getAll(), DyeColor::getAll(), + FroglightType::getAll(), LeverFacing::getAll(), MushroomBlockType::getAll(), SkullType::getAll(), diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index b6a5c31fe..ddbb4b48a 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -703,6 +703,7 @@ final class BlockTypeIds{ public const CHORUS_PLANT = 10676; public const MANGROVE_ROOTS = 10677; public const MUDDY_MANGROVE_ROOTS = 10678; + public const FROGLIGHT = 10679; - public const FIRST_UNUSED_BLOCK_ID = 10679; + public const FIRST_UNUSED_BLOCK_ID = 10680; } diff --git a/src/block/Froglight.php b/src/block/Froglight.php new file mode 100644 index 000000000..8b35a6681 --- /dev/null +++ b/src/block/Froglight.php @@ -0,0 +1,56 @@ +froglightType = FroglightType::OCHRE(); + parent::__construct($idInfo, $name, $breakInfo); + } + + public function getRequiredTypeDataBits() : int{ return 2; } + + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->froglightType($this->froglightType); + } + + public function getFroglightType() : FroglightType{ return $this->froglightType; } + + /** @return $this */ + public function setFroglightType(FroglightType $froglightType) : self{ + $this->froglightType = $froglightType; + return $this; + } + + public function getLightLevel() : int{ + return 15; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 89b4d9aef..0a065caa3 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -393,6 +393,7 @@ use function mb_strtolower; * @method static Fire FIRE() * @method static FletchingTable FLETCHING_TABLE() * @method static FlowerPot FLOWER_POT() + * @method static Froglight FROGLIGHT() * @method static FrostedIce FROSTED_ICE() * @method static Furnace FURNACE() * @method static GildedBlackstone GILDED_BLACKSTONE() @@ -1170,6 +1171,7 @@ final class VanillaBlocks{ self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", new BreakInfo(0.7, ToolType::AXE))); //TODO: muddy mangrove roots are supposed to be axis-rotatable (Bedrock parity issue https://bugs.mojang.com/browse/MCPE-153721) self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new BreakInfo(0.7, ToolType::SHOVEL))); + self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new BreakInfo(0.3))); self::registerBlocksR13(); self::registerBlocksR14(); diff --git a/src/block/utils/FroglightType.php b/src/block/utils/FroglightType.php new file mode 100644 index 000000000..f6b9c1d13 --- /dev/null +++ b/src/block/utils/FroglightType.php @@ -0,0 +1,48 @@ +writeBool(StateNames::UPDATE_BIT, false); //to keep MCPE happy }); + $this->map(Blocks::FROGLIGHT(), function(Froglight $block){ + return Writer::create(match($block->getFroglightType()){ + FroglightType::OCHRE() => Ids::OCHRE_FROGLIGHT, + FroglightType::PEARLESCENT() => Ids::PEARLESCENT_FROGLIGHT, + FroglightType::VERDANT() => Ids::VERDANT_FROGLIGHT, + default => throw new AssumptionFailedError("Unhandled froglight type " . $block->getFroglightType()->name()) + }) + ->writePillarAxis($block->getAxis()); + }); $this->map(Blocks::FROSTED_ICE(), function(FrostedIce $block) : Writer{ return Writer::create(Ids::FROSTED_ICE) ->writeInt(StateNames::AGE, $block->getAge()); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 277cdb394..38f1bcebb 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -35,6 +35,7 @@ use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\FroglightType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; @@ -918,11 +919,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize }); $this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS()); $this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS()); + $this->map(Ids::OCHRE_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::OCHRE())->setAxis($in->readPillarAxis())); $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); $this->map(Ids::OXIDIZED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED())); $this->map(Ids::OXIDIZED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED())); $this->mapSlab(Ids::OXIDIZED_CUT_COPPER_SLAB, Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED())); $this->mapStairs(Ids::OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED())); + $this->map(Ids::PEARLESCENT_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::PEARLESCENT())->setAxis($in->readPillarAxis())); $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); $this->map(Ids::PLANKS, function(Reader $in) : Block{ return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ @@ -1265,6 +1268,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->map(Ids::UNPOWERED_COMPARATOR, fn(Reader $in) => Helper::decodeComparator(Blocks::REDSTONE_COMPARATOR(), $in)); $this->map(Ids::UNPOWERED_REPEATER, fn(Reader $in) => Helper::decodeRepeater(Blocks::REDSTONE_REPEATER(), $in) ->setPowered(false)); + $this->map(Ids::VERDANT_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::VERDANT())->setAxis($in->readPillarAxis())); $this->map(Ids::VINE, function(Reader $in) : Block{ $vineDirectionFlags = $in->readBoundedInt(StateNames::VINE_DIRECTION_BITS, 0, 15); return Blocks::VINES() diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index b9c749242..7bcbd09ed 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -93,6 +93,15 @@ trait RuntimeEnumDeserializerTrait{ }; } + public function froglightType(\pocketmine\block\utils\FroglightType &$value) : void{ + $value = match($this->readInt(2)){ + 0 => \pocketmine\block\utils\FroglightType::OCHRE(), + 1 => \pocketmine\block\utils\FroglightType::PEARLESCENT(), + 2 => \pocketmine\block\utils\FroglightType::VERDANT(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for FroglightType") + }; + } + public function leverFacing(\pocketmine\block\utils\LeverFacing &$value) : void{ $value = match($this->readInt(3)){ 0 => \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X(), diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index 4b62803ad..e3bdcbccb 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -93,6 +93,15 @@ trait RuntimeEnumSerializerTrait{ }); } + public function froglightType(\pocketmine\block\utils\FroglightType $value) : void{ + $this->int(2, match($value){ + \pocketmine\block\utils\FroglightType::OCHRE() => 0, + \pocketmine\block\utils\FroglightType::PEARLESCENT() => 1, + \pocketmine\block\utils\FroglightType::VERDANT() => 2, + default => throw new \pocketmine\utils\AssumptionFailedError("All FroglightType cases should be covered") + }); + } + public function leverFacing(\pocketmine\block\utils\LeverFacing $value) : void{ $this->int(3, match($value){ \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index ced95eba5..a538380ce 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -29,6 +29,7 @@ use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; +use pocketmine\block\utils\FroglightType; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; @@ -99,6 +100,10 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock($prefix . "cut_copper_slab", fn() => Blocks::CUT_COPPER_SLAB()->setOxidation($oxidation)->setWaxed($waxed)); } } + + foreach(FroglightType::getAll() as $froglightType){ + $result->registerBlock($froglightType->name() . "_froglight", fn() => Blocks::FROGLIGHT()->setFroglightType($froglightType)); + } } private static function registerBlocks(self $result) : void{ diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 4669ee31b..1b4ce3d40 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 91e91b1d9fbf7b9e7e1c4b138759ef66055d6bca Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 17:56:08 +0100 Subject: [PATCH 374/692] Reduce code width when tool tiers are given to BlockBreakInfo this is the majority of uses of harvest level --- src/block/BlockBreakInfo.php | 5 ++ src/block/VanillaBlocks.php | 138 +++++++++++++++++------------------ 2 files changed, 74 insertions(+), 69 deletions(-) diff --git a/src/block/BlockBreakInfo.php b/src/block/BlockBreakInfo.php index a2d43efbc..429ad7c53 100644 --- a/src/block/BlockBreakInfo.php +++ b/src/block/BlockBreakInfo.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\ToolTier; use function get_class; class BlockBreakInfo{ @@ -52,6 +53,10 @@ class BlockBreakInfo{ $this->blastResistance = $blastResistance ?? $hardness * 5; } + public static function tier(float $hardness, int $toolType, ToolTier $toolTier, ?float $blastResistance = null) : self{ + return new self($hardness, $toolType, $toolTier->getHarvestLevel(), $blastResistance); + } + public static function instant(int $toolType = BlockToolType::NONE, int $toolHarvestLevel = 0) : self{ return new self(0.0, $toolType, $toolHarvestLevel, 0.0); } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 0a065caa3..64d24e72c 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -741,7 +741,7 @@ final class VanillaBlocks{ $railBreakInfo = new BlockBreakInfo(0.7); self::register("activator_rail", new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); self::register("air", new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); - self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 6000.0))); self::register("bamboo", new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ @@ -762,13 +762,13 @@ final class VanillaBlocks{ self::register("bedrock", new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); self::register("beetroots", new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); - self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); - $bricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $bricksBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("brick_stairs", new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); self::register("bricks", new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); @@ -780,9 +780,9 @@ final class VanillaBlocks{ $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); self::register("chest", new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); - $cobblestoneBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $cobblestoneBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("cobblestone", $cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); self::register("mossy_cobblestone", new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); self::register("cobblestone_stairs", new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); @@ -790,13 +790,13 @@ final class VanillaBlocks{ self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new BreakInfo(7.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", BreakInfo::tier(7.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); - self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); @@ -804,19 +804,19 @@ final class VanillaBlocks{ self::register("peony", new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); self::register("double_tallgrass", new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); self::register("large_fern", new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("dried_kelp", new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0))); + self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); + self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 6000.0))); self::register("end_portal_frame", new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); self::register("end_rod", new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); - self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD(), 45.0))); - $endBrickBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); + $endBrickBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD(), 4.0); self::register("end_stone_bricks", new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); self::register("end_stone_brick_stairs", new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new BreakInfo(22.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0))); + self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", BreakInfo::tier(22.5, ToolType::PICKAXE, ToolTier::WOOD(), 3000.0))); self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); @@ -834,30 +834,30 @@ final class VanillaBlocks{ self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); $glassBreakInfo = new BreakInfo(0.3); self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); self::register("glass_pane", new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); - self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new BreakInfo(10.0, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0))); + self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", BreakInfo::tier(10.0, ToolType::PICKAXE, ToolTier::DIAMOND(), 50.0))); self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); - $hardenedClayBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); + $hardenedClayBreakInfo = BreakInfo::tier(1.25, ToolType::PICKAXE, ToolTier::WOOD(), 21.0); self::register("hardened_clay", new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); self::register("hardened_glass", new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); self::register("hardened_glass_pane", new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); - self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD(), 15.0))); self::register("ice", new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); $updateBlockBreakInfo = new BreakInfo(1.0); @@ -865,32 +865,32 @@ final class VanillaBlocks{ self::register("info_update2", new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); self::register("invisible_bedrock", new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); - $ironBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0); + $ironBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::STONE(), 30.0); self::register("iron", new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); self::register("iron_bars", new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); - $ironDoorBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0); + $ironDoorBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 25.0); self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); - $lanternBreakInfo = new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $lanternBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()); self::register("lantern", new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); self::register("soul_lantern", new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); - self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::STONE()))); self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); - self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); - self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); - $netherBrickBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $netherBrickBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("nether_bricks", new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); self::register("red_nether_bricks", new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); self::register("nether_brick_fence", new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); @@ -900,10 +900,10 @@ final class VanillaBlocks{ self::register("cracked_nether_bricks", new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); self::register("nether_portal", new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); - self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); - self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new BreakInfo(0.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", BreakInfo::tier(0.4, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); @@ -911,7 +911,7 @@ final class VanillaBlocks{ self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); self::register("powered_rail", new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); - $prismarineBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $prismarineBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("prismarine", new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); self::register("dark_prismarine", new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); self::register("prismarine_bricks", new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); @@ -926,12 +926,12 @@ final class VanillaBlocks{ self::register("pumpkin_stem", new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); - $purpurBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $purpurBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("purpur", new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); self::register("purpur_pillar", new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); self::register("purpur_stairs", new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); - $quartzBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $quartzBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD()); self::register("quartz", new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); self::register("chiseled_quartz", new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); self::register("quartz_pillar", new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); @@ -943,7 +943,7 @@ final class VanillaBlocks{ self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); - self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new BreakInfo(5.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); @@ -959,14 +959,14 @@ final class VanillaBlocks{ self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); - self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", new BreakInfo(0.2, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); - self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new BreakInfo(0.1, ToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()))); + self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", BreakInfo::tier(0.2, ToolType::SHOVEL, ToolTier::WOOD()))); + self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", BreakInfo::tier(0.1, ToolType::SHOVEL, ToolTier::WOOD()))); self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); self::register("shulker_box", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); - $stoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $stoneBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register( "stone", $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ @@ -1011,10 +1011,10 @@ final class VanillaBlocks{ self::register("mossy_stone_brick_stairs", new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); //TODO: in the future this won't be the same for all the types - $stoneSlabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $stoneSlabBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("brick_slab", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); self::register("cobblestone_slab", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); @@ -1046,7 +1046,7 @@ final class VanillaBlocks{ self::register("smooth_quartz_slab", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); self::register("stone_slab", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); - self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); @@ -1067,7 +1067,7 @@ final class VanillaBlocks{ self::register("water", new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); self::register("lily_pad", new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); - $weightedPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $weightedPressurePlateBreakInfo = BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()); self::register("weighted_pressure_plate_heavy", new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); self::register("weighted_pressure_plate_light", new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); self::register("wheat", new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); @@ -1087,7 +1087,7 @@ final class VanillaBlocks{ self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); } - $sandstoneBreakInfo = new BreakInfo(0.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $sandstoneBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD()); self::register("red_sandstone_stairs", new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("smooth_red_sandstone_stairs", new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("red_sandstone", new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); @@ -1102,7 +1102,7 @@ final class VanillaBlocks{ self::register("cut_sandstone", new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); self::register("smooth_sandstone", new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); - self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", BreakInfo::tier(1.4, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("dyed_shulker_box", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); self::register("stained_glass", new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); self::register("stained_glass_pane", new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); @@ -1110,7 +1110,7 @@ final class VanillaBlocks{ self::register("stained_hardened_glass", new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); self::register("stained_hardened_glass_pane", new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); self::register("carpet", new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); - self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", new BreakInfo(1.8, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", BreakInfo::tier(1.8, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); self::register("wool", new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ @@ -1124,7 +1124,7 @@ final class VanillaBlocks{ })); //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap - $wallBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $wallBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("cobblestone_wall", new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); self::register("andesite_wall", new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); self::register("brick_wall", new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); @@ -1142,7 +1142,7 @@ final class VanillaBlocks{ self::registerElements(); - $chemistryTableBreakInfo = new BreakInfo(2.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $chemistryTableBreakInfo = BreakInfo::tier(2.5, ToolType::PICKAXE, ToolTier::WOOD()); self::register("compound_creator", new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); self::register("element_constructor", new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); self::register("lab_table", new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); @@ -1376,7 +1376,7 @@ final class VanillaBlocks{ self::register("deepslate_lapis_lazuli_ore", new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); self::register("deepslate_redstone_ore", new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $netherrackOreBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $netherrackOreBreakInfo = BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()); self::register("nether_quartz_ore", new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); self::register("nether_gold_ore", new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); } @@ -1405,20 +1405,20 @@ final class VanillaBlocks{ private static function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones - $slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $slabBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); - self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0))); - $netheriteBreakInfo = new BreakInfo(50, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0); + self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", BreakInfo::tier(30, ToolType::PICKAXE, ToolTier::DIAMOND(), 3600.0))); + $netheriteBreakInfo = BreakInfo::tier(50, ToolType::PICKAXE, ToolTier::DIAMOND(), 3600.0); self::register("netherite", new class(new BID(Ids::NETHERITE), "Netherite Block", $netheriteBreakInfo) extends Opaque{ public function isFireProofAsItem() : bool{ return true; } }); - $basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0); + $basaltBreakInfo = BreakInfo::tier(1.25, ToolType::PICKAXE, ToolTier::WOOD(), 21.0); self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); self::register("polished_basalt", new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); self::register("smooth_basalt", new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); - $blackstoneBreakInfo = new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $blackstoneBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("blackstone", new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); self::register("blackstone_slab", new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); self::register("blackstone_stairs", new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); @@ -1430,7 +1430,7 @@ final class VanillaBlocks{ $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); self::register("polished_blackstone", new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new BreakInfo(0.5, ToolType::PICKAXE))); - self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), new BreakInfo(0.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); self::register("polished_blackstone_slab", new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); self::register("polished_blackstone_stairs", new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); self::register("polished_blackstone_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); @@ -1461,42 +1461,42 @@ final class VanillaBlocks{ private static function registerBlocksR17() : void{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock - self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", new BreakInfo(0.75, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", new BreakInfo(1.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", BreakInfo::tier(0.75, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); - self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); - self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new BreakInfo(5, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); + self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::STONE(), 30.0))); + self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); + self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::STONE(), 30.0))); - $deepslateBreakInfo = new BreakInfo(3, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + $deepslateBreakInfo = BreakInfo::tier(3, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); self::register("deepslate", new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 - self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0))); + self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0))); - $deepslateBrickBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + $deepslateBrickBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); self::register("deepslate_bricks", new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); self::register("deepslate_brick_slab", new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); self::register("deepslate_brick_stairs", new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); self::register("deepslate_brick_wall", new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); self::register("cracked_deepslate_bricks", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); - $deepslateTilesBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + $deepslateTilesBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); self::register("deepslate_tiles", new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); self::register("deepslate_tile_slab", new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); self::register("deepslate_tile_stairs", new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); self::register("deepslate_tile_wall", new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); self::register("cracked_deepslate_tiles", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); - $cobbledDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + $cobbledDeepslateBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); self::register("cobbled_deepslate", new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_slab", new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_stairs", new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_wall", new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); - $polishedDeepslateBreakInfo = new BreakInfo(3.5, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 18.0); + $polishedDeepslateBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); self::register("polished_deepslate", new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_slab", new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_stairs", new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); @@ -1505,7 +1505,7 @@ final class VanillaBlocks{ self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); //blast resistance should be 30 if we were matched with java :( - $copperBreakInfo = new BreakInfo(3.0, ToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 18.0); + $copperBreakInfo = BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::STONE(), 18.0); self::register("lightning_rod", new LightningRod(new BID(Ids::LIGHTNING_ROD), "Lightning Rod", $copperBreakInfo)); self::register("copper", new Copper(new BID(Ids::COPPER), "Copper Block", $copperBreakInfo)); @@ -1533,7 +1533,7 @@ final class VanillaBlocks{ self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new BreakInfo(0.5, ToolType::SHOVEL))); self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", new BreakInfo(1.0, ToolType::PICKAXE, 0, 15.0))); - $mudBricksBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); + $mudBricksBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); self::register("mud_bricks", new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); self::register("mud_brick_slab", new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); @@ -1542,7 +1542,7 @@ final class VanillaBlocks{ } private static function registerCauldronBlocks() : void{ - $cauldronBreakInfo = new BreakInfo(2, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); + $cauldronBreakInfo = BreakInfo::tier(2, ToolType::PICKAXE, ToolTier::WOOD()); self::register("cauldron", new Cauldron(new BID(Ids::CAULDRON, TileCauldron::class), "Cauldron", $cauldronBreakInfo)); self::register("water_cauldron", new WaterCauldron(new BID(Ids::WATER_CAULDRON, TileCauldron::class), "Water Cauldron", $cauldronBreakInfo)); From cffa3b8a727dc37031e9c2a68973afdd45834bcf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 18:21:04 +0100 Subject: [PATCH 375/692] Reduce BlockBreakInfo code width further by specializing for common tool types this considerably reduces width and makes adding new stuff much less irritating. --- src/block/BlockBreakInfo.php | 12 ++ src/block/VanillaBlocks.php | 246 +++++++++++++++++------------------ 2 files changed, 135 insertions(+), 123 deletions(-) diff --git a/src/block/BlockBreakInfo.php b/src/block/BlockBreakInfo.php index 429ad7c53..b49cb6f13 100644 --- a/src/block/BlockBreakInfo.php +++ b/src/block/BlockBreakInfo.php @@ -57,6 +57,18 @@ class BlockBreakInfo{ return new self($hardness, $toolType, $toolTier->getHarvestLevel(), $blastResistance); } + public static function pickaxe(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : self{ + return new self($hardness, BlockToolType::PICKAXE, $toolTier?->getHarvestLevel() ?? 0, $blastResistance); + } + + public static function shovel(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : self{ + return new self($hardness, BlockToolType::SHOVEL, $toolTier?->getHarvestLevel() ?? 0, $blastResistance); + } + + public static function axe(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : self{ + return new self($hardness, BlockToolType::AXE, $toolTier?->getHarvestLevel() ?? 0, $blastResistance); + } + public static function instant(int $toolType = BlockToolType::NONE, int $toolHarvestLevel = 0) : self{ return new self(0.0, $toolType, $toolHarvestLevel, 0.0); } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 64d24e72c..f3fda7dba 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -741,7 +741,7 @@ final class VanillaBlocks{ $railBreakInfo = new BlockBreakInfo(0.7); self::register("activator_rail", new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); self::register("air", new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); - self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 6000.0))); + self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0))); self::register("bamboo", new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ @@ -752,23 +752,23 @@ final class VanillaBlocks{ })); self::register("bamboo_sapling", new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", BreakInfo::instant())); - $bannerBreakInfo = new BreakInfo(1.0, ToolType::AXE); + $bannerBreakInfo = BreakInfo::axe(1.0); self::register("banner", new FloorBanner(new BID(Ids::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); self::register("wall_banner", new WallBanner(new BID(Ids::WALL_BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - self::register("barrel", new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", new BreakInfo(2.5, ToolType::AXE))); + self::register("barrel", new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", BreakInfo::axe(2.5))); self::register("barrier", new Transparent(new BID(Ids::BARRIER), "Barrier", BreakInfo::indestructible())); self::register("beacon", new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new BreakInfo(3.0))); self::register("bed", new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); self::register("bedrock", new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); self::register("beetroots", new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); - self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new BreakInfo(2.8, ToolType::PICKAXE))); - self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new BreakInfo(1.5, ToolType::AXE))); - self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", BreakInfo::pickaxe(5.0, ToolTier::WOOD()))); + self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", BreakInfo::pickaxe(2.8))); + self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", BreakInfo::pickaxe(2.0, ToolTier::WOOD()))); + self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", BreakInfo::axe(1.5))); + self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); - $bricksBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $bricksBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("brick_stairs", new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); self::register("bricks", new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); @@ -777,49 +777,49 @@ final class VanillaBlocks{ self::register("cake", new Cake(new BID(Ids::CAKE), "Cake", new BreakInfo(0.5))); self::register("carrots", new Carrot(new BID(Ids::CARROTS), "Carrot Block", BreakInfo::instant())); - $chestBreakInfo = new BreakInfo(2.5, ToolType::AXE); + $chestBreakInfo = BreakInfo::axe(2.5); self::register("chest", new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); - self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", new BreakInfo(0.6, ToolType::SHOVEL))); - self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); + self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", BreakInfo::shovel(0.6))); + self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0))); - $cobblestoneBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $cobblestoneBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("cobblestone", $cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); self::register("mossy_cobblestone", new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); self::register("cobblestone_stairs", new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); self::register("mossy_cobblestone_stairs", new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new BreakInfo(0.2, ToolType::AXE, 0, 15.0))); - self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", BreakInfo::tier(7.0, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new BreakInfo(2.5, ToolType::AXE))); - self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new BreakInfo(0.2, ToolType::AXE))); + self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", BreakInfo::axe(0.2, null, 15.0))); + self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", BreakInfo::pickaxe(7.0, ToolTier::WOOD()))); + self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", BreakInfo::axe(2.5))); + self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", BreakInfo::axe(0.2))); self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); - self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); - self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0))); + self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", BreakInfo::shovel(0.5))); self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); self::register("rose_bush", new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", BreakInfo::instant())); self::register("peony", new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); self::register("double_tallgrass", new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); self::register("large_fern", new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", BreakInfo::pickaxe(3.0, ToolTier::WOOD()))); self::register("dried_kelp", new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); - self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 6000.0))); + self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0))); + self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0))); self::register("end_portal_frame", new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); self::register("end_rod", new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); - self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD(), 45.0))); + self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 45.0))); - $endBrickBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD(), 4.0); + $endBrickBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD(), 4.0); self::register("end_stone_bricks", new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); self::register("end_stone_brick_stairs", new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", BreakInfo::tier(22.5, ToolType::PICKAXE, ToolTier::WOOD(), 3000.0))); - self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new BreakInfo(0.6, ToolType::SHOVEL))); + self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0))); + self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", BreakInfo::shovel(0.6))); self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); - self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new BreakInfo(2.5, ToolType::AXE, 0, 2.5))); + self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", BreakInfo::axe(2.5, null, 2.5))); self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", BreakInfo::instant())); self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", BreakInfo::instant())); self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", BreakInfo::instant())); @@ -833,64 +833,64 @@ final class VanillaBlocks{ self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new BreakInfo(2.5, ToolType::PICKAXE))); - self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", BreakInfo::pickaxe(2.5))); + self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); + self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); + self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); $glassBreakInfo = new BreakInfo(0.3); self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); self::register("glass_pane", new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); - self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", BreakInfo::tier(10.0, ToolType::PICKAXE, ToolTier::DIAMOND(), 50.0))); - self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new BreakInfo(0.3, ToolType::PICKAXE))); - self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); + self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", BreakInfo::pickaxe(10.0, ToolTier::DIAMOND(), 50.0))); + self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", BreakInfo::pickaxe(0.3))); + self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", BreakInfo::pickaxe(3.0, ToolTier::IRON(), 30.0))); - $grassBreakInfo = new BreakInfo(0.6, ToolType::SHOVEL); + $grassBreakInfo = BreakInfo::shovel(0.6); self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); - self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", new BreakInfo(0.6, ToolType::SHOVEL))); + self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", BreakInfo::shovel(0.6))); - $hardenedClayBreakInfo = BreakInfo::tier(1.25, ToolType::PICKAXE, ToolTier::WOOD(), 21.0); + $hardenedClayBreakInfo = BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0); self::register("hardened_clay", new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); $hardenedGlassBreakInfo = new BreakInfo(10.0); self::register("hardened_glass", new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); self::register("hardened_glass_pane", new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); - self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD(), 15.0))); - self::register("ice", new Ice(new BID(Ids::ICE), "Ice", new BreakInfo(0.5, ToolType::PICKAXE))); + self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 15.0))); + self::register("ice", new Ice(new BID(Ids::ICE), "Ice", BreakInfo::pickaxe(0.5))); $updateBlockBreakInfo = new BreakInfo(1.0); self::register("info_update", new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); self::register("info_update2", new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); self::register("invisible_bedrock", new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); - $ironBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::STONE(), 30.0); + $ironBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::STONE(), 30.0); self::register("iron", new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); self::register("iron_bars", new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); - $ironDoorBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 25.0); + $ironDoorBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 25.0); self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new BreakInfo(0.8, ToolType::AXE))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new BreakInfo(0.4, ToolType::AXE))); + self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", BreakInfo::axe(0.8))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", BreakInfo::axe(0.4))); - $lanternBreakInfo = BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()); + $lanternBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::WOOD()); self::register("lantern", new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); self::register("soul_lantern", new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); - self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::STONE()))); + self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", BreakInfo::pickaxe(3.0, ToolTier::STONE()))); self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); - self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new BreakInfo(2.0, ToolType::AXE))); + self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", BreakInfo::axe(2.0))); self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); - self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new BreakInfo(2.5, ToolType::AXE))); - self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new BreakInfo(1.0, ToolType::AXE))); + self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", BreakInfo::axe(2.5))); + self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); + self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", BreakInfo::axe(1.0))); self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); - self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new BreakInfo(0.6, ToolType::SHOVEL))); + self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", BreakInfo::pickaxe(5.0, ToolTier::WOOD()))); + self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", BreakInfo::shovel(0.6))); - $netherBrickBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $netherBrickBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("nether_bricks", new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); self::register("red_nether_bricks", new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); self::register("nether_brick_fence", new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); @@ -900,18 +900,18 @@ final class VanillaBlocks{ self::register("cracked_nether_bricks", new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); self::register("nether_portal", new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); - self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", BreakInfo::pickaxe(3.0, ToolTier::WOOD()))); self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); - self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", BreakInfo::tier(0.4, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new BreakInfo(0.8, ToolType::AXE))); - self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BreakInfo(35.0 /* 50 in PC */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new BreakInfo(0.5, ToolType::PICKAXE))); - self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", BreakInfo::pickaxe(0.4, ToolTier::WOOD()))); + self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", BreakInfo::axe(0.8))); + self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", BreakInfo::pickaxe(35.0 /* 50 in PC */, ToolTier::DIAMOND(), 6000.0))); + self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", BreakInfo::pickaxe(0.5))); + self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", BreakInfo::shovel(0.5))); self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); self::register("powered_rail", new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); - $prismarineBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $prismarineBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); self::register("prismarine", new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); self::register("dark_prismarine", new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); self::register("prismarine_bricks", new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); @@ -919,19 +919,19 @@ final class VanillaBlocks{ self::register("dark_prismarine_stairs", new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); self::register("prismarine_stairs", new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); - $pumpkinBreakInfo = new BreakInfo(1.0, ToolType::AXE); + $pumpkinBreakInfo = BreakInfo::axe(1.0); self::register("pumpkin", new Pumpkin(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); self::register("carved_pumpkin", new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); self::register("lit_pumpkin", new LitPumpkin(new BID(Ids::LIT_PUMPKIN), "Jack o'Lantern", $pumpkinBreakInfo)); self::register("pumpkin_stem", new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); - $purpurBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $purpurBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); self::register("purpur", new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); self::register("purpur_pillar", new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); self::register("purpur_stairs", new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); - $quartzBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD()); + $quartzBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD()); self::register("quartz", new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); self::register("chiseled_quartz", new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); self::register("quartz_pillar", new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); @@ -943,7 +943,7 @@ final class VanillaBlocks{ self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); - self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", BreakInfo::tier(5.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); + self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0))); self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); @@ -951,7 +951,7 @@ final class VanillaBlocks{ self::register("redstone_wire", new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); self::register("reserved6", new Reserved6(new BID(Ids::RESERVED6), "reserved6", BreakInfo::instant())); - $sandBreakInfo = new BreakInfo(0.5, ToolType::SHOVEL); + $sandBreakInfo = BreakInfo::shovel(0.5); self::register("sand", new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); self::register("red_sand", new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); @@ -959,14 +959,14 @@ final class VanillaBlocks{ self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); - self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", BreakInfo::tier(0.2, ToolType::SHOVEL, ToolTier::WOOD()))); - self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", BreakInfo::tier(0.1, ToolType::SHOVEL, ToolTier::WOOD()))); - self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", BreakInfo::shovel(0.2, ToolTier::WOOD()))); + self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", BreakInfo::shovel(0.1, ToolTier::WOOD()))); + self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", BreakInfo::shovel(0.5))); self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); - $shulkerBoxBreakInfo = new BreakInfo(2, ToolType::PICKAXE); + $shulkerBoxBreakInfo = BreakInfo::pickaxe(2); self::register("shulker_box", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); - $stoneBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $stoneBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); self::register( "stone", $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ @@ -991,7 +991,7 @@ final class VanillaBlocks{ self::register("cracked_stone_bricks", $crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS), "Cracked Stone Bricks", $stoneBreakInfo)); self::register("chiseled_stone_bricks", $chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS), "Chiseled Stone Bricks", $stoneBreakInfo)); - $infestedStoneBreakInfo = new BreakInfo(0.75, ToolType::PICKAXE); + $infestedStoneBreakInfo = BreakInfo::pickaxe(0.75); self::register("infested_stone", new InfestedStone(new BID(Ids::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); self::register("infested_stone_brick", new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); self::register("infested_cobblestone", new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); @@ -1009,12 +1009,12 @@ final class VanillaBlocks{ self::register("polished_granite_stairs", new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); self::register("stone_brick_stairs", new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); self::register("mossy_stone_brick_stairs", new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new BreakInfo(0.5, ToolType::PICKAXE))); - self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new BreakInfo(3.5, ToolType::PICKAXE))); - self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", BreakInfo::pickaxe(0.5))); + self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", BreakInfo::pickaxe(3.5))); + self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); //TODO: in the future this won't be the same for all the types - $stoneSlabBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $stoneSlabBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("brick_slab", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); self::register("cobblestone_slab", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); @@ -1046,7 +1046,7 @@ final class VanillaBlocks{ self::register("smooth_quartz_slab", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); self::register("stone_slab", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); - self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); @@ -1063,11 +1063,11 @@ final class VanillaBlocks{ self::register("tripwire", new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); self::register("tripwire_hook", new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); self::register("underwater_torch", new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); - self::register("vines", new Vine(new BID(Ids::VINES), "Vines", new BreakInfo(0.2, ToolType::AXE))); + self::register("vines", new Vine(new BID(Ids::VINES), "Vines", BreakInfo::axe(0.2))); self::register("water", new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); self::register("lily_pad", new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); - $weightedPressurePlateBreakInfo = BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()); + $weightedPressurePlateBreakInfo = BreakInfo::pickaxe(0.5, ToolTier::WOOD()); self::register("weighted_pressure_plate_heavy", new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); self::register("weighted_pressure_plate_light", new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); self::register("wheat", new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); @@ -1087,7 +1087,7 @@ final class VanillaBlocks{ self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); } - $sandstoneBreakInfo = BreakInfo::tier(0.8, ToolType::PICKAXE, ToolTier::WOOD()); + $sandstoneBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD()); self::register("red_sandstone_stairs", new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("smooth_red_sandstone_stairs", new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("red_sandstone", new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); @@ -1102,7 +1102,7 @@ final class VanillaBlocks{ self::register("cut_sandstone", new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); self::register("smooth_sandstone", new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); - self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", BreakInfo::tier(1.4, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", BreakInfo::pickaxe(1.4, ToolTier::WOOD()))); self::register("dyed_shulker_box", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); self::register("stained_glass", new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); self::register("stained_glass_pane", new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); @@ -1110,8 +1110,8 @@ final class VanillaBlocks{ self::register("stained_hardened_glass", new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); self::register("stained_hardened_glass_pane", new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); self::register("carpet", new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); - self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", BreakInfo::tier(1.8, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new BreakInfo(0.5, ToolType::SHOVEL))); + self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", BreakInfo::pickaxe(1.8, ToolTier::WOOD()))); + self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", BreakInfo::shovel(0.5))); self::register("wool", new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); @@ -1124,7 +1124,7 @@ final class VanillaBlocks{ })); //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap - $wallBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $wallBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("cobblestone_wall", new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); self::register("andesite_wall", new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); self::register("brick_wall", new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); @@ -1142,7 +1142,7 @@ final class VanillaBlocks{ self::registerElements(); - $chemistryTableBreakInfo = BreakInfo::tier(2.5, ToolType::PICKAXE, ToolTier::WOOD()); + $chemistryTableBreakInfo = BreakInfo::pickaxe(2.5, ToolTier::WOOD()); self::register("compound_creator", new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); self::register("element_constructor", new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); self::register("lab_table", new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); @@ -1168,9 +1168,9 @@ final class VanillaBlocks{ BreakInfo::instant(), )); - self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", new BreakInfo(0.7, ToolType::AXE))); + self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", BreakInfo::axe(0.7))); //TODO: muddy mangrove roots are supposed to be axis-rotatable (Bedrock parity issue https://bugs.mojang.com/browse/MCPE-153721) - self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new BreakInfo(0.7, ToolType::SHOVEL))); + self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", BreakInfo::shovel(0.7))); self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new BreakInfo(0.3))); self::registerBlocksR13(); @@ -1188,12 +1188,12 @@ final class VanillaBlocks{ } private static function registerWoodenBlocks() : void{ - $planksBreakInfo = new BreakInfo(2.0, ToolType::AXE, 0, 15.0); - $signBreakInfo = new BreakInfo(1.0, ToolType::AXE); - $logBreakInfo = new BreakInfo(2.0, ToolType::AXE); - $woodenDoorBreakInfo = new BreakInfo(3.0, ToolType::AXE, 0, 15.0); - $woodenButtonBreakInfo = new BreakInfo(0.5, ToolType::AXE); - $woodenPressurePlateBreakInfo = new BreakInfo(0.5, ToolType::AXE); + $planksBreakInfo = BreakInfo::axe(2.0, null, 15.0); + $signBreakInfo = BreakInfo::axe(1.0); + $logBreakInfo = BreakInfo::axe(2.0); + $woodenDoorBreakInfo = BreakInfo::axe(3.0, null, 15.0); + $woodenButtonBreakInfo = BreakInfo::axe(0.5); + $woodenPressurePlateBreakInfo = BreakInfo::axe(0.5); foreach(WoodType::getAll() as $woodType){ $name = $woodType->getDisplayName(); @@ -1221,7 +1221,7 @@ final class VanillaBlocks{ } private static function registerMushroomBlocks() : void{ - $mushroomBlockBreakInfo = new BreakInfo(0.2, ToolType::AXE); + $mushroomBlockBreakInfo = BreakInfo::axe(0.2); self::register("brown_mushroom_block", new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block", $mushroomBlockBreakInfo)); self::register("red_mushroom_block", new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block", $mushroomBlockBreakInfo)); @@ -1356,7 +1356,7 @@ final class VanillaBlocks{ } private static function registerOres() : void{ - $stoneOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(3.0, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + $stoneOreBreakInfo = fn(ToolTier $toolTier) => BreakInfo::pickaxe(3.0, $toolTier); self::register("coal_ore", new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD()))); self::register("copper_ore", new CopperOre(new BID(Ids::COPPER_ORE), "Copper Ore", $stoneOreBreakInfo(ToolTier::STONE()))); self::register("diamond_ore", new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON()))); @@ -1366,7 +1366,7 @@ final class VanillaBlocks{ self::register("lapis_lazuli_ore", new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE()))); self::register("redstone_ore", new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - $deepslateOreBreakInfo = fn(ToolTier $toolTier) => new BreakInfo(4.5, ToolType::PICKAXE, $toolTier->getHarvestLevel()); + $deepslateOreBreakInfo = fn(ToolTier $toolTier) => BreakInfo::pickaxe(4.5, $toolTier); self::register("deepslate_coal_ore", new CoalOre(new BID(Ids::DEEPSLATE_COAL_ORE), "Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD()))); self::register("deepslate_copper_ore", new CopperOre(new BID(Ids::DEEPSLATE_COPPER_ORE), "Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); self::register("deepslate_diamond_ore", new DiamondOre(new BID(Ids::DEEPSLATE_DIAMOND_ORE), "Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); @@ -1376,20 +1376,20 @@ final class VanillaBlocks{ self::register("deepslate_lapis_lazuli_ore", new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); self::register("deepslate_redstone_ore", new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $netherrackOreBreakInfo = BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::WOOD()); + $netherrackOreBreakInfo = BreakInfo::pickaxe(3.0, ToolTier::WOOD()); self::register("nether_quartz_ore", new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); self::register("nether_gold_ore", new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); } private static function registerCraftingTables() : void{ //TODO: this is the same for all wooden crafting blocks - $craftingBlockBreakInfo = new BreakInfo(2.5, ToolType::AXE); + $craftingBlockBreakInfo = BreakInfo::axe(2.5); self::register("cartography_table", new CartographyTable(new BID(Ids::CARTOGRAPHY_TABLE), "Cartography Table", $craftingBlockBreakInfo)); self::register("smithing_table", new SmithingTable(new BID(Ids::SMITHING_TABLE), "Smithing Table", $craftingBlockBreakInfo)); } private static function registerChorusBlocks() : void{ - $chorusBlockBreakInfo = new BreakInfo(0.4, ToolType::AXE); + $chorusBlockBreakInfo = BreakInfo::axe(0.4); self::register("chorus_plant", new ChorusPlant(new BID(Ids::CHORUS_PLANT), "Chorus Plant", $chorusBlockBreakInfo)); self::register("chorus_flower", new ChorusFlower(new BID(Ids::CHORUS_FLOWER), "Chorus Flower", $chorusBlockBreakInfo)); } @@ -1405,20 +1405,20 @@ final class VanillaBlocks{ private static function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones - $slabBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $slabBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); - self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", BreakInfo::tier(30, ToolType::PICKAXE, ToolTier::DIAMOND(), 3600.0))); - $netheriteBreakInfo = BreakInfo::tier(50, ToolType::PICKAXE, ToolTier::DIAMOND(), 3600.0); + self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", BreakInfo::pickaxe(30, ToolTier::DIAMOND(), 3600.0))); + $netheriteBreakInfo = BreakInfo::pickaxe(50, ToolTier::DIAMOND(), 3600.0); self::register("netherite", new class(new BID(Ids::NETHERITE), "Netherite Block", $netheriteBreakInfo) extends Opaque{ public function isFireProofAsItem() : bool{ return true; } }); - $basaltBreakInfo = BreakInfo::tier(1.25, ToolType::PICKAXE, ToolTier::WOOD(), 21.0); + $basaltBreakInfo = BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0); self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); self::register("polished_basalt", new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); self::register("smooth_basalt", new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); - $blackstoneBreakInfo = BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $blackstoneBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); self::register("blackstone", new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); self::register("blackstone_slab", new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); self::register("blackstone_stairs", new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); @@ -1429,8 +1429,8 @@ final class VanillaBlocks{ //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); self::register("polished_blackstone", new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); - self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new BreakInfo(0.5, ToolType::PICKAXE))); - self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), BreakInfo::tier(0.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), BreakInfo::pickaxe(0.5))); + self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); self::register("polished_blackstone_slab", new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); self::register("polished_blackstone_stairs", new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); self::register("polished_blackstone_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); @@ -1447,56 +1447,56 @@ final class VanillaBlocks{ self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) - self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new BreakInfo(1.0, ToolType::SHOVEL))); + self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", BreakInfo::shovel(1.0))); self::register("shroomlight", new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ public function getLightLevel() : int{ return 15; } }); self::register("warped_wart_block", new Opaque(new BID(Ids::WARPED_WART_BLOCK), "Warped Wart Block", new BreakInfo(1.0, ToolType::HOE))); - self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", new BreakInfo(35.0 /* 50 in Java */, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel())) extends Opaque{ + self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND())) extends Opaque{ public function getLightLevel() : int{ return 10;} }); } private static function registerBlocksR17() : void{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock - self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD()))); + self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", BreakInfo::pickaxe(1.5, ToolTier::WOOD()))); - self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", BreakInfo::tier(0.75, ToolType::PICKAXE, ToolTier::WOOD()))); - self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", BreakInfo::tier(1.5, ToolType::PICKAXE, ToolTier::WOOD(), 30.0))); + self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", BreakInfo::pickaxe(0.75, ToolTier::WOOD()))); + self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0))); - self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::STONE(), 30.0))); - self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::IRON(), 30.0))); - self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", BreakInfo::tier(5, ToolType::PICKAXE, ToolTier::STONE(), 30.0))); + self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0))); + self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", BreakInfo::pickaxe(5, ToolTier::IRON(), 30.0))); + self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0))); - $deepslateBreakInfo = BreakInfo::tier(3, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); + $deepslateBreakInfo = BreakInfo::pickaxe(3, ToolTier::WOOD(), 18.0); self::register("deepslate", new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 - self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0))); + self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0))); - $deepslateBrickBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); + $deepslateBrickBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); self::register("deepslate_bricks", new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); self::register("deepslate_brick_slab", new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); self::register("deepslate_brick_stairs", new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); self::register("deepslate_brick_wall", new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); self::register("cracked_deepslate_bricks", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); - $deepslateTilesBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); + $deepslateTilesBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); self::register("deepslate_tiles", new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); self::register("deepslate_tile_slab", new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); self::register("deepslate_tile_stairs", new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); self::register("deepslate_tile_wall", new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); self::register("cracked_deepslate_tiles", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); - $cobbledDeepslateBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); + $cobbledDeepslateBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); self::register("cobbled_deepslate", new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_slab", new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_stairs", new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_wall", new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); - $polishedDeepslateBreakInfo = BreakInfo::tier(3.5, ToolType::PICKAXE, ToolTier::WOOD(), 18.0); + $polishedDeepslateBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); self::register("polished_deepslate", new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_slab", new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_stairs", new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); @@ -1505,7 +1505,7 @@ final class VanillaBlocks{ self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); //blast resistance should be 30 if we were matched with java :( - $copperBreakInfo = BreakInfo::tier(3.0, ToolType::PICKAXE, ToolTier::STONE(), 18.0); + $copperBreakInfo = BreakInfo::pickaxe(3.0, ToolTier::STONE(), 18.0); self::register("lightning_rod", new LightningRod(new BID(Ids::LIGHTNING_ROD), "Lightning Rod", $copperBreakInfo)); self::register("copper", new Copper(new BID(Ids::COPPER), "Copper Block", $copperBreakInfo)); @@ -1530,10 +1530,10 @@ final class VanillaBlocks{ } private static function registerMudBlocks() : void{ - self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new BreakInfo(0.5, ToolType::SHOVEL))); - self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", new BreakInfo(1.0, ToolType::PICKAXE, 0, 15.0))); + self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", BreakInfo::shovel(0.5))); + self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", BreakInfo::pickaxe(1.0, null, 15.0))); - $mudBricksBreakInfo = BreakInfo::tier(2.0, ToolType::PICKAXE, ToolTier::WOOD(), 30.0); + $mudBricksBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); self::register("mud_bricks", new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); self::register("mud_brick_slab", new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); @@ -1542,7 +1542,7 @@ final class VanillaBlocks{ } private static function registerCauldronBlocks() : void{ - $cauldronBreakInfo = BreakInfo::tier(2, ToolType::PICKAXE, ToolTier::WOOD()); + $cauldronBreakInfo = BreakInfo::pickaxe(2, ToolTier::WOOD()); self::register("cauldron", new Cauldron(new BID(Ids::CAULDRON, TileCauldron::class), "Cauldron", $cauldronBreakInfo)); self::register("water_cauldron", new WaterCauldron(new BID(Ids::WATER_CAULDRON, TileCauldron::class), "Water Cauldron", $cauldronBreakInfo)); From b751207969ad4dcdfe9cb70f0047e8ca7acdb0d1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 18:24:09 +0100 Subject: [PATCH 376/692] Added missing blast resistance to Crying Obsidian --- src/block/VanillaBlocks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index f3fda7dba..231ae8c71 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -1454,7 +1454,7 @@ final class VanillaBlocks{ }); self::register("warped_wart_block", new Opaque(new BID(Ids::WARPED_WART_BLOCK), "Warped Wart Block", new BreakInfo(1.0, ToolType::HOE))); - self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND())) extends Opaque{ + self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND(), 6000.0)) extends Opaque{ public function getLightLevel() : int{ return 10;} }); } From 89b784734e9c46c9f9f24e228aa96e71259a25b8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 18:45:57 +0100 Subject: [PATCH 377/692] Fixed crimson/warped planks being usable as furnace fuel --- src/block/FenceGate.php | 2 +- src/block/Planks.php | 2 +- src/block/Wood.php | 2 +- src/block/WoodenFence.php | 2 +- src/block/WoodenSlab.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index f439819d3..96cb41d4e 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -119,7 +119,7 @@ class FenceGate extends Transparent{ } public function getFuelTime() : int{ - return 300; + return $this->woodType->isFlammable() ? 300 : 0; } public function getFlameEncouragement() : int{ diff --git a/src/block/Planks.php b/src/block/Planks.php index 0eca22c24..1074f8adf 100644 --- a/src/block/Planks.php +++ b/src/block/Planks.php @@ -29,7 +29,7 @@ class Planks extends Opaque{ use WoodTypeTrait; public function getFuelTime() : int{ - return 300; + return $this->woodType->isFlammable() ? 300 : 0; } public function getFlameEncouragement() : int{ diff --git a/src/block/Wood.php b/src/block/Wood.php index 50032eaa1..cadc32036 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -54,7 +54,7 @@ class Wood extends Opaque{ } public function getFuelTime() : int{ - return 300; + return $this->woodType->isFlammable() ? 300 : 0; } public function getFlameEncouragement() : int{ diff --git a/src/block/WoodenFence.php b/src/block/WoodenFence.php index 88d444f51..c12043a86 100644 --- a/src/block/WoodenFence.php +++ b/src/block/WoodenFence.php @@ -29,7 +29,7 @@ class WoodenFence extends Fence{ use WoodTypeTrait; public function getFuelTime() : int{ - return 300; + return $this->woodType->isFlammable() ? 300 : 0; } public function getFlameEncouragement() : int{ diff --git a/src/block/WoodenSlab.php b/src/block/WoodenSlab.php index b6f6647da..b388a36ea 100644 --- a/src/block/WoodenSlab.php +++ b/src/block/WoodenSlab.php @@ -29,7 +29,7 @@ class WoodenSlab extends Slab{ use WoodTypeTrait; public function getFuelTime() : int{ - return 300; + return $this->woodType->isFlammable() ? 300 : 0; } public function getFlameEncouragement() : int{ From 6a2315a63dbad4a0bd54c719fc8b311e28636c77 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 20:42:54 +0100 Subject: [PATCH 378/692] Accept BlockTypeInfo in Block constructor, instead of BlockBreakInfo this will allow more stuff to be passed via the constructor without having to change dozens of classes to do it. --- src/block/BaseBanner.php | 4 +- src/block/BaseCoral.php | 4 +- src/block/BaseSign.php | 4 +- src/block/Bed.php | 4 +- src/block/Bell.php | 4 +- src/block/Block.php | 4 +- src/block/BlockFactory.php | 2 +- src/block/BlockTypeInfo.php | 33 ++ src/block/CakeWithDyedCandle.php | 4 +- src/block/Carpet.php | 4 +- src/block/Concrete.php | 4 +- src/block/ConcretePowder.php | 4 +- src/block/CopperStairs.php | 4 +- src/block/CoralBlock.php | 4 +- src/block/Dirt.php | 4 +- src/block/DyedCandle.php | 4 +- src/block/DyedShulkerBox.php | 4 +- src/block/Element.php | 4 +- src/block/Froglight.php | 4 +- src/block/GlazedTerracotta.php | 4 +- src/block/InfestedStone.php | 4 +- src/block/Lantern.php | 4 +- src/block/Leaves.php | 4 +- src/block/Lever.php | 4 +- src/block/PotionCauldron.php | 4 +- src/block/RedMushroomBlock.php | 4 +- src/block/Sapling.php | 4 +- src/block/Skull.php | 4 +- src/block/Slab.php | 4 +- src/block/StainedGlass.php | 4 +- src/block/StainedGlassPane.php | 4 +- src/block/StainedHardenedClay.php | 4 +- src/block/StainedHardenedGlass.php | 4 +- src/block/StainedHardenedGlassPane.php | 4 +- src/block/Stair.php | 4 +- src/block/UnknownBlock.php | 4 +- src/block/VanillaBlocks.php | 455 +++++++++++++------------ src/block/Wool.php | 4 +- src/block/utils/CopperTrait.php | 5 +- src/block/utils/WoodTypeTrait.php | 5 +- tests/phpunit/block/BlockTest.php | 8 +- 41 files changed, 342 insertions(+), 306 deletions(-) create mode 100644 src/block/BlockTypeInfo.php diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index d5f859f7c..89e06d535 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -48,9 +48,9 @@ abstract class BaseBanner extends Transparent{ */ protected array $patterns = []; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::BLACK(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function readStateFromWorld() : Block{ diff --git a/src/block/BaseCoral.php b/src/block/BaseCoral.php index f3bb9255d..f1a5a9e79 100644 --- a/src/block/BaseCoral.php +++ b/src/block/BaseCoral.php @@ -31,8 +31,8 @@ use pocketmine\item\Item; abstract class BaseCoral extends Transparent{ use CoralTypeTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ - parent::__construct($idInfo, $name, $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ + parent::__construct($idInfo, $name, $typeInfo); $this->coralType = CoralType::TUBE(); } diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index 7ce7a829f..a1413ccbf 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -51,9 +51,9 @@ abstract class BaseSign extends Transparent{ /** * @param \Closure() : Item $asItemCallback */ - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, WoodType $woodType, \Closure $asItemCallback){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, WoodType $woodType, \Closure $asItemCallback){ $this->woodType = $woodType; - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); $this->text = new SignText(); $this->asItemCallback = $asItemCallback; } diff --git a/src/block/Bed.php b/src/block/Bed.php index 350bf865d..3a5e0ff10 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -49,9 +49,9 @@ class Bed extends Transparent{ protected bool $occupied = false; protected bool $head = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::RED(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 4; } diff --git a/src/block/Bell.php b/src/block/Bell.php index 4c8d95146..702a3bac6 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -42,9 +42,9 @@ final class Bell extends Transparent{ private BellAttachmentType $attachmentType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->attachmentType = BellAttachmentType::FLOOR(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 4; } diff --git a/src/block/Block.php b/src/block/Block.php index ae2374c06..d6830e450 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -65,10 +65,10 @@ class Block{ /** * @param string $name English name of the block type (TODO: implement translations) */ - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->idInfo = $idInfo; $this->fallbackName = $name; - $this->breakInfo = $breakInfo; + $this->breakInfo = $typeInfo->getBreakInfo(); $this->position = new Position(0, 0, 0, null); } diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index d07f4b526..737747184 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -157,7 +157,7 @@ class BlockFactory{ }else{ $typeId = $stateId >> Block::INTERNAL_STATE_DATA_BITS; $stateData = $stateId & Block::INTERNAL_STATE_DATA_MASK; - $block = new UnknownBlock(new BID($typeId), BreakInfo::instant(), $stateData); + $block = new UnknownBlock(new BID($typeId), new BlockTypeInfo(BreakInfo::instant()), $stateData); } return $block; diff --git a/src/block/BlockTypeInfo.php b/src/block/BlockTypeInfo.php new file mode 100644 index 000000000..6f52a310a --- /dev/null +++ b/src/block/BlockTypeInfo.php @@ -0,0 +1,33 @@ +breakInfo; } +} diff --git a/src/block/CakeWithDyedCandle.php b/src/block/CakeWithDyedCandle.php index 211da887a..e01ad3e1b 100644 --- a/src/block/CakeWithDyedCandle.php +++ b/src/block/CakeWithDyedCandle.php @@ -29,9 +29,9 @@ use pocketmine\block\utils\DyeColor; class CakeWithDyedCandle extends CakeWithCandle{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getCandle() : Candle{ diff --git a/src/block/Carpet.php b/src/block/Carpet.php index 75b9220b9..c979571eb 100644 --- a/src/block/Carpet.php +++ b/src/block/Carpet.php @@ -35,9 +35,9 @@ use pocketmine\world\BlockTransaction; class Carpet extends Flowable{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function isSolid() : bool{ diff --git a/src/block/Concrete.php b/src/block/Concrete.php index 7f07be308..cb8ee3b52 100644 --- a/src/block/Concrete.php +++ b/src/block/Concrete.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; class Concrete extends Opaque{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/ConcretePowder.php b/src/block/ConcretePowder.php index b70532c3f..cfe2ccec6 100644 --- a/src/block/ConcretePowder.php +++ b/src/block/ConcretePowder.php @@ -36,9 +36,9 @@ class ConcretePowder extends Opaque implements Fallable{ onNearbyBlockChange as protected startFalling; } - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function onNearbyBlockChange() : void{ diff --git a/src/block/CopperStairs.php b/src/block/CopperStairs.php index a932938d2..fe52616ce 100644 --- a/src/block/CopperStairs.php +++ b/src/block/CopperStairs.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\CopperTrait; class CopperStairs extends Stair{ use CopperTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->oxidation = CopperOxidation::NONE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/CoralBlock.php b/src/block/CoralBlock.php index 0ab831780..2243113b9 100644 --- a/src/block/CoralBlock.php +++ b/src/block/CoralBlock.php @@ -31,9 +31,9 @@ use function mt_rand; final class CoralBlock extends Opaque{ use CoralTypeTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->coralType = CoralType::TUBE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function onNearbyBlockChange() : void{ diff --git a/src/block/Dirt.php b/src/block/Dirt.php index d496cdab5..d0b38806a 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -41,9 +41,9 @@ use pocketmine\world\sound\WaterSplashSound; class Dirt extends Opaque{ protected DirtType $dirtType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->dirtType = DirtType::NORMAL(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredTypeDataBits() : int{ return 2; } diff --git a/src/block/DyedCandle.php b/src/block/DyedCandle.php index 76b9a1427..55d76e406 100644 --- a/src/block/DyedCandle.php +++ b/src/block/DyedCandle.php @@ -29,9 +29,9 @@ use pocketmine\block\utils\DyeColor; class DyedCandle extends Candle{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } protected function getCandleIfCompatibleType(Block $block) : ?Candle{ diff --git a/src/block/DyedShulkerBox.php b/src/block/DyedShulkerBox.php index ffe5e5f16..196ee0282 100644 --- a/src/block/DyedShulkerBox.php +++ b/src/block/DyedShulkerBox.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class DyedShulkerBox extends ShulkerBox{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/Element.php b/src/block/Element.php index 8d6fb7985..9c8a91621 100644 --- a/src/block/Element.php +++ b/src/block/Element.php @@ -27,12 +27,12 @@ class Element extends Opaque{ public function __construct( BlockIdentifier $idInfo, string $name, - BlockBreakInfo $breakInfo, + BlockTypeInfo $typeInfo, private string $symbol, private int $atomicWeight, private int $group ){ - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getAtomicWeight() : int{ diff --git a/src/block/Froglight.php b/src/block/Froglight.php index 8b35a6681..0e8daa4b6 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -31,9 +31,9 @@ final class Froglight extends SimplePillar{ private FroglightType $froglightType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->froglightType = FroglightType::OCHRE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredTypeDataBits() : int{ return 2; } diff --git a/src/block/GlazedTerracotta.php b/src/block/GlazedTerracotta.php index 687c19a16..5568703c2 100644 --- a/src/block/GlazedTerracotta.php +++ b/src/block/GlazedTerracotta.php @@ -33,8 +33,8 @@ class GlazedTerracotta extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::BLACK(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/InfestedStone.php b/src/block/InfestedStone.php index 7700b572c..eb10b38ad 100644 --- a/src/block/InfestedStone.php +++ b/src/block/InfestedStone.php @@ -29,8 +29,8 @@ final class InfestedStone extends Opaque{ private int $imitated; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, Block $imitated){ - parent::__construct($idInfo, $name, $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, Block $imitated){ + parent::__construct($idInfo, $name, $typeInfo); $this->imitated = $imitated->getStateId(); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index d33ed5883..50df67576 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -39,9 +39,9 @@ class Lantern extends Transparent{ protected bool $hanging = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, int $lightLevel){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, int $lightLevel){ $this->lightLevel = $lightLevel; - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 1; } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index bf2dc18eb..60b20b540 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -43,8 +43,8 @@ class Leaves extends Transparent{ protected bool $noDecay = false; protected bool $checkDecay = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType){ - parent::__construct($idInfo, $name, $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, TreeType $treeType){ + parent::__construct($idInfo, $name, $typeInfo); $this->treeType = $treeType; } diff --git a/src/block/Lever.php b/src/block/Lever.php index 45f5d2fb2..a5a30936f 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -40,9 +40,9 @@ class Lever extends Flowable{ protected LeverFacing $facing; protected bool $activated = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->facing = LeverFacing::UP_AXIS_X(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 4; } diff --git a/src/block/PotionCauldron.php b/src/block/PotionCauldron.php index d0bcf2af5..b8259fbc3 100644 --- a/src/block/PotionCauldron.php +++ b/src/block/PotionCauldron.php @@ -39,8 +39,8 @@ final class PotionCauldron extends FillableCauldron{ private ?Item $potionItem = null; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ - parent::__construct($idInfo, $name, $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ + parent::__construct($idInfo, $name, $typeInfo); } public function readStateFromWorld() : Block{ diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index c9595e633..18ab59bd1 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -32,9 +32,9 @@ use function mt_rand; class RedMushroomBlock extends Opaque{ protected MushroomBlockType $mushroomBlockType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->mushroomBlockType = MushroomBlockType::PORES(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 4; } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 629e1f81e..03cde4cbd 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -42,8 +42,8 @@ class Sapling extends Flowable{ private TreeType $treeType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, TreeType $treeType){ - parent::__construct($idInfo, $name, $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, TreeType $treeType){ + parent::__construct($idInfo, $name, $typeInfo); $this->treeType = $treeType; } diff --git a/src/block/Skull.php b/src/block/Skull.php index b7a707476..b2e02b8d4 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -45,9 +45,9 @@ class Skull extends Flowable{ protected int $facing = Facing::NORTH; protected int $rotation = self::MIN_ROTATION; //TODO: split this into floor skull and wall skull handling - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->skullType = SkullType::SKELETON(); //TODO: this should be a parameter - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredTypeDataBits() : int{ return 3; } diff --git a/src/block/Slab.php b/src/block/Slab.php index 37eaf5e6b..a1b09a151 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -37,8 +37,8 @@ use pocketmine\world\BlockTransaction; class Slab extends Transparent{ protected SlabType $slabType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ - parent::__construct($idInfo, $name . " Slab", $breakInfo); + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ + parent::__construct($idInfo, $name . " Slab", $typeInfo); $this->slabType = SlabType::BOTTOM(); } diff --git a/src/block/StainedGlass.php b/src/block/StainedGlass.php index ad9ed24af..5b4b6a883 100644 --- a/src/block/StainedGlass.php +++ b/src/block/StainedGlass.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class StainedGlass extends Glass{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/StainedGlassPane.php b/src/block/StainedGlassPane.php index 38c43f79b..2a592395d 100644 --- a/src/block/StainedGlassPane.php +++ b/src/block/StainedGlassPane.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class StainedGlassPane extends GlassPane{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/StainedHardenedClay.php b/src/block/StainedHardenedClay.php index e805e91cf..1a9d68737 100644 --- a/src/block/StainedHardenedClay.php +++ b/src/block/StainedHardenedClay.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class StainedHardenedClay extends HardenedClay{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/StainedHardenedGlass.php b/src/block/StainedHardenedGlass.php index e3915807d..85d5fcec0 100644 --- a/src/block/StainedHardenedGlass.php +++ b/src/block/StainedHardenedGlass.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class StainedHardenedGlass extends HardenedGlass{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/StainedHardenedGlassPane.php b/src/block/StainedHardenedGlassPane.php index 805473087..4a61f9778 100644 --- a/src/block/StainedHardenedGlassPane.php +++ b/src/block/StainedHardenedGlassPane.php @@ -29,8 +29,8 @@ use pocketmine\block\utils\DyeColor; final class StainedHardenedGlassPane extends HardenedGlassPane{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } } diff --git a/src/block/Stair.php b/src/block/Stair.php index 541266f0a..83569e8b1 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -42,9 +42,9 @@ class Stair extends Transparent{ protected bool $upsideDown = false; protected StairShape $shape; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->shape = StairShape::STRAIGHT(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getRequiredStateDataBits() : int{ return 3; } diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 52cbb4e64..02b125e98 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -31,8 +31,8 @@ class UnknownBlock extends Transparent{ private int $stateData; - public function __construct(BlockIdentifier $idInfo, BlockBreakInfo $breakInfo, int $stateData){ - parent::__construct($idInfo, "Unknown", $breakInfo); + public function __construct(BlockIdentifier $idInfo, BlockTypeInfo $typeInfo, int $stateData){ + parent::__construct($idInfo, "Unknown", $typeInfo); $this->stateData = $stateData; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 231ae8c71..0f2532f8a 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\BlockTypeInfo as Info; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockToolType as ToolType; @@ -738,159 +739,159 @@ final class VanillaBlocks{ } protected static function setup() : void{ - $railBreakInfo = new BlockBreakInfo(0.7); + $railBreakInfo = new Info(new BlockBreakInfo(0.7)); self::register("activator_rail", new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail", $railBreakInfo)); - self::register("air", new Air(new BID(Ids::AIR), "Air", BreakInfo::indestructible(-1.0))); - self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0))); - self::register("bamboo", new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ + self::register("air", new Air(new BID(Ids::AIR), "Air", new Info(BreakInfo::indestructible(-1.0)))); + self::register("anvil", new Anvil(new BID(Ids::ANVIL), "Anvil", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0)))); + self::register("bamboo", new Bamboo(new BID(Ids::BAMBOO), "Bamboo", new Info(new class(2.0 /* 1.0 in PC */, ToolType::AXE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SWORD){ return 0.0; } return parent::getBreakTime($item); } - })); - self::register("bamboo_sapling", new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", BreakInfo::instant())); + }))); + self::register("bamboo_sapling", new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", new Info(BreakInfo::instant()))); - $bannerBreakInfo = BreakInfo::axe(1.0); + $bannerBreakInfo = new Info(BreakInfo::axe(1.0)); self::register("banner", new FloorBanner(new BID(Ids::BANNER, TileBanner::class), "Banner", $bannerBreakInfo)); self::register("wall_banner", new WallBanner(new BID(Ids::WALL_BANNER, TileBanner::class), "Wall Banner", $bannerBreakInfo)); - self::register("barrel", new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", BreakInfo::axe(2.5))); - self::register("barrier", new Transparent(new BID(Ids::BARRIER), "Barrier", BreakInfo::indestructible())); - self::register("beacon", new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new BreakInfo(3.0))); - self::register("bed", new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new BreakInfo(0.2))); - self::register("bedrock", new Bedrock(new BID(Ids::BEDROCK), "Bedrock", BreakInfo::indestructible())); + self::register("barrel", new Barrel(new BID(Ids::BARREL, TileBarrel::class), "Barrel", new Info(BreakInfo::axe(2.5)))); + self::register("barrier", new Transparent(new BID(Ids::BARRIER), "Barrier", new Info(BreakInfo::indestructible()))); + self::register("beacon", new Beacon(new BID(Ids::BEACON, TileBeacon::class), "Beacon", new Info(new BreakInfo(3.0)))); + self::register("bed", new Bed(new BID(Ids::BED, TileBed::class), "Bed Block", new Info(new BreakInfo(0.2)))); + self::register("bedrock", new Bedrock(new BID(Ids::BEDROCK), "Bedrock", new Info(BreakInfo::indestructible()))); - self::register("beetroots", new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", BreakInfo::instant())); - self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", BreakInfo::pickaxe(5.0, ToolTier::WOOD()))); - self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", BreakInfo::pickaxe(2.8))); - self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", BreakInfo::pickaxe(2.0, ToolTier::WOOD()))); - self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", BreakInfo::axe(1.5))); - self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); + self::register("beetroots", new Beetroot(new BID(Ids::BEETROOTS), "Beetroot Block", new Info(BreakInfo::instant()))); + self::register("bell", new Bell(new BID(Ids::BELL, TileBell::class), "Bell", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD())))); + self::register("blue_ice", new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice", new Info(BreakInfo::pickaxe(2.8)))); + self::register("bone_block", new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block", new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD())))); + self::register("bookshelf", new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf", new Info(BreakInfo::axe(1.5)))); + self::register("brewing_stand", new BrewingStand(new BID(Ids::BREWING_STAND, TileBrewingStand::class), "Brewing Stand", new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())))); - $bricksBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $bricksBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("brick_stairs", new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); self::register("bricks", new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); - self::register("brown_mushroom", new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", BreakInfo::instant())); - self::register("cactus", new Cactus(new BID(Ids::CACTUS), "Cactus", new BreakInfo(0.4))); - self::register("cake", new Cake(new BID(Ids::CAKE), "Cake", new BreakInfo(0.5))); - self::register("carrots", new Carrot(new BID(Ids::CARROTS), "Carrot Block", BreakInfo::instant())); + self::register("brown_mushroom", new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", new Info(BreakInfo::instant()))); + self::register("cactus", new Cactus(new BID(Ids::CACTUS), "Cactus", new Info(new BreakInfo(0.4)))); + self::register("cake", new Cake(new BID(Ids::CAKE), "Cake", new Info(new BreakInfo(0.5)))); + self::register("carrots", new Carrot(new BID(Ids::CARROTS), "Carrot Block", new Info(BreakInfo::instant()))); - $chestBreakInfo = BreakInfo::axe(2.5); + $chestBreakInfo = new Info(BreakInfo::axe(2.5)); self::register("chest", new Chest(new BID(Ids::CHEST, TileChest::class), "Chest", $chestBreakInfo)); - self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", BreakInfo::shovel(0.6))); - self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0))); + self::register("clay", new Clay(new BID(Ids::CLAY), "Clay Block", new Info(BreakInfo::shovel(0.6)))); + self::register("coal", new Coal(new BID(Ids::COAL), "Coal Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0)))); - $cobblestoneBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $cobblestoneBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("cobblestone", $cobblestone = new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); self::register("mossy_cobblestone", new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); self::register("cobblestone_stairs", new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); self::register("mossy_cobblestone_stairs", new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))); - self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", BreakInfo::axe(0.2, null, 15.0))); - self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", BreakInfo::pickaxe(7.0, ToolTier::WOOD()))); - self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", BreakInfo::axe(2.5))); - self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", BreakInfo::axe(0.2))); - self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new Info(new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1)))); + self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new Info(BreakInfo::axe(0.2, null, 15.0)))); + self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new Info(BreakInfo::pickaxe(7.0, ToolTier::WOOD())))); + self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new Info(BreakInfo::axe(2.5)))); + self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new Info(BreakInfo::axe(0.2)))); + self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); - self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0))); - self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", BreakInfo::shovel(0.5))); - self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", BreakInfo::instant())); - self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", BreakInfo::instant())); - self::register("rose_bush", new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", BreakInfo::instant())); - self::register("peony", new DoublePlant(new BID(Ids::PEONY), "Peony", BreakInfo::instant())); - self::register("double_tallgrass", new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", BreakInfo::instant(ToolType::SHEARS, 1))); - self::register("large_fern", new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", BreakInfo::pickaxe(3.0, ToolTier::WOOD()))); - self::register("dried_kelp", new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new BreakInfo(0.5, ToolType::NONE, 0, 12.5))); - self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0))); - self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0))); - self::register("end_portal_frame", new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", BreakInfo::indestructible())); - self::register("end_rod", new EndRod(new BID(Ids::END_ROD), "End Rod", BreakInfo::instant())); - self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 45.0))); + self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0)))); + self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new Info(BreakInfo::shovel(0.5)))); + self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", new Info(BreakInfo::instant()))); + self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", new Info(BreakInfo::instant()))); + self::register("rose_bush", new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", new Info(BreakInfo::instant()))); + self::register("peony", new DoublePlant(new BID(Ids::PEONY), "Peony", new Info(BreakInfo::instant()))); + self::register("double_tallgrass", new DoubleTallGrass(new BID(Ids::DOUBLE_TALLGRASS), "Double Tallgrass", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + self::register("large_fern", new DoubleTallGrass(new BID(Ids::LARGE_FERN), "Large Fern", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + self::register("dragon_egg", new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg", new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD())))); + self::register("dried_kelp", new DriedKelp(new BID(Ids::DRIED_KELP), "Dried Kelp Block", new Info(new BreakInfo(0.5, ToolType::NONE, 0, 12.5)))); + self::register("emerald", new Opaque(new BID(Ids::EMERALD), "Emerald Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0)))); + self::register("enchanting_table", new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class), "Enchanting Table", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 6000.0)))); + self::register("end_portal_frame", new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame", new Info(BreakInfo::indestructible()))); + self::register("end_rod", new EndRod(new BID(Ids::END_ROD), "End Rod", new Info(BreakInfo::instant()))); + self::register("end_stone", new Opaque(new BID(Ids::END_STONE), "End Stone", new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 45.0)))); - $endBrickBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD(), 4.0); + $endBrickBreakInfo = new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD(), 4.0)); self::register("end_stone_bricks", new Opaque(new BID(Ids::END_STONE_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); self::register("end_stone_brick_stairs", new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0))); - self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", BreakInfo::shovel(0.6))); - self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", BreakInfo::instant())); - self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", BreakInfo::axe(2.5, null, 2.5))); - self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", BreakInfo::instant())); - self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", BreakInfo::instant())); - self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", BreakInfo::instant())); - self::register("azure_bluet", new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", BreakInfo::instant())); - self::register("blue_orchid", new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", BreakInfo::instant())); - self::register("cornflower", new Flower(new BID(Ids::CORNFLOWER), "Cornflower", BreakInfo::instant())); - self::register("lily_of_the_valley", new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", BreakInfo::instant())); - self::register("orange_tulip", new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", BreakInfo::instant())); - self::register("oxeye_daisy", new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", BreakInfo::instant())); - self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", BreakInfo::instant())); - self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", BreakInfo::instant())); - self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", BreakInfo::instant())); - self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", BreakInfo::instant())); - self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", BreakInfo::pickaxe(2.5))); - self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); - self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); - self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); + self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new Info(BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0)))); + self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new Info(BreakInfo::shovel(0.6)))); + self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", new Info(BreakInfo::instant()))); + self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new Info(BreakInfo::axe(2.5, null, 2.5)))); + self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", new Info(BreakInfo::instant()))); + self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", new Info(BreakInfo::instant()))); + self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", new Info(BreakInfo::instant()))); + self::register("azure_bluet", new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", new Info(BreakInfo::instant()))); + self::register("blue_orchid", new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", new Info(BreakInfo::instant()))); + self::register("cornflower", new Flower(new BID(Ids::CORNFLOWER), "Cornflower", new Info(BreakInfo::instant()))); + self::register("lily_of_the_valley", new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", new Info(BreakInfo::instant()))); + self::register("orange_tulip", new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", new Info(BreakInfo::instant()))); + self::register("oxeye_daisy", new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", new Info(BreakInfo::instant()))); + self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", new Info(BreakInfo::instant()))); + self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", new Info(BreakInfo::instant()))); + self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", new Info(BreakInfo::instant()))); + self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", new Info(BreakInfo::instant()))); + self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new Info(BreakInfo::pickaxe(2.5)))); + self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); + self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); + self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); - $glassBreakInfo = new BreakInfo(0.3); + $glassBreakInfo = new Info(new BreakInfo(0.3)); self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); self::register("glass_pane", new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane", $glassBreakInfo)); - self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", BreakInfo::pickaxe(10.0, ToolTier::DIAMOND(), 50.0))); - self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", BreakInfo::pickaxe(0.3))); - self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", BreakInfo::pickaxe(3.0, ToolTier::IRON(), 30.0))); + self::register("glowing_obsidian", new GlowingObsidian(new BID(Ids::GLOWING_OBSIDIAN), "Glowing Obsidian", new Info(BreakInfo::pickaxe(10.0, ToolTier::DIAMOND(), 50.0)))); + self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new Info(BreakInfo::pickaxe(0.3)))); + self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", new Info(BreakInfo::pickaxe(3.0, ToolTier::IRON(), 30.0)))); - $grassBreakInfo = BreakInfo::shovel(0.6); + $grassBreakInfo = new Info(BreakInfo::shovel(0.6)); self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); - self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", BreakInfo::shovel(0.6))); + self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", new Info(BreakInfo::shovel(0.6)))); - $hardenedClayBreakInfo = BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0); + $hardenedClayBreakInfo = new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0)); self::register("hardened_clay", new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay", $hardenedClayBreakInfo)); - $hardenedGlassBreakInfo = new BreakInfo(10.0); + $hardenedGlassBreakInfo = new Info(new BreakInfo(10.0)); self::register("hardened_glass", new HardenedGlass(new BID(Ids::HARDENED_GLASS), "Hardened Glass", $hardenedGlassBreakInfo)); self::register("hardened_glass_pane", new HardenedGlassPane(new BID(Ids::HARDENED_GLASS_PANE), "Hardened Glass Pane", $hardenedGlassBreakInfo)); - self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new BreakInfo(0.5))); - self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 15.0))); - self::register("ice", new Ice(new BID(Ids::ICE), "Ice", BreakInfo::pickaxe(0.5))); + self::register("hay_bale", new HayBale(new BID(Ids::HAY_BALE), "Hay Bale", new Info(new BreakInfo(0.5)))); + self::register("hopper", new Hopper(new BID(Ids::HOPPER, TileHopper::class), "Hopper", new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD(), 15.0)))); + self::register("ice", new Ice(new BID(Ids::ICE), "Ice", new Info(BreakInfo::pickaxe(0.5)))); - $updateBlockBreakInfo = new BreakInfo(1.0); + $updateBlockBreakInfo = new Info(new BreakInfo(1.0)); self::register("info_update", new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); self::register("info_update2", new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); - self::register("invisible_bedrock", new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", BreakInfo::indestructible())); + self::register("invisible_bedrock", new Transparent(new BID(Ids::INVISIBLE_BEDROCK), "Invisible Bedrock", new Info(BreakInfo::indestructible()))); - $ironBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::STONE(), 30.0); + $ironBreakInfo = new Info(BreakInfo::pickaxe(5.0, ToolTier::STONE(), 30.0)); self::register("iron", new Opaque(new BID(Ids::IRON), "Iron Block", $ironBreakInfo)); self::register("iron_bars", new Thin(new BID(Ids::IRON_BARS), "Iron Bars", $ironBreakInfo)); - $ironDoorBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 25.0); + $ironDoorBreakInfo = new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 25.0)); self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); - self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new BreakInfo(0.25))); - self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", BreakInfo::axe(0.8))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not - self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", BreakInfo::axe(0.4))); + self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new Info(new BreakInfo(0.25)))); + self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new Info(BreakInfo::axe(0.8)))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not + self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new Info(BreakInfo::axe(0.4)))); - $lanternBreakInfo = BreakInfo::pickaxe(5.0, ToolTier::WOOD()); + $lanternBreakInfo = new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD())); self::register("lantern", new Lantern(new BID(Ids::LANTERN), "Lantern", $lanternBreakInfo, 15)); self::register("soul_lantern", new Lantern(new BID(Ids::SOUL_LANTERN), "Soul Lantern", $lanternBreakInfo, 10)); - self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", BreakInfo::pickaxe(3.0, ToolTier::STONE()))); - self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", BreakInfo::indestructible(500.0))); - self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", BreakInfo::axe(2.0))); - self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new BreakInfo(0.5))); - self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", BreakInfo::axe(2.5))); - self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); - self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", BreakInfo::axe(1.0))); - self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", BreakInfo::instant())); - self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", BreakInfo::pickaxe(5.0, ToolTier::WOOD()))); - self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", BreakInfo::shovel(0.6))); + self::register("lapis_lazuli", new Opaque(new BID(Ids::LAPIS_LAZULI), "Lapis Lazuli Block", new Info(BreakInfo::pickaxe(3.0, ToolTier::STONE())))); + self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", new Info(BreakInfo::indestructible(500.0)))); + self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new Info(BreakInfo::axe(2.0)))); + self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new Info(new BreakInfo(0.5)))); + self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new Info(BreakInfo::axe(2.5)))); + self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())))); + self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new Info(BreakInfo::axe(1.0)))); + self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", new Info(BreakInfo::instant()))); + self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD())))); + self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new Info(BreakInfo::shovel(0.6)))); - $netherBrickBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $netherBrickBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("nether_bricks", new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); self::register("red_nether_bricks", new Opaque(new BID(Ids::RED_NETHER_BRICKS), "Red Nether Bricks", $netherBrickBreakInfo)); self::register("nether_brick_fence", new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); @@ -899,19 +900,19 @@ final class VanillaBlocks{ self::register("chiseled_nether_bricks", new Opaque(new BID(Ids::CHISELED_NETHER_BRICKS), "Chiseled Nether Bricks", $netherBrickBreakInfo)); self::register("cracked_nether_bricks", new Opaque(new BID(Ids::CRACKED_NETHER_BRICKS), "Cracked Nether Bricks", $netherBrickBreakInfo)); - self::register("nether_portal", new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", BreakInfo::indestructible(0.0))); - self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", BreakInfo::pickaxe(3.0, ToolTier::WOOD()))); - self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BreakInfo(1.0, ToolType::HOE))); - self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", BreakInfo::instant())); - self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", BreakInfo::pickaxe(0.4, ToolTier::WOOD()))); - self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", BreakInfo::axe(0.8))); - self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", BreakInfo::pickaxe(35.0 /* 50 in PC */, ToolTier::DIAMOND(), 6000.0))); - self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", BreakInfo::pickaxe(0.5))); - self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", BreakInfo::shovel(0.5))); - self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", BreakInfo::instant())); + self::register("nether_portal", new NetherPortal(new BID(Ids::NETHER_PORTAL), "Nether Portal", new Info(BreakInfo::indestructible(0.0)))); + self::register("nether_reactor_core", new NetherReactor(new BID(Ids::NETHER_REACTOR_CORE), "Nether Reactor Core", new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD())))); + self::register("nether_wart_block", new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new Info(new BreakInfo(1.0, ToolType::HOE)))); + self::register("nether_wart", new NetherWartPlant(new BID(Ids::NETHER_WART), "Nether Wart", new Info(BreakInfo::instant()))); + self::register("netherrack", new Netherrack(new BID(Ids::NETHERRACK), "Netherrack", new Info(BreakInfo::pickaxe(0.4, ToolTier::WOOD())))); + self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new Info(BreakInfo::axe(0.8)))); + self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new Info(BreakInfo::pickaxe(35.0 /* 50 in PC */, ToolTier::DIAMOND(), 6000.0)))); + self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new Info(BreakInfo::pickaxe(0.5)))); + self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new Info(BreakInfo::shovel(0.5)))); + self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", new Info(BreakInfo::instant()))); self::register("powered_rail", new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); - $prismarineBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); + $prismarineBreakInfo = new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)); self::register("prismarine", new Opaque(new BID(Ids::PRISMARINE), "Prismarine", $prismarineBreakInfo)); self::register("dark_prismarine", new Opaque(new BID(Ids::DARK_PRISMARINE), "Dark Prismarine", $prismarineBreakInfo)); self::register("prismarine_bricks", new Opaque(new BID(Ids::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); @@ -919,19 +920,19 @@ final class VanillaBlocks{ self::register("dark_prismarine_stairs", new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); self::register("prismarine_stairs", new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); - $pumpkinBreakInfo = BreakInfo::axe(1.0); + $pumpkinBreakInfo = new Info(BreakInfo::axe(1.0)); self::register("pumpkin", new Pumpkin(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); self::register("carved_pumpkin", new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); self::register("lit_pumpkin", new LitPumpkin(new BID(Ids::LIT_PUMPKIN), "Jack o'Lantern", $pumpkinBreakInfo)); - self::register("pumpkin_stem", new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", BreakInfo::instant())); + self::register("pumpkin_stem", new PumpkinStem(new BID(Ids::PUMPKIN_STEM), "Pumpkin Stem", new Info(BreakInfo::instant()))); - $purpurBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); + $purpurBreakInfo = new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)); self::register("purpur", new Opaque(new BID(Ids::PURPUR), "Purpur Block", $purpurBreakInfo)); self::register("purpur_pillar", new SimplePillar(new BID(Ids::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo)); self::register("purpur_stairs", new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); - $quartzBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD()); + $quartzBreakInfo = new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD())); self::register("quartz", new Opaque(new BID(Ids::QUARTZ), "Quartz Block", $quartzBreakInfo)); self::register("chiseled_quartz", new SimplePillar(new BID(Ids::CHISELED_QUARTZ), "Chiseled Quartz Block", $quartzBreakInfo)); self::register("quartz_pillar", new SimplePillar(new BID(Ids::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo)); @@ -942,31 +943,31 @@ final class VanillaBlocks{ self::register("smooth_quartz_stairs", new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); - self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", BreakInfo::instant())); - self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0))); - self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", BreakInfo::instant())); - self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new BreakInfo(0.3))); - self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", BreakInfo::instant())); - self::register("redstone_torch", new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", BreakInfo::instant())); - self::register("redstone_wire", new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", BreakInfo::instant())); - self::register("reserved6", new Reserved6(new BID(Ids::RESERVED6), "reserved6", BreakInfo::instant())); + self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", new Info(BreakInfo::instant()))); + self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0)))); + self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", new Info(BreakInfo::instant()))); + self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new Info(new BreakInfo(0.3)))); + self::register("redstone_repeater", new RedstoneRepeater(new BID(Ids::REDSTONE_REPEATER), "Redstone Repeater", new Info(BreakInfo::instant()))); + self::register("redstone_torch", new RedstoneTorch(new BID(Ids::REDSTONE_TORCH), "Redstone Torch", new Info(BreakInfo::instant()))); + self::register("redstone_wire", new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", new Info(BreakInfo::instant()))); + self::register("reserved6", new Reserved6(new BID(Ids::RESERVED6), "reserved6", new Info(BreakInfo::instant()))); - $sandBreakInfo = BreakInfo::shovel(0.5); + $sandBreakInfo = new Info(BreakInfo::shovel(0.5)); self::register("sand", new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); self::register("red_sand", new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); - self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new BreakInfo(0.3))); - self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", BreakInfo::instant())); - self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new BreakInfo(1.0))); - self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", BreakInfo::instant())); - self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", BreakInfo::shovel(0.2, ToolTier::WOOD()))); - self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", BreakInfo::shovel(0.1, ToolTier::WOOD()))); - self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", BreakInfo::shovel(0.5))); - self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new BreakInfo(0.6, ToolType::HOE))); - $shulkerBoxBreakInfo = BreakInfo::pickaxe(2); + self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new Info(new BreakInfo(0.3)))); + self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", new Info(BreakInfo::instant()))); + self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new Info(new BreakInfo(1.0)))); + self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", new Info(BreakInfo::instant()))); + self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", new Info(BreakInfo::shovel(0.2, ToolTier::WOOD())))); + self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new Info(BreakInfo::shovel(0.1, ToolTier::WOOD())))); + self::register("soul_sand", new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand", new Info(BreakInfo::shovel(0.5)))); + self::register("sponge", new Sponge(new BID(Ids::SPONGE), "Sponge", new Info(new BreakInfo(0.6, ToolType::HOE)))); + $shulkerBoxBreakInfo = new Info(BreakInfo::pickaxe(2)); self::register("shulker_box", new ShulkerBox(new BID(Ids::SHULKER_BOX, TileShulkerBox::class), "Shulker Box", $shulkerBoxBreakInfo)); - $stoneBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); + $stoneBreakInfo = new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)); self::register( "stone", $stone = new class(new BID(Ids::STONE), "Stone", $stoneBreakInfo) extends Opaque{ @@ -991,7 +992,7 @@ final class VanillaBlocks{ self::register("cracked_stone_bricks", $crackedStoneBrick = new Opaque(new BID(Ids::CRACKED_STONE_BRICKS), "Cracked Stone Bricks", $stoneBreakInfo)); self::register("chiseled_stone_bricks", $chiseledStoneBrick = new Opaque(new BID(Ids::CHISELED_STONE_BRICKS), "Chiseled Stone Bricks", $stoneBreakInfo)); - $infestedStoneBreakInfo = BreakInfo::pickaxe(0.75); + $infestedStoneBreakInfo = new Info(BreakInfo::pickaxe(0.75)); self::register("infested_stone", new InfestedStone(new BID(Ids::INFESTED_STONE), "Infested Stone", $infestedStoneBreakInfo, $stone)); self::register("infested_stone_brick", new InfestedStone(new BID(Ids::INFESTED_STONE_BRICK), "Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick)); self::register("infested_cobblestone", new InfestedStone(new BID(Ids::INFESTED_COBBLESTONE), "Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone)); @@ -1009,12 +1010,12 @@ final class VanillaBlocks{ self::register("polished_granite_stairs", new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); self::register("stone_brick_stairs", new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); self::register("mossy_stone_brick_stairs", new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", BreakInfo::pickaxe(0.5))); - self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", BreakInfo::pickaxe(3.5))); - self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); + self::register("stone_button", new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button", new Info(BreakInfo::pickaxe(0.5)))); + self::register("stonecutter", new Stonecutter(new BID(Ids::STONECUTTER), "Stonecutter", new Info(BreakInfo::pickaxe(3.5)))); + self::register("stone_pressure_plate", new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate", new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())))); //TODO: in the future this won't be the same for all the types - $stoneSlabBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $stoneSlabBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("brick_slab", new Slab(new BID(Ids::BRICK_SLAB), "Brick", $stoneSlabBreakInfo)); self::register("cobblestone_slab", new Slab(new BID(Ids::COBBLESTONE_SLAB), "Cobblestone", $stoneSlabBreakInfo)); @@ -1046,48 +1047,48 @@ final class VanillaBlocks{ self::register("smooth_quartz_slab", new Slab(new BID(Ids::SMOOTH_QUARTZ_SLAB), "Smooth Quartz", $stoneSlabBreakInfo)); self::register("stone_slab", new Slab(new BID(Ids::STONE_SLAB), "Stone", $stoneSlabBreakInfo)); - self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", BreakInfo::pickaxe(3.5, ToolTier::WOOD()))); - self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", BreakInfo::instant())); - self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", BreakInfo::instant())); - self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", BreakInfo::instant())); - self::register("fern", new TallGrass(new BID(Ids::FERN), "Fern", BreakInfo::instant(ToolType::SHEARS, 1))); - self::register("tall_grass", new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("legacy_stonecutter", new Opaque(new BID(Ids::LEGACY_STONECUTTER), "Legacy Stonecutter", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); + self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", new Info(BreakInfo::instant()))); + self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", new Info(BreakInfo::instant()))); + self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", new Info(BreakInfo::instant()))); + self::register("fern", new TallGrass(new BID(Ids::FERN), "Fern", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + self::register("tall_grass", new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); - self::register("blue_torch", new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", BreakInfo::instant())); - self::register("purple_torch", new Torch(new BID(Ids::PURPLE_TORCH), "Purple Torch", BreakInfo::instant())); - self::register("red_torch", new Torch(new BID(Ids::RED_TORCH), "Red Torch", BreakInfo::instant())); - self::register("green_torch", new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", BreakInfo::instant())); - self::register("torch", new Torch(new BID(Ids::TORCH), "Torch", BreakInfo::instant())); + self::register("blue_torch", new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", new Info(BreakInfo::instant()))); + self::register("purple_torch", new Torch(new BID(Ids::PURPLE_TORCH), "Purple Torch", new Info(BreakInfo::instant()))); + self::register("red_torch", new Torch(new BID(Ids::RED_TORCH), "Red Torch", new Info(BreakInfo::instant()))); + self::register("green_torch", new Torch(new BID(Ids::GREEN_TORCH), "Green Torch", new Info(BreakInfo::instant()))); + self::register("torch", new Torch(new BID(Ids::TORCH), "Torch", new Info(BreakInfo::instant()))); self::register("trapped_chest", new TrappedChest(new BID(Ids::TRAPPED_CHEST, TileChest::class), "Trapped Chest", $chestBreakInfo)); - self::register("tripwire", new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", BreakInfo::instant())); - self::register("tripwire_hook", new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", BreakInfo::instant())); - self::register("underwater_torch", new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", BreakInfo::instant())); - self::register("vines", new Vine(new BID(Ids::VINES), "Vines", BreakInfo::axe(0.2))); - self::register("water", new Water(new BID(Ids::WATER), "Water", BreakInfo::indestructible(500.0))); - self::register("lily_pad", new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", BreakInfo::instant())); + self::register("tripwire", new Tripwire(new BID(Ids::TRIPWIRE), "Tripwire", new Info(BreakInfo::instant()))); + self::register("tripwire_hook", new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook", new Info(BreakInfo::instant()))); + self::register("underwater_torch", new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch", new Info(BreakInfo::instant()))); + self::register("vines", new Vine(new BID(Ids::VINES), "Vines", new Info(BreakInfo::axe(0.2)))); + self::register("water", new Water(new BID(Ids::WATER), "Water", new Info(BreakInfo::indestructible(500.0)))); + self::register("lily_pad", new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad", new Info(BreakInfo::instant()))); - $weightedPressurePlateBreakInfo = BreakInfo::pickaxe(0.5, ToolTier::WOOD()); + $weightedPressurePlateBreakInfo = new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())); self::register("weighted_pressure_plate_heavy", new WeightedPressurePlateHeavy(new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY), "Weighted Pressure Plate Heavy", $weightedPressurePlateBreakInfo)); self::register("weighted_pressure_plate_light", new WeightedPressurePlateLight(new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT), "Weighted Pressure Plate Light", $weightedPressurePlateBreakInfo)); - self::register("wheat", new Wheat(new BID(Ids::WHEAT), "Wheat Block", BreakInfo::instant())); + self::register("wheat", new Wheat(new BID(Ids::WHEAT), "Wheat Block", new Info(BreakInfo::instant()))); - $leavesBreakInfo = new class(0.2, ToolType::HOE) extends BreakInfo{ + $leavesBreakInfo = new Info(new class(0.2, ToolType::HOE) extends BreakInfo{ public function getBreakTime(Item $item) : float{ if($item->getBlockToolType() === ToolType::SHEARS){ return 0.0; } return parent::getBreakTime($item); } - }; + }); foreach(TreeType::getAll() as $treeType){ $name = $treeType->getDisplayName(); - self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", BreakInfo::instant(), $treeType)); + self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", new Info(BreakInfo::instant()), $treeType)); self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); } - $sandstoneBreakInfo = BreakInfo::pickaxe(0.8, ToolTier::WOOD()); + $sandstoneBreakInfo = new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD())); self::register("red_sandstone_stairs", new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("smooth_red_sandstone_stairs", new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); self::register("red_sandstone", new Opaque(new BID(Ids::RED_SANDSTONE), "Red Sandstone", $sandstoneBreakInfo)); @@ -1102,17 +1103,17 @@ final class VanillaBlocks{ self::register("cut_sandstone", new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo)); self::register("smooth_sandstone", new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo)); - self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", BreakInfo::pickaxe(1.4, ToolTier::WOOD()))); + self::register("glazed_terracotta", new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new Info(BreakInfo::pickaxe(1.4, ToolTier::WOOD())))); self::register("dyed_shulker_box", new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo)); self::register("stained_glass", new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo)); self::register("stained_glass_pane", new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo)); self::register("stained_clay", new StainedHardenedClay(new BID(Ids::STAINED_CLAY), "Stained Clay", $hardenedClayBreakInfo)); self::register("stained_hardened_glass", new StainedHardenedGlass(new BID(Ids::STAINED_HARDENED_GLASS), "Stained Hardened Glass", $hardenedGlassBreakInfo)); self::register("stained_hardened_glass_pane", new StainedHardenedGlassPane(new BID(Ids::STAINED_HARDENED_GLASS_PANE), "Stained Hardened Glass Pane", $hardenedGlassBreakInfo)); - self::register("carpet", new Carpet(new BID(Ids::CARPET), "Carpet", new BreakInfo(0.1))); - self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", BreakInfo::pickaxe(1.8, ToolTier::WOOD()))); - self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", BreakInfo::shovel(0.5))); - self::register("wool", new Wool(new BID(Ids::WOOL), "Wool", new class(0.8, ToolType::SHEARS) extends BreakInfo{ + self::register("carpet", new Carpet(new BID(Ids::CARPET), "Carpet", new Info(new BreakInfo(0.1)))); + self::register("concrete", new Concrete(new BID(Ids::CONCRETE), "Concrete", new Info(BreakInfo::pickaxe(1.8, ToolTier::WOOD())))); + self::register("concrete_powder", new ConcretePowder(new BID(Ids::CONCRETE_POWDER), "Concrete Powder", new Info(BreakInfo::shovel(0.5)))); + self::register("wool", new Wool(new BID(Ids::WOOL), "Wool", new Info(new class(0.8, ToolType::SHEARS) extends BreakInfo{ public function getBreakTime(Item $item) : float{ $time = parent::getBreakTime($item); if($item->getBlockToolType() === ToolType::SHEARS){ @@ -1121,10 +1122,10 @@ final class VanillaBlocks{ return $time; } - })); + }))); //TODO: in the future these won't all have the same hardness; they only do now because of the old metadata crap - $wallBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $wallBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("cobblestone_wall", new Wall(new BID(Ids::COBBLESTONE_WALL), "Cobblestone Wall", $wallBreakInfo)); self::register("andesite_wall", new Wall(new BID(Ids::ANDESITE_WALL), "Andesite Wall", $wallBreakInfo)); self::register("brick_wall", new Wall(new BID(Ids::BRICK_WALL), "Brick Wall", $wallBreakInfo)); @@ -1142,7 +1143,7 @@ final class VanillaBlocks{ self::registerElements(); - $chemistryTableBreakInfo = BreakInfo::pickaxe(2.5, ToolTier::WOOD()); + $chemistryTableBreakInfo = new Info(BreakInfo::pickaxe(2.5, ToolTier::WOOD())); self::register("compound_creator", new ChemistryTable(new BID(Ids::COMPOUND_CREATOR), "Compound Creator", $chemistryTableBreakInfo)); self::register("element_constructor", new ChemistryTable(new BID(Ids::ELEMENT_CONSTRUCTOR), "Element Constructor", $chemistryTableBreakInfo)); self::register("lab_table", new ChemistryTable(new BID(Ids::LAB_TABLE), "Lab Table", $chemistryTableBreakInfo)); @@ -1155,23 +1156,23 @@ final class VanillaBlocks{ self::register("coral", new Coral( new BID(Ids::CORAL), "Coral", - BreakInfo::instant(), + new Info(BreakInfo::instant()), )); self::register("coral_fan", new FloorCoralFan( new BID(Ids::CORAL_FAN), "Coral Fan", - BreakInfo::instant(), + new Info(BreakInfo::instant()), )); self::register("wall_coral_fan", new WallCoralFan( new BID(Ids::WALL_CORAL_FAN), "Wall Coral Fan", - BreakInfo::instant(), + new Info(BreakInfo::instant()), )); - self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", BreakInfo::axe(0.7))); + self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", new Info(BreakInfo::axe(0.7)))); //TODO: muddy mangrove roots are supposed to be axis-rotatable (Bedrock parity issue https://bugs.mojang.com/browse/MCPE-153721) - self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", BreakInfo::shovel(0.7))); - self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new BreakInfo(0.3))); + self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7)))); + self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new Info(new BreakInfo(0.3)))); self::registerBlocksR13(); self::registerBlocksR14(); @@ -1188,12 +1189,12 @@ final class VanillaBlocks{ } private static function registerWoodenBlocks() : void{ - $planksBreakInfo = BreakInfo::axe(2.0, null, 15.0); - $signBreakInfo = BreakInfo::axe(1.0); - $logBreakInfo = BreakInfo::axe(2.0); - $woodenDoorBreakInfo = BreakInfo::axe(3.0, null, 15.0); - $woodenButtonBreakInfo = BreakInfo::axe(0.5); - $woodenPressurePlateBreakInfo = BreakInfo::axe(0.5); + $planksBreakInfo = new Info(BreakInfo::axe(2.0, null, 15.0)); + $signBreakInfo = new Info(BreakInfo::axe(1.0)); + $logBreakInfo = new Info(BreakInfo::axe(2.0)); + $woodenDoorBreakInfo = new Info(BreakInfo::axe(3.0, null, 15.0)); + $woodenButtonBreakInfo = new Info(BreakInfo::axe(0.5)); + $woodenPressurePlateBreakInfo = new Info(BreakInfo::axe(0.5)); foreach(WoodType::getAll() as $woodType){ $name = $woodType->getDisplayName(); @@ -1221,7 +1222,7 @@ final class VanillaBlocks{ } private static function registerMushroomBlocks() : void{ - $mushroomBlockBreakInfo = BreakInfo::axe(0.2); + $mushroomBlockBreakInfo = new Info(BreakInfo::axe(0.2)); self::register("brown_mushroom_block", new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block", $mushroomBlockBreakInfo)); self::register("red_mushroom_block", new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block", $mushroomBlockBreakInfo)); @@ -1232,7 +1233,7 @@ final class VanillaBlocks{ } private static function registerElements() : void{ - $instaBreak = BreakInfo::instant(); + $instaBreak = new Info(BreakInfo::instant()); self::register("element_zero", new Opaque(new BID(Ids::ELEMENT_ZERO), "???", $instaBreak)); self::register("element_hydrogen", new Element(new BID(Ids::ELEMENT_HYDROGEN), "Hydrogen", $instaBreak, "h", 1, 5)); @@ -1356,7 +1357,7 @@ final class VanillaBlocks{ } private static function registerOres() : void{ - $stoneOreBreakInfo = fn(ToolTier $toolTier) => BreakInfo::pickaxe(3.0, $toolTier); + $stoneOreBreakInfo = fn(ToolTier $toolTier) => new Info(BreakInfo::pickaxe(3.0, $toolTier)); self::register("coal_ore", new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD()))); self::register("copper_ore", new CopperOre(new BID(Ids::COPPER_ORE), "Copper Ore", $stoneOreBreakInfo(ToolTier::STONE()))); self::register("diamond_ore", new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON()))); @@ -1366,7 +1367,7 @@ final class VanillaBlocks{ self::register("lapis_lazuli_ore", new LapisOre(new BID(Ids::LAPIS_LAZULI_ORE), "Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE()))); self::register("redstone_ore", new RedstoneOre(new BID(Ids::REDSTONE_ORE), "Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON()))); - $deepslateOreBreakInfo = fn(ToolTier $toolTier) => BreakInfo::pickaxe(4.5, $toolTier); + $deepslateOreBreakInfo = fn(ToolTier $toolTier) => new Info(BreakInfo::pickaxe(4.5, $toolTier)); self::register("deepslate_coal_ore", new CoalOre(new BID(Ids::DEEPSLATE_COAL_ORE), "Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD()))); self::register("deepslate_copper_ore", new CopperOre(new BID(Ids::DEEPSLATE_COPPER_ORE), "Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); self::register("deepslate_diamond_ore", new DiamondOre(new BID(Ids::DEEPSLATE_DIAMOND_ORE), "Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); @@ -1376,49 +1377,49 @@ final class VanillaBlocks{ self::register("deepslate_lapis_lazuli_ore", new LapisOre(new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE), "Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE()))); self::register("deepslate_redstone_ore", new RedstoneOre(new BID(Ids::DEEPSLATE_REDSTONE_ORE), "Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON()))); - $netherrackOreBreakInfo = BreakInfo::pickaxe(3.0, ToolTier::WOOD()); + $netherrackOreBreakInfo = new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD())); self::register("nether_quartz_ore", new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore", $netherrackOreBreakInfo)); self::register("nether_gold_ore", new NetherGoldOre(new BID(Ids::NETHER_GOLD_ORE), "Nether Gold Ore", $netherrackOreBreakInfo)); } private static function registerCraftingTables() : void{ //TODO: this is the same for all wooden crafting blocks - $craftingBlockBreakInfo = BreakInfo::axe(2.5); + $craftingBlockBreakInfo = new Info(BreakInfo::axe(2.5)); self::register("cartography_table", new CartographyTable(new BID(Ids::CARTOGRAPHY_TABLE), "Cartography Table", $craftingBlockBreakInfo)); self::register("smithing_table", new SmithingTable(new BID(Ids::SMITHING_TABLE), "Smithing Table", $craftingBlockBreakInfo)); } private static function registerChorusBlocks() : void{ - $chorusBlockBreakInfo = BreakInfo::axe(0.4); + $chorusBlockBreakInfo = new Info(BreakInfo::axe(0.4)); self::register("chorus_plant", new ChorusPlant(new BID(Ids::CHORUS_PLANT), "Chorus Plant", $chorusBlockBreakInfo)); self::register("chorus_flower", new ChorusFlower(new BID(Ids::CHORUS_FLOWER), "Chorus Flower", $chorusBlockBreakInfo)); } private static function registerBlocksR13() : void{ - self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", BreakInfo::indestructible())); - self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", BreakInfo::instant())); + self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", new Info(BreakInfo::indestructible()))); + self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", new Info(BreakInfo::instant()))); } private static function registerBlocksR14() : void{ - self::register("honeycomb", new Opaque(new BID(Ids::HONEYCOMB), "Honeycomb Block", new BreakInfo(0.6))); + self::register("honeycomb", new Opaque(new BID(Ids::HONEYCOMB), "Honeycomb Block", new Info(new BreakInfo(0.6)))); } private static function registerBlocksR16() : void{ //for some reason, slabs have weird hardness like the legacy ones - $slabBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $slabBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); - self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", BreakInfo::pickaxe(30, ToolTier::DIAMOND(), 3600.0))); - $netheriteBreakInfo = BreakInfo::pickaxe(50, ToolTier::DIAMOND(), 3600.0); + self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new Info(BreakInfo::pickaxe(30, ToolTier::DIAMOND(), 3600.0)))); + $netheriteBreakInfo = new Info(BreakInfo::pickaxe(50, ToolTier::DIAMOND(), 3600.0)); self::register("netherite", new class(new BID(Ids::NETHERITE), "Netherite Block", $netheriteBreakInfo) extends Opaque{ public function isFireProofAsItem() : bool{ return true; } }); - $basaltBreakInfo = BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0); + $basaltBreakInfo = new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0)); self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo)); self::register("polished_basalt", new SimplePillar(new BID(Ids::POLISHED_BASALT), "Polished Basalt", $basaltBreakInfo)); self::register("smooth_basalt", new Opaque(new BID(Ids::SMOOTH_BASALT), "Smooth Basalt", $basaltBreakInfo)); - $blackstoneBreakInfo = BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0); + $blackstoneBreakInfo = new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)); self::register("blackstone", new Opaque(new BID(Ids::BLACKSTONE), "Blackstone", $blackstoneBreakInfo)); self::register("blackstone_slab", new Slab(new BID(Ids::BLACKSTONE_SLAB), "Blackstone", $slabBreakInfo)); self::register("blackstone_stairs", new Stair(new BID(Ids::BLACKSTONE_STAIRS), "Blackstone Stairs", $blackstoneBreakInfo)); @@ -1429,8 +1430,8 @@ final class VanillaBlocks{ //TODO: polished blackstone ought to have 2.0 hardness (as per java) but it's 1.5 in Bedrock (probably parity bug) $prefix = fn(string $thing) => "Polished Blackstone" . ($thing !== "" ? " $thing" : ""); self::register("polished_blackstone", new Opaque(new BID(Ids::POLISHED_BLACKSTONE), $prefix(""), $blackstoneBreakInfo)); - self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), BreakInfo::pickaxe(0.5))); - self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), BreakInfo::pickaxe(0.5, ToolTier::WOOD()))); + self::register("polished_blackstone_button", new StoneButton(new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix("Button"), new Info(BreakInfo::pickaxe(0.5)))); + self::register("polished_blackstone_pressure_plate", new StonePressurePlate(new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix("Pressure Plate"), new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())))); self::register("polished_blackstone_slab", new Slab(new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(""), $slabBreakInfo)); self::register("polished_blackstone_stairs", new Stair(new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix("Stairs"), $blackstoneBreakInfo)); self::register("polished_blackstone_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix("Wall"), $blackstoneBreakInfo)); @@ -1443,69 +1444,69 @@ final class VanillaBlocks{ self::register("polished_blackstone_brick_wall", new Wall(new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix("Wall"), $blackstoneBreakInfo)); self::register("cracked_polished_blackstone_bricks", new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); - self::register("soul_torch", new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", BreakInfo::instant())); - self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", BreakInfo::instant())); + self::register("soul_torch", new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", new Info(BreakInfo::instant()))); + self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", new Info(BreakInfo::instant()))); //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) - self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", BreakInfo::shovel(1.0))); + self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new Info(BreakInfo::shovel(1.0)))); - self::register("shroomlight", new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new BreakInfo(1.0, ToolType::HOE)) extends Opaque{ + self::register("shroomlight", new class(new BID(Ids::SHROOMLIGHT), "Shroomlight", new Info(new BreakInfo(1.0, ToolType::HOE))) extends Opaque{ public function getLightLevel() : int{ return 15; } }); - self::register("warped_wart_block", new Opaque(new BID(Ids::WARPED_WART_BLOCK), "Warped Wart Block", new BreakInfo(1.0, ToolType::HOE))); - self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND(), 6000.0)) extends Opaque{ + self::register("warped_wart_block", new Opaque(new BID(Ids::WARPED_WART_BLOCK), "Warped Wart Block", new Info(new BreakInfo(1.0, ToolType::HOE)))); + self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", new Info(BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND(), 6000.0))) extends Opaque{ public function getLightLevel() : int{ return 10;} }); } private static function registerBlocksR17() : void{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock - self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", BreakInfo::pickaxe(1.5, ToolTier::WOOD()))); + self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD())))); - self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", BreakInfo::pickaxe(0.75, ToolTier::WOOD()))); - self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0))); + self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", new Info(BreakInfo::pickaxe(0.75, ToolTier::WOOD())))); + self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)))); - self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0))); - self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", BreakInfo::pickaxe(5, ToolTier::IRON(), 30.0))); - self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0))); + self::register("raw_copper", new Opaque(new BID(Ids::RAW_COPPER), "Raw Copper Block", new Info(BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0)))); + self::register("raw_gold", new Opaque(new BID(Ids::RAW_GOLD), "Raw Gold Block", new Info(BreakInfo::pickaxe(5, ToolTier::IRON(), 30.0)))); + self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new Info(BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0)))); - $deepslateBreakInfo = BreakInfo::pickaxe(3, ToolTier::WOOD(), 18.0); + $deepslateBreakInfo = new Info(BreakInfo::pickaxe(3, ToolTier::WOOD(), 18.0)); self::register("deepslate", new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 - self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0))); + self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)))); - $deepslateBrickBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); + $deepslateBrickBreakInfo = new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)); self::register("deepslate_bricks", new Opaque(new BID(Ids::DEEPSLATE_BRICKS), "Deepslate Bricks", $deepslateBrickBreakInfo)); self::register("deepslate_brick_slab", new Slab(new BID(Ids::DEEPSLATE_BRICK_SLAB), "Deepslate Brick", $deepslateBrickBreakInfo)); self::register("deepslate_brick_stairs", new Stair(new BID(Ids::DEEPSLATE_BRICK_STAIRS), "Deepslate Brick Stairs", $deepslateBrickBreakInfo)); self::register("deepslate_brick_wall", new Wall(new BID(Ids::DEEPSLATE_BRICK_WALL), "Deepslate Brick Wall", $deepslateBrickBreakInfo)); self::register("cracked_deepslate_bricks", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_BRICKS), "Cracked Deepslate Bricks", $deepslateBrickBreakInfo)); - $deepslateTilesBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); + $deepslateTilesBreakInfo = new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)); self::register("deepslate_tiles", new Opaque(new BID(Ids::DEEPSLATE_TILES), "Deepslate Tiles", $deepslateTilesBreakInfo)); self::register("deepslate_tile_slab", new Slab(new BID(Ids::DEEPSLATE_TILE_SLAB), "Deepslate Tile", $deepslateTilesBreakInfo)); self::register("deepslate_tile_stairs", new Stair(new BID(Ids::DEEPSLATE_TILE_STAIRS), "Deepslate Tile Stairs", $deepslateTilesBreakInfo)); self::register("deepslate_tile_wall", new Wall(new BID(Ids::DEEPSLATE_TILE_WALL), "Deepslate Tile Wall", $deepslateTilesBreakInfo)); self::register("cracked_deepslate_tiles", new Opaque(new BID(Ids::CRACKED_DEEPSLATE_TILES), "Cracked Deepslate Tiles", $deepslateTilesBreakInfo)); - $cobbledDeepslateBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); + $cobbledDeepslateBreakInfo = new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)); self::register("cobbled_deepslate", new Opaque(new BID(Ids::COBBLED_DEEPSLATE), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_slab", new Slab(new BID(Ids::COBBLED_DEEPSLATE_SLAB), "Cobbled Deepslate", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_stairs", new Stair(new BID(Ids::COBBLED_DEEPSLATE_STAIRS), "Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo)); self::register("cobbled_deepslate_wall", new Wall(new BID(Ids::COBBLED_DEEPSLATE_WALL), "Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo)); - $polishedDeepslateBreakInfo = BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0); + $polishedDeepslateBreakInfo = new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)); self::register("polished_deepslate", new Opaque(new BID(Ids::POLISHED_DEEPSLATE), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_slab", new Slab(new BID(Ids::POLISHED_DEEPSLATE_SLAB), "Polished Deepslate", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_stairs", new Stair(new BID(Ids::POLISHED_DEEPSLATE_STAIRS), "Polished Deepslate Stairs", $polishedDeepslateBreakInfo)); self::register("polished_deepslate_wall", new Wall(new BID(Ids::POLISHED_DEEPSLATE_WALL), "Polished Deepslate Wall", $polishedDeepslateBreakInfo)); - self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new BreakInfo(0.3))); + self::register("tinted_glass", new TintedGlass(new BID(Ids::TINTED_GLASS), "Tinted Glass", new Info(new BreakInfo(0.3)))); //blast resistance should be 30 if we were matched with java :( - $copperBreakInfo = BreakInfo::pickaxe(3.0, ToolTier::STONE(), 18.0); + $copperBreakInfo = new Info(BreakInfo::pickaxe(3.0, ToolTier::STONE(), 18.0)); self::register("lightning_rod", new LightningRod(new BID(Ids::LIGHTNING_ROD), "Lightning Rod", $copperBreakInfo)); self::register("copper", new Copper(new BID(Ids::COPPER), "Copper Block", $copperBreakInfo)); @@ -1513,27 +1514,27 @@ final class VanillaBlocks{ self::register("cut_copper_slab", new CopperSlab(new BID(Ids::CUT_COPPER_SLAB), "Cut Copper Slab", $copperBreakInfo)); self::register("cut_copper_stairs", new CopperStairs(new BID(Ids::CUT_COPPER_STAIRS), "Cut Copper Stairs", $copperBreakInfo)); - $candleBreakInfo = new BreakInfo(0.1); + $candleBreakInfo = new Info(new BreakInfo(0.1)); self::register("candle", new Candle(new BID(Ids::CANDLE), "Candle", $candleBreakInfo)); self::register("dyed_candle", new DyedCandle(new BID(Ids::DYED_CANDLE), "Dyed Candle", $candleBreakInfo)); //TODO: duplicated break info :( - $cakeBreakInfo = new BreakInfo(0.5); + $cakeBreakInfo = new Info(new BreakInfo(0.5)); self::register("cake_with_candle", new CakeWithCandle(new BID(Ids::CAKE_WITH_CANDLE), "Cake With Candle", $cakeBreakInfo)); self::register("cake_with_dyed_candle", new CakeWithDyedCandle(new BID(Ids::CAKE_WITH_DYED_CANDLE), "Cake With Dyed Candle", $cakeBreakInfo)); - self::register("hanging_roots", new HangingRoots(new BID(Ids::HANGING_ROOTS), "Hanging Roots", BreakInfo::instant(ToolType::SHEARS, 1))); + self::register("hanging_roots", new HangingRoots(new BID(Ids::HANGING_ROOTS), "Hanging Roots", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); } private static function registerBlocksR18() : void{ - self::register("spore_blossom", new SporeBlossom(new BID(Ids::SPORE_BLOSSOM), "Spore Blossom", BreakInfo::instant())); + self::register("spore_blossom", new SporeBlossom(new BID(Ids::SPORE_BLOSSOM), "Spore Blossom", new Info(BreakInfo::instant()))); } private static function registerMudBlocks() : void{ - self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", BreakInfo::shovel(0.5))); - self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", BreakInfo::pickaxe(1.0, null, 15.0))); + self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new Info(BreakInfo::shovel(0.5)))); + self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", new Info(BreakInfo::pickaxe(1.0, null, 15.0)))); - $mudBricksBreakInfo = BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0); + $mudBricksBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("mud_bricks", new Opaque(new BID(Ids::MUD_BRICKS), "Mud Bricks", $mudBricksBreakInfo)); self::register("mud_brick_slab", new Slab(new BID(Ids::MUD_BRICK_SLAB), "Mud Brick", $mudBricksBreakInfo)); @@ -1542,7 +1543,7 @@ final class VanillaBlocks{ } private static function registerCauldronBlocks() : void{ - $cauldronBreakInfo = BreakInfo::pickaxe(2, ToolTier::WOOD()); + $cauldronBreakInfo = new Info(BreakInfo::pickaxe(2, ToolTier::WOOD())); self::register("cauldron", new Cauldron(new BID(Ids::CAULDRON, TileCauldron::class), "Cauldron", $cauldronBreakInfo)); self::register("water_cauldron", new WaterCauldron(new BID(Ids::WATER_CAULDRON, TileCauldron::class), "Water Cauldron", $cauldronBreakInfo)); diff --git a/src/block/Wool.php b/src/block/Wool.php index b3a563a2e..2cc2b7535 100644 --- a/src/block/Wool.php +++ b/src/block/Wool.php @@ -29,9 +29,9 @@ use pocketmine\block\utils\DyeColor; class Wool extends Opaque{ use ColoredTrait; - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->color = DyeColor::WHITE(); - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getFlameEncouragement() : int{ diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 3d47b64ef..33dba4d20 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -25,6 +25,7 @@ namespace pocketmine\block\utils; use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockIdentifier; +use pocketmine\block\BlockTypeInfo; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Axe; @@ -40,9 +41,9 @@ trait CopperTrait{ private CopperOxidation $oxidation; private bool $waxed = false; - public function __construct(BlockIdentifier $identifier, string $name, BlockBreakInfo $breakInfo){ + public function __construct(BlockIdentifier $identifier, string $name, BlockTypeInfo $typeInfo){ $this->oxidation = CopperOxidation::NONE(); - parent::__construct($identifier, $name, $breakInfo); + parent::__construct($identifier, $name, $typeInfo); } public function getRequiredTypeDataBits() : int{ return 3; } diff --git a/src/block/utils/WoodTypeTrait.php b/src/block/utils/WoodTypeTrait.php index 0ecd4e6f1..d5c9ee0fc 100644 --- a/src/block/utils/WoodTypeTrait.php +++ b/src/block/utils/WoodTypeTrait.php @@ -25,13 +25,14 @@ namespace pocketmine\block\utils; use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockIdentifier; +use pocketmine\block\BlockTypeInfo; trait WoodTypeTrait{ private WoodType $woodType; //immutable for now - public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo, WoodType $woodType){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, WoodType $woodType){ $this->woodType = $woodType; - parent::__construct($idInfo, $name, $breakInfo); + parent::__construct($idInfo, $name, $typeInfo); } public function getWoodType() : WoodType{ diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index c5df95c40..69848492e 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -43,7 +43,7 @@ class BlockTest extends TestCase{ * Test registering a block which would overwrite another block, without forcing it */ public function testAccidentalOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", new BlockTypeInfo(BlockBreakInfo::instant())); $this->expectException(\InvalidArgumentException::class); $this->blockFactory->register($block); } @@ -52,7 +52,7 @@ class BlockTest extends TestCase{ * Test registering a block deliberately overwriting another block works as expected */ public function testDeliberateOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); + $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", new BlockTypeInfo(BlockBreakInfo::instant())); $this->blockFactory->register($block, true); self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromStateId($block->getStateId())); } @@ -63,7 +63,7 @@ class BlockTest extends TestCase{ public function testRegisterNewBlock() : void{ for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", BlockBreakInfo::instant()); + $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); $this->blockFactory->register($b); self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); return; @@ -78,7 +78,7 @@ class BlockTest extends TestCase{ */ public function testRegisterIdTooSmall() : void{ self::expectException(\InvalidArgumentException::class); - $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1), "Out Of Bounds Block", BlockBreakInfo::instant())); + $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1), "Out Of Bounds Block", new BlockTypeInfo(BlockBreakInfo::instant()))); } /** From 817591910b7876047ddd2de3ab62d72f2087b856 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 23 Jul 2022 21:01:49 +0100 Subject: [PATCH 379/692] Fix CS --- src/block/VanillaBlocks.php | 2 +- src/block/utils/CopperTrait.php | 1 - src/block/utils/WoodTypeTrait.php | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 0f2532f8a..dbe3383bf 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\BlockTypeInfo as Info; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockToolType as ToolType; use pocketmine\block\BlockTypeIds as Ids; +use pocketmine\block\BlockTypeInfo as Info; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\tile\Beacon as TileBeacon; diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 33dba4d20..51d269b42 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockIdentifier; use pocketmine\block\BlockTypeInfo; use pocketmine\data\runtime\RuntimeDataReader; diff --git a/src/block/utils/WoodTypeTrait.php b/src/block/utils/WoodTypeTrait.php index d5c9ee0fc..b2e023ad9 100644 --- a/src/block/utils/WoodTypeTrait.php +++ b/src/block/utils/WoodTypeTrait.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\block\BlockBreakInfo; use pocketmine\block\BlockIdentifier; use pocketmine\block\BlockTypeInfo; From d9b050fb688155ec962f574388eb48342fc8f9d1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 00:08:02 +0100 Subject: [PATCH 380/692] First look at using (very) basic tags for dynamic block properties this allows plugins to, for example, add their own custom dirt-like blocks which support having flowers placed on them. --- src/block/Bamboo.php | 9 +--- src/block/BambooSapling.php | 9 +--- src/block/Block.php | 29 +++++++++-- src/block/BlockTypeInfo.php | 18 ++++++- src/block/BlockTypeTags.php | 32 ++++++++++++ src/block/Cactus.php | 10 ++-- src/block/DoublePlant.php | 7 +-- src/block/Flower.php | 5 +- src/block/FlowerPot.php | 9 +--- src/block/Sapling.php | 5 +- src/block/Stem.php | 3 +- src/block/Sugarcane.php | 11 +++- src/block/SweetBerryBush.php | 4 +- src/block/TallGrass.php | 7 +-- src/block/VanillaBlocks.php | 70 ++++++++++++++------------ src/block/WitherRose.php | 21 ++++---- src/world/generator/populator/Tree.php | 7 +-- 17 files changed, 158 insertions(+), 98 deletions(-) create mode 100644 src/block/BlockTypeTags.php diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 948755830..1481027ff 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -124,14 +124,7 @@ class Bamboo extends Transparent{ } private function canBeSupportedBy(Block $block) : bool{ - //TODO: tags would be better for this - return - $block instanceof Dirt || - $block instanceof Grass || - $block instanceof Gravel || - $block instanceof Sand || - $block instanceof Mycelium || - $block instanceof Podzol; + return $block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD); } private function seekToTop() : Bamboo{ diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index f388d6e35..2aec4f09b 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -52,14 +52,7 @@ final class BambooSapling extends Flowable{ } private function canBeSupportedBy(Block $block) : bool{ - //TODO: tags would be better for this - return - $block instanceof Dirt || - $block instanceof Grass || - $block instanceof Gravel || - $block instanceof Sand || - $block instanceof Mycelium || - $block instanceof Podzol; + return $block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD); } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/Block.php b/src/block/Block.php index d6830e450..21fa23497 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -56,7 +56,7 @@ class Block{ protected BlockIdentifier $idInfo; protected string $fallbackName; - protected BlockBreakInfo $breakInfo; + protected BlockTypeInfo $typeInfo; protected Position $position; /** @var AxisAlignedBB[]|null */ @@ -68,7 +68,7 @@ class Block{ public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ $this->idInfo = $idInfo; $this->fallbackName = $name; - $this->breakInfo = $typeInfo->getBreakInfo(); + $this->typeInfo = $typeInfo; $this->position = new Position(0, 0, 0, null); } @@ -237,6 +237,25 @@ class Block{ return $this->getStateId() === $other->getStateId(); } + /** + * @return string[] + */ + public function getTypeTags() : array{ + return $this->typeInfo->getTypeTags(); + } + + /** + * Returns whether this block type has the given type tag. Type tags are used as a dynamic way to tag blocks as + * having certain properties, allowing type checks which are more dynamic than hardcoding a bunch of IDs or a bunch + * of instanceof checks. + * + * For example, grass blocks, dirt, farmland, podzol and mycelium are all dirt-like blocks, and support the + * placement of blocks like flowers, so they have a common tag which allows them to be identified as such. + */ + public function hasTypeTag(string $tag) : bool{ + return $this->typeInfo->hasTypeTag($tag); + } + /** * AKA: Block->isPlaceable */ @@ -268,7 +287,7 @@ class Block{ * Returns an object containing information about the destruction requirements of this block. */ public function getBreakInfo() : BlockBreakInfo{ - return $this->breakInfo; + return $this->typeInfo->getBreakInfo(); } /** @@ -412,7 +431,7 @@ class Block{ * @return Item[] */ public function getDrops(Item $item) : array{ - if($this->breakInfo->isToolCompatible($item)){ + if($this->getBreakInfo()->isToolCompatible($item)){ if($this->isAffectedBySilkTouch() && $item->hasEnchantment(VanillaEnchantments::SILK_TOUCH())){ return $this->getSilkTouchDrops($item); } @@ -454,7 +473,7 @@ class Block{ * Returns how much XP will be dropped by breaking this block with the given item. */ public function getXpDropForTool(Item $item) : int{ - if($item->hasEnchantment(VanillaEnchantments::SILK_TOUCH()) || !$this->breakInfo->isToolCompatible($item)){ + if($item->hasEnchantment(VanillaEnchantments::SILK_TOUCH()) || !$this->getBreakInfo()->isToolCompatible($item)){ return 0; } diff --git a/src/block/BlockTypeInfo.php b/src/block/BlockTypeInfo.php index 6f52a310a..7add26005 100644 --- a/src/block/BlockTypeInfo.php +++ b/src/block/BlockTypeInfo.php @@ -23,11 +23,27 @@ declare(strict_types=1); namespace pocketmine\block; +use function array_fill_keys; +use function array_keys; + final class BlockTypeInfo{ + /** + * @var true[] + * @phpstan-var array + */ + private array $typeTags; public function __construct( private BlockBreakInfo $breakInfo, - ){} + array $typeTags = [] + ){ + $this->typeTags = array_fill_keys($typeTags, true); + } public function getBreakInfo() : BlockBreakInfo{ return $this->breakInfo; } + + /** @return string[] */ + public function getTypeTags() : array{ return array_keys($this->typeTags); } + + public function hasTypeTag(string $tag) : bool{ return isset($this->typeTags[$tag]); } } diff --git a/src/block/BlockTypeTags.php b/src/block/BlockTypeTags.php new file mode 100644 index 000000000..8bcd4c589 --- /dev/null +++ b/src/block/BlockTypeTags.php @@ -0,0 +1,32 @@ +isSameType($this) || $block->hasTypeTag(BlockTypeTags::SAND); + } + public function onNearbyBlockChange() : void{ - $down = $this->getSide(Facing::DOWN); $world = $this->position->getWorld(); - if($down->getTypeId() !== BlockTypeIds::SAND && $down->getTypeId() !== BlockTypeIds::RED_SAND && !$down->isSameType($this)){ + if(!$this->canBeSupportedBy($this->getSide(Facing::DOWN))){ $world->useBreakOn($this->position); }else{ foreach(Facing::HORIZONTAL as $side){ @@ -131,8 +134,7 @@ class Cactus extends Transparent{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $down = $this->getSide(Facing::DOWN); - if($down->getTypeId() === BlockTypeIds::SAND || $down->getTypeId() === BlockTypeIds::RED_SAND || $down->isSameType($this)){ + if($this->canBeSupportedBy($this->getSide(Facing::DOWN))){ foreach(Facing::HORIZONTAL as $side){ if($this->getSide($side)->isSolid()){ return false; diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 4874826d2..6d6c80f0f 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -49,8 +49,8 @@ class DoublePlant extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $id = $blockReplace->getSide(Facing::DOWN)->getTypeId(); - if(($id === BlockTypeIds::GRASS || $id === BlockTypeIds::DIRT) && $blockReplace->getSide(Facing::UP)->canBeReplaced()){ + $down = $blockReplace->getSide(Facing::DOWN); + if($down->hasTypeTag(BlockTypeTags::DIRT) && $blockReplace->getSide(Facing::UP)->canBeReplaced()){ $top = clone $this; $top->top = true; $tx->addBlock($blockReplace->position, $this)->addBlock($blockReplace->position->getSide(Facing::UP), $top); @@ -74,7 +74,8 @@ class DoublePlant extends Flowable{ } public function onNearbyBlockChange() : void{ - if(!$this->isValidHalfPlant() || (!$this->top && $this->getSide(Facing::DOWN)->isTransparent())){ + $down = $this->getSide(Facing::DOWN); + if(!$this->isValidHalfPlant() || (!$this->top && !$down->hasTypeTag(BlockTypeTags::DIRT) && !$down->hasTypeTag(BlockTypeTags::MUD))){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/Flower.php b/src/block/Flower.php index 0c4f2827f..fca5dd98f 100644 --- a/src/block/Flower.php +++ b/src/block/Flower.php @@ -33,7 +33,7 @@ class Flower extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::FARMLAND){ + if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -41,7 +41,8 @@ class Flower extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->isTransparent()){ + $down = $this->getSide(Facing::DOWN); + if(!$down->hasTypeTag(BlockTypeTags::DIRT) && !$down->hasTypeTag(BlockTypeTags::MUD)){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/FlowerPot.php b/src/block/FlowerPot.php index 757c51850..1c85ea0d8 100644 --- a/src/block/FlowerPot.php +++ b/src/block/FlowerPot.php @@ -79,14 +79,7 @@ class FlowerPot extends Flowable{ } private function isValidPlant(Block $block) : bool{ - return - $block instanceof Cactus || - $block instanceof DeadBush || - $block instanceof Flower || - $block instanceof RedMushroom || - $block instanceof Sapling || - ($block instanceof TallGrass && $block->getTypeId() === BlockTypeIds::LARGE_FERN); - //TODO: bamboo + return $block->hasTypeTag(BlockTypeTags::POTTABLE_PLANTS); } /** diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 03cde4cbd..cfe301223 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -63,7 +63,7 @@ class Sapling extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::FARMLAND){ + if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -81,7 +81,8 @@ class Sapling extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->isTransparent()){ + $down = $this->getSide(Facing::DOWN); + if(!$down->hasTypeTag(BlockTypeTags::DIRT) && !$down->hasTypeTag(BlockTypeTags::MUD)){ $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/Stem.php b/src/block/Stem.php index 175731c9e..3c7d1d2c3 100644 --- a/src/block/Stem.php +++ b/src/block/Stem.php @@ -53,8 +53,7 @@ abstract class Stem extends Crops{ } $side = $this->getSide(Facing::HORIZONTAL[array_rand(Facing::HORIZONTAL)]); - $d = $side->getSide(Facing::DOWN); - if($side->getTypeId() === BlockTypeIds::AIR && ($d->getTypeId() === BlockTypeIds::FARMLAND || $d->getTypeId() === BlockTypeIds::GRASS || $d->getTypeId() === BlockTypeIds::DIRT)){ + if($side->getTypeId() === BlockTypeIds::AIR && $side->getSide(Facing::DOWN)->hasTypeTag(BlockTypeTags::DIRT)){ $ev = new BlockGrowEvent($side, $grow); $ev->call(); if(!$ev->isCancelled()){ diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 35c99bcab..3acaaa367 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -92,9 +92,16 @@ class Sugarcane extends Flowable{ return false; } + private function canBeSupportedBy(Block $block) : bool{ + return + $block->hasTypeTag(BlockTypeTags::MUD) || + $block->hasTypeTag(BlockTypeTags::DIRT) || + $block->hasTypeTag(BlockTypeTags::SAND); + } + public function onNearbyBlockChange() : void{ $down = $this->getSide(Facing::DOWN); - if($down->isTransparent() && !$down->isSameType($this)){ + if(!$down->isSameType($this) && !$this->canBeSupportedBy($down)){ $this->position->getWorld()->useBreakOn($this->position); } } @@ -118,7 +125,7 @@ class Sugarcane extends Flowable{ $down = $this->getSide(Facing::DOWN); if($down->isSameType($this)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); - }elseif($down->getTypeId() === BlockTypeIds::GRASS || $down->getTypeId() === BlockTypeIds::DIRT || $down->getTypeId() === BlockTypeIds::SAND || $down->getTypeId() === BlockTypeIds::RED_SAND || $down->getTypeId() === BlockTypeIds::PODZOL){ + }elseif($this->canBeSupportedBy($down)){ foreach(Facing::HORIZONTAL as $side){ if($down->getSide($side) instanceof Water){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 2c75758e1..f7b8b1c02 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -73,8 +73,8 @@ class SweetBerryBush extends Flowable{ } protected function canBeSupportedBy(Block $block) : bool{ - $id = $block->getTypeId(); - return $id === BlockTypeIds::GRASS || $id === BlockTypeIds::DIRT || $id === BlockTypeIds::PODZOL; + return $block->getTypeId() !== BlockTypeIds::FARMLAND && //bedrock-specific thing (bug?) + ($block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD)); } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ diff --git a/src/block/TallGrass.php b/src/block/TallGrass.php index 801a07322..1811aa0e1 100644 --- a/src/block/TallGrass.php +++ b/src/block/TallGrass.php @@ -38,8 +38,8 @@ class TallGrass extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $down = $this->getSide(Facing::DOWN)->getTypeId(); - if($down === BlockTypeIds::GRASS || $down === BlockTypeIds::DIRT){ + $down = $this->getSide(Facing::DOWN); + if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -47,7 +47,8 @@ class TallGrass extends Flowable{ } public function onNearbyBlockChange() : void{ - if($this->getSide(Facing::DOWN)->isTransparent()){ //Replace with common break method + $down = $this->getSide(Facing::DOWN); + if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ //Replace with common break method $this->position->getWorld()->useBreakOn($this->position); } } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index dbe3383bf..c5c6db1f7 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -28,6 +28,7 @@ use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockToolType as ToolType; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\BlockTypeInfo as Info; +use pocketmine\block\BlockTypeTags as Tags; use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\tile\Beacon as TileBeacon; @@ -750,7 +751,7 @@ final class VanillaBlocks{ } return parent::getBreakTime($item); } - }))); + }, [Tags::POTTABLE_PLANTS]))); self::register("bamboo_sapling", new BambooSapling(new BID(Ids::BAMBOO_SAPLING), "Bamboo Sapling", new Info(BreakInfo::instant()))); $bannerBreakInfo = new Info(BreakInfo::axe(1.0)); @@ -773,8 +774,8 @@ final class VanillaBlocks{ self::register("brick_stairs", new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); self::register("bricks", new Opaque(new BID(Ids::BRICKS), "Bricks", $bricksBreakInfo)); - self::register("brown_mushroom", new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", new Info(BreakInfo::instant()))); - self::register("cactus", new Cactus(new BID(Ids::CACTUS), "Cactus", new Info(new BreakInfo(0.4)))); + self::register("brown_mushroom", new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom", new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]))); + self::register("cactus", new Cactus(new BID(Ids::CACTUS), "Cactus", new Info(new BreakInfo(0.4), [Tags::POTTABLE_PLANTS]))); self::register("cake", new Cake(new BID(Ids::CAKE), "Cake", new Info(new BreakInfo(0.5)))); self::register("carrots", new Carrot(new BID(Ids::CARROTS), "Carrot Block", new Info(BreakInfo::instant()))); @@ -794,11 +795,11 @@ final class VanillaBlocks{ self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new Info(BreakInfo::pickaxe(7.0, ToolTier::WOOD())))); self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new Info(BreakInfo::axe(2.5)))); self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new Info(BreakInfo::axe(0.2)))); - self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS]))); self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); self::register("diamond", new Opaque(new BID(Ids::DIAMOND), "Diamond Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON(), 30.0)))); - self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new Info(BreakInfo::shovel(0.5)))); + self::register("dirt", new Dirt(new BID(Ids::DIRT), "Dirt", new Info(BreakInfo::shovel(0.5), [Tags::DIRT]))); self::register("sunflower", new DoublePlant(new BID(Ids::SUNFLOWER), "Sunflower", new Info(BreakInfo::instant()))); self::register("lilac", new DoublePlant(new BID(Ids::LILAC), "Lilac", new Info(BreakInfo::instant()))); self::register("rose_bush", new DoublePlant(new BID(Ids::ROSE_BUSH), "Rose Bush", new Info(BreakInfo::instant()))); @@ -818,22 +819,24 @@ final class VanillaBlocks{ self::register("end_stone_brick_stairs", new Stair(new BID(Ids::END_STONE_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new Info(BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0)))); - self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new Info(BreakInfo::shovel(0.6)))); + self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new Info(BreakInfo::shovel(0.6), [Tags::DIRT]))); self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", new Info(BreakInfo::instant()))); self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new Info(BreakInfo::axe(2.5, null, 2.5)))); - self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", new Info(BreakInfo::instant()))); - self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", new Info(BreakInfo::instant()))); - self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", new Info(BreakInfo::instant()))); - self::register("azure_bluet", new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", new Info(BreakInfo::instant()))); - self::register("blue_orchid", new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", new Info(BreakInfo::instant()))); - self::register("cornflower", new Flower(new BID(Ids::CORNFLOWER), "Cornflower", new Info(BreakInfo::instant()))); - self::register("lily_of_the_valley", new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", new Info(BreakInfo::instant()))); - self::register("orange_tulip", new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", new Info(BreakInfo::instant()))); - self::register("oxeye_daisy", new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", new Info(BreakInfo::instant()))); - self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", new Info(BreakInfo::instant()))); - self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", new Info(BreakInfo::instant()))); - self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", new Info(BreakInfo::instant()))); - self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", new Info(BreakInfo::instant()))); + + $flowerTypeInfo = new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]); + self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", $flowerTypeInfo)); + self::register("poppy", new Flower(new BID(Ids::POPPY), "Poppy", $flowerTypeInfo)); + self::register("allium", new Flower(new BID(Ids::ALLIUM), "Allium", $flowerTypeInfo)); + self::register("azure_bluet", new Flower(new BID(Ids::AZURE_BLUET), "Azure Bluet", $flowerTypeInfo)); + self::register("blue_orchid", new Flower(new BID(Ids::BLUE_ORCHID), "Blue Orchid", $flowerTypeInfo)); + self::register("cornflower", new Flower(new BID(Ids::CORNFLOWER), "Cornflower", $flowerTypeInfo)); + self::register("lily_of_the_valley", new Flower(new BID(Ids::LILY_OF_THE_VALLEY), "Lily of the Valley", $flowerTypeInfo)); + self::register("orange_tulip", new Flower(new BID(Ids::ORANGE_TULIP), "Orange Tulip", $flowerTypeInfo)); + self::register("oxeye_daisy", new Flower(new BID(Ids::OXEYE_DAISY), "Oxeye Daisy", $flowerTypeInfo)); + self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", $flowerTypeInfo)); + self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", $flowerTypeInfo)); + self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", $flowerTypeInfo)); + self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", $flowerTypeInfo)); self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new Info(BreakInfo::pickaxe(2.5)))); self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); @@ -846,9 +849,9 @@ final class VanillaBlocks{ self::register("glowstone", new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone", new Info(BreakInfo::pickaxe(0.3)))); self::register("gold", new Opaque(new BID(Ids::GOLD), "Gold Block", new Info(BreakInfo::pickaxe(3.0, ToolTier::IRON(), 30.0)))); - $grassBreakInfo = new Info(BreakInfo::shovel(0.6)); - self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", $grassBreakInfo)); - self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", $grassBreakInfo)); + $grassBreakInfo = BreakInfo::shovel(0.6); + self::register("grass", new Grass(new BID(Ids::GRASS), "Grass", new Info($grassBreakInfo, [Tags::DIRT]))); + self::register("grass_path", new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path", new Info($grassBreakInfo))); self::register("gravel", new Gravel(new BID(Ids::GRAVEL), "Gravel", new Info(BreakInfo::shovel(0.6)))); $hardenedClayBreakInfo = new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD(), 21.0)); @@ -889,7 +892,7 @@ final class VanillaBlocks{ self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new Info(BreakInfo::axe(1.0)))); self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", new Info(BreakInfo::instant()))); self::register("monster_spawner", new MonsterSpawner(new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class), "Monster Spawner", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD())))); - self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new Info(BreakInfo::shovel(0.6)))); + self::register("mycelium", new Mycelium(new BID(Ids::MYCELIUM), "Mycelium", new Info(BreakInfo::shovel(0.6), [Tags::DIRT]))); $netherBrickBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); self::register("nether_bricks", new Opaque(new BID(Ids::NETHER_BRICKS), "Nether Bricks", $netherBrickBreakInfo)); @@ -908,7 +911,7 @@ final class VanillaBlocks{ self::register("note_block", new Note(new BID(Ids::NOTE_BLOCK, TileNote::class), "Note Block", new Info(BreakInfo::axe(0.8)))); self::register("obsidian", new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new Info(BreakInfo::pickaxe(35.0 /* 50 in PC */, ToolTier::DIAMOND(), 6000.0)))); self::register("packed_ice", new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice", new Info(BreakInfo::pickaxe(0.5)))); - self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new Info(BreakInfo::shovel(0.5)))); + self::register("podzol", new Podzol(new BID(Ids::PODZOL), "Podzol", new Info(BreakInfo::shovel(0.5), [Tags::DIRT]))); self::register("potatoes", new Potato(new BID(Ids::POTATOES), "Potato Block", new Info(BreakInfo::instant()))); self::register("powered_rail", new PoweredRail(new BID(Ids::POWERED_RAIL), "Powered Rail", $railBreakInfo)); @@ -943,7 +946,7 @@ final class VanillaBlocks{ self::register("smooth_quartz_stairs", new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); self::register("rail", new Rail(new BID(Ids::RAIL), "Rail", $railBreakInfo)); - self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", new Info(BreakInfo::instant()))); + self::register("red_mushroom", new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom", new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]))); self::register("redstone", new Redstone(new BID(Ids::REDSTONE), "Redstone Block", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 30.0)))); self::register("redstone_comparator", new RedstoneComparator(new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class), "Redstone Comparator", new Info(BreakInfo::instant()))); self::register("redstone_lamp", new RedstoneLamp(new BID(Ids::REDSTONE_LAMP), "Redstone Lamp", new Info(new BreakInfo(0.3)))); @@ -952,9 +955,9 @@ final class VanillaBlocks{ self::register("redstone_wire", new RedstoneWire(new BID(Ids::REDSTONE_WIRE), "Redstone", new Info(BreakInfo::instant()))); self::register("reserved6", new Reserved6(new BID(Ids::RESERVED6), "reserved6", new Info(BreakInfo::instant()))); - $sandBreakInfo = new Info(BreakInfo::shovel(0.5)); - self::register("sand", new Sand(new BID(Ids::SAND), "Sand", $sandBreakInfo)); - self::register("red_sand", new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandBreakInfo)); + $sandTypeInfo = new Info(BreakInfo::shovel(0.5), [Tags::SAND]); + self::register("sand", new Sand(new BID(Ids::SAND), "Sand", $sandTypeInfo)); + self::register("red_sand", new Sand(new BID(Ids::RED_SAND), "Red Sand", $sandTypeInfo)); self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new Info(new BreakInfo(0.3)))); self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", new Info(BreakInfo::instant()))); @@ -1051,7 +1054,7 @@ final class VanillaBlocks{ self::register("sugarcane", new Sugarcane(new BID(Ids::SUGARCANE), "Sugarcane", new Info(BreakInfo::instant()))); self::register("sweet_berry_bush", new SweetBerryBush(new BID(Ids::SWEET_BERRY_BUSH), "Sweet Berry Bush", new Info(BreakInfo::instant()))); self::register("tnt", new TNT(new BID(Ids::TNT), "TNT", new Info(BreakInfo::instant()))); - self::register("fern", new TallGrass(new BID(Ids::FERN), "Fern", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + self::register("fern", new TallGrass(new BID(Ids::FERN), "Fern", new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS]))); self::register("tall_grass", new TallGrass(new BID(Ids::TALL_GRASS), "Tall Grass", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); self::register("blue_torch", new Torch(new BID(Ids::BLUE_TORCH), "Blue Torch", new Info(BreakInfo::instant()))); @@ -1081,10 +1084,11 @@ final class VanillaBlocks{ return parent::getBreakTime($item); } }); + $saplingTypeInfo = new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]); foreach(TreeType::getAll() as $treeType){ $name = $treeType->getDisplayName(); - self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", new Info(BreakInfo::instant()), $treeType)); + self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", $saplingTypeInfo, $treeType)); self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); } @@ -1171,7 +1175,7 @@ final class VanillaBlocks{ self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", new Info(BreakInfo::axe(0.7)))); //TODO: muddy mangrove roots are supposed to be axis-rotatable (Bedrock parity issue https://bugs.mojang.com/browse/MCPE-153721) - self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7)))); + self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7), [Tags::MUD]))); self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new Info(new BreakInfo(0.3)))); self::registerBlocksR13(); @@ -1397,7 +1401,7 @@ final class VanillaBlocks{ private static function registerBlocksR13() : void{ self::register("light", new Light(new BID(Ids::LIGHT), "Light Block", new Info(BreakInfo::indestructible()))); - self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", new Info(BreakInfo::instant()))); + self::register("wither_rose", new WitherRose(new BID(Ids::WITHER_ROSE), "Wither Rose", new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]))); } private static function registerBlocksR14() : void{ @@ -1531,7 +1535,7 @@ final class VanillaBlocks{ } private static function registerMudBlocks() : void{ - self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new Info(BreakInfo::shovel(0.5)))); + self::register("mud", new Opaque(new BID(Ids::MUD), "Mud", new Info(BreakInfo::shovel(0.5), [Tags::MUD]))); self::register("packed_mud", new Opaque(new BID(Ids::PACKED_MUD), "Packed Mud", new Info(BreakInfo::pickaxe(1.0, null, 15.0)))); $mudBricksBreakInfo = new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD(), 30.0)); diff --git a/src/block/WitherRose.php b/src/block/WitherRose.php index a5c64592f..696b26115 100644 --- a/src/block/WitherRose.php +++ b/src/block/WitherRose.php @@ -36,18 +36,15 @@ use pocketmine\world\BlockTransaction; class WitherRose extends Flowable{ private function canBeSupportedBy(Block $block) : bool{ - return match($block->getTypeId()){ - BlockTypeIds::GRASS, - BlockTypeIds::DIRT, - BlockTypeIds::FARMLAND, - BlockTypeIds::MYCELIUM, - BlockTypeIds::PODZOL, - BlockTypeIds::NETHERRACK, - BlockTypeIds::SOUL_SAND, - BlockTypeIds::SOUL_SOIL => true, - //TODO: moss, mud, rooted dirt - default => false - }; + return + $block->hasTypeTag(BlockTypeTags::DIRT) || + $block->hasTypeTag(BlockTypeTags::MUD) || + match($block->getTypeId()){ + BlockTypeIds::NETHERRACK, + BlockTypeIds::SOUL_SAND, + BlockTypeIds::SOUL_SOIL => true, + default => false + }; } public function onNearbyBlockChange() : void{ diff --git a/src/world/generator/populator/Tree.php b/src/world/generator/populator/Tree.php index 7b191a9f0..b98af52ee 100644 --- a/src/world/generator/populator/Tree.php +++ b/src/world/generator/populator/Tree.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\generator\populator; use pocketmine\block\BlockTypeIds; +use pocketmine\block\BlockTypeTags; use pocketmine\block\utils\TreeType; use pocketmine\utils\Random; use pocketmine\world\ChunkManager; @@ -67,10 +68,10 @@ class Tree implements Populator{ private function getHighestWorkableBlock(ChunkManager $world, int $x, int $z) : int{ for($y = 127; $y >= 0; --$y){ - $b = $world->getBlockAt($x, $y, $z)->getTypeId(); - if($b === BlockTypeIds::DIRT || $b === BlockTypeIds::GRASS){ + $b = $world->getBlockAt($x, $y, $z); + if($b->hasTypeTag(BlockTypeTags::DIRT) || $b->hasTypeTag(BlockTypeTags::MUD)){ return $y + 1; - }elseif($b !== BlockTypeIds::AIR && $b !== BlockTypeIds::SNOW_LAYER){ + }elseif($b->getTypeId() !== BlockTypeIds::AIR && $b->getTypeId() !== BlockTypeIds::SNOW_LAYER){ return -1; } } From e3640907ba9bb1601f1b2ec21753593070b6d496 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 00:14:17 +0100 Subject: [PATCH 381/692] fix PHPStan --- src/block/BlockTypeInfo.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/block/BlockTypeInfo.php b/src/block/BlockTypeInfo.php index 7add26005..eb6b89ad1 100644 --- a/src/block/BlockTypeInfo.php +++ b/src/block/BlockTypeInfo.php @@ -33,6 +33,9 @@ final class BlockTypeInfo{ */ private array $typeTags; + /** + * @param string[] $typeTags + */ public function __construct( private BlockBreakInfo $breakInfo, array $typeTags = [] From f4de4bd9713f14b2d2d7f980c07dfd553f5260ce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 21:41:40 +0100 Subject: [PATCH 382/692] Fixed FloatingTextParticle merge error --- src/world/particle/FloatingTextParticle.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index f5d0536ad..811d2ddac 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -94,7 +94,7 @@ class FloatingTextParticle implements Particle{ EntityMetadataProperties::BOUNDING_BOX_WIDTH => new FloatMetadataProperty(0.0), EntityMetadataProperties::BOUNDING_BOX_HEIGHT => new FloatMetadataProperty(0.0), EntityMetadataProperties::NAMETAG => new StringMetadataProperty($name), - EntityMetadataProperties::VARIANT => new IntMetadataProperty(RuntimeBlockMapping::getInstance()->toRuntimeId(VanillaBlocks::AIR()->getFullId())), + EntityMetadataProperties::VARIANT => new IntMetadataProperty(RuntimeBlockMapping::getInstance()->toRuntimeId(VanillaBlocks::AIR()->getStateId())), EntityMetadataProperties::ALWAYS_SHOW_NAMETAG => new ByteMetadataProperty(1), ]; $p[] = AddActorPacket::create( From 6ba3b3954148b8a2b443628b4219d0356394fbbf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 21:57:51 +0100 Subject: [PATCH 383/692] Added tests for BlockTypeIds and ItemTypeIds --- tests/phpunit/block/BlockTypeIdsTest.php | 46 ++++++++++++++++++++++++ tests/phpunit/item/ItemTypeIdsTest.php | 46 ++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tests/phpunit/block/BlockTypeIdsTest.php create mode 100644 tests/phpunit/item/ItemTypeIdsTest.php diff --git a/tests/phpunit/block/BlockTypeIdsTest.php b/tests/phpunit/block/BlockTypeIdsTest.php new file mode 100644 index 000000000..5d38c740a --- /dev/null +++ b/tests/phpunit/block/BlockTypeIdsTest.php @@ -0,0 +1,46 @@ +getConstants(); + unset($constants['FIRST_UNUSED_BLOCK_ID']); + + self::assertSame($reflect->getConstant('FIRST_UNUSED_BLOCK_ID'), max($constants) + 1, "FIRST_UNUSED_BLOCK_ID must be one higher than the highest fixed type ID"); + } + + public function testNoDuplicates() : void{ + $idTable = (new \ReflectionClass(BlockTypeIds::class))->getConstants(); + + self::assertSameSize($idTable, array_unique($idTable), "Every BlockTypeID must be unique"); + } +} diff --git a/tests/phpunit/item/ItemTypeIdsTest.php b/tests/phpunit/item/ItemTypeIdsTest.php new file mode 100644 index 000000000..a5394bcbb --- /dev/null +++ b/tests/phpunit/item/ItemTypeIdsTest.php @@ -0,0 +1,46 @@ +getConstants(); + unset($constants['FIRST_UNUSED_ITEM_ID']); + + self::assertSame($reflect->getConstant('FIRST_UNUSED_ITEM_ID'), max($constants) + 1, "FIRST_UNUSED_ITEM_ID must be one higher than the highest fixed type ID"); + } + + public function testNoDuplicates() : void{ + $idTable = (new \ReflectionClass(ItemTypeIds::class))->getConstants(); + + self::assertSameSize($idTable, array_unique($idTable), "Every ItemTypeID must be unique"); + } +} From 79125b8426c4ad63c10ea3ffc8e1cd673f2d726a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 22:02:47 +0100 Subject: [PATCH 384/692] Added APIs to get a new unique block/item type ID this centralization is needed to avoid conflicts between different plugins fighting over the same hardcoded IDs. --- src/block/BlockTypeIds.php | 9 +++++++++ src/item/ItemTypeIds.php | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index ddbb4b48a..487700ac0 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -706,4 +706,13 @@ final class BlockTypeIds{ public const FROGLIGHT = 10679; public const FIRST_UNUSED_BLOCK_ID = 10680; + + private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; + + /** + * Returns a new runtime block type ID, e.g. for use by a custom block. + */ + public static function newId() : int{ + return self::$nextDynamicId++; + } } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index d82f23642..06ee39be4 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -298,4 +298,13 @@ final class ItemTypeIds{ public const LINGERING_POTION = 20259; public const FIRST_UNUSED_ITEM_ID = 20260; + + private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; + + /** + * Returns a new runtime item type ID, e.g. for use by a custom item. + */ + public static function newId() : int{ + return self::$nextDynamicId++; + } } From 723ae9eca08dd74e1706b4d02e964b9c6c086cd1 Mon Sep 17 00:00:00 2001 From: Colin Date: Wed, 27 Jul 2022 03:43:05 +0200 Subject: [PATCH 385/692] Fixed tallgrass being unplaceable since d9b050fb688155ec962f574388eb48342fc8f9d1 (#5197) --- src/block/TallGrass.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/block/TallGrass.php b/src/block/TallGrass.php index 1811aa0e1..e8f533325 100644 --- a/src/block/TallGrass.php +++ b/src/block/TallGrass.php @@ -37,9 +37,12 @@ class TallGrass extends Flowable{ return true; } + private function canBeSupportedBy(Block $block) : bool{ + return $block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD); + } + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - $down = $this->getSide(Facing::DOWN); - if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ + if($this->canBeSupportedBy($this->getSide(Facing::DOWN))){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } @@ -47,8 +50,7 @@ class TallGrass extends Flowable{ } public function onNearbyBlockChange() : void{ - $down = $this->getSide(Facing::DOWN); - if($down->hasTypeTag(BlockTypeTags::DIRT) || $down->hasTypeTag(BlockTypeTags::MUD)){ //Replace with common break method + if(!$this->canBeSupportedBy($this->getSide(Facing::DOWN))){ //Replace with common break method $this->position->getWorld()->useBreakOn($this->position); } } From f1c571a528b2a5aa966b5601e52aca71aced23a3 Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:10:31 -0500 Subject: [PATCH 386/692] WaterCauldron: fixed dye not being cleared when using water bottles or buckets, close #5221 (#5222) --- src/block/WaterCauldron.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php index f346ac4a0..8b5aa0330 100644 --- a/src/block/WaterCauldron.php +++ b/src/block/WaterCauldron.php @@ -125,7 +125,7 @@ final class WaterCauldron extends FillableCauldron{ $item->pop(); }elseif($item instanceof Potion || $item instanceof SplashPotion){ //TODO: lingering potion if($item->getType()->equals(PotionType::WATER())){ - $this->addFillLevels(self::WATER_BOTTLE_FILL_AMOUNT, $item, VanillaItems::GLASS_BOTTLE(), $returnedItems); + $this->setCustomWaterColor(null)->addFillLevels(self::WATER_BOTTLE_FILL_AMOUNT, $item, VanillaItems::GLASS_BOTTLE(), $returnedItems); }else{ $this->mix($item, VanillaItems::GLASS_BOTTLE(), $returnedItems); } @@ -169,7 +169,7 @@ final class WaterCauldron extends FillableCauldron{ } }else{ match($item->getTypeId()){ - ItemTypeIds::WATER_BUCKET => $this->addFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::BUCKET(), $returnedItems), + ItemTypeIds::WATER_BUCKET => $this->setCustomWaterColor(null)->addFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::BUCKET(), $returnedItems), ItemTypeIds::BUCKET => $this->removeFillLevels(self::MAX_FILL_LEVEL, $item, VanillaItems::WATER_BUCKET(), $returnedItems), ItemTypeIds::GLASS_BOTTLE => $this->removeFillLevels(self::WATER_BOTTLE_FILL_AMOUNT, $item, VanillaItems::POTION()->setType(PotionType::WATER()), $returnedItems), ItemTypeIds::LAVA_BUCKET, ItemTypeIds::POWDER_SNOW_BUCKET => $this->mix($item, VanillaItems::BUCKET(), $returnedItems), From bf4f6e5d533e4bda3f3b9759990b3cd99f995046 Mon Sep 17 00:00:00 2001 From: Colin Date: Sun, 14 Aug 2022 18:37:55 +0200 Subject: [PATCH 387/692] Bamboo: fixed supporting block requirements (#5196) --- src/block/Bamboo.php | 6 +++++- src/block/BambooSapling.php | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 1481027ff..2f2640629 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -124,7 +124,11 @@ class Bamboo extends Transparent{ } private function canBeSupportedBy(Block $block) : bool{ - return $block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD); + return + $block->getTypeId() === BlockTypeIds::GRAVEL || + $block->hasTypeTag(BlockTypeTags::DIRT) || + $block->hasTypeTag(BlockTypeTags::MUD) || + $block->hasTypeTag(BlockTypeTags::SAND); } private function seekToTop() : Bamboo{ diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 2aec4f09b..b3eba99ff 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -52,7 +52,11 @@ final class BambooSapling extends Flowable{ } private function canBeSupportedBy(Block $block) : bool{ - return $block->hasTypeTag(BlockTypeTags::DIRT) || $block->hasTypeTag(BlockTypeTags::MUD); + return + $block->getTypeId() === BlockTypeIds::GRAVEL || + $block->hasTypeTag(BlockTypeTags::DIRT) || + $block->hasTypeTag(BlockTypeTags::MUD) || + $block->hasTypeTag(BlockTypeTags::SAND); } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ From d4f96a155a06b442c6e9ef7eeb53983aa3e05e24 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 14 Aug 2022 18:53:01 +0100 Subject: [PATCH 388/692] Support axis rotation of Muddy Mangrove Roots (implemented in 1.19.20) --- src/block/VanillaBlocks.php | 5 ++--- .../block/convert/BlockObjectToBlockStateSerializer.php | 4 ++-- .../block/convert/BlockStateToBlockObjectDeserializer.php | 4 ++-- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index c5c6db1f7..53458fbd9 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -500,7 +500,7 @@ use function mb_strtolower; * @method static Stair MOSSY_STONE_BRICK_STAIRS() * @method static Wall MOSSY_STONE_BRICK_WALL() * @method static Opaque MUD() - * @method static Transparent MUDDY_MANGROVE_ROOTS() + * @method static SimplePillar MUDDY_MANGROVE_ROOTS() * @method static Opaque MUD_BRICKS() * @method static Slab MUD_BRICK_SLAB() * @method static Stair MUD_BRICK_STAIRS() @@ -1174,8 +1174,7 @@ final class VanillaBlocks{ )); self::register("mangrove_roots", new MangroveRoots(new BID(Ids::MANGROVE_ROOTS), "Mangrove Roots", new Info(BreakInfo::axe(0.7)))); - //TODO: muddy mangrove roots are supposed to be axis-rotatable (Bedrock parity issue https://bugs.mojang.com/browse/MCPE-153721) - self::register("muddy_mangrove_roots", new Transparent(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7), [Tags::MUD]))); + self::register("muddy_mangrove_roots", new SimplePillar(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7), [Tags::MUD]))); self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new Info(new BreakInfo(0.3)))); self::registerBlocksR13(); diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php index 58ec6aa8d..ffe792116 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php @@ -1114,8 +1114,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ $this->mapSlab(Blocks::MUD_BRICK_SLAB(), Ids::MUD_BRICK_SLAB, Ids::MUD_BRICK_DOUBLE_SLAB); $this->mapStairs(Blocks::MUD_BRICK_STAIRS(), Ids::MUD_BRICK_STAIRS); $this->map(Blocks::MUD_BRICK_WALL(), fn(Wall $block) => Helper::encodeWall($block, new Writer(Ids::MUD_BRICK_WALL))); - $this->map(Blocks::MUDDY_MANGROVE_ROOTS(), fn() => Writer::create(Ids::MUDDY_MANGROVE_ROOTS) - ->writePillarAxis(Axis::Y)); //TODO + $this->map(Blocks::MUDDY_MANGROVE_ROOTS(), fn(SimplePillar $block) => Writer::create(Ids::MUDDY_MANGROVE_ROOTS) + ->writePillarAxis($block->getAxis())); $this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK) ->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM)); $this->map(Blocks::NETHER_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_NETHER_BRICK)); diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 196475df7..adb9fe368 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -912,8 +912,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->mapStairs(Ids::MUD_BRICK_STAIRS, fn() => Blocks::MUD_BRICK_STAIRS()); $this->map(Ids::MUD_BRICK_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::MUD_BRICK_WALL(), $in)); $this->map(Ids::MUDDY_MANGROVE_ROOTS, function(Reader $in) : Block{ - $in->todo(StateNames::PILLAR_AXIS); - return Blocks::MUDDY_MANGROVE_ROOTS(); + return Blocks::MUDDY_MANGROVE_ROOTS() + ->setAxis($in->readPillarAxis()); }); $this->mapStairs(Ids::NETHER_BRICK_STAIRS, fn() => Blocks::NETHER_BRICK_STAIRS()); $this->map(Ids::NETHER_WART, function(Reader $in) : Block{ diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 1b4ce3d40..acb664eb8 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From eeb95872ea54c18404c283be030d295248ac0572 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 14 Aug 2022 20:12:24 +0100 Subject: [PATCH 389/692] Release 5.0.0-ALPHA3 --- changelogs/5.0-alpha.md | 93 +++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 3e3c1340f..5b2e36234 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -420,3 +420,96 @@ Released 14th July 2022. - The following classes have been added: - `CopperWaxApplySound` - `CopperWaxRemoveSound` + +# 5.0.0-ALPHA3 +Released 14th August 2022. + +## Core +- Support for Bedrock 1.19.20. +- Dropped support for Bedrock versions older than 1.19.20. +- Improved performance of dropping block inventory contents when the block is destroyed. + +## Fixes +- Fixed errors when loading air itemstacks from PM4 worlds. These weren't supposed to exist (vanilla doesn't save them), but they were present in older PM worlds due to a bug in older versions. +- Fixed server crash when discovering unknown blocks in non-leveldb worlds during conversion. +- Fixed crimson / warped planks being usable as furnace fuel. + +## Gameplay +### Blocks +- Added the following new blocks: + - Cauldron + - Chorus Flower + - Chorus Plant + - Froglight (pearlescent, verdant, ochre) + - Mangrove Roots + - Muddy Mangrove Roots + - Rooted Dirt + - Spore Blossom +- Fixed lava setting entities on fire for an incorrect duration (Java vs Bedrock inconsistency). + +### Items +- Glass bottles can now be filled with water by clicking on a water source block. + +## API +### `pocketmine\block` +#### Highlights +- Introduced "type tags" concept, which allows marking certain blocks as having certain behaviours. + - The idea for this system was borrowed from the Minecraft Java tags system. + - It's still in very early concept stage, but is currently used for deciding which types of blocks plants can be placed on without needing to enumerate every single ID in every class, eliminating a bunch of boilerplate code and improving consistency. +- All `Block` descendents now accept `BlockTypeInfo` in the constructor, instead of `BlockBreakInfo`. + - This allows for future additions without needing to change dozens of overridden constructors. +- Dynamic type and state property serialization now each use a single, unified method (`describeType` and `describeState` respectively) which accept `RuntimeDataReader|RuntimeDataWriter`, instead of separate decode/encode methods. + - This simplifies implementing new blocks and avoids duplication of information. +- `&$returnedItems` reference parameter is now used in some places to enable actions to return items to players without caring about whether they are in creative or anything else. + - This eliminates boilerplate code of deciding whether to set the player's held item or not, as well as automatically dropping any overflow items that don't fit into the inventory. + - This is currently used when filling/emptying cauldrons using buckets or glass bottles. +- `BlockTypeIds` now exposes `newId()` static method to ease addition of custom blocks. + +#### Changes +- The following API methods have signature changes: + - `Block->onInteract()` now accepts `array &$returnedItems` reference parameter. + - `Block->onBreak()` now accepts `array &$returnedItems` reference parameter. + - `Block->readStateFromWorld()` now returns `Block`. + - This allows blocks to replace themselves with a different block entirely based on world conditions. +- The following new classes have been added: + - `BlockTypeInfo` + - `BlockTypeTags` +- The following new API methods have been added: + - `protected Block->describeState(RuntimeDataReader|RuntimeDataWriter $w) : void` - describes to a runtime data reader/writer how to read/write the block's state properties + - `protected Block->describeType(RuntimeDataReader|RuntimeDataWriter $w) : void` - describes to a runtime data reader/writer how to read/write the block's dynamic type properties + - `public Block->getTypeTags() : array` + - `public Block->hasTypeTag(string $tag) : bool` + - `public Spawnable->getRenderUpdateBugWorkaroundStateProperties(Block $block) : array` - allows spawnable tiles to spoof block state properties to work around client-side rendering bugs without actually changing the block server-side + - `public static BlockBreakInfo::axe(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : BlockBreakInfo` + - `public static BlockBreakInfo::pickaxe(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : BlockBreakInfo` + - `public static BlockBreakInfo::shovel(float $hardness, ?ToolTier $toolTier = null, ?float $blastResistance = null) : BlockBreakInfo` + - `public static BlockBreakInfo::tier(float $hardness, int $toolType, ToolTier $toolTier, ?float $blastResistance = null) : BlockBreakInfo` + - `public static BlockTypeIds::newId() : int` - returns a new dynamic block type ID for use by custom blocks + +### `pocketmine\data` +- The following classes have been renamed: + - `LegacyBlockStateMapper` -> `BlockIdMetaUpgrader` +- The following API methods have been added: + - `public BlockDataUpgrader->getIdMetaUpgrader() : BlockIdMetaUpgrader` + - `public BlockIdMetaUpgrader->addIdMetaToStateMapping(string $stringId, int $meta, BlockStateData $stateData) : void` + - `public BlockIdMetaUpgrader->addIntIdToStringIdMapping(int $intId, string $stringId) : void` +- The following API methods have been removed: + - `BlockIdMetaUpgrader->addMapping()` - use `addIdMetaToStateMapping()` (and `addIntIdToStringIdMapping()` if necessary) instead +- `LegacyToStringMap` no longer throws exceptions when adding the same mapping twice if the addition would have no effect. + +### `pocketmine\item` +#### Highlights +- `&$returnedItems` reference parameter is now used in some places to enable actions to return items to players without caring about whether they are in creative or anything else. + - This eliminates boilerplate code of deciding whether to set the player's held item or not, as well as automatically dropping any overflow items that don't fit into the inventory. + - This is used for things like filling/emptying buckets and bottles, and equipping armor. + +#### Changes +- The following new API methods have been added: + - `public Armor->clearCustomColor() : $this` - clears the custom color of an armor item + - `public static ItemTypeIds::newId() : int` - returns a new dynamic item type ID for use by custom items +- The following API methods have signature changes: + - `Item->onAttackEntity()` now accepts `array &$returnedItems` reference parameter. + - `Item->onClickAir()` now accepts `array &$returnedItems` reference parameter. + - `Item->onDestroyBlock()` now accepts `array &$returnedItems` reference parameter. + - `Item->onInteractBlock()` now accepts `array &$returnedItems` reference parameter. + - `Item->onReleaseUsing()` now accepts `array &$returnedItems` reference parameter. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index d06ebbdd9..deb4ef9b9 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA3"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From cb020988d4a662332fdd60a666a1af99182bf252 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 14 Aug 2022 20:12:25 +0100 Subject: [PATCH 390/692] 5.0.0-ALPHA4 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index deb4ef9b9..6ea4844cc 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA3"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA4"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 304bb84af28d2d8e705636a424518b4338bbbe71 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 15 Aug 2022 17:26:48 +0200 Subject: [PATCH 391/692] BlockFormEvent: Added getCausingBlock() method (#5226) --- src/block/ConcretePowder.php | 16 ++++++++++------ src/block/Liquid.php | 2 +- src/event/block/BlockFormEvent.php | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/block/ConcretePowder.php b/src/block/ConcretePowder.php index cfe2ccec6..8a39daa0d 100644 --- a/src/block/ConcretePowder.php +++ b/src/block/ConcretePowder.php @@ -42,8 +42,8 @@ class ConcretePowder extends Opaque implements Fallable{ } public function onNearbyBlockChange() : void{ - if(($block = $this->checkAdjacentWater()) !== null){ - $ev = new BlockFormEvent($this, $block); + if(($water = $this->getAdjacentWater()) !== null){ + $ev = new BlockFormEvent($this, VanillaBlocks::CONCRETE()->setColor($this->color), $water); $ev->call(); if(!$ev->isCancelled()){ $this->position->getWorld()->setBlock($this->position, $ev->getNewState()); @@ -54,16 +54,20 @@ class ConcretePowder extends Opaque implements Fallable{ } public function tickFalling() : ?Block{ - return $this->checkAdjacentWater(); + if ($this->getAdjacentWater() === null) { + return null; + } + return VanillaBlocks::CONCRETE()->setColor($this->color); } - private function checkAdjacentWater() : ?Block{ + private function getAdjacentWater() : ?Water{ foreach(Facing::ALL as $i){ if($i === Facing::DOWN){ continue; } - if($this->getSide($i) instanceof Water){ - return VanillaBlocks::CONCRETE()->setColor($this->color); + $block = $this->getSide($i); + if($block instanceof Water){ + return $block; } } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index b14457f25..769fc039a 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -366,7 +366,7 @@ abstract class Liquid extends Transparent{ } protected function liquidCollide(Block $cause, Block $result) : bool{ - $ev = new BlockFormEvent($this, $result); + $ev = new BlockFormEvent($this, $result, $cause); $ev->call(); if(!$ev->isCancelled()){ $world = $this->position->getWorld(); diff --git a/src/event/block/BlockFormEvent.php b/src/event/block/BlockFormEvent.php index 5211e3a0f..95c484113 100644 --- a/src/event/block/BlockFormEvent.php +++ b/src/event/block/BlockFormEvent.php @@ -23,10 +23,26 @@ declare(strict_types=1); namespace pocketmine\event\block; +use pocketmine\block\Block; + /** * Called when a new block forms, usually as the result of some action. * This could be things like obsidian forming due to collision of lava and water. */ class BlockFormEvent extends BaseBlockChangeEvent{ + public function __construct( + Block $block, + Block $newState, + private Block $causingBlock + ){ + parent::__construct($block, $newState); + } + + /** + * Returns the block which caused the target block to form into a new state. + */ + public function getCausingBlock() : Block{ + return $this->causingBlock; + } } From 8e97e9dcdaef17037d5028b63e58013a54f3d8ae Mon Sep 17 00:00:00 2001 From: Dylan T Date: Mon, 15 Aug 2022 16:42:51 +0100 Subject: [PATCH 392/692] SimpleCommandMap: Enforce command permissions by default (#4681) this resolves many security issues, as well as removing a ton of boilerplate code. It may be desirable to react to permission denied; this can be done by overriding Command->testPermission(), or by using setPermissionMessage() to set a custom permission denied message. --- src/command/PluginCommand.php | 4 ---- src/command/SimpleCommandMap.php | 4 +++- src/command/defaults/BanCommand.php | 4 ---- src/command/defaults/BanIpCommand.php | 4 ---- src/command/defaults/BanListCommand.php | 4 ---- src/command/defaults/ClearCommand.php | 4 ---- src/command/defaults/DefaultGamemodeCommand.php | 4 ---- src/command/defaults/DeopCommand.php | 4 ---- src/command/defaults/DifficultyCommand.php | 4 ---- src/command/defaults/DumpMemoryCommand.php | 4 ---- src/command/defaults/EffectCommand.php | 4 ---- src/command/defaults/EnchantCommand.php | 4 ---- src/command/defaults/GamemodeCommand.php | 4 ---- src/command/defaults/GarbageCollectorCommand.php | 4 ---- src/command/defaults/GiveCommand.php | 4 ---- src/command/defaults/HelpCommand.php | 4 ---- src/command/defaults/KickCommand.php | 4 ---- src/command/defaults/KillCommand.php | 4 ---- src/command/defaults/ListCommand.php | 4 ---- src/command/defaults/MeCommand.php | 4 ---- src/command/defaults/OpCommand.php | 4 ---- src/command/defaults/PardonCommand.php | 4 ---- src/command/defaults/PardonIpCommand.php | 4 ---- src/command/defaults/ParticleCommand.php | 4 ---- src/command/defaults/PluginsCommand.php | 4 ---- src/command/defaults/SaveCommand.php | 4 ---- src/command/defaults/SaveOffCommand.php | 4 ---- src/command/defaults/SaveOnCommand.php | 4 ---- src/command/defaults/SayCommand.php | 4 ---- src/command/defaults/SeedCommand.php | 4 ---- src/command/defaults/SetWorldSpawnCommand.php | 4 ---- src/command/defaults/SpawnpointCommand.php | 4 ---- src/command/defaults/StatusCommand.php | 4 ---- src/command/defaults/StopCommand.php | 4 ---- src/command/defaults/TeleportCommand.php | 4 ---- src/command/defaults/TellCommand.php | 4 ---- src/command/defaults/TimeCommand.php | 3 --- src/command/defaults/TimingsCommand.php | 4 ---- src/command/defaults/TitleCommand.php | 4 ---- src/command/defaults/TransferServerCommand.php | 4 ---- src/command/defaults/VersionCommand.php | 4 ---- src/command/defaults/WhitelistCommand.php | 4 ---- 42 files changed, 3 insertions(+), 164 deletions(-) diff --git a/src/command/PluginCommand.php b/src/command/PluginCommand.php index 07b0999f0..55b8df3ed 100644 --- a/src/command/PluginCommand.php +++ b/src/command/PluginCommand.php @@ -43,10 +43,6 @@ final class PluginCommand extends Command implements PluginOwned{ return false; } - if(!$this->testPermission($sender)){ - return false; - } - $success = $this->executor->onCommand($sender, $this, $commandLabel, $args); if(!$success && $this->usageMessage !== ""){ diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 429cd3a3b..89a9d6465 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -202,7 +202,9 @@ class SimpleCommandMap implements CommandMap{ $target->timings->startTiming(); try{ - $target->execute($sender, $sentCommandLabel, $args); + if($target->testPermission($sender)){ + $target->execute($sender, $sentCommandLabel, $args); + } }catch(InvalidCommandSyntaxException $e){ $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage()))); }finally{ diff --git a/src/command/defaults/BanCommand.php b/src/command/defaults/BanCommand.php index 734159a20..fc3117ae1 100644 --- a/src/command/defaults/BanCommand.php +++ b/src/command/defaults/BanCommand.php @@ -45,10 +45,6 @@ class BanCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/BanIpCommand.php b/src/command/defaults/BanIpCommand.php index 13c74888c..2d8bc0632 100644 --- a/src/command/defaults/BanIpCommand.php +++ b/src/command/defaults/BanIpCommand.php @@ -46,10 +46,6 @@ class BanIpCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/BanListCommand.php b/src/command/defaults/BanListCommand.php index 5ec515a2b..606aef9a2 100644 --- a/src/command/defaults/BanListCommand.php +++ b/src/command/defaults/BanListCommand.php @@ -47,10 +47,6 @@ class BanListCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(isset($args[0])){ $args[0] = strtolower($args[0]); if($args[0] === "ips"){ diff --git a/src/command/defaults/ClearCommand.php b/src/command/defaults/ClearCommand.php index 7e4f81065..7acd03ea7 100644 --- a/src/command/defaults/ClearCommand.php +++ b/src/command/defaults/ClearCommand.php @@ -51,10 +51,6 @@ class ClearCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) > 3){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/DefaultGamemodeCommand.php b/src/command/defaults/DefaultGamemodeCommand.php index 860a7506d..03eff2481 100644 --- a/src/command/defaults/DefaultGamemodeCommand.php +++ b/src/command/defaults/DefaultGamemodeCommand.php @@ -42,10 +42,6 @@ class DefaultGamemodeCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/DeopCommand.php b/src/command/defaults/DeopCommand.php index a32d94108..eb6cec268 100644 --- a/src/command/defaults/DeopCommand.php +++ b/src/command/defaults/DeopCommand.php @@ -45,10 +45,6 @@ class DeopCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/DifficultyCommand.php b/src/command/defaults/DifficultyCommand.php index b73204f56..0bfc384e3 100644 --- a/src/command/defaults/DifficultyCommand.php +++ b/src/command/defaults/DifficultyCommand.php @@ -43,10 +43,6 @@ class DifficultyCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) !== 1){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/DumpMemoryCommand.php b/src/command/defaults/DumpMemoryCommand.php index 83f177e01..3844199a1 100644 --- a/src/command/defaults/DumpMemoryCommand.php +++ b/src/command/defaults/DumpMemoryCommand.php @@ -40,10 +40,6 @@ class DumpMemoryCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $sender->getServer()->getMemoryManager()->dumpServerMemory($args[0] ?? (Path::join($sender->getServer()->getDataPath(), "memory_dumps", date("D_M_j-H.i.s-T_Y"))), 48, 80); return true; } diff --git a/src/command/defaults/EffectCommand.php b/src/command/defaults/EffectCommand.php index 159832bac..5339f4a5b 100644 --- a/src/command/defaults/EffectCommand.php +++ b/src/command/defaults/EffectCommand.php @@ -46,10 +46,6 @@ class EffectCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/EnchantCommand.php b/src/command/defaults/EnchantCommand.php index 092ceb006..64bb146bb 100644 --- a/src/command/defaults/EnchantCommand.php +++ b/src/command/defaults/EnchantCommand.php @@ -44,10 +44,6 @@ class EnchantCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/GamemodeCommand.php b/src/command/defaults/GamemodeCommand.php index 1363d34dc..77fade0b0 100644 --- a/src/command/defaults/GamemodeCommand.php +++ b/src/command/defaults/GamemodeCommand.php @@ -45,10 +45,6 @@ class GamemodeCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/GarbageCollectorCommand.php b/src/command/defaults/GarbageCollectorCommand.php index 69875c7d5..c77fd794f 100644 --- a/src/command/defaults/GarbageCollectorCommand.php +++ b/src/command/defaults/GarbageCollectorCommand.php @@ -43,10 +43,6 @@ class GarbageCollectorCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $chunksCollected = 0; $entitiesCollected = 0; diff --git a/src/command/defaults/GiveCommand.php b/src/command/defaults/GiveCommand.php index 650a262d0..2d465c74c 100644 --- a/src/command/defaults/GiveCommand.php +++ b/src/command/defaults/GiveCommand.php @@ -51,10 +51,6 @@ class GiveCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/HelpCommand.php b/src/command/defaults/HelpCommand.php index 7fe12e039..d5a530f56 100644 --- a/src/command/defaults/HelpCommand.php +++ b/src/command/defaults/HelpCommand.php @@ -55,10 +55,6 @@ class HelpCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ $commandName = ""; $pageNumber = 1; diff --git a/src/command/defaults/KickCommand.php b/src/command/defaults/KickCommand.php index 3ccb2e527..78767b9da 100644 --- a/src/command/defaults/KickCommand.php +++ b/src/command/defaults/KickCommand.php @@ -47,10 +47,6 @@ class KickCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/KillCommand.php b/src/command/defaults/KillCommand.php index c041e0cbb..eebabd3d9 100644 --- a/src/command/defaults/KillCommand.php +++ b/src/command/defaults/KillCommand.php @@ -47,10 +47,6 @@ class KillCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) >= 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/ListCommand.php b/src/command/defaults/ListCommand.php index 5df3e1a91..d86416f3d 100644 --- a/src/command/defaults/ListCommand.php +++ b/src/command/defaults/ListCommand.php @@ -45,10 +45,6 @@ class ListCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $playerNames = array_map(function(Player $player) : string{ return $player->getName(); }, array_filter($sender->getServer()->getOnlinePlayers(), function(Player $player) use ($sender) : bool{ diff --git a/src/command/defaults/MeCommand.php b/src/command/defaults/MeCommand.php index 586d6cb39..33564e9cc 100644 --- a/src/command/defaults/MeCommand.php +++ b/src/command/defaults/MeCommand.php @@ -44,10 +44,6 @@ class MeCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/OpCommand.php b/src/command/defaults/OpCommand.php index 53cbc7461..97b483c80 100644 --- a/src/command/defaults/OpCommand.php +++ b/src/command/defaults/OpCommand.php @@ -45,10 +45,6 @@ class OpCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/PardonCommand.php b/src/command/defaults/PardonCommand.php index a1ea1e6ee..a545fb350 100644 --- a/src/command/defaults/PardonCommand.php +++ b/src/command/defaults/PardonCommand.php @@ -43,10 +43,6 @@ class PardonCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) !== 1){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/PardonIpCommand.php b/src/command/defaults/PardonIpCommand.php index d9a229354..a7adc237d 100644 --- a/src/command/defaults/PardonIpCommand.php +++ b/src/command/defaults/PardonIpCommand.php @@ -44,10 +44,6 @@ class PardonIpCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) !== 1){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index 1c9972efb..2c5d1c5d6 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -84,10 +84,6 @@ class ParticleCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 7){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/PluginsCommand.php b/src/command/defaults/PluginsCommand.php index e4c83354d..39f86e637 100644 --- a/src/command/defaults/PluginsCommand.php +++ b/src/command/defaults/PluginsCommand.php @@ -47,10 +47,6 @@ class PluginsCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $list = array_map(function(Plugin $plugin) : string{ return ($plugin->isEnabled() ? TextFormat::GREEN : TextFormat::RED) . $plugin->getDescription()->getFullName(); }, $sender->getServer()->getPluginManager()->getPlugins()); diff --git a/src/command/defaults/SaveCommand.php b/src/command/defaults/SaveCommand.php index 10d036d55..0fefc573c 100644 --- a/src/command/defaults/SaveCommand.php +++ b/src/command/defaults/SaveCommand.php @@ -41,10 +41,6 @@ class SaveCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - Command::broadcastCommandMessage($sender, KnownTranslationFactory::pocketmine_save_start()); $start = microtime(true); diff --git a/src/command/defaults/SaveOffCommand.php b/src/command/defaults/SaveOffCommand.php index b4d86d486..bb13623d7 100644 --- a/src/command/defaults/SaveOffCommand.php +++ b/src/command/defaults/SaveOffCommand.php @@ -39,10 +39,6 @@ class SaveOffCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $sender->getServer()->getWorldManager()->setAutoSave(false); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_save_disabled()); diff --git a/src/command/defaults/SaveOnCommand.php b/src/command/defaults/SaveOnCommand.php index 20504122b..cb842db9e 100644 --- a/src/command/defaults/SaveOnCommand.php +++ b/src/command/defaults/SaveOnCommand.php @@ -39,10 +39,6 @@ class SaveOnCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $sender->getServer()->getWorldManager()->setAutoSave(true); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_save_enabled()); diff --git a/src/command/defaults/SayCommand.php b/src/command/defaults/SayCommand.php index 16e681553..8419d0de2 100644 --- a/src/command/defaults/SayCommand.php +++ b/src/command/defaults/SayCommand.php @@ -45,10 +45,6 @@ class SayCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/SeedCommand.php b/src/command/defaults/SeedCommand.php index e7345f8ba..af353f87a 100644 --- a/src/command/defaults/SeedCommand.php +++ b/src/command/defaults/SeedCommand.php @@ -39,10 +39,6 @@ class SeedCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if($sender instanceof Player){ $seed = $sender->getPosition()->getWorld()->getSeed(); }else{ diff --git a/src/command/defaults/SetWorldSpawnCommand.php b/src/command/defaults/SetWorldSpawnCommand.php index 0c0d46c11..928afd86a 100644 --- a/src/command/defaults/SetWorldSpawnCommand.php +++ b/src/command/defaults/SetWorldSpawnCommand.php @@ -46,10 +46,6 @@ class SetWorldSpawnCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ if($sender instanceof Player){ $location = $sender->getPosition(); diff --git a/src/command/defaults/SpawnpointCommand.php b/src/command/defaults/SpawnpointCommand.php index b5932770a..de8789e9a 100644 --- a/src/command/defaults/SpawnpointCommand.php +++ b/src/command/defaults/SpawnpointCommand.php @@ -47,10 +47,6 @@ class SpawnpointCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $target = null; if(count($args) === 0){ diff --git a/src/command/defaults/StatusCommand.php b/src/command/defaults/StatusCommand.php index 7e5f9b544..67088be9c 100644 --- a/src/command/defaults/StatusCommand.php +++ b/src/command/defaults/StatusCommand.php @@ -45,10 +45,6 @@ class StatusCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - $mUsage = Process::getAdvancedMemoryUsage(); $server = $sender->getServer(); diff --git a/src/command/defaults/StopCommand.php b/src/command/defaults/StopCommand.php index 664fa3657..382f99ca0 100644 --- a/src/command/defaults/StopCommand.php +++ b/src/command/defaults/StopCommand.php @@ -39,10 +39,6 @@ class StopCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_stop_start()); $sender->getServer()->shutdown(); diff --git a/src/command/defaults/TeleportCommand.php b/src/command/defaults/TeleportCommand.php index 618ae10a2..5713ef231 100644 --- a/src/command/defaults/TeleportCommand.php +++ b/src/command/defaults/TeleportCommand.php @@ -59,10 +59,6 @@ class TeleportCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - switch(count($args)){ case 1: // /tp targetPlayer case 3: // /tp x y z diff --git a/src/command/defaults/TellCommand.php b/src/command/defaults/TellCommand.php index bf36d255f..672e5b74b 100644 --- a/src/command/defaults/TellCommand.php +++ b/src/command/defaults/TellCommand.php @@ -47,10 +47,6 @@ class TellCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/TimeCommand.php b/src/command/defaults/TimeCommand.php index 49edee2b8..33357e4df 100644 --- a/src/command/defaults/TimeCommand.php +++ b/src/command/defaults/TimeCommand.php @@ -51,9 +51,6 @@ class TimeCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } if(count($args) < 1){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/TimingsCommand.php b/src/command/defaults/TimingsCommand.php index 14fae62f5..9a5076072 100644 --- a/src/command/defaults/TimingsCommand.php +++ b/src/command/defaults/TimingsCommand.php @@ -67,10 +67,6 @@ class TimingsCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) !== 1){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/TitleCommand.php b/src/command/defaults/TitleCommand.php index 19218799c..cf0670608 100644 --- a/src/command/defaults/TitleCommand.php +++ b/src/command/defaults/TitleCommand.php @@ -44,10 +44,6 @@ class TitleCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } diff --git a/src/command/defaults/TransferServerCommand.php b/src/command/defaults/TransferServerCommand.php index 5d15c8258..532f0e18c 100644 --- a/src/command/defaults/TransferServerCommand.php +++ b/src/command/defaults/TransferServerCommand.php @@ -42,10 +42,6 @@ class TransferServerCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) < 1){ throw new InvalidCommandSyntaxException(); }elseif(!($sender instanceof Player)){ diff --git a/src/command/defaults/VersionCommand.php b/src/command/defaults/VersionCommand.php index 9fa670957..6c579cdda 100644 --- a/src/command/defaults/VersionCommand.php +++ b/src/command/defaults/VersionCommand.php @@ -53,10 +53,6 @@ class VersionCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 0){ $sender->sendMessage(KnownTranslationFactory::pocketmine_command_version_serverSoftwareName( VersionInfo::NAME diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index 02fd65f23..2b1a90c53 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -55,10 +55,6 @@ class WhitelistCommand extends VanillaCommand{ } public function execute(CommandSender $sender, string $commandLabel, array $args){ - if(!$this->testPermission($sender)){ - return true; - } - if(count($args) === 1){ switch(strtolower($args[0])){ case "reload": From 223de3ad232334dfe86d3debe698ed41a8f2d8f9 Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Mon, 15 Aug 2022 11:00:58 -0500 Subject: [PATCH 393/692] Implement Fire Charge (#5225) --- src/block/TNT.php | 6 +++ src/data/bedrock/item/ItemDeserializer.php | 2 +- src/data/bedrock/item/ItemSerializer.php | 1 + src/item/FireCharge.php | 48 ++++++++++++++++++++++ src/item/ItemTypeIds.php | 3 +- src/item/StringToItemParser.php | 1 + src/item/VanillaItems.php | 2 + 7 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/item/FireCharge.php diff --git a/src/block/TNT.php b/src/block/TNT.php index dca4920d3..cf1158a67 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -32,6 +32,7 @@ use pocketmine\item\Durable; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\FlintSteel; use pocketmine\item\Item; +use pocketmine\item\ItemTypeIds; use pocketmine\math\RayTraceResult; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -82,6 +83,11 @@ class TNT extends Opaque{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($item->getTypeId() === ItemTypeIds::FIRE_CHARGE){ + $item->pop(); + $this->ignite(); + return true; + } if($item instanceof FlintSteel || $item->hasEnchantment(VanillaEnchantments::FIRE_ASPECT())){ if($item instanceof Durable){ $item->applyDamage(1); diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 85d415d6a..a9012af89 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -338,7 +338,7 @@ final class ItemDeserializer{ $this->map(Ids::FERMENTED_SPIDER_EYE, fn() => Items::FERMENTED_SPIDER_EYE()); //TODO: minecraft:field_masoned_banner_pattern //TODO: minecraft:filled_map - //TODO: minecraft:fire_charge + $this->map(Ids::FIRE_CHARGE, fn() => Items::FIRE_CHARGE()); //TODO: minecraft:firefly_spawn_egg //TODO: minecraft:firework_rocket //TODO: minecraft:firework_star diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 0c993f2e6..19754739d 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -383,6 +383,7 @@ final class ItemSerializer{ $this->map(Items::EXPERIENCE_BOTTLE(), self::id(Ids::EXPERIENCE_BOTTLE)); $this->map(Items::FEATHER(), self::id(Ids::FEATHER)); $this->map(Items::FERMENTED_SPIDER_EYE(), self::id(Ids::FERMENTED_SPIDER_EYE)); + $this->map(Items::FIRE_CHARGE(), self::id(Ids::FIRE_CHARGE)); $this->map(Items::FISHING_ROD(), self::id(Ids::FISHING_ROD)); $this->map(Items::FLINT(), self::id(Ids::FLINT)); $this->map(Items::FLINT_AND_STEEL(), self::id(Ids::FLINT_AND_STEEL)); diff --git a/src/item/FireCharge.php b/src/item/FireCharge.php new file mode 100644 index 000000000..20e7e4f89 --- /dev/null +++ b/src/item/FireCharge.php @@ -0,0 +1,48 @@ +getTypeId() === BlockTypeIds::AIR){ + $world = $player->getWorld(); + $world->setBlock($blockReplace->getPosition(), VanillaBlocks::FIRE()); + $world->addSound($blockReplace->getPosition()->add(0.5, 0.5, 0.5), new BlazeShootSound()); + + $this->pop(); + + return ItemUseResult::SUCCESS(); + } + + return ItemUseResult::NONE(); + } +} diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index 06ee39be4..6f23fb9f8 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -296,8 +296,9 @@ final class ItemTypeIds{ public const NETHERITE_SCRAP = 20257; public const POWDER_SNOW_BUCKET = 20258; public const LINGERING_POTION = 20259; + public const FIRE_CHARGE = 20260; - public const FIRST_UNUSED_ITEM_ID = 20260; + public const FIRST_UNUSED_ITEM_ID = 20261; private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a538380ce..d0bdcb5f9 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1246,6 +1246,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("experience_bottle", fn() => Items::EXPERIENCE_BOTTLE()); $result->register("feather", fn() => Items::FEATHER()); $result->register("fermented_spider_eye", fn() => Items::FERMENTED_SPIDER_EYE()); + $result->register("fire_charge", fn() => Items::FIRE_CHARGE()); $result->register("fire_resistance_potion", fn() => Items::POTION()->setType(PotionType::FIRE_RESISTANCE())); $result->register("fire_resistance_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::FIRE_RESISTANCE())); $result->register("fish", fn() => Items::RAW_FISH()); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index b229039ec..11129238e 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -156,6 +156,7 @@ use pocketmine\world\World; * @method static ExperienceBottle EXPERIENCE_BOTTLE() * @method static Item FEATHER() * @method static Item FERMENTED_SPIDER_EYE() + * @method static FireCharge FIRE_CHARGE() * @method static FishingRod FISHING_ROD() * @method static Item FLINT() * @method static FlintSteel FLINT_AND_STEEL() @@ -423,6 +424,7 @@ final class VanillaItems{ self::register("experience_bottle", new ExperienceBottle(new IID(Ids::EXPERIENCE_BOTTLE), "Bottle o' Enchanting")); self::register("feather", new Item(new IID(Ids::FEATHER), "Feather")); self::register("fermented_spider_eye", new Item(new IID(Ids::FERMENTED_SPIDER_EYE), "Fermented Spider Eye")); + self::register("fire_charge", new FireCharge(new IID(Ids::FIRE_CHARGE), "Fire Charge")); self::register("fishing_rod", new FishingRod(new IID(Ids::FISHING_ROD), "Fishing Rod")); self::register("flint", new Item(new IID(Ids::FLINT), "Flint")); self::register("flint_and_steel", new FlintSteel(new IID(Ids::FLINT_AND_STEEL), "Flint and Steel")); From b65e0f64f6bd5ef25df5e16649715e7e671fdfae Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:26:32 -0500 Subject: [PATCH 394/692] Implement Suspicious Stew (#5224) --- build/generate-runtime-enum-serializers.php | 2 + src/data/bedrock/SuspiciousStewTypeIdMap.php | 72 ++++++++++++ src/data/bedrock/SuspiciousStewTypeIds.php | 37 +++++++ src/data/bedrock/item/ItemDeserializer.php | 10 +- src/data/bedrock/item/ItemSerializer.php | 3 + .../runtime/RuntimeEnumDeserializerTrait.php | 16 +++ .../runtime/RuntimeEnumSerializerTrait.php | 16 +++ src/item/ItemTypeIds.php | 3 +- src/item/StringToItemParser.php | 6 + src/item/SuspiciousStew.php | 74 +++++++++++++ src/item/SuspiciousStewType.php | 104 ++++++++++++++++++ src/item/VanillaItems.php | 2 + 12 files changed, 343 insertions(+), 2 deletions(-) create mode 100644 src/data/bedrock/SuspiciousStewTypeIdMap.php create mode 100644 src/data/bedrock/SuspiciousStewTypeIds.php create mode 100644 src/item/SuspiciousStew.php create mode 100644 src/item/SuspiciousStewType.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 7118abf41..e3cfc2abe 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -34,6 +34,7 @@ use pocketmine\block\utils\MushroomBlockType; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; use pocketmine\item\PotionType; +use pocketmine\item\SuspiciousStewType; use function array_key_first; use function array_keys; use function array_map; @@ -167,6 +168,7 @@ $enumsUsed = [ MushroomBlockType::getAll(), SkullType::getAll(), SlabType::getAll(), + SuspiciousStewType::getAll(), PotionType::getAll() ]; diff --git a/src/data/bedrock/SuspiciousStewTypeIdMap.php b/src/data/bedrock/SuspiciousStewTypeIdMap.php new file mode 100644 index 000000000..54c1fdcb9 --- /dev/null +++ b/src/data/bedrock/SuspiciousStewTypeIdMap.php @@ -0,0 +1,72 @@ + + */ + private array $idToEnum; + + /** + * @var int[] + * @phpstan-var array + */ + private array $enumToId; + + private function __construct(){ + $this->register(SuspiciousStewTypeIds::POPPY, SuspiciousStewType::POPPY()); + $this->register(SuspiciousStewTypeIds::CORNFLOWER, SuspiciousStewType::CORNFLOWER()); + $this->register(SuspiciousStewTypeIds::TULIP, SuspiciousStewType::TULIP()); + $this->register(SuspiciousStewTypeIds::AZURE_BLUET, SuspiciousStewType::AZURE_BLUET()); + $this->register(SuspiciousStewTypeIds::LILY_OF_THE_VALLEY, SuspiciousStewType::LILY_OF_THE_VALLEY()); + $this->register(SuspiciousStewTypeIds::DANDELION, SuspiciousStewType::DANDELION()); + $this->register(SuspiciousStewTypeIds::BLUE_ORCHID, SuspiciousStewType::BLUE_ORCHID()); + $this->register(SuspiciousStewTypeIds::ALLIUM, SuspiciousStewType::ALLIUM()); + $this->register(SuspiciousStewTypeIds::OXEYE_DAISY, SuspiciousStewType::OXEYE_DAISY()); + $this->register(SuspiciousStewTypeIds::WITHER_ROSE, SuspiciousStewType::WITHER_ROSE()); + } + + private function register(int $id, SuspiciousStewType $type) : void{ + $this->idToEnum[$id] = $type; + $this->enumToId[$type->id()] = $id; + } + + public function fromId(int $id) : ?SuspiciousStewType{ + return $this->idToEnum[$id] ?? null; + } + + public function toId(SuspiciousStewType $type) : int{ + if(!isset($this->enumToId[$type->id()])){ + throw new \InvalidArgumentException("Type does not have a mapped ID"); + } + return $this->enumToId[$type->id()]; + } +} diff --git a/src/data/bedrock/SuspiciousStewTypeIds.php b/src/data/bedrock/SuspiciousStewTypeIds.php new file mode 100644 index 000000000..15025abde --- /dev/null +++ b/src/data/bedrock/SuspiciousStewTypeIds.php @@ -0,0 +1,37 @@ +map(Ids::STRING, fn() => Items::STRING()); $this->map(Ids::SUGAR, fn() => Items::SUGAR()); $this->map(Ids::SUGAR_CANE, fn() => Blocks::SUGARCANE()->asItem()); - //TODO: minecraft:suspicious_stew + $this->map(Ids::SUSPICIOUS_STEW, function(Data $data) : Item{ + $meta = $data->getMeta(); + $suspiciousStewType = SuspiciousStewTypeIdMap::getInstance()->fromId($meta); + if($suspiciousStewType === null){ + throw new ItemTypeDeserializeException("Unknown suspicious stew type ID $meta"); + } + return Items::SUSPICIOUS_STEW()->setType($suspiciousStewType); + }); $this->map(Ids::SWEET_BERRIES, fn() => Items::SWEET_BERRIES()); //TODO: minecraft:tadpole_bucket //TODO: minecraft:tadpole_spawn_egg diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 19754739d..6945eac5e 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -36,6 +36,7 @@ use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\item\ItemTypeNames as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; +use pocketmine\data\bedrock\SuspiciousStewTypeIdMap; use pocketmine\item\Banner; use pocketmine\item\CoralFan; use pocketmine\item\Dye; @@ -43,6 +44,7 @@ use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\Potion; use pocketmine\item\SplashPotion; +use pocketmine\item\SuspiciousStew; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; use function class_parents; @@ -513,6 +515,7 @@ final class ItemSerializer{ $this->map(Items::STONE_SWORD(), self::id(Ids::STONE_SWORD)); $this->map(Items::STRING(), self::id(Ids::STRING)); $this->map(Items::SUGAR(), self::id(Ids::SUGAR)); + $this->map(Items::SUSPICIOUS_STEW(), fn(SuspiciousStew $item) => new Data(Ids::SUSPICIOUS_STEW, SuspiciousStewTypeIdMap::getInstance()->toId($item->getType()))); $this->map(Items::SWEET_BERRIES(), self::id(Ids::SWEET_BERRIES)); $this->map(Items::TOTEM(), self::id(Ids::TOTEM_OF_UNDYING)); $this->map(Items::VILLAGER_SPAWN_EGG(), self::id(Ids::VILLAGER_SPAWN_EGG)); diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index 7bcbd09ed..bb83e805e 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -202,4 +202,20 @@ trait RuntimeEnumDeserializerTrait{ }; } + public function suspiciousStewType(\pocketmine\item\SuspiciousStewType &$value) : void{ + $value = match($this->readInt(4)){ + 0 => \pocketmine\item\SuspiciousStewType::ALLIUM(), + 1 => \pocketmine\item\SuspiciousStewType::AZURE_BLUET(), + 2 => \pocketmine\item\SuspiciousStewType::BLUE_ORCHID(), + 3 => \pocketmine\item\SuspiciousStewType::CORNFLOWER(), + 4 => \pocketmine\item\SuspiciousStewType::DANDELION(), + 5 => \pocketmine\item\SuspiciousStewType::LILY_OF_THE_VALLEY(), + 6 => \pocketmine\item\SuspiciousStewType::OXEYE_DAISY(), + 7 => \pocketmine\item\SuspiciousStewType::POPPY(), + 8 => \pocketmine\item\SuspiciousStewType::TULIP(), + 9 => \pocketmine\item\SuspiciousStewType::WITHER_ROSE(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for SuspiciousStewType") + }; + } + } diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index e3bdcbccb..91deba5e3 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -202,4 +202,20 @@ trait RuntimeEnumSerializerTrait{ }); } + public function suspiciousStewType(\pocketmine\item\SuspiciousStewType $value) : void{ + $this->int(4, match($value){ + \pocketmine\item\SuspiciousStewType::ALLIUM() => 0, + \pocketmine\item\SuspiciousStewType::AZURE_BLUET() => 1, + \pocketmine\item\SuspiciousStewType::BLUE_ORCHID() => 2, + \pocketmine\item\SuspiciousStewType::CORNFLOWER() => 3, + \pocketmine\item\SuspiciousStewType::DANDELION() => 4, + \pocketmine\item\SuspiciousStewType::LILY_OF_THE_VALLEY() => 5, + \pocketmine\item\SuspiciousStewType::OXEYE_DAISY() => 6, + \pocketmine\item\SuspiciousStewType::POPPY() => 7, + \pocketmine\item\SuspiciousStewType::TULIP() => 8, + \pocketmine\item\SuspiciousStewType::WITHER_ROSE() => 9, + default => throw new \pocketmine\utils\AssumptionFailedError("All SuspiciousStewType cases should be covered") + }); + } + } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index 6f23fb9f8..a36526aca 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -297,8 +297,9 @@ final class ItemTypeIds{ public const POWDER_SNOW_BUCKET = 20258; public const LINGERING_POTION = 20259; public const FIRE_CHARGE = 20260; + public const SUSPICIOUS_STEW = 20261; - public const FIRST_UNUSED_ITEM_ID = 20261; + public const FIRST_UNUSED_ITEM_ID = 20262; private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index d0bdcb5f9..8daf0f87e 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1118,6 +1118,11 @@ final class StringToItemParser extends StringToTParser{ $result->register($prefix("dye"), fn() => Items::DYE()->setColor($color)); } + foreach(SuspiciousStewType::getAll() as $suspiciousStewType){ + $prefix = fn(string $name) => $suspiciousStewType->name() . "_" . $name; + + $result->register($prefix("suspicious_stew"), fn() => Items::SUSPICIOUS_STEW()->setType($suspiciousStewType)); + } } private static function registerItems(self $result) : void{ @@ -1474,6 +1479,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("strong_turtle_master_potion", fn() => Items::POTION()->setType(PotionType::STRONG_TURTLE_MASTER())); $result->register("strong_turtle_master_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::STRONG_TURTLE_MASTER())); $result->register("sugar", fn() => Items::SUGAR()); + $result->register("suspicious_stew", fn() => Items::SUSPICIOUS_STEW()); $result->register("sweet_berries", fn() => Items::SWEET_BERRIES()); $result->register("swiftness_potion", fn() => Items::POTION()->setType(PotionType::SWIFTNESS())); $result->register("swiftness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::SWIFTNESS())); diff --git a/src/item/SuspiciousStew.php b/src/item/SuspiciousStew.php new file mode 100644 index 000000000..e6b9895e0 --- /dev/null +++ b/src/item/SuspiciousStew.php @@ -0,0 +1,74 @@ +suspiciousStewType = SuspiciousStewType::POPPY(); + parent::__construct($identifier, $name); + } + + protected function encodeType(RuntimeDataWriter $w) : void{ + $w->suspiciousStewType($this->suspiciousStewType); + } + + public function getType() : SuspiciousStewType{ return $this->suspiciousStewType; } + + /** + * @return $this + */ + public function setType(SuspiciousStewType $type) : self{ + $this->suspiciousStewType = $type; + return $this; + } + + public function getMaxStackSize() : int{ + return 1; + } + + public function requiresHunger() : bool{ + return false; + } + + public function getFoodRestore() : int{ + return 6; + } + + public function getSaturationRestore() : float{ + return 7.2; + } + + public function getAdditionalEffects() : array{ + return $this->suspiciousStewType->getEffects(); + } + + public function getResidue() : Item{ + return VanillaItems::BOWL(); + } +} diff --git a/src/item/SuspiciousStewType.php b/src/item/SuspiciousStewType.php new file mode 100644 index 000000000..27209b573 --- /dev/null +++ b/src/item/SuspiciousStewType.php @@ -0,0 +1,104 @@ + [ + new EffectInstance(VanillaEffects::NIGHT_VISION(), 80) + ]), + new self("cornflower", fn() => [ + new EffectInstance(VanillaEffects::JUMP_BOOST(), 80) + ]), + new self("tulip", fn() => [ + new EffectInstance(VanillaEffects::WEAKNESS(), 140) + ]), + new self("azure_bluet", fn() => [ + new EffectInstance(VanillaEffects::BLINDNESS(), 120) + ]), + new self("lily_of_the_valley", fn() => [ + new EffectInstance(VanillaEffects::POISON(), 200) + ]), + new self("dandelion", fn() => [ + new EffectInstance(VanillaEffects::SATURATION(), 6) + ]), + new self("blue_orchid", fn() => [ + new EffectInstance(VanillaEffects::SATURATION(), 6) + ]), + new self("allium", fn() => [ + new EffectInstance(VanillaEffects::FIRE_RESISTANCE(), 40) + ]), + new self("oxeye_daisy", fn() => [ + new EffectInstance(VanillaEffects::REGENERATION(), 120) + ]), + new self("wither_rose", fn() => [ + new EffectInstance(VanillaEffects::WITHER(), 120) + ]) + ); + } + + /** + * @phpstan-param \Closure() : list $effectsGetter + */ + private function __construct( + string $enumName, + private \Closure $effectsGetter + ){ + $this->Enum___construct($enumName); + } + + /** + * @return EffectInstance[] + * @phpstan-return list + */ + public function getEffects() : array{ + return ($this->effectsGetter)(); + } +} diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 11129238e..d7091041e 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -286,6 +286,7 @@ use pocketmine\world\World; * @method static Sword STONE_SWORD() * @method static StringItem STRING() * @method static Item SUGAR() + * @method static SuspiciousStew SUSPICIOUS_STEW() * @method static SweetBerries SWEET_BERRIES() * @method static Totem TOTEM() * @method static SpawnEgg VILLAGER_SPAWN_EGG() @@ -518,6 +519,7 @@ final class VanillaItems{ self::register("stick", new Stick(new IID(Ids::STICK), "Stick")); self::register("string", new StringItem(new IID(Ids::STRING), "String")); self::register("sugar", new Item(new IID(Ids::SUGAR), "Sugar")); + self::register("suspicious_stew", new SuspiciousStew(new IID(Ids::SUSPICIOUS_STEW), "Suspicious Stew")); self::register("sweet_berries", new SweetBerries(new IID(Ids::SWEET_BERRIES), "Sweet Berries")); self::register("totem", new Totem(new IID(Ids::TOTEM), "Totem of Undying")); self::register("warped_sign", new ItemBlockWallOrFloor(new IID(Ids::WARPED_SIGN), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN())); From 6e8f11d5e8585d50bb9a5f02af4bfd8ae0b5b25a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 16 Aug 2022 17:42:18 +0100 Subject: [PATCH 395/692] UnknownBlock: fixed type data encoding --- src/block/UnknownBlock.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 02b125e98..75afd32b2 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -36,6 +36,8 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } + public function getRequiredTypeDataBits() : int{ return Block::INTERNAL_STATE_DATA_BITS; } + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block From fedd5416636df18654d7883dc3cd8a72b3351538 Mon Sep 17 00:00:00 2001 From: alvin0319 Date: Mon, 22 Aug 2022 04:05:09 +0900 Subject: [PATCH 396/692] Dye now can be used to change Sign text color (#4690) --- src/block/BaseSign.php | 55 ++++++++++++++++++++++++++++++ src/block/tile/Sign.php | 32 ++++++++++++++++- src/block/utils/SignText.php | 26 ++++++++++++-- src/world/sound/DyeUseSound.php | 35 +++++++++++++++++++ src/world/sound/InkSacUseSound.php | 35 +++++++++++++++++++ 5 files changed, 179 insertions(+), 4 deletions(-) create mode 100644 src/world/sound/DyeUseSound.php create mode 100644 src/world/sound/InkSacUseSound.php diff --git a/src/block/BaseSign.php b/src/block/BaseSign.php index a1413ccbf..bd6316af9 100644 --- a/src/block/BaseSign.php +++ b/src/block/BaseSign.php @@ -24,17 +24,23 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Sign as TileSign; +use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SignText; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WoodType; use pocketmine\block\utils\WoodTypeTrait; +use pocketmine\color\Color; use pocketmine\event\block\SignChangeEvent; +use pocketmine\item\Dye; use pocketmine\item\Item; +use pocketmine\item\ItemTypeIds; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\utils\TextFormat; use pocketmine\world\BlockTransaction; +use pocketmine\world\sound\DyeUseSound; +use pocketmine\world\sound\InkSacUseSound; use function array_map; use function assert; use function strlen; @@ -111,6 +117,55 @@ abstract class BaseSign extends Transparent{ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } + private function doSignChange(SignText $newText, Player $player, Item $item) : bool{ + $ev = new SignChangeEvent($this, $player, $newText); + $ev->call(); + if(!$ev->isCancelled()){ + $this->text = $ev->getNewText(); + $this->position->getWorld()->setBlock($this->position, $this); + $item->pop(); + return true; + } + + return false; + } + + private function changeSignGlowingState(bool $glowing, Player $player, Item $item) : bool{ + if($this->text->isGlowing() !== $glowing && $this->doSignChange(new SignText($this->text->getLines(), $this->text->getBaseColor(), $glowing), $player, $item)){ + $this->position->getWorld()->addSound($this->position, new InkSacUseSound()); + return true; + } + return false; + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($player === null){ + return false; + } + $dyeColor = $item instanceof Dye ? $item->getColor() : match($item->getTypeId()){ + ItemTypeIds::BONE_MEAL => DyeColor::WHITE(), + ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE(), + ItemTypeIds::COCOA_BEANS => DyeColor::BROWN(), + default => null + }; + if($dyeColor !== null){ + $color = $dyeColor->equals(DyeColor::BLACK()) ? new Color(0, 0, 0) : $dyeColor->getRgbValue(); + if($color->toARGB() === $this->text->getBaseColor()->toARGB()){ + return false; + } + + if($this->doSignChange(new SignText($this->text->getLines(), $color, $this->text->isGlowing()), $player, $item)){ + $this->position->getWorld()->addSound($this->position, new DyeUseSound()); + return true; + } + }elseif($item->getTypeId() === ItemTypeIds::INK_SAC){ + return $this->changeSignGlowingState(false, $player, $item); + }elseif($item->getTypeId() === ItemTypeIds::GLOW_INK_SAC){ + return $this->changeSignGlowingState(true, $player, $item); + } + return false; + } + /** * Returns an object containing information about the sign text. */ diff --git a/src/block/tile/Sign.php b/src/block/tile/Sign.php index b4383d157..3d3d30713 100644 --- a/src/block/tile/Sign.php +++ b/src/block/tile/Sign.php @@ -24,9 +24,13 @@ declare(strict_types=1); namespace pocketmine\block\tile; use pocketmine\block\utils\SignText; +use pocketmine\color\Color; use pocketmine\math\Vector3; +use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; +use pocketmine\utils\Binary; use pocketmine\world\World; use function array_pad; use function array_slice; @@ -42,6 +46,13 @@ use function sprintf; class Sign extends Spawnable{ public const TAG_TEXT_BLOB = "Text"; public const TAG_TEXT_LINE = "Text%d"; //sprintf()able + public const TAG_TEXT_COLOR = "SignTextColor"; + public const TAG_GLOWING_TEXT = "IgnoreLighting"; + /** + * This tag is set to indicate that MCPE-117835 has been addressed in whatever version this sign was created. + * @see https://bugs.mojang.com/browse/MCPE-117835 + */ + public const TAG_LEGACY_BUG_RESOLVE = "TextIgnoreLegacyBugResolved"; /** * @return string[] @@ -60,7 +71,20 @@ class Sign extends Spawnable{ public function readSaveData(CompoundTag $nbt) : void{ if(($textBlobTag = $nbt->getTag(self::TAG_TEXT_BLOB)) instanceof StringTag){ //MCPE 1.2 save format - $this->text = SignText::fromBlob(mb_scrub($textBlobTag->getValue(), 'UTF-8')); + $baseColor = new Color(0, 0, 0); + $glowingText = false; + if(($baseColorTag = $nbt->getTag(self::TAG_TEXT_COLOR)) instanceof IntTag){ + $baseColor = Color::fromARGB(Binary::unsignInt($baseColorTag->getValue())); + } + if( + ($glowingTextTag = $nbt->getTag(self::TAG_GLOWING_TEXT)) instanceof ByteTag && + ($lightingBugResolvedTag = $nbt->getTag(self::TAG_LEGACY_BUG_RESOLVE)) instanceof ByteTag + ){ + //both of these must be 1 - if only one is set, it's a leftover from 1.16.210 experimental features + //see https://bugs.mojang.com/browse/MCPE-117835 + $glowingText = $glowingTextTag->getValue() !== 0 && $lightingBugResolvedTag->getValue() !== 0; + } + $this->text = SignText::fromBlob(mb_scrub($textBlobTag->getValue(), 'UTF-8'), $baseColor, $glowingText); }else{ $text = []; for($i = 0; $i < SignText::LINE_COUNT; ++$i){ @@ -80,6 +104,9 @@ class Sign extends Spawnable{ $textKey = sprintf(self::TAG_TEXT_LINE, $i + 1); $nbt->setString($textKey, $this->text->getLine($i)); } + $nbt->setInt(self::TAG_TEXT_COLOR, Binary::signInt($this->text->getBaseColor()->toARGB())); + $nbt->setByte(self::TAG_GLOWING_TEXT, $this->text->isGlowing() ? 1 : 0); + $nbt->setByte(self::TAG_LEGACY_BUG_RESOLVE, 1); } public function getText() : SignText{ @@ -108,5 +135,8 @@ class Sign extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ $nbt->setString(self::TAG_TEXT_BLOB, implode("\n", $this->text->getLines())); + $nbt->setInt(self::TAG_TEXT_COLOR, Binary::signInt($this->text->getBaseColor()->toARGB())); + $nbt->setByte(self::TAG_GLOWING_TEXT, $this->text->isGlowing() ? 1 : 0); + $nbt->setByte(self::TAG_LEGACY_BUG_RESOLVE, 1); } } diff --git a/src/block/utils/SignText.php b/src/block/utils/SignText.php index 6f3cb69dd..cdde8f5eb 100644 --- a/src/block/utils/SignText.php +++ b/src/block/utils/SignText.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; +use pocketmine\color\Color; use pocketmine\utils\Utils; use function array_fill; use function array_pad; @@ -37,6 +38,8 @@ class SignText{ /** @var string[] */ private array $lines; + private Color $baseColor; + private bool $glowing; /** * @param string[]|null $lines index-sensitive; omitting an index will leave it unchanged @@ -45,7 +48,7 @@ class SignText{ * @throws \InvalidArgumentException if invalid keys (out of bounds or string) are found in the array * @throws \InvalidArgumentException if any line is not valid UTF-8 or contains a newline */ - public function __construct(?array $lines = null){ + public function __construct(?array $lines = null, ?Color $baseColor = null, bool $glowing = false){ $this->lines = array_fill(0, self::LINE_COUNT, ""); if($lines !== null){ if(count($lines) > self::LINE_COUNT){ @@ -61,6 +64,8 @@ class SignText{ $this->lines[$k] = $line; } } + $this->baseColor = $baseColor ?? new Color(0, 0, 0); + $this->glowing = $glowing; } /** @@ -69,8 +74,8 @@ class SignText{ * * @throws \InvalidArgumentException if the text is not valid UTF-8 */ - public static function fromBlob(string $blob) : SignText{ - return new self(array_slice(array_pad(explode("\n", $blob), self::LINE_COUNT, ""), 0, self::LINE_COUNT)); + public static function fromBlob(string $blob, ?Color $baseColor = null, bool $glowing = false) : SignText{ + return new self(array_slice(array_pad(explode("\n", $blob), self::LINE_COUNT, ""), 0, self::LINE_COUNT), $baseColor, $glowing); } /** @@ -103,4 +108,19 @@ class SignText{ $this->checkLineIndex($index); return $this->lines[$index]; } + + /** + * Returns the base text color of sign. Color codes using the § escape character will override this color when used. + */ + public function getBaseColor() : Color{ + return $this->baseColor; + } + + /** + * Returns whether the sign text is glowing. When true, the text will have an outline (usually a darker tone of the + * base color, or white for black text), and will glow in the dark, making it readable without any light sources. + */ + public function isGlowing() : bool{ + return $this->glowing; + } } diff --git a/src/world/sound/DyeUseSound.php b/src/world/sound/DyeUseSound.php new file mode 100644 index 000000000..5357c6e8b --- /dev/null +++ b/src/world/sound/DyeUseSound.php @@ -0,0 +1,35 @@ + Date: Fri, 26 Aug 2022 15:54:21 +0100 Subject: [PATCH 397/692] StringToItemParser: improve some readability slightly --- src/item/StringToItemParser.php | 48 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 96d542cc2..66378551b 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -58,30 +58,30 @@ final class StringToItemParser extends StringToTParser{ private static function registerDynamicBlocks(self $result) : void{ foreach(DyeColor::getAll() as $color){ - $prefix = fn(string $name) => $color->name() . "_" . $name; + $register = fn(string $name, \Closure $callback) => $result->registerBlock($color->name() . "_" . $name, $callback); //wall and floor banner are the same item - $result->registerBlock($prefix("banner"), fn() => Blocks::BANNER()->setColor($color)); - $result->registerBlock($prefix("bed"), fn() => Blocks::BED()->setColor($color)); - $result->registerBlock($prefix("candle"), fn() => Blocks::DYED_CANDLE()->setColor($color)); - $result->registerBlock($prefix("carpet"), fn() => Blocks::CARPET()->setColor($color)); - $result->registerBlock($prefix("concrete"), fn() => Blocks::CONCRETE()->setColor($color)); - $result->registerBlock($prefix("concrete_powder"), fn() => Blocks::CONCRETE_POWDER()->setColor($color)); - $result->registerBlock($prefix("glazed_terracotta"), fn() => Blocks::GLAZED_TERRACOTTA()->setColor($color)); - $result->registerBlock($prefix("stained_clay"), fn() => Blocks::STAINED_CLAY()->setColor($color)); - $result->registerBlock($prefix("stained_glass"), fn() => Blocks::STAINED_GLASS()->setColor($color)); - $result->registerBlock($prefix("stained_glass_pane"), fn() => Blocks::STAINED_GLASS_PANE()->setColor($color)); - $result->registerBlock($prefix("stained_hardened_glass"), fn() => Blocks::STAINED_HARDENED_GLASS()->setColor($color)); - $result->registerBlock($prefix("stained_hardened_glass_pane"), fn() => Blocks::STAINED_HARDENED_GLASS_PANE()->setColor($color)); - $result->registerBlock($prefix("wool"), fn() => Blocks::WOOL()->setColor($color)); - $result->registerBlock($prefix("shulker_box"), fn() => Blocks::DYED_SHULKER_BOX()->setColor($color)); + $register("banner", fn() => Blocks::BANNER()->setColor($color)); + $register("bed", fn() => Blocks::BED()->setColor($color)); + $register("candle", fn() => Blocks::DYED_CANDLE()->setColor($color)); + $register("carpet", fn() => Blocks::CARPET()->setColor($color)); + $register("concrete", fn() => Blocks::CONCRETE()->setColor($color)); + $register("concrete_powder", fn() => Blocks::CONCRETE_POWDER()->setColor($color)); + $register("glazed_terracotta", fn() => Blocks::GLAZED_TERRACOTTA()->setColor($color)); + $register("stained_clay", fn() => Blocks::STAINED_CLAY()->setColor($color)); + $register("stained_glass", fn() => Blocks::STAINED_GLASS()->setColor($color)); + $register("stained_glass_pane", fn() => Blocks::STAINED_GLASS_PANE()->setColor($color)); + $register("stained_hardened_glass", fn() => Blocks::STAINED_HARDENED_GLASS()->setColor($color)); + $register("stained_hardened_glass_pane", fn() => Blocks::STAINED_HARDENED_GLASS_PANE()->setColor($color)); + $register("wool", fn() => Blocks::WOOL()->setColor($color)); + $register("shulker_box", fn() => Blocks::DYED_SHULKER_BOX()->setColor($color)); } foreach(CoralType::getAll() as $coralType){ - $prefix = fn(string $name) => $coralType->name() . "_" . $name; - $result->registerBlock($prefix("coral"), fn() => Blocks::CORAL()->setCoralType($coralType)); - $result->registerBlock($prefix("coral_block"), fn() => Blocks::CORAL_BLOCK()->setCoralType($coralType)); + $register = fn(string $name, \Closure $callback) => $result->registerBlock($coralType->name() . "_" . $name, $callback); + $register("coral", fn() => Blocks::CORAL()->setCoralType($coralType)); + $register("coral_block", fn() => Blocks::CORAL_BLOCK()->setCoralType($coralType)); //wall and floor coral fans are the same item - $result->registerBlock($prefix("coral_fan"), fn() => Blocks::CORAL_FAN()->setCoralType($coralType)); + $register("coral_fan", fn() => Blocks::CORAL_FAN()->setCoralType($coralType)); } for($i = Light::MIN_LIGHT_LEVEL; $i <= Light::MAX_LIGHT_LEVEL; $i++){ //helper aliases, since we don't support passing data values in /give @@ -93,11 +93,11 @@ final class StringToItemParser extends StringToTParser{ $oxPrefix = $oxidation->equals(CopperOxidation::NONE()) ? "" : $oxidation->name() . "_"; foreach(["" => false, "waxed_" => true] as $waxedPrefix => $waxed){ - $prefix = $waxedPrefix . $oxPrefix; - $result->registerBlock($prefix . "copper_block", fn() => Blocks::COPPER()->setOxidation($oxidation)->setWaxed($waxed)); - $result->registerBlock($prefix . "cut_copper_block", fn() => Blocks::CUT_COPPER()->setOxidation($oxidation)->setWaxed($waxed)); - $result->registerBlock($prefix . "cut_copper_stairs", fn() => Blocks::CUT_COPPER_STAIRS()->setOxidation($oxidation)->setWaxed($waxed)); - $result->registerBlock($prefix . "cut_copper_slab", fn() => Blocks::CUT_COPPER_SLAB()->setOxidation($oxidation)->setWaxed($waxed)); + $register = fn(string $name, \Closure $callback) => $result->registerBlock($waxedPrefix . $oxPrefix . $name, $callback); + $register("copper_block", fn() => Blocks::COPPER()->setOxidation($oxidation)->setWaxed($waxed)); + $register("cut_copper_block", fn() => Blocks::CUT_COPPER()->setOxidation($oxidation)->setWaxed($waxed)); + $register("cut_copper_stairs", fn() => Blocks::CUT_COPPER_STAIRS()->setOxidation($oxidation)->setWaxed($waxed)); + $register("cut_copper_slab", fn() => Blocks::CUT_COPPER_SLAB()->setOxidation($oxidation)->setWaxed($waxed)); } } From ca3612e4ffa93307c9ac0a95054fbfab66a36083 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 Aug 2022 16:18:13 +0100 Subject: [PATCH 398/692] Preparations for attempted unification of ItemSerializer and ItemDeserializer --- src/data/bedrock/item/ItemDeserializer.php | 108 ++++++++++++--------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index a61c3b89e..1897d3a20 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; +use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; @@ -65,6 +66,13 @@ final class ItemDeserializer{ $this->deserializers[$id] = $deserializer; } + /** + * @phpstan-param \Closure(Data) : Block $deserializer + */ + public function mapBlock(string $id, \Closure $deserializer) : void{ + $this->map($id, fn(Data $data) => $deserializer($data)->asItem()); + } + /** * @throws ItemTypeDeserializeException */ @@ -115,10 +123,53 @@ final class ItemDeserializer{ return $itemStack; } + private function registerSpecialBlockDeserializers() : void{ + $this->mapBlock(Ids::ACACIA_DOOR, fn() => Blocks::ACACIA_DOOR()); + $this->mapBlock(Ids::BIRCH_DOOR, fn() => Blocks::BIRCH_DOOR()); + $this->mapBlock(Ids::BREWING_STAND, fn() => Blocks::BREWING_STAND()); + $this->mapBlock(Ids::CAKE, fn() => Blocks::CAKE()); + $this->mapBlock(Ids::CAULDRON, fn() => Blocks::CAULDRON()); + $this->mapBlock(Ids::COMPARATOR, fn() => Blocks::REDSTONE_COMPARATOR()); + $this->mapBlock(Ids::CRIMSON_DOOR, fn() => Blocks::CRIMSON_DOOR()); + $this->mapBlock(Ids::DARK_OAK_DOOR, fn() => Blocks::DARK_OAK_DOOR()); + $this->mapBlock(Ids::FLOWER_POT, fn() => Blocks::FLOWER_POT()); + $this->mapBlock(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $this->mapBlock(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)); + $this->mapBlock(Ids::HOPPER, fn() => Blocks::HOPPER()); + $this->mapBlock(Ids::IRON_DOOR, fn() => Blocks::IRON_DOOR()); + $this->mapBlock(Ids::JUNGLE_DOOR, fn() => Blocks::JUNGLE_DOOR()); + $this->mapBlock(Ids::MANGROVE_DOOR, fn() => Blocks::MANGROVE_DOOR()); + $this->mapBlock(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()); + $this->mapBlock(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()); + $this->mapBlock(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()); + $this->mapBlock(Ids::SUGAR_CANE, fn() => Blocks::SUGARCANE()); + $this->mapBlock(Ids::WARPED_DOOR, fn() => Blocks::WARPED_DOOR()); + $this->mapBlock(Ids::WOODEN_DOOR, fn() => Blocks::OAK_DOOR()); + + $this->mapBlock(Ids::BED, function(Data $data) : Block{ + $meta = $data->getMeta(); + $color = DyeColorIdMap::getInstance()->fromId($meta); + if($color === null){ + throw new ItemTypeDeserializeException("Unknown bed meta $meta"); + } + return Blocks::BED()->setColor($color); + }); + $this->mapBlock(Ids::SKULL, function(Data $data) : Block{ + $meta = $data->getMeta(); + try{ + $skullType = SkullType::fromMagicNumber($meta); + }catch(\InvalidArgumentException $e){ + throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); + } + return Blocks::MOB_HEAD()->setSkullType($skullType); + }); + } + private function registerDeserializers() : void{ + $this->registerSpecialBlockDeserializers(); + $this->map(Ids::ACACIA_BOAT, fn() => Items::ACACIA_BOAT()); - $this->map(Ids::ACACIA_DOOR, fn() => Blocks::ACACIA_DOOR()->asItem()); - $this->map(Ids::ACACIA_SIGN, fn() => Blocks::ACACIA_SIGN()->asItem()); + $this->map(Ids::ACACIA_SIGN, fn() => Items::ACACIA_SIGN()); //TODO: minecraft:agent_spawn_egg //TODO: minecraft:allay_spawn_egg $this->map(Ids::AMETHYST_SHARD, fn() => Items::AMETHYST_SHARD()); @@ -144,22 +195,13 @@ final class ItemDeserializer{ }); //TODO: minecraft:banner_pattern //TODO: minecraft:bat_spawn_egg - $this->map(Ids::BED, function(Data $data) : Item{ - $meta = $data->getMeta(); - $color = DyeColorIdMap::getInstance()->fromId($meta); - if($color === null){ - throw new ItemTypeDeserializeException("Unknown bed meta $meta"); - } - return Blocks::BED()->setColor($color)->asItem(); - }); //TODO: minecraft:bee_spawn_egg $this->map(Ids::BEEF, fn() => Items::RAW_BEEF()); $this->map(Ids::BEETROOT, fn() => Items::BEETROOT()); $this->map(Ids::BEETROOT_SEEDS, fn() => Items::BEETROOT_SEEDS()); $this->map(Ids::BEETROOT_SOUP, fn() => Items::BEETROOT_SOUP()); $this->map(Ids::BIRCH_BOAT, fn() => Items::BIRCH_BOAT()); - $this->map(Ids::BIRCH_DOOR, fn() => Blocks::BIRCH_DOOR()->asItem()); - $this->map(Ids::BIRCH_SIGN, fn() => Blocks::BIRCH_SIGN()->asItem()); + $this->map(Ids::BIRCH_SIGN, fn() => Items::BIRCH_SIGN()); $this->map(Ids::BLACK_DYE, fn() => Items::DYE()->setColor(DyeColor::BLACK())); $this->map(Ids::BLAZE_POWDER, fn() => Items::BLAZE_POWDER()); $this->map(Ids::BLAZE_ROD, fn() => Items::BLAZE_ROD()); @@ -189,17 +231,14 @@ final class ItemDeserializer{ $this->map(Ids::BOW, fn() => Items::BOW()); $this->map(Ids::BOWL, fn() => Items::BOWL()); $this->map(Ids::BREAD, fn() => Items::BREAD()); - $this->map(Ids::BREWING_STAND, fn() => Blocks::BREWING_STAND()->asItem()); $this->map(Ids::BRICK, fn() => Items::BRICK()); $this->map(Ids::BROWN_DYE, fn() => Items::DYE()->setColor(DyeColor::BROWN())); $this->map(Ids::BUCKET, fn() => Items::BUCKET()); - $this->map(Ids::CAKE, fn() => Blocks::CAKE()->asItem()); //TODO: minecraft:camera //TODO: minecraft:campfire $this->map(Ids::CARROT, fn() => Items::CARROT()); //TODO: minecraft:carrot_on_a_stick //TODO: minecraft:cat_spawn_egg - $this->map(Ids::CAULDRON, fn() => Blocks::CAULDRON()->asItem()); //TODO: minecraft:cave_spider_spawn_egg //TODO: minecraft:chain $this->map(Ids::CHAINMAIL_BOOTS, fn() => Items::CHAINMAIL_BOOTS()); @@ -219,7 +258,6 @@ final class ItemDeserializer{ //TODO: minecraft:cod_bucket //TODO: minecraft:cod_spawn_egg //TODO: minecraft:command_block_minecart - $this->map(Ids::COMPARATOR, fn() => Blocks::REDSTONE_COMPARATOR()->asItem()); $this->map(Ids::COMPASS, fn() => Items::COMPASS()); $this->map(Ids::COMPOUND, fn(Data $data) => match($data->getMeta()){ CompoundTypeIds::SALT => Items::CHEMICAL_SALT(), @@ -274,13 +312,11 @@ final class ItemDeserializer{ //TODO: minecraft:cow_spawn_egg //TODO: minecraft:creeper_banner_pattern //TODO: minecraft:creeper_spawn_egg - $this->map(Ids::CRIMSON_DOOR, fn() => Blocks::CRIMSON_DOOR()->asItem()); - $this->map(Ids::CRIMSON_SIGN, fn() => Blocks::CRIMSON_SIGN()->asItem()); + $this->map(Ids::CRIMSON_SIGN, fn() => Items::CRIMSON_SIGN()); //TODO: minecraft:crossbow $this->map(Ids::CYAN_DYE, fn() => Items::DYE()->setColor(DyeColor::CYAN())); $this->map(Ids::DARK_OAK_BOAT, fn() => Items::DARK_OAK_BOAT()); - $this->map(Ids::DARK_OAK_DOOR, fn() => Blocks::DARK_OAK_DOOR()->asItem()); - $this->map(Ids::DARK_OAK_SIGN, fn() => Blocks::DARK_OAK_SIGN()->asItem()); + $this->map(Ids::DARK_OAK_SIGN, fn() => Items::DARK_OAK_SIGN()); $this->map(Ids::DIAMOND, fn() => Items::DIAMOND()); $this->map(Ids::DIAMOND_AXE, fn() => Items::DIAMOND_AXE()); $this->map(Ids::DIAMOND_BOOTS, fn() => Items::DIAMOND_BOOTS()); @@ -347,9 +383,7 @@ final class ItemDeserializer{ $this->map(Ids::FLINT, fn() => Items::FLINT()); $this->map(Ids::FLINT_AND_STEEL, fn() => Items::FLINT_AND_STEEL()); //TODO: minecraft:flower_banner_pattern - $this->map(Ids::FLOWER_POT, fn() => Blocks::FLOWER_POT()->asItem()); //TODO: minecraft:fox_spawn_egg - $this->map(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)->asItem()); //TODO: minecraft:frog_spawn_egg //TODO: minecraft:ghast_spawn_egg $this->map(Ids::GHAST_TEAR, fn() => Items::GHAST_TEAR()); @@ -357,7 +391,6 @@ final class ItemDeserializer{ $this->map(Ids::GLISTERING_MELON_SLICE, fn() => Items::GLISTERING_MELON()); //TODO: minecraft:globe_banner_pattern //TODO: minecraft:glow_berries - $this->map(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)->asItem()); $this->map(Ids::GLOW_INK_SAC, fn() => Items::GLOW_INK_SAC()); //TODO: minecraft:glow_squid_spawn_egg //TODO: minecraft:glow_stick @@ -386,7 +419,6 @@ final class ItemDeserializer{ //TODO: minecraft:hoglin_spawn_egg $this->map(Ids::HONEY_BOTTLE, fn() => Items::HONEY_BOTTLE()); $this->map(Ids::HONEYCOMB, fn() => Items::HONEYCOMB()); - $this->map(Ids::HOPPER, fn() => Blocks::HOPPER()->asItem()); //TODO: minecraft:hopper_minecart //TODO: minecraft:horse_spawn_egg //TODO: minecraft:husk_spawn_egg @@ -395,7 +427,6 @@ final class ItemDeserializer{ $this->map(Ids::IRON_AXE, fn() => Items::IRON_AXE()); $this->map(Ids::IRON_BOOTS, fn() => Items::IRON_BOOTS()); $this->map(Ids::IRON_CHESTPLATE, fn() => Items::IRON_CHESTPLATE()); - $this->map(Ids::IRON_DOOR, fn() => Blocks::IRON_DOOR()->asItem()); $this->map(Ids::IRON_HELMET, fn() => Items::IRON_HELMET()); $this->map(Ids::IRON_HOE, fn() => Items::IRON_HOE()); //TODO: minecraft:iron_horse_armor @@ -406,8 +437,7 @@ final class ItemDeserializer{ $this->map(Ids::IRON_SHOVEL, fn() => Items::IRON_SHOVEL()); $this->map(Ids::IRON_SWORD, fn() => Items::IRON_SWORD()); $this->map(Ids::JUNGLE_BOAT, fn() => Items::JUNGLE_BOAT()); - $this->map(Ids::JUNGLE_DOOR, fn() => Blocks::JUNGLE_DOOR()->asItem()); - $this->map(Ids::JUNGLE_SIGN, fn() => Blocks::JUNGLE_SIGN()->asItem()); + $this->map(Ids::JUNGLE_SIGN, fn() => Items::JUNGLE_SIGN()); //TODO: minecraft:kelp $this->map(Ids::LAPIS_LAZULI, fn() => Items::LAPIS_LAZULI()); $this->map(Ids::LAVA_BUCKET, fn() => Items::LAVA_BUCKET()); @@ -427,8 +457,7 @@ final class ItemDeserializer{ $this->map(Ids::MAGENTA_DYE, fn() => Items::DYE()->setColor(DyeColor::MAGENTA())); $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); //TODO: minecraft:magma_cube_spawn_egg - $this->map(Ids::MANGROVE_DOOR, fn() => Blocks::MANGROVE_DOOR()->asItem()); - $this->map(Ids::MANGROVE_SIGN, fn() => Blocks::MANGROVE_SIGN()->asItem()); + $this->map(Ids::MANGROVE_SIGN, fn() => Items::MANGROVE_SIGN()); //TODO: minecraft:medicine $this->map(Ids::MELON_SEEDS, fn() => Items::MELON_SEEDS()); $this->map(Ids::MELON_SLICE, fn() => Items::MELON()); @@ -457,7 +486,6 @@ final class ItemDeserializer{ $this->map(Ids::NAUTILUS_SHELL, fn() => Items::NAUTILUS_SHELL()); //TODO: minecraft:nether_sprouts $this->map(Ids::NETHER_STAR, fn() => Items::NETHER_STAR()); - $this->map(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()->asItem()); $this->map(Ids::NETHERBRICK, fn() => Items::NETHER_BRICK()); $this->map(Ids::NETHERITE_AXE, fn() => Items::NETHERITE_AXE()); $this->map(Ids::NETHERITE_BOOTS, fn() => Items::NETHERITE_BOOTS()); @@ -472,7 +500,7 @@ final class ItemDeserializer{ $this->map(Ids::NETHERITE_SWORD, fn() => Items::NETHERITE_SWORD()); //TODO: minecraft:npc_spawn_egg $this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT()); - $this->map(Ids::OAK_SIGN, fn() => Blocks::OAK_SIGN()->asItem()); + $this->map(Ids::OAK_SIGN, fn() => Items::OAK_SIGN()); //TODO: minecraft:ocelot_spawn_egg $this->map(Ids::ORANGE_DYE, fn() => Items::DYE()->setColor(DyeColor::ORANGE())); $this->map(Ids::PAINTING, fn() => Items::PAINTING()); @@ -522,7 +550,6 @@ final class ItemDeserializer{ $this->map(Ids::RAW_IRON, fn() => Items::RAW_IRON()); $this->map(Ids::RED_DYE, fn() => Items::DYE()->setColor(DyeColor::RED())); $this->map(Ids::REDSTONE, fn() => Items::REDSTONE_DUST()); - $this->map(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()->asItem()); $this->map(Ids::ROTTEN_FLESH, fn() => Items::ROTTEN_FLESH()); //TODO: minecraft:saddle $this->map(Ids::SALMON, fn() => Items::RAW_SALMON()); @@ -537,15 +564,6 @@ final class ItemDeserializer{ //TODO: minecraft:silverfish_spawn_egg //TODO: minecraft:skeleton_horse_spawn_egg //TODO: minecraft:skeleton_spawn_egg - $this->map(Ids::SKULL, function(Data $data) : Item{ - $meta = $data->getMeta(); - try{ - $skullType = SkullType::fromMagicNumber($meta); - }catch(\InvalidArgumentException $e){ - throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); - } - return Blocks::MOB_HEAD()->setSkullType($skullType)->asItem(); - }); //TODO: minecraft:skull_banner_pattern $this->map(Ids::SLIME_BALL, fn() => Items::SLIMEBALL()); //TODO: minecraft:slime_spawn_egg @@ -569,8 +587,7 @@ final class ItemDeserializer{ return Items::SPLASH_POTION()->setType($potionType); }); $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); - $this->map(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()->asItem()); - $this->map(Ids::SPRUCE_SIGN, fn() => Blocks::SPRUCE_SIGN()->asItem()); + $this->map(Ids::SPRUCE_SIGN, fn() => Items::SPRUCE_SIGN()); $this->map(Ids::SPYGLASS, fn() => Items::SPYGLASS()); $this->map(Ids::SQUID_SPAWN_EGG, fn() => Items::SQUID_SPAWN_EGG()); $this->map(Ids::STICK, fn() => Items::STICK()); @@ -583,7 +600,6 @@ final class ItemDeserializer{ //TODO: minecraft:strider_spawn_egg $this->map(Ids::STRING, fn() => Items::STRING()); $this->map(Ids::SUGAR, fn() => Items::SUGAR()); - $this->map(Ids::SUGAR_CANE, fn() => Blocks::SUGARCANE()->asItem()); $this->map(Ids::SUSPICIOUS_STEW, function(Data $data) : Item{ $meta = $data->getMeta(); $suspiciousStewType = SuspiciousStewTypeIdMap::getInstance()->fromId($meta); @@ -607,9 +623,8 @@ final class ItemDeserializer{ $this->map(Ids::VILLAGER_SPAWN_EGG, fn() => Items::VILLAGER_SPAWN_EGG()); //TODO: minecraft:vindicator_spawn_egg //TODO: minecraft:wandering_trader_spawn_egg - $this->map(Ids::WARPED_DOOR, fn() => Blocks::WARPED_DOOR()->asItem()); //TODO: minecraft:warped_fungus_on_a_stick - $this->map(Ids::WARPED_SIGN, fn() => Blocks::WARPED_SIGN()->asItem()); + $this->map(Ids::WARPED_SIGN, fn() => Items::WARPED_SIGN()); $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); $this->map(Ids::WHEAT, fn() => Items::WHEAT()); $this->map(Ids::WHEAT_SEEDS, fn() => Items::WHEAT_SEEDS()); @@ -618,7 +633,6 @@ final class ItemDeserializer{ //TODO: minecraft:wither_skeleton_spawn_egg //TODO: minecraft:wolf_spawn_egg $this->map(Ids::WOODEN_AXE, fn() => Items::WOODEN_AXE()); - $this->map(Ids::WOODEN_DOOR, fn() => Blocks::OAK_DOOR()->asItem()); $this->map(Ids::WOODEN_HOE, fn() => Items::WOODEN_HOE()); $this->map(Ids::WOODEN_PICKAXE, fn() => Items::WOODEN_PICKAXE()); $this->map(Ids::WOODEN_SHOVEL, fn() => Items::WOODEN_SHOVEL()); From 64ac20173b86aea37771d997dbe121e35e4aed19 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 Aug 2022 17:06:09 +0100 Subject: [PATCH 399/692] ItemDeserializer: remove unnecessary code these are legacy IDs and are upgraded to modern IDs before ever reaching this code. --- src/data/bedrock/item/ItemDeserializer.php | 47 ---------------------- 1 file changed, 47 deletions(-) diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index 1897d3a20..d846b741b 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -27,14 +27,12 @@ use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; -use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\block\convert\UnsupportedBlockStateException; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; -use pocketmine\data\bedrock\EntityLegacyIds; use pocketmine\data\bedrock\item\ItemTypeNames as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\PotionTypeIdMap; @@ -43,7 +41,6 @@ use pocketmine\item\Durable; use pocketmine\item\Item; use pocketmine\item\VanillaItems as Items; use pocketmine\nbt\NbtException; -use pocketmine\utils\AssumptionFailedError; use function min; final class ItemDeserializer{ @@ -208,22 +205,6 @@ final class ItemDeserializer{ //TODO: minecraft:blaze_spawn_egg $this->map(Ids::BLEACH, fn() => Items::BLEACH()); $this->map(Ids::BLUE_DYE, fn() => Items::DYE()->setColor(DyeColor::BLUE())); - $this->map(Ids::BOAT, function(Data $data) : Item{ - try{ - $treeType = TreeType::fromMagicNumber($data->getMeta()); - }catch(\InvalidArgumentException $e){ - throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); - } - return match($treeType->id()){ - TreeType::OAK()->id() => Items::OAK_BOAT(), - TreeType::SPRUCE()->id() => Items::SPRUCE_BOAT(), - TreeType::BIRCH()->id() => Items::BIRCH_BOAT(), - TreeType::JUNGLE()->id() => Items::JUNGLE_BOAT(), - TreeType::ACACIA()->id() => Items::ACACIA_BOAT(), - TreeType::DARK_OAK()->id() => Items::DARK_OAK_BOAT(), - default => throw new AssumptionFailedError("Unexpected tree type " . $treeType->name()) - }; - }); $this->map(Ids::BONE, fn() => Items::BONE()); $this->map(Ids::BONE_MEAL, fn() => Items::BONE_MEAL()); $this->map(Ids::BOOK, fn() => Items::BOOK()); @@ -334,28 +315,6 @@ final class ItemDeserializer{ $this->map(Ids::DRAGON_BREATH, fn() => Items::DRAGON_BREATH()); $this->map(Ids::DRIED_KELP, fn() => Items::DRIED_KELP()); //TODO: minecraft:drowned_spawn_egg - $this->map(Ids::DYE, function(Data $data) : Item{ - $meta = $data->getMeta(); - $item = match($meta) { - 0 => Items::INK_SAC(), - 3 => Items::COCOA_BEANS(), - 4 => Items::LAPIS_LAZULI(), - 15 => Items::BONE_MEAL(), - 16 => Items::DYE()->setColor(DyeColor::BLACK()), - 17 => Items::DYE()->setColor(DyeColor::BROWN()), - 18 => Items::DYE()->setColor(DyeColor::BLUE()), - 19 => Items::DYE()->setColor(DyeColor::WHITE()), - default => null - }; - if($item !== null){ - return $item; - } - $dyeColor = DyeColorIdMap::getInstance()->fromInvertedId($meta); - if($dyeColor === null){ - throw new ItemTypeDeserializeException("Unknown dye meta $meta"); - } - return Items::DYE()->setColor($dyeColor); - }); $this->map(Ids::ECHO_SHARD, fn() => Items::ECHO_SHARD()); $this->map(Ids::EGG, fn() => Items::EGG()); //TODO: minecraft:elder_guardian_spawn_egg @@ -570,12 +529,6 @@ final class ItemDeserializer{ $this->map(Ids::SNOWBALL, fn() => Items::SNOWBALL()); //TODO: minecraft:soul_campfire //TODO: minecraft:sparkler - $this->map(Ids::SPAWN_EGG, fn(Data $data) => match($data->getMeta()){ - EntityLegacyIds::ZOMBIE => Items::ZOMBIE_SPAWN_EGG(), - EntityLegacyIds::SQUID => Items::SQUID_SPAWN_EGG(), - EntityLegacyIds::VILLAGER => Items::VILLAGER_SPAWN_EGG(), - default => throw new ItemTypeDeserializeException("Unhandled spawn egg meta " . $data->getMeta()) - }); $this->map(Ids::SPIDER_EYE, fn() => Items::SPIDER_EYE()); //TODO: minecraft:spider_spawn_egg $this->map(Ids::SPLASH_POTION, function(Data $data) : Item{ From 4bd232582841d87f136561715c7b94f0a5595488 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 Aug 2022 17:07:35 +0100 Subject: [PATCH 400/692] Remove obsolete TreeType magic numbers --- src/block/utils/TreeType.php | 40 +++++++----------------------------- 1 file changed, 7 insertions(+), 33 deletions(-) diff --git a/src/block/utils/TreeType.php b/src/block/utils/TreeType.php index b031e0e99..180f17a47 100644 --- a/src/block/utils/TreeType.php +++ b/src/block/utils/TreeType.php @@ -44,42 +44,20 @@ final class TreeType{ __construct as Enum___construct; } - /** @var TreeType[] */ - private static array $numericIdMap = []; - protected static function setup() : void{ self::registerAll( - new TreeType("oak", "Oak", 0), - new TreeType("spruce", "Spruce", 1), - new TreeType("birch", "Birch", 2), - new TreeType("jungle", "Jungle", 3), - new TreeType("acacia", "Acacia", 4), - new TreeType("dark_oak", "Dark Oak", 5) + new TreeType("oak", "Oak"), + new TreeType("spruce", "Spruce"), + new TreeType("birch", "Birch"), + new TreeType("jungle", "Jungle"), + new TreeType("acacia", "Acacia"), + new TreeType("dark_oak", "Dark Oak") ); } - protected static function register(TreeType $type) : void{ - self::Enum_register($type); - self::$numericIdMap[$type->getMagicNumber()] = $type; - } - - /** - * @internal - * - * @throws \InvalidArgumentException - */ - public static function fromMagicNumber(int $magicNumber) : TreeType{ - self::checkInit(); - if(!isset(self::$numericIdMap[$magicNumber])){ - throw new \InvalidArgumentException("Unknown tree type magic number $magicNumber"); - } - return self::$numericIdMap[$magicNumber]; - } - private function __construct( string $enumName, - private string $displayName, - private int $magicNumber + private string $displayName ){ $this->Enum___construct($enumName); } @@ -87,8 +65,4 @@ final class TreeType{ public function getDisplayName() : string{ return $this->displayName; } - - public function getMagicNumber() : int{ - return $this->magicNumber; - } } From 7fd4c12ea1b34c6de1fb7c2868490ce799823a80 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 Aug 2022 15:10:55 +0100 Subject: [PATCH 401/692] First look at (mostly) unified item serializer registrar this halves the amount of code needed to implement most items. --- src/data/bedrock/DyeColorIdMap.php | 57 +- src/data/bedrock/item/ItemDeserializer.php | 491 +---------------- src/data/bedrock/item/ItemSerializer.php | 331 +---------- .../ItemSerializerDeserializerRegistrar.php | 517 ++++++++++++++++++ 4 files changed, 560 insertions(+), 836 deletions(-) create mode 100644 src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php diff --git a/src/data/bedrock/DyeColorIdMap.php b/src/data/bedrock/DyeColorIdMap.php index 112ffe937..63ee67b4b 100644 --- a/src/data/bedrock/DyeColorIdMap.php +++ b/src/data/bedrock/DyeColorIdMap.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; use pocketmine\block\utils\DyeColor; +use pocketmine\data\bedrock\item\ItemTypeNames; use pocketmine\utils\SingletonTrait; final class DyeColorIdMap{ @@ -41,28 +42,42 @@ final class DyeColorIdMap{ */ private array $enumToId = []; + /** + * @var DyeColor[] + * @phpstan-var array + */ + private array $itemIdToEnum = []; + + /** + * @var string[] + * @phpstan-var array + */ + private array $enumToItemId = []; + private function __construct(){ - $this->register(0, DyeColor::WHITE()); - $this->register(1, DyeColor::ORANGE()); - $this->register(2, DyeColor::MAGENTA()); - $this->register(3, DyeColor::LIGHT_BLUE()); - $this->register(4, DyeColor::YELLOW()); - $this->register(5, DyeColor::LIME()); - $this->register(6, DyeColor::PINK()); - $this->register(7, DyeColor::GRAY()); - $this->register(8, DyeColor::LIGHT_GRAY()); - $this->register(9, DyeColor::CYAN()); - $this->register(10, DyeColor::PURPLE()); - $this->register(11, DyeColor::BLUE()); - $this->register(12, DyeColor::BROWN()); - $this->register(13, DyeColor::GREEN()); - $this->register(14, DyeColor::RED()); - $this->register(15, DyeColor::BLACK()); + $this->register(0, ItemTypeNames::WHITE_DYE, DyeColor::WHITE()); + $this->register(1, ItemTypeNames::ORANGE_DYE, DyeColor::ORANGE()); + $this->register(2, ItemTypeNames::MAGENTA_DYE, DyeColor::MAGENTA()); + $this->register(3, ItemTypeNames::LIGHT_BLUE_DYE, DyeColor::LIGHT_BLUE()); + $this->register(4, ItemTypeNames::YELLOW_DYE, DyeColor::YELLOW()); + $this->register(5, ItemTypeNames::LIME_DYE, DyeColor::LIME()); + $this->register(6, ItemTypeNames::PINK_DYE, DyeColor::PINK()); + $this->register(7, ItemTypeNames::GRAY_DYE, DyeColor::GRAY()); + $this->register(8, ItemTypeNames::LIGHT_GRAY_DYE, DyeColor::LIGHT_GRAY()); + $this->register(9, ItemTypeNames::CYAN_DYE, DyeColor::CYAN()); + $this->register(10, ItemTypeNames::PURPLE_DYE, DyeColor::PURPLE()); + $this->register(11, ItemTypeNames::BLUE_DYE, DyeColor::BLUE()); + $this->register(12, ItemTypeNames::BROWN_DYE, DyeColor::BROWN()); + $this->register(13, ItemTypeNames::GREEN_DYE, DyeColor::GREEN()); + $this->register(14, ItemTypeNames::RED_DYE, DyeColor::RED()); + $this->register(15, ItemTypeNames::BLACK_DYE, DyeColor::BLACK()); } - private function register(int $id, DyeColor $color) : void{ + private function register(int $id, string $itemId, DyeColor $color) : void{ $this->idToEnum[$id] = $color; $this->enumToId[$color->id()] = $id; + $this->itemIdToEnum[$itemId] = $color; + $this->enumToItemId[$color->id()] = $itemId; } public function toId(DyeColor $color) : int{ @@ -73,6 +88,10 @@ final class DyeColorIdMap{ return ~$this->toId($color) & 0xf; } + public function toItemId(DyeColor $color) : string{ + return $this->enumToItemId[$color->id()]; + } + public function fromId(int $id) : ?DyeColor{ return $this->idToEnum[$id]; } @@ -80,4 +99,8 @@ final class DyeColorIdMap{ public function fromInvertedId(int $id) : ?DyeColor{ return $this->fromId(~$id & 0xf); } + + public function fromItemId(string $itemId) : ?DyeColor{ + return $this->itemIdToEnum[$itemId] ?? null; + } } diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index d846b741b..bde907d4e 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -25,21 +25,12 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Block; use pocketmine\block\BlockFactory; -use pocketmine\block\utils\DyeColor; -use pocketmine\block\utils\SkullType; -use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\block\convert\UnsupportedBlockStateException; -use pocketmine\data\bedrock\CompoundTypeIds; -use pocketmine\data\bedrock\DyeColorIdMap; -use pocketmine\data\bedrock\item\ItemTypeNames as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; -use pocketmine\data\bedrock\PotionTypeIdMap; -use pocketmine\data\bedrock\SuspiciousStewTypeIdMap; use pocketmine\item\Durable; use pocketmine\item\Item; -use pocketmine\item\VanillaItems as Items; use pocketmine\nbt\NbtException; use function min; @@ -53,7 +44,7 @@ final class ItemDeserializer{ public function __construct( private BlockStateDeserializer $blockStateDeserializer ){ - $this->registerDeserializers(); + new ItemSerializerDeserializerRegistrar($this, null); } /** @@ -119,484 +110,4 @@ final class ItemDeserializer{ return $itemStack; } - - private function registerSpecialBlockDeserializers() : void{ - $this->mapBlock(Ids::ACACIA_DOOR, fn() => Blocks::ACACIA_DOOR()); - $this->mapBlock(Ids::BIRCH_DOOR, fn() => Blocks::BIRCH_DOOR()); - $this->mapBlock(Ids::BREWING_STAND, fn() => Blocks::BREWING_STAND()); - $this->mapBlock(Ids::CAKE, fn() => Blocks::CAKE()); - $this->mapBlock(Ids::CAULDRON, fn() => Blocks::CAULDRON()); - $this->mapBlock(Ids::COMPARATOR, fn() => Blocks::REDSTONE_COMPARATOR()); - $this->mapBlock(Ids::CRIMSON_DOOR, fn() => Blocks::CRIMSON_DOOR()); - $this->mapBlock(Ids::DARK_OAK_DOOR, fn() => Blocks::DARK_OAK_DOOR()); - $this->mapBlock(Ids::FLOWER_POT, fn() => Blocks::FLOWER_POT()); - $this->mapBlock(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)); - $this->mapBlock(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)); - $this->mapBlock(Ids::HOPPER, fn() => Blocks::HOPPER()); - $this->mapBlock(Ids::IRON_DOOR, fn() => Blocks::IRON_DOOR()); - $this->mapBlock(Ids::JUNGLE_DOOR, fn() => Blocks::JUNGLE_DOOR()); - $this->mapBlock(Ids::MANGROVE_DOOR, fn() => Blocks::MANGROVE_DOOR()); - $this->mapBlock(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()); - $this->mapBlock(Ids::REPEATER, fn() => Blocks::REDSTONE_REPEATER()); - $this->mapBlock(Ids::SPRUCE_DOOR, fn() => Blocks::SPRUCE_DOOR()); - $this->mapBlock(Ids::SUGAR_CANE, fn() => Blocks::SUGARCANE()); - $this->mapBlock(Ids::WARPED_DOOR, fn() => Blocks::WARPED_DOOR()); - $this->mapBlock(Ids::WOODEN_DOOR, fn() => Blocks::OAK_DOOR()); - - $this->mapBlock(Ids::BED, function(Data $data) : Block{ - $meta = $data->getMeta(); - $color = DyeColorIdMap::getInstance()->fromId($meta); - if($color === null){ - throw new ItemTypeDeserializeException("Unknown bed meta $meta"); - } - return Blocks::BED()->setColor($color); - }); - $this->mapBlock(Ids::SKULL, function(Data $data) : Block{ - $meta = $data->getMeta(); - try{ - $skullType = SkullType::fromMagicNumber($meta); - }catch(\InvalidArgumentException $e){ - throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); - } - return Blocks::MOB_HEAD()->setSkullType($skullType); - }); - } - - private function registerDeserializers() : void{ - $this->registerSpecialBlockDeserializers(); - - $this->map(Ids::ACACIA_BOAT, fn() => Items::ACACIA_BOAT()); - $this->map(Ids::ACACIA_SIGN, fn() => Items::ACACIA_SIGN()); - //TODO: minecraft:agent_spawn_egg - //TODO: minecraft:allay_spawn_egg - $this->map(Ids::AMETHYST_SHARD, fn() => Items::AMETHYST_SHARD()); - $this->map(Ids::APPLE, fn() => Items::APPLE()); - //TODO: minecraft:armor_stand - $this->map(Ids::ARROW, function(Data $data) : Item{ - if($data->getMeta() === 0){ - return Items::ARROW(); - } - throw new ItemTypeDeserializeException("Tipped arrows are not implemented yet"); - }); - //TODO: minecraft:axolotl_bucket - //TODO: minecraft:axolotl_spawn_egg - $this->map(Ids::BAKED_POTATO, fn() => Items::BAKED_POTATO()); - //TODO: minecraft:balloon - $this->map(Ids::BANNER, function(Data $data) : Item{ - $meta = $data->getMeta(); - $color = DyeColorIdMap::getInstance()->fromInvertedId($meta); - if($color === null){ - throw new ItemTypeDeserializeException("Unknown banner meta $meta"); - } - return Items::BANNER()->setColor($color); - }); - //TODO: minecraft:banner_pattern - //TODO: minecraft:bat_spawn_egg - //TODO: minecraft:bee_spawn_egg - $this->map(Ids::BEEF, fn() => Items::RAW_BEEF()); - $this->map(Ids::BEETROOT, fn() => Items::BEETROOT()); - $this->map(Ids::BEETROOT_SEEDS, fn() => Items::BEETROOT_SEEDS()); - $this->map(Ids::BEETROOT_SOUP, fn() => Items::BEETROOT_SOUP()); - $this->map(Ids::BIRCH_BOAT, fn() => Items::BIRCH_BOAT()); - $this->map(Ids::BIRCH_SIGN, fn() => Items::BIRCH_SIGN()); - $this->map(Ids::BLACK_DYE, fn() => Items::DYE()->setColor(DyeColor::BLACK())); - $this->map(Ids::BLAZE_POWDER, fn() => Items::BLAZE_POWDER()); - $this->map(Ids::BLAZE_ROD, fn() => Items::BLAZE_ROD()); - //TODO: minecraft:blaze_spawn_egg - $this->map(Ids::BLEACH, fn() => Items::BLEACH()); - $this->map(Ids::BLUE_DYE, fn() => Items::DYE()->setColor(DyeColor::BLUE())); - $this->map(Ids::BONE, fn() => Items::BONE()); - $this->map(Ids::BONE_MEAL, fn() => Items::BONE_MEAL()); - $this->map(Ids::BOOK, fn() => Items::BOOK()); - //TODO: minecraft:bordure_indented_banner_pattern - $this->map(Ids::BOW, fn() => Items::BOW()); - $this->map(Ids::BOWL, fn() => Items::BOWL()); - $this->map(Ids::BREAD, fn() => Items::BREAD()); - $this->map(Ids::BRICK, fn() => Items::BRICK()); - $this->map(Ids::BROWN_DYE, fn() => Items::DYE()->setColor(DyeColor::BROWN())); - $this->map(Ids::BUCKET, fn() => Items::BUCKET()); - //TODO: minecraft:camera - //TODO: minecraft:campfire - $this->map(Ids::CARROT, fn() => Items::CARROT()); - //TODO: minecraft:carrot_on_a_stick - //TODO: minecraft:cat_spawn_egg - //TODO: minecraft:cave_spider_spawn_egg - //TODO: minecraft:chain - $this->map(Ids::CHAINMAIL_BOOTS, fn() => Items::CHAINMAIL_BOOTS()); - $this->map(Ids::CHAINMAIL_CHESTPLATE, fn() => Items::CHAINMAIL_CHESTPLATE()); - $this->map(Ids::CHAINMAIL_HELMET, fn() => Items::CHAINMAIL_HELMET()); - $this->map(Ids::CHAINMAIL_LEGGINGS, fn() => Items::CHAINMAIL_LEGGINGS()); - $this->map(Ids::CHARCOAL, fn() => Items::CHARCOAL()); - //TODO: minecraft:chest_minecart - $this->map(Ids::CHICKEN, fn() => Items::RAW_CHICKEN()); - //TODO: minecraft:chicken_spawn_egg - $this->map(Ids::CHORUS_FRUIT, fn() => Items::CHORUS_FRUIT()); - $this->map(Ids::CLAY_BALL, fn() => Items::CLAY()); - $this->map(Ids::CLOCK, fn() => Items::CLOCK()); - $this->map(Ids::COAL, fn() => Items::COAL()); - $this->map(Ids::COCOA_BEANS, fn() => Items::COCOA_BEANS()); - $this->map(Ids::COD, fn() => Items::RAW_FISH()); - //TODO: minecraft:cod_bucket - //TODO: minecraft:cod_spawn_egg - //TODO: minecraft:command_block_minecart - $this->map(Ids::COMPASS, fn() => Items::COMPASS()); - $this->map(Ids::COMPOUND, fn(Data $data) => match($data->getMeta()){ - CompoundTypeIds::SALT => Items::CHEMICAL_SALT(), - CompoundTypeIds::SODIUM_OXIDE => Items::CHEMICAL_SODIUM_OXIDE(), - CompoundTypeIds::SODIUM_HYDROXIDE => Items::CHEMICAL_SODIUM_HYDROXIDE(), - CompoundTypeIds::MAGNESIUM_NITRATE => Items::CHEMICAL_MAGNESIUM_NITRATE(), - CompoundTypeIds::IRON_SULPHIDE => Items::CHEMICAL_IRON_SULPHIDE(), - CompoundTypeIds::LITHIUM_HYDRIDE => Items::CHEMICAL_LITHIUM_HYDRIDE(), - CompoundTypeIds::SODIUM_HYDRIDE => Items::CHEMICAL_SODIUM_HYDRIDE(), - CompoundTypeIds::CALCIUM_BROMIDE => Items::CHEMICAL_CALCIUM_BROMIDE(), - CompoundTypeIds::MAGNESIUM_OXIDE => Items::CHEMICAL_MAGNESIUM_OXIDE(), - CompoundTypeIds::SODIUM_ACETATE => Items::CHEMICAL_SODIUM_ACETATE(), - CompoundTypeIds::LUMINOL => Items::CHEMICAL_LUMINOL(), - CompoundTypeIds::CHARCOAL => Items::CHEMICAL_CHARCOAL(), - CompoundTypeIds::SUGAR => Items::CHEMICAL_SUGAR(), - CompoundTypeIds::ALUMINIUM_OXIDE => Items::CHEMICAL_ALUMINIUM_OXIDE(), - CompoundTypeIds::BORON_TRIOXIDE => Items::CHEMICAL_BORON_TRIOXIDE(), - CompoundTypeIds::SOAP => Items::CHEMICAL_SOAP(), - CompoundTypeIds::POLYETHYLENE => Items::CHEMICAL_POLYETHYLENE(), - CompoundTypeIds::RUBBISH => Items::CHEMICAL_RUBBISH(), - CompoundTypeIds::MAGNESIUM_SALTS => Items::CHEMICAL_MAGNESIUM_SALTS(), - CompoundTypeIds::SULPHATE => Items::CHEMICAL_SULPHATE(), - CompoundTypeIds::BARIUM_SULPHATE => Items::CHEMICAL_BARIUM_SULPHATE(), - CompoundTypeIds::POTASSIUM_CHLORIDE => Items::CHEMICAL_POTASSIUM_CHLORIDE(), - CompoundTypeIds::MERCURIC_CHLORIDE => Items::CHEMICAL_MERCURIC_CHLORIDE(), - CompoundTypeIds::CERIUM_CHLORIDE => Items::CHEMICAL_CERIUM_CHLORIDE(), - CompoundTypeIds::TUNGSTEN_CHLORIDE => Items::CHEMICAL_TUNGSTEN_CHLORIDE(), - CompoundTypeIds::CALCIUM_CHLORIDE => Items::CHEMICAL_CALCIUM_CHLORIDE(), - CompoundTypeIds::WATER => Items::CHEMICAL_WATER(), - CompoundTypeIds::GLUE => Items::CHEMICAL_GLUE(), - CompoundTypeIds::HYPOCHLORITE => Items::CHEMICAL_HYPOCHLORITE(), - CompoundTypeIds::CRUDE_OIL => Items::CHEMICAL_CRUDE_OIL(), - CompoundTypeIds::LATEX => Items::CHEMICAL_LATEX(), - CompoundTypeIds::POTASSIUM_IODIDE => Items::CHEMICAL_POTASSIUM_IODIDE(), - CompoundTypeIds::SODIUM_FLUORIDE => Items::CHEMICAL_SODIUM_FLUORIDE(), - CompoundTypeIds::BENZENE => Items::CHEMICAL_BENZENE(), - CompoundTypeIds::INK => Items::CHEMICAL_INK(), - CompoundTypeIds::HYDROGEN_PEROXIDE => Items::CHEMICAL_HYDROGEN_PEROXIDE(), - CompoundTypeIds::AMMONIA => Items::CHEMICAL_AMMONIA(), - CompoundTypeIds::SODIUM_HYPOCHLORITE => Items::CHEMICAL_SODIUM_HYPOCHLORITE(), - default => throw new ItemTypeDeserializeException("Unknown chemical meta " . $data->getMeta()) - }); - $this->map(Ids::COOKED_BEEF, fn() => Items::STEAK()); - $this->map(Ids::COOKED_CHICKEN, fn() => Items::COOKED_CHICKEN()); - $this->map(Ids::COOKED_COD, fn() => Items::COOKED_FISH()); - $this->map(Ids::COOKED_MUTTON, fn() => Items::COOKED_MUTTON()); - $this->map(Ids::COOKED_PORKCHOP, fn() => Items::COOKED_PORKCHOP()); - $this->map(Ids::COOKED_RABBIT, fn() => Items::COOKED_RABBIT()); - $this->map(Ids::COOKED_SALMON, fn() => Items::COOKED_SALMON()); - $this->map(Ids::COOKIE, fn() => Items::COOKIE()); - $this->map(Ids::COPPER_INGOT, fn() => Items::COPPER_INGOT()); - //TODO: minecraft:cow_spawn_egg - //TODO: minecraft:creeper_banner_pattern - //TODO: minecraft:creeper_spawn_egg - $this->map(Ids::CRIMSON_SIGN, fn() => Items::CRIMSON_SIGN()); - //TODO: minecraft:crossbow - $this->map(Ids::CYAN_DYE, fn() => Items::DYE()->setColor(DyeColor::CYAN())); - $this->map(Ids::DARK_OAK_BOAT, fn() => Items::DARK_OAK_BOAT()); - $this->map(Ids::DARK_OAK_SIGN, fn() => Items::DARK_OAK_SIGN()); - $this->map(Ids::DIAMOND, fn() => Items::DIAMOND()); - $this->map(Ids::DIAMOND_AXE, fn() => Items::DIAMOND_AXE()); - $this->map(Ids::DIAMOND_BOOTS, fn() => Items::DIAMOND_BOOTS()); - $this->map(Ids::DIAMOND_CHESTPLATE, fn() => Items::DIAMOND_CHESTPLATE()); - $this->map(Ids::DIAMOND_HELMET, fn() => Items::DIAMOND_HELMET()); - $this->map(Ids::DIAMOND_HOE, fn() => Items::DIAMOND_HOE()); - //TODO: minecraft:diamond_horse_armor - $this->map(Ids::DIAMOND_LEGGINGS, fn() => Items::DIAMOND_LEGGINGS()); - $this->map(Ids::DIAMOND_PICKAXE, fn() => Items::DIAMOND_PICKAXE()); - $this->map(Ids::DIAMOND_SHOVEL, fn() => Items::DIAMOND_SHOVEL()); - $this->map(Ids::DIAMOND_SWORD, fn() => Items::DIAMOND_SWORD()); - $this->map(Ids::DISC_FRAGMENT_5, fn() => Items::DISC_FRAGMENT_5()); - //TODO: minecraft:dolphin_spawn_egg - //TODO: minecraft:donkey_spawn_egg - $this->map(Ids::DRAGON_BREATH, fn() => Items::DRAGON_BREATH()); - $this->map(Ids::DRIED_KELP, fn() => Items::DRIED_KELP()); - //TODO: minecraft:drowned_spawn_egg - $this->map(Ids::ECHO_SHARD, fn() => Items::ECHO_SHARD()); - $this->map(Ids::EGG, fn() => Items::EGG()); - //TODO: minecraft:elder_guardian_spawn_egg - //TODO: minecraft:elytra - $this->map(Ids::EMERALD, fn() => Items::EMERALD()); - //TODO: minecraft:empty_map - //TODO: minecraft:enchanted_book - $this->map(Ids::ENCHANTED_GOLDEN_APPLE, fn() => Items::ENCHANTED_GOLDEN_APPLE()); - //TODO: minecraft:end_crystal - //TODO: minecraft:ender_eye - $this->map(Ids::ENDER_PEARL, fn() => Items::ENDER_PEARL()); - //TODO: minecraft:enderman_spawn_egg - //TODO: minecraft:endermite_spawn_egg - //TODO: minecraft:evoker_spawn_egg - $this->map(Ids::EXPERIENCE_BOTTLE, fn() => Items::EXPERIENCE_BOTTLE()); - $this->map(Ids::FEATHER, fn() => Items::FEATHER()); - $this->map(Ids::FERMENTED_SPIDER_EYE, fn() => Items::FERMENTED_SPIDER_EYE()); - //TODO: minecraft:field_masoned_banner_pattern - //TODO: minecraft:filled_map - $this->map(Ids::FIRE_CHARGE, fn() => Items::FIRE_CHARGE()); - //TODO: minecraft:firefly_spawn_egg - //TODO: minecraft:firework_rocket - //TODO: minecraft:firework_star - $this->map(Ids::FISHING_ROD, fn() => Items::FISHING_ROD()); - $this->map(Ids::FLINT, fn() => Items::FLINT()); - $this->map(Ids::FLINT_AND_STEEL, fn() => Items::FLINT_AND_STEEL()); - //TODO: minecraft:flower_banner_pattern - //TODO: minecraft:fox_spawn_egg - //TODO: minecraft:frog_spawn_egg - //TODO: minecraft:ghast_spawn_egg - $this->map(Ids::GHAST_TEAR, fn() => Items::GHAST_TEAR()); - $this->map(Ids::GLASS_BOTTLE, fn() => Items::GLASS_BOTTLE()); - $this->map(Ids::GLISTERING_MELON_SLICE, fn() => Items::GLISTERING_MELON()); - //TODO: minecraft:globe_banner_pattern - //TODO: minecraft:glow_berries - $this->map(Ids::GLOW_INK_SAC, fn() => Items::GLOW_INK_SAC()); - //TODO: minecraft:glow_squid_spawn_egg - //TODO: minecraft:glow_stick - $this->map(Ids::GLOWSTONE_DUST, fn() => Items::GLOWSTONE_DUST()); - //TODO: minecraft:goat_horn - //TODO: minecraft:goat_spawn_egg - $this->map(Ids::GOLD_INGOT, fn() => Items::GOLD_INGOT()); - $this->map(Ids::GOLD_NUGGET, fn() => Items::GOLD_NUGGET()); - $this->map(Ids::GOLDEN_APPLE, fn() => Items::GOLDEN_APPLE()); - $this->map(Ids::GOLDEN_AXE, fn() => Items::GOLDEN_AXE()); - $this->map(Ids::GOLDEN_BOOTS, fn() => Items::GOLDEN_BOOTS()); - $this->map(Ids::GOLDEN_CARROT, fn() => Items::GOLDEN_CARROT()); - $this->map(Ids::GOLDEN_CHESTPLATE, fn() => Items::GOLDEN_CHESTPLATE()); - $this->map(Ids::GOLDEN_HELMET, fn() => Items::GOLDEN_HELMET()); - $this->map(Ids::GOLDEN_HOE, fn() => Items::GOLDEN_HOE()); - //TODO: minecraft:golden_horse_armor - $this->map(Ids::GOLDEN_LEGGINGS, fn() => Items::GOLDEN_LEGGINGS()); - $this->map(Ids::GOLDEN_PICKAXE, fn() => Items::GOLDEN_PICKAXE()); - $this->map(Ids::GOLDEN_SHOVEL, fn() => Items::GOLDEN_SHOVEL()); - $this->map(Ids::GOLDEN_SWORD, fn() => Items::GOLDEN_SWORD()); - $this->map(Ids::GRAY_DYE, fn() => Items::DYE()->setColor(DyeColor::GRAY())); - $this->map(Ids::GREEN_DYE, fn() => Items::DYE()->setColor(DyeColor::GREEN())); - //TODO: minecraft:guardian_spawn_egg - $this->map(Ids::GUNPOWDER, fn() => Items::GUNPOWDER()); - $this->map(Ids::HEART_OF_THE_SEA, fn() => Items::HEART_OF_THE_SEA()); - //TODO: minecraft:hoglin_spawn_egg - $this->map(Ids::HONEY_BOTTLE, fn() => Items::HONEY_BOTTLE()); - $this->map(Ids::HONEYCOMB, fn() => Items::HONEYCOMB()); - //TODO: minecraft:hopper_minecart - //TODO: minecraft:horse_spawn_egg - //TODO: minecraft:husk_spawn_egg - //TODO: minecraft:ice_bomb - $this->map(Ids::INK_SAC, fn() => Items::INK_SAC()); - $this->map(Ids::IRON_AXE, fn() => Items::IRON_AXE()); - $this->map(Ids::IRON_BOOTS, fn() => Items::IRON_BOOTS()); - $this->map(Ids::IRON_CHESTPLATE, fn() => Items::IRON_CHESTPLATE()); - $this->map(Ids::IRON_HELMET, fn() => Items::IRON_HELMET()); - $this->map(Ids::IRON_HOE, fn() => Items::IRON_HOE()); - //TODO: minecraft:iron_horse_armor - $this->map(Ids::IRON_INGOT, fn() => Items::IRON_INGOT()); - $this->map(Ids::IRON_LEGGINGS, fn() => Items::IRON_LEGGINGS()); - $this->map(Ids::IRON_NUGGET, fn() => Items::IRON_NUGGET()); - $this->map(Ids::IRON_PICKAXE, fn() => Items::IRON_PICKAXE()); - $this->map(Ids::IRON_SHOVEL, fn() => Items::IRON_SHOVEL()); - $this->map(Ids::IRON_SWORD, fn() => Items::IRON_SWORD()); - $this->map(Ids::JUNGLE_BOAT, fn() => Items::JUNGLE_BOAT()); - $this->map(Ids::JUNGLE_SIGN, fn() => Items::JUNGLE_SIGN()); - //TODO: minecraft:kelp - $this->map(Ids::LAPIS_LAZULI, fn() => Items::LAPIS_LAZULI()); - $this->map(Ids::LAVA_BUCKET, fn() => Items::LAVA_BUCKET()); - //TODO: minecraft:lead - $this->map(Ids::LEATHER, fn() => Items::LEATHER()); - $this->map(Ids::LEATHER_BOOTS, fn() => Items::LEATHER_BOOTS()); - $this->map(Ids::LEATHER_CHESTPLATE, fn() => Items::LEATHER_TUNIC()); - $this->map(Ids::LEATHER_HELMET, fn() => Items::LEATHER_CAP()); - //TODO: minecraft:leather_horse_armor - $this->map(Ids::LEATHER_LEGGINGS, fn() => Items::LEATHER_PANTS()); - $this->map(Ids::LIGHT_BLUE_DYE, fn() => Items::DYE()->setColor(DyeColor::LIGHT_BLUE())); - $this->map(Ids::LIGHT_GRAY_DYE, fn() => Items::DYE()->setColor(DyeColor::LIGHT_GRAY())); - $this->map(Ids::LIME_DYE, fn() => Items::DYE()->setColor(DyeColor::LIME())); - //TODO: minecraft:lingering_potion - //TODO: minecraft:llama_spawn_egg - //TODO: minecraft:lodestone_compass - $this->map(Ids::MAGENTA_DYE, fn() => Items::DYE()->setColor(DyeColor::MAGENTA())); - $this->map(Ids::MAGMA_CREAM, fn() => Items::MAGMA_CREAM()); - //TODO: minecraft:magma_cube_spawn_egg - $this->map(Ids::MANGROVE_SIGN, fn() => Items::MANGROVE_SIGN()); - //TODO: minecraft:medicine - $this->map(Ids::MELON_SEEDS, fn() => Items::MELON_SEEDS()); - $this->map(Ids::MELON_SLICE, fn() => Items::MELON()); - $this->map(Ids::MILK_BUCKET, fn() => Items::MILK_BUCKET()); - $this->map(Ids::MINECART, fn() => Items::MINECART()); - //TODO: minecraft:mojang_banner_pattern - //TODO: minecraft:mooshroom_spawn_egg - //TODO: minecraft:mule_spawn_egg - $this->map(Ids::MUSHROOM_STEW, fn() => Items::MUSHROOM_STEW()); - $this->map(Ids::MUSIC_DISC_11, fn() => Items::RECORD_11()); - $this->map(Ids::MUSIC_DISC_13, fn() => Items::RECORD_13()); - $this->map(Ids::MUSIC_DISC_BLOCKS, fn() => Items::RECORD_BLOCKS()); - $this->map(Ids::MUSIC_DISC_CAT, fn() => Items::RECORD_CAT()); - $this->map(Ids::MUSIC_DISC_CHIRP, fn() => Items::RECORD_CHIRP()); - $this->map(Ids::MUSIC_DISC_FAR, fn() => Items::RECORD_FAR()); - $this->map(Ids::MUSIC_DISC_MALL, fn() => Items::RECORD_MALL()); - $this->map(Ids::MUSIC_DISC_MELLOHI, fn() => Items::RECORD_MELLOHI()); - //TODO: minecraft:music_disc_otherside - //TODO: minecraft:music_disc_pigstep - $this->map(Ids::MUSIC_DISC_STAL, fn() => Items::RECORD_STAL()); - $this->map(Ids::MUSIC_DISC_STRAD, fn() => Items::RECORD_STRAD()); - $this->map(Ids::MUSIC_DISC_WAIT, fn() => Items::RECORD_WAIT()); - $this->map(Ids::MUSIC_DISC_WARD, fn() => Items::RECORD_WARD()); - $this->map(Ids::MUTTON, fn() => Items::RAW_MUTTON()); - //TODO: minecraft:name_tag - $this->map(Ids::NAUTILUS_SHELL, fn() => Items::NAUTILUS_SHELL()); - //TODO: minecraft:nether_sprouts - $this->map(Ids::NETHER_STAR, fn() => Items::NETHER_STAR()); - $this->map(Ids::NETHERBRICK, fn() => Items::NETHER_BRICK()); - $this->map(Ids::NETHERITE_AXE, fn() => Items::NETHERITE_AXE()); - $this->map(Ids::NETHERITE_BOOTS, fn() => Items::NETHERITE_BOOTS()); - $this->map(Ids::NETHERITE_CHESTPLATE, fn() => Items::NETHERITE_CHESTPLATE()); - $this->map(Ids::NETHERITE_HELMET, fn() => Items::NETHERITE_HELMET()); - $this->map(Ids::NETHERITE_HOE, fn() => Items::NETHERITE_HOE()); - $this->map(Ids::NETHERITE_INGOT, fn() => Items::NETHERITE_INGOT()); - $this->map(Ids::NETHERITE_LEGGINGS, fn() => Items::NETHERITE_LEGGINGS()); - $this->map(Ids::NETHERITE_PICKAXE, fn() => Items::NETHERITE_PICKAXE()); - $this->map(Ids::NETHERITE_SCRAP, fn() => Items::NETHERITE_SCRAP()); - $this->map(Ids::NETHERITE_SHOVEL, fn() => Items::NETHERITE_SHOVEL()); - $this->map(Ids::NETHERITE_SWORD, fn() => Items::NETHERITE_SWORD()); - //TODO: minecraft:npc_spawn_egg - $this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT()); - $this->map(Ids::OAK_SIGN, fn() => Items::OAK_SIGN()); - //TODO: minecraft:ocelot_spawn_egg - $this->map(Ids::ORANGE_DYE, fn() => Items::DYE()->setColor(DyeColor::ORANGE())); - $this->map(Ids::PAINTING, fn() => Items::PAINTING()); - //TODO: minecraft:panda_spawn_egg - $this->map(Ids::PAPER, fn() => Items::PAPER()); - //TODO: minecraft:parrot_spawn_egg - $this->map(Ids::PHANTOM_MEMBRANE, fn() => Items::PHANTOM_MEMBRANE()); - //TODO: minecraft:phantom_spawn_egg - //TODO: minecraft:pig_spawn_egg - //TODO: minecraft:piglin_banner_pattern - //TODO: minecraft:piglin_brute_spawn_egg - //TODO: minecraft:piglin_spawn_egg - //TODO: minecraft:pillager_spawn_egg - $this->map(Ids::PINK_DYE, fn() => Items::DYE()->setColor(DyeColor::PINK())); - $this->map(Ids::POISONOUS_POTATO, fn() => Items::POISONOUS_POTATO()); - //TODO: minecraft:polar_bear_spawn_egg - $this->map(Ids::POPPED_CHORUS_FRUIT, fn() => Items::POPPED_CHORUS_FRUIT()); - $this->map(Ids::PORKCHOP, fn() => Items::RAW_PORKCHOP()); - $this->map(Ids::POTATO, fn() => Items::POTATO()); - $this->map(Ids::POTION, function(Data $data) : Item{ - $meta = $data->getMeta(); - $potionType = PotionTypeIdMap::getInstance()->fromId($meta); - if($potionType === null){ - throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); - } - return Items::POTION()->setType($potionType); - }); - //TODO: minecraft:powder_snow_bucket - $this->map(Ids::PRISMARINE_CRYSTALS, fn() => Items::PRISMARINE_CRYSTALS()); - $this->map(Ids::PRISMARINE_SHARD, fn() => Items::PRISMARINE_SHARD()); - $this->map(Ids::PUFFERFISH, fn() => Items::PUFFERFISH()); - //TODO: minecraft:pufferfish_bucket - //TODO: minecraft:pufferfish_spawn_egg - $this->map(Ids::PUMPKIN_PIE, fn() => Items::PUMPKIN_PIE()); - $this->map(Ids::PUMPKIN_SEEDS, fn() => Items::PUMPKIN_SEEDS()); - $this->map(Ids::PURPLE_DYE, fn() => Items::DYE()->setColor(DyeColor::PURPLE())); - $this->map(Ids::QUARTZ, fn() => Items::NETHER_QUARTZ()); - $this->map(Ids::RABBIT, fn() => Items::RAW_RABBIT()); - $this->map(Ids::RABBIT_FOOT, fn() => Items::RABBIT_FOOT()); - $this->map(Ids::RABBIT_HIDE, fn() => Items::RABBIT_HIDE()); - //TODO: minecraft:rabbit_spawn_egg - $this->map(Ids::RABBIT_STEW, fn() => Items::RABBIT_STEW()); - //TODO: minecraft:rapid_fertilizer - //TODO: minecraft:ravager_spawn_egg - $this->map(Ids::RAW_COPPER, fn() => Items::RAW_COPPER()); - $this->map(Ids::RAW_GOLD, fn() => Items::RAW_GOLD()); - $this->map(Ids::RAW_IRON, fn() => Items::RAW_IRON()); - $this->map(Ids::RED_DYE, fn() => Items::DYE()->setColor(DyeColor::RED())); - $this->map(Ids::REDSTONE, fn() => Items::REDSTONE_DUST()); - $this->map(Ids::ROTTEN_FLESH, fn() => Items::ROTTEN_FLESH()); - //TODO: minecraft:saddle - $this->map(Ids::SALMON, fn() => Items::RAW_SALMON()); - //TODO: minecraft:salmon_bucket - //TODO: minecraft:salmon_spawn_egg - $this->map(Ids::SCUTE, fn() => Items::SCUTE()); - $this->map(Ids::SHEARS, fn() => Items::SHEARS()); - //TODO: minecraft:sheep_spawn_egg - //TODO: minecraft:shield - $this->map(Ids::SHULKER_SHELL, fn() => Items::SHULKER_SHELL()); - //TODO: minecraft:shulker_spawn_egg - //TODO: minecraft:silverfish_spawn_egg - //TODO: minecraft:skeleton_horse_spawn_egg - //TODO: minecraft:skeleton_spawn_egg - //TODO: minecraft:skull_banner_pattern - $this->map(Ids::SLIME_BALL, fn() => Items::SLIMEBALL()); - //TODO: minecraft:slime_spawn_egg - $this->map(Ids::SNOWBALL, fn() => Items::SNOWBALL()); - //TODO: minecraft:soul_campfire - //TODO: minecraft:sparkler - $this->map(Ids::SPIDER_EYE, fn() => Items::SPIDER_EYE()); - //TODO: minecraft:spider_spawn_egg - $this->map(Ids::SPLASH_POTION, function(Data $data) : Item{ - $meta = $data->getMeta(); - $potionType = PotionTypeIdMap::getInstance()->fromId($meta); - if($potionType === null){ - throw new ItemTypeDeserializeException("Unknown potion type ID $meta"); - } - return Items::SPLASH_POTION()->setType($potionType); - }); - $this->map(Ids::SPRUCE_BOAT, fn() => Items::SPRUCE_BOAT()); - $this->map(Ids::SPRUCE_SIGN, fn() => Items::SPRUCE_SIGN()); - $this->map(Ids::SPYGLASS, fn() => Items::SPYGLASS()); - $this->map(Ids::SQUID_SPAWN_EGG, fn() => Items::SQUID_SPAWN_EGG()); - $this->map(Ids::STICK, fn() => Items::STICK()); - $this->map(Ids::STONE_AXE, fn() => Items::STONE_AXE()); - $this->map(Ids::STONE_HOE, fn() => Items::STONE_HOE()); - $this->map(Ids::STONE_PICKAXE, fn() => Items::STONE_PICKAXE()); - $this->map(Ids::STONE_SHOVEL, fn() => Items::STONE_SHOVEL()); - $this->map(Ids::STONE_SWORD, fn() => Items::STONE_SWORD()); - //TODO: minecraft:stray_spawn_egg - //TODO: minecraft:strider_spawn_egg - $this->map(Ids::STRING, fn() => Items::STRING()); - $this->map(Ids::SUGAR, fn() => Items::SUGAR()); - $this->map(Ids::SUSPICIOUS_STEW, function(Data $data) : Item{ - $meta = $data->getMeta(); - $suspiciousStewType = SuspiciousStewTypeIdMap::getInstance()->fromId($meta); - if($suspiciousStewType === null){ - throw new ItemTypeDeserializeException("Unknown suspicious stew type ID $meta"); - } - return Items::SUSPICIOUS_STEW()->setType($suspiciousStewType); - }); - $this->map(Ids::SWEET_BERRIES, fn() => Items::SWEET_BERRIES()); - //TODO: minecraft:tadpole_bucket - //TODO: minecraft:tadpole_spawn_egg - //TODO: minecraft:tnt_minecart - $this->map(Ids::TOTEM_OF_UNDYING, fn() => Items::TOTEM()); - //TODO: minecraft:trident - $this->map(Ids::TROPICAL_FISH, fn() => Items::CLOWNFISH()); - //TODO: minecraft:tropical_fish_bucket - //TODO: minecraft:tropical_fish_spawn_egg - //TODO: minecraft:turtle_helmet - //TODO: minecraft:turtle_spawn_egg - //TODO: minecraft:vex_spawn_egg - $this->map(Ids::VILLAGER_SPAWN_EGG, fn() => Items::VILLAGER_SPAWN_EGG()); - //TODO: minecraft:vindicator_spawn_egg - //TODO: minecraft:wandering_trader_spawn_egg - //TODO: minecraft:warped_fungus_on_a_stick - $this->map(Ids::WARPED_SIGN, fn() => Items::WARPED_SIGN()); - $this->map(Ids::WATER_BUCKET, fn() => Items::WATER_BUCKET()); - $this->map(Ids::WHEAT, fn() => Items::WHEAT()); - $this->map(Ids::WHEAT_SEEDS, fn() => Items::WHEAT_SEEDS()); - $this->map(Ids::WHITE_DYE, fn() => Items::DYE()->setColor(DyeColor::WHITE())); - //TODO: minecraft:witch_spawn_egg - //TODO: minecraft:wither_skeleton_spawn_egg - //TODO: minecraft:wolf_spawn_egg - $this->map(Ids::WOODEN_AXE, fn() => Items::WOODEN_AXE()); - $this->map(Ids::WOODEN_HOE, fn() => Items::WOODEN_HOE()); - $this->map(Ids::WOODEN_PICKAXE, fn() => Items::WOODEN_PICKAXE()); - $this->map(Ids::WOODEN_SHOVEL, fn() => Items::WOODEN_SHOVEL()); - $this->map(Ids::WOODEN_SWORD, fn() => Items::WOODEN_SWORD()); - $this->map(Ids::WRITABLE_BOOK, fn() => Items::WRITABLE_BOOK()); - $this->map(Ids::WRITTEN_BOOK, fn() => Items::WRITTEN_BOOK()); - $this->map(Ids::YELLOW_DYE, fn() => Items::DYE()->setColor(DyeColor::YELLOW())); - //TODO: minecraft:zoglin_spawn_egg - //TODO: minecraft:zombie_horse_spawn_egg - //TODO: minecraft:zombie_pigman_spawn_egg - $this->map(Ids::ZOMBIE_SPAWN_EGG, fn() => Items::ZOMBIE_SPAWN_EGG()); - //TODO: minecraft:zombie_villager_spawn_egg - } } diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 6945eac5e..152334d75 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -23,28 +23,14 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; -use pocketmine\block\Bed; use pocketmine\block\Block; -use pocketmine\block\ItemFrame; -use pocketmine\block\Skull; -use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\block\BlockStateSerializer; -use pocketmine\data\bedrock\CompoundTypeIds; -use pocketmine\data\bedrock\DyeColorIdMap; -use pocketmine\data\bedrock\item\ItemTypeNames as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; -use pocketmine\data\bedrock\PotionTypeIdMap; -use pocketmine\data\bedrock\SuspiciousStewTypeIdMap; -use pocketmine\item\Banner; use pocketmine\item\CoralFan; -use pocketmine\item\Dye; use pocketmine\item\Item; use pocketmine\item\ItemBlock; -use pocketmine\item\Potion; -use pocketmine\item\SplashPotion; -use pocketmine\item\SuspiciousStew; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; use function class_parents; @@ -69,7 +55,8 @@ final class ItemSerializer{ public function __construct( private BlockStateSerializer $blockStateSerializer ){ - $this->registerSerializers(); + $this->registerSpecialBlockSerializers(); + new ItemSerializerDeserializerRegistrar(null, $this); } /** @@ -212,324 +199,10 @@ final class ItemSerializer{ return new Data($itemNameId, 0, $blockStateData); } - /** - * @phpstan-return \Closure() : Data - */ - private static function id(string $id) : \Closure{ - return fn() => new Data($id); - } - - /** - * @phpstan-return \Closure() : Data - */ - private static function chemical(int $type) : \Closure{ - return fn() => new Data(Ids::COMPOUND, $type); - } - private function registerSpecialBlockSerializers() : void{ - $this->mapBlock(Blocks::ACACIA_DOOR(), self::id(Ids::ACACIA_DOOR)); - $this->mapBlock(Blocks::BIRCH_DOOR(), self::id(Ids::BIRCH_DOOR)); - $this->mapBlock(Blocks::BREWING_STAND(), self::id(Ids::BREWING_STAND)); - $this->mapBlock(Blocks::CAKE(), self::id(Ids::CAKE)); - $this->mapBlock(Blocks::CAULDRON(), self::id(Ids::CAULDRON)); - $this->mapBlock(Blocks::CRIMSON_DOOR(), self::id(Ids::CRIMSON_DOOR)); - $this->mapBlock(Blocks::DARK_OAK_DOOR(), self::id(Ids::DARK_OAK_DOOR)); - $this->mapBlock(Blocks::FLOWER_POT(), self::id(Ids::FLOWER_POT)); - $this->mapBlock(Blocks::HOPPER(), self::id(Ids::HOPPER)); - $this->mapBlock(Blocks::IRON_DOOR(), self::id(Ids::IRON_DOOR)); - $this->mapBlock(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => new Data($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME)); - $this->mapBlock(Blocks::JUNGLE_DOOR(), self::id(Ids::JUNGLE_DOOR)); - $this->mapBlock(Blocks::MANGROVE_DOOR(), self::id(Ids::MANGROVE_DOOR)); - $this->mapBlock(Blocks::NETHER_WART(), self::id(Ids::NETHER_WART)); - $this->mapBlock(Blocks::OAK_DOOR(), self::id(Ids::WOODEN_DOOR)); - $this->mapBlock(Blocks::REDSTONE_COMPARATOR(), self::id(Ids::COMPARATOR)); - $this->mapBlock(Blocks::REDSTONE_REPEATER(), self::id(Ids::REPEATER)); - $this->mapBlock(Blocks::SPRUCE_DOOR(), self::id(Ids::SPRUCE_DOOR)); - $this->mapBlock(Blocks::SUGARCANE(), self::id(Ids::SUGAR_CANE)); - $this->mapBlock(Blocks::WARPED_DOOR(), self::id(Ids::WARPED_DOOR)); - - $this->mapBlock(Blocks::BED(), fn(Bed $block) => new Data(Ids::BED, DyeColorIdMap::getInstance()->toId($block->getColor()))); - $this->mapBlock(Blocks::MOB_HEAD(), fn(Skull $block) => new Data(Ids::SKULL, $block->getSkullType()->getMagicNumber())); - } - - private function registerSerializers() : void{ - $this->registerSpecialBlockSerializers(); - //these are encoded as regular blocks, but they have to be accounted for explicitly since they don't use ItemBlock //Bamboo->getBlock() returns BambooSapling :( $this->map(Items::BAMBOO(), fn() => $this->standardBlock(Blocks::BAMBOO())); $this->map(Items::CORAL_FAN(), fn(CoralFan $item) => $this->standardBlock($item->getBlock())); - - $this->map(Items::ACACIA_BOAT(), self::id(Ids::ACACIA_BOAT)); - $this->map(Items::ACACIA_SIGN(), self::id(Ids::ACACIA_SIGN)); - $this->map(Items::AMETHYST_SHARD(), self::id(Ids::AMETHYST_SHARD)); - $this->map(Items::APPLE(), self::id(Ids::APPLE)); - $this->map(Items::ARROW(), self::id(Ids::ARROW)); - $this->map(Items::BAKED_POTATO(), self::id(Ids::BAKED_POTATO)); - $this->map(Items::BANNER(), fn(Banner $item) => new Data(Ids::BANNER, DyeColorIdMap::getInstance()->toInvertedId($item->getColor()))); - $this->map(Items::BEETROOT(), self::id(Ids::BEETROOT)); - $this->map(Items::BEETROOT_SEEDS(), self::id(Ids::BEETROOT_SEEDS)); - $this->map(Items::BEETROOT_SOUP(), self::id(Ids::BEETROOT_SOUP)); - $this->map(Items::BIRCH_BOAT(), self::id(Ids::BIRCH_BOAT)); - $this->map(Items::BIRCH_SIGN(), self::id(Ids::BIRCH_SIGN)); - $this->map(Items::BLAZE_POWDER(), self::id(Ids::BLAZE_POWDER)); - $this->map(Items::BLAZE_ROD(), self::id(Ids::BLAZE_ROD)); - $this->map(Items::BLEACH(), self::id(Ids::BLEACH)); - $this->map(Items::BONE(), self::id(Ids::BONE)); - $this->map(Items::BONE_MEAL(), self::id(Ids::BONE_MEAL)); - $this->map(Items::BOOK(), self::id(Ids::BOOK)); - $this->map(Items::BOW(), self::id(Ids::BOW)); - $this->map(Items::BOWL(), self::id(Ids::BOWL)); - $this->map(Items::BREAD(), self::id(Ids::BREAD)); - $this->map(Items::BRICK(), self::id(Ids::BRICK)); - $this->map(Items::BUCKET(), self::id(Ids::BUCKET)); - $this->map(Items::CARROT(), self::id(Ids::CARROT)); - $this->map(Items::CHAINMAIL_BOOTS(), self::id(Ids::CHAINMAIL_BOOTS)); - $this->map(Items::CHAINMAIL_CHESTPLATE(), self::id(Ids::CHAINMAIL_CHESTPLATE)); - $this->map(Items::CHAINMAIL_HELMET(), self::id(Ids::CHAINMAIL_HELMET)); - $this->map(Items::CHAINMAIL_LEGGINGS(), self::id(Ids::CHAINMAIL_LEGGINGS)); - $this->map(Items::CHARCOAL(), self::id(Ids::CHARCOAL)); - $this->map(Items::CHEMICAL_ALUMINIUM_OXIDE(), self::chemical(CompoundTypeIds::ALUMINIUM_OXIDE)); - $this->map(Items::CHEMICAL_AMMONIA(), self::chemical(CompoundTypeIds::AMMONIA)); - $this->map(Items::CHEMICAL_BARIUM_SULPHATE(), self::chemical(CompoundTypeIds::BARIUM_SULPHATE)); - $this->map(Items::CHEMICAL_BENZENE(), self::chemical(CompoundTypeIds::BENZENE)); - $this->map(Items::CHEMICAL_BORON_TRIOXIDE(), self::chemical(CompoundTypeIds::BORON_TRIOXIDE)); - $this->map(Items::CHEMICAL_CALCIUM_BROMIDE(), self::chemical(CompoundTypeIds::CALCIUM_BROMIDE)); - $this->map(Items::CHEMICAL_CALCIUM_CHLORIDE(), self::chemical(CompoundTypeIds::CALCIUM_CHLORIDE)); - $this->map(Items::CHEMICAL_CERIUM_CHLORIDE(), self::chemical(CompoundTypeIds::CERIUM_CHLORIDE)); - $this->map(Items::CHEMICAL_CHARCOAL(), self::chemical(CompoundTypeIds::CHARCOAL)); - $this->map(Items::CHEMICAL_CRUDE_OIL(), self::chemical(CompoundTypeIds::CRUDE_OIL)); - $this->map(Items::CHEMICAL_GLUE(), self::chemical(CompoundTypeIds::GLUE)); - $this->map(Items::CHEMICAL_HYDROGEN_PEROXIDE(), self::chemical(CompoundTypeIds::HYDROGEN_PEROXIDE)); - $this->map(Items::CHEMICAL_HYPOCHLORITE(), self::chemical(CompoundTypeIds::HYPOCHLORITE)); - $this->map(Items::CHEMICAL_INK(), self::chemical(CompoundTypeIds::INK)); - $this->map(Items::CHEMICAL_IRON_SULPHIDE(), self::chemical(CompoundTypeIds::IRON_SULPHIDE)); - $this->map(Items::CHEMICAL_LATEX(), self::chemical(CompoundTypeIds::LATEX)); - $this->map(Items::CHEMICAL_LITHIUM_HYDRIDE(), self::chemical(CompoundTypeIds::LITHIUM_HYDRIDE)); - $this->map(Items::CHEMICAL_LUMINOL(), self::chemical(CompoundTypeIds::LUMINOL)); - $this->map(Items::CHEMICAL_MAGNESIUM_NITRATE(), self::chemical(CompoundTypeIds::MAGNESIUM_NITRATE)); - $this->map(Items::CHEMICAL_MAGNESIUM_OXIDE(), self::chemical(CompoundTypeIds::MAGNESIUM_OXIDE)); - $this->map(Items::CHEMICAL_MAGNESIUM_SALTS(), self::chemical(CompoundTypeIds::MAGNESIUM_SALTS)); - $this->map(Items::CHEMICAL_MERCURIC_CHLORIDE(), self::chemical(CompoundTypeIds::MERCURIC_CHLORIDE)); - $this->map(Items::CHEMICAL_POLYETHYLENE(), self::chemical(CompoundTypeIds::POLYETHYLENE)); - $this->map(Items::CHEMICAL_POTASSIUM_CHLORIDE(), self::chemical(CompoundTypeIds::POTASSIUM_CHLORIDE)); - $this->map(Items::CHEMICAL_POTASSIUM_IODIDE(), self::chemical(CompoundTypeIds::POTASSIUM_IODIDE)); - $this->map(Items::CHEMICAL_RUBBISH(), self::chemical(CompoundTypeIds::RUBBISH)); - $this->map(Items::CHEMICAL_SALT(), self::chemical(CompoundTypeIds::SALT)); - $this->map(Items::CHEMICAL_SOAP(), self::chemical(CompoundTypeIds::SOAP)); - $this->map(Items::CHEMICAL_SODIUM_ACETATE(), self::chemical(CompoundTypeIds::SODIUM_ACETATE)); - $this->map(Items::CHEMICAL_SODIUM_FLUORIDE(), self::chemical(CompoundTypeIds::SODIUM_FLUORIDE)); - $this->map(Items::CHEMICAL_SODIUM_HYDRIDE(), self::chemical(CompoundTypeIds::SODIUM_HYDRIDE)); - $this->map(Items::CHEMICAL_SODIUM_HYDROXIDE(), self::chemical(CompoundTypeIds::SODIUM_HYDROXIDE)); - $this->map(Items::CHEMICAL_SODIUM_HYPOCHLORITE(), self::chemical(CompoundTypeIds::SODIUM_HYPOCHLORITE)); - $this->map(Items::CHEMICAL_SODIUM_OXIDE(), self::chemical(CompoundTypeIds::SODIUM_OXIDE)); - $this->map(Items::CHEMICAL_SUGAR(), self::chemical(CompoundTypeIds::SUGAR)); - $this->map(Items::CHEMICAL_SULPHATE(), self::chemical(CompoundTypeIds::SULPHATE)); - $this->map(Items::CHEMICAL_TUNGSTEN_CHLORIDE(), self::chemical(CompoundTypeIds::TUNGSTEN_CHLORIDE)); - $this->map(Items::CHEMICAL_WATER(), self::chemical(CompoundTypeIds::WATER)); - $this->map(Items::CHORUS_FRUIT(), self::id(Ids::CHORUS_FRUIT)); - $this->map(Items::CLAY(), self::id(Ids::CLAY_BALL)); - $this->map(Items::CLOCK(), self::id(Ids::CLOCK)); - $this->map(Items::CLOWNFISH(), self::id(Ids::TROPICAL_FISH)); - $this->map(Items::COAL(), self::id(Ids::COAL)); - $this->map(Items::COCOA_BEANS(), self::id(Ids::COCOA_BEANS)); - $this->map(Items::COMPASS(), self::id(Ids::COMPASS)); - $this->map(Items::COOKED_CHICKEN(), self::id(Ids::COOKED_CHICKEN)); - $this->map(Items::COOKED_FISH(), self::id(Ids::COOKED_COD)); - $this->map(Items::COOKED_MUTTON(), self::id(Ids::COOKED_MUTTON)); - $this->map(Items::COOKED_PORKCHOP(), self::id(Ids::COOKED_PORKCHOP)); - $this->map(Items::COOKED_RABBIT(), self::id(Ids::COOKED_RABBIT)); - $this->map(Items::COOKED_SALMON(), self::id(Ids::COOKED_SALMON)); - $this->map(Items::COOKIE(), self::id(Ids::COOKIE)); - $this->map(Items::COPPER_INGOT(), self::id(Ids::COPPER_INGOT)); - $this->map(Items::CRIMSON_SIGN(), self::id(Ids::CRIMSON_SIGN)); - $this->map(Items::DARK_OAK_BOAT(), self::id(Ids::DARK_OAK_BOAT)); - $this->map(Items::DARK_OAK_SIGN(), self::id(Ids::DARK_OAK_SIGN)); - $this->map(Items::DIAMOND(), self::id(Ids::DIAMOND)); - $this->map(Items::DIAMOND_AXE(), self::id(Ids::DIAMOND_AXE)); - $this->map(Items::DIAMOND_BOOTS(), self::id(Ids::DIAMOND_BOOTS)); - $this->map(Items::DIAMOND_CHESTPLATE(), self::id(Ids::DIAMOND_CHESTPLATE)); - $this->map(Items::DIAMOND_HELMET(), self::id(Ids::DIAMOND_HELMET)); - $this->map(Items::DIAMOND_HOE(), self::id(Ids::DIAMOND_HOE)); - $this->map(Items::DIAMOND_LEGGINGS(), self::id(Ids::DIAMOND_LEGGINGS)); - $this->map(Items::DIAMOND_PICKAXE(), self::id(Ids::DIAMOND_PICKAXE)); - $this->map(Items::DIAMOND_SHOVEL(), self::id(Ids::DIAMOND_SHOVEL)); - $this->map(Items::DIAMOND_SWORD(), self::id(Ids::DIAMOND_SWORD)); - $this->map(Items::DISC_FRAGMENT_5(), self::id(Ids::DISC_FRAGMENT_5)); - $this->map(Items::DRAGON_BREATH(), self::id(Ids::DRAGON_BREATH)); - $this->map(Items::DRIED_KELP(), self::id(Ids::DRIED_KELP)); - $this->map(Items::DYE(), fn(Dye $item) => new Data(match($item->getColor()){ - DyeColor::BLACK() => Ids::BLACK_DYE, - DyeColor::BLUE() => Ids::BLUE_DYE, - DyeColor::BROWN() => Ids::BROWN_DYE, - DyeColor::CYAN() => Ids::CYAN_DYE, - DyeColor::GRAY() => Ids::GRAY_DYE, - DyeColor::GREEN() => Ids::GREEN_DYE, - DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_DYE, - DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_DYE, - DyeColor::LIME() => Ids::LIME_DYE, - DyeColor::MAGENTA() => Ids::MAGENTA_DYE, - DyeColor::ORANGE() => Ids::ORANGE_DYE, - DyeColor::PINK() => Ids::PINK_DYE, - DyeColor::PURPLE() => Ids::PURPLE_DYE, - DyeColor::RED() => Ids::RED_DYE, - DyeColor::WHITE() => Ids::WHITE_DYE, - DyeColor::YELLOW() => Ids::YELLOW_DYE, - default => throw new AssumptionFailedError("Unhandled dye color " . $item->getColor()->name()), - })); - $this->map(Items::ECHO_SHARD(), self::id(Ids::ECHO_SHARD)); - $this->map(Items::EGG(), self::id(Ids::EGG)); - $this->map(Items::EMERALD(), self::id(Ids::EMERALD)); - $this->map(Items::ENCHANTED_GOLDEN_APPLE(), self::id(Ids::ENCHANTED_GOLDEN_APPLE)); - $this->map(Items::ENDER_PEARL(), self::id(Ids::ENDER_PEARL)); - $this->map(Items::EXPERIENCE_BOTTLE(), self::id(Ids::EXPERIENCE_BOTTLE)); - $this->map(Items::FEATHER(), self::id(Ids::FEATHER)); - $this->map(Items::FERMENTED_SPIDER_EYE(), self::id(Ids::FERMENTED_SPIDER_EYE)); - $this->map(Items::FIRE_CHARGE(), self::id(Ids::FIRE_CHARGE)); - $this->map(Items::FISHING_ROD(), self::id(Ids::FISHING_ROD)); - $this->map(Items::FLINT(), self::id(Ids::FLINT)); - $this->map(Items::FLINT_AND_STEEL(), self::id(Ids::FLINT_AND_STEEL)); - $this->map(Items::GHAST_TEAR(), self::id(Ids::GHAST_TEAR)); - $this->map(Items::GLASS_BOTTLE(), self::id(Ids::GLASS_BOTTLE)); - $this->map(Items::GLISTERING_MELON(), self::id(Ids::GLISTERING_MELON_SLICE)); - $this->map(Items::GLOWSTONE_DUST(), self::id(Ids::GLOWSTONE_DUST)); - $this->map(Items::GLOW_INK_SAC(), self::id(Ids::GLOW_INK_SAC)); - $this->map(Items::GOLDEN_APPLE(), self::id(Ids::GOLDEN_APPLE)); - $this->map(Items::GOLDEN_AXE(), self::id(Ids::GOLDEN_AXE)); - $this->map(Items::GOLDEN_BOOTS(), self::id(Ids::GOLDEN_BOOTS)); - $this->map(Items::GOLDEN_CARROT(), self::id(Ids::GOLDEN_CARROT)); - $this->map(Items::GOLDEN_CHESTPLATE(), self::id(Ids::GOLDEN_CHESTPLATE)); - $this->map(Items::GOLDEN_HELMET(), self::id(Ids::GOLDEN_HELMET)); - $this->map(Items::GOLDEN_HOE(), self::id(Ids::GOLDEN_HOE)); - $this->map(Items::GOLDEN_LEGGINGS(), self::id(Ids::GOLDEN_LEGGINGS)); - $this->map(Items::GOLDEN_PICKAXE(), self::id(Ids::GOLDEN_PICKAXE)); - $this->map(Items::GOLDEN_SHOVEL(), self::id(Ids::GOLDEN_SHOVEL)); - $this->map(Items::GOLDEN_SWORD(), self::id(Ids::GOLDEN_SWORD)); - $this->map(Items::GOLD_INGOT(), self::id(Ids::GOLD_INGOT)); - $this->map(Items::GOLD_NUGGET(), self::id(Ids::GOLD_NUGGET)); - $this->map(Items::GUNPOWDER(), self::id(Ids::GUNPOWDER)); - $this->map(Items::HEART_OF_THE_SEA(), self::id(Ids::HEART_OF_THE_SEA)); - $this->map(Items::HONEYCOMB(), self::id(Ids::HONEYCOMB)); - $this->map(Items::HONEY_BOTTLE(), self::id(Ids::HONEY_BOTTLE)); - $this->map(Items::INK_SAC(), self::id(Ids::INK_SAC)); - $this->map(Items::IRON_AXE(), self::id(Ids::IRON_AXE)); - $this->map(Items::IRON_BOOTS(), self::id(Ids::IRON_BOOTS)); - $this->map(Items::IRON_CHESTPLATE(), self::id(Ids::IRON_CHESTPLATE)); - $this->map(Items::IRON_HELMET(), self::id(Ids::IRON_HELMET)); - $this->map(Items::IRON_HOE(), self::id(Ids::IRON_HOE)); - $this->map(Items::IRON_INGOT(), self::id(Ids::IRON_INGOT)); - $this->map(Items::IRON_LEGGINGS(), self::id(Ids::IRON_LEGGINGS)); - $this->map(Items::IRON_NUGGET(), self::id(Ids::IRON_NUGGET)); - $this->map(Items::IRON_PICKAXE(), self::id(Ids::IRON_PICKAXE)); - $this->map(Items::IRON_SHOVEL(), self::id(Ids::IRON_SHOVEL)); - $this->map(Items::IRON_SWORD(), self::id(Ids::IRON_SWORD)); - $this->map(Items::JUNGLE_BOAT(), self::id(Ids::JUNGLE_BOAT)); - $this->map(Items::JUNGLE_SIGN(), self::id(Ids::JUNGLE_SIGN)); - $this->map(Items::LAPIS_LAZULI(), self::id(Ids::LAPIS_LAZULI)); - $this->map(Items::LAVA_BUCKET(), self::id(Ids::LAVA_BUCKET)); - $this->map(Items::LEATHER(), self::id(Ids::LEATHER)); - $this->map(Items::LEATHER_BOOTS(), self::id(Ids::LEATHER_BOOTS)); - $this->map(Items::LEATHER_CAP(), self::id(Ids::LEATHER_HELMET)); - $this->map(Items::LEATHER_PANTS(), self::id(Ids::LEATHER_LEGGINGS)); - $this->map(Items::LEATHER_TUNIC(), self::id(Ids::LEATHER_CHESTPLATE)); - $this->map(Items::MAGMA_CREAM(), self::id(Ids::MAGMA_CREAM)); - $this->map(Items::MANGROVE_SIGN(), self::id(Ids::MANGROVE_SIGN)); - $this->map(Items::MELON(), self::id(Ids::MELON_SLICE)); - $this->map(Items::MELON_SEEDS(), self::id(Ids::MELON_SEEDS)); - $this->map(Items::MILK_BUCKET(), self::id(Ids::MILK_BUCKET)); - $this->map(Items::MINECART(), self::id(Ids::MINECART)); - $this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW)); - $this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL)); - $this->map(Items::NETHERITE_AXE(), self::id(Ids::NETHERITE_AXE)); - $this->map(Items::NETHERITE_BOOTS(), self::id(Ids::NETHERITE_BOOTS)); - $this->map(Items::NETHERITE_CHESTPLATE(), self::id(Ids::NETHERITE_CHESTPLATE)); - $this->map(Items::NETHERITE_HELMET(), self::id(Ids::NETHERITE_HELMET)); - $this->map(Items::NETHERITE_HOE(), self::id(Ids::NETHERITE_HOE)); - $this->map(Items::NETHERITE_INGOT(), self::id(Ids::NETHERITE_INGOT)); - $this->map(Items::NETHERITE_LEGGINGS(), self::id(Ids::NETHERITE_LEGGINGS)); - $this->map(Items::NETHERITE_PICKAXE(), self::id(Ids::NETHERITE_PICKAXE)); - $this->map(Items::NETHERITE_SCRAP(), self::id(Ids::NETHERITE_SCRAP)); - $this->map(Items::NETHERITE_SHOVEL(), self::id(Ids::NETHERITE_SHOVEL)); - $this->map(Items::NETHERITE_SWORD(), self::id(Ids::NETHERITE_SWORD)); - $this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK)); - $this->map(Items::NETHER_QUARTZ(), self::id(Ids::QUARTZ)); - $this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR)); - $this->map(Items::OAK_BOAT(), self::id(Ids::OAK_BOAT)); - $this->map(Items::OAK_SIGN(), self::id(Ids::OAK_SIGN)); - $this->map(Items::PAINTING(), self::id(Ids::PAINTING)); - $this->map(Items::PAPER(), self::id(Ids::PAPER)); - $this->map(Items::PHANTOM_MEMBRANE(), self::id(Ids::PHANTOM_MEMBRANE)); - $this->map(Items::POISONOUS_POTATO(), self::id(Ids::POISONOUS_POTATO)); - $this->map(Items::POPPED_CHORUS_FRUIT(), self::id(Ids::POPPED_CHORUS_FRUIT)); - $this->map(Items::POTATO(), self::id(Ids::POTATO)); - $this->map(Items::POTION(), fn(Potion $item) => new Data(Ids::POTION, PotionTypeIdMap::getInstance()->toId($item->getType()))); - $this->map(Items::PRISMARINE_CRYSTALS(), self::id(Ids::PRISMARINE_CRYSTALS)); - $this->map(Items::PRISMARINE_SHARD(), self::id(Ids::PRISMARINE_SHARD)); - $this->map(Items::PUFFERFISH(), self::id(Ids::PUFFERFISH)); - $this->map(Items::PUMPKIN_PIE(), self::id(Ids::PUMPKIN_PIE)); - $this->map(Items::PUMPKIN_SEEDS(), self::id(Ids::PUMPKIN_SEEDS)); - $this->map(Items::RABBIT_FOOT(), self::id(Ids::RABBIT_FOOT)); - $this->map(Items::RABBIT_HIDE(), self::id(Ids::RABBIT_HIDE)); - $this->map(Items::RABBIT_STEW(), self::id(Ids::RABBIT_STEW)); - $this->map(Items::RAW_BEEF(), self::id(Ids::BEEF)); - $this->map(Items::RAW_CHICKEN(), self::id(Ids::CHICKEN)); - $this->map(Items::RAW_COPPER(), self::id(Ids::RAW_COPPER)); - $this->map(Items::RAW_FISH(), self::id(Ids::COD)); - $this->map(Items::RAW_GOLD(), self::id(Ids::RAW_GOLD)); - $this->map(Items::RAW_IRON(), self::id(Ids::RAW_IRON)); - $this->map(Items::RAW_MUTTON(), self::id(Ids::MUTTON)); - $this->map(Items::RAW_PORKCHOP(), self::id(Ids::PORKCHOP)); - $this->map(Items::RAW_RABBIT(), self::id(Ids::RABBIT)); - $this->map(Items::RAW_SALMON(), self::id(Ids::SALMON)); - $this->map(Items::RECORD_11(), self::id(Ids::MUSIC_DISC_11)); - $this->map(Items::RECORD_13(), self::id(Ids::MUSIC_DISC_13)); - $this->map(Items::RECORD_BLOCKS(), self::id(Ids::MUSIC_DISC_BLOCKS)); - $this->map(Items::RECORD_CAT(), self::id(Ids::MUSIC_DISC_CAT)); - $this->map(Items::RECORD_CHIRP(), self::id(Ids::MUSIC_DISC_CHIRP)); - $this->map(Items::RECORD_FAR(), self::id(Ids::MUSIC_DISC_FAR)); - $this->map(Items::RECORD_MALL(), self::id(Ids::MUSIC_DISC_MALL)); - $this->map(Items::RECORD_MELLOHI(), self::id(Ids::MUSIC_DISC_MELLOHI)); - $this->map(Items::RECORD_STAL(), self::id(Ids::MUSIC_DISC_STAL)); - $this->map(Items::RECORD_STRAD(), self::id(Ids::MUSIC_DISC_STRAD)); - $this->map(Items::RECORD_WAIT(), self::id(Ids::MUSIC_DISC_WAIT)); - $this->map(Items::RECORD_WARD(), self::id(Ids::MUSIC_DISC_WARD)); - $this->map(Items::REDSTONE_DUST(), self::id(Ids::REDSTONE)); - $this->map(Items::ROTTEN_FLESH(), self::id(Ids::ROTTEN_FLESH)); - $this->map(Items::SCUTE(), self::id(Ids::SCUTE)); - $this->map(Items::SHEARS(), self::id(Ids::SHEARS)); - $this->map(Items::SHULKER_SHELL(), self::id(Ids::SHULKER_SHELL)); - $this->map(Items::SLIMEBALL(), self::id(Ids::SLIME_BALL)); - $this->map(Items::SNOWBALL(), self::id(Ids::SNOWBALL)); - $this->map(Items::SPIDER_EYE(), self::id(Ids::SPIDER_EYE)); - $this->map(Items::SPLASH_POTION(), fn(SplashPotion $item) => new Data(Ids::SPLASH_POTION, PotionTypeIdMap::getInstance()->toId($item->getType()))); - $this->map(Items::SPRUCE_BOAT(), self::id(Ids::SPRUCE_BOAT)); - $this->map(Items::SPRUCE_SIGN(), self::id(Ids::SPRUCE_SIGN)); - $this->map(Items::SPYGLASS(), self::id(Ids::SPYGLASS)); - $this->map(Items::SQUID_SPAWN_EGG(), self::id(Ids::SQUID_SPAWN_EGG)); - $this->map(Items::STEAK(), self::id(Ids::COOKED_BEEF)); - $this->map(Items::STICK(), self::id(Ids::STICK)); - $this->map(Items::STONE_AXE(), self::id(Ids::STONE_AXE)); - $this->map(Items::STONE_HOE(), self::id(Ids::STONE_HOE)); - $this->map(Items::STONE_PICKAXE(), self::id(Ids::STONE_PICKAXE)); - $this->map(Items::STONE_SHOVEL(), self::id(Ids::STONE_SHOVEL)); - $this->map(Items::STONE_SWORD(), self::id(Ids::STONE_SWORD)); - $this->map(Items::STRING(), self::id(Ids::STRING)); - $this->map(Items::SUGAR(), self::id(Ids::SUGAR)); - $this->map(Items::SUSPICIOUS_STEW(), fn(SuspiciousStew $item) => new Data(Ids::SUSPICIOUS_STEW, SuspiciousStewTypeIdMap::getInstance()->toId($item->getType()))); - $this->map(Items::SWEET_BERRIES(), self::id(Ids::SWEET_BERRIES)); - $this->map(Items::TOTEM(), self::id(Ids::TOTEM_OF_UNDYING)); - $this->map(Items::VILLAGER_SPAWN_EGG(), self::id(Ids::VILLAGER_SPAWN_EGG)); - $this->map(Items::WARPED_SIGN(), self::id(Ids::WARPED_SIGN)); - $this->map(Items::WATER_BUCKET(), self::id(Ids::WATER_BUCKET)); - $this->map(Items::WHEAT(), self::id(Ids::WHEAT)); - $this->map(Items::WHEAT_SEEDS(), self::id(Ids::WHEAT_SEEDS)); - $this->map(Items::WOODEN_AXE(), self::id(Ids::WOODEN_AXE)); - $this->map(Items::WOODEN_HOE(), self::id(Ids::WOODEN_HOE)); - $this->map(Items::WOODEN_PICKAXE(), self::id(Ids::WOODEN_PICKAXE)); - $this->map(Items::WOODEN_SHOVEL(), self::id(Ids::WOODEN_SHOVEL)); - $this->map(Items::WOODEN_SWORD(), self::id(Ids::WOODEN_SWORD)); - $this->map(Items::WRITABLE_BOOK(), self::id(Ids::WRITABLE_BOOK)); - $this->map(Items::WRITTEN_BOOK(), self::id(Ids::WRITTEN_BOOK)); - $this->map(Items::ZOMBIE_SPAWN_EGG(), self::id(Ids::ZOMBIE_SPAWN_EGG)); } } diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php new file mode 100644 index 000000000..62ab3d7f3 --- /dev/null +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -0,0 +1,517 @@ +register1to1BlockMappings(); + $this->register1to1ItemMappings(); + $this->register1to1BlockWithMetaMappings(); + $this->register1to1ItemWithMetaMappings(); + $this->register1ToNItemMappings(); + $this->registerMiscBlockMappings(); + $this->registerMiscItemMappings(); + } + + public function map1to1Item(string $id, Item $item) : void{ + $this->deserializer?->map($id, fn() => clone $item); + $this->serializer?->map($item, fn() => new Data($id)); + } + + /** + * @phpstan-template TItem of Item + * @phpstan-param TItem $item + * @phpstan-param \Closure(TItem, int) : void $deserializeMeta + * @phpstan-param \Closure(TItem) : int $serializeMeta + */ + public function map1to1ItemWithMeta(string $id, Item $item, \Closure $deserializeMeta, \Closure $serializeMeta) : void{ + $this->deserializer?->map($id, function(Data $data) use ($item, $deserializeMeta) : Item{ + $result = clone $item; + $deserializeMeta($result, $data->getMeta()); + return $result; + }); + $this->serializer?->map($item, function(Item $item) use ($id, $serializeMeta) : Data{ + /** @phpstan-var TItem $item */ + $meta = $serializeMeta($item); + return new Data($id, $meta); + }); + } + + public function map1to1Block(string $id, Block $block) : void{ + $this->deserializer?->mapBlock($id, fn() => $block); + $this->serializer?->mapBlock($block, fn() => new Data($id)); + } + + /** + * @phpstan-template TBlock of Block + * @phpstan-param TBlock $block + * @phpstan-param \Closure(TBlock, int) : void $deserializeMeta + * @phpstan-param \Closure(TBlock) : int $serializeMeta + */ + public function map1to1BlockWithMeta(string $id, Block $block, \Closure $deserializeMeta, \Closure $serializeMeta) : void{ + $this->deserializer?->mapBlock($id, function(Data $data) use ($block, $deserializeMeta) : Block{ + $result = clone $block; + $deserializeMeta($result, $data->getMeta()); + return $result; + }); + $this->serializer?->mapBlock($block, function(Block $block) use ($id, $serializeMeta) : Data{ + $meta = $serializeMeta($block); + return new Data($id, $meta); + }); + } + + /** + * @param Item[] $items + * @phpstan-param array $items + */ + public function map1ToNItem(string $id, array $items) : void{ + $this->deserializer?->map($id, function(Data $data) use ($items) : Item{ + $result = $items[$data->getMeta()] ?? null; + if($result === null){ + throw new ItemTypeDeserializeException("Unhandled meta value " . $data->getMeta() . " for item ID " . $data->getName()); + } + return clone $result; + }); + foreach($items as $meta => $item){ + $this->serializer?->map($item, fn() => new Data($id, $meta)); + } + } + + /** + * Registers mappings for item IDs which directly correspond to PocketMine-MP blockitems. + * Mappings here are only necessary when the item has a dedicated item ID; in these cases, the blockstate is not + * included in the itemstack, and the item ID may be different from the block ID. + */ + private function register1to1BlockMappings() : void{ + $this->map1to1Block(Ids::ACACIA_DOOR, Blocks::ACACIA_DOOR()); + $this->map1to1Block(Ids::BIRCH_DOOR, Blocks::BIRCH_DOOR()); + $this->map1to1Block(Ids::BREWING_STAND, Blocks::BREWING_STAND()); + $this->map1to1Block(Ids::CAKE, Blocks::CAKE()); + $this->map1to1Block(Ids::CAULDRON, Blocks::CAULDRON()); + $this->map1to1Block(Ids::COMPARATOR, Blocks::REDSTONE_COMPARATOR()); + $this->map1to1Block(Ids::CRIMSON_DOOR, Blocks::CRIMSON_DOOR()); + $this->map1to1Block(Ids::DARK_OAK_DOOR, Blocks::DARK_OAK_DOOR()); + $this->map1to1Block(Ids::FLOWER_POT, Blocks::FLOWER_POT()); + $this->map1to1Block(Ids::HOPPER, Blocks::HOPPER()); + $this->map1to1Block(Ids::IRON_DOOR, Blocks::IRON_DOOR()); + $this->map1to1Block(Ids::JUNGLE_DOOR, Blocks::JUNGLE_DOOR()); + $this->map1to1Block(Ids::MANGROVE_DOOR, Blocks::MANGROVE_DOOR()); + $this->map1to1Block(Ids::NETHER_WART, Blocks::NETHER_WART()); + $this->map1to1Block(Ids::REPEATER, Blocks::REDSTONE_REPEATER()); + $this->map1to1Block(Ids::SPRUCE_DOOR, Blocks::SPRUCE_DOOR()); + $this->map1to1Block(Ids::SUGAR_CANE, Blocks::SUGARCANE()); + $this->map1to1Block(Ids::WARPED_DOOR, Blocks::WARPED_DOOR()); + $this->map1to1Block(Ids::WOODEN_DOOR, Blocks::OAK_DOOR()); + } + + /** + * Registers mappings for item IDs which directly correspond to PocketMine-MP items. + */ + private function register1to1ItemMappings() : void{ + $this->map1to1Item(Ids::ACACIA_BOAT, Items::ACACIA_BOAT()); + $this->map1to1Item(Ids::ACACIA_SIGN, Items::ACACIA_SIGN()); + $this->map1to1Item(Ids::AMETHYST_SHARD, Items::AMETHYST_SHARD()); + $this->map1to1Item(Ids::APPLE, Items::APPLE()); + $this->map1to1Item(Ids::BAKED_POTATO, Items::BAKED_POTATO()); + $this->map1to1Item(Ids::BEEF, Items::RAW_BEEF()); + $this->map1to1Item(Ids::BEETROOT, Items::BEETROOT()); + $this->map1to1Item(Ids::BEETROOT_SEEDS, Items::BEETROOT_SEEDS()); + $this->map1to1Item(Ids::BEETROOT_SOUP, Items::BEETROOT_SOUP()); + $this->map1to1Item(Ids::BIRCH_BOAT, Items::BIRCH_BOAT()); + $this->map1to1Item(Ids::BIRCH_SIGN, Items::BIRCH_SIGN()); + $this->map1to1Item(Ids::BLAZE_POWDER, Items::BLAZE_POWDER()); + $this->map1to1Item(Ids::BLAZE_ROD, Items::BLAZE_ROD()); + $this->map1to1Item(Ids::BLEACH, Items::BLEACH()); + $this->map1to1Item(Ids::BONE, Items::BONE()); + $this->map1to1Item(Ids::BONE_MEAL, Items::BONE_MEAL()); + $this->map1to1Item(Ids::BOOK, Items::BOOK()); + $this->map1to1Item(Ids::BOW, Items::BOW()); + $this->map1to1Item(Ids::BOWL, Items::BOWL()); + $this->map1to1Item(Ids::BREAD, Items::BREAD()); + $this->map1to1Item(Ids::BRICK, Items::BRICK()); + $this->map1to1Item(Ids::BUCKET, Items::BUCKET()); + $this->map1to1Item(Ids::CARROT, Items::CARROT()); + $this->map1to1Item(Ids::CHAINMAIL_BOOTS, Items::CHAINMAIL_BOOTS()); + $this->map1to1Item(Ids::CHAINMAIL_CHESTPLATE, Items::CHAINMAIL_CHESTPLATE()); + $this->map1to1Item(Ids::CHAINMAIL_HELMET, Items::CHAINMAIL_HELMET()); + $this->map1to1Item(Ids::CHAINMAIL_LEGGINGS, Items::CHAINMAIL_LEGGINGS()); + $this->map1to1Item(Ids::CHARCOAL, Items::CHARCOAL()); + $this->map1to1Item(Ids::CHICKEN, Items::RAW_CHICKEN()); + $this->map1to1Item(Ids::CHORUS_FRUIT, Items::CHORUS_FRUIT()); + $this->map1to1Item(Ids::CLAY_BALL, Items::CLAY()); + $this->map1to1Item(Ids::CLOCK, Items::CLOCK()); + $this->map1to1Item(Ids::COAL, Items::COAL()); + $this->map1to1Item(Ids::COCOA_BEANS, Items::COCOA_BEANS()); + $this->map1to1Item(Ids::COD, Items::RAW_FISH()); + $this->map1to1Item(Ids::COMPASS, Items::COMPASS()); + $this->map1to1Item(Ids::COOKED_BEEF, Items::STEAK()); + $this->map1to1Item(Ids::COOKED_CHICKEN, Items::COOKED_CHICKEN()); + $this->map1to1Item(Ids::COOKED_COD, Items::COOKED_FISH()); + $this->map1to1Item(Ids::COOKED_MUTTON, Items::COOKED_MUTTON()); + $this->map1to1Item(Ids::COOKED_PORKCHOP, Items::COOKED_PORKCHOP()); + $this->map1to1Item(Ids::COOKED_RABBIT, Items::COOKED_RABBIT()); + $this->map1to1Item(Ids::COOKED_SALMON, Items::COOKED_SALMON()); + $this->map1to1Item(Ids::COOKIE, Items::COOKIE()); + $this->map1to1Item(Ids::COPPER_INGOT, Items::COPPER_INGOT()); + $this->map1to1Item(Ids::CRIMSON_SIGN, Items::CRIMSON_SIGN()); + $this->map1to1Item(Ids::DARK_OAK_BOAT, Items::DARK_OAK_BOAT()); + $this->map1to1Item(Ids::DARK_OAK_SIGN, Items::DARK_OAK_SIGN()); + $this->map1to1Item(Ids::DIAMOND, Items::DIAMOND()); + $this->map1to1Item(Ids::DIAMOND_AXE, Items::DIAMOND_AXE()); + $this->map1to1Item(Ids::DIAMOND_BOOTS, Items::DIAMOND_BOOTS()); + $this->map1to1Item(Ids::DIAMOND_CHESTPLATE, Items::DIAMOND_CHESTPLATE()); + $this->map1to1Item(Ids::DIAMOND_HELMET, Items::DIAMOND_HELMET()); + $this->map1to1Item(Ids::DIAMOND_HOE, Items::DIAMOND_HOE()); + $this->map1to1Item(Ids::DIAMOND_LEGGINGS, Items::DIAMOND_LEGGINGS()); + $this->map1to1Item(Ids::DIAMOND_PICKAXE, Items::DIAMOND_PICKAXE()); + $this->map1to1Item(Ids::DIAMOND_SHOVEL, Items::DIAMOND_SHOVEL()); + $this->map1to1Item(Ids::DIAMOND_SWORD, Items::DIAMOND_SWORD()); + $this->map1to1Item(Ids::DISC_FRAGMENT_5, Items::DISC_FRAGMENT_5()); + $this->map1to1Item(Ids::DRAGON_BREATH, Items::DRAGON_BREATH()); + $this->map1to1Item(Ids::DRIED_KELP, Items::DRIED_KELP()); + $this->map1to1Item(Ids::ECHO_SHARD, Items::ECHO_SHARD()); + $this->map1to1Item(Ids::EGG, Items::EGG()); + $this->map1to1Item(Ids::EMERALD, Items::EMERALD()); + $this->map1to1Item(Ids::ENCHANTED_GOLDEN_APPLE, Items::ENCHANTED_GOLDEN_APPLE()); + $this->map1to1Item(Ids::ENDER_PEARL, Items::ENDER_PEARL()); + $this->map1to1Item(Ids::EXPERIENCE_BOTTLE, Items::EXPERIENCE_BOTTLE()); + $this->map1to1Item(Ids::FEATHER, Items::FEATHER()); + $this->map1to1Item(Ids::FERMENTED_SPIDER_EYE, Items::FERMENTED_SPIDER_EYE()); + $this->map1to1Item(Ids::FIRE_CHARGE, Items::FIRE_CHARGE()); + $this->map1to1Item(Ids::FISHING_ROD, Items::FISHING_ROD()); + $this->map1to1Item(Ids::FLINT, Items::FLINT()); + $this->map1to1Item(Ids::FLINT_AND_STEEL, Items::FLINT_AND_STEEL()); + $this->map1to1Item(Ids::GHAST_TEAR, Items::GHAST_TEAR()); + $this->map1to1Item(Ids::GLASS_BOTTLE, Items::GLASS_BOTTLE()); + $this->map1to1Item(Ids::GLISTERING_MELON_SLICE, Items::GLISTERING_MELON()); + $this->map1to1Item(Ids::GLOW_INK_SAC, Items::GLOW_INK_SAC()); + $this->map1to1Item(Ids::GLOWSTONE_DUST, Items::GLOWSTONE_DUST()); + $this->map1to1Item(Ids::GOLD_INGOT, Items::GOLD_INGOT()); + $this->map1to1Item(Ids::GOLD_NUGGET, Items::GOLD_NUGGET()); + $this->map1to1Item(Ids::GOLDEN_APPLE, Items::GOLDEN_APPLE()); + $this->map1to1Item(Ids::GOLDEN_AXE, Items::GOLDEN_AXE()); + $this->map1to1Item(Ids::GOLDEN_BOOTS, Items::GOLDEN_BOOTS()); + $this->map1to1Item(Ids::GOLDEN_CARROT, Items::GOLDEN_CARROT()); + $this->map1to1Item(Ids::GOLDEN_CHESTPLATE, Items::GOLDEN_CHESTPLATE()); + $this->map1to1Item(Ids::GOLDEN_HELMET, Items::GOLDEN_HELMET()); + $this->map1to1Item(Ids::GOLDEN_HOE, Items::GOLDEN_HOE()); + $this->map1to1Item(Ids::GOLDEN_LEGGINGS, Items::GOLDEN_LEGGINGS()); + $this->map1to1Item(Ids::GOLDEN_PICKAXE, Items::GOLDEN_PICKAXE()); + $this->map1to1Item(Ids::GOLDEN_SHOVEL, Items::GOLDEN_SHOVEL()); + $this->map1to1Item(Ids::GOLDEN_SWORD, Items::GOLDEN_SWORD()); + $this->map1to1Item(Ids::GUNPOWDER, Items::GUNPOWDER()); + $this->map1to1Item(Ids::HEART_OF_THE_SEA, Items::HEART_OF_THE_SEA()); + $this->map1to1Item(Ids::HONEY_BOTTLE, Items::HONEY_BOTTLE()); + $this->map1to1Item(Ids::HONEYCOMB, Items::HONEYCOMB()); + $this->map1to1Item(Ids::INK_SAC, Items::INK_SAC()); + $this->map1to1Item(Ids::IRON_AXE, Items::IRON_AXE()); + $this->map1to1Item(Ids::IRON_BOOTS, Items::IRON_BOOTS()); + $this->map1to1Item(Ids::IRON_CHESTPLATE, Items::IRON_CHESTPLATE()); + $this->map1to1Item(Ids::IRON_HELMET, Items::IRON_HELMET()); + $this->map1to1Item(Ids::IRON_HOE, Items::IRON_HOE()); + $this->map1to1Item(Ids::IRON_INGOT, Items::IRON_INGOT()); + $this->map1to1Item(Ids::IRON_LEGGINGS, Items::IRON_LEGGINGS()); + $this->map1to1Item(Ids::IRON_NUGGET, Items::IRON_NUGGET()); + $this->map1to1Item(Ids::IRON_PICKAXE, Items::IRON_PICKAXE()); + $this->map1to1Item(Ids::IRON_SHOVEL, Items::IRON_SHOVEL()); + $this->map1to1Item(Ids::IRON_SWORD, Items::IRON_SWORD()); + $this->map1to1Item(Ids::JUNGLE_BOAT, Items::JUNGLE_BOAT()); + $this->map1to1Item(Ids::JUNGLE_SIGN, Items::JUNGLE_SIGN()); + $this->map1to1Item(Ids::LAPIS_LAZULI, Items::LAPIS_LAZULI()); + $this->map1to1Item(Ids::LAVA_BUCKET, Items::LAVA_BUCKET()); + $this->map1to1Item(Ids::LEATHER, Items::LEATHER()); + $this->map1to1Item(Ids::LEATHER_BOOTS, Items::LEATHER_BOOTS()); + $this->map1to1Item(Ids::LEATHER_CHESTPLATE, Items::LEATHER_TUNIC()); + $this->map1to1Item(Ids::LEATHER_HELMET, Items::LEATHER_CAP()); + $this->map1to1Item(Ids::LEATHER_LEGGINGS, Items::LEATHER_PANTS()); + $this->map1to1Item(Ids::MAGMA_CREAM, Items::MAGMA_CREAM()); + $this->map1to1Item(Ids::MANGROVE_SIGN, Items::MANGROVE_SIGN()); + $this->map1to1Item(Ids::MELON_SEEDS, Items::MELON_SEEDS()); + $this->map1to1Item(Ids::MELON_SLICE, Items::MELON()); + $this->map1to1Item(Ids::MILK_BUCKET, Items::MILK_BUCKET()); + $this->map1to1Item(Ids::MINECART, Items::MINECART()); + $this->map1to1Item(Ids::MUSHROOM_STEW, Items::MUSHROOM_STEW()); + $this->map1to1Item(Ids::MUSIC_DISC_11, Items::RECORD_11()); + $this->map1to1Item(Ids::MUSIC_DISC_13, Items::RECORD_13()); + $this->map1to1Item(Ids::MUSIC_DISC_BLOCKS, Items::RECORD_BLOCKS()); + $this->map1to1Item(Ids::MUSIC_DISC_CAT, Items::RECORD_CAT()); + $this->map1to1Item(Ids::MUSIC_DISC_CHIRP, Items::RECORD_CHIRP()); + $this->map1to1Item(Ids::MUSIC_DISC_FAR, Items::RECORD_FAR()); + $this->map1to1Item(Ids::MUSIC_DISC_MALL, Items::RECORD_MALL()); + $this->map1to1Item(Ids::MUSIC_DISC_MELLOHI, Items::RECORD_MELLOHI()); + $this->map1to1Item(Ids::MUSIC_DISC_STAL, Items::RECORD_STAL()); + $this->map1to1Item(Ids::MUSIC_DISC_STRAD, Items::RECORD_STRAD()); + $this->map1to1Item(Ids::MUSIC_DISC_WAIT, Items::RECORD_WAIT()); + $this->map1to1Item(Ids::MUSIC_DISC_WARD, Items::RECORD_WARD()); + $this->map1to1Item(Ids::MUTTON, Items::RAW_MUTTON()); + $this->map1to1Item(Ids::NAUTILUS_SHELL, Items::NAUTILUS_SHELL()); + $this->map1to1Item(Ids::NETHER_STAR, Items::NETHER_STAR()); + $this->map1to1Item(Ids::NETHERBRICK, Items::NETHER_BRICK()); + $this->map1to1Item(Ids::NETHERITE_AXE, Items::NETHERITE_AXE()); + $this->map1to1Item(Ids::NETHERITE_BOOTS, Items::NETHERITE_BOOTS()); + $this->map1to1Item(Ids::NETHERITE_CHESTPLATE, Items::NETHERITE_CHESTPLATE()); + $this->map1to1Item(Ids::NETHERITE_HELMET, Items::NETHERITE_HELMET()); + $this->map1to1Item(Ids::NETHERITE_HOE, Items::NETHERITE_HOE()); + $this->map1to1Item(Ids::NETHERITE_INGOT, Items::NETHERITE_INGOT()); + $this->map1to1Item(Ids::NETHERITE_LEGGINGS, Items::NETHERITE_LEGGINGS()); + $this->map1to1Item(Ids::NETHERITE_PICKAXE, Items::NETHERITE_PICKAXE()); + $this->map1to1Item(Ids::NETHERITE_SCRAP, Items::NETHERITE_SCRAP()); + $this->map1to1Item(Ids::NETHERITE_SHOVEL, Items::NETHERITE_SHOVEL()); + $this->map1to1Item(Ids::NETHERITE_SWORD, Items::NETHERITE_SWORD()); + $this->map1to1Item(Ids::OAK_BOAT, Items::OAK_BOAT()); + $this->map1to1Item(Ids::OAK_SIGN, Items::OAK_SIGN()); + $this->map1to1Item(Ids::PAINTING, Items::PAINTING()); + $this->map1to1Item(Ids::PAPER, Items::PAPER()); + $this->map1to1Item(Ids::PHANTOM_MEMBRANE, Items::PHANTOM_MEMBRANE()); + $this->map1to1Item(Ids::POISONOUS_POTATO, Items::POISONOUS_POTATO()); + $this->map1to1Item(Ids::POPPED_CHORUS_FRUIT, Items::POPPED_CHORUS_FRUIT()); + $this->map1to1Item(Ids::PORKCHOP, Items::RAW_PORKCHOP()); + $this->map1to1Item(Ids::POTATO, Items::POTATO()); + $this->map1to1Item(Ids::PRISMARINE_CRYSTALS, Items::PRISMARINE_CRYSTALS()); + $this->map1to1Item(Ids::PRISMARINE_SHARD, Items::PRISMARINE_SHARD()); + $this->map1to1Item(Ids::PUFFERFISH, Items::PUFFERFISH()); + $this->map1to1Item(Ids::PUMPKIN_PIE, Items::PUMPKIN_PIE()); + $this->map1to1Item(Ids::PUMPKIN_SEEDS, Items::PUMPKIN_SEEDS()); + $this->map1to1Item(Ids::QUARTZ, Items::NETHER_QUARTZ()); + $this->map1to1Item(Ids::RABBIT, Items::RAW_RABBIT()); + $this->map1to1Item(Ids::RABBIT_FOOT, Items::RABBIT_FOOT()); + $this->map1to1Item(Ids::RABBIT_HIDE, Items::RABBIT_HIDE()); + $this->map1to1Item(Ids::RABBIT_STEW, Items::RABBIT_STEW()); + $this->map1to1Item(Ids::RAW_COPPER, Items::RAW_COPPER()); + $this->map1to1Item(Ids::RAW_GOLD, Items::RAW_GOLD()); + $this->map1to1Item(Ids::RAW_IRON, Items::RAW_IRON()); + $this->map1to1Item(Ids::REDSTONE, Items::REDSTONE_DUST()); + $this->map1to1Item(Ids::ROTTEN_FLESH, Items::ROTTEN_FLESH()); + $this->map1to1Item(Ids::SALMON, Items::RAW_SALMON()); + $this->map1to1Item(Ids::SCUTE, Items::SCUTE()); + $this->map1to1Item(Ids::SHEARS, Items::SHEARS()); + $this->map1to1Item(Ids::SHULKER_SHELL, Items::SHULKER_SHELL()); + $this->map1to1Item(Ids::SLIME_BALL, Items::SLIMEBALL()); + $this->map1to1Item(Ids::SNOWBALL, Items::SNOWBALL()); + $this->map1to1Item(Ids::SPIDER_EYE, Items::SPIDER_EYE()); + $this->map1to1Item(Ids::SPRUCE_BOAT, Items::SPRUCE_BOAT()); + $this->map1to1Item(Ids::SPRUCE_SIGN, Items::SPRUCE_SIGN()); + $this->map1to1Item(Ids::SPYGLASS, Items::SPYGLASS()); + $this->map1to1Item(Ids::SQUID_SPAWN_EGG, Items::SQUID_SPAWN_EGG()); + $this->map1to1Item(Ids::STICK, Items::STICK()); + $this->map1to1Item(Ids::STONE_AXE, Items::STONE_AXE()); + $this->map1to1Item(Ids::STONE_HOE, Items::STONE_HOE()); + $this->map1to1Item(Ids::STONE_PICKAXE, Items::STONE_PICKAXE()); + $this->map1to1Item(Ids::STONE_SHOVEL, Items::STONE_SHOVEL()); + $this->map1to1Item(Ids::STONE_SWORD, Items::STONE_SWORD()); + $this->map1to1Item(Ids::STRING, Items::STRING()); + $this->map1to1Item(Ids::SUGAR, Items::SUGAR()); + $this->map1to1Item(Ids::SWEET_BERRIES, Items::SWEET_BERRIES()); + $this->map1to1Item(Ids::TOTEM_OF_UNDYING, Items::TOTEM()); + $this->map1to1Item(Ids::TROPICAL_FISH, Items::CLOWNFISH()); + $this->map1to1Item(Ids::VILLAGER_SPAWN_EGG, Items::VILLAGER_SPAWN_EGG()); + $this->map1to1Item(Ids::WARPED_SIGN, Items::WARPED_SIGN()); + $this->map1to1Item(Ids::WATER_BUCKET, Items::WATER_BUCKET()); + $this->map1to1Item(Ids::WHEAT, Items::WHEAT()); + $this->map1to1Item(Ids::WHEAT_SEEDS, Items::WHEAT_SEEDS()); + $this->map1to1Item(Ids::WOODEN_AXE, Items::WOODEN_AXE()); + $this->map1to1Item(Ids::WOODEN_HOE, Items::WOODEN_HOE()); + $this->map1to1Item(Ids::WOODEN_PICKAXE, Items::WOODEN_PICKAXE()); + $this->map1to1Item(Ids::WOODEN_SHOVEL, Items::WOODEN_SHOVEL()); + $this->map1to1Item(Ids::WOODEN_SWORD, Items::WOODEN_SWORD()); + $this->map1to1Item(Ids::WRITABLE_BOOK, Items::WRITABLE_BOOK()); + $this->map1to1Item(Ids::WRITTEN_BOOK, Items::WRITTEN_BOOK()); + $this->map1to1Item(Ids::ZOMBIE_SPAWN_EGG, Items::ZOMBIE_SPAWN_EGG()); + } + + /** + * Registers mappings for item IDs which map to different PocketMine-MP item types, depending on their meta + * values. + * This can only be used if the target item type doesn't require any additional properties, since the items are + * indexed by their base type ID. + */ + private function register1ToNItemMappings() : void{ + $this->map1ToNItem(Ids::ARROW, [ + 0 => Items::ARROW(), + //TODO: tipped arrows + ]); + $this->map1ToNItem(Ids::COMPOUND, [ + CompoundTypeIds::SALT => Items::CHEMICAL_SALT(), + CompoundTypeIds::SODIUM_OXIDE => Items::CHEMICAL_SODIUM_OXIDE(), + CompoundTypeIds::SODIUM_HYDROXIDE => Items::CHEMICAL_SODIUM_HYDROXIDE(), + CompoundTypeIds::MAGNESIUM_NITRATE => Items::CHEMICAL_MAGNESIUM_NITRATE(), + CompoundTypeIds::IRON_SULPHIDE => Items::CHEMICAL_IRON_SULPHIDE(), + CompoundTypeIds::LITHIUM_HYDRIDE => Items::CHEMICAL_LITHIUM_HYDRIDE(), + CompoundTypeIds::SODIUM_HYDRIDE => Items::CHEMICAL_SODIUM_HYDRIDE(), + CompoundTypeIds::CALCIUM_BROMIDE => Items::CHEMICAL_CALCIUM_BROMIDE(), + CompoundTypeIds::MAGNESIUM_OXIDE => Items::CHEMICAL_MAGNESIUM_OXIDE(), + CompoundTypeIds::SODIUM_ACETATE => Items::CHEMICAL_SODIUM_ACETATE(), + CompoundTypeIds::LUMINOL => Items::CHEMICAL_LUMINOL(), + CompoundTypeIds::CHARCOAL => Items::CHEMICAL_CHARCOAL(), + CompoundTypeIds::SUGAR => Items::CHEMICAL_SUGAR(), + CompoundTypeIds::ALUMINIUM_OXIDE => Items::CHEMICAL_ALUMINIUM_OXIDE(), + CompoundTypeIds::BORON_TRIOXIDE => Items::CHEMICAL_BORON_TRIOXIDE(), + CompoundTypeIds::SOAP => Items::CHEMICAL_SOAP(), + CompoundTypeIds::POLYETHYLENE => Items::CHEMICAL_POLYETHYLENE(), + CompoundTypeIds::RUBBISH => Items::CHEMICAL_RUBBISH(), + CompoundTypeIds::MAGNESIUM_SALTS => Items::CHEMICAL_MAGNESIUM_SALTS(), + CompoundTypeIds::SULPHATE => Items::CHEMICAL_SULPHATE(), + CompoundTypeIds::BARIUM_SULPHATE => Items::CHEMICAL_BARIUM_SULPHATE(), + CompoundTypeIds::POTASSIUM_CHLORIDE => Items::CHEMICAL_POTASSIUM_CHLORIDE(), + CompoundTypeIds::MERCURIC_CHLORIDE => Items::CHEMICAL_MERCURIC_CHLORIDE(), + CompoundTypeIds::CERIUM_CHLORIDE => Items::CHEMICAL_CERIUM_CHLORIDE(), + CompoundTypeIds::TUNGSTEN_CHLORIDE => Items::CHEMICAL_TUNGSTEN_CHLORIDE(), + CompoundTypeIds::CALCIUM_CHLORIDE => Items::CHEMICAL_CALCIUM_CHLORIDE(), + CompoundTypeIds::WATER => Items::CHEMICAL_WATER(), + CompoundTypeIds::GLUE => Items::CHEMICAL_GLUE(), + CompoundTypeIds::HYPOCHLORITE => Items::CHEMICAL_HYPOCHLORITE(), + CompoundTypeIds::CRUDE_OIL => Items::CHEMICAL_CRUDE_OIL(), + CompoundTypeIds::LATEX => Items::CHEMICAL_LATEX(), + CompoundTypeIds::POTASSIUM_IODIDE => Items::CHEMICAL_POTASSIUM_IODIDE(), + CompoundTypeIds::SODIUM_FLUORIDE => Items::CHEMICAL_SODIUM_FLUORIDE(), + CompoundTypeIds::BENZENE => Items::CHEMICAL_BENZENE(), + CompoundTypeIds::INK => Items::CHEMICAL_INK(), + CompoundTypeIds::HYDROGEN_PEROXIDE => Items::CHEMICAL_HYDROGEN_PEROXIDE(), + CompoundTypeIds::AMMONIA => Items::CHEMICAL_AMMONIA(), + CompoundTypeIds::SODIUM_HYPOCHLORITE => Items::CHEMICAL_SODIUM_HYPOCHLORITE(), + ]); + } + + /** + * Registers mappings for item IDs which map to single blockitems, and have meta values that alter their properties. + * TODO: try and make this less ugly; for the most part the logic is symmetrical, it's just difficult to write it + * in a unified manner. + */ + private function register1to1BlockWithMetaMappings() : void{ + $this->map1to1BlockWithMeta( + Ids::BED, + Blocks::BED(), + function(Bed $block, int $meta) : void{ + $block->setColor(DyeColorIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown bed color ID $meta")); + }, + fn(Bed $block) => DyeColorIdMap::getInstance()->toId($block->getColor()) + ); + $this->map1to1BlockWithMeta( + Ids::SKULL, + Blocks::MOB_HEAD(), + function(Skull $block, int $meta) : void{ + try{ + $skullType = SkullType::fromMagicNumber($meta); + }catch(\InvalidArgumentException $e){ + throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); + } + $block->setSkullType($skullType); + }, + fn(Skull $block) => $block->getSkullType()->getMagicNumber() + ); + } + + /** + * Registers mappings for item IDs which map to single items, and have meta values that alter their properties. + * TODO: try and make this less ugly; for the most part the logic is symmetrical, it's just difficult to write it + * in a unified manner. + */ + private function register1to1ItemWithMetaMappings() : void{ + $this->map1to1ItemWithMeta( + Ids::BANNER, + Items::BANNER(), + function(Banner $item, int $meta) : void{ + $item->setColor(DyeColorIdMap::getInstance()->fromInvertedId($meta) ?? throw new ItemTypeDeserializeException("Unknown banner meta $meta")); + }, + fn(Banner $item) => DyeColorIdMap::getInstance()->toInvertedId($item->getColor()) + ); + $this->map1to1ItemWithMeta( + Ids::POTION, + Items::POTION(), + function(Potion $item, int $meta) : void{ + $item->setType(PotionTypeIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown potion type ID $meta")); + }, + fn(Potion $item) => PotionTypeIdMap::getInstance()->toId($item->getType()) + ); + $this->map1to1ItemWithMeta( + Ids::SPLASH_POTION, + Items::SPLASH_POTION(), + function(SplashPotion $item, int $meta) : void{ + $item->setType(PotionTypeIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown potion type ID $meta")); + }, + fn(SplashPotion $item) => PotionTypeIdMap::getInstance()->toId($item->getType()) + ); + $this->map1to1ItemWithMeta( + Ids::SUSPICIOUS_STEW, + Items::SUSPICIOUS_STEW(), + function(SuspiciousStew $item, int $meta) : void{ + $item->setType(SuspiciousStewTypeIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown suspicious stew type ID $meta")); + }, + fn(SuspiciousStew $item) => SuspiciousStewTypeIdMap::getInstance()->toId($item->getType()) + ); + } + + /** + * Registers serializers and deserializers for blocks that don't fit any other pattern. + * Ideally we want to get rid of this completely, if possible. + * + * Most of these are single PocketMine-MP items which map to multiple IDs depending on their properties, which is + * complex to implement in a generic way. + */ + private function registerMiscBlockMappings() : void{ + $this->deserializer?->mapBlock(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $this->deserializer?->mapBlock(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)); + $this->serializer?->mapBlock(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => new Data($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME)); + } + + /** + * Registers serializers and deserializers for items that don't fit any other pattern. + * Ideally we want to get rid of this completely, if possible. + * + * Most of these are single PocketMine-MP items which map to multiple IDs depending on their properties, which is + * complex to implement in a generic way. + */ + private function registerMiscItemMappings() : void{ + foreach(DyeColor::getAll() as $color){ + $id = DyeColorIdMap::getInstance()->toItemId($color); + $this->deserializer?->map($id, fn() => Items::DYE()->setColor($color)); + } + $this->serializer?->map(Items::DYE(), fn(Dye $item) => new Data(DyeColorIdMap::getInstance()->toItemId($item->getColor()))); + } +} From 5c5d96d00b69015017110d6876656861b55e49de Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 Aug 2022 18:04:11 +0100 Subject: [PATCH 402/692] ItemBlock: remember fuel time, fireproof and max stack size this avoids repeatedly creating blocks for no reason when calling these methods. This does assume that these methods always return the same result for a given block type, but I think that's a fair enough assumption. --- src/item/ItemBlock.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index b923b9d7e..20504e8d0 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -38,10 +38,18 @@ final class ItemBlock extends Item{ private int $blockTypeId; private int $blockTypeData; + private int $fuelTime; + private bool $fireProof; + private int $maxStackSize; + public function __construct(Block $block){ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); $this->blockTypeId = $block->getTypeId(); $this->blockTypeData = $block->computeTypeData(); + + $this->fuelTime = $block->getFuelTime(); + $this->fireProof = $block->isFireProofAsItem(); + $this->maxStackSize = $block->getMaxStackSize(); } protected function encodeType(RuntimeDataWriter $w) : void{ @@ -60,14 +68,14 @@ final class ItemBlock extends Item{ } public function getFuelTime() : int{ - return $this->getBlock()->getFuelTime(); + return $this->fuelTime; } public function isFireProof() : bool{ - return $this->getBlock()->isFireProofAsItem(); + return $this->fireProof; } public function getMaxStackSize() : int{ - return $this->getBlock()->getMaxStackSize(); + return $this->maxStackSize; } } From d5762d3f4487772ffb6b7c77af4cd659585f6520 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 Aug 2022 19:18:30 +0100 Subject: [PATCH 403/692] Item: allow describing type data to a reader as well as a writer we don't currently need this, but it's better to have it in case we need it after PM5 release. This is also now consistent with blocks. --- src/item/Banner.php | 3 ++- src/item/CoralFan.php | 3 ++- src/item/Dye.php | 3 ++- src/item/Item.php | 5 +++-- src/item/ItemBlock.php | 3 ++- src/item/Potion.php | 3 ++- src/item/SplashPotion.php | 3 ++- src/item/SuspiciousStew.php | 3 ++- 8 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/item/Banner.php b/src/item/Banner.php index 80def9ad5..6cb91eb6a 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -29,6 +29,7 @@ use pocketmine\block\utils\BannerPatternLayer; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\BannerPatternTypeIdMap; use pocketmine\data\bedrock\DyeColorIdMap; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; @@ -63,7 +64,7 @@ class Banner extends ItemBlockWallOrFloor{ return $this; } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index acb8d3577..c3f23d2ca 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -27,6 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\VanillaBlocks; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -41,7 +42,7 @@ final class CoralFan extends Item{ parent::__construct($identifier, VanillaBlocks::CORAL_FAN()->getName()); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ //this is aliased to ensure a compile error in case the functions in Item or Block start to differ in future //right now we can directly reuse encodeType from CoralTypeTrait, but that might silently stop working if Item //were to be altered. CoralTypeTrait was originally intended for blocks, so it's better not to assume anything. diff --git a/src/item/Dye.php b/src/item/Dye.php index 6f550ae18..4a32983d8 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\utils\DyeColor; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; class Dye extends Item{ @@ -34,7 +35,7 @@ class Dye extends Item{ parent::__construct($identifier, $name); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/Item.php b/src/item/Item.php index 7170f4fab..32bf0ff44 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -32,6 +32,7 @@ use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; @@ -435,11 +436,11 @@ class Item implements \JsonSerializable{ final public function computeTypeData() : int{ $writer = new RuntimeDataWriter(16); //TODO: max bits should be a constant instead of being hardcoded all over the place - $this->encodeType($writer); + $this->describeType($writer); return $writer->getValue(); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ //NOOP } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 20504e8d0..0c50d0adb 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -26,6 +26,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\BlockFactory; use pocketmine\block\VanillaBlocks; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; /** @@ -52,7 +53,7 @@ final class ItemBlock extends Item{ $this->maxStackSize = $block->getMaxStackSize(); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); } diff --git a/src/item/Potion.php b/src/item/Potion.php index 5848dee47..1933c9909 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Living; use pocketmine\player\Player; @@ -36,7 +37,7 @@ class Potion extends Item implements ConsumableItem{ parent::__construct($identifier, $name); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index ca4023e6a..462b670b3 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Location; use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity; @@ -38,7 +39,7 @@ class SplashPotion extends ProjectileItem{ parent::__construct($identifier, $name); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/SuspiciousStew.php b/src/item/SuspiciousStew.php index e6b9895e0..8f5eb3e2d 100644 --- a/src/item/SuspiciousStew.php +++ b/src/item/SuspiciousStew.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; +use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; class SuspiciousStew extends Food{ @@ -34,7 +35,7 @@ class SuspiciousStew extends Food{ parent::__construct($identifier, $name); } - protected function encodeType(RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ $w->suspiciousStewType($this->suspiciousStewType); } From 2a982d48ad2056ac5aef3b7b930e2b6d751987b7 Mon Sep 17 00:00:00 2001 From: Alexey <45711510+Gaprix@users.noreply.github.com> Date: Sat, 17 Sep 2022 19:48:23 +0300 Subject: [PATCH 404/692] Do not always make the coral dead immediately after placement (#5149) --- src/block/BaseCoral.php | 35 ++++++++++++++++++++++------------- src/block/FloorCoralFan.php | 3 +++ src/block/WallCoralFan.php | 3 +++ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/block/BaseCoral.php b/src/block/BaseCoral.php index f1a5a9e79..37aab85f9 100644 --- a/src/block/BaseCoral.php +++ b/src/block/BaseCoral.php @@ -27,6 +27,7 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; +use function mt_rand; abstract class BaseCoral extends Transparent{ use CoralTypeTrait; @@ -38,20 +39,13 @@ abstract class BaseCoral extends Transparent{ public function onNearbyBlockChange() : void{ if(!$this->dead){ - $world = $this->position->getWorld(); + $this->position->getWorld()->scheduleDelayedBlockUpdate($this->position, mt_rand(40, 200)); + } + } - $hasWater = false; - foreach($this->position->sides() as $vector3){ - if($world->getBlock($vector3) instanceof Water){ - $hasWater = true; - break; - } - } - - //TODO: check water inside the block itself (not supported on the API yet) - if(!$hasWater){ - $world->setBlock($this->position, $this->setDead(true)); - } + public function onScheduledUpdate() : void{ + if(!$this->dead && !$this->isCoveredWithWater()){ + $this->position->getWorld()->setBlock($this->position, $this->setDead(true)); } } @@ -65,6 +59,21 @@ abstract class BaseCoral extends Transparent{ public function isSolid() : bool{ return false; } + protected function isCoveredWithWater() : bool{ + $world = $this->position->getWorld(); + + $hasWater = false; + foreach($this->position->sides() as $vector3){ + if($world->getBlock($vector3) instanceof Water){ + $hasWater = true; + break; + } + } + + //TODO: check water inside the block itself (not supported on the API yet) + return $hasWater; + } + protected function recalculateCollisionBoxes() : array{ return []; } public function getSupportType(int $facing) : SupportType{ diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 250fe0e4c..a9d53c119 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -70,6 +70,9 @@ final class FloorCoralFan extends BaseCoral{ $this->axis = Axis::Z; } } + + $this->dead = !$this->isCoveredWithWater(); + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index b678d80ed..5349f78f2 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -49,6 +49,9 @@ final class WallCoralFan extends BaseCoral{ return false; } $this->facing = $face; + + $this->dead = !$this->isCoveredWithWater(); + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } From c24370b8ac699806b8c8b8558747b35e955592a2 Mon Sep 17 00:00:00 2001 From: DavyCraft648 <67502532+DavyCraft648@users.noreply.github.com> Date: Fri, 23 Sep 2022 20:59:44 +0700 Subject: [PATCH 405/692] CraftingDataCache: Fix Cartography's recipe block name (#5302) --- src/network/mcpe/cache/CraftingDataCache.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 4856ba354..436c3ccf0 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -87,7 +87,7 @@ final class CraftingDataCache{ $typeTag = match($recipe->getType()->id()){ ShapelessRecipeType::CRAFTING()->id() => CraftingRecipeBlockName::CRAFTING_TABLE, ShapelessRecipeType::STONECUTTER()->id() => CraftingRecipeBlockName::STONECUTTER, - ShapelessRecipeType::CARTOGRAPHY()->id() => CraftingRecipeBlockName::SMITHING_TABLE, + ShapelessRecipeType::CARTOGRAPHY()->id() => CraftingRecipeBlockName::CARTOGRAPHY_TABLE, ShapelessRecipeType::SMITHING()->id() => CraftingRecipeBlockName::SMITHING_TABLE, default => throw new AssumptionFailedError("Unreachable"), }; From 590eb74703c072ab136b54c8ee1f9cd20a05e598 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 13:30:53 +0100 Subject: [PATCH 406/692] Make Block(De)Serializer much less nasty to interact with this makes it a lot less inconvenient to access the primary blockstate serializer/deserializer, which is necessary for registering new blocks. --- .../block/CachingBlockStateDeserializer.php | 51 ------------------- .../block/CachingBlockStateSerializer.php | 43 ---------------- .../DelegatingBlockStateDeserializer.php | 29 ----------- .../block/DelegatingBlockStateSerializer.php | 29 ----------- .../BlockObjectToBlockStateSerializer.php | 9 +++- .../BlockStateToBlockObjectDeserializer.php | 13 +++++ .../format/io/GlobalBlockStateHandlers.php | 16 +++--- 7 files changed, 27 insertions(+), 163 deletions(-) delete mode 100644 src/data/bedrock/block/CachingBlockStateDeserializer.php delete mode 100644 src/data/bedrock/block/CachingBlockStateSerializer.php delete mode 100644 src/data/bedrock/block/DelegatingBlockStateDeserializer.php delete mode 100644 src/data/bedrock/block/DelegatingBlockStateSerializer.php diff --git a/src/data/bedrock/block/CachingBlockStateDeserializer.php b/src/data/bedrock/block/CachingBlockStateDeserializer.php deleted file mode 100644 index 2078b7cc5..000000000 --- a/src/data/bedrock/block/CachingBlockStateDeserializer.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ - private array $simpleCache = []; - - public function __construct( - private BlockStateDeserializer $realDeserializer - ){} - - public function deserialize(BlockStateData $stateData) : int{ - if(count($stateData->getStates()) === 0){ - //if a block has zero properties, we can keep a map of string ID -> internal blockstate ID - return $this->simpleCache[$stateData->getName()] ??= $this->realDeserializer->deserialize($stateData); - } - - //we can't cache blocks that have properties - go ahead and deserialize the slow way - return $this->realDeserializer->deserialize($stateData); - } - - public function getRealDeserializer() : BlockStateDeserializer{ return $this->realDeserializer; } -} diff --git a/src/data/bedrock/block/CachingBlockStateSerializer.php b/src/data/bedrock/block/CachingBlockStateSerializer.php deleted file mode 100644 index f6129622d..000000000 --- a/src/data/bedrock/block/CachingBlockStateSerializer.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ - private array $cache = []; - - public function __construct( - private BlockStateSerializer $realSerializer - ){} - - public function serialize(int $stateId) : BlockStateData{ - return $this->cache[$stateId] ??= $this->realSerializer->serialize($stateId); - } - - public function getRealSerializer() : BlockStateSerializer{ return $this->realSerializer; } -} diff --git a/src/data/bedrock/block/DelegatingBlockStateDeserializer.php b/src/data/bedrock/block/DelegatingBlockStateDeserializer.php deleted file mode 100644 index 1844d44fc..000000000 --- a/src/data/bedrock/block/DelegatingBlockStateDeserializer.php +++ /dev/null @@ -1,29 +0,0 @@ - + */ + private array $cache = []; + public function __construct(){ $this->registerCandleSerializers(); $this->registerCauldronSerializers(); @@ -188,7 +194,8 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ public function serialize(int $stateId) : BlockStateData{ //TODO: singleton usage not ideal - return $this->serializeBlock(BlockFactory::getInstance()->fromStateId($stateId)); + //TODO: we may want to deduplicate cache entries to avoid wasting memory + return $this->cache[$stateId] ??= $this->serializeBlock(BlockFactory::getInstance()->fromStateId($stateId)); } /** diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index adb9fe368..14871be25 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -51,6 +51,7 @@ use pocketmine\data\bedrock\block\convert\BlockStateReader as Reader; use pocketmine\math\Axis; use pocketmine\math\Facing; use function array_key_exists; +use function count; use function min; final class BlockStateToBlockObjectDeserializer implements BlockStateDeserializer{ @@ -61,6 +62,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize */ private array $deserializeFuncs = []; + /** + * @var int[] + * @phpstan-var array + */ + private array $simpleCache = []; + public function __construct(){ $this->registerCandleDeserializers(); $this->registerCauldronDeserializers(); @@ -69,6 +76,12 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize } public function deserialize(BlockStateData $stateData) : int{ + if(count($stateData->getStates()) === 0){ + //if a block has zero properties, we can keep a map of string ID -> internal blockstate ID + return $this->simpleCache[$stateData->getName()] ??= $this->deserializeBlock($stateData)->getStateId(); + } + + //we can't cache blocks that have properties - go ahead and deserialize the slow way return $this->deserializeBlock($stateData)->getStateId(); } diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 195b9337a..49924f5ed 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -24,11 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\block\BlockStateDeserializer; -use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\data\bedrock\block\BlockTypeNames; -use pocketmine\data\bedrock\block\CachingBlockStateDeserializer; -use pocketmine\data\bedrock\block\CachingBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; use pocketmine\data\bedrock\block\convert\BlockStateToBlockObjectDeserializer; use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; @@ -49,20 +45,20 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; */ final class GlobalBlockStateHandlers{ - private static ?BlockStateSerializer $blockStateSerializer = null; + private static ?BlockObjectToBlockStateSerializer $blockStateSerializer = null; - private static ?BlockStateDeserializer $blockStateDeserializer = null; + private static ?BlockStateToBlockObjectDeserializer $blockStateDeserializer = null; private static ?BlockDataUpgrader $blockDataUpgrader = null; private static ?BlockStateData $unknownBlockStateData = null; - public static function getDeserializer() : BlockStateDeserializer{ - return self::$blockStateDeserializer ??= new CachingBlockStateDeserializer(new BlockStateToBlockObjectDeserializer()); + public static function getDeserializer() : BlockStateToBlockObjectDeserializer{ + return self::$blockStateDeserializer ??= new BlockStateToBlockObjectDeserializer(); } - public static function getSerializer() : BlockStateSerializer{ - return self::$blockStateSerializer ??= new CachingBlockStateSerializer(new BlockObjectToBlockStateSerializer()); + public static function getSerializer() : BlockObjectToBlockStateSerializer{ + return self::$blockStateSerializer ??= new BlockObjectToBlockStateSerializer(); } public static function getUpgrader() : BlockDataUpgrader{ From cf9610c710f1038753139cce304669db72881809 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 13:41:41 +0100 Subject: [PATCH 407/692] BlockStateToBlockObjectDeserializer: added mapSimple() for symmetry's sake this will also make it marginally easier to switch to a unified system. --- .../BlockStateToBlockObjectDeserializer.php | 505 +++++++++--------- 1 file changed, 255 insertions(+), 250 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php index 14871be25..e63ee2def 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php @@ -93,6 +93,11 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize $this->deserializeFuncs[$id] = $c; } + /** @phpstan-param \Closure() : Block $getBlock */ + public function mapSimple(string $id, \Closure $getBlock) : void{ + $this->map($id, $getBlock); + } + /** * @phpstan-param \Closure() : Slab $getBlock */ @@ -173,256 +178,256 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize } private function registerSimpleDeserializers() : void{ - $this->map(Ids::AIR, fn() => Blocks::AIR()); - $this->map(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); - $this->map(Ids::ANCIENT_DEBRIS, fn() => Blocks::ANCIENT_DEBRIS()); - $this->map(Ids::BARRIER, fn() => Blocks::BARRIER()); - $this->map(Ids::BEACON, fn() => Blocks::BEACON()); - $this->map(Ids::BLACKSTONE, fn() => Blocks::BLACKSTONE()); - $this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); - $this->map(Ids::BOOKSHELF, fn() => Blocks::BOOKSHELF()); - $this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); - $this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); - $this->map(Ids::CALCITE, fn() => Blocks::CALCITE()); - $this->map(Ids::CARTOGRAPHY_TABLE, fn() => Blocks::CARTOGRAPHY_TABLE()); - $this->map(Ids::CHEMICAL_HEAT, fn() => Blocks::CHEMICAL_HEAT()); - $this->map(Ids::CHISELED_DEEPSLATE, fn() => Blocks::CHISELED_DEEPSLATE()); - $this->map(Ids::CHISELED_NETHER_BRICKS, fn() => Blocks::CHISELED_NETHER_BRICKS()); - $this->map(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); - $this->map(Ids::CHORUS_PLANT, fn() => Blocks::CHORUS_PLANT()); - $this->map(Ids::CLAY, fn() => Blocks::CLAY()); - $this->map(Ids::COAL_BLOCK, fn() => Blocks::COAL()); - $this->map(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); - $this->map(Ids::COBBLED_DEEPSLATE, fn() => Blocks::COBBLED_DEEPSLATE()); - $this->map(Ids::COBBLESTONE, fn() => Blocks::COBBLESTONE()); - $this->map(Ids::COPPER_ORE, fn() => Blocks::COPPER_ORE()); - $this->map(Ids::CRACKED_DEEPSLATE_BRICKS, fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); - $this->map(Ids::CRACKED_DEEPSLATE_TILES, fn() => Blocks::CRACKED_DEEPSLATE_TILES()); - $this->map(Ids::CRACKED_NETHER_BRICKS, fn() => Blocks::CRACKED_NETHER_BRICKS()); - $this->map(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); - $this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); - $this->map(Ids::CRIMSON_FENCE, fn() => Blocks::CRIMSON_FENCE()); - $this->map(Ids::CRIMSON_PLANKS, fn() => Blocks::CRIMSON_PLANKS()); - $this->map(Ids::CRYING_OBSIDIAN, fn() => Blocks::CRYING_OBSIDIAN()); - $this->map(Ids::DEADBUSH, fn() => Blocks::DEAD_BUSH()); - $this->map(Ids::DEEPSLATE_BRICKS, fn() => Blocks::DEEPSLATE_BRICKS()); - $this->map(Ids::DEEPSLATE_COAL_ORE, fn() => Blocks::DEEPSLATE_COAL_ORE()); - $this->map(Ids::DEEPSLATE_COPPER_ORE, fn() => Blocks::DEEPSLATE_COPPER_ORE()); - $this->map(Ids::DEEPSLATE_DIAMOND_ORE, fn() => Blocks::DEEPSLATE_DIAMOND_ORE()); - $this->map(Ids::DEEPSLATE_EMERALD_ORE, fn() => Blocks::DEEPSLATE_EMERALD_ORE()); - $this->map(Ids::DEEPSLATE_GOLD_ORE, fn() => Blocks::DEEPSLATE_GOLD_ORE()); - $this->map(Ids::DEEPSLATE_IRON_ORE, fn() => Blocks::DEEPSLATE_IRON_ORE()); - $this->map(Ids::DEEPSLATE_LAPIS_ORE, fn() => Blocks::DEEPSLATE_LAPIS_LAZULI_ORE()); - $this->map(Ids::DEEPSLATE_TILES, fn() => Blocks::DEEPSLATE_TILES()); - $this->map(Ids::DIAMOND_BLOCK, fn() => Blocks::DIAMOND()); - $this->map(Ids::DIAMOND_ORE, fn() => Blocks::DIAMOND_ORE()); - $this->map(Ids::DRAGON_EGG, fn() => Blocks::DRAGON_EGG()); - $this->map(Ids::DRIED_KELP_BLOCK, fn() => Blocks::DRIED_KELP()); - $this->map(Ids::ELEMENT_0, fn() => Blocks::ELEMENT_ZERO()); - $this->map(Ids::ELEMENT_1, fn() => Blocks::ELEMENT_HYDROGEN()); - $this->map(Ids::ELEMENT_10, fn() => Blocks::ELEMENT_NEON()); - $this->map(Ids::ELEMENT_100, fn() => Blocks::ELEMENT_FERMIUM()); - $this->map(Ids::ELEMENT_101, fn() => Blocks::ELEMENT_MENDELEVIUM()); - $this->map(Ids::ELEMENT_102, fn() => Blocks::ELEMENT_NOBELIUM()); - $this->map(Ids::ELEMENT_103, fn() => Blocks::ELEMENT_LAWRENCIUM()); - $this->map(Ids::ELEMENT_104, fn() => Blocks::ELEMENT_RUTHERFORDIUM()); - $this->map(Ids::ELEMENT_105, fn() => Blocks::ELEMENT_DUBNIUM()); - $this->map(Ids::ELEMENT_106, fn() => Blocks::ELEMENT_SEABORGIUM()); - $this->map(Ids::ELEMENT_107, fn() => Blocks::ELEMENT_BOHRIUM()); - $this->map(Ids::ELEMENT_108, fn() => Blocks::ELEMENT_HASSIUM()); - $this->map(Ids::ELEMENT_109, fn() => Blocks::ELEMENT_MEITNERIUM()); - $this->map(Ids::ELEMENT_11, fn() => Blocks::ELEMENT_SODIUM()); - $this->map(Ids::ELEMENT_110, fn() => Blocks::ELEMENT_DARMSTADTIUM()); - $this->map(Ids::ELEMENT_111, fn() => Blocks::ELEMENT_ROENTGENIUM()); - $this->map(Ids::ELEMENT_112, fn() => Blocks::ELEMENT_COPERNICIUM()); - $this->map(Ids::ELEMENT_113, fn() => Blocks::ELEMENT_NIHONIUM()); - $this->map(Ids::ELEMENT_114, fn() => Blocks::ELEMENT_FLEROVIUM()); - $this->map(Ids::ELEMENT_115, fn() => Blocks::ELEMENT_MOSCOVIUM()); - $this->map(Ids::ELEMENT_116, fn() => Blocks::ELEMENT_LIVERMORIUM()); - $this->map(Ids::ELEMENT_117, fn() => Blocks::ELEMENT_TENNESSINE()); - $this->map(Ids::ELEMENT_118, fn() => Blocks::ELEMENT_OGANESSON()); - $this->map(Ids::ELEMENT_12, fn() => Blocks::ELEMENT_MAGNESIUM()); - $this->map(Ids::ELEMENT_13, fn() => Blocks::ELEMENT_ALUMINUM()); - $this->map(Ids::ELEMENT_14, fn() => Blocks::ELEMENT_SILICON()); - $this->map(Ids::ELEMENT_15, fn() => Blocks::ELEMENT_PHOSPHORUS()); - $this->map(Ids::ELEMENT_16, fn() => Blocks::ELEMENT_SULFUR()); - $this->map(Ids::ELEMENT_17, fn() => Blocks::ELEMENT_CHLORINE()); - $this->map(Ids::ELEMENT_18, fn() => Blocks::ELEMENT_ARGON()); - $this->map(Ids::ELEMENT_19, fn() => Blocks::ELEMENT_POTASSIUM()); - $this->map(Ids::ELEMENT_2, fn() => Blocks::ELEMENT_HELIUM()); - $this->map(Ids::ELEMENT_20, fn() => Blocks::ELEMENT_CALCIUM()); - $this->map(Ids::ELEMENT_21, fn() => Blocks::ELEMENT_SCANDIUM()); - $this->map(Ids::ELEMENT_22, fn() => Blocks::ELEMENT_TITANIUM()); - $this->map(Ids::ELEMENT_23, fn() => Blocks::ELEMENT_VANADIUM()); - $this->map(Ids::ELEMENT_24, fn() => Blocks::ELEMENT_CHROMIUM()); - $this->map(Ids::ELEMENT_25, fn() => Blocks::ELEMENT_MANGANESE()); - $this->map(Ids::ELEMENT_26, fn() => Blocks::ELEMENT_IRON()); - $this->map(Ids::ELEMENT_27, fn() => Blocks::ELEMENT_COBALT()); - $this->map(Ids::ELEMENT_28, fn() => Blocks::ELEMENT_NICKEL()); - $this->map(Ids::ELEMENT_29, fn() => Blocks::ELEMENT_COPPER()); - $this->map(Ids::ELEMENT_3, fn() => Blocks::ELEMENT_LITHIUM()); - $this->map(Ids::ELEMENT_30, fn() => Blocks::ELEMENT_ZINC()); - $this->map(Ids::ELEMENT_31, fn() => Blocks::ELEMENT_GALLIUM()); - $this->map(Ids::ELEMENT_32, fn() => Blocks::ELEMENT_GERMANIUM()); - $this->map(Ids::ELEMENT_33, fn() => Blocks::ELEMENT_ARSENIC()); - $this->map(Ids::ELEMENT_34, fn() => Blocks::ELEMENT_SELENIUM()); - $this->map(Ids::ELEMENT_35, fn() => Blocks::ELEMENT_BROMINE()); - $this->map(Ids::ELEMENT_36, fn() => Blocks::ELEMENT_KRYPTON()); - $this->map(Ids::ELEMENT_37, fn() => Blocks::ELEMENT_RUBIDIUM()); - $this->map(Ids::ELEMENT_38, fn() => Blocks::ELEMENT_STRONTIUM()); - $this->map(Ids::ELEMENT_39, fn() => Blocks::ELEMENT_YTTRIUM()); - $this->map(Ids::ELEMENT_4, fn() => Blocks::ELEMENT_BERYLLIUM()); - $this->map(Ids::ELEMENT_40, fn() => Blocks::ELEMENT_ZIRCONIUM()); - $this->map(Ids::ELEMENT_41, fn() => Blocks::ELEMENT_NIOBIUM()); - $this->map(Ids::ELEMENT_42, fn() => Blocks::ELEMENT_MOLYBDENUM()); - $this->map(Ids::ELEMENT_43, fn() => Blocks::ELEMENT_TECHNETIUM()); - $this->map(Ids::ELEMENT_44, fn() => Blocks::ELEMENT_RUTHENIUM()); - $this->map(Ids::ELEMENT_45, fn() => Blocks::ELEMENT_RHODIUM()); - $this->map(Ids::ELEMENT_46, fn() => Blocks::ELEMENT_PALLADIUM()); - $this->map(Ids::ELEMENT_47, fn() => Blocks::ELEMENT_SILVER()); - $this->map(Ids::ELEMENT_48, fn() => Blocks::ELEMENT_CADMIUM()); - $this->map(Ids::ELEMENT_49, fn() => Blocks::ELEMENT_INDIUM()); - $this->map(Ids::ELEMENT_5, fn() => Blocks::ELEMENT_BORON()); - $this->map(Ids::ELEMENT_50, fn() => Blocks::ELEMENT_TIN()); - $this->map(Ids::ELEMENT_51, fn() => Blocks::ELEMENT_ANTIMONY()); - $this->map(Ids::ELEMENT_52, fn() => Blocks::ELEMENT_TELLURIUM()); - $this->map(Ids::ELEMENT_53, fn() => Blocks::ELEMENT_IODINE()); - $this->map(Ids::ELEMENT_54, fn() => Blocks::ELEMENT_XENON()); - $this->map(Ids::ELEMENT_55, fn() => Blocks::ELEMENT_CESIUM()); - $this->map(Ids::ELEMENT_56, fn() => Blocks::ELEMENT_BARIUM()); - $this->map(Ids::ELEMENT_57, fn() => Blocks::ELEMENT_LANTHANUM()); - $this->map(Ids::ELEMENT_58, fn() => Blocks::ELEMENT_CERIUM()); - $this->map(Ids::ELEMENT_59, fn() => Blocks::ELEMENT_PRASEODYMIUM()); - $this->map(Ids::ELEMENT_6, fn() => Blocks::ELEMENT_CARBON()); - $this->map(Ids::ELEMENT_60, fn() => Blocks::ELEMENT_NEODYMIUM()); - $this->map(Ids::ELEMENT_61, fn() => Blocks::ELEMENT_PROMETHIUM()); - $this->map(Ids::ELEMENT_62, fn() => Blocks::ELEMENT_SAMARIUM()); - $this->map(Ids::ELEMENT_63, fn() => Blocks::ELEMENT_EUROPIUM()); - $this->map(Ids::ELEMENT_64, fn() => Blocks::ELEMENT_GADOLINIUM()); - $this->map(Ids::ELEMENT_65, fn() => Blocks::ELEMENT_TERBIUM()); - $this->map(Ids::ELEMENT_66, fn() => Blocks::ELEMENT_DYSPROSIUM()); - $this->map(Ids::ELEMENT_67, fn() => Blocks::ELEMENT_HOLMIUM()); - $this->map(Ids::ELEMENT_68, fn() => Blocks::ELEMENT_ERBIUM()); - $this->map(Ids::ELEMENT_69, fn() => Blocks::ELEMENT_THULIUM()); - $this->map(Ids::ELEMENT_7, fn() => Blocks::ELEMENT_NITROGEN()); - $this->map(Ids::ELEMENT_70, fn() => Blocks::ELEMENT_YTTERBIUM()); - $this->map(Ids::ELEMENT_71, fn() => Blocks::ELEMENT_LUTETIUM()); - $this->map(Ids::ELEMENT_72, fn() => Blocks::ELEMENT_HAFNIUM()); - $this->map(Ids::ELEMENT_73, fn() => Blocks::ELEMENT_TANTALUM()); - $this->map(Ids::ELEMENT_74, fn() => Blocks::ELEMENT_TUNGSTEN()); - $this->map(Ids::ELEMENT_75, fn() => Blocks::ELEMENT_RHENIUM()); - $this->map(Ids::ELEMENT_76, fn() => Blocks::ELEMENT_OSMIUM()); - $this->map(Ids::ELEMENT_77, fn() => Blocks::ELEMENT_IRIDIUM()); - $this->map(Ids::ELEMENT_78, fn() => Blocks::ELEMENT_PLATINUM()); - $this->map(Ids::ELEMENT_79, fn() => Blocks::ELEMENT_GOLD()); - $this->map(Ids::ELEMENT_8, fn() => Blocks::ELEMENT_OXYGEN()); - $this->map(Ids::ELEMENT_80, fn() => Blocks::ELEMENT_MERCURY()); - $this->map(Ids::ELEMENT_81, fn() => Blocks::ELEMENT_THALLIUM()); - $this->map(Ids::ELEMENT_82, fn() => Blocks::ELEMENT_LEAD()); - $this->map(Ids::ELEMENT_83, fn() => Blocks::ELEMENT_BISMUTH()); - $this->map(Ids::ELEMENT_84, fn() => Blocks::ELEMENT_POLONIUM()); - $this->map(Ids::ELEMENT_85, fn() => Blocks::ELEMENT_ASTATINE()); - $this->map(Ids::ELEMENT_86, fn() => Blocks::ELEMENT_RADON()); - $this->map(Ids::ELEMENT_87, fn() => Blocks::ELEMENT_FRANCIUM()); - $this->map(Ids::ELEMENT_88, fn() => Blocks::ELEMENT_RADIUM()); - $this->map(Ids::ELEMENT_89, fn() => Blocks::ELEMENT_ACTINIUM()); - $this->map(Ids::ELEMENT_9, fn() => Blocks::ELEMENT_FLUORINE()); - $this->map(Ids::ELEMENT_90, fn() => Blocks::ELEMENT_THORIUM()); - $this->map(Ids::ELEMENT_91, fn() => Blocks::ELEMENT_PROTACTINIUM()); - $this->map(Ids::ELEMENT_92, fn() => Blocks::ELEMENT_URANIUM()); - $this->map(Ids::ELEMENT_93, fn() => Blocks::ELEMENT_NEPTUNIUM()); - $this->map(Ids::ELEMENT_94, fn() => Blocks::ELEMENT_PLUTONIUM()); - $this->map(Ids::ELEMENT_95, fn() => Blocks::ELEMENT_AMERICIUM()); - $this->map(Ids::ELEMENT_96, fn() => Blocks::ELEMENT_CURIUM()); - $this->map(Ids::ELEMENT_97, fn() => Blocks::ELEMENT_BERKELIUM()); - $this->map(Ids::ELEMENT_98, fn() => Blocks::ELEMENT_CALIFORNIUM()); - $this->map(Ids::ELEMENT_99, fn() => Blocks::ELEMENT_EINSTEINIUM()); - $this->map(Ids::EMERALD_BLOCK, fn() => Blocks::EMERALD()); - $this->map(Ids::EMERALD_ORE, fn() => Blocks::EMERALD_ORE()); - $this->map(Ids::ENCHANTING_TABLE, fn() => Blocks::ENCHANTING_TABLE()); - $this->map(Ids::END_BRICKS, fn() => Blocks::END_STONE_BRICKS()); - $this->map(Ids::END_STONE, fn() => Blocks::END_STONE()); - $this->map(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); - $this->map(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); - $this->map(Ids::GLASS, fn() => Blocks::GLASS()); - $this->map(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); - $this->map(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); - $this->map(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); - $this->map(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); - $this->map(Ids::GOLD_ORE, fn() => Blocks::GOLD_ORE()); - $this->map(Ids::GRASS, fn() => Blocks::GRASS()); - $this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); - $this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL()); - $this->map(Ids::HANGING_ROOTS, fn() => Blocks::HANGING_ROOTS()); - $this->map(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); - $this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); - $this->map(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); - $this->map(Ids::HONEYCOMB_BLOCK, fn() => Blocks::HONEYCOMB()); - $this->map(Ids::ICE, fn() => Blocks::ICE()); - $this->map(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); - $this->map(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); - $this->map(Ids::INVISIBLE_BEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); - $this->map(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); - $this->map(Ids::IRON_BLOCK, fn() => Blocks::IRON()); - $this->map(Ids::IRON_ORE, fn() => Blocks::IRON_ORE()); - $this->map(Ids::JUKEBOX, fn() => Blocks::JUKEBOX()); - $this->map(Ids::LAPIS_BLOCK, fn() => Blocks::LAPIS_LAZULI()); - $this->map(Ids::LAPIS_ORE, fn() => Blocks::LAPIS_LAZULI_ORE()); - $this->map(Ids::MAGMA, fn() => Blocks::MAGMA()); - $this->map(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); - $this->map(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); - $this->map(Ids::MANGROVE_ROOTS, fn() => Blocks::MANGROVE_ROOTS()); - $this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON()); - $this->map(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); - $this->map(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); - $this->map(Ids::MUD, fn() => Blocks::MUD()); - $this->map(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); - $this->map(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); - $this->map(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); - $this->map(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); - $this->map(Ids::NETHER_GOLD_ORE, fn() => Blocks::NETHER_GOLD_ORE()); - $this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); - $this->map(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE()); - $this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); - $this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); - $this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); - $this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); - $this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); - $this->map(Ids::PACKED_MUD, fn() => Blocks::PACKED_MUD()); - $this->map(Ids::PODZOL, fn() => Blocks::PODZOL()); - $this->map(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); - $this->map(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); - $this->map(Ids::POLISHED_DEEPSLATE, fn() => Blocks::POLISHED_DEEPSLATE()); - $this->map(Ids::QUARTZ_BRICKS, fn() => Blocks::QUARTZ_BRICKS()); - $this->map(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); - $this->map(Ids::RAW_COPPER_BLOCK, fn() => Blocks::RAW_COPPER()); - $this->map(Ids::RAW_GOLD_BLOCK, fn() => Blocks::RAW_GOLD()); - $this->map(Ids::RAW_IRON_BLOCK, fn() => Blocks::RAW_IRON()); - $this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); - $this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); - $this->map(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); - $this->map(Ids::RESERVED6, fn() => Blocks::RESERVED6()); - $this->map(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); - $this->map(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); - $this->map(Ids::SLIME, fn() => Blocks::SLIME()); - $this->map(Ids::SMITHING_TABLE, fn() => Blocks::SMITHING_TABLE()); - $this->map(Ids::SMOOTH_BASALT, fn() => Blocks::SMOOTH_BASALT()); - $this->map(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); - $this->map(Ids::SNOW, fn() => Blocks::SNOW()); - $this->map(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); - $this->map(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); - $this->map(Ids::SPORE_BLOSSOM, fn() => Blocks::SPORE_BLOSSOM()); - $this->map(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); - $this->map(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); - $this->map(Ids::TUFF, fn() => Blocks::TUFF()); - $this->map(Ids::UNDYED_SHULKER_BOX, fn() => Blocks::SHULKER_BOX()); - $this->map(Ids::WARPED_FENCE, fn() => Blocks::WARPED_FENCE()); - $this->map(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); - $this->map(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); - $this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); - $this->map(Ids::WEB, fn() => Blocks::COBWEB()); - $this->map(Ids::WITHER_ROSE, fn() => Blocks::WITHER_ROSE()); - $this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); + $this->mapSimple(Ids::AIR, fn() => Blocks::AIR()); + $this->mapSimple(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); + $this->mapSimple(Ids::ANCIENT_DEBRIS, fn() => Blocks::ANCIENT_DEBRIS()); + $this->mapSimple(Ids::BARRIER, fn() => Blocks::BARRIER()); + $this->mapSimple(Ids::BEACON, fn() => Blocks::BEACON()); + $this->mapSimple(Ids::BLACKSTONE, fn() => Blocks::BLACKSTONE()); + $this->mapSimple(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE()); + $this->mapSimple(Ids::BOOKSHELF, fn() => Blocks::BOOKSHELF()); + $this->mapSimple(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS()); + $this->mapSimple(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM()); + $this->mapSimple(Ids::CALCITE, fn() => Blocks::CALCITE()); + $this->mapSimple(Ids::CARTOGRAPHY_TABLE, fn() => Blocks::CARTOGRAPHY_TABLE()); + $this->mapSimple(Ids::CHEMICAL_HEAT, fn() => Blocks::CHEMICAL_HEAT()); + $this->mapSimple(Ids::CHISELED_DEEPSLATE, fn() => Blocks::CHISELED_DEEPSLATE()); + $this->mapSimple(Ids::CHISELED_NETHER_BRICKS, fn() => Blocks::CHISELED_NETHER_BRICKS()); + $this->mapSimple(Ids::CHISELED_POLISHED_BLACKSTONE, fn() => Blocks::CHISELED_POLISHED_BLACKSTONE()); + $this->mapSimple(Ids::CHORUS_PLANT, fn() => Blocks::CHORUS_PLANT()); + $this->mapSimple(Ids::CLAY, fn() => Blocks::CLAY()); + $this->mapSimple(Ids::COAL_BLOCK, fn() => Blocks::COAL()); + $this->mapSimple(Ids::COAL_ORE, fn() => Blocks::COAL_ORE()); + $this->mapSimple(Ids::COBBLED_DEEPSLATE, fn() => Blocks::COBBLED_DEEPSLATE()); + $this->mapSimple(Ids::COBBLESTONE, fn() => Blocks::COBBLESTONE()); + $this->mapSimple(Ids::COPPER_ORE, fn() => Blocks::COPPER_ORE()); + $this->mapSimple(Ids::CRACKED_DEEPSLATE_BRICKS, fn() => Blocks::CRACKED_DEEPSLATE_BRICKS()); + $this->mapSimple(Ids::CRACKED_DEEPSLATE_TILES, fn() => Blocks::CRACKED_DEEPSLATE_TILES()); + $this->mapSimple(Ids::CRACKED_NETHER_BRICKS, fn() => Blocks::CRACKED_NETHER_BRICKS()); + $this->mapSimple(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); + $this->mapSimple(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE()); + $this->mapSimple(Ids::CRIMSON_FENCE, fn() => Blocks::CRIMSON_FENCE()); + $this->mapSimple(Ids::CRIMSON_PLANKS, fn() => Blocks::CRIMSON_PLANKS()); + $this->mapSimple(Ids::CRYING_OBSIDIAN, fn() => Blocks::CRYING_OBSIDIAN()); + $this->mapSimple(Ids::DEADBUSH, fn() => Blocks::DEAD_BUSH()); + $this->mapSimple(Ids::DEEPSLATE_BRICKS, fn() => Blocks::DEEPSLATE_BRICKS()); + $this->mapSimple(Ids::DEEPSLATE_COAL_ORE, fn() => Blocks::DEEPSLATE_COAL_ORE()); + $this->mapSimple(Ids::DEEPSLATE_COPPER_ORE, fn() => Blocks::DEEPSLATE_COPPER_ORE()); + $this->mapSimple(Ids::DEEPSLATE_DIAMOND_ORE, fn() => Blocks::DEEPSLATE_DIAMOND_ORE()); + $this->mapSimple(Ids::DEEPSLATE_EMERALD_ORE, fn() => Blocks::DEEPSLATE_EMERALD_ORE()); + $this->mapSimple(Ids::DEEPSLATE_GOLD_ORE, fn() => Blocks::DEEPSLATE_GOLD_ORE()); + $this->mapSimple(Ids::DEEPSLATE_IRON_ORE, fn() => Blocks::DEEPSLATE_IRON_ORE()); + $this->mapSimple(Ids::DEEPSLATE_LAPIS_ORE, fn() => Blocks::DEEPSLATE_LAPIS_LAZULI_ORE()); + $this->mapSimple(Ids::DEEPSLATE_TILES, fn() => Blocks::DEEPSLATE_TILES()); + $this->mapSimple(Ids::DIAMOND_BLOCK, fn() => Blocks::DIAMOND()); + $this->mapSimple(Ids::DIAMOND_ORE, fn() => Blocks::DIAMOND_ORE()); + $this->mapSimple(Ids::DRAGON_EGG, fn() => Blocks::DRAGON_EGG()); + $this->mapSimple(Ids::DRIED_KELP_BLOCK, fn() => Blocks::DRIED_KELP()); + $this->mapSimple(Ids::ELEMENT_0, fn() => Blocks::ELEMENT_ZERO()); + $this->mapSimple(Ids::ELEMENT_1, fn() => Blocks::ELEMENT_HYDROGEN()); + $this->mapSimple(Ids::ELEMENT_10, fn() => Blocks::ELEMENT_NEON()); + $this->mapSimple(Ids::ELEMENT_100, fn() => Blocks::ELEMENT_FERMIUM()); + $this->mapSimple(Ids::ELEMENT_101, fn() => Blocks::ELEMENT_MENDELEVIUM()); + $this->mapSimple(Ids::ELEMENT_102, fn() => Blocks::ELEMENT_NOBELIUM()); + $this->mapSimple(Ids::ELEMENT_103, fn() => Blocks::ELEMENT_LAWRENCIUM()); + $this->mapSimple(Ids::ELEMENT_104, fn() => Blocks::ELEMENT_RUTHERFORDIUM()); + $this->mapSimple(Ids::ELEMENT_105, fn() => Blocks::ELEMENT_DUBNIUM()); + $this->mapSimple(Ids::ELEMENT_106, fn() => Blocks::ELEMENT_SEABORGIUM()); + $this->mapSimple(Ids::ELEMENT_107, fn() => Blocks::ELEMENT_BOHRIUM()); + $this->mapSimple(Ids::ELEMENT_108, fn() => Blocks::ELEMENT_HASSIUM()); + $this->mapSimple(Ids::ELEMENT_109, fn() => Blocks::ELEMENT_MEITNERIUM()); + $this->mapSimple(Ids::ELEMENT_11, fn() => Blocks::ELEMENT_SODIUM()); + $this->mapSimple(Ids::ELEMENT_110, fn() => Blocks::ELEMENT_DARMSTADTIUM()); + $this->mapSimple(Ids::ELEMENT_111, fn() => Blocks::ELEMENT_ROENTGENIUM()); + $this->mapSimple(Ids::ELEMENT_112, fn() => Blocks::ELEMENT_COPERNICIUM()); + $this->mapSimple(Ids::ELEMENT_113, fn() => Blocks::ELEMENT_NIHONIUM()); + $this->mapSimple(Ids::ELEMENT_114, fn() => Blocks::ELEMENT_FLEROVIUM()); + $this->mapSimple(Ids::ELEMENT_115, fn() => Blocks::ELEMENT_MOSCOVIUM()); + $this->mapSimple(Ids::ELEMENT_116, fn() => Blocks::ELEMENT_LIVERMORIUM()); + $this->mapSimple(Ids::ELEMENT_117, fn() => Blocks::ELEMENT_TENNESSINE()); + $this->mapSimple(Ids::ELEMENT_118, fn() => Blocks::ELEMENT_OGANESSON()); + $this->mapSimple(Ids::ELEMENT_12, fn() => Blocks::ELEMENT_MAGNESIUM()); + $this->mapSimple(Ids::ELEMENT_13, fn() => Blocks::ELEMENT_ALUMINUM()); + $this->mapSimple(Ids::ELEMENT_14, fn() => Blocks::ELEMENT_SILICON()); + $this->mapSimple(Ids::ELEMENT_15, fn() => Blocks::ELEMENT_PHOSPHORUS()); + $this->mapSimple(Ids::ELEMENT_16, fn() => Blocks::ELEMENT_SULFUR()); + $this->mapSimple(Ids::ELEMENT_17, fn() => Blocks::ELEMENT_CHLORINE()); + $this->mapSimple(Ids::ELEMENT_18, fn() => Blocks::ELEMENT_ARGON()); + $this->mapSimple(Ids::ELEMENT_19, fn() => Blocks::ELEMENT_POTASSIUM()); + $this->mapSimple(Ids::ELEMENT_2, fn() => Blocks::ELEMENT_HELIUM()); + $this->mapSimple(Ids::ELEMENT_20, fn() => Blocks::ELEMENT_CALCIUM()); + $this->mapSimple(Ids::ELEMENT_21, fn() => Blocks::ELEMENT_SCANDIUM()); + $this->mapSimple(Ids::ELEMENT_22, fn() => Blocks::ELEMENT_TITANIUM()); + $this->mapSimple(Ids::ELEMENT_23, fn() => Blocks::ELEMENT_VANADIUM()); + $this->mapSimple(Ids::ELEMENT_24, fn() => Blocks::ELEMENT_CHROMIUM()); + $this->mapSimple(Ids::ELEMENT_25, fn() => Blocks::ELEMENT_MANGANESE()); + $this->mapSimple(Ids::ELEMENT_26, fn() => Blocks::ELEMENT_IRON()); + $this->mapSimple(Ids::ELEMENT_27, fn() => Blocks::ELEMENT_COBALT()); + $this->mapSimple(Ids::ELEMENT_28, fn() => Blocks::ELEMENT_NICKEL()); + $this->mapSimple(Ids::ELEMENT_29, fn() => Blocks::ELEMENT_COPPER()); + $this->mapSimple(Ids::ELEMENT_3, fn() => Blocks::ELEMENT_LITHIUM()); + $this->mapSimple(Ids::ELEMENT_30, fn() => Blocks::ELEMENT_ZINC()); + $this->mapSimple(Ids::ELEMENT_31, fn() => Blocks::ELEMENT_GALLIUM()); + $this->mapSimple(Ids::ELEMENT_32, fn() => Blocks::ELEMENT_GERMANIUM()); + $this->mapSimple(Ids::ELEMENT_33, fn() => Blocks::ELEMENT_ARSENIC()); + $this->mapSimple(Ids::ELEMENT_34, fn() => Blocks::ELEMENT_SELENIUM()); + $this->mapSimple(Ids::ELEMENT_35, fn() => Blocks::ELEMENT_BROMINE()); + $this->mapSimple(Ids::ELEMENT_36, fn() => Blocks::ELEMENT_KRYPTON()); + $this->mapSimple(Ids::ELEMENT_37, fn() => Blocks::ELEMENT_RUBIDIUM()); + $this->mapSimple(Ids::ELEMENT_38, fn() => Blocks::ELEMENT_STRONTIUM()); + $this->mapSimple(Ids::ELEMENT_39, fn() => Blocks::ELEMENT_YTTRIUM()); + $this->mapSimple(Ids::ELEMENT_4, fn() => Blocks::ELEMENT_BERYLLIUM()); + $this->mapSimple(Ids::ELEMENT_40, fn() => Blocks::ELEMENT_ZIRCONIUM()); + $this->mapSimple(Ids::ELEMENT_41, fn() => Blocks::ELEMENT_NIOBIUM()); + $this->mapSimple(Ids::ELEMENT_42, fn() => Blocks::ELEMENT_MOLYBDENUM()); + $this->mapSimple(Ids::ELEMENT_43, fn() => Blocks::ELEMENT_TECHNETIUM()); + $this->mapSimple(Ids::ELEMENT_44, fn() => Blocks::ELEMENT_RUTHENIUM()); + $this->mapSimple(Ids::ELEMENT_45, fn() => Blocks::ELEMENT_RHODIUM()); + $this->mapSimple(Ids::ELEMENT_46, fn() => Blocks::ELEMENT_PALLADIUM()); + $this->mapSimple(Ids::ELEMENT_47, fn() => Blocks::ELEMENT_SILVER()); + $this->mapSimple(Ids::ELEMENT_48, fn() => Blocks::ELEMENT_CADMIUM()); + $this->mapSimple(Ids::ELEMENT_49, fn() => Blocks::ELEMENT_INDIUM()); + $this->mapSimple(Ids::ELEMENT_5, fn() => Blocks::ELEMENT_BORON()); + $this->mapSimple(Ids::ELEMENT_50, fn() => Blocks::ELEMENT_TIN()); + $this->mapSimple(Ids::ELEMENT_51, fn() => Blocks::ELEMENT_ANTIMONY()); + $this->mapSimple(Ids::ELEMENT_52, fn() => Blocks::ELEMENT_TELLURIUM()); + $this->mapSimple(Ids::ELEMENT_53, fn() => Blocks::ELEMENT_IODINE()); + $this->mapSimple(Ids::ELEMENT_54, fn() => Blocks::ELEMENT_XENON()); + $this->mapSimple(Ids::ELEMENT_55, fn() => Blocks::ELEMENT_CESIUM()); + $this->mapSimple(Ids::ELEMENT_56, fn() => Blocks::ELEMENT_BARIUM()); + $this->mapSimple(Ids::ELEMENT_57, fn() => Blocks::ELEMENT_LANTHANUM()); + $this->mapSimple(Ids::ELEMENT_58, fn() => Blocks::ELEMENT_CERIUM()); + $this->mapSimple(Ids::ELEMENT_59, fn() => Blocks::ELEMENT_PRASEODYMIUM()); + $this->mapSimple(Ids::ELEMENT_6, fn() => Blocks::ELEMENT_CARBON()); + $this->mapSimple(Ids::ELEMENT_60, fn() => Blocks::ELEMENT_NEODYMIUM()); + $this->mapSimple(Ids::ELEMENT_61, fn() => Blocks::ELEMENT_PROMETHIUM()); + $this->mapSimple(Ids::ELEMENT_62, fn() => Blocks::ELEMENT_SAMARIUM()); + $this->mapSimple(Ids::ELEMENT_63, fn() => Blocks::ELEMENT_EUROPIUM()); + $this->mapSimple(Ids::ELEMENT_64, fn() => Blocks::ELEMENT_GADOLINIUM()); + $this->mapSimple(Ids::ELEMENT_65, fn() => Blocks::ELEMENT_TERBIUM()); + $this->mapSimple(Ids::ELEMENT_66, fn() => Blocks::ELEMENT_DYSPROSIUM()); + $this->mapSimple(Ids::ELEMENT_67, fn() => Blocks::ELEMENT_HOLMIUM()); + $this->mapSimple(Ids::ELEMENT_68, fn() => Blocks::ELEMENT_ERBIUM()); + $this->mapSimple(Ids::ELEMENT_69, fn() => Blocks::ELEMENT_THULIUM()); + $this->mapSimple(Ids::ELEMENT_7, fn() => Blocks::ELEMENT_NITROGEN()); + $this->mapSimple(Ids::ELEMENT_70, fn() => Blocks::ELEMENT_YTTERBIUM()); + $this->mapSimple(Ids::ELEMENT_71, fn() => Blocks::ELEMENT_LUTETIUM()); + $this->mapSimple(Ids::ELEMENT_72, fn() => Blocks::ELEMENT_HAFNIUM()); + $this->mapSimple(Ids::ELEMENT_73, fn() => Blocks::ELEMENT_TANTALUM()); + $this->mapSimple(Ids::ELEMENT_74, fn() => Blocks::ELEMENT_TUNGSTEN()); + $this->mapSimple(Ids::ELEMENT_75, fn() => Blocks::ELEMENT_RHENIUM()); + $this->mapSimple(Ids::ELEMENT_76, fn() => Blocks::ELEMENT_OSMIUM()); + $this->mapSimple(Ids::ELEMENT_77, fn() => Blocks::ELEMENT_IRIDIUM()); + $this->mapSimple(Ids::ELEMENT_78, fn() => Blocks::ELEMENT_PLATINUM()); + $this->mapSimple(Ids::ELEMENT_79, fn() => Blocks::ELEMENT_GOLD()); + $this->mapSimple(Ids::ELEMENT_8, fn() => Blocks::ELEMENT_OXYGEN()); + $this->mapSimple(Ids::ELEMENT_80, fn() => Blocks::ELEMENT_MERCURY()); + $this->mapSimple(Ids::ELEMENT_81, fn() => Blocks::ELEMENT_THALLIUM()); + $this->mapSimple(Ids::ELEMENT_82, fn() => Blocks::ELEMENT_LEAD()); + $this->mapSimple(Ids::ELEMENT_83, fn() => Blocks::ELEMENT_BISMUTH()); + $this->mapSimple(Ids::ELEMENT_84, fn() => Blocks::ELEMENT_POLONIUM()); + $this->mapSimple(Ids::ELEMENT_85, fn() => Blocks::ELEMENT_ASTATINE()); + $this->mapSimple(Ids::ELEMENT_86, fn() => Blocks::ELEMENT_RADON()); + $this->mapSimple(Ids::ELEMENT_87, fn() => Blocks::ELEMENT_FRANCIUM()); + $this->mapSimple(Ids::ELEMENT_88, fn() => Blocks::ELEMENT_RADIUM()); + $this->mapSimple(Ids::ELEMENT_89, fn() => Blocks::ELEMENT_ACTINIUM()); + $this->mapSimple(Ids::ELEMENT_9, fn() => Blocks::ELEMENT_FLUORINE()); + $this->mapSimple(Ids::ELEMENT_90, fn() => Blocks::ELEMENT_THORIUM()); + $this->mapSimple(Ids::ELEMENT_91, fn() => Blocks::ELEMENT_PROTACTINIUM()); + $this->mapSimple(Ids::ELEMENT_92, fn() => Blocks::ELEMENT_URANIUM()); + $this->mapSimple(Ids::ELEMENT_93, fn() => Blocks::ELEMENT_NEPTUNIUM()); + $this->mapSimple(Ids::ELEMENT_94, fn() => Blocks::ELEMENT_PLUTONIUM()); + $this->mapSimple(Ids::ELEMENT_95, fn() => Blocks::ELEMENT_AMERICIUM()); + $this->mapSimple(Ids::ELEMENT_96, fn() => Blocks::ELEMENT_CURIUM()); + $this->mapSimple(Ids::ELEMENT_97, fn() => Blocks::ELEMENT_BERKELIUM()); + $this->mapSimple(Ids::ELEMENT_98, fn() => Blocks::ELEMENT_CALIFORNIUM()); + $this->mapSimple(Ids::ELEMENT_99, fn() => Blocks::ELEMENT_EINSTEINIUM()); + $this->mapSimple(Ids::EMERALD_BLOCK, fn() => Blocks::EMERALD()); + $this->mapSimple(Ids::EMERALD_ORE, fn() => Blocks::EMERALD_ORE()); + $this->mapSimple(Ids::ENCHANTING_TABLE, fn() => Blocks::ENCHANTING_TABLE()); + $this->mapSimple(Ids::END_BRICKS, fn() => Blocks::END_STONE_BRICKS()); + $this->mapSimple(Ids::END_STONE, fn() => Blocks::END_STONE()); + $this->mapSimple(Ids::FLETCHING_TABLE, fn() => Blocks::FLETCHING_TABLE()); + $this->mapSimple(Ids::GILDED_BLACKSTONE, fn() => Blocks::GILDED_BLACKSTONE()); + $this->mapSimple(Ids::GLASS, fn() => Blocks::GLASS()); + $this->mapSimple(Ids::GLASS_PANE, fn() => Blocks::GLASS_PANE()); + $this->mapSimple(Ids::GLOWINGOBSIDIAN, fn() => Blocks::GLOWING_OBSIDIAN()); + $this->mapSimple(Ids::GLOWSTONE, fn() => Blocks::GLOWSTONE()); + $this->mapSimple(Ids::GOLD_BLOCK, fn() => Blocks::GOLD()); + $this->mapSimple(Ids::GOLD_ORE, fn() => Blocks::GOLD_ORE()); + $this->mapSimple(Ids::GRASS, fn() => Blocks::GRASS()); + $this->mapSimple(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH()); + $this->mapSimple(Ids::GRAVEL, fn() => Blocks::GRAVEL()); + $this->mapSimple(Ids::HANGING_ROOTS, fn() => Blocks::HANGING_ROOTS()); + $this->mapSimple(Ids::HARD_GLASS, fn() => Blocks::HARDENED_GLASS()); + $this->mapSimple(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE()); + $this->mapSimple(Ids::HARDENED_CLAY, fn() => Blocks::HARDENED_CLAY()); + $this->mapSimple(Ids::HONEYCOMB_BLOCK, fn() => Blocks::HONEYCOMB()); + $this->mapSimple(Ids::ICE, fn() => Blocks::ICE()); + $this->mapSimple(Ids::INFO_UPDATE, fn() => Blocks::INFO_UPDATE()); + $this->mapSimple(Ids::INFO_UPDATE2, fn() => Blocks::INFO_UPDATE2()); + $this->mapSimple(Ids::INVISIBLE_BEDROCK, fn() => Blocks::INVISIBLE_BEDROCK()); + $this->mapSimple(Ids::IRON_BARS, fn() => Blocks::IRON_BARS()); + $this->mapSimple(Ids::IRON_BLOCK, fn() => Blocks::IRON()); + $this->mapSimple(Ids::IRON_ORE, fn() => Blocks::IRON_ORE()); + $this->mapSimple(Ids::JUKEBOX, fn() => Blocks::JUKEBOX()); + $this->mapSimple(Ids::LAPIS_BLOCK, fn() => Blocks::LAPIS_LAZULI()); + $this->mapSimple(Ids::LAPIS_ORE, fn() => Blocks::LAPIS_LAZULI_ORE()); + $this->mapSimple(Ids::MAGMA, fn() => Blocks::MAGMA()); + $this->mapSimple(Ids::MANGROVE_FENCE, fn() => Blocks::MANGROVE_FENCE()); + $this->mapSimple(Ids::MANGROVE_PLANKS, fn() => Blocks::MANGROVE_PLANKS()); + $this->mapSimple(Ids::MANGROVE_ROOTS, fn() => Blocks::MANGROVE_ROOTS()); + $this->mapSimple(Ids::MELON_BLOCK, fn() => Blocks::MELON()); + $this->mapSimple(Ids::MOB_SPAWNER, fn() => Blocks::MONSTER_SPAWNER()); + $this->mapSimple(Ids::MOSSY_COBBLESTONE, fn() => Blocks::MOSSY_COBBLESTONE()); + $this->mapSimple(Ids::MUD, fn() => Blocks::MUD()); + $this->mapSimple(Ids::MUD_BRICKS, fn() => Blocks::MUD_BRICKS()); + $this->mapSimple(Ids::MYCELIUM, fn() => Blocks::MYCELIUM()); + $this->mapSimple(Ids::NETHER_BRICK, fn() => Blocks::NETHER_BRICKS()); + $this->mapSimple(Ids::NETHER_BRICK_FENCE, fn() => Blocks::NETHER_BRICK_FENCE()); + $this->mapSimple(Ids::NETHER_GOLD_ORE, fn() => Blocks::NETHER_GOLD_ORE()); + $this->mapSimple(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK()); + $this->mapSimple(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE()); + $this->mapSimple(Ids::NETHERRACK, fn() => Blocks::NETHERRACK()); + $this->mapSimple(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE()); + $this->mapSimple(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK()); + $this->mapSimple(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN()); + $this->mapSimple(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE()); + $this->mapSimple(Ids::PACKED_MUD, fn() => Blocks::PACKED_MUD()); + $this->mapSimple(Ids::PODZOL, fn() => Blocks::PODZOL()); + $this->mapSimple(Ids::POLISHED_BLACKSTONE, fn() => Blocks::POLISHED_BLACKSTONE()); + $this->mapSimple(Ids::POLISHED_BLACKSTONE_BRICKS, fn() => Blocks::POLISHED_BLACKSTONE_BRICKS()); + $this->mapSimple(Ids::POLISHED_DEEPSLATE, fn() => Blocks::POLISHED_DEEPSLATE()); + $this->mapSimple(Ids::QUARTZ_BRICKS, fn() => Blocks::QUARTZ_BRICKS()); + $this->mapSimple(Ids::QUARTZ_ORE, fn() => Blocks::NETHER_QUARTZ_ORE()); + $this->mapSimple(Ids::RAW_COPPER_BLOCK, fn() => Blocks::RAW_COPPER()); + $this->mapSimple(Ids::RAW_GOLD_BLOCK, fn() => Blocks::RAW_GOLD()); + $this->mapSimple(Ids::RAW_IRON_BLOCK, fn() => Blocks::RAW_IRON()); + $this->mapSimple(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); + $this->mapSimple(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); + $this->mapSimple(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); + $this->mapSimple(Ids::RESERVED6, fn() => Blocks::RESERVED6()); + $this->mapSimple(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); + $this->mapSimple(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); + $this->mapSimple(Ids::SLIME, fn() => Blocks::SLIME()); + $this->mapSimple(Ids::SMITHING_TABLE, fn() => Blocks::SMITHING_TABLE()); + $this->mapSimple(Ids::SMOOTH_BASALT, fn() => Blocks::SMOOTH_BASALT()); + $this->mapSimple(Ids::SMOOTH_STONE, fn() => Blocks::SMOOTH_STONE()); + $this->mapSimple(Ids::SNOW, fn() => Blocks::SNOW()); + $this->mapSimple(Ids::SOUL_SAND, fn() => Blocks::SOUL_SAND()); + $this->mapSimple(Ids::SOUL_SOIL, fn() => Blocks::SOUL_SOIL()); + $this->mapSimple(Ids::SPORE_BLOSSOM, fn() => Blocks::SPORE_BLOSSOM()); + $this->mapSimple(Ids::STONECUTTER, fn() => Blocks::LEGACY_STONECUTTER()); + $this->mapSimple(Ids::TINTED_GLASS, fn() => Blocks::TINTED_GLASS()); + $this->mapSimple(Ids::TUFF, fn() => Blocks::TUFF()); + $this->mapSimple(Ids::UNDYED_SHULKER_BOX, fn() => Blocks::SHULKER_BOX()); + $this->mapSimple(Ids::WARPED_FENCE, fn() => Blocks::WARPED_FENCE()); + $this->mapSimple(Ids::WARPED_PLANKS, fn() => Blocks::WARPED_PLANKS()); + $this->mapSimple(Ids::WARPED_WART_BLOCK, fn() => Blocks::WARPED_WART_BLOCK()); + $this->mapSimple(Ids::WATERLILY, fn() => Blocks::LILY_PAD()); + $this->mapSimple(Ids::WEB, fn() => Blocks::COBWEB()); + $this->mapSimple(Ids::WITHER_ROSE, fn() => Blocks::WITHER_ROSE()); + $this->mapSimple(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION()); } private function registerDeserializers() : void{ From 1609b11c8e228faa397146b76c4c128a164cfe60 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 13:43:00 +0100 Subject: [PATCH 408/692] Make blockstate (de)serializer names a bit less verbose --- ...izer.php => BlockObjectToStateSerializer.php} | 2 +- ...er.php => BlockStateToObjectDeserializer.php} | 2 +- src/world/format/io/GlobalBlockStateHandlers.php | 16 ++++++++-------- .../convert/BlockSerializerDeserializerTest.php | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) rename src/data/bedrock/block/convert/{BlockObjectToBlockStateSerializer.php => BlockObjectToStateSerializer.php} (99%) rename src/data/bedrock/block/convert/{BlockStateToBlockObjectDeserializer.php => BlockStateToObjectDeserializer.php} (99%) diff --git a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php similarity index 99% rename from src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php rename to src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 5a8fa4bf5..23a11412d 100644 --- a/src/data/bedrock/block/convert/BlockObjectToBlockStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -169,7 +169,7 @@ use pocketmine\utils\AssumptionFailedError; use function class_parents; use function get_class; -final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{ +final class BlockObjectToStateSerializer implements BlockStateSerializer{ /** * These callables actually accept Block, but for the sake of type completeness, it has to be never, since we can't * describe the bottom type of a type hierarchy only containing Block. diff --git a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php similarity index 99% rename from src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php rename to src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index e63ee2def..f73a071e9 100644 --- a/src/data/bedrock/block/convert/BlockStateToBlockObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -54,7 +54,7 @@ use function array_key_exists; use function count; use function min; -final class BlockStateToBlockObjectDeserializer implements BlockStateDeserializer{ +final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ /** * @var \Closure[] diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 49924f5ed..95d36417f 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -25,8 +25,8 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockTypeNames; -use pocketmine\data\bedrock\block\convert\BlockObjectToBlockStateSerializer; -use pocketmine\data\bedrock\block\convert\BlockStateToBlockObjectDeserializer; +use pocketmine\data\bedrock\block\convert\BlockObjectToStateSerializer; +use pocketmine\data\bedrock\block\convert\BlockStateToObjectDeserializer; use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockIdMetaUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; @@ -45,20 +45,20 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; */ final class GlobalBlockStateHandlers{ - private static ?BlockObjectToBlockStateSerializer $blockStateSerializer = null; + private static ?BlockObjectToStateSerializer $blockStateSerializer = null; - private static ?BlockStateToBlockObjectDeserializer $blockStateDeserializer = null; + private static ?BlockStateToObjectDeserializer $blockStateDeserializer = null; private static ?BlockDataUpgrader $blockDataUpgrader = null; private static ?BlockStateData $unknownBlockStateData = null; - public static function getDeserializer() : BlockStateToBlockObjectDeserializer{ - return self::$blockStateDeserializer ??= new BlockStateToBlockObjectDeserializer(); + public static function getDeserializer() : BlockStateToObjectDeserializer{ + return self::$blockStateDeserializer ??= new BlockStateToObjectDeserializer(); } - public static function getSerializer() : BlockObjectToBlockStateSerializer{ - return self::$blockStateSerializer ??= new BlockObjectToBlockStateSerializer(); + public static function getSerializer() : BlockObjectToStateSerializer{ + return self::$blockStateSerializer ??= new BlockObjectToStateSerializer(); } public static function getUpgrader() : BlockDataUpgrader{ diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index 50b66ec23..f69b4d010 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -34,12 +34,12 @@ use pocketmine\data\bedrock\block\BlockStateSerializeException; use function print_r; final class BlockSerializerDeserializerTest extends TestCase{ - private BlockStateToBlockObjectDeserializer $deserializer; - private BlockObjectToBlockStateSerializer $serializer; + private BlockStateToObjectDeserializer $deserializer; + private BlockObjectToStateSerializer $serializer; public function setUp() : void{ - $this->deserializer = new BlockStateToBlockObjectDeserializer(); - $this->serializer = new BlockObjectToBlockStateSerializer(); + $this->deserializer = new BlockStateToObjectDeserializer(); + $this->serializer = new BlockObjectToStateSerializer(); } public function testAllKnownBlockStatesSerializableAndDeserializable() : void{ From 24ac54331396b15d2f531e32af32af01e40f7971 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 15:09:33 +0100 Subject: [PATCH 409/692] Prepare alpha4 changelog --- changelogs/5.0-alpha.md | 94 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 5b2e36234..14e1a85ff 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -513,3 +513,97 @@ Released 14th August 2022. - `Item->onDestroyBlock()` now accepts `array &$returnedItems` reference parameter. - `Item->onInteractBlock()` now accepts `array &$returnedItems` reference parameter. - `Item->onReleaseUsing()` now accepts `array &$returnedItems` reference parameter. + +# 5.0.0-ALPHA4 +Released 24th September 2022. + +## Core +- Now targeting Minecraft: Bedrock 1.19.30. +- A new `console.enable-input` option has been added to `pocketmine.yml`, which allows disabling the console reader in environments where it's not needed (e.g. a Docker container). This can be useful to save processor and memory resources. +- Crashdumps now include JIT mode information for use by the Crash Archive. + +## Internals +- Improved handling of "UI" inventories in network `InventoryManager`. Their contents are now synced correctly. + +## API +### General +- Plugin dependents are now always disabled before their dependencies on shutdown, to ensure that the dependents can finish what they are doing correctly. + +### `pocketmine\block` +- The following new API methods have been added: + - `public SignText->isGlowing() : bool` + - `public SignText->getBaseColor() : pocketmine\color\Color` +- The following API methods have signature changes: + - `SignText::fromBlob()` now accepts two new optional parameters: `?Color $baseColor` and `bool $glowing` + - `SignText::__construct()` now accepts two new optional parameters: `?Color $baseColor` and `bool $glowing` +- The following API methods have been removed: + - `TreeType::fromMagicNumber()` + - `TreeType->getMagicNumber()` + +### `pocketmine\command` +- Command permissions are now always checked by the server when running a command. + - This only affects commands implemented by extending `Command`. Plugins using `PluginBase->onCommand()` are not affected by this change, since they already had permissions checked by the server anyway. + - Previously, direct inheritors of `Command` were responsible for checking permissions, which required developers to duplicate the same code in every command, and opened lots of potential for security vulnerabilities. + - If you want to do something on permission denied (e.g. sending a special message, or audit logging), you can do so by overriding `Command->testPermission()`, instead of baking the code directly into `Command->execute()`. + - If you don't want to use permissions at all, just create a permission with a default of `true` (or belonging to `pocketmine.group.user`) and assign that. + +### `pocketmine\data` +#### Highlights +- Introduced an experimental, mostly unified item (de)serializer registrar, `ItemSerializerDeserializerRegistrar`. + - This class includes helper methods to register symmetric serializer and deserializer callbacks into an `ItemSerializer` and `ItemDeserializer`. + - This halves the amount of code needed to register new items in the vast majority of cases. + - This is currently used to register all currently implemented items. + +#### Other changes +- The following classes have been renamed: + - `BlockObjectToBlockStateSerializer` -> `BlockObjectToStateSerializer` + - `BlockStateToBlockObjectDeserializer` -> `BlockStateToObjectDeserializer` +- The following classes have been removed: + - `CachingBlockStateDeserializer` + - `CachingBlockStateSerializer` + - `DelegatingBlockStateDeserializer` + - `DelegatingBlockStateSerializer` +- The following new API methods have been added: + - `public BlockStateToObjectDeserializer->mapSimple(string $stringId, \Closure() : Block $getBlock) : void` - for symmetry with the serializer + +### `pocketmine\event` +- `BlockFormEvent` now includes information about the block which caused the event. + - Added `public BlockFormEvent->getCausingBlock() : Block` + +### `pocketmine\inventory` +- Introduced a new `TransactionBuilder` class, which considerably simplifies the process of constructing an `InventoryTransaction` from generic `setItem()` calls. + - This is currently used to build server-side transactions for evicting the contents of the crafting grid when closing the main inventory. + - This is planned for use with the new Minecraft Bedrock item stack request system. + +### `pocketmine\item` +- The following API methods have been changed: + - `Item->encodeType(RuntimeDataWriter $w) : void` -> `Item->describeType(RuntimeDataReader|RuntimeDataWriter $w) : void` +- The following new classes have been added: + - `SuspiciousStew` + - `SuspiciousStewType` + +### `pocketmine\utils` +- The following new API methods have been added: + - `public static Utils::getOpcacheJitMode() : int` + +### `pocketmine\world` +- The following new classes have been added: + - `sound\DyeUseSound` + - `sound\InkSacUseSound` +- The following API methods have changed signatures: + - `GlobalBlockStateHandlers::getSerializer()` now returns `BlockObjectToStateSerializer` directly instead of `BlockStateSerializer`. + - `GlobalBlockStateHandlers::getDeserializer()` now returns `BlockStateToObjectDeserializer` directly instead of `BlockStateDeserializer`. + +## Gameplay +### Blocks +- Coral and coral fans now behave correctly when placed out of water (they no longer immediately die). +- Added support for dyeing sign text and making it glow. +- Fixed dead bush being able to be placed on some invalid blocks (e.g. stone). +- TNT can now be ignited by fire charges. +- Vines can now only be placed on the side of full-cube blocks. +- Fixed sugarcane not being able to be placed on some blocks. + +### Items +- Added the following new items: + - Fire Charge + - Suspicious Stew From b6289e5807173ed9aaea1bb2f4799d18bf2e2c79 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 15:17:53 +0100 Subject: [PATCH 410/692] Release 5.0.0-ALPHA4 --- changelogs/5.0-alpha.md | 15 +++++++++++++-- src/VersionInfo.php | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 14e1a85ff..6eedae0ad 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -519,11 +519,14 @@ Released 24th September 2022. ## Core - Now targeting Minecraft: Bedrock 1.19.30. +- All tests and static analysis are now being run on PHP 8.1 as well as PHP 8.0. +- Silenced warning about Xdebug when it's loaded but disabled by `xdebug.mode` configuration. - A new `console.enable-input` option has been added to `pocketmine.yml`, which allows disabling the console reader in environments where it's not needed (e.g. a Docker container). This can be useful to save processor and memory resources. +- Console reader polling is now done on the main thread. Since the console reader communication is now done via sockets, there's no longer any reason for it to have its own thread. - Crashdumps now include JIT mode information for use by the Crash Archive. - -## Internals - Improved handling of "UI" inventories in network `InventoryManager`. Their contents are now synced correctly. +- Fixed cartography table recipes pretending to be smithing table recipes in `CraftingDataPacket`. +- Fixed incorrect key being used for saving entity type IDs in save data. ## API ### General @@ -574,6 +577,7 @@ Released 24th September 2022. - Introduced a new `TransactionBuilder` class, which considerably simplifies the process of constructing an `InventoryTransaction` from generic `setItem()` calls. - This is currently used to build server-side transactions for evicting the contents of the crafting grid when closing the main inventory. - This is planned for use with the new Minecraft Bedrock item stack request system. +- Improved PHPStan type information available for `Inventory` and `BaseInventory`. ### `pocketmine\item` - The following API methods have been changed: @@ -595,6 +599,9 @@ Released 24th September 2022. - `GlobalBlockStateHandlers::getDeserializer()` now returns `BlockStateToObjectDeserializer` directly instead of `BlockStateDeserializer`. ## Gameplay +### General +- Spectator players are no longer able to acquire blocks by block picking that they don't already have in their inventories. The behaviour is now the same as survival mode. + ### Blocks - Coral and coral fans now behave correctly when placed out of water (they no longer immediately die). - Added support for dyeing sign text and making it glow. @@ -607,3 +614,7 @@ Released 24th September 2022. - Added the following new items: - Fire Charge - Suspicious Stew + +### Effects +- Updated damage modifier amounts for Instant Damage to be more in line with vanilla. +- Updated duration modifier amounts for Regeneration to be more like vanilla. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 6ea4844cc..ff117131f 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA4"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 18c9ccb01cd508bcca9d78999f8d620df428eeb6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 15:17:54 +0100 Subject: [PATCH 411/692] 5.0.0-ALPHA5 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index ff117131f..b4d3c92b5 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA4"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA5"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From f6a99499423aecdd872f6eeb7b9728cf73d6164c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 15:35:49 +0100 Subject: [PATCH 412/692] Remove PlayerCommandPreprocessEvent closes #4284 --- .../player/PlayerCommandPreprocessEvent.php | 62 ------------------- src/player/Player.php | 14 +---- 2 files changed, 3 insertions(+), 73 deletions(-) delete mode 100644 src/event/player/PlayerCommandPreprocessEvent.php diff --git a/src/event/player/PlayerCommandPreprocessEvent.php b/src/event/player/PlayerCommandPreprocessEvent.php deleted file mode 100644 index 5cbed294b..000000000 --- a/src/event/player/PlayerCommandPreprocessEvent.php +++ /dev/null @@ -1,62 +0,0 @@ -player = $player; - } - - public function getMessage() : string{ - return $this->message; - } - - public function setMessage(string $message) : void{ - $this->message = $message; - } - - public function setPlayer(Player $player) : void{ - $this->player = $player; - } -} diff --git a/src/player/Player.php b/src/player/Player.php index 75c87ff80..5ced7dd25 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -51,7 +51,6 @@ use pocketmine\event\player\PlayerBedLeaveEvent; use pocketmine\event\player\PlayerBlockPickEvent; use pocketmine\event\player\PlayerChangeSkinEvent; use pocketmine\event\player\PlayerChatEvent; -use pocketmine\event\player\PlayerCommandPreprocessEvent; use pocketmine\event\player\PlayerDeathEvent; use pocketmine\event\player\PlayerDisplayNameChangeEvent; use pocketmine\event\player\PlayerDropItemEvent; @@ -1401,19 +1400,12 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $messagePart = substr($messagePart, 1); } - $ev = new PlayerCommandPreprocessEvent($this, $messagePart); - $ev->call(); - - if($ev->isCancelled()){ - break; - } - - if(strpos($ev->getMessage(), "/") === 0){ + if(strpos($messagePart, "/") === 0){ Timings::$playerCommand->startTiming(); - $this->server->dispatchCommand($ev->getPlayer(), substr($ev->getMessage(), 1)); + $this->server->dispatchCommand($this, substr($messagePart, 1)); Timings::$playerCommand->stopTiming(); }else{ - $ev = new PlayerChatEvent($this, $ev->getMessage(), $this->server->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_USERS)); + $ev = new PlayerChatEvent($this, $messagePart, $this->server->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_USERS)); $ev->call(); if(!$ev->isCancelled()){ $this->server->broadcastMessage($this->getServer()->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients()); From 1bc8fb18517de273e11450217bed38dbb9b93cf8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 16:32:02 +0100 Subject: [PATCH 413/692] BlockStateToObjectDeserializer: reduce code duplication in legacy slab handling --- .../BlockStateToObjectDeserializer.php | 36 +++++-------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index f73a071e9..7677d7cf6 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -99,13 +99,13 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ } /** - * @phpstan-param \Closure() : Slab $getBlock + * @phpstan-param \Closure(Reader) : Slab $getBlock */ public function mapSlab(string $singleId, string $doubleId, \Closure $getBlock) : void{ - $this->map($singleId, fn(Reader $in) : Slab => $getBlock()->setSlabType($in->readSlabPosition())); + $this->map($singleId, fn(Reader $in) : Slab => $getBlock($in)->setSlabType($in->readSlabPosition())); $this->map($doubleId, function(Reader $in) use ($getBlock) : Slab{ $in->ignored(StateNames::TOP_SLOT_BIT); - return $getBlock()->setSlabType(SlabType::DOUBLE()); + return $getBlock($in)->setSlabType(SlabType::DOUBLE()); }); } @@ -682,26 +682,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ default => throw $in->badValueException(StateNames::DOUBLE_PLANT_TYPE, $type), })->setTop($in->readBool(StateNames::UPPER_BLOCK_BIT)); }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab1Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB2, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab2Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB3, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab3Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_STONE_BLOCK_SLAB4, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapStoneSlab4Type($in)->setSlabType(SlabType::DOUBLE()); - }); - $this->map(Ids::DOUBLE_WOODEN_SLAB, function(Reader $in) : Block{ - $in->ignored(StateNames::TOP_SLOT_BIT); //useless for double slabs - return Helper::mapWoodenSlabType($in)->setSlabType(SlabType::DOUBLE()); - }); $this->mapStairs(Ids::END_BRICK_STAIRS, fn() => Blocks::END_STONE_BRICK_STAIRS()); $this->map(Ids::END_PORTAL_FRAME, function(Reader $in) : Block{ return Blocks::END_PORTAL_FRAME() @@ -1206,10 +1186,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->mapStairs(Ids::STONE_BRICK_STAIRS, fn() => Blocks::STONE_BRICK_STAIRS()); $this->map(Ids::STONE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::STONE_BUTTON(), $in)); $this->map(Ids::STONE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::STONE_PRESSURE_PLATE(), $in)); - $this->map(Ids::STONE_BLOCK_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_BLOCK_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_BLOCK_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)->setSlabType($in->readSlabPosition())); - $this->map(Ids::STONE_BLOCK_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)->setSlabType($in->readSlabPosition())); + $this->mapSlab(Ids::STONE_BLOCK_SLAB, Ids::DOUBLE_STONE_BLOCK_SLAB, fn(Reader $in) => Helper::mapStoneSlab1Type($in)); + $this->mapSlab(Ids::STONE_BLOCK_SLAB2, Ids::DOUBLE_STONE_BLOCK_SLAB2, fn(Reader $in) => Helper::mapStoneSlab2Type($in)); + $this->mapSlab(Ids::STONE_BLOCK_SLAB3, Ids::DOUBLE_STONE_BLOCK_SLAB3, fn(Reader $in) => Helper::mapStoneSlab3Type($in)); + $this->mapSlab(Ids::STONE_BLOCK_SLAB4, Ids::DOUBLE_STONE_BLOCK_SLAB4, fn(Reader $in) => Helper::mapStoneSlab4Type($in)); $this->mapStairs(Ids::STONE_STAIRS, fn() => Blocks::COBBLESTONE_STAIRS()); $this->map(Ids::STONEBRICK, function(Reader $in) : Block{ return match($type = $in->readString(StateNames::STONE_BRICK_TYPE)){ @@ -1349,7 +1329,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::WOODEN_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::OAK_BUTTON(), $in)); $this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in)); $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in)); - $this->map(Ids::WOODEN_SLAB, fn(Reader $in) => Helper::mapWoodenSlabType($in)->setSlabType($in->readSlabPosition())); + $this->mapSlab(Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB, fn(Reader $in) => Helper::mapWoodenSlabType($in)); $this->map(Ids::WOOL, function(Reader $in) : Block{ return Blocks::WOOL() ->setColor($in->readColor()); From ab0202ba294c6a151b0f5f473cac782170144f2b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Sep 2022 18:14:18 +0100 Subject: [PATCH 414/692] Block: correct documentation for getIdInfo() on PM5 --- src/block/Block.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 228684896..24a5d917f 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -77,8 +77,8 @@ class Block{ } /** - * Returns an object containing information about how to identify and store this block type, such as its legacy - * numeric ID(s), tile type (if any), and legacy variant metadata. + * Returns an object containing information about how to identify and store this block type, such as type ID and + * tile type (if any). */ public function getIdInfo() : BlockIdentifier{ return $this->idInfo; From 383dc2a2b9ca3a87f330391cfb998651cb06b5b5 Mon Sep 17 00:00:00 2001 From: Alexey <45711510+Gaprix@users.noreply.github.com> Date: Wed, 28 Sep 2022 20:18:53 +0300 Subject: [PATCH 415/692] Fix the copper block scrape sound (#5147) Co-authored-by: Dylan T --- src/block/utils/CopperTrait.php | 4 ++-- src/world/sound/ScrapeSound.php | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/world/sound/ScrapeSound.php diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 51d269b42..6bbb4fa37 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -34,7 +34,7 @@ use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\sound\CopperWaxApplySound; use pocketmine\world\sound\CopperWaxRemoveSound; -use pocketmine\world\sound\ItemUseOnBlockSound; +use pocketmine\world\sound\ScrapeSound; trait CopperTrait{ private CopperOxidation $oxidation; @@ -93,7 +93,7 @@ trait CopperTrait{ $this->oxidation = $previousOxidation; $this->position->getWorld()->setBlock($this->position, $this); //TODO: turquoise particles are supposed to appear when removing oxidation - $this->position->getWorld()->addSound($this->position, new ItemUseOnBlockSound($this)); + $this->position->getWorld()->addSound($this->position, new ScrapeSound()); $item->applyDamage(1); return true; } diff --git a/src/world/sound/ScrapeSound.php b/src/world/sound/ScrapeSound.php new file mode 100644 index 000000000..39f35adab --- /dev/null +++ b/src/world/sound/ScrapeSound.php @@ -0,0 +1,34 @@ + Date: Wed, 28 Sep 2022 12:19:15 -0500 Subject: [PATCH 416/692] Implement Turtle Shell (#5235) --- .../ItemSerializerDeserializerRegistrar.php | 1 + src/entity/Living.php | 7 ++++ src/item/Item.php | 9 ++++ src/item/ItemTypeIds.php | 3 +- src/item/StringToItemParser.php | 1 + src/item/TurtleHelmet.php | 41 +++++++++++++++++++ src/item/VanillaItems.php | 2 + 7 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/item/TurtleHelmet.php diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index 62ab3d7f3..c213397c9 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -350,6 +350,7 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Item(Ids::SWEET_BERRIES, Items::SWEET_BERRIES()); $this->map1to1Item(Ids::TOTEM_OF_UNDYING, Items::TOTEM()); $this->map1to1Item(Ids::TROPICAL_FISH, Items::CLOWNFISH()); + $this->map1to1Item(Ids::TURTLE_HELMET, Items::TURTLE_HELMET()); $this->map1to1Item(Ids::VILLAGER_SPAWN_EGG, Items::VILLAGER_SPAWN_EGG()); $this->map1to1Item(Ids::WARPED_SIGN, Items::WARPED_SIGN()); $this->map1to1Item(Ids::WATER_BUCKET, Items::WATER_BUCKET()); diff --git a/src/entity/Living.php b/src/entity/Living.php index 11e59031a..30a0b68d4 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -610,6 +610,13 @@ abstract class Living extends Entity{ if($this->doAirSupplyTick($tickDiff)){ $hasUpdate = true; } + + foreach($this->armorInventory->getContents() as $index => $item){ + if($item->onTickWorn($this)){ + $hasUpdate = true; + $this->armorInventory->setItem($index, $item); + } + } } if($this->attackTime > 0){ diff --git a/src/item/Item.php b/src/item/Item.php index 32bf0ff44..ed516adc0 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -36,6 +36,7 @@ use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; +use pocketmine\entity\Living; use pocketmine\item\enchantment\EnchantmentInstance; use pocketmine\math\Vector3; use pocketmine\nbt\LittleEndianNbtSerializer; @@ -559,6 +560,14 @@ class Item implements \JsonSerializable{ return false; } + /** + * Called when this item is being worn by an entity. + * Returns whether it did something. + */ + public function onTickWorn(Living $entity) : bool{ + return false; + } + /** * Returns the number of ticks a player must wait before activating this item again. */ diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index a36526aca..cc4be26d4 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -298,8 +298,9 @@ final class ItemTypeIds{ public const LINGERING_POTION = 20259; public const FIRE_CHARGE = 20260; public const SUSPICIOUS_STEW = 20261; + public const TURTLE_HELMET = 20262; - public const FIRST_UNUSED_ITEM_ID = 20262; + public const FIRST_UNUSED_ITEM_ID = 20263; private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 66378551b..c3dfa6ecd 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1486,6 +1486,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("thick_potion", fn() => Items::POTION()->setType(PotionType::THICK())); $result->register("thick_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::THICK())); $result->register("totem", fn() => Items::TOTEM()); + $result->register("turtle_helmet", fn() => Items::TURTLE_HELMET()); $result->register("turtle_master_potion", fn() => Items::POTION()->setType(PotionType::TURTLE_MASTER())); $result->register("turtle_master_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::TURTLE_MASTER())); $result->register("turtle_shell_piece", fn() => Items::SCUTE()); diff --git a/src/item/TurtleHelmet.php b/src/item/TurtleHelmet.php new file mode 100644 index 000000000..2ee1d74d2 --- /dev/null +++ b/src/item/TurtleHelmet.php @@ -0,0 +1,41 @@ +isUnderwater()){ + $entity->getEffects()->add(new EffectInstance(VanillaEffects::WATER_BREATHING(), 200, 0, false)); + return true; + } + + return false; + } +} diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 93634d2bc..f9e786237 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -289,6 +289,7 @@ use pocketmine\world\World; * @method static SuspiciousStew SUSPICIOUS_STEW() * @method static SweetBerries SWEET_BERRIES() * @method static Totem TOTEM() + * @method static TurtleHelmet TURTLE_HELMET() * @method static SpawnEgg VILLAGER_SPAWN_EGG() * @method static ItemBlockWallOrFloor WARPED_SIGN() * @method static LiquidBucket WATER_BUCKET() @@ -616,6 +617,7 @@ final class VanillaItems{ self::register("iron_helmet", new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); self::register("leather_cap", new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); self::register("netherite_helmet", new Armor(new IID(Ids::NETHERITE_HELMET), "Netherite Helmet", new ArmorTypeInfo(3, 408, ArmorInventory::SLOT_HEAD, 3, true))); + self::register("turtle_helmet", new TurtleHelmet(new IID(Ids::TURTLE_HELMET), "Turtle Shell", new ArmorTypeInfo(2, 276, ArmorInventory::SLOT_HEAD))); self::register("chainmail_leggings", new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS, 2))); From 0edf2ea6a4fbc60740e1d226778b53ae33e6be14 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 29 Sep 2022 21:50:15 +0100 Subject: [PATCH 417/692] ConcretePowder: fix CS --- src/block/ConcretePowder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/ConcretePowder.php b/src/block/ConcretePowder.php index 8a39daa0d..02fa31adb 100644 --- a/src/block/ConcretePowder.php +++ b/src/block/ConcretePowder.php @@ -54,7 +54,7 @@ class ConcretePowder extends Opaque implements Fallable{ } public function tickFalling() : ?Block{ - if ($this->getAdjacentWater() === null) { + if($this->getAdjacentWater() === null){ return null; } return VanillaBlocks::CONCRETE()->setColor($this->color); From db7cee6f224c25da9d6ddf7f674f3bf18fdbdc29 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 11 Oct 2022 22:06:03 +0100 Subject: [PATCH 418/692] Player: check if the item meaningfully changed before discarding it in creative fixes #5220 --- src/player/Player.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/player/Player.php b/src/player/Player.php index 126951811..74616b23f 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -1473,15 +1473,27 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ private function returnItemsFromAction(Item $oldHeldItem, Item $newHeldItem, array $extraReturnedItems) : void{ $heldItemChanged = false; - if($this->hasFiniteResources()){ - if(!$newHeldItem->equalsExact($oldHeldItem) && $oldHeldItem->equalsExact($this->inventory->getItemInHand())){ + + if(!$newHeldItem->equalsExact($oldHeldItem) && $oldHeldItem->equalsExact($this->inventory->getItemInHand())){ + //determine if the item was changed in some meaningful way, or just damaged/changed count + //if it was really changed we always need to set it, whether we have finite resources or not + $newReplica = clone $oldHeldItem; + $newReplica->setCount($newHeldItem->getCount()); + if($newReplica instanceof Durable && $newHeldItem instanceof Durable){ + $newReplica->setDamage($newHeldItem->getDamage()); + } + $damagedOrDeducted = $newReplica->equalsExact($newHeldItem); + + if(!$damagedOrDeducted || $this->hasFiniteResources()){ if($newHeldItem instanceof Durable && $newHeldItem->isBroken()){ $this->broadcastSound(new ItemBreakSound()); } $this->inventory->setItemInHand($newHeldItem); $heldItemChanged = true; } - }else{ + } + + if(!$heldItemChanged){ $newHeldItem = $oldHeldItem; } From f88ae938974529bced853635f3cd013885b91cba Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Oct 2022 16:43:36 +0100 Subject: [PATCH 419/692] BC break: Replaced webmozart/path-util with symfony/filesystem, closes #5332 --- build/generate-known-translation-apis.php | 2 +- composer.json | 2 +- composer.lock | 423 +++++++++++++----- src/MemoryManager.php | 2 +- src/PocketMine.php | 2 +- src/Server.php | 2 +- src/command/defaults/DumpMemoryCommand.php | 2 +- src/command/defaults/TimingsCommand.php | 2 +- .../ConsoleReaderChildProcessDaemon.php | 2 +- .../CraftingManagerFromDataHelper.php | 2 +- src/crash/CrashDump.php | 2 +- .../bedrock/LegacyBiomeIdToStringIdMap.php | 2 +- .../bedrock/LegacyEntityIdToStringIdMap.php | 2 +- .../upgrade/BlockStateUpgradeSchemaUtils.php | 2 +- .../upgrade/LegacyBlockIdToStringIdMap.php | 2 +- src/data/bedrock/item/BlockItemIdMap.php | 2 +- .../upgrade/ItemIdMetaUpgradeSchemaUtils.php | 2 +- .../upgrade/LegacyItemIdToStringIdMap.php | 2 +- .../item/upgrade/R12ItemIdToBlockIdMap.php | 2 +- src/inventory/CreativeInventory.php | 2 +- src/item/LegacyStringToItemParser.php | 2 +- src/lang/Language.php | 2 +- src/network/mcpe/cache/StaticPacketCache.php | 2 +- .../mcpe/convert/GlobalItemTypeDictionary.php | 2 +- .../mcpe/convert/RuntimeBlockMapping.php | 2 +- src/plugin/PluginBase.php | 2 +- src/plugin/PluginManager.php | 2 +- src/resourcepacks/ResourcePackManager.php | 2 +- src/scheduler/DumpWorkerMemoryTask.php | 2 +- src/utils/Config.php | 2 +- src/utils/Filesystem.php | 2 +- src/wizard/SetupWizard.php | 2 +- src/world/WorldManager.php | 2 +- src/world/format/io/FormatConverter.php | 2 +- .../format/io/GlobalBlockStateHandlers.php | 2 +- .../format/io/GlobalItemDataHandlers.php | 2 +- src/world/format/io/data/BedrockWorldData.php | 2 +- src/world/format/io/data/JavaWorldData.php | 2 +- src/world/format/io/leveldb/LevelDB.php | 2 +- .../format/io/region/RegionWorldProvider.php | 2 +- .../io/region/WritableRegionWorldProvider.php | 2 +- .../format/io/region/RegionLoaderTest.php | 2 +- tools/generate-item-upgrade-schema.php | 2 +- tools/generate-permission-doc.php | 2 +- tools/simulate-chunk-selector.php | 2 +- 45 files changed, 357 insertions(+), 154 deletions(-) diff --git a/build/generate-known-translation-apis.php b/build/generate-known-translation-apis.php index e799735c0..af617c523 100644 --- a/build/generate-known-translation-apis.php +++ b/build/generate-known-translation-apis.php @@ -25,7 +25,7 @@ namespace pocketmine\build\generate_known_translation_apis; use pocketmine\lang\Translatable; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_map; use function count; use function dirname; diff --git a/composer.json b/composer.json index 069821e87..9787b01ac 100644 --- a/composer.json +++ b/composer.json @@ -52,7 +52,7 @@ "pocketmine/raklib-ipc": "^0.1.0", "pocketmine/snooze": "^0.3.0", "ramsey/uuid": "^4.1", - "webmozart/path-util": "^2.3" + "symfony/filesystem": "^5.4" }, "require-dev": { "phpstan/phpstan": "1.8.8", diff --git a/composer.lock b/composer.lock index 8ac56d931..cf5fcfcc8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "76009ed4482b5d406cac5d9cd83e1ec4", + "content-hash": "94c6278cb07e5bfe8b20c93c17b59135", "packages": [ { "name": "adhocore/json-comment", @@ -1076,6 +1076,318 @@ ], "time": "2022-09-16T03:22:46+00:00" }, + { + "name": "symfony/filesystem", + "version": "v5.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-21T19:53:16+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-10T07:21:04+00:00" + }, { "name": "symfony/polyfill-php81", "version": "v1.26.0", @@ -1154,115 +1466,6 @@ } ], "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" } ], "packages-dev": [ diff --git a/src/MemoryManager.php b/src/MemoryManager.php index 49a728c89..cf7bc745d 100644 --- a/src/MemoryManager.php +++ b/src/MemoryManager.php @@ -30,7 +30,7 @@ use pocketmine\scheduler\GarbageCollectionTask; use pocketmine\timings\Timings; use pocketmine\utils\Process; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function arsort; use function count; use function fclose; diff --git a/src/PocketMine.php b/src/PocketMine.php index b2e9a57a7..faccb27e1 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -34,7 +34,7 @@ namespace pocketmine { use pocketmine\utils\Timezone; use pocketmine\utils\Utils; use pocketmine\wizard\SetupWizard; - use Webmozart\PathUtil\Path; + use Symfony\Component\Filesystem\Path; use function defined; use function extension_loaded; use function function_exists; diff --git a/src/Server.php b/src/Server.php index 541e1ae9f..d8d22f520 100644 --- a/src/Server.php +++ b/src/Server.php @@ -115,7 +115,7 @@ use pocketmine\world\World; use pocketmine\world\WorldCreationOptions; use pocketmine\world\WorldManager; use Ramsey\Uuid\UuidInterface; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_sum; use function base64_encode; use function cli_set_process_title; diff --git a/src/command/defaults/DumpMemoryCommand.php b/src/command/defaults/DumpMemoryCommand.php index 3844199a1..d118fb06e 100644 --- a/src/command/defaults/DumpMemoryCommand.php +++ b/src/command/defaults/DumpMemoryCommand.php @@ -25,7 +25,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\CommandSender; use pocketmine\permission\DefaultPermissionNames; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function date; class DumpMemoryCommand extends VanillaCommand{ diff --git a/src/command/defaults/TimingsCommand.php b/src/command/defaults/TimingsCommand.php index 9a5076072..ae736b64f 100644 --- a/src/command/defaults/TimingsCommand.php +++ b/src/command/defaults/TimingsCommand.php @@ -35,7 +35,7 @@ use pocketmine\timings\TimingsHandler; use pocketmine\utils\InternetException; use pocketmine\utils\InternetRequestResult; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function count; use function fclose; use function file_exists; diff --git a/src/console/ConsoleReaderChildProcessDaemon.php b/src/console/ConsoleReaderChildProcessDaemon.php index a0c689d37..138559f06 100644 --- a/src/console/ConsoleReaderChildProcessDaemon.php +++ b/src/console/ConsoleReaderChildProcessDaemon.php @@ -25,7 +25,7 @@ namespace pocketmine\console; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function base64_encode; use function fgets; use function fopen; diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index e48b20ec5..6b0dd1929 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -41,7 +41,7 @@ use pocketmine\item\Item; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalItemDataHandlers; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function base64_decode; use function file_get_contents; use function get_debug_type; diff --git a/src/crash/CrashDump.php b/src/crash/CrashDump.php index e724ea217..e743a6704 100644 --- a/src/crash/CrashDump.php +++ b/src/crash/CrashDump.php @@ -33,7 +33,7 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use pocketmine\VersionInfo; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function base64_encode; use function error_get_last; use function file; diff --git a/src/data/bedrock/LegacyBiomeIdToStringIdMap.php b/src/data/bedrock/LegacyBiomeIdToStringIdMap.php index b82dcf2f2..ef7117617 100644 --- a/src/data/bedrock/LegacyBiomeIdToStringIdMap.php +++ b/src/data/bedrock/LegacyBiomeIdToStringIdMap.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; final class LegacyBiomeIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; diff --git a/src/data/bedrock/LegacyEntityIdToStringIdMap.php b/src/data/bedrock/LegacyEntityIdToStringIdMap.php index 6ba3b64de..a86fbaf53 100644 --- a/src/data/bedrock/LegacyEntityIdToStringIdMap.php +++ b/src/data/bedrock/LegacyEntityIdToStringIdMap.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; final class LegacyEntityIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 923afde76..562635402 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -33,7 +33,7 @@ use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_map; use function count; use function file_get_contents; diff --git a/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php index bd0a14c79..f42dc6d8a 100644 --- a/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php +++ b/src/data/bedrock/block/upgrade/LegacyBlockIdToStringIdMap.php @@ -25,7 +25,7 @@ namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\LegacyToStringIdMap; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; final class LegacyBlockIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; diff --git a/src/data/bedrock/item/BlockItemIdMap.php b/src/data/bedrock/item/BlockItemIdMap.php index 89ae14f78..04c4058ff 100644 --- a/src/data/bedrock/item/BlockItemIdMap.php +++ b/src/data/bedrock/item/BlockItemIdMap.php @@ -26,7 +26,7 @@ namespace pocketmine\data\bedrock\item; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_flip; use function file_get_contents; use function is_array; diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php index 441ca02ee..0d315819c 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php @@ -25,7 +25,7 @@ namespace pocketmine\data\bedrock\item\upgrade; use pocketmine\data\bedrock\item\upgrade\model\ItemIdMetaUpgradeSchemaModel; use pocketmine\errorhandler\ErrorToExceptionHandler; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; use function gettype; use function is_object; diff --git a/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php index 62627d7f4..7ca1367fb 100644 --- a/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php +++ b/src/data/bedrock/item/upgrade/LegacyItemIdToStringIdMap.php @@ -25,7 +25,7 @@ namespace pocketmine\data\bedrock\item\upgrade; use pocketmine\data\bedrock\LegacyToStringIdMap; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; final class LegacyItemIdToStringIdMap extends LegacyToStringIdMap{ use SingletonTrait; diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php index 6c0cf5cd3..be8a070d9 100644 --- a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -26,7 +26,7 @@ namespace pocketmine\data\bedrock\item\upgrade; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; use function is_array; use function is_string; diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 5dd293b4c..ea5893f87 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -27,7 +27,7 @@ use pocketmine\crafting\CraftingManagerFromDataHelper; use pocketmine\crafting\json\ItemStackData; use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; final class CreativeInventory{ use SingletonTrait; diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index f8a14dde0..cc4ec2bfb 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -30,7 +30,7 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalItemDataHandlers; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function explode; use function file_get_contents; use function is_array; diff --git a/src/lang/Language.php b/src/lang/Language.php index 035726a16..c14708a05 100644 --- a/src/lang/Language.php +++ b/src/lang/Language.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\lang; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_filter; use function array_map; use function count; diff --git a/src/network/mcpe/cache/StaticPacketCache.php b/src/network/mcpe/cache/StaticPacketCache.php index b4e1a7150..c3eca501d 100644 --- a/src/network/mcpe/cache/StaticPacketCache.php +++ b/src/network/mcpe/cache/StaticPacketCache.php @@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\BiomeDefinitionListPacket; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\network\mcpe\protocol\types\CacheableNbt; use pocketmine\utils\SingletonTrait; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; class StaticPacketCache{ diff --git a/src/network/mcpe/convert/GlobalItemTypeDictionary.php b/src/network/mcpe/convert/GlobalItemTypeDictionary.php index 17fedd840..5b4381657 100644 --- a/src/network/mcpe/convert/GlobalItemTypeDictionary.php +++ b/src/network/mcpe/convert/GlobalItemTypeDictionary.php @@ -26,7 +26,7 @@ namespace pocketmine\network\mcpe\convert; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; final class GlobalItemTypeDictionary{ diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 20cea50cb..523afe026 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -31,7 +31,7 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use pocketmine\world\format\io\GlobalBlockStateHandlers; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; /** diff --git a/src/plugin/PluginBase.php b/src/plugin/PluginBase.php index e9bdc2f20..9b0ac2399 100644 --- a/src/plugin/PluginBase.php +++ b/src/plugin/PluginBase.php @@ -33,7 +33,7 @@ use pocketmine\Server; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Config; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function count; use function dirname; use function fclose; diff --git a/src/plugin/PluginManager.php b/src/plugin/PluginManager.php index 1e7797201..a3f4f1fcb 100644 --- a/src/plugin/PluginManager.php +++ b/src/plugin/PluginManager.php @@ -40,7 +40,7 @@ use pocketmine\Server; use pocketmine\timings\TimingsHandler; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_diff_key; use function array_key_exists; use function array_keys; diff --git a/src/resourcepacks/ResourcePackManager.php b/src/resourcepacks/ResourcePackManager.php index e6b37543a..d1482d8b6 100644 --- a/src/resourcepacks/ResourcePackManager.php +++ b/src/resourcepacks/ResourcePackManager.php @@ -25,7 +25,7 @@ namespace pocketmine\resourcepacks; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\utils\Config; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_keys; use function copy; use function count; diff --git a/src/scheduler/DumpWorkerMemoryTask.php b/src/scheduler/DumpWorkerMemoryTask.php index 98b5e8909..b1cf3840c 100644 --- a/src/scheduler/DumpWorkerMemoryTask.php +++ b/src/scheduler/DumpWorkerMemoryTask.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\scheduler; use pocketmine\MemoryManager; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; /** * Task used to dump memory from AsyncWorkers diff --git a/src/utils/Config.php b/src/utils/Config.php index a705a04cf..6fb9f3f4c 100644 --- a/src/utils/Config.php +++ b/src/utils/Config.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\utils; use pocketmine\errorhandler\ErrorToExceptionHandler; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_change_key_case; use function array_fill_keys; use function array_keys; diff --git a/src/utils/Filesystem.php b/src/utils/Filesystem.php index 20ec8b312..a4c1ff236 100644 --- a/src/utils/Filesystem.php +++ b/src/utils/Filesystem.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\utils; use pocketmine\errorhandler\ErrorToExceptionHandler; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function copy; use function dirname; use function fclose; diff --git a/src/wizard/SetupWizard.php b/src/wizard/SetupWizard.php index 8373b0e8b..c9170bd8d 100644 --- a/src/wizard/SetupWizard.php +++ b/src/wizard/SetupWizard.php @@ -39,7 +39,7 @@ use pocketmine\utils\Internet; use pocketmine\utils\InternetException; use pocketmine\utils\Utils; use pocketmine\VersionInfo; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function fgets; use function sleep; use function strtolower; diff --git a/src/world/WorldManager.php b/src/world/WorldManager.php index 83f7aac98..1c26d494b 100644 --- a/src/world/WorldManager.php +++ b/src/world/WorldManager.php @@ -39,7 +39,7 @@ use pocketmine\world\format\io\WorldProviderManager; use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\generator\InvalidGeneratorOptionsException; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_keys; use function array_shift; use function assert; diff --git a/src/world/format/io/FormatConverter.php b/src/world/format/io/FormatConverter.php index 48f4d67b9..5f93f3a7b 100644 --- a/src/world/format/io/FormatConverter.php +++ b/src/world/format/io/FormatConverter.php @@ -27,7 +27,7 @@ use pocketmine\utils\Filesystem; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\generator\normal\Normal; use pocketmine\world\WorldCreationOptions; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function basename; use function crc32; use function file_exists; diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 95d36417f..36202fe9f 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -33,7 +33,7 @@ use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; use pocketmine\errorhandler\ErrorToExceptionHandler; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php index 850a679a1..dab291b58 100644 --- a/src/world/format/io/GlobalItemDataHandlers.php +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -29,7 +29,7 @@ use pocketmine\data\bedrock\item\upgrade\ItemDataUpgrader; use pocketmine\data\bedrock\item\upgrade\ItemIdMetaUpgradeSchemaUtils; use pocketmine\data\bedrock\item\upgrade\LegacyItemIdToStringIdMap; use pocketmine\data\bedrock\item\upgrade\R12ItemIdToBlockIdMap; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH; final class GlobalItemDataHandlers{ diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 5378be7f2..9cdeef0fc 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -38,7 +38,7 @@ use pocketmine\world\generator\Flat; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\World; use pocketmine\world\WorldCreationOptions; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_get_contents; use function file_put_contents; use function strlen; diff --git a/src/world/format/io/data/JavaWorldData.php b/src/world/format/io/data/JavaWorldData.php index e57bbe941..e53d857ad 100644 --- a/src/world/format/io/data/JavaWorldData.php +++ b/src/world/format/io/data/JavaWorldData.php @@ -35,7 +35,7 @@ use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\World; use pocketmine\world\WorldCreationOptions; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function ceil; use function file_get_contents; use function file_put_contents; diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 4d8794e31..c57ebdb6b 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -50,7 +50,7 @@ use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; use pocketmine\world\WorldCreationOptions; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function array_map; use function array_values; use function chr; diff --git a/src/world/format/io/region/RegionWorldProvider.php b/src/world/format/io/region/RegionWorldProvider.php index c8c52321d..967370c41 100644 --- a/src/world/format/io/region/RegionWorldProvider.php +++ b/src/world/format/io/region/RegionWorldProvider.php @@ -32,7 +32,7 @@ use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\data\JavaWorldData; use pocketmine\world\format\io\exception\CorruptedChunkException; use pocketmine\world\format\io\WorldData; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function assert; use function file_exists; use function is_dir; diff --git a/src/world/format/io/region/WritableRegionWorldProvider.php b/src/world/format/io/region/WritableRegionWorldProvider.php index fd4399474..56cc2ff71 100644 --- a/src/world/format/io/region/WritableRegionWorldProvider.php +++ b/src/world/format/io/region/WritableRegionWorldProvider.php @@ -27,7 +27,7 @@ use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\data\JavaWorldData; use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\WorldCreationOptions; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function file_exists; use function mkdir; diff --git a/tests/phpunit/world/format/io/region/RegionLoaderTest.php b/tests/phpunit/world/format/io/region/RegionLoaderTest.php index abf73a0f5..e4db90072 100644 --- a/tests/phpunit/world/format/io/region/RegionLoaderTest.php +++ b/tests/phpunit/world/format/io/region/RegionLoaderTest.php @@ -25,7 +25,7 @@ namespace pocketmine\world\format\io\region; use PHPUnit\Framework\TestCase; use pocketmine\world\format\ChunkException; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function bin2hex; use function clearstatcache; use function file_exists; diff --git a/tools/generate-item-upgrade-schema.php b/tools/generate-item-upgrade-schema.php index 59fab8026..31a7467bf 100644 --- a/tools/generate-item-upgrade-schema.php +++ b/tools/generate-item-upgrade-schema.php @@ -30,7 +30,7 @@ declare(strict_types=1); namespace pocketmine\tools\generate_item_upgrade_schema; use pocketmine\errorhandler\ErrorToExceptionHandler; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function count; use function dirname; use function file_get_contents; diff --git a/tools/generate-permission-doc.php b/tools/generate-permission-doc.php index 7d66740aa..fd04f1a29 100644 --- a/tools/generate-permission-doc.php +++ b/tools/generate-permission-doc.php @@ -27,7 +27,7 @@ use pocketmine\permission\DefaultPermissions; use pocketmine\permission\PermissionManager; use pocketmine\utils\Utils; use pocketmine\VersionInfo; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function count; use function dirname; use function fclose; diff --git a/tools/simulate-chunk-selector.php b/tools/simulate-chunk-selector.php index e360a96e9..81beb6bb3 100644 --- a/tools/simulate-chunk-selector.php +++ b/tools/simulate-chunk-selector.php @@ -28,7 +28,7 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Utils; use pocketmine\world\format\Chunk; use pocketmine\world\World; -use Webmozart\PathUtil\Path; +use Symfony\Component\Filesystem\Path; use function assert; use function count; use function dirname; From 774df0fa4c98de327891998fb0c63a4e90413f5b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Oct 2022 17:06:09 +0100 Subject: [PATCH 420/692] DataPacketSendEvent: added setPackets() this is an implicit BC break, since plugins may assume that the packets in this array aren't going to change. However, in practice, it's not likely to cause any real issues. --- src/Server.php | 1 + src/event/server/DataPacketSendEvent.php | 7 +++++++ src/network/mcpe/NetworkSession.php | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Server.php b/src/Server.php index d8d22f520..4cff7d3db 100644 --- a/src/Server.php +++ b/src/Server.php @@ -1359,6 +1359,7 @@ class Server{ return false; } $recipients = $ev->getTargets(); + $packets = $ev->getPackets(); /** @var PacketBroadcaster[] $broadcasters */ $broadcasters = []; diff --git a/src/event/server/DataPacketSendEvent.php b/src/event/server/DataPacketSendEvent.php index 8cbe47cf8..e7345abd4 100644 --- a/src/event/server/DataPacketSendEvent.php +++ b/src/event/server/DataPacketSendEvent.php @@ -56,4 +56,11 @@ class DataPacketSendEvent extends ServerEvent implements Cancellable{ public function getPackets() : array{ return $this->packets; } + + /** + * @param ClientboundPacket[] $packets + */ + public function setPackets(array $packets) : void{ + $this->packets = $packets; + } } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 3b868e0f5..5b36c0b06 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -436,8 +436,11 @@ class NetworkSession{ if($ev->isCancelled()){ return false; } + $packets = $ev->getPackets(); - $this->addToSendBuffer($packet); + foreach($packets as $evPacket){ + $this->addToSendBuffer($evPacket); + } if($immediate){ $this->flushSendBuffer(true); } From e1b0e00c6f886adcdd6944fe1418deae1f89b694 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Oct 2022 17:10:33 +0100 Subject: [PATCH 421/692] DataPacketSendEvent: add array type validation this API is used directly by plugins, so anything goes. --- src/event/server/DataPacketSendEvent.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/event/server/DataPacketSendEvent.php b/src/event/server/DataPacketSendEvent.php index e7345abd4..147d99db3 100644 --- a/src/event/server/DataPacketSendEvent.php +++ b/src/event/server/DataPacketSendEvent.php @@ -27,6 +27,7 @@ use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\ClientboundPacket; +use pocketmine\utils\Utils; /** * Called when packets are sent to network sessions. @@ -61,6 +62,7 @@ class DataPacketSendEvent extends ServerEvent implements Cancellable{ * @param ClientboundPacket[] $packets */ public function setPackets(array $packets) : void{ + Utils::validateArrayValueType($packets, function(ClientboundPacket $_) : void{}); $this->packets = $packets; } } From b70f7afbd65f1586e529347310d80bc12c0ac6ec Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Oct 2022 21:07:07 +0100 Subject: [PATCH 422/692] Fix CS according to latest version of php-cs-fixer --- src/block/WaterCauldron.php | 1 - src/block/utils/WoodType.php | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php index 8b5aa0330..88327a010 100644 --- a/src/block/WaterCauldron.php +++ b/src/block/WaterCauldron.php @@ -92,7 +92,6 @@ final class WaterCauldron extends FillableCauldron{ $tile->setPotionItem(null); } - /** @return Color|null */ public function getCustomWaterColor() : ?Color{ return $this->customWaterColor; } /** @return $this */ diff --git a/src/block/utils/WoodType.php b/src/block/utils/WoodType.php index e31f3a6da..5d3feaaec 100644 --- a/src/block/utils/WoodType.php +++ b/src/block/utils/WoodType.php @@ -74,9 +74,7 @@ final class WoodType{ public function isFlammable() : bool{ return $this->flammable; } - /** @return string|null */ public function getStandardLogSuffix() : ?string{ return $this->standardLogSuffix; } - /** @return string|null */ public function getAllSidedLogSuffix() : ?string{ return $this->allSidedLogSuffix; } } From bd01a919e55e06b34016a2e061f8a6f0ff1cb38a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 16 Oct 2022 16:57:10 +0100 Subject: [PATCH 423/692] Move command timings to Timings:: this avoids duplicate timings entries when command labels are changed and changed back, or if multiple command maps are in use. In addition, it also solves some PHPStan issues :) --- src/command/Command.php | 5 ----- src/command/FormattedCommandAlias.php | 6 ++++-- src/command/SimpleCommandMap.php | 6 ++++-- src/timings/Timings.php | 12 ++++++++++++ tests/phpstan/configs/actual-problems.neon | 20 -------------------- 5 files changed, 20 insertions(+), 29 deletions(-) diff --git a/src/command/Command.php b/src/command/Command.php index 24180416b..7ae9ae7c1 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -31,8 +31,6 @@ use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\Translatable; use pocketmine\permission\PermissionManager; use pocketmine\Server; -use pocketmine\timings\Timings; -use pocketmine\timings\TimingsHandler; use pocketmine\utils\BroadcastLoggerForwarder; use pocketmine\utils\TextFormat; use function explode; @@ -60,8 +58,6 @@ abstract class Command{ private ?string $permission = null; private ?string $permissionMessage = null; - public ?TimingsHandler $timings = null; - /** * @param string[] $aliases */ @@ -136,7 +132,6 @@ abstract class Command{ public function setLabel(string $name) : bool{ $this->nextLabel = $name; if(!$this->isRegistered()){ - $this->timings = new TimingsHandler(Timings::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Command: " . $name); $this->label = $name; return true; diff --git a/src/command/FormattedCommandAlias.php b/src/command/FormattedCommandAlias.php index 21d2c0e70..b6b466451 100644 --- a/src/command/FormattedCommandAlias.php +++ b/src/command/FormattedCommandAlias.php @@ -26,6 +26,7 @@ namespace pocketmine\command; use pocketmine\command\utils\CommandStringHelper; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; +use pocketmine\timings\Timings; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\TextFormat; use function array_map; @@ -82,14 +83,15 @@ class FormattedCommandAlias extends Command{ } if(($target = $commandMap->getCommand($commandLabel)) !== null){ - $target->timings->startTiming(); + $timings = Timings::getCommandDispatchTimings($target->getLabel()); + $timings->startTiming(); try{ $target->execute($sender, $commandLabel, $commandArgs); }catch(InvalidCommandSyntaxException $e){ $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage()))); }finally{ - $target->timings->stopTiming(); + $timings->stopTiming(); } }else{ $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::pocketmine_command_notFound($commandLabel, "/help")->prefix(TextFormat::RED))); diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 89824aa32..858cf4575 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -68,6 +68,7 @@ use pocketmine\command\utils\CommandStringHelper; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\Server; +use pocketmine\timings\Timings; use pocketmine\utils\TextFormat; use function array_shift; use function count; @@ -199,7 +200,8 @@ class SimpleCommandMap implements CommandMap{ $sentCommandLabel = array_shift($args); if($sentCommandLabel !== null && ($target = $this->getCommand($sentCommandLabel)) !== null){ - $target->timings->startTiming(); + $timings = Timings::getCommandDispatchTimings($target->getLabel()); + $timings->startTiming(); try{ if($target->testPermission($sender)){ @@ -208,7 +210,7 @@ class SimpleCommandMap implements CommandMap{ }catch(InvalidCommandSyntaxException $e){ $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage()))); }finally{ - $target->timings->stopTiming(); + $timings->stopTiming(); } return true; } diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 41ecd3bb1..d4b4f7560 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -93,6 +93,12 @@ abstract class Timings{ /** @var TimingsHandler[] */ public static array $pluginTaskTimingMap = []; + /** + * @var TimingsHandler[] + * @phpstan-var array + */ + private static array $commandTimingMap = []; + public static TimingsHandler $broadcastPackets; public static function init() : void{ @@ -227,4 +233,10 @@ abstract class Timings{ return self::$packetSendTimingMap[$pid]; } + + public static function getCommandDispatchTimings(string $commandName) : TimingsHandler{ + self::init(); + + return self::$commandTimingMap[$commandName] ??= new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Command - " . $commandName); + } } diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 638885452..893e2c1b4 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -470,26 +470,6 @@ parameters: count: 1 path: ../../../src/command/Command.php - - - message: "#^Cannot call method startTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#" - count: 1 - path: ../../../src/command/FormattedCommandAlias.php - - - - message: "#^Cannot call method stopTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#" - count: 1 - path: ../../../src/command/FormattedCommandAlias.php - - - - message: "#^Cannot call method startTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#" - count: 1 - path: ../../../src/command/SimpleCommandMap.php - - - - message: "#^Cannot call method stopTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#" - count: 1 - path: ../../../src/command/SimpleCommandMap.php - - message: "#^Cannot call method addParticle\\(\\) on pocketmine\\\\world\\\\World\\|null\\.$#" count: 1 From d1d5020c5381f894ab132737efc9b141a484f517 Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Tue, 18 Oct 2022 10:56:21 -0500 Subject: [PATCH 424/692] FallableTrait: add default implementation of tickFalling() to reduce Fallable pollution (#5350) this is only used by concrete powder currently, so it doesn't make much sense to reimplement it in every implementor of Fallable. --- src/block/Anvil.php | 4 ---- src/block/DragonEgg.php | 4 ---- src/block/Gravel.php | 4 ---- src/block/Sand.php | 4 ---- src/block/SnowLayer.php | 4 ---- src/block/utils/FallableTrait.php | 4 ++++ 6 files changed, 4 insertions(+), 20 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 0472e4cc7..d9c407409 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -95,8 +95,4 @@ class Anvil extends Transparent implements Fallable{ } return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } - - public function tickFalling() : ?Block{ - return null; - } } diff --git a/src/block/DragonEgg.php b/src/block/DragonEgg.php index 27a30a1c5..98809152d 100644 --- a/src/block/DragonEgg.php +++ b/src/block/DragonEgg.php @@ -44,10 +44,6 @@ class DragonEgg extends Transparent implements Fallable{ return 1; } - public function tickFalling() : ?Block{ - return null; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ $this->teleport(); return true; diff --git a/src/block/Gravel.php b/src/block/Gravel.php index 856449ce0..4bff2208f 100644 --- a/src/block/Gravel.php +++ b/src/block/Gravel.php @@ -45,8 +45,4 @@ class Gravel extends Opaque implements Fallable{ public function isAffectedBySilkTouch() : bool{ return true; } - - public function tickFalling() : ?Block{ - return null; - } } diff --git a/src/block/Sand.php b/src/block/Sand.php index 17fc80a20..df56b7348 100644 --- a/src/block/Sand.php +++ b/src/block/Sand.php @@ -28,8 +28,4 @@ use pocketmine\block\utils\FallableTrait; class Sand extends Opaque implements Fallable{ use FallableTrait; - - public function tickFalling() : ?Block{ - return null; - } } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 84620ebca..e3628f98a 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -116,10 +116,6 @@ class SnowLayer extends Flowable implements Fallable{ } } - public function tickFalling() : ?Block{ - return null; - } - public function getDropsForCompatibleTool(Item $item) : array{ return [ VanillaItems::SNOWBALL()->setCount(max(1, (int) floor($this->layers / 2))) diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index 1ed348dca..8e878b172 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -54,4 +54,8 @@ trait FallableTrait{ $fall->spawnToAll(); } } + + public function tickFalling() : ?Block{ + return null; + } } From 68e862b6fa26fec380ffc7ad6d9f9f2c4c7e561d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 4 Nov 2022 20:53:20 +0000 Subject: [PATCH 425/692] Scrub PHPStan baselines (next-major) --- phpstan.neon.dist | 1 - tests/phpstan/configs/actual-problems.neon | 2 +- tests/phpstan/configs/gc-hacks.neon | 3 --- 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 tests/phpstan/configs/gc-hacks.neon diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 6fc15b07a..4f24a676b 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,7 +1,6 @@ includes: - tests/phpstan/analyse-for-current-php-version.neon.php - tests/phpstan/configs/actual-problems.neon - - tests/phpstan/configs/gc-hacks.neon - tests/phpstan/configs/impossible-generics.neon - tests/phpstan/configs/php-bugs.neon - tests/phpstan/configs/phpstan-bugs.neon diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 1f334cecf..3d1976d7a 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -582,7 +582,7 @@ parameters: - message: "#^Cannot cast mixed to int\\.$#" - count: 3 + count: 2 path: ../../../src/item/Item.php - diff --git a/tests/phpstan/configs/gc-hacks.neon b/tests/phpstan/configs/gc-hacks.neon deleted file mode 100644 index 846a8dfe4..000000000 --- a/tests/phpstan/configs/gc-hacks.neon +++ /dev/null @@ -1,3 +0,0 @@ -parameters: - ignoreErrors: [] - From 1a5cc8212c8aa5643df3449468f239ac81898f22 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Nov 2022 14:23:17 +0000 Subject: [PATCH 426/692] World: fixed spawning in the void when the spawn terrain is higher than y=70 on default worlds fixes #5390 --- src/world/World.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/World.php b/src/world/World.php index 1f88256c3..0839dbe04 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -2794,8 +2794,8 @@ class World implements ChunkManager{ if($this->getBlockAt($x, $y, $z)->isFullCube()){ if($wasAir){ $y++; - break; } + break; }else{ $wasAir = true; } From 90305a0b9278f3d661c243c8b27d9748c567ae57 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 13 Nov 2022 14:47:37 +0000 Subject: [PATCH 427/692] Release 5.0.0-ALPHA5 --- changelogs/5.0-alpha.md | 29 +++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 6eedae0ad..f408d106b 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -618,3 +618,32 @@ Released 24th September 2022. ### Effects - Updated damage modifier amounts for Instant Damage to be more in line with vanilla. - Updated duration modifier amounts for Regeneration to be more like vanilla. + +# 5.0.0-ALPHA5 +Released 13th November 2022. + +**This release includes changes from [4.11.0-BETA2](https://github.com/pmmp/PocketMine-MP/releases/4.11.0-BETA2) and earlier, which may not be listed here.** + +## General +- Added support for Minecraft: Bedrock 1.19.40. +- Removed support for earlier versions. + +## API +### `pocketmine\block` +- `FallableTrait` now includes a default implementation of `tickFalling()`. + +### `pocketmine\event` +- The following API methods have been removed: + - `PlayerCommandPreprocessEvent` +- The following API methods have been added: + - `public DataPacketSendEvent->setPackets(list $packets) : void` + +## Gameplay +### General +- Fixed dyeing leather armour in cauldrons. + +### Blocks +- Copper blocks now play the correct scrape sound when using an axe on them. + +## Internals +- Moved command timings to `Timings`. \ No newline at end of file diff --git a/src/VersionInfo.php b/src/VersionInfo.php index b4d3c92b5..1b2165612 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA5"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From b3b8516661424ff904b45a1e4ee35c8963d9b045 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 13 Nov 2022 14:47:41 +0000 Subject: [PATCH 428/692] 5.0.0-ALPHA6 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 1b2165612..6955b826b 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA5"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA6"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 34839da757dc2657dfe3576d0c4be8c67f943669 Mon Sep 17 00:00:00 2001 From: zSALLAZAR <59490940+zSALLAZAR@users.noreply.github.com> Date: Tue, 15 Nov 2022 15:50:05 +0100 Subject: [PATCH 429/692] Fix missing sound when a projectile strikes an amethyst block (#5382) closes #5358 --- src/block/VanillaBlocks.php | 11 ++++++- src/world/sound/AmethystBlockChimeSound.php | 35 +++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/world/sound/AmethystBlockChimeSound.php diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 4b1c127e1..585bf759d 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -55,9 +55,13 @@ use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WoodType; +use pocketmine\entity\projectile\Projectile; use pocketmine\item\Item; use pocketmine\item\ToolTier; +use pocketmine\math\RayTraceResult; use pocketmine\utils\CloningRegistryTrait; +use pocketmine\world\sound\AmethystBlockChimeSound; +use pocketmine\world\sound\BlockPunchSound; use function mb_strtolower; /** @@ -1466,7 +1470,12 @@ final class VanillaBlocks{ private static function registerBlocksR17() : void{ //in java this can be acquired using any tool - seems to be a parity issue in bedrock - self::register("amethyst", new Opaque(new BID(Ids::AMETHYST), "Amethyst", new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD())))); + self::register("amethyst", new class(new BID(Ids::AMETHYST), "Amethyst", new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD()))) extends Opaque{ + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + $this->position->getWorld()->addSound($this->position, new AmethystBlockChimeSound()); + $this->position->getWorld()->addSound($this->position, new BlockPunchSound($this)); + } + }); self::register("calcite", new Opaque(new BID(Ids::CALCITE), "Calcite", new Info(BreakInfo::pickaxe(0.75, ToolTier::WOOD())))); self::register("tuff", new Opaque(new BID(Ids::TUFF), "Tuff", new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD(), 30.0)))); diff --git a/src/world/sound/AmethystBlockChimeSound.php b/src/world/sound/AmethystBlockChimeSound.php new file mode 100644 index 000000000..64efbb8ce --- /dev/null +++ b/src/world/sound/AmethystBlockChimeSound.php @@ -0,0 +1,35 @@ + Date: Tue, 15 Nov 2022 18:29:42 +0300 Subject: [PATCH 430/692] Implement Weeping & Twisting vines (#5396) --- src/block/BlockTypeIds.php | 4 +- src/block/NetherVines.php | 196 ++++++++++++++++++ src/block/VanillaBlocks.php | 6 + .../convert/BlockObjectToStateSerializer.php | 9 + .../BlockStateToObjectDeserializer.php | 8 + src/item/StringToItemParser.php | 2 + .../block_factory_consistency_check.json | 2 +- 7 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 src/block/NetherVines.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 487700ac0..3fdb44728 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -704,8 +704,10 @@ final class BlockTypeIds{ public const MANGROVE_ROOTS = 10677; public const MUDDY_MANGROVE_ROOTS = 10678; public const FROGLIGHT = 10679; + public const TWISTING_VINES = 10680; + public const WEEPING_VINES = 10681; - public const FIRST_UNUSED_BLOCK_ID = 10680; + public const FIRST_UNUSED_BLOCK_ID = 10682; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php new file mode 100644 index 000000000..5b7a46d76 --- /dev/null +++ b/src/block/NetherVines.php @@ -0,0 +1,196 @@ +growthFace = $growthFace; + parent::__construct($idInfo, $name, $typeInfo); + } + + public function getRequiredStateDataBits() : int{ + return 5; + } + + public function describeState(RuntimeDataWriter|RuntimeDataReader $w) : void{ + $w->boundedInt(5, 0, self::MAX_AGE, $this->age); + } + + public function getAge() : int{ + return $this->age; + } + + /** @return $this */ + public function setAge(int $age) : self{ + if($age < 0 || $age > self::MAX_AGE){ + throw new \InvalidArgumentException("Age must be in range 0-" . self::MAX_AGE); + } + + $this->age = $age; + return $this; + } + + public function isAffectedBySilkTouch() : bool{ + return true; + } + + public function ticksRandomly() : bool{ + return true; + } + + public function canClimb() : bool{ + return true; + } + + private function getSupportFace() : int{ + return Facing::opposite($this->growthFace); + } + + private function canBeSupportedBy(Block $block) : bool{ + return $block->getSupportType($this->getSupportFace())->hasCenterSupport() || $block->isSameType($this); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedBy($this->getSide($this->getSupportFace()))){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + /** + * Returns the block at the end of the vine structure furthest from the supporting block. + */ + private function seekToTip() : NetherVines{ + $top = $this; + while(($next = $top->getSide($this->growthFace)) instanceof NetherVines && $next->isSameType($this)){ + $top = $next; + } + return $top; + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canBeSupportedBy($blockReplace->getSide($this->getSupportFace()))){ + return false; + } + $this->age = mt_rand(0, self::MAX_AGE - 1); + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($item instanceof Fertilizer){ + if($this->grow($player, mt_rand(1, 5))){ + $item->pop(); + } + return true; + } + return false; + } + + public function onRandomTick() : void{ + if(mt_rand(1, 10) === 1 && $this->age < self::MAX_AGE){ + if($this->getSide($this->growthFace)->canBeReplaced()){ + $this->grow(null); + } + } + } + + private function grow(?Player $player, int $growthAmount = 1) : bool{ + $top = $this->seekToTip(); + $age = $top->getAge(); + $pos = $top->getPosition(); + $world = $pos->getWorld(); + $changedBlocks = 0; + + $tx = new BlockTransaction($world); + + for($i = 1; $i <= $growthAmount; $i++){ + $growthPos = $pos->getSide($this->growthFace, $i); + if(!$world->isInWorld($growthPos->getFloorX(), $growthPos->getFloorY(), $growthPos->getFloorZ()) || !$world->getBlock($growthPos)->canBeReplaced()){ + break; + } + $tx->addBlock($growthPos, (clone $top)->setAge(min(++$age, self::MAX_AGE))); + $changedBlocks++; + } + + if($changedBlocks > 0){ + $ev = new StructureGrowEvent($top, $tx, $player); + $ev->call(); + + if($ev->isCancelled()){ + return false; + } + + return $tx->apply(); + } + + return false; + } + + public function hasEntityCollision() : bool{ + return true; + } + + public function onEntityInside(Entity $entity) : bool{ + $entity->resetFallDistance(); + return false; + } + + protected function recalculateCollisionBoxes() : array{ + return []; + } + + public function getDropsForCompatibleTool(Item $item) : array{ + if(($item->getBlockToolType() & BlockToolType::SHEARS) !== 0 || mt_rand(1, 3) === 1){ + return [$this->asItem()]; + } + return []; + } + + public function getSupportType(int $facing) : SupportType{ + return SupportType::NONE(); + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 585bf759d..bfce7c41b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -58,6 +58,7 @@ use pocketmine\block\utils\WoodType; use pocketmine\entity\projectile\Projectile; use pocketmine\item\Item; use pocketmine\item\ToolTier; +use pocketmine\math\Facing; use pocketmine\math\RayTraceResult; use pocketmine\utils\CloningRegistryTrait; use pocketmine\world\sound\AmethystBlockChimeSound; @@ -695,6 +696,7 @@ use function mb_strtolower; * @method static Tripwire TRIPWIRE() * @method static TripwireHook TRIPWIRE_HOOK() * @method static Opaque TUFF() + * @method static NetherVines TWISTING_VINES() * @method static UnderwaterTorch UNDERWATER_TORCH() * @method static Vine VINES() * @method static WallBanner WALL_BANNER() @@ -715,6 +717,7 @@ use function mb_strtolower; * @method static Opaque WARPED_WART_BLOCK() * @method static Water WATER() * @method static WaterCauldron WATER_CAULDRON() + * @method static NetherVines WEEPING_VINES() * @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY() * @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT() * @method static Wheat WHEAT() @@ -1466,6 +1469,9 @@ final class VanillaBlocks{ self::register("crying_obsidian", new class(new BID(Ids::CRYING_OBSIDIAN), "Crying Obsidian", new Info(BreakInfo::pickaxe(35.0 /* 50 in Java */, ToolTier::DIAMOND(), 6000.0))) extends Opaque{ public function getLightLevel() : int{ return 10;} }); + + self::register("twisting_vines", new NetherVines(new BID(Ids::TWISTING_VINES), "Twisting Vines", new Info(BreakInfo::instant()), Facing::UP)); + self::register("weeping_vines", new NetherVines(new BID(Ids::WEEPING_VINES), "Weeping Vines", new Info(BreakInfo::instant()), Facing::DOWN)); } private static function registerBlocksR17() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 23a11412d..07e7ac4fb 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -93,6 +93,7 @@ use pocketmine\block\LitPumpkin; use pocketmine\block\Loom; use pocketmine\block\MelonStem; use pocketmine\block\NetherPortal; +use pocketmine\block\NetherVines; use pocketmine\block\NetherWartPlant; use pocketmine\block\Potato; use pocketmine\block\PoweredRail; @@ -1389,6 +1390,10 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ ->writeBool(StateNames::POWERED_BIT, $block->isPowered()) ->writeLegacyHorizontalFacing($block->getFacing()); }); + $this->map(Blocks::TWISTING_VINES(), function(NetherVines $block) : Writer{ + return Writer::create(Ids::TWISTING_VINES) + ->writeInt(StateNames::TWISTING_VINES_AGE, $block->getAge()); + }); $this->map(Blocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{ return Writer::create(Ids::UNDERWATER_TORCH) ->writeTorchFacing($block->getFacing()); @@ -1425,6 +1430,10 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); $this->map(Blocks::WARPED_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WARPED_WALL_SIGN))); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); + $this->map(Blocks::WEEPING_VINES(), function(NetherVines $block) : Writer{ + return Writer::create(Ids::WEEPING_VINES) + ->writeInt(StateNames::WEEPING_VINES_AGE, $block->getAge()); + }); $this->map(Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY(), function(WeightedPressurePlateHeavy $block) : Writer{ return Writer::create(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE) ->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength()); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index 7677d7cf6..b05effd4a 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -1257,6 +1257,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setFacing($in->readLegacyHorizontalFacing()) ->setPowered($in->readBool(StateNames::POWERED_BIT)); }); + $this->map(Ids::TWISTING_VINES, function(Reader $in) : Block{ + return Blocks::TWISTING_VINES() + ->setAge($in->readBoundedInt(StateNames::TWISTING_VINES_AGE, 0, 25)); + }); $this->map(Ids::UNDERWATER_TORCH, function(Reader $in) : Block{ return Blocks::UNDERWATER_TORCH() ->setFacing($in->readTorchFacing()); @@ -1315,6 +1319,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::WEATHERED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::WEATHERED())); $this->mapSlab(Ids::WEATHERED_CUT_COPPER_SLAB, Ids::WEATHERED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::WEATHERED())); $this->mapStairs(Ids::WEATHERED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::WEATHERED())); + $this->map(Ids::WEEPING_VINES, function(Reader $in) : Block{ + return Blocks::WEEPING_VINES() + ->setAge($in->readBoundedInt(StateNames::WEEPING_VINES_AGE, 0, 25)); + }); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); $this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){ diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c3dfa6ecd..6dbe55b79 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1054,6 +1054,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("trunk", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("trunk2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("tuff", fn() => Blocks::TUFF()); + $result->registerBlock("twisting_vines", fn() => Blocks::TWISTING_VINES()); $result->registerBlock("underwater_torch", fn() => Blocks::UNDERWATER_TORCH()); $result->registerBlock("undyed_shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("unlit_redstone_torch", fn() => Blocks::REDSTONE_TORCH()); @@ -1084,6 +1085,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("water_lily", fn() => Blocks::LILY_PAD()); $result->registerBlock("waterlily", fn() => Blocks::LILY_PAD()); $result->registerBlock("web", fn() => Blocks::COBWEB()); + $result->registerBlock("weeping_vines", fn() => Blocks::WEEPING_VINES()); $result->registerBlock("weighted_pressure_plate_heavy", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY()); $result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT()); $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index acb664eb8..0ff09efa1 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 1bc5e225abf9194b4d4e11bcd224f0590210175a Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Mon, 21 Nov 2022 17:38:18 +0300 Subject: [PATCH 431/692] Candle: Fix support type (#5422) --- src/block/Candle.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/block/Candle.php b/src/block/Candle.php index bda600edc..9afc4c6de 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\CandleTrait; +use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -94,6 +95,10 @@ class Candle extends Transparent{ ]; } + public function getSupportType(int $facing) : SupportType{ + return SupportType::NONE(); + } + protected function getCandleIfCompatibleType(Block $block) : ?Candle{ return $block instanceof Candle && $block->isSameType($this) ? $block : null; } From 23ae0c7cac79d29d5dc23030140dcc32b7d3c6cf Mon Sep 17 00:00:00 2001 From: zSALLAZAR <59490940+zSALLAZAR@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:32:15 +0100 Subject: [PATCH 432/692] Add Furnace->getType() : FurnaceType method (#5425) closes #4761 this targets next-major due to BC-breaking changes to Furnace::__construct() --- src/block/Furnace.php | 12 ++++++++++++ src/block/VanillaBlocks.php | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 8b86f3af6..2147169f2 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -26,6 +26,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Furnace as TileFurnace; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; +use pocketmine\crafting\FurnaceType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -37,8 +38,15 @@ class Furnace extends Opaque{ use FacesOppositePlacingPlayerTrait; use HorizontalFacingTrait; + protected FurnaceType $furnaceType; + protected bool $lit = false; + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, FurnaceType $furnaceType){ + $this->furnaceType = $furnaceType; + parent::__construct($idInfo, $name, $typeInfo); + } + public function getRequiredStateDataBits() : int{ return 3; } protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ @@ -46,6 +54,10 @@ class Furnace extends Opaque{ $w->bool($this->lit); } + public function getFurnaceType() : FurnaceType{ + return $this->furnaceType; + } + public function getLightLevel() : int{ return $this->lit ? 13 : 0; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index bfce7c41b..a4e70031b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -55,6 +55,7 @@ use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WoodType; +use pocketmine\crafting\FurnaceType; use pocketmine\entity\projectile\Projectile; use pocketmine\item\Item; use pocketmine\item\ToolTier; @@ -846,9 +847,9 @@ final class VanillaBlocks{ self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", $flowerTypeInfo)); self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", $flowerTypeInfo)); self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new Info(BreakInfo::pickaxe(2.5)))); - self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); - self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); - self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())))); + self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())), FurnaceType::FURNACE())); + self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())), FurnaceType::BLAST_FURNACE())); + self::register("smoker", new Furnace(new BID(Ids::SMOKER, TileSmoker::class), "Smoker", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())), FurnaceType::SMOKER())); $glassBreakInfo = new Info(new BreakInfo(0.3)); self::register("glass", new Glass(new BID(Ids::GLASS), "Glass", $glassBreakInfo)); From 3b6ff3c42b46a001020f0f61a09ac18e45475730 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Nov 2022 14:03:35 +0000 Subject: [PATCH 433/692] Apply union types in some places (BC breaks) --- src/block/utils/SignText.php | 5 +---- src/event/HandlerList.php | 7 ++----- src/event/HandlerListManager.php | 4 +--- src/permission/Permissible.php | 14 ++++--------- src/permission/PermissibleDelegateTrait.php | 22 +++++---------------- src/permission/PermissibleInternal.php | 14 ++++--------- src/permission/PermissionAttachment.php | 10 ++-------- src/permission/PermissionManager.php | 5 +---- src/permission/PermissionParser.php | 4 +--- src/plugin/PluginDescription.php | 2 +- src/thread/ThreadManager.php | 18 ++++------------- src/utils/Internet.php | 6 +++--- src/utils/Process.php | 2 +- 13 files changed, 30 insertions(+), 83 deletions(-) diff --git a/src/block/utils/SignText.php b/src/block/utils/SignText.php index 27e8b5c5e..1ea7de3d6 100644 --- a/src/block/utils/SignText.php +++ b/src/block/utils/SignText.php @@ -87,10 +87,7 @@ class SignText{ return $this->lines; } - /** - * @param int|string $index - */ - private function checkLineIndex($index) : void{ + private function checkLineIndex(int|string $index) : void{ if(!is_int($index)){ throw new \InvalidArgumentException("Index must be an integer"); } diff --git a/src/event/HandlerList.php b/src/event/HandlerList.php index 7d93c2ebe..57388cef5 100644 --- a/src/event/HandlerList.php +++ b/src/event/HandlerList.php @@ -57,10 +57,7 @@ class HandlerList{ } } - /** - * @param RegisteredListener|Listener|Plugin $object - */ - public function unregister($object) : void{ + public function unregister(RegisteredListener|Plugin|Listener $object) : void{ if($object instanceof Plugin || $object instanceof Listener){ foreach($this->handlerSlots as $priority => $list){ foreach($list as $hash => $listener){ @@ -71,7 +68,7 @@ class HandlerList{ } } } - }elseif($object instanceof RegisteredListener){ + }else{ if(isset($this->handlerSlots[$object->getPriority()][spl_object_id($object)])){ unset($this->handlerSlots[$object->getPriority()][spl_object_id($object)]); } diff --git a/src/event/HandlerListManager.php b/src/event/HandlerListManager.php index ecff0b85b..ab94674cf 100644 --- a/src/event/HandlerListManager.php +++ b/src/event/HandlerListManager.php @@ -40,10 +40,8 @@ class HandlerListManager{ /** * Unregisters all the listeners * If a Plugin or Listener is passed, all the listeners with that object will be removed - * - * @param Plugin|Listener|RegisteredListener|null $object */ - public function unregisterAll($object = null) : void{ + public function unregisterAll(RegisteredListener|Plugin|Listener|null $object = null) : void{ if($object instanceof Listener || $object instanceof Plugin || $object instanceof RegisteredListener){ foreach($this->allLists as $h){ $h->unregister($object); diff --git a/src/permission/Permissible.php b/src/permission/Permissible.php index 2047dcec7..b3527e1c4 100644 --- a/src/permission/Permissible.php +++ b/src/permission/Permissible.php @@ -35,32 +35,26 @@ interface Permissible{ * * @internal * @see Permissible::addAttachment() for normal permission assignments - * @param Permission|string $name */ - public function setBasePermission($name, bool $grant) : void; + public function setBasePermission(Permission|string $name, bool $grant) : void; /** * Unsets a baseline permission previously set. If it wasn't already set, this will have no effect. * Note that this might have different results than setting the permission to false. * * @internal - * @param Permission|string $name */ - public function unsetBasePermission($name) : void; + public function unsetBasePermission(Permission|string $name) : void; /** * Checks if this instance has a permission overridden - * - * @param string|Permission $name */ - public function isPermissionSet($name) : bool; + public function isPermissionSet(Permission|string $name) : bool; /** * Returns the permission value if overridden, or the default value if not - * - * @param string|Permission $name */ - public function hasPermission($name) : bool; + public function hasPermission(Permission|string $name) : bool; public function addAttachment(Plugin $plugin, ?string $name = null, ?bool $value = null) : PermissionAttachment; diff --git a/src/permission/PermissibleDelegateTrait.php b/src/permission/PermissibleDelegateTrait.php index fa051ecd8..22f650848 100644 --- a/src/permission/PermissibleDelegateTrait.php +++ b/src/permission/PermissibleDelegateTrait.php @@ -31,31 +31,19 @@ trait PermissibleDelegateTrait{ /** @var Permissible */ private $perm; - /** - * @param Permission|string $name - */ - public function setBasePermission($name, bool $value) : void{ - $this->perm->setBasePermission($name, $value); + public function setBasePermission(Permission|string $name, bool $grant) : void{ + $this->perm->setBasePermission($name, $grant); } - /** - * @param Permission|string $name - */ - public function unsetBasePermission($name) : void{ + public function unsetBasePermission(Permission|string $name) : void{ $this->perm->unsetBasePermission($name); } - /** - * @param Permission|string $name - */ - public function isPermissionSet($name) : bool{ + public function isPermissionSet(Permission|string $name) : bool{ return $this->perm->isPermissionSet($name); } - /** - * @param Permission|string $name - */ - public function hasPermission($name) : bool{ + public function hasPermission(Permission|string $name) : bool{ return $this->perm->hasPermission($name); } diff --git a/src/permission/PermissibleInternal.php b/src/permission/PermissibleInternal.php index 2401869a9..49c34b49a 100644 --- a/src/permission/PermissibleInternal.php +++ b/src/permission/PermissibleInternal.php @@ -69,7 +69,7 @@ class PermissibleInternal implements Permissible{ $this->recalculatePermissions(); } - public function setBasePermission($name, bool $grant) : void{ + public function setBasePermission(Permission|string $name, bool $grant) : void{ if($name instanceof Permission){ $name = $name->getName(); } @@ -77,22 +77,16 @@ class PermissibleInternal implements Permissible{ $this->recalculatePermissions(); } - public function unsetBasePermission($name) : void{ + public function unsetBasePermission(Permission|string $name) : void{ unset($this->rootPermissions[$name instanceof Permission ? $name->getName() : $name]); $this->recalculatePermissions(); } - /** - * @param Permission|string $name - */ - public function isPermissionSet($name) : bool{ + public function isPermissionSet(Permission|string $name) : bool{ return isset($this->permissions[$name instanceof Permission ? $name->getName() : $name]); } - /** - * @param Permission|string $name - */ - public function hasPermission($name) : bool{ + public function hasPermission(Permission|string $name) : bool{ if($name instanceof Permission){ $name = $name->getName(); } diff --git a/src/permission/PermissionAttachment.php b/src/permission/PermissionAttachment.php index 68f544069..b01fba307 100644 --- a/src/permission/PermissionAttachment.php +++ b/src/permission/PermissionAttachment.php @@ -96,10 +96,7 @@ class PermissionAttachment{ $this->recalculatePermissibles(); } - /** - * @param string|Permission $name - */ - public function setPermission($name, bool $value) : void{ + public function setPermission(Permission|string $name, bool $value) : void{ $name = $name instanceof Permission ? $name->getName() : $name; if(isset($this->permissions[$name])){ if($this->permissions[$name] === $value){ @@ -120,10 +117,7 @@ class PermissionAttachment{ $this->recalculatePermissibles(); } - /** - * @param string|Permission $name - */ - public function unsetPermission($name) : void{ + public function unsetPermission(Permission|string $name) : void{ $name = $name instanceof Permission ? $name->getName() : $name; if(isset($this->permissions[$name])){ unset($this->permissions[$name]); diff --git a/src/permission/PermissionManager.php b/src/permission/PermissionManager.php index cbb917781..b7e622934 100644 --- a/src/permission/PermissionManager.php +++ b/src/permission/PermissionManager.php @@ -56,10 +56,7 @@ class PermissionManager{ return false; } - /** - * @param string|Permission $permission - */ - public function removePermission($permission) : void{ + public function removePermission(Permission|string $permission) : void{ if($permission instanceof Permission){ unset($this->permissions[$permission->getName()]); }else{ diff --git a/src/permission/PermissionParser.php b/src/permission/PermissionParser.php index d498b9315..0c08702c8 100644 --- a/src/permission/PermissionParser.php +++ b/src/permission/PermissionParser.php @@ -54,11 +54,9 @@ class PermissionParser{ ]; /** - * @param bool|string $value - * * @throws PermissionParserException */ - public static function defaultFromString($value) : string{ + public static function defaultFromString(bool|string $value) : string{ if(is_bool($value)){ if($value){ return "true"; diff --git a/src/plugin/PluginDescription.php b/src/plugin/PluginDescription.php index 7574d7297..522da2a78 100644 --- a/src/plugin/PluginDescription.php +++ b/src/plugin/PluginDescription.php @@ -85,7 +85,7 @@ class PluginDescription{ /** * @param string|mixed[] $yamlString */ - public function __construct($yamlString){ + public function __construct(array|string $yamlString){ if(is_string($yamlString)){ $map = yaml_parse($yamlString); if($map === false){ diff --git a/src/thread/ThreadManager.php b/src/thread/ThreadManager.php index b22a424e7..f383b2c49 100644 --- a/src/thread/ThreadManager.php +++ b/src/thread/ThreadManager.php @@ -40,22 +40,12 @@ class ThreadManager extends \Volatile{ return self::$instance; } - /** - * @param Worker|Thread $thread - */ - public function add($thread) : void{ - if($thread instanceof Thread || $thread instanceof Worker){ - $this[spl_object_id($thread)] = $thread; - } + public function add(Worker|Thread $thread) : void{ + $this[spl_object_id($thread)] = $thread; } - /** - * @param Worker|Thread $thread - */ - public function remove($thread) : void{ - if($thread instanceof Thread || $thread instanceof Worker){ - unset($this[spl_object_id($thread)]); - } + public function remove(Worker|Thread $thread) : void{ + unset($this[spl_object_id($thread)]); } /** diff --git a/src/utils/Internet.php b/src/utils/Internet.php index 7161cf453..8744ebd96 100644 --- a/src/utils/Internet.php +++ b/src/utils/Internet.php @@ -169,7 +169,7 @@ class Internet{ * @phpstan-param TErrorVar $err * @phpstan-param-out TErrorVar|string $err */ - public static function postURL(string $page, $args, int $timeout = 10, array $extraHeaders = [], &$err = null) : ?InternetRequestResult{ + public static function postURL(string $page, array|string $args, int $timeout = 10, array $extraHeaders = [], &$err = null) : ?InternetRequestResult{ try{ return self::simpleCurl($page, $timeout, $extraHeaders, [ CURLOPT_POST => 1, @@ -185,7 +185,7 @@ class Internet{ * General cURL shorthand function. * NOTE: This is a blocking operation and can take a significant amount of time. It is inadvisable to use this method on the main thread. * - * @param float|int $timeout The maximum connect timeout and timeout in seconds, correct to ms. + * @param float $timeout The maximum connect timeout and timeout in seconds, correct to ms. * @param string[] $extraHeaders extra headers to send as a plain string array * @param array $extraOpts extra CURLOPT_* to set as an [opt => value] map * @param \Closure|null $onSuccess function to be called if there is no error. Accepts a resource argument as the cURL handle. @@ -195,7 +195,7 @@ class Internet{ * * @throws InternetException if a cURL error occurs */ - public static function simpleCurl(string $page, $timeout = 10, array $extraHeaders = [], array $extraOpts = [], ?\Closure $onSuccess = null) : InternetRequestResult{ + public static function simpleCurl(string $page, float $timeout = 10, array $extraHeaders = [], array $extraOpts = [], ?\Closure $onSuccess = null) : InternetRequestResult{ if(!self::$online){ throw new InternetException("Cannot execute web request while offline"); } diff --git a/src/utils/Process.php b/src/utils/Process.php index bdc264133..d0d38ec00 100644 --- a/src/utils/Process.php +++ b/src/utils/Process.php @@ -157,7 +157,7 @@ final class Process{ * * @return int process exit code */ - public static function execute(string $command, string &$stdout = null, string &$stderr = null) : int{ + public static function execute(string $command, ?string &$stdout = null, ?string &$stderr = null) : int{ $process = proc_open($command, [ ["pipe", "r"], ["pipe", "w"], From fdb07cdbcd35225b0c062fc0109bd74e43b74962 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 23 Nov 2022 14:21:38 +0000 Subject: [PATCH 434/692] Added more missing native types according to 8.0 standards --- src/MemoryManager.php | 9 ++---- src/Server.php | 7 ++--- src/ServerConfigGroup.php | 7 +---- src/event/player/PlayerCreationEvent.php | 12 +++---- src/player/Player.php | 5 +-- src/promise/PromiseResolver.php | 3 +- src/scheduler/AsyncTask.php | 11 ++----- src/scheduler/AsyncWorker.php | 8 ++--- src/utils/Config.php | 40 +++++------------------- src/utils/Filesystem.php | 7 +---- src/utils/Internet.php | 4 +-- src/utils/MainLogger.php | 8 +---- src/utils/Timezone.php | 9 ++---- src/utils/Utils.php | 9 ++---- 14 files changed, 31 insertions(+), 108 deletions(-) diff --git a/src/MemoryManager.php b/src/MemoryManager.php index 70e5d8a77..9b35c952f 100644 --- a/src/MemoryManager.php +++ b/src/MemoryManager.php @@ -285,10 +285,8 @@ class MemoryManager{ /** * Static memory dumper accessible from any thread. - * - * @param mixed $startingObject */ - public static function dumpMemory($startingObject, string $outputFolder, int $maxNesting, int $maxStringSize, \Logger $logger) : void{ + public static function dumpMemory(mixed $startingObject, string $outputFolder, int $maxNesting, int $maxStringSize, \Logger $logger) : void{ $hardLimit = Utils::assumeNotFalse(ini_get('memory_limit'), "memory_limit INI directive should always exist"); ini_set('memory_limit', '-1'); gc_disable(); @@ -479,7 +477,6 @@ class MemoryManager{ } /** - * @param mixed $from * @param object[] $objects reference parameter * @param int[] $refCounts reference parameter * @@ -487,10 +484,8 @@ class MemoryManager{ * @phpstan-param array $refCounts * @phpstan-param-out array $objects * @phpstan-param-out array $refCounts - * - * @return mixed */ - private static function continueDump($from, array &$objects, array &$refCounts, int $recursion, int $maxNesting, int $maxStringSize){ + private static function continueDump(mixed $from, array &$objects, array &$refCounts, int $recursion, int $maxNesting, int $maxStringSize) : mixed{ if($maxNesting <= 0){ return "(error) NESTING LIMIT REACHED"; } diff --git a/src/Server.php b/src/Server.php index e0eb84c1f..4c4f25348 100644 --- a/src/Server.php +++ b/src/Server.php @@ -470,10 +470,7 @@ class Server{ return $this->configGroup->getPropertyBool("player.save-player-data", true); } - /** - * @return OfflinePlayer|Player - */ - public function getOfflinePlayer(string $name){ + public function getOfflinePlayer(string $name) : Player|OfflinePlayer|null{ $name = strtolower($name); $result = $this->getPlayerExact($name); @@ -1538,7 +1535,7 @@ class Server{ * @param mixed[][]|null $trace * @phpstan-param list>|null $trace */ - public function exceptionHandler(\Throwable $e, $trace = null) : void{ + public function exceptionHandler(\Throwable $e, ?array $trace = null) : void{ while(@ob_end_flush()){} global $lastError; diff --git a/src/ServerConfigGroup.php b/src/ServerConfigGroup.php index 0a3b09c87..b4a3a9087 100644 --- a/src/ServerConfigGroup.php +++ b/src/ServerConfigGroup.php @@ -43,12 +43,7 @@ final class ServerConfigGroup{ private Config $serverProperties ){} - /** - * @param mixed $defaultValue - * - * @return mixed - */ - public function getProperty(string $variable, $defaultValue = null){ + public function getProperty(string $variable, mixed $defaultValue = null) : mixed{ if(!array_key_exists($variable, $this->propertyCache)){ $v = getopt("", ["$variable::"]); if(isset($v[$variable])){ diff --git a/src/event/player/PlayerCreationEvent.php b/src/event/player/PlayerCreationEvent.php index 7e7e2cfaa..7f76f5f52 100644 --- a/src/event/player/PlayerCreationEvent.php +++ b/src/event/player/PlayerCreationEvent.php @@ -54,18 +54,16 @@ class PlayerCreationEvent extends Event{ } /** - * @return string * @phpstan-return class-string */ - public function getBaseClass(){ + public function getBaseClass() : string{ return $this->baseClass; } /** - * @param string $class * @phpstan-param class-string $class */ - public function setBaseClass($class) : void{ + public function setBaseClass(string $class) : void{ if(!is_a($class, $this->baseClass, true)){ throw new \RuntimeException("Base class $class must extend " . $this->baseClass); } @@ -74,18 +72,16 @@ class PlayerCreationEvent extends Event{ } /** - * @return string * @phpstan-return class-string */ - public function getPlayerClass(){ + public function getPlayerClass() : string{ return $this->playerClass; } /** - * @param string $class * @phpstan-param class-string $class */ - public function setPlayerClass($class) : void{ + public function setPlayerClass(string $class) : void{ Utils::testValidInstance($class, $this->baseClass); $this->playerClass = $class; } diff --git a/src/player/Player.php b/src/player/Player.php index 6c045836f..4f99c93a4 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2054,10 +2054,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ } } - /** - * @param mixed $responseData - */ - public function onFormSubmit(int $formId, $responseData) : bool{ + public function onFormSubmit(int $formId, mixed $responseData) : bool{ if(!isset($this->forms[$formId])){ $this->logger->debug("Got unexpected response for form $formId"); return false; diff --git a/src/promise/PromiseResolver.php b/src/promise/PromiseResolver.php index 30a60e0cd..97b181d0b 100644 --- a/src/promise/PromiseResolver.php +++ b/src/promise/PromiseResolver.php @@ -38,10 +38,9 @@ final class PromiseResolver{ } /** - * @param mixed $value * @phpstan-param TValue $value */ - public function resolve($value) : void{ + public function resolve(mixed $value) : void{ if($this->shared->resolved){ throw new \LogicException("Promise has already been resolved/rejected"); } diff --git a/src/scheduler/AsyncTask.php b/src/scheduler/AsyncTask.php index 65591d4d9..13a4f5781 100644 --- a/src/scheduler/AsyncTask.php +++ b/src/scheduler/AsyncTask.php @@ -124,10 +124,7 @@ abstract class AsyncTask extends \Threaded{ return $this->result; } - /** - * @param mixed $result - */ - public function setResult($result) : void{ + public function setResult(mixed $result) : void{ $this->result = ($this->serialized = !is_scalar($result)) ? igbinary_serialize($result) : $result; } @@ -166,7 +163,7 @@ abstract class AsyncTask extends \Threaded{ * * @param mixed $progress A value that can be safely serialize()'ed. */ - public function publishProgress($progress) : void{ + public function publishProgress(mixed $progress) : void{ $this->progressUpdates[] = igbinary_serialize($progress); } @@ -213,10 +210,8 @@ abstract class AsyncTask extends \Threaded{ * * Objects stored in this storage can be retrieved using fetchLocal() on the same thread that this method was called * from. - * - * @param mixed $complexData the data to store */ - protected function storeLocal(string $key, $complexData) : void{ + protected function storeLocal(string $key, mixed $complexData) : void{ if(self::$threadLocalStorage === null){ /* * It's necessary to use an object (not array) here because pthreads is stupid. Non-default array statics diff --git a/src/scheduler/AsyncWorker.php b/src/scheduler/AsyncWorker.php index af1ec2ad6..0b7087571 100644 --- a/src/scheduler/AsyncWorker.php +++ b/src/scheduler/AsyncWorker.php @@ -76,10 +76,8 @@ class AsyncWorker extends Worker{ /** * Saves mixed data into the worker's thread-local object store. This can be used to store objects which you * want to use on this worker thread from multiple AsyncTasks. - * - * @param mixed $value */ - public function saveToThreadStore(string $identifier, $value) : void{ + public function saveToThreadStore(string $identifier, mixed $value) : void{ if(\Thread::getCurrentThread() !== $this){ throw new \LogicException("Thread-local data can only be stored in the thread context"); } @@ -93,10 +91,8 @@ class AsyncWorker extends Worker{ * account for the possibility that what you're trying to retrieve might not exist. * * Objects stored in this storage may ONLY be retrieved while the task is running. - * - * @return mixed */ - public function getFromThreadStore(string $identifier){ + public function getFromThreadStore(string $identifier) : mixed{ if(\Thread::getCurrentThread() !== $this){ throw new \LogicException("Thread-local data can only be fetched in the thread context"); } diff --git a/src/utils/Config.php b/src/utils/Config.php index eab5174e9..cee137e32 100644 --- a/src/utils/Config.php +++ b/src/utils/Config.php @@ -341,11 +341,7 @@ class Config{ $this->remove($k); } - /** - * @param string $key - * @param mixed $value - */ - public function setNested($key, $value) : void{ + public function setNested(string $key, mixed $value) : void{ $vars = explode(".", $key); $base = array_shift($vars); @@ -368,13 +364,7 @@ class Config{ $this->changed = true; } - /** - * @param string $key - * @param mixed $default - * - * @return mixed - */ - public function getNested($key, $default = null){ + public function getNested(string $key, mixed $default = null) : mixed{ if(isset($this->nestedCache[$key])){ return $this->nestedCache[$key]; } @@ -420,21 +410,11 @@ class Config{ } } - /** - * @param string $k - * @param mixed $default - * - * @return bool|mixed - */ - public function get($k, $default = false){ + public function get(string $k, mixed $default = false) : mixed{ return $this->config[$k] ?? $default; } - /** - * @param string $k key to be set - * @param mixed $v value to set key - */ - public function set($k, $v = true) : void{ + public function set(string $k, mixed $v = true) : void{ $this->config[$k] = $v; $this->changed = true; foreach(Utils::stringifyKeys($this->nestedCache) as $nestedKey => $nvalue){ @@ -454,10 +434,9 @@ class Config{ } /** - * @param string $k - * @param bool $lowercase If set, searches Config in single-case / lowercase. + * @param bool $lowercase If set, searches Config in single-case / lowercase. */ - public function exists($k, bool $lowercase = false) : bool{ + public function exists(string $k, bool $lowercase = false) : bool{ if($lowercase){ $k = strtolower($k); //Convert requested key to lower $array = array_change_key_case($this->config, CASE_LOWER); //Change all keys in array to lower @@ -467,10 +446,7 @@ class Config{ } } - /** - * @param string $k - */ - public function remove($k) : void{ + public function remove(string $k) : void{ unset($this->config[$k]); $this->changed = true; } @@ -498,7 +474,7 @@ class Config{ * @phpstan-param array $data * @phpstan-param-out array $data */ - private function fillDefaults(array $default, &$data) : int{ + private function fillDefaults(array $default, array &$data) : int{ $changed = 0; foreach(Utils::stringifyKeys($default) as $k => $v){ if(is_array($v)){ diff --git a/src/utils/Filesystem.php b/src/utils/Filesystem.php index a4c1ff236..762d39c3b 100644 --- a/src/utils/Filesystem.php +++ b/src/utils/Filesystem.php @@ -159,12 +159,7 @@ final class Filesystem{ */ public static function getCleanedPaths() : array{ return self::$cleanedPaths; } - /** - * @param string $path - * - * @return string - */ - public static function cleanPath($path){ + public static function cleanPath(string $path) : string{ $result = str_replace([DIRECTORY_SEPARATOR, ".php", "phar://"], ["/", "", ""], $path); //remove relative paths diff --git a/src/utils/Internet.php b/src/utils/Internet.php index 8744ebd96..87a90f488 100644 --- a/src/utils/Internet.php +++ b/src/utils/Internet.php @@ -71,10 +71,8 @@ class Internet{ * Lazily gets the External IP using an external service and caches the result * * @param bool $force default false, force IP check even when cached - * - * @return string|false */ - public static function getIP(bool $force = false){ + public static function getIP(bool $force = false) : string|false{ if(!self::$online){ return false; }elseif(self::$ip !== false && !$force){ diff --git a/src/utils/MainLogger.php b/src/utils/MainLogger.php index 641233a26..6f65303bf 100644 --- a/src/utils/MainLogger.php +++ b/src/utils/MainLogger.php @@ -172,13 +172,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ } } - /** - * @param string $message - * @param string $level - * @param string $prefix - * @param string $color - */ - protected function send($message, $level, $prefix, $color) : void{ + protected function send(string $message, string $level, string $prefix, string $color) : void{ $time = new \DateTime('now', new \DateTimeZone($this->timezone)); $thread = \Thread::getCurrentThread(); diff --git a/src/utils/Timezone.php b/src/utils/Timezone.php index 3cf3a19df..8564bd85c 100644 --- a/src/utils/Timezone.php +++ b/src/utils/Timezone.php @@ -101,10 +101,7 @@ abstract class Timezone{ \GlobalLogger::get()->warning("Timezone could not be automatically determined or was set to an invalid value. An incorrect timezone will result in incorrect timestamps on console logs. It has been set to \"UTC\" by default. You can change it on the php.ini file."); } - /** - * @return string|false - */ - public static function detectSystemTimezone(){ + public static function detectSystemTimezone() : string|false{ switch(Utils::getOS()){ case Utils::OS_WINDOWS: $regex = '/(UTC)(\+*\-*\d*\d*\:*\d*\d*)/'; @@ -178,10 +175,8 @@ abstract class Timezone{ /** * @param string $offset In the format of +09:00, +02:00, -04:00 etc. - * - * @return string|false */ - private static function parseOffset($offset){ + private static function parseOffset(string $offset) : string|false{ //Make signed offsets unsigned for date_parse if(strpos($offset, '-') !== false){ $negative_offset = true; diff --git a/src/utils/Utils.php b/src/utils/Utils.php index 3e8e420b7..4f3f6d577 100644 --- a/src/utils/Utils.php +++ b/src/utils/Utils.php @@ -345,10 +345,8 @@ final class Utils{ /** * Returns a string that can be printed, replaces non-printable characters - * - * @param mixed $str */ - public static function printable($str) : string{ + public static function printable(mixed $str) : string{ if(!is_string($str)){ return gettype($str); } @@ -369,10 +367,7 @@ final class Utils{ return $hash; } - /** - * @param object $value - */ - public static function getReferenceCount($value, bool $includeCurrent = true) : int{ + public static function getReferenceCount(object $value, bool $includeCurrent = true) : int{ ob_start(); debug_zval_dump($value); $contents = ob_get_contents(); From d634b3de183d35897c7cb1750e1376e1179af80d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 25 Nov 2022 14:41:44 +0000 Subject: [PATCH 435/692] Update composer dependencies --- composer.lock | 92 +++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/composer.lock b/composer.lock index ca06b71e0..976456abc 100644 --- a/composer.lock +++ b/composer.lock @@ -590,16 +590,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.9.2", + "version": "2.9.3", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "8813ffd2a4501521ca9433c534f3009f941de136" + "reference": "73db4397b4150b29819bf39cc371924cc2e3f502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/8813ffd2a4501521ca9433c534f3009f941de136", - "reference": "8813ffd2a4501521ca9433c534f3009f941de136", + "url": "https://api.github.com/repos/pmmp/Language/zipball/73db4397b4150b29819bf39cc371924cc2e3f502", + "reference": "73db4397b4150b29819bf39cc371924cc2e3f502", "shasum": "" }, "type": "library", @@ -607,9 +607,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.9.2" + "source": "https://github.com/pmmp/Language/tree/2.9.3" }, - "time": "2022-10-21T20:30:38+00:00" + "time": "2022-11-12T13:59:25+00:00" }, { "name": "pocketmine/log", @@ -1140,16 +1140,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -1164,7 +1164,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1202,7 +1202,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -1218,20 +1218,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -1246,7 +1246,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1285,7 +1285,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -1301,20 +1301,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -1323,7 +1323,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1368,7 +1368,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -1384,20 +1384,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -1406,7 +1406,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1447,7 +1447,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -1463,7 +1463,7 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" } ], "packages-dev": [ @@ -1598,16 +1598,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.1", + "version": "v4.15.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", "shasum": "" }, "require": { @@ -1648,9 +1648,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" }, - "time": "2022-09-04T07:30:47+00:00" + "time": "2022-11-12T15:38:23+00:00" }, { "name": "phar-io/manifest", @@ -1924,16 +1924,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.18", + "version": "9.2.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a" + "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a", - "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559", + "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559", "shasum": "" }, "require": { @@ -1989,7 +1989,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19" }, "funding": [ { @@ -1997,7 +1997,7 @@ "type": "github" } ], - "time": "2022-10-27T13:35:33+00:00" + "time": "2022-11-18T07:47:47+00:00" }, { "name": "phpunit/php-file-iterator", From b0c6e8d8e0beb08d9010370b77ae0d9a855d32a9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 26 Nov 2022 19:32:39 +0000 Subject: [PATCH 436/692] StringToItemParser: added lookupAliases() and lookupBlockAliases() this permits reverse-lookuping all registered aliases that map to the given item (including properties). this may be useful for plugins to use for generating configs, instead of using IDs or some godawful hack using getName(). --- src/item/StringToItemParser.php | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 6dbe55b79..b1ff4000b 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -36,6 +36,7 @@ use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\SingletonTrait; use pocketmine\utils\StringToTParser; +use function array_keys; /** * Handles parsing items from strings. This is used to interpret names from the /give command (and others). @@ -1514,6 +1515,18 @@ final class StringToItemParser extends StringToTParser{ $result->register("zombie_spawn_egg", fn() => Items::ZOMBIE_SPAWN_EGG()); } + /** + * @var true[][][] + * @phpstan-var array>> + */ + private array $reverseMap = []; + + public function register(string $alias, \Closure $callback) : void{ + parent::register($alias, $callback); + $item = $callback($alias); + $this->reverseMap[$item->getTypeId()][$item->computeTypeData()][$alias] = true; + } + /** @phpstan-param \Closure(string $input) : Block $callback */ public function registerBlock(string $alias, \Closure $callback) : void{ $this->register($alias, fn(string $input) => $callback($input)->asItem()); @@ -1522,4 +1535,25 @@ final class StringToItemParser extends StringToTParser{ public function parse(string $input) : ?Item{ return parent::parse($input); } + + /** + * Returns a list of currently registered aliases that resolve to the given item. + * + * @return string[] + * @phpstan-return list + */ + public function lookupAliases(Item $item) : array{ + $aliases = $this->reverseMap[$item->getTypeId()][$item->computeTypeData()] ?? []; + return array_keys($aliases); + } + + /** + * Returns a list of currently registered aliases that resolve to the item form of the given block. + * + * @return string[] + * @phpstan-return list + */ + public function lookupBlockAliases(Block $block) : array{ + return $this->lookupAliases($block->asItem()); + } } From 8f20b9da9123be723d9215c7588710f89abbe01f Mon Sep 17 00:00:00 2001 From: zSALLAZAR <59490940+zSALLAZAR@users.noreply.github.com> Date: Sat, 26 Nov 2022 20:55:16 +0100 Subject: [PATCH 437/692] Rename ExplosionPrimeEvent to EntityPreExplodeEvent (#5434) --- src/entity/object/PrimedTNT.php | 4 ++-- src/event/entity/EntityExplodeEvent.php | 2 +- .../{ExplosionPrimeEvent.php => EntityPreExplodeEvent.php} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/event/entity/{ExplosionPrimeEvent.php => EntityPreExplodeEvent.php} (96%) diff --git a/src/entity/object/PrimedTNT.php b/src/entity/object/PrimedTNT.php index 8049ec386..6c88488a3 100644 --- a/src/entity/object/PrimedTNT.php +++ b/src/entity/object/PrimedTNT.php @@ -27,7 +27,7 @@ use pocketmine\entity\Entity; use pocketmine\entity\EntitySizeInfo; use pocketmine\entity\Explosive; use pocketmine\event\entity\EntityDamageEvent; -use pocketmine\event\entity\ExplosionPrimeEvent; +use pocketmine\event\entity\EntityPreExplodeEvent; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; @@ -113,7 +113,7 @@ class PrimedTNT extends Entity implements Explosive{ } public function explode() : void{ - $ev = new ExplosionPrimeEvent($this, 4); + $ev = new EntityPreExplodeEvent($this, 4); $ev->call(); if(!$ev->isCancelled()){ //TODO: deal with underwater TNT (underwater TNT treats water as if it has a blast resistance of 0) diff --git a/src/event/entity/EntityExplodeEvent.php b/src/event/entity/EntityExplodeEvent.php index b2837883a..f2463af0e 100644 --- a/src/event/entity/EntityExplodeEvent.php +++ b/src/event/entity/EntityExplodeEvent.php @@ -34,7 +34,7 @@ use pocketmine\world\Position; * Called when an entity explodes, after the explosion's impact has been calculated. * No changes have been made to the world at this stage. * - * @see ExplosionPrimeEvent + * @see EntityPreExplodeEvent * * @phpstan-extends EntityEvent */ diff --git a/src/event/entity/ExplosionPrimeEvent.php b/src/event/entity/EntityPreExplodeEvent.php similarity index 96% rename from src/event/entity/ExplosionPrimeEvent.php rename to src/event/entity/EntityPreExplodeEvent.php index 615b12ffd..3633f29d7 100644 --- a/src/event/entity/ExplosionPrimeEvent.php +++ b/src/event/entity/EntityPreExplodeEvent.php @@ -35,7 +35,7 @@ use pocketmine\event\CancellableTrait; * * @phpstan-extends EntityEvent */ -class ExplosionPrimeEvent extends EntityEvent implements Cancellable{ +class EntityPreExplodeEvent extends EntityEvent implements Cancellable{ use CancellableTrait; private bool $blockBreaking = true; From bc8def3be1bdd53c2ecd44ae3b732705c3bd64df Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 2 Dec 2022 13:02:18 +0000 Subject: [PATCH 438/692] Update BedrockData --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 25cf97964..fe5a5bf6b 100644 --- a/composer.lock +++ b/composer.lock @@ -280,12 +280,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "3988f8887581082b53c6da64cac81a7837bba5e2" + "reference": "d64617faab77300d828debcd1e3597b3403b63b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/3988f8887581082b53c6da64cac81a7837bba5e2", - "reference": "3988f8887581082b53c6da64cac81a7837bba5e2", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/d64617faab77300d828debcd1e3597b3403b63b7", + "reference": "d64617faab77300d828debcd1e3597b3403b63b7", "shasum": "" }, "type": "library", @@ -298,7 +298,7 @@ "issues": "https://github.com/pmmp/BedrockData/issues", "source": "https://github.com/pmmp/BedrockData/tree/modern-world-support" }, - "time": "2022-11-30T16:22:05+00:00" + "time": "2022-12-02T13:01:28+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", From ca3b5c38b7c6d6dab3e0212bb1508f02b04d4539 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 2 Dec 2022 14:03:58 +0000 Subject: [PATCH 439/692] Added internal support for tag recipe ingredients --- .../CraftingManagerFromDataHelper.php | 6 +- src/crafting/TagWildcardRecipeIngredient.php | 55 ++++++++++ src/data/bedrock/ItemTagToIdMap.php | 102 ++++++++++++++++++ src/network/mcpe/convert/TypeConverter.php | 12 ++- 4 files changed, 171 insertions(+), 4 deletions(-) create mode 100644 src/crafting/TagWildcardRecipeIngredient.php create mode 100644 src/data/bedrock/ItemTagToIdMap.php diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index c07182523..7e5362d22 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -52,14 +52,14 @@ use function json_decode; final class CraftingManagerFromDataHelper{ private static function deserializeIngredient(RecipeIngredientData $data) : ?RecipeIngredient{ - if(!isset($data->name)){ - return null; //TODO: not yet implemented - } if(isset($data->count) && $data->count !== 1){ //every case we've seen so far where this isn't the case, it's been a bug and the count was ignored anyway //e.g. gold blocks crafted from 9 ingots, but each input item individually had a count of 9 throw new SavedDataLoadingException("Recipe inputs should have a count of exactly 1"); } + if(isset($data->tag)){ + return new TagWildcardRecipeIngredient($data->tag); + } $meta = $data->meta ?? null; if($meta === RecipeIngredientData::WILDCARD_META_VALUE){ diff --git a/src/crafting/TagWildcardRecipeIngredient.php b/src/crafting/TagWildcardRecipeIngredient.php new file mode 100644 index 000000000..7ac261f08 --- /dev/null +++ b/src/crafting/TagWildcardRecipeIngredient.php @@ -0,0 +1,55 @@ +tagName; } + + public function accepts(Item $item) : bool{ + if($item->getCount() < 1){ + return false; + } + + return ItemTagToIdMap::getInstance()->tagContainsId($this->tagName, GlobalItemDataHandlers::getSerializer()->serializeType($item)->getName()); + } + + public function __toString() : string{ + return "TagWildcardRecipeIngredient($this->tagName)"; + } +} \ No newline at end of file diff --git a/src/data/bedrock/ItemTagToIdMap.php b/src/data/bedrock/ItemTagToIdMap.php new file mode 100644 index 000000000..a5fb7952c --- /dev/null +++ b/src/data/bedrock/ItemTagToIdMap.php @@ -0,0 +1,102 @@ + file_get_contents(Path::join(BEDROCK_DATA_PATH, 'item_tags.json'))), true, flags: JSON_THROW_ON_ERROR); + if(!is_array($map)){ + throw new AssumptionFailedError("Invalid item tag map, expected array"); + } + $cleanMap = []; + foreach($map as $tagName => $ids){ + if(!is_string($tagName)){ + throw new AssumptionFailedError("Invalid item tag name $tagName, expected string as key"); + } + if(!is_array($ids)){ + throw new AssumptionFailedError("Invalid item tag $tagName, expected array of IDs as value"); + } + $cleanIds = []; + foreach($ids as $id){ + if(!is_string($id)){ + throw new AssumptionFailedError("Invalid item tag $tagName, expected string as ID, got " . gettype($id)); + } + $cleanIds[] = $id; + } + $cleanMap[$tagName] = $cleanIds; + } + + return new self($cleanMap); + } + + /** + * @var true[][] + * @phpstan-var array> + */ + private array $tagToIdsMap = []; + + /** + * @param string[][] $tagToIds + * @phpstan-param array> $tagToIds + */ + public function __construct( + array $tagToIds + ){ + foreach(Utils::stringifyKeys($tagToIds) as $tag => $ids){ + foreach($ids as $id){ + $this->tagToIdsMap[$tag][$id] = true; + } + } + } + + /** + * @return string[] + * @phpstan-return list + */ + public function getIdsForTag(string $tag) : array{ + return array_keys($this->tagToIdsMap[$tag] ?? []); + } + + public function tagContainsId(string $tag, string $id) : bool{ + return isset($this->tagToIdsMap[$tag][$id]); + } + + public function addIdToTag(string $tag, string $id) : void{ + $this->tagToIdsMap[$tag][$id] = true; + } +} \ No newline at end of file diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 26b4a2ddf..27836a3c7 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -27,6 +27,7 @@ use pocketmine\block\VanillaBlocks; use pocketmine\crafting\ExactRecipeIngredient; use pocketmine\crafting\MetaWildcardRecipeIngredient; use pocketmine\crafting\RecipeIngredient; +use pocketmine\crafting\TagWildcardRecipeIngredient; use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\inventory\transaction\action\CreateItemAction; use pocketmine\inventory\transaction\action\DestroyItemAction; @@ -46,6 +47,7 @@ use pocketmine\network\mcpe\protocol\types\inventory\UIInventorySlotOffset; use pocketmine\network\mcpe\protocol\types\recipe\IntIdMetaItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient as ProtocolRecipeIngredient; use pocketmine\network\mcpe\protocol\types\recipe\StringIdMetaItemDescriptor; +use pocketmine\network\mcpe\protocol\types\recipe\TagItemDescriptor; use pocketmine\player\GameMode; use pocketmine\player\Player; use pocketmine\utils\AssumptionFailedError; @@ -118,6 +120,7 @@ class TypeConverter{ if($ingredient instanceof MetaWildcardRecipeIngredient){ $id = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromStringId($ingredient->getItemId()); $meta = self::RECIPE_INPUT_WILDCARD_META; + $descriptor = new IntIdMetaItemDescriptor($id, $meta); }elseif($ingredient instanceof ExactRecipeIngredient){ $item = $ingredient->getItem(); [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId($item); @@ -127,11 +130,14 @@ class TypeConverter{ throw new AssumptionFailedError("Every block state should have an associated meta value"); } } + $descriptor = new IntIdMetaItemDescriptor($id, $meta); + }elseif($ingredient instanceof TagWildcardRecipeIngredient){ + $descriptor = new TagItemDescriptor($ingredient->getTagName()); }else{ throw new \LogicException("Unsupported recipe ingredient type " . get_class($ingredient) . ", only " . ExactRecipeIngredient::class . " and " . MetaWildcardRecipeIngredient::class . " are supported"); } - return new ProtocolRecipeIngredient(new IntIdMetaItemDescriptor($id, $meta), 1); + return new ProtocolRecipeIngredient($descriptor, 1); } public function netRecipeIngredientToCore(ProtocolRecipeIngredient $ingredient) : ?RecipeIngredient{ @@ -140,6 +146,10 @@ class TypeConverter{ return null; } + if($descriptor instanceof TagItemDescriptor){ + return new TagWildcardRecipeIngredient($descriptor->getTag()); + } + if($descriptor instanceof IntIdMetaItemDescriptor){ $stringId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromIntId($descriptor->getId()); $meta = $descriptor->getMeta(); From 18c2e90574238fe8abe3bcec85540a4d16fe78c5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 5 Dec 2022 14:47:44 +0000 Subject: [PATCH 440/692] fix CS --- src/crafting/TagWildcardRecipeIngredient.php | 2 +- src/data/bedrock/ItemTagToIdMap.php | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/crafting/TagWildcardRecipeIngredient.php b/src/crafting/TagWildcardRecipeIngredient.php index 7ac261f08..32bcf08e1 100644 --- a/src/crafting/TagWildcardRecipeIngredient.php +++ b/src/crafting/TagWildcardRecipeIngredient.php @@ -52,4 +52,4 @@ final class TagWildcardRecipeIngredient implements RecipeIngredient{ public function __toString() : string{ return "TagWildcardRecipeIngredient($this->tagName)"; } -} \ No newline at end of file +} diff --git a/src/data/bedrock/ItemTagToIdMap.php b/src/data/bedrock/ItemTagToIdMap.php index a5fb7952c..fa5b24e7a 100644 --- a/src/data/bedrock/ItemTagToIdMap.php +++ b/src/data/bedrock/ItemTagToIdMap.php @@ -28,6 +28,12 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; +use function array_keys; +use function file_get_contents; +use function gettype; +use function is_array; +use function is_string; +use function json_decode; use const pocketmine\BEDROCK_DATA_PATH; /** @@ -99,4 +105,4 @@ final class ItemTagToIdMap{ public function addIdToTag(string $tag, string $id) : void{ $this->tagToIdsMap[$tag][$id] = true; } -} \ No newline at end of file +} From 8e600b4a78f989f394febc8de277bb95d7e6b008 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 6 Dec 2022 12:48:28 +0000 Subject: [PATCH 441/692] ItemBlock: fixed unnecessary double singleton usage --- src/item/ItemBlock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 0c50d0adb..eb476de88 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -63,7 +63,7 @@ final class ItemBlock extends Item{ if(!$factory->isRegistered($this->blockTypeId)){ return VanillaBlocks::AIR(); } - $blockType = BlockFactory::getInstance()->fromTypeId($this->blockTypeId); + $blockType = $factory->fromTypeId($this->blockTypeId); $blockType->decodeTypeData($this->blockTypeData); return $blockType; } From 84f9136b95abf3ff24bf6dfb00cb2efa6c6af9db Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Thu, 15 Dec 2022 14:12:18 -0500 Subject: [PATCH 442/692] Implement anvil damage on fall (#5345) --- src/block/Anvil.php | 14 ++++++++++++++ src/block/utils/Fallable.php | 7 +++++++ src/block/utils/FallableTrait.php | 4 ++++ src/entity/object/FallingBlock.php | 7 +++++++ 4 files changed, 32 insertions(+) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index d9c407409..4b71bd594 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -30,12 +30,15 @@ use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\entity\object\FallingBlock; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\BlockTransaction; +use function lcg_value; +use function round; class Anvil extends Transparent implements Fallable{ use FallableTrait; @@ -95,4 +98,15 @@ class Anvil extends Transparent implements Fallable{ } return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } + + public function onHitGround(FallingBlock $blockEntity) : bool{ + if(lcg_value() < 0.05 + (round($blockEntity->getFallDistance()) - 1) * 0.05){ + if($this->damage !== self::VERY_DAMAGED){ + $this->damage = $this->damage + 1; + }else{ + return false; + } + } + return true; + } } diff --git a/src/block/utils/Fallable.php b/src/block/utils/Fallable.php index 2f191f1c2..6c7973d8c 100644 --- a/src/block/utils/Fallable.php +++ b/src/block/utils/Fallable.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; +use pocketmine\entity\object\FallingBlock; interface Fallable{ @@ -33,4 +34,10 @@ interface Fallable{ * Return null if you don't want to change the usual behaviour. */ public function tickFalling() : ?Block; + + /** + * Called when FallingBlock hits the ground. + * Returns whether the block should be placed. + */ + public function onHitGround(FallingBlock $blockEntity) : bool; } diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index 8e878b172..522ea22b1 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -58,4 +58,8 @@ trait FallableTrait{ public function tickFalling() : ?Block{ return null; } + + public function onHitGround(FallingBlock $blockEntity) : bool{ + return true; + } } diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 6b15ed9c8..46f1df102 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -145,6 +145,13 @@ class FallingBlock extends Entity{ return $hasUpdate; } + protected function onHitGround() : ?float{ + if($this->block instanceof Fallable && !$this->block->onHitGround($this)){ + $this->flagForDespawn(); + } + return null; + } + public function getBlock() : Block{ return $this->block; } From ba4d03897232f7f540b171a3ee6c9cd24fb5d266 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 15 Dec 2022 21:41:33 +0000 Subject: [PATCH 443/692] ShapelessRecipe: make type parameter mandatory --- src/crafting/ShapelessRecipe.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/crafting/ShapelessRecipe.php b/src/crafting/ShapelessRecipe.php index ce7a57c30..a9e1f023c 100644 --- a/src/crafting/ShapelessRecipe.php +++ b/src/crafting/ShapelessRecipe.php @@ -37,11 +37,9 @@ class ShapelessRecipe implements CraftingRecipe{ /** * @param RecipeIngredient[] $ingredients No more than 9 total. This applies to sum of item stack counts, not count of array. * @param Item[] $results List of result items created by this recipe. - * - * TODO: we'll want to make the type parameter mandatory in PM5 */ - public function __construct(array $ingredients, array $results, ?ShapelessRecipeType $type = null){ - $this->type = $type ?? ShapelessRecipeType::CRAFTING(); + public function __construct(array $ingredients, array $results, ShapelessRecipeType $type){ + $this->type = $type; if(count($ingredients) > 9){ throw new \InvalidArgumentException("Shapeless recipes cannot have more than 9 ingredients"); From 3d7509487478c7c19527af75d14b9b77b55b8cb0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 15 Dec 2022 22:43:36 +0000 Subject: [PATCH 444/692] Standardize explosion radius terminology closes #5061 --- src/entity/object/PrimedTNT.php | 2 +- src/event/entity/EntityPreExplodeEvent.php | 14 +++++++------- src/world/Explosion.php | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/entity/object/PrimedTNT.php b/src/entity/object/PrimedTNT.php index 6c88488a3..72d169d98 100644 --- a/src/entity/object/PrimedTNT.php +++ b/src/entity/object/PrimedTNT.php @@ -117,7 +117,7 @@ class PrimedTNT extends Entity implements Explosive{ $ev->call(); if(!$ev->isCancelled()){ //TODO: deal with underwater TNT (underwater TNT treats water as if it has a blast resistance of 0) - $explosion = new Explosion(Position::fromObject($this->location->add(0, $this->size->getHeight() / 2, 0), $this->getWorld()), $ev->getForce(), $this); + $explosion = new Explosion(Position::fromObject($this->location->add(0, $this->size->getHeight() / 2, 0), $this->getWorld()), $ev->getRadius(), $this); if($ev->isBlockBreaking()){ $explosion->explodeA(); } diff --git a/src/event/entity/EntityPreExplodeEvent.php b/src/event/entity/EntityPreExplodeEvent.php index 3633f29d7..f02a85ecd 100644 --- a/src/event/entity/EntityPreExplodeEvent.php +++ b/src/event/entity/EntityPreExplodeEvent.php @@ -42,23 +42,23 @@ class EntityPreExplodeEvent extends EntityEvent implements Cancellable{ public function __construct( Entity $entity, - protected float $force + protected float $radius ){ - if($force <= 0){ + if($radius <= 0){ throw new \InvalidArgumentException("Explosion radius must be positive"); } $this->entity = $entity; } - public function getForce() : float{ - return $this->force; + public function getRadius() : float{ + return $this->radius; } - public function setForce(float $force) : void{ - if($force <= 0){ + public function setRadius(float $radius) : void{ + if($radius <= 0){ throw new \InvalidArgumentException("Explosion radius must be positive"); } - $this->force = $force; + $this->radius = $radius; } public function isBlockBreaking() : bool{ diff --git a/src/world/Explosion.php b/src/world/Explosion.php index fbe5541a3..6bd72fb6f 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -58,7 +58,7 @@ class Explosion{ public function __construct( public Position $source, - public float $size, + public float $radius, private Entity|Block|null $what = null ){ if(!$this->source->isValid()){ @@ -66,8 +66,8 @@ class Explosion{ } $this->world = $this->source->getWorld(); - if($size <= 0){ - throw new \InvalidArgumentException("Explosion radius must be greater than 0, got $size"); + if($radius <= 0){ + throw new \InvalidArgumentException("Explosion radius must be greater than 0, got $radius"); } $this->subChunkExplorer = new SubChunkExplorer($this->world); } @@ -77,7 +77,7 @@ class Explosion{ * will be destroyed. */ public function explodeA() : bool{ - if($this->size < 0.1){ + if($this->radius < 0.1){ return false; } @@ -96,7 +96,7 @@ class Explosion{ $pointerY = $this->source->y; $pointerZ = $this->source->z; - for($blastForce = $this->size * (mt_rand(700, 1300) / 1000); $blastForce > 0; $blastForce -= $this->stepLen * 0.75){ + for($blastForce = $this->radius * (mt_rand(700, 1300) / 1000); $blastForce > 0; $blastForce -= $this->stepLen * 0.75){ $x = (int) $pointerX; $y = (int) $pointerY; $z = (int) $pointerZ; @@ -142,7 +142,7 @@ class Explosion{ */ public function explodeB() : bool{ $source = (new Vector3($this->source->x, $this->source->y, $this->source->z))->floor(); - $yield = min(100, (1 / $this->size) * 100); + $yield = min(100, (1 / $this->radius) * 100); if($this->what instanceof Entity){ $ev = new EntityExplodeEvent($this->what, $this->source, $this->affectedBlocks, $yield); @@ -155,7 +155,7 @@ class Explosion{ } } - $explosionSize = $this->size * 2; + $explosionSize = $this->radius * 2; $minX = (int) floor($this->source->x - $explosionSize - 1); $maxX = (int) ceil($this->source->x + $explosionSize + 1); $minY = (int) floor($this->source->y - $explosionSize - 1); From 1785cbb6b5acffbb996ce8355eb05da112852211 Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Sun, 18 Dec 2022 14:33:50 -0500 Subject: [PATCH 445/692] Implement FallingBlock missing sounds (#5348) --- src/block/Anvil.php | 6 ++++++ src/block/utils/Fallable.php | 6 ++++++ src/block/utils/FallableTrait.php | 5 +++++ src/entity/object/FallingBlock.php | 11 +++++++++-- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 4b71bd594..59b8d17c9 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -37,6 +37,8 @@ use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\BlockTransaction; +use pocketmine\world\sound\AnvilFallSound; +use pocketmine\world\sound\Sound; use function lcg_value; use function round; @@ -109,4 +111,8 @@ class Anvil extends Transparent implements Fallable{ } return true; } + + public function getLandSound() : ?Sound{ + return new AnvilFallSound(); + } } diff --git a/src/block/utils/Fallable.php b/src/block/utils/Fallable.php index 6c7973d8c..74f96ac8b 100644 --- a/src/block/utils/Fallable.php +++ b/src/block/utils/Fallable.php @@ -25,6 +25,7 @@ namespace pocketmine\block\utils; use pocketmine\block\Block; use pocketmine\entity\object\FallingBlock; +use pocketmine\world\sound\Sound; interface Fallable{ @@ -40,4 +41,9 @@ interface Fallable{ * Returns whether the block should be placed. */ public function onHitGround(FallingBlock $blockEntity) : bool; + + /** + * Returns the sound that will be played when FallingBlock hits the ground. + */ + public function getLandSound() : ?Sound; } diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index 522ea22b1..d13a7f794 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -30,6 +30,7 @@ use pocketmine\entity\object\FallingBlock; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; use pocketmine\world\Position; +use pocketmine\world\sound\Sound; /** * This trait handles falling behaviour for blocks that need them. @@ -62,4 +63,8 @@ trait FallableTrait{ public function onHitGround(FallingBlock $blockEntity) : bool{ return true; } + + public function getLandSound() : ?Sound{ + return null; + } } diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 46f1df102..4333b8933 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -42,6 +42,7 @@ use pocketmine\network\mcpe\protocol\types\entity\EntityIds; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; use pocketmine\world\format\io\GlobalBlockStateHandlers; +use pocketmine\world\sound\BlockBreakSound; use function abs; class FallingBlock extends Entity{ @@ -128,14 +129,20 @@ class FallingBlock extends Entity{ if($this->onGround || $blockTarget !== null){ $this->flagForDespawn(); + $blockResult = $blockTarget ?? $this->block; $block = $world->getBlock($pos); if(!$block->canBeReplaced() || !$world->isInWorld($pos->getFloorX(), $pos->getFloorY(), $pos->getFloorZ()) || ($this->onGround && abs($this->location->y - $this->location->getFloorY()) > 0.001)){ $world->dropItem($this->location, $this->block->asItem()); + $world->addSound($pos->add(0.5, 0.5, 0.5), new BlockBreakSound($blockResult)); }else{ - $ev = new EntityBlockChangeEvent($this, $block, $blockTarget ?? $this->block); + $ev = new EntityBlockChangeEvent($this, $block, $blockResult); $ev->call(); if(!$ev->isCancelled()){ - $world->setBlock($pos, $ev->getTo()); + $b = $ev->getTo(); + $world->setBlock($pos, $b); + if($this->onGround && $b instanceof Fallable && ($sound = $b->getLandSound()) !== null){ + $world->addSound($pos->add(0.5, 0.5, 0.5), $sound); + } } } $hasUpdate = true; From 44e288554a4d15bbf9afab0a23c6c227fc24334e Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Sun, 18 Dec 2022 16:15:27 -0500 Subject: [PATCH 446/692] Implement new records (#5433) --- src/block/utils/RecordType.php | 7 ++++++- .../bedrock/item/ItemSerializerDeserializerRegistrar.php | 3 +++ src/item/StringToItemParser.php | 3 +++ src/item/VanillaItems.php | 6 ++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/block/utils/RecordType.php b/src/block/utils/RecordType.php index f58f9fd60..9b0ab580f 100644 --- a/src/block/utils/RecordType.php +++ b/src/block/utils/RecordType.php @@ -36,12 +36,15 @@ use pocketmine\utils\EnumTrait; * * @method static RecordType DISK_11() * @method static RecordType DISK_13() + * @method static RecordType DISK_5() * @method static RecordType DISK_BLOCKS() * @method static RecordType DISK_CAT() * @method static RecordType DISK_CHIRP() * @method static RecordType DISK_FAR() * @method static RecordType DISK_MALL() * @method static RecordType DISK_MELLOHI() + * @method static RecordType DISK_OTHERSIDE() + * @method static RecordType DISK_PIGSTEP() * @method static RecordType DISK_STAL() * @method static RecordType DISK_STRAD() * @method static RecordType DISK_WAIT() @@ -55,18 +58,20 @@ final class RecordType{ protected static function setup() : void{ self::registerAll( new RecordType("disk_13", "C418 - 13", LevelSoundEvent::RECORD_13, KnownTranslationFactory::item_record_13_desc()), + new RecordType("disk_5", "Samuel Åberg - 5", LevelSoundEvent::RECORD_5, KnownTranslationFactory::item_record_5_desc()), new RecordType("disk_cat", "C418 - cat", LevelSoundEvent::RECORD_CAT, KnownTranslationFactory::item_record_cat_desc()), new RecordType("disk_blocks", "C418 - blocks", LevelSoundEvent::RECORD_BLOCKS, KnownTranslationFactory::item_record_blocks_desc()), new RecordType("disk_chirp", "C418 - chirp", LevelSoundEvent::RECORD_CHIRP, KnownTranslationFactory::item_record_chirp_desc()), new RecordType("disk_far", "C418 - far", LevelSoundEvent::RECORD_FAR, KnownTranslationFactory::item_record_far_desc()), new RecordType("disk_mall", "C418 - mall", LevelSoundEvent::RECORD_MALL, KnownTranslationFactory::item_record_mall_desc()), new RecordType("disk_mellohi", "C418 - mellohi", LevelSoundEvent::RECORD_MELLOHI, KnownTranslationFactory::item_record_mellohi_desc()), + new RecordType("disk_otherside", "Lena Raine - otherside", LevelSoundEvent::RECORD_OTHERSIDE, KnownTranslationFactory::item_record_otherside_desc()), + new RecordType("disk_pigstep", "Lena Raine - Pigstep", LevelSoundEvent::RECORD_PIGSTEP, KnownTranslationFactory::item_record_pigstep_desc()), new RecordType("disk_stal", "C418 - stal", LevelSoundEvent::RECORD_STAL, KnownTranslationFactory::item_record_stal_desc()), new RecordType("disk_strad", "C418 - strad", LevelSoundEvent::RECORD_STRAD, KnownTranslationFactory::item_record_strad_desc()), new RecordType("disk_ward", "C418 - ward", LevelSoundEvent::RECORD_WARD, KnownTranslationFactory::item_record_ward_desc()), new RecordType("disk_11", "C418 - 11", LevelSoundEvent::RECORD_11, KnownTranslationFactory::item_record_11_desc()), new RecordType("disk_wait", "C418 - wait", LevelSoundEvent::RECORD_WAIT, KnownTranslationFactory::item_record_wait_desc()) - //TODO: Lena Raine - Pigstep ); } diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index c213397c9..1c51154fe 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -279,12 +279,15 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Item(Ids::MUSHROOM_STEW, Items::MUSHROOM_STEW()); $this->map1to1Item(Ids::MUSIC_DISC_11, Items::RECORD_11()); $this->map1to1Item(Ids::MUSIC_DISC_13, Items::RECORD_13()); + $this->map1to1Item(Ids::MUSIC_DISC_5, Items::RECORD_5()); $this->map1to1Item(Ids::MUSIC_DISC_BLOCKS, Items::RECORD_BLOCKS()); $this->map1to1Item(Ids::MUSIC_DISC_CAT, Items::RECORD_CAT()); $this->map1to1Item(Ids::MUSIC_DISC_CHIRP, Items::RECORD_CHIRP()); $this->map1to1Item(Ids::MUSIC_DISC_FAR, Items::RECORD_FAR()); $this->map1to1Item(Ids::MUSIC_DISC_MALL, Items::RECORD_MALL()); $this->map1to1Item(Ids::MUSIC_DISC_MELLOHI, Items::RECORD_MELLOHI()); + $this->map1to1Item(Ids::MUSIC_DISC_OTHERSIDE, Items::RECORD_OTHERSIDE()); + $this->map1to1Item(Ids::MUSIC_DISC_PIGSTEP, Items::RECORD_PIGSTEP()); $this->map1to1Item(Ids::MUSIC_DISC_STAL, Items::RECORD_STAL()); $this->map1to1Item(Ids::MUSIC_DISC_STRAD, Items::RECORD_STRAD()); $this->map1to1Item(Ids::MUSIC_DISC_WAIT, Items::RECORD_WAIT()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index b1ff4000b..de2aafa57 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1421,12 +1421,15 @@ final class StringToItemParser extends StringToTParser{ $result->register("raw_salmon", fn() => Items::RAW_SALMON()); $result->register("record_11", fn() => Items::RECORD_11()); $result->register("record_13", fn() => Items::RECORD_13()); + $result->register("record_5", fn() => Items::RECORD_5()); $result->register("record_blocks", fn() => Items::RECORD_BLOCKS()); $result->register("record_cat", fn() => Items::RECORD_CAT()); $result->register("record_chirp", fn() => Items::RECORD_CHIRP()); $result->register("record_far", fn() => Items::RECORD_FAR()); $result->register("record_mall", fn() => Items::RECORD_MALL()); $result->register("record_mellohi", fn() => Items::RECORD_MELLOHI()); + $result->register("record_otherside", fn() => Items::RECORD_OTHERSIDE()); + $result->register("record_pigstep", fn() => Items::RECORD_PIGSTEP()); $result->register("record_stal", fn() => Items::RECORD_STAL()); $result->register("record_strad", fn() => Items::RECORD_STRAD()); $result->register("record_wait", fn() => Items::RECORD_WAIT()); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index f9e786237..d39869f92 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -254,12 +254,15 @@ use pocketmine\world\World; * @method static RawSalmon RAW_SALMON() * @method static Record RECORD_11() * @method static Record RECORD_13() + * @method static Record RECORD_5() * @method static Record RECORD_BLOCKS() * @method static Record RECORD_CAT() * @method static Record RECORD_CHIRP() * @method static Record RECORD_FAR() * @method static Record RECORD_MALL() * @method static Record RECORD_MELLOHI() + * @method static Record RECORD_OTHERSIDE() + * @method static Record RECORD_PIGSTEP() * @method static Record RECORD_STAL() * @method static Record RECORD_STRAD() * @method static Record RECORD_WAIT() @@ -496,12 +499,15 @@ final class VanillaItems{ self::register("raw_salmon", new RawSalmon(new IID(Ids::RAW_SALMON), "Raw Salmon")); self::register("record_11", new Record(new IID(Ids::RECORD_11), RecordType::DISK_11(), "Record 11")); self::register("record_13", new Record(new IID(Ids::RECORD_13), RecordType::DISK_13(), "Record 13")); + self::register("record_5", new Record(new IID(Ids::RECORD_5), RecordType::DISK_5(), "Record 5")); self::register("record_blocks", new Record(new IID(Ids::RECORD_BLOCKS), RecordType::DISK_BLOCKS(), "Record Blocks")); self::register("record_cat", new Record(new IID(Ids::RECORD_CAT), RecordType::DISK_CAT(), "Record Cat")); self::register("record_chirp", new Record(new IID(Ids::RECORD_CHIRP), RecordType::DISK_CHIRP(), "Record Chirp")); self::register("record_far", new Record(new IID(Ids::RECORD_FAR), RecordType::DISK_FAR(), "Record Far")); self::register("record_mall", new Record(new IID(Ids::RECORD_MALL), RecordType::DISK_MALL(), "Record Mall")); self::register("record_mellohi", new Record(new IID(Ids::RECORD_MELLOHI), RecordType::DISK_MELLOHI(), "Record Mellohi")); + self::register("record_otherside", new Record(new IID(Ids::RECORD_OTHERSIDE), RecordType::DISK_OTHERSIDE(), "Record Otherside")); + self::register("record_pigstep", new Record(new IID(Ids::RECORD_PIGSTEP), RecordType::DISK_PIGSTEP(), "Record Pigstep")); self::register("record_stal", new Record(new IID(Ids::RECORD_STAL), RecordType::DISK_STAL(), "Record Stal")); self::register("record_strad", new Record(new IID(Ids::RECORD_STRAD), RecordType::DISK_STRAD(), "Record Strad")); self::register("record_wait", new Record(new IID(Ids::RECORD_WAIT), RecordType::DISK_WAIT(), "Record Wait")); From 58eec637c16466ea550c37249f952cd1a605186c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 13:39:41 +0000 Subject: [PATCH 447/692] Constify NBT keys in world data handling this code is one giant mess that needs to be cleaned up though... --- src/world/format/io/data/BaseNbtWorldData.php | 31 +++-- src/world/format/io/data/BedrockWorldData.php | 129 +++++++++++------- src/world/format/io/data/JavaWorldData.php | 100 ++++++++------ 3 files changed, 155 insertions(+), 105 deletions(-) diff --git a/src/world/format/io/data/BaseNbtWorldData.php b/src/world/format/io/data/BaseNbtWorldData.php index e02bcf21f..ecd9b483c 100644 --- a/src/world/format/io/data/BaseNbtWorldData.php +++ b/src/world/format/io/data/BaseNbtWorldData.php @@ -32,6 +32,15 @@ use pocketmine\world\format\io\WorldData; use function file_exists; abstract class BaseNbtWorldData implements WorldData{ + protected const TAG_LEVEL_NAME = "LevelName"; + protected const TAG_GENERATOR_NAME = "generatorName"; + protected const TAG_GENERATOR_OPTIONS = "generatorOptions"; + protected const TAG_RANDOM_SEED = "RandomSeed"; + protected const TAG_TIME = "Time"; + protected const TAG_SPAWN_X = "SpawnX"; + protected const TAG_SPAWN_Y = "SpawnY"; + protected const TAG_SPAWN_Z = "SpawnZ"; + protected CompoundTag $compoundTag; /** @@ -104,40 +113,40 @@ abstract class BaseNbtWorldData implements WorldData{ /* The below are common between PC and PE */ public function getName() : string{ - return $this->compoundTag->getString("LevelName"); + return $this->compoundTag->getString(self::TAG_LEVEL_NAME); } public function getGenerator() : string{ - return $this->compoundTag->getString("generatorName", "DEFAULT"); + return $this->compoundTag->getString(self::TAG_GENERATOR_NAME, "DEFAULT"); } public function getGeneratorOptions() : string{ - return $this->compoundTag->getString("generatorOptions", ""); + return $this->compoundTag->getString(self::TAG_GENERATOR_OPTIONS, ""); } public function getSeed() : int{ - return $this->compoundTag->getLong("RandomSeed"); + return $this->compoundTag->getLong(self::TAG_RANDOM_SEED); } public function getTime() : int{ - if(($timeTag = $this->compoundTag->getTag("Time")) instanceof IntTag){ //some older PM worlds had this in the wrong format + if(($timeTag = $this->compoundTag->getTag(self::TAG_TIME)) instanceof IntTag){ //some older PM worlds had this in the wrong format return $timeTag->getValue(); } - return $this->compoundTag->getLong("Time", 0); + return $this->compoundTag->getLong(self::TAG_TIME, 0); } public function setTime(int $value) : void{ - $this->compoundTag->setLong("Time", $value); + $this->compoundTag->setLong(self::TAG_TIME, $value); } public function getSpawn() : Vector3{ - return new Vector3($this->compoundTag->getInt("SpawnX"), $this->compoundTag->getInt("SpawnY"), $this->compoundTag->getInt("SpawnZ")); + return new Vector3($this->compoundTag->getInt(self::TAG_SPAWN_X), $this->compoundTag->getInt(self::TAG_SPAWN_Y), $this->compoundTag->getInt(self::TAG_SPAWN_Z)); } public function setSpawn(Vector3 $pos) : void{ - $this->compoundTag->setInt("SpawnX", $pos->getFloorX()); - $this->compoundTag->setInt("SpawnY", $pos->getFloorY()); - $this->compoundTag->setInt("SpawnZ", $pos->getFloorZ()); + $this->compoundTag->setInt(self::TAG_SPAWN_X, $pos->getFloorX()); + $this->compoundTag->setInt(self::TAG_SPAWN_Y, $pos->getFloorY()); + $this->compoundTag->setInt(self::TAG_SPAWN_Z, $pos->getFloorZ()); } } diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 9cdeef0fc..d628bd5c4 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -54,6 +54,29 @@ class BedrockWorldData extends BaseNbtWorldData{ public const GENERATOR_INFINITE = 1; public const GENERATOR_FLAT = 2; + private const TAG_DAY_CYCLE_STOP_TIME = "DayCycleStopTime"; + private const TAG_DIFFICULTY = "Difficulty"; + private const TAG_FORCE_GAME_TYPE = "ForceGameType"; + private const TAG_GAME_TYPE = "GameType"; + private const TAG_GENERATOR = "Generator"; + private const TAG_LAST_PLAYED = "LastPlayed"; + private const TAG_NETWORK_VERSION = "NetworkVersion"; + private const TAG_STORAGE_VERSION = "StorageVersion"; + private const TAG_IS_EDU = "eduLevel"; + private const TAG_FALL_DAMAGE_ENABLED = "falldamage"; + private const TAG_FIRE_DAMAGE_ENABLED = "firedamage"; + private const TAG_ACHIEVEMENTS_DISABLED = "hasBeenLoadedInCreative"; + private const TAG_IMMUTABLE_WORLD = "immutableWorld"; + private const TAG_LIGHTNING_LEVEL = "lightningLevel"; + private const TAG_LIGHTNING_TIME = "lightningTime"; + private const TAG_PVP_ENABLED = "pvp"; + private const TAG_RAIN_LEVEL = "rainLevel"; + private const TAG_RAIN_TIME = "rainTime"; + private const TAG_SPAWN_MOBS = "spawnMobs"; + private const TAG_TEXTURE_PACKS_REQUIRED = "texturePacksRequired"; + private const TAG_HARDCORE = "hardcore"; + private const TAG_GAME_RULES = "GameRules"; + public static function generate(string $path, string $name, WorldCreationOptions $options) : void{ switch($options->getGeneratorClass()){ case Flat::class: @@ -66,39 +89,39 @@ class BedrockWorldData extends BaseNbtWorldData{ $worldData = CompoundTag::create() //Vanilla fields - ->setInt("DayCycleStopTime", -1) - ->setInt("Difficulty", $options->getDifficulty()) - ->setByte("ForceGameType", 0) - ->setInt("GameType", 0) - ->setInt("Generator", $generatorType) - ->setLong("LastPlayed", time()) - ->setString("LevelName", $name) - ->setInt("NetworkVersion", self::CURRENT_STORAGE_NETWORK_VERSION) + ->setInt(self::TAG_DAY_CYCLE_STOP_TIME, -1) + ->setInt(self::TAG_DIFFICULTY, $options->getDifficulty()) + ->setByte(self::TAG_FORCE_GAME_TYPE, 0) + ->setInt(self::TAG_GAME_TYPE, 0) + ->setInt(self::TAG_GENERATOR, $generatorType) + ->setLong(self::TAG_LAST_PLAYED, time()) + ->setString(self::TAG_LEVEL_NAME, $name) + ->setInt(self::TAG_NETWORK_VERSION, self::CURRENT_STORAGE_NETWORK_VERSION) //->setInt("Platform", 2) //TODO: find out what the possible values are for - ->setLong("RandomSeed", $options->getSeed()) - ->setInt("SpawnX", $options->getSpawnPosition()->getFloorX()) - ->setInt("SpawnY", $options->getSpawnPosition()->getFloorY()) - ->setInt("SpawnZ", $options->getSpawnPosition()->getFloorZ()) - ->setInt("StorageVersion", self::CURRENT_STORAGE_VERSION) - ->setLong("Time", 0) - ->setByte("eduLevel", 0) - ->setByte("falldamage", 1) - ->setByte("firedamage", 1) - ->setByte("hasBeenLoadedInCreative", 1) //badly named, this actually determines whether achievements can be earned in this world... - ->setByte("immutableWorld", 0) - ->setFloat("lightningLevel", 0.0) - ->setInt("lightningTime", 0) - ->setByte("pvp", 1) - ->setFloat("rainLevel", 0.0) - ->setInt("rainTime", 0) - ->setByte("spawnMobs", 1) - ->setByte("texturePacksRequired", 0) //TODO + ->setLong(self::TAG_RANDOM_SEED, $options->getSeed()) + ->setInt(self::TAG_SPAWN_X, $options->getSpawnPosition()->getFloorX()) + ->setInt(self::TAG_SPAWN_Y, $options->getSpawnPosition()->getFloorY()) + ->setInt(self::TAG_SPAWN_Z, $options->getSpawnPosition()->getFloorZ()) + ->setInt(self::TAG_STORAGE_VERSION, self::CURRENT_STORAGE_VERSION) + ->setLong(self::TAG_TIME, 0) + ->setByte(self::TAG_IS_EDU, 0) + ->setByte(self::TAG_FALL_DAMAGE_ENABLED, 1) + ->setByte(self::TAG_FIRE_DAMAGE_ENABLED, 1) + ->setByte(self::TAG_ACHIEVEMENTS_DISABLED, 1) //badly named, this actually determines whether achievements can be earned in this world... + ->setByte(self::TAG_IMMUTABLE_WORLD, 0) + ->setFloat(self::TAG_LIGHTNING_LEVEL, 0.0) + ->setInt(self::TAG_LIGHTNING_TIME, 0) + ->setByte(self::TAG_PVP_ENABLED, 1) + ->setFloat(self::TAG_RAIN_LEVEL, 0.0) + ->setInt(self::TAG_RAIN_TIME, 0) + ->setByte(self::TAG_SPAWN_MOBS, 1) + ->setByte(self::TAG_TEXTURE_PACKS_REQUIRED, 0) //TODO //Additional PocketMine-MP fields - ->setTag("GameRules", new CompoundTag()) - ->setByte("hardcore", 0) - ->setString("generatorName", GeneratorManager::getInstance()->getGeneratorName($options->getGeneratorClass())) - ->setString("generatorOptions", $options->getGeneratorOptions()); + ->setTag(self::TAG_GAME_RULES, new CompoundTag()) + ->setByte(self::TAG_HARDCORE, 0) + ->setString(self::TAG_GENERATOR_NAME, GeneratorManager::getInstance()->getGeneratorName($options->getGeneratorClass())) + ->setString(self::TAG_GENERATOR_OPTIONS, $options->getGeneratorOptions()); $nbt = new LittleEndianNbtSerializer(); $buffer = $nbt->write(new TreeRoot($worldData)); @@ -120,7 +143,7 @@ class BedrockWorldData extends BaseNbtWorldData{ throw new CorruptedWorldException($e->getMessage(), 0, $e); } - $version = $worldData->getInt("StorageVersion", Limits::INT32_MAX); + $version = $worldData->getInt(self::TAG_STORAGE_VERSION, Limits::INT32_MAX); if($version > self::CURRENT_STORAGE_VERSION){ throw new UnsupportedWorldFormatException("LevelDB world format version $version is currently unsupported"); } @@ -129,18 +152,18 @@ class BedrockWorldData extends BaseNbtWorldData{ } protected function fix() : void{ - $generatorNameTag = $this->compoundTag->getTag("generatorName"); + $generatorNameTag = $this->compoundTag->getTag(self::TAG_GENERATOR_NAME); if(!($generatorNameTag instanceof StringTag)){ - if(($mcpeGeneratorTypeTag = $this->compoundTag->getTag("Generator")) instanceof IntTag){ + if(($mcpeGeneratorTypeTag = $this->compoundTag->getTag(self::TAG_GENERATOR)) instanceof IntTag){ switch($mcpeGeneratorTypeTag->getValue()){ //Detect correct generator from MCPE data case self::GENERATOR_FLAT: - $this->compoundTag->setString("generatorName", "flat"); - $this->compoundTag->setString("generatorOptions", "2;7,3,3,2;1"); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, "flat"); + $this->compoundTag->setString(self::TAG_GENERATOR_OPTIONS, "2;7,3,3,2;1"); break; case self::GENERATOR_INFINITE: //TODO: add a null generator which does not generate missing chunks (to allow importing back to MCPE and generating more normal terrain without PocketMine messing things up) - $this->compoundTag->setString("generatorName", "default"); - $this->compoundTag->setString("generatorOptions", ""); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, "default"); + $this->compoundTag->setString(self::TAG_GENERATOR_OPTIONS, ""); break; case self::GENERATOR_LIMITED: throw new UnsupportedWorldFormatException("Limited worlds are not currently supported"); @@ -148,20 +171,20 @@ class BedrockWorldData extends BaseNbtWorldData{ throw new UnsupportedWorldFormatException("Unknown LevelDB generator type"); } }else{ - $this->compoundTag->setString("generatorName", "default"); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, "default"); } }elseif(($generatorName = self::hackyFixForGeneratorClasspathInLevelDat($generatorNameTag->getValue())) !== null){ - $this->compoundTag->setString("generatorName", $generatorName); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, $generatorName); } - if(!($this->compoundTag->getTag("generatorOptions")) instanceof StringTag){ - $this->compoundTag->setString("generatorOptions", ""); + if(!($this->compoundTag->getTag(self::TAG_GENERATOR_OPTIONS)) instanceof StringTag){ + $this->compoundTag->setString(self::TAG_GENERATOR_OPTIONS, ""); } } public function save() : void{ - $this->compoundTag->setInt("NetworkVersion", self::CURRENT_STORAGE_NETWORK_VERSION); - $this->compoundTag->setInt("StorageVersion", self::CURRENT_STORAGE_VERSION); + $this->compoundTag->setInt(self::TAG_NETWORK_VERSION, self::CURRENT_STORAGE_NETWORK_VERSION); + $this->compoundTag->setInt(self::TAG_STORAGE_VERSION, self::CURRENT_STORAGE_VERSION); $nbt = new LittleEndianNbtSerializer(); $buffer = $nbt->write(new TreeRoot($this->compoundTag)); @@ -169,42 +192,42 @@ class BedrockWorldData extends BaseNbtWorldData{ } public function getDifficulty() : int{ - return $this->compoundTag->getInt("Difficulty", World::DIFFICULTY_NORMAL); + return $this->compoundTag->getInt(self::TAG_DIFFICULTY, World::DIFFICULTY_NORMAL); } public function setDifficulty(int $difficulty) : void{ - $this->compoundTag->setInt("Difficulty", $difficulty); //yes, this is intended! (in PE: int, PC: byte) + $this->compoundTag->setInt(self::TAG_DIFFICULTY, $difficulty); //yes, this is intended! (in PE: int, PC: byte) } public function getRainTime() : int{ - return $this->compoundTag->getInt("rainTime", 0); + return $this->compoundTag->getInt(self::TAG_RAIN_TIME, 0); } public function setRainTime(int $ticks) : void{ - $this->compoundTag->setInt("rainTime", $ticks); + $this->compoundTag->setInt(self::TAG_RAIN_TIME, $ticks); } public function getRainLevel() : float{ - return $this->compoundTag->getFloat("rainLevel", 0.0); + return $this->compoundTag->getFloat(self::TAG_RAIN_LEVEL, 0.0); } public function setRainLevel(float $level) : void{ - $this->compoundTag->setFloat("rainLevel", $level); + $this->compoundTag->setFloat(self::TAG_RAIN_LEVEL, $level); } public function getLightningTime() : int{ - return $this->compoundTag->getInt("lightningTime", 0); + return $this->compoundTag->getInt(self::TAG_LIGHTNING_TIME, 0); } public function setLightningTime(int $ticks) : void{ - $this->compoundTag->setInt("lightningTime", $ticks); + $this->compoundTag->setInt(self::TAG_LIGHTNING_TIME, $ticks); } public function getLightningLevel() : float{ - return $this->compoundTag->getFloat("lightningLevel", 0.0); + return $this->compoundTag->getFloat(self::TAG_LIGHTNING_LEVEL, 0.0); } public function setLightningLevel(float $level) : void{ - $this->compoundTag->setFloat("lightningLevel", $level); + $this->compoundTag->setFloat(self::TAG_LIGHTNING_LEVEL, $level); } } diff --git a/src/world/format/io/data/JavaWorldData.php b/src/world/format/io/data/JavaWorldData.php index e53d857ad..817cee0fe 100644 --- a/src/world/format/io/data/JavaWorldData.php +++ b/src/world/format/io/data/JavaWorldData.php @@ -46,31 +46,49 @@ use const ZLIB_ENCODING_GZIP; class JavaWorldData extends BaseNbtWorldData{ + private const TAG_DAY_TIME = "DayTime"; + private const TAG_DIFFICULTY = "Difficulty"; + private const TAG_FORMAT_VERSION = "version"; + private const TAG_GAME_RULES = "GameRules"; + private const TAG_GAME_TYPE = "GameType"; + private const TAG_GENERATOR_VERSION = "generatorVersion"; + private const TAG_HARDCORE = "hardcore"; + private const TAG_INITIALIZED = "initialized"; + private const TAG_LAST_PLAYED = "LastPlayed"; + private const TAG_LIGHTNING_LEVEL = "lightningLevel"; + private const TAG_RAINING = "raining"; + private const TAG_RAIN_LEVEL = "rainLevel"; + private const TAG_RAIN_TIME = "rainTime"; + private const TAG_ROOT_DATA = "Data"; + private const TAG_SIZE_ON_DISK = "SizeOnDisk"; + private const TAG_THUNDERING = "thundering"; + private const TAG_THUNDER_TIME = "thunderTime"; + public static function generate(string $path, string $name, WorldCreationOptions $options, int $version = 19133) : void{ //TODO, add extra details $worldData = CompoundTag::create() - ->setByte("hardcore", 0) - ->setByte("Difficulty", $options->getDifficulty()) - ->setByte("initialized", 1) - ->setInt("GameType", 0) - ->setInt("generatorVersion", 1) //2 in MCPE - ->setInt("SpawnX", $options->getSpawnPosition()->getFloorX()) - ->setInt("SpawnY", $options->getSpawnPosition()->getFloorY()) - ->setInt("SpawnZ", $options->getSpawnPosition()->getFloorZ()) - ->setInt("version", $version) - ->setInt("DayTime", 0) - ->setLong("LastPlayed", (int) (microtime(true) * 1000)) - ->setLong("RandomSeed", $options->getSeed()) - ->setLong("SizeOnDisk", 0) - ->setLong("Time", 0) - ->setString("generatorName", GeneratorManager::getInstance()->getGeneratorName($options->getGeneratorClass())) - ->setString("generatorOptions", $options->getGeneratorOptions()) - ->setString("LevelName", $name) - ->setTag("GameRules", new CompoundTag()); + ->setByte(self::TAG_HARDCORE, 0) + ->setByte(self::TAG_DIFFICULTY, $options->getDifficulty()) + ->setByte(self::TAG_INITIALIZED, 1) + ->setInt(self::TAG_GAME_TYPE, 0) + ->setInt(self::TAG_GENERATOR_VERSION, 1) //2 in MCPE + ->setInt(self::TAG_SPAWN_X, $options->getSpawnPosition()->getFloorX()) + ->setInt(self::TAG_SPAWN_Y, $options->getSpawnPosition()->getFloorY()) + ->setInt(self::TAG_SPAWN_Z, $options->getSpawnPosition()->getFloorZ()) + ->setInt(self::TAG_FORMAT_VERSION, $version) + ->setInt(self::TAG_DAY_TIME, 0) + ->setLong(self::TAG_LAST_PLAYED, (int) (microtime(true) * 1000)) + ->setLong(self::TAG_RANDOM_SEED, $options->getSeed()) + ->setLong(self::TAG_SIZE_ON_DISK, 0) + ->setLong(self::TAG_TIME, 0) + ->setString(self::TAG_GENERATOR_NAME, GeneratorManager::getInstance()->getGeneratorName($options->getGeneratorClass())) + ->setString(self::TAG_GENERATOR_OPTIONS, $options->getGeneratorOptions()) + ->setString(self::TAG_LEVEL_NAME, $name) + ->setTag(self::TAG_GAME_RULES, new CompoundTag()); $nbt = new BigEndianNbtSerializer(); - $buffer = zlib_encode($nbt->write(new TreeRoot(CompoundTag::create()->setTag("Data", $worldData))), ZLIB_ENCODING_GZIP); + $buffer = zlib_encode($nbt->write(new TreeRoot(CompoundTag::create()->setTag(self::TAG_ROOT_DATA, $worldData))), ZLIB_ENCODING_GZIP); file_put_contents(Path::join($path, "level.dat"), $buffer); } @@ -90,79 +108,79 @@ class JavaWorldData extends BaseNbtWorldData{ throw new CorruptedWorldException($e->getMessage(), 0, $e); } - $dataTag = $worldData->getTag("Data"); + $dataTag = $worldData->getTag(self::TAG_ROOT_DATA); if(!($dataTag instanceof CompoundTag)){ - throw new CorruptedWorldException("Missing 'Data' key or wrong type"); + throw new CorruptedWorldException("Missing '" . self::TAG_ROOT_DATA . "' key or wrong type"); } return $dataTag; } protected function fix() : void{ - $generatorNameTag = $this->compoundTag->getTag("generatorName"); + $generatorNameTag = $this->compoundTag->getTag(self::TAG_GENERATOR_NAME); if(!($generatorNameTag instanceof StringTag)){ - $this->compoundTag->setString("generatorName", "default"); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, "default"); }elseif(($generatorName = self::hackyFixForGeneratorClasspathInLevelDat($generatorNameTag->getValue())) !== null){ - $this->compoundTag->setString("generatorName", $generatorName); + $this->compoundTag->setString(self::TAG_GENERATOR_NAME, $generatorName); } - if(!($this->compoundTag->getTag("generatorOptions") instanceof StringTag)){ - $this->compoundTag->setString("generatorOptions", ""); + if(!($this->compoundTag->getTag(self::TAG_GENERATOR_OPTIONS) instanceof StringTag)){ + $this->compoundTag->setString(self::TAG_GENERATOR_OPTIONS, ""); } } public function save() : void{ $nbt = new BigEndianNbtSerializer(); - $buffer = Utils::assumeNotFalse(zlib_encode($nbt->write(new TreeRoot(CompoundTag::create()->setTag("Data", $this->compoundTag))), ZLIB_ENCODING_GZIP)); + $buffer = Utils::assumeNotFalse(zlib_encode($nbt->write(new TreeRoot(CompoundTag::create()->setTag(self::TAG_ROOT_DATA, $this->compoundTag))), ZLIB_ENCODING_GZIP)); Filesystem::safeFilePutContents($this->dataPath, $buffer); } public function getDifficulty() : int{ - return $this->compoundTag->getByte("Difficulty", World::DIFFICULTY_NORMAL); + return $this->compoundTag->getByte(self::TAG_DIFFICULTY, World::DIFFICULTY_NORMAL); } public function setDifficulty(int $difficulty) : void{ - $this->compoundTag->setByte("Difficulty", $difficulty); + $this->compoundTag->setByte(self::TAG_DIFFICULTY, $difficulty); } public function getRainTime() : int{ - return $this->compoundTag->getInt("rainTime", 0); + return $this->compoundTag->getInt(self::TAG_RAIN_TIME, 0); } public function setRainTime(int $ticks) : void{ - $this->compoundTag->setInt("rainTime", $ticks); + $this->compoundTag->setInt(self::TAG_RAIN_TIME, $ticks); } public function getRainLevel() : float{ - if(($rainLevelTag = $this->compoundTag->getTag("rainLevel")) instanceof FloatTag){ //PocketMine/MCPE + if(($rainLevelTag = $this->compoundTag->getTag(self::TAG_RAIN_LEVEL)) instanceof FloatTag){ //PocketMine/MCPE return $rainLevelTag->getValue(); } - return (float) $this->compoundTag->getByte("raining", 0); //PC vanilla + return (float) $this->compoundTag->getByte(self::TAG_RAINING, 0); //PC vanilla } public function setRainLevel(float $level) : void{ - $this->compoundTag->setFloat("rainLevel", $level); //PocketMine/MCPE - $this->compoundTag->setByte("raining", (int) ceil($level)); //PC vanilla + $this->compoundTag->setFloat(self::TAG_RAIN_LEVEL, $level); //PocketMine/MCPE + $this->compoundTag->setByte(self::TAG_RAINING, (int) ceil($level)); //PC vanilla } public function getLightningTime() : int{ - return $this->compoundTag->getInt("thunderTime", 0); + return $this->compoundTag->getInt(self::TAG_THUNDER_TIME, 0); } public function setLightningTime(int $ticks) : void{ - $this->compoundTag->setInt("thunderTime", $ticks); + $this->compoundTag->setInt(self::TAG_THUNDER_TIME, $ticks); } public function getLightningLevel() : float{ - if(($lightningLevelTag = $this->compoundTag->getTag("lightningLevel")) instanceof FloatTag){ //PocketMine/MCPE + if(($lightningLevelTag = $this->compoundTag->getTag(self::TAG_LIGHTNING_LEVEL)) instanceof FloatTag){ //PocketMine/MCPE return $lightningLevelTag->getValue(); } - return (float) $this->compoundTag->getByte("thundering", 0); //PC vanilla + return (float) $this->compoundTag->getByte(self::TAG_THUNDERING, 0); //PC vanilla } public function setLightningLevel(float $level) : void{ - $this->compoundTag->setFloat("lightningLevel", $level); //PocketMine/MCPE - $this->compoundTag->setByte("thundering", (int) ceil($level)); //PC vanilla + $this->compoundTag->setFloat(self::TAG_LIGHTNING_LEVEL, $level); //PocketMine/MCPE + $this->compoundTag->setByte(self::TAG_THUNDERING, (int) ceil($level)); //PC vanilla } } From b27c47335cb404c6049dec43a49cccf3b2b3edd8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 13:43:28 +0000 Subject: [PATCH 448/692] JavaWorldData: remove Bedrock-compatible hacks we don't need these, since we don't write to Java world formats anymore anyway. --- src/world/format/io/data/JavaWorldData.php | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/world/format/io/data/JavaWorldData.php b/src/world/format/io/data/JavaWorldData.php index 817cee0fe..8575ee729 100644 --- a/src/world/format/io/data/JavaWorldData.php +++ b/src/world/format/io/data/JavaWorldData.php @@ -55,9 +55,7 @@ class JavaWorldData extends BaseNbtWorldData{ private const TAG_HARDCORE = "hardcore"; private const TAG_INITIALIZED = "initialized"; private const TAG_LAST_PLAYED = "LastPlayed"; - private const TAG_LIGHTNING_LEVEL = "lightningLevel"; private const TAG_RAINING = "raining"; - private const TAG_RAIN_LEVEL = "rainLevel"; private const TAG_RAIN_TIME = "rainTime"; private const TAG_ROOT_DATA = "Data"; private const TAG_SIZE_ON_DISK = "SizeOnDisk"; @@ -151,16 +149,11 @@ class JavaWorldData extends BaseNbtWorldData{ } public function getRainLevel() : float{ - if(($rainLevelTag = $this->compoundTag->getTag(self::TAG_RAIN_LEVEL)) instanceof FloatTag){ //PocketMine/MCPE - return $rainLevelTag->getValue(); - } - - return (float) $this->compoundTag->getByte(self::TAG_RAINING, 0); //PC vanilla + return (float) $this->compoundTag->getByte(self::TAG_RAINING, 0); } public function setRainLevel(float $level) : void{ - $this->compoundTag->setFloat(self::TAG_RAIN_LEVEL, $level); //PocketMine/MCPE - $this->compoundTag->setByte(self::TAG_RAINING, (int) ceil($level)); //PC vanilla + $this->compoundTag->setByte(self::TAG_RAINING, (int) ceil($level)); } public function getLightningTime() : int{ @@ -172,15 +165,10 @@ class JavaWorldData extends BaseNbtWorldData{ } public function getLightningLevel() : float{ - if(($lightningLevelTag = $this->compoundTag->getTag(self::TAG_LIGHTNING_LEVEL)) instanceof FloatTag){ //PocketMine/MCPE - return $lightningLevelTag->getValue(); - } - - return (float) $this->compoundTag->getByte(self::TAG_THUNDERING, 0); //PC vanilla + return (float) $this->compoundTag->getByte(self::TAG_THUNDERING, 0); } public function setLightningLevel(float $level) : void{ - $this->compoundTag->setFloat(self::TAG_LIGHTNING_LEVEL, $level); //PocketMine/MCPE - $this->compoundTag->setByte(self::TAG_THUNDERING, (int) ceil($level)); //PC vanilla + $this->compoundTag->setByte(self::TAG_THUNDERING, (int) ceil($level)); } } From be1087c071dff8d1eac2e731541793bc7031606b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 14:55:24 +0000 Subject: [PATCH 449/692] Accept worlds from 1.19.40 and up --- src/world/format/io/data/BedrockWorldData.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index d628bd5c4..efdae1873 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -47,8 +47,8 @@ use function time; class BedrockWorldData extends BaseNbtWorldData{ - public const CURRENT_STORAGE_VERSION = 9; - public const CURRENT_STORAGE_NETWORK_VERSION = 527; // 1.19.0 + public const CURRENT_STORAGE_VERSION = 10; + public const CURRENT_STORAGE_NETWORK_VERSION = 560; public const GENERATOR_LIMITED = 0; public const GENERATOR_INFINITE = 1; From d7ebabd7714edb85a3b66c8fb0f72d7278effedf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 14:56:04 +0000 Subject: [PATCH 450/692] Fixed the client asking to upgrade PM-generated worlds --- src/world/format/io/data/BedrockWorldData.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index efdae1873..01eb18c64 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -27,6 +27,7 @@ use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; +use pocketmine\nbt\tag\ListTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\utils\Binary; @@ -49,6 +50,13 @@ class BedrockWorldData extends BaseNbtWorldData{ public const CURRENT_STORAGE_VERSION = 10; public const CURRENT_STORAGE_NETWORK_VERSION = 560; + public const CURRENT_CLIENT_VERSION_TARGET = [ + 1, //major + 19, //minor + 50, //patch + 0, //revision + 0 //is beta + ]; public const GENERATOR_LIMITED = 0; public const GENERATOR_INFINITE = 1; @@ -76,6 +84,7 @@ class BedrockWorldData extends BaseNbtWorldData{ private const TAG_TEXTURE_PACKS_REQUIRED = "texturePacksRequired"; private const TAG_HARDCORE = "hardcore"; private const TAG_GAME_RULES = "GameRules"; + private const TAG_LAST_OPENED_WITH_VERSION = "lastOpenedWithVersion"; public static function generate(string $path, string $name, WorldCreationOptions $options) : void{ switch($options->getGeneratorClass()){ @@ -116,6 +125,7 @@ class BedrockWorldData extends BaseNbtWorldData{ ->setInt(self::TAG_RAIN_TIME, 0) ->setByte(self::TAG_SPAWN_MOBS, 1) ->setByte(self::TAG_TEXTURE_PACKS_REQUIRED, 0) //TODO + ->setTag(self::TAG_LAST_OPENED_WITH_VERSION, new ListTag(array_map(fn(int $v) => new IntTag($v), self::CURRENT_CLIENT_VERSION_TARGET))) //Additional PocketMine-MP fields ->setTag(self::TAG_GAME_RULES, new CompoundTag()) @@ -185,6 +195,7 @@ class BedrockWorldData extends BaseNbtWorldData{ public function save() : void{ $this->compoundTag->setInt(self::TAG_NETWORK_VERSION, self::CURRENT_STORAGE_NETWORK_VERSION); $this->compoundTag->setInt(self::TAG_STORAGE_VERSION, self::CURRENT_STORAGE_VERSION); + $this->compoundTag->setTag(self::TAG_LAST_OPENED_WITH_VERSION, new ListTag(array_map(fn(int $v) => new IntTag($v), self::CURRENT_CLIENT_VERSION_TARGET))); $nbt = new LittleEndianNbtSerializer(); $buffer = $nbt->write(new TreeRoot($this->compoundTag)); From a30c649607386d8494ee297e7ef9c074b368c56f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 14:59:55 +0000 Subject: [PATCH 451/692] BedrockWorldData: enable commands by default --- src/world/format/io/data/BedrockWorldData.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 01eb18c64..62a7575f1 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -85,6 +85,7 @@ class BedrockWorldData extends BaseNbtWorldData{ private const TAG_HARDCORE = "hardcore"; private const TAG_GAME_RULES = "GameRules"; private const TAG_LAST_OPENED_WITH_VERSION = "lastOpenedWithVersion"; + private const TAG_COMMANDS_ENABLED = "commandsEnabled"; public static function generate(string $path, string $name, WorldCreationOptions $options) : void{ switch($options->getGeneratorClass()){ @@ -125,6 +126,7 @@ class BedrockWorldData extends BaseNbtWorldData{ ->setInt(self::TAG_RAIN_TIME, 0) ->setByte(self::TAG_SPAWN_MOBS, 1) ->setByte(self::TAG_TEXTURE_PACKS_REQUIRED, 0) //TODO + ->setByte(self::TAG_COMMANDS_ENABLED, 1) ->setTag(self::TAG_LAST_OPENED_WITH_VERSION, new ListTag(array_map(fn(int $v) => new IntTag($v), self::CURRENT_CLIENT_VERSION_TARGET))) //Additional PocketMine-MP fields From de3af9e66059957debee62d35288c6fa6ae6ae79 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 15:02:59 +0000 Subject: [PATCH 452/692] Fix CS --- src/world/format/io/data/BedrockWorldData.php | 1 + src/world/format/io/data/JavaWorldData.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 62a7575f1..d9530cdad 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -40,6 +40,7 @@ use pocketmine\world\generator\GeneratorManager; use pocketmine\world\World; use pocketmine\world\WorldCreationOptions; use Symfony\Component\Filesystem\Path; +use function array_map; use function file_get_contents; use function file_put_contents; use function strlen; diff --git a/src/world/format/io/data/JavaWorldData.php b/src/world/format/io/data/JavaWorldData.php index 8575ee729..a93ee90a7 100644 --- a/src/world/format/io/data/JavaWorldData.php +++ b/src/world/format/io/data/JavaWorldData.php @@ -26,7 +26,6 @@ namespace pocketmine\world\format\io\data; use pocketmine\nbt\BigEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\nbt\tag\FloatTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\utils\Filesystem; From 9809909072ff806da75b92d6d9a86125105e70d2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 15:06:06 +0000 Subject: [PATCH 453/692] BedrockWorldData: remove unused custom fields --- src/world/format/io/data/BedrockWorldData.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index d9530cdad..111f7749c 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -83,8 +83,6 @@ class BedrockWorldData extends BaseNbtWorldData{ private const TAG_RAIN_TIME = "rainTime"; private const TAG_SPAWN_MOBS = "spawnMobs"; private const TAG_TEXTURE_PACKS_REQUIRED = "texturePacksRequired"; - private const TAG_HARDCORE = "hardcore"; - private const TAG_GAME_RULES = "GameRules"; private const TAG_LAST_OPENED_WITH_VERSION = "lastOpenedWithVersion"; private const TAG_COMMANDS_ENABLED = "commandsEnabled"; @@ -131,8 +129,6 @@ class BedrockWorldData extends BaseNbtWorldData{ ->setTag(self::TAG_LAST_OPENED_WITH_VERSION, new ListTag(array_map(fn(int $v) => new IntTag($v), self::CURRENT_CLIENT_VERSION_TARGET))) //Additional PocketMine-MP fields - ->setTag(self::TAG_GAME_RULES, new CompoundTag()) - ->setByte(self::TAG_HARDCORE, 0) ->setString(self::TAG_GENERATOR_NAME, GeneratorManager::getInstance()->getGeneratorName($options->getGeneratorClass())) ->setString(self::TAG_GENERATOR_OPTIONS, $options->getGeneratorOptions()); From 0efd928db695e5bc7ddf858a0025bc6c39523934 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 15:11:06 +0000 Subject: [PATCH 454/692] Apply a prefix to block type tags --- src/block/BlockTypeTags.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/block/BlockTypeTags.php b/src/block/BlockTypeTags.php index 8bcd4c589..8537a2814 100644 --- a/src/block/BlockTypeTags.php +++ b/src/block/BlockTypeTags.php @@ -24,9 +24,10 @@ declare(strict_types=1); namespace pocketmine\block; final class BlockTypeTags{ + private const PREFIX = "pocketmine:"; - public const DIRT = "dirt"; - public const MUD = "mud"; - public const SAND = "sand"; - public const POTTABLE_PLANTS = "pottable"; + public const DIRT = self::PREFIX . "dirt"; + public const MUD = self::PREFIX . "mud"; + public const SAND = self::PREFIX . "sand"; + public const POTTABLE_PLANTS = self::PREFIX . "pottable"; } From f38b15cf8344650c8e5370573af8c3fc275a835c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 15:22:09 +0000 Subject: [PATCH 455/692] Added tag for fire blocks --- src/block/BlockTypeTags.php | 1 + src/block/VanillaBlocks.php | 4 ++-- src/entity/projectile/SplashPotion.php | 6 +++--- src/player/Player.php | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/block/BlockTypeTags.php b/src/block/BlockTypeTags.php index 8537a2814..19a4825d9 100644 --- a/src/block/BlockTypeTags.php +++ b/src/block/BlockTypeTags.php @@ -30,4 +30,5 @@ final class BlockTypeTags{ public const MUD = self::PREFIX . "mud"; public const SAND = self::PREFIX . "sand"; public const POTTABLE_PLANTS = self::PREFIX . "pottable"; + public const FIRE = self::PREFIX . "fire"; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index a4e70031b..277cac26c 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -829,7 +829,7 @@ final class VanillaBlocks{ self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new Info(BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0)))); self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new Info(BreakInfo::shovel(0.6), [Tags::DIRT]))); - self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", new Info(BreakInfo::instant()))); + self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", new Info(BreakInfo::instant(), [Tags::FIRE]))); self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new Info(BreakInfo::axe(2.5, null, 2.5)))); $flowerTypeInfo = new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]); @@ -1457,7 +1457,7 @@ final class VanillaBlocks{ self::register("cracked_polished_blackstone_bricks", new Opaque(new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS), "Cracked Polished Blackstone Bricks", $blackstoneBreakInfo)); self::register("soul_torch", new Torch(new BID(Ids::SOUL_TORCH), "Soul Torch", new Info(BreakInfo::instant()))); - self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", new Info(BreakInfo::instant()))); + self::register("soul_fire", new SoulFire(new BID(Ids::SOUL_FIRE), "Soul Fire", new Info(BreakInfo::instant(), [Tags::FIRE]))); //TODO: soul soul ought to have 0.5 hardness (as per java) but it's 1.0 in Bedrock (probably parity bug) self::register("soul_soil", new Opaque(new BID(Ids::SOUL_SOIL), "Soul Soil", new Info(BreakInfo::shovel(1.0)))); diff --git a/src/entity/projectile/SplashPotion.php b/src/entity/projectile/SplashPotion.php index 3f6eeff7e..4f4e3de97 100644 --- a/src/entity/projectile/SplashPotion.php +++ b/src/entity/projectile/SplashPotion.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\entity\projectile; -use pocketmine\block\BlockTypeIds; +use pocketmine\block\BlockTypeTags; use pocketmine\block\VanillaBlocks; use pocketmine\color\Color; use pocketmine\data\bedrock\PotionTypeIdMap; @@ -130,11 +130,11 @@ class SplashPotion extends Throwable{ }elseif($event instanceof ProjectileHitBlockEvent && $this->getPotionType()->equals(PotionType::WATER())){ $blockIn = $event->getBlockHit()->getSide($event->getRayTraceResult()->getHitFace()); - if($blockIn->getTypeId() === BlockTypeIds::FIRE){ + if($blockIn->hasTypeTag(BlockTypeTags::FIRE)){ $this->getWorld()->setBlock($blockIn->getPosition(), VanillaBlocks::AIR()); } foreach($blockIn->getHorizontalSides() as $horizontalSide){ - if($horizontalSide->getTypeId() === BlockTypeIds::FIRE){ + if($horizontalSide->hasTypeTag(BlockTypeTags::FIRE)){ $this->getWorld()->setBlock($horizontalSide->getPosition(), VanillaBlocks::AIR()); } } diff --git a/src/player/Player.php b/src/player/Player.php index 6025710d9..5b352acf7 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\player; use pocketmine\block\Bed; -use pocketmine\block\BlockTypeIds; +use pocketmine\block\BlockTypeTags; use pocketmine\block\UnknownBlock; use pocketmine\block\VanillaBlocks; use pocketmine\command\CommandSender; @@ -1684,7 +1684,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ } $block = $target->getSide($face); - if($block->getTypeId() === BlockTypeIds::FIRE || $block->getTypeId() === BlockTypeIds::SOUL_FIRE){ + if($block->hasTypeTag(BlockTypeTags::FIRE)){ $this->getWorld()->setBlock($block->getPosition(), VanillaBlocks::AIR()); $this->getWorld()->addSound($block->getPosition()->add(0.5, 0.5, 0.5), new FireExtinguishSound()); return true; From ec59dc1c8016d2fd7f9aa82e6fee87f2d5c228d0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 15:58:26 +0000 Subject: [PATCH 456/692] SuspiciousStewTypeIdMap: fixed uninitialized fields --- src/data/bedrock/SuspiciousStewTypeIdMap.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/SuspiciousStewTypeIdMap.php b/src/data/bedrock/SuspiciousStewTypeIdMap.php index 54c1fdcb9..1dc86abf1 100644 --- a/src/data/bedrock/SuspiciousStewTypeIdMap.php +++ b/src/data/bedrock/SuspiciousStewTypeIdMap.php @@ -33,13 +33,13 @@ final class SuspiciousStewTypeIdMap{ * @var SuspiciousStewType[] * @phpstan-var array */ - private array $idToEnum; + private array $idToEnum = []; /** * @var int[] * @phpstan-var array */ - private array $enumToId; + private array $enumToId = []; private function __construct(){ $this->register(SuspiciousStewTypeIds::POPPY, SuspiciousStewType::POPPY()); From 16f90f412031ca9142354712dafe418bb11ddb15 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 16:04:32 +0000 Subject: [PATCH 457/692] EntityFactory: remove legacy save IDs this can be more cleanly handled using BedrockData. --- src/data/bedrock/EntityLegacyIds.php | 134 --------------------------- src/entity/EntityFactory.php | 38 ++++---- 2 files changed, 18 insertions(+), 154 deletions(-) delete mode 100644 src/data/bedrock/EntityLegacyIds.php diff --git a/src/data/bedrock/EntityLegacyIds.php b/src/data/bedrock/EntityLegacyIds.php deleted file mode 100644 index 8e60ef0e9..000000000 --- a/src/data/bedrock/EntityLegacyIds.php +++ /dev/null @@ -1,134 +0,0 @@ -register(Arrow::class, function(World $world, CompoundTag $nbt) : Arrow{ return new Arrow(Helper::parseLocation($nbt, $world), null, $nbt->getByte(Arrow::TAG_CRIT, 0) === 1, $nbt); - }, ['Arrow', 'minecraft:arrow'], LegacyIds::ARROW); + }, ['Arrow', 'minecraft:arrow']); $this->register(Egg::class, function(World $world, CompoundTag $nbt) : Egg{ return new Egg(Helper::parseLocation($nbt, $world), null, $nbt); - }, ['Egg', 'minecraft:egg'], LegacyIds::EGG); + }, ['Egg', 'minecraft:egg']); $this->register(EnderPearl::class, function(World $world, CompoundTag $nbt) : EnderPearl{ return new EnderPearl(Helper::parseLocation($nbt, $world), null, $nbt); - }, ['ThrownEnderpearl', 'minecraft:ender_pearl'], LegacyIds::ENDER_PEARL); + }, ['ThrownEnderpearl', 'minecraft:ender_pearl']); $this->register(ExperienceBottle::class, function(World $world, CompoundTag $nbt) : ExperienceBottle{ return new ExperienceBottle(Helper::parseLocation($nbt, $world), null, $nbt); - }, ['ThrownExpBottle', 'minecraft:xp_bottle'], LegacyIds::XP_BOTTLE); + }, ['ThrownExpBottle', 'minecraft:xp_bottle']); $this->register(ExperienceOrb::class, function(World $world, CompoundTag $nbt) : ExperienceOrb{ $value = 1; @@ -109,11 +109,11 @@ final class EntityFactory{ } return new ExperienceOrb(Helper::parseLocation($nbt, $world), $value, $nbt); - }, ['XPOrb', 'minecraft:xp_orb'], LegacyIds::XP_ORB); + }, ['XPOrb', 'minecraft:xp_orb']); $this->register(FallingBlock::class, function(World $world, CompoundTag $nbt) : FallingBlock{ return new FallingBlock(Helper::parseLocation($nbt, $world), FallingBlock::parseBlockNBT(BlockFactory::getInstance(), $nbt), $nbt); - }, ['FallingSand', 'minecraft:falling_block'], LegacyIds::FALLING_BLOCK); + }, ['FallingSand', 'minecraft:falling_block']); $this->register(ItemEntity::class, function(World $world, CompoundTag $nbt) : ItemEntity{ $itemTag = $nbt->getCompoundTag(ItemEntity::TAG_ITEM); @@ -126,7 +126,7 @@ final class EntityFactory{ throw new SavedDataLoadingException("Item is invalid"); } return new ItemEntity(Helper::parseLocation($nbt, $world), $item, $nbt); - }, ['Item', 'minecraft:item'], LegacyIds::ITEM); + }, ['Item', 'minecraft:item']); $this->register(Painting::class, function(World $world, CompoundTag $nbt) : Painting{ $motive = PaintingMotive::getMotiveByName($nbt->getString(Painting::TAG_MOTIVE)); @@ -143,15 +143,15 @@ final class EntityFactory{ } return new Painting(Helper::parseLocation($nbt, $world), $blockIn, $facing, $motive, $nbt); - }, ['Painting', 'minecraft:painting'], LegacyIds::PAINTING); + }, ['Painting', 'minecraft:painting']); $this->register(PrimedTNT::class, function(World $world, CompoundTag $nbt) : PrimedTNT{ return new PrimedTNT(Helper::parseLocation($nbt, $world), $nbt); - }, ['PrimedTnt', 'PrimedTNT', 'minecraft:tnt'], LegacyIds::TNT); + }, ['PrimedTnt', 'PrimedTNT', 'minecraft:tnt']); $this->register(Snowball::class, function(World $world, CompoundTag $nbt) : Snowball{ return new Snowball(Helper::parseLocation($nbt, $world), null, $nbt); - }, ['Snowball', 'minecraft:snowball'], LegacyIds::SNOWBALL); + }, ['Snowball', 'minecraft:snowball']); $this->register(SplashPotion::class, function(World $world, CompoundTag $nbt) : SplashPotion{ $potionType = PotionTypeIdMap::getInstance()->fromId($nbt->getShort("PotionId", PotionTypeIds::WATER)); @@ -159,19 +159,19 @@ final class EntityFactory{ throw new SavedDataLoadingException("No such potion type"); } return new SplashPotion(Helper::parseLocation($nbt, $world), null, $potionType, $nbt); - }, ['ThrownPotion', 'minecraft:potion', 'thrownpotion'], LegacyIds::SPLASH_POTION); + }, ['ThrownPotion', 'minecraft:potion', 'thrownpotion']); $this->register(Squid::class, function(World $world, CompoundTag $nbt) : Squid{ return new Squid(Helper::parseLocation($nbt, $world), $nbt); - }, ['Squid', 'minecraft:squid'], LegacyIds::SQUID); + }, ['Squid', 'minecraft:squid']); $this->register(Villager::class, function(World $world, CompoundTag $nbt) : Villager{ return new Villager(Helper::parseLocation($nbt, $world), $nbt); - }, ['Villager', 'minecraft:villager'], LegacyIds::VILLAGER); + }, ['Villager', 'minecraft:villager']); $this->register(Zombie::class, function(World $world, CompoundTag $nbt) : Zombie{ return new Zombie(Helper::parseLocation($nbt, $world), $nbt); - }, ['Zombie', 'minecraft:zombie'], LegacyIds::ZOMBIE); + }, ['Zombie', 'minecraft:zombie']); $this->register(Human::class, function(World $world, CompoundTag $nbt) : Human{ return new Human(Helper::parseLocation($nbt, $world), Human::parseSkinNBT($nbt), $nbt); @@ -191,7 +191,7 @@ final class EntityFactory{ * * @throws \InvalidArgumentException */ - public function register(string $className, \Closure $creationFunc, array $saveNames, ?int $legacyMcpeSaveId = null) : void{ + public function register(string $className, \Closure $creationFunc, array $saveNames) : void{ if(count($saveNames) === 0){ throw new \InvalidArgumentException("At least one save name must be provided"); } @@ -205,9 +205,6 @@ final class EntityFactory{ foreach($saveNames as $name){ $this->creationFuncs[$name] = $creationFunc; } - if($legacyMcpeSaveId !== null){ - $this->creationFuncs[$legacyMcpeSaveId] = $creationFunc; - } $this->saveNames[$className] = reset($saveNames); } @@ -225,7 +222,8 @@ final class EntityFactory{ if($saveId instanceof StringTag){ $func = $this->creationFuncs[$saveId->getValue()] ?? null; }elseif($saveId instanceof IntTag){ //legacy MCPE format - $func = $this->creationFuncs[$saveId->getValue() & 0xff] ?? null; + $stringId = LegacyEntityIdToStringIdMap::getInstance()->legacyToString($saveId->getValue() & 0xff); + $func = $stringId !== null ? $this->creationFuncs[$stringId] ?? null : null; } if($func === null){ return null; From 83bfe790fa3dd66945f356ae0fe724b867edb74b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 22:18:24 +0000 Subject: [PATCH 458/692] Prepare 5.0.0-ALPHA6 changelog --- changelogs/5.0-alpha.md | 92 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index f408d106b..41f15a085 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -646,4 +646,94 @@ Released 13th November 2022. - Copper blocks now play the correct scrape sound when using an axe on them. ## Internals -- Moved command timings to `Timings`. \ No newline at end of file +- Moved command timings to `Timings`. + +# 5.0.0-ALPHA6 +Released 19th December 2022. + +**This release includes changes from the following releases, which may not be explicitly mentioned:** +- [4.10.2](https://github.com/pmmp/PocketMine-MP/releases/tag/4.10.2) +- [4.11.0](https://github.com/pmmp/PocketMine-MP/releases/tag/4.11.0) +- [4.12.0](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.0) +- [4.12.1](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.1) +- [4.12.2](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.2) + +## General +- Fixed the Bedrock client asking to upgrade worlds exported from PocketMine-MP to Bedrock (missing level.dat fields). +- Added support for 1.19.40 and newer Bedrock worlds. +- Commands are now enabled by default in worlds exported from PocketMine-MP to Bedrock. + +## Gameplay +### Blocks +- Added the following new blocks: + - Twisting Vines + - Weeping Vines +- Anvils are now damaged when they hit the ground after falling. +- Added missing sounds for anvils hitting the ground after falling. +- Fixed missing sounds when a projectile strikes an amethyst block. +- Fixed some blocks being incorrectly able to be placed on top of a candle cake. + +### Items +- Added the following new items: + - Music Disc (5) + - Music Disc (Otherside) + - Music Disc (Pigstep) +- Implemented Swift Sneak enchantment. +- Armour durability is now only reduced when the wearer receives a type of damage that the armour can protect against. + +## API +### General +- Union and mixed native parameter, return and property types are now used where appropriate. + +### `pocketmine\block` +- The following new API methods have been added: + - `public Furnace->getType() : utils\FurnaceType` +- The following interfaces have new requirements: + - `utils\Fallable` now requires `onHitGround()` to be implemented (although filled by default implementation in `FallableTrait`). + - `utils\Fallable` now requires `getLandSound()` to be implemented (although filled by default implementation in `FallableTrait`). +- The following new API constants have been added: + - `public BlockTypeTags::FIRE` - used by fire and soul fire + +### `pocketmine\crafting` +- The `$type` parameter of `ShapelessRecipe->__construct()` is now mandatory. + +### `pocketmine\entity` +- The following new API methods have been added: + - `public Living->getDisplayName() : string` +- The following API methods have changed signatures: + - `EntityFactory->register()` no longer accepts a `$legacyMcpeSaveId` parameter (now handled by internal conversions instead). + +### `pocketmine\event` +- The following classes have been renamed: + - `entity\ExplosionPrimeEvent` -> `entity\EntityPreExplodeEvent` +- The following new classes have been added: + - `world\WorldParticleEvent` - called when a particle is spawned in a world + - `world\WorldSoundEvent` - called when a sound is played in a world +- The following API methods have changed signatures: + - `entity\EntityPreExplodeEvent->__construct()` has the `$force` parameter renamed to `$radius` + - `entity\EntityPreExplodeEvent->getForce() : float` -> `entity\EntityPreExplodeEvent->getRadius() : float` + - `entity\EntityPreExplodeEvent->setForce(float $force) : void` -> `entity\EntityPreExplodeEvent->setRadius(float $radius) : void` + +### `pocketmine\item` +- The following new API methods have been added: + - `public Item->keepOnDeath() : bool` - returns whether this item will be retained when a player carrying it dies + - `public Item->onInteractEntity(Player $player, Entity $entity, Vector3 $clickPos) : bool` - called when a player interacts with an entity with this item in their hand + - `public Item->setKeepOnDeath(bool $keepOnDeath) : void` - sets whether this item will be retained when a player carrying it dies + - `public StringToItemParser->lookupAliases(Item $item) : list` - returns a list of all registered aliases for the given item + - `public StringToItemParser->lookupBlockAliases(Block $block) : list` - returns a list of all registered aliases for the given block + +### `pocketmine\resourcepacks` +- The following new API methods have been added: + - `public ResourcePackManager->setPackEncryptionKey(string $id, ?string $key) : void` - sets the encryption key to be used for the resource pack identified by the given UUID + - `public ResourcePackManager->setResourceStack(list $resourceStack) : void` - sets the resource stack to be used by the server + +### `pocketmine\world` +- The following API methods have changed signatures: + - `Explosion->__construct()` has the `$size` parameter renamed to `$radius` +- The following public properties have been renamed: + - `Explosion->size` -> `Explosion->radius` + +## Internals +- `EntityLegacyIds` has been removed. Legacy entity IDs found during world loading are now converted via `LegacyEntityIdToStringIdMap`. +- All usages of NBT keys now use class constants instead of hardcoded strings (except for an occasional overlooked one). +- All members of `BlockTypeTags` now have a `pocketmine:` prefix on the value. This does not affect constant usages. From da4315df058044622d9964e5014c863c3be20ee3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 22:21:13 +0000 Subject: [PATCH 459/692] Release 5.0.0-ALPHA6 --- changelogs/5.0-alpha.md | 2 +- src/VersionInfo.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 41f15a085..de11e5c7a 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -651,7 +651,7 @@ Released 13th November 2022. # 5.0.0-ALPHA6 Released 19th December 2022. -**This release includes changes from the following releases, which may not be explicitly mentioned:** +**This release includes changes from the following releases, which may not be mentioned:** - [4.10.2](https://github.com/pmmp/PocketMine-MP/releases/tag/4.10.2) - [4.11.0](https://github.com/pmmp/PocketMine-MP/releases/tag/4.11.0) - [4.12.0](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.0) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 6955b826b..dca68d541 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA6"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 044d35956eaf29145d595c973da1ee292d040979 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2022 22:21:14 +0000 Subject: [PATCH 460/692] 5.0.0-ALPHA7 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index dca68d541..cfca3b4b5 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA6"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA7"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From b3473960b49f397f64ce6cbcc994bf413b2ab4ac Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Thu, 22 Dec 2022 18:22:04 +0300 Subject: [PATCH 461/692] Implemented chain (#5454) --- src/block/BlockTypeIds.php | 3 +- src/block/Chain.php | 48 +++++++++++++++++++ src/block/VanillaBlocks.php | 3 ++ .../convert/BlockObjectToStateSerializer.php | 5 ++ .../BlockStateToObjectDeserializer.php | 4 ++ .../ItemSerializerDeserializerRegistrar.php | 1 + src/item/StringToItemParser.php | 1 + .../block_factory_consistency_check.json | 2 +- 8 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 src/block/Chain.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 3fdb44728..3ab25dfbc 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -706,8 +706,9 @@ final class BlockTypeIds{ public const FROGLIGHT = 10679; public const TWISTING_VINES = 10680; public const WEEPING_VINES = 10681; + public const CHAIN = 10682; - public const FIRST_UNUSED_BLOCK_ID = 10682; + public const FIRST_UNUSED_BLOCK_ID = 10683; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/Chain.php b/src/block/Chain.php new file mode 100644 index 000000000..fa8ffd1e8 --- /dev/null +++ b/src/block/Chain.php @@ -0,0 +1,48 @@ +axis === Axis::Y && Facing::axis($facing) === Axis::Y ? SupportType::CENTER() : SupportType::NONE(); + } + + protected function recalculateCollisionBoxes() : array{ + $bb = AxisAlignedBB::one(); + foreach([Axis::Y, Axis::Z, Axis::X] as $axis){ + if($axis !== $this->axis){ + $bb->squash($axis, 13 / 32); + } + } + return [$bb]; + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 277cac26c..0e3bd41f0 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -153,6 +153,7 @@ use function mb_strtolower; * @method static CartographyTable CARTOGRAPHY_TABLE() * @method static CarvedPumpkin CARVED_PUMPKIN() * @method static Cauldron CAULDRON() + * @method static Chain CHAIN() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() * @method static Opaque CHISELED_DEEPSLATE() @@ -1473,6 +1474,8 @@ final class VanillaBlocks{ self::register("twisting_vines", new NetherVines(new BID(Ids::TWISTING_VINES), "Twisting Vines", new Info(BreakInfo::instant()), Facing::UP)); self::register("weeping_vines", new NetherVines(new BID(Ids::WEEPING_VINES), "Weeping Vines", new Info(BreakInfo::instant()), Facing::DOWN)); + + self::register("chain", new Chain(new BID(Ids::CHAIN), "Chain", new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD())))); } private static function registerBlocksR17() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 07e7ac4fb..493a4e29c 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -45,6 +45,7 @@ use pocketmine\block\Candle; use pocketmine\block\Carpet; use pocketmine\block\Carrot; use pocketmine\block\CarvedPumpkin; +use pocketmine\block\Chain; use pocketmine\block\ChemistryTable; use pocketmine\block\Chest; use pocketmine\block\ChorusFlower; @@ -712,6 +713,10 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CARVED_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); }); + $this->map(Blocks::CHAIN(), function(Chain $block) : Writer{ + return Writer::create(Ids::CHAIN) + ->writePillarAxis($block->getAxis()); + }); $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ return Writer::create(Ids::CHEST) ->writeHorizontalFacing($block->getFacing()); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index b05effd4a..4621c6560 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -549,6 +549,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::CARVED_PUMPKIN() ->setFacing($in->readLegacyHorizontalFacing()); }); + $this->map(Ids::CHAIN, function(Reader $in) : Block{ + return Blocks::CHAIN() + ->setAxis($in->readPillarAxis()); + }); $this->map(Ids::CHEMISTRY_TABLE, function(Reader $in) : Block{ return (match($type = $in->readString(StateNames::CHEMISTRY_TABLE_TYPE)){ StringValues::CHEMISTRY_TABLE_TYPE_COMPOUND_CREATOR => Blocks::COMPOUND_CREATOR(), diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index 1c51154fe..ee78dba03 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -134,6 +134,7 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Block(Ids::BREWING_STAND, Blocks::BREWING_STAND()); $this->map1to1Block(Ids::CAKE, Blocks::CAKE()); $this->map1to1Block(Ids::CAULDRON, Blocks::CAULDRON()); + $this->map1to1Block(Ids::CHAIN, Blocks::CHAIN()); $this->map1to1Block(Ids::COMPARATOR, Blocks::REDSTONE_COMPARATOR()); $this->map1to1Block(Ids::CRIMSON_DOOR, Blocks::CRIMSON_DOOR()); $this->map1to1Block(Ids::DARK_OAK_DOOR, Blocks::DARK_OAK_DOOR()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index de2aafa57..836371147 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -205,6 +205,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("carrots", fn() => Blocks::CARROTS()); $result->registerBlock("carved_pumpkin", fn() => Blocks::CARVED_PUMPKIN()); $result->registerBlock("cauldron", fn() => Blocks::CAULDRON()); + $result->registerBlock("chain", fn() => Blocks::CHAIN()); $result->registerBlock("chemical_heat", fn() => Blocks::CHEMICAL_HEAT()); $result->registerBlock("chemistry_table", fn() => Blocks::COMPOUND_CREATOR()); $result->registerBlock("chest", fn() => Blocks::CHEST()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 0ff09efa1..490fc655a 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From b4c7d33388d8a22e0583dea03b4f4366849a11e8 Mon Sep 17 00:00:00 2001 From: zSALLAZAR <59490940+zSALLAZAR@users.noreply.github.com> Date: Sat, 24 Dec 2022 18:38:12 +0100 Subject: [PATCH 462/692] Implement Medicine (from Education Edition) (#5450) --- build/generate-runtime-enum-serializers.php | 2 + src/data/bedrock/MedicineTypeIdMap.php | 66 +++++++++++++++++ src/data/bedrock/MedicineTypeIds.php | 31 ++++++++ .../ItemSerializerDeserializerRegistrar.php | 10 +++ .../runtime/RuntimeEnumDeserializerTrait.php | 10 +++ .../runtime/RuntimeEnumSerializerTrait.php | 10 +++ src/item/ItemTypeIds.php | 3 +- src/item/Medicine.php | 73 +++++++++++++++++++ src/item/MedicineType.php | 66 +++++++++++++++++ src/item/StringToItemParser.php | 4 + src/item/VanillaItems.php | 2 + 11 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 src/data/bedrock/MedicineTypeIdMap.php create mode 100644 src/data/bedrock/MedicineTypeIds.php create mode 100644 src/item/Medicine.php create mode 100644 src/item/MedicineType.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index 5907628f0..f71b87cdc 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -33,6 +33,7 @@ use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\MushroomBlockType; use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; +use pocketmine\item\MedicineType; use pocketmine\item\PotionType; use pocketmine\item\SuspiciousStewType; use function array_key_first; @@ -166,6 +167,7 @@ $enumsUsed = [ DyeColor::getAll(), FroglightType::getAll(), LeverFacing::getAll(), + MedicineType::getAll(), MushroomBlockType::getAll(), SkullType::getAll(), SlabType::getAll(), diff --git a/src/data/bedrock/MedicineTypeIdMap.php b/src/data/bedrock/MedicineTypeIdMap.php new file mode 100644 index 000000000..a85dbb7a8 --- /dev/null +++ b/src/data/bedrock/MedicineTypeIdMap.php @@ -0,0 +1,66 @@ + + */ + private array $idToEnum = []; + + /** + * @var int[] + * @phpstan-var array + */ + private array $enumToId = []; + + private function __construct(){ + $this->register(MedicineTypeIds::ANTIDOTE, MedicineType::ANTIDOTE()); + $this->register(MedicineTypeIds::ELIXIR, MedicineType::ELIXIR()); + $this->register(MedicineTypeIds::EYE_DROPS, MedicineType::EYE_DROPS()); + $this->register(MedicineTypeIds::TONIC, MedicineType::TONIC()); + } + + private function register(int $id, MedicineType $type) : void{ + $this->idToEnum[$id] = $type; + $this->enumToId[$type->id()] = $id; + } + + public function fromId(int $id) : ?MedicineType{ + return $this->idToEnum[$id] ?? null; + } + + public function toId(MedicineType $type) : int{ + if(!isset($this->enumToId[$type->id()])){ + throw new \InvalidArgumentException("Type does not have a mapped ID"); + } + return $this->enumToId[$type->id()]; + } +} diff --git a/src/data/bedrock/MedicineTypeIds.php b/src/data/bedrock/MedicineTypeIds.php new file mode 100644 index 000000000..8c0110ec3 --- /dev/null +++ b/src/data/bedrock/MedicineTypeIds.php @@ -0,0 +1,31 @@ + DyeColorIdMap::getInstance()->toInvertedId($item->getColor()) ); + $this->map1to1ItemWithMeta( + Ids::MEDICINE, + Items::MEDICINE(), + function(Medicine $item, int $meta) : void{ + $item->setType(MedicineTypeIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown medicine type ID $meta")); + }, + fn(Medicine $item) => MedicineTypeIdMap::getInstance()->toId($item->getType()) + ); $this->map1to1ItemWithMeta( Ids::POTION, Items::POTION(), diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index bb83e805e..278cfc152 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -116,6 +116,16 @@ trait RuntimeEnumDeserializerTrait{ }; } + public function medicineType(\pocketmine\item\MedicineType &$value) : void{ + $value = match($this->readInt(2)){ + 0 => \pocketmine\item\MedicineType::ANTIDOTE(), + 1 => \pocketmine\item\MedicineType::ELIXIR(), + 2 => \pocketmine\item\MedicineType::EYE_DROPS(), + 3 => \pocketmine\item\MedicineType::TONIC(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for MedicineType") + }; + } + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ $value = match($this->readInt(4)){ 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index 91deba5e3..09a706e95 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -116,6 +116,16 @@ trait RuntimeEnumSerializerTrait{ }); } + public function medicineType(\pocketmine\item\MedicineType $value) : void{ + $this->int(2, match($value){ + \pocketmine\item\MedicineType::ANTIDOTE() => 0, + \pocketmine\item\MedicineType::ELIXIR() => 1, + \pocketmine\item\MedicineType::EYE_DROPS() => 2, + \pocketmine\item\MedicineType::TONIC() => 3, + default => throw new \pocketmine\utils\AssumptionFailedError("All MedicineType cases should be covered") + }); + } + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType $value) : void{ $this->int(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index cc4be26d4..b7eea8055 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -299,8 +299,9 @@ final class ItemTypeIds{ public const FIRE_CHARGE = 20260; public const SUSPICIOUS_STEW = 20261; public const TURTLE_HELMET = 20262; + public const MEDICINE = 20263; - public const FIRST_UNUSED_ITEM_ID = 20263; + public const FIRST_UNUSED_ITEM_ID = 20264; private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; diff --git a/src/item/Medicine.php b/src/item/Medicine.php new file mode 100644 index 000000000..0915a19c1 --- /dev/null +++ b/src/item/Medicine.php @@ -0,0 +1,73 @@ +medicineType = MedicineType::EYE_DROPS(); + parent::__construct($identifier, $name); + } + + protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + $w->medicineType($this->medicineType); + } + + public function getType() : MedicineType{ return $this->medicineType; } + + /** + * @return $this + */ + public function setType(MedicineType $type) : self{ + $this->medicineType = $type; + return $this; + } + + public function getMaxStackSize() : int{ + return 1; + } + + public function onConsume(Living $consumer) : void{ + $consumer->getEffects()->remove($this->getType()->getCuredEffect()); + } + + public function getAdditionalEffects() : array{ + return []; + } + + public function getResidue() : Item{ + return VanillaItems::GLASS_BOTTLE(); + } + + public function canStartUsingItem(Player $player) : bool{ + return $player->getEffects()->has($this->getType()->getCuredEffect()); + } +} diff --git a/src/item/MedicineType.php b/src/item/MedicineType.php new file mode 100644 index 000000000..f7ce2b816 --- /dev/null +++ b/src/item/MedicineType.php @@ -0,0 +1,66 @@ +Enum___construct($enumName); + } + + public function getDisplayName() : string{ return $this->displayName; } + + public function getCuredEffect() : Effect{ return $this->curedEffect; } +} diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 836371147..63baf3eff 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1133,6 +1133,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("acacia_boat", fn() => Items::ACACIA_BOAT()); $result->register("amethyst_shard", fn() => Items::AMETHYST_SHARD()); + $result->register("antidote", fn() => Items::MEDICINE()->setType(MedicineType::ANTIDOTE())); $result->register("apple", fn() => Items::APPLE()); $result->register("apple_enchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); $result->register("appleenchanted", fn() => Items::ENCHANTED_GOLDEN_APPLE()); @@ -1248,11 +1249,13 @@ final class StringToItemParser extends StringToTParser{ $result->register("dye", fn() => Items::INK_SAC()); $result->register("echo_shard", fn() => Items::ECHO_SHARD()); $result->register("egg", fn() => Items::EGG()); + $result->register("elixir", fn() => Items::MEDICINE()->setType(MedicineType::ELIXIR())); $result->register("emerald", fn() => Items::EMERALD()); $result->register("enchanted_golden_apple", fn() => Items::ENCHANTED_GOLDEN_APPLE()); $result->register("enchanting_bottle", fn() => Items::EXPERIENCE_BOTTLE()); $result->register("ender_pearl", fn() => Items::ENDER_PEARL()); $result->register("experience_bottle", fn() => Items::EXPERIENCE_BOTTLE()); + $result->register("eye_drops", fn() => Items::MEDICINE()->setType(MedicineType::EYE_DROPS())); $result->register("feather", fn() => Items::FEATHER()); $result->register("fermented_spider_eye", fn() => Items::FERMENTED_SPIDER_EYE()); $result->register("fire_charge", fn() => Items::FIRE_CHARGE()); @@ -1492,6 +1495,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("swiftness_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::SWIFTNESS())); $result->register("thick_potion", fn() => Items::POTION()->setType(PotionType::THICK())); $result->register("thick_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::THICK())); + $result->register("tonic", fn() => Items::MEDICINE()->setType(MedicineType::TONIC())); $result->register("totem", fn() => Items::TOTEM()); $result->register("turtle_helmet", fn() => Items::TURTLE_HELMET()); $result->register("turtle_master_potion", fn() => Items::POTION()->setType(PotionType::TURTLE_MASTER())); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index d39869f92..38d7eff9f 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -205,6 +205,7 @@ use pocketmine\world\World; * @method static Armor LEATHER_TUNIC() * @method static Item MAGMA_CREAM() * @method static ItemBlockWallOrFloor MANGROVE_SIGN() + * @method static Medicine MEDICINE() * @method static Melon MELON() * @method static MelonSeeds MELON_SEEDS() * @method static MilkBucket MILK_BUCKET() @@ -456,6 +457,7 @@ final class VanillaItems{ self::register("leather", new Item(new IID(Ids::LEATHER), "Leather")); self::register("magma_cream", new Item(new IID(Ids::MAGMA_CREAM), "Magma Cream")); self::register("mangrove_sign", new ItemBlockWallOrFloor(new IID(Ids::MANGROVE_SIGN), Blocks::MANGROVE_SIGN(), Blocks::MANGROVE_WALL_SIGN())); + self::register("medicine", new Medicine(new IID(Ids::MEDICINE), "Medicine")); self::register("melon", new Melon(new IID(Ids::MELON), "Melon")); self::register("melon_seeds", new MelonSeeds(new IID(Ids::MELON_SEEDS), "Melon Seeds")); self::register("milk_bucket", new MilkBucket(new IID(Ids::MILK_BUCKET), "Milk Bucket")); From 133884da7274ce5585466bb6d82748255a47a8d6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 24 Dec 2022 17:41:59 +0000 Subject: [PATCH 463/692] Remove deprecated permissions --- src/permission/DefaultPermissionNames.php | 7 --- src/permission/DefaultPermissions.php | 53 ++++++----------------- 2 files changed, 14 insertions(+), 46 deletions(-) diff --git a/src/permission/DefaultPermissionNames.php b/src/permission/DefaultPermissionNames.php index 6dc86c9ae..fab532e28 100644 --- a/src/permission/DefaultPermissionNames.php +++ b/src/permission/DefaultPermissionNames.php @@ -34,17 +34,13 @@ final class DefaultPermissionNames{ public const COMMAND_DEFAULTGAMEMODE = "pocketmine.command.defaultgamemode"; public const COMMAND_DIFFICULTY = "pocketmine.command.difficulty"; public const COMMAND_DUMPMEMORY = "pocketmine.command.dumpmemory"; - public const COMMAND_EFFECT = "pocketmine.command.effect"; public const COMMAND_EFFECT_OTHER = "pocketmine.command.effect.other"; public const COMMAND_EFFECT_SELF = "pocketmine.command.effect.self"; - public const COMMAND_ENCHANT = "pocketmine.command.enchant"; public const COMMAND_ENCHANT_OTHER = "pocketmine.command.enchant.other"; public const COMMAND_ENCHANT_SELF = "pocketmine.command.enchant.self"; - public const COMMAND_GAMEMODE = "pocketmine.command.gamemode"; public const COMMAND_GAMEMODE_OTHER = "pocketmine.command.gamemode.other"; public const COMMAND_GAMEMODE_SELF = "pocketmine.command.gamemode.self"; public const COMMAND_GC = "pocketmine.command.gc"; - public const COMMAND_GIVE = "pocketmine.command.give"; public const COMMAND_GIVE_OTHER = "pocketmine.command.give.other"; public const COMMAND_GIVE_SELF = "pocketmine.command.give.self"; public const COMMAND_HELP = "pocketmine.command.help"; @@ -63,12 +59,10 @@ final class DefaultPermissionNames{ public const COMMAND_SAY = "pocketmine.command.say"; public const COMMAND_SEED = "pocketmine.command.seed"; public const COMMAND_SETWORLDSPAWN = "pocketmine.command.setworldspawn"; - public const COMMAND_SPAWNPOINT = "pocketmine.command.spawnpoint"; public const COMMAND_SPAWNPOINT_OTHER = "pocketmine.command.spawnpoint.other"; public const COMMAND_SPAWNPOINT_SELF = "pocketmine.command.spawnpoint.self"; public const COMMAND_STATUS = "pocketmine.command.status"; public const COMMAND_STOP = "pocketmine.command.stop"; - public const COMMAND_TELEPORT = "pocketmine.command.teleport"; public const COMMAND_TELEPORT_OTHER = "pocketmine.command.teleport.other"; public const COMMAND_TELEPORT_SELF = "pocketmine.command.teleport.self"; public const COMMAND_TELL = "pocketmine.command.tell"; @@ -78,7 +72,6 @@ final class DefaultPermissionNames{ public const COMMAND_TIME_START = "pocketmine.command.time.start"; public const COMMAND_TIME_STOP = "pocketmine.command.time.stop"; public const COMMAND_TIMINGS = "pocketmine.command.timings"; - public const COMMAND_TITLE = "pocketmine.command.title"; public const COMMAND_TITLE_OTHER = "pocketmine.command.title.other"; public const COMMAND_TITLE_SELF = "pocketmine.command.title.self"; public const COMMAND_TRANSFERSERVER = "pocketmine.command.transferserver"; diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index 6f9c79b80..bff4bf1c8 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -44,12 +44,6 @@ abstract class DefaultPermissions{ return PermissionManager::getInstance()->getPermission($candidate->getName()); } - private static function registerDeprecatedPermission(string $name) : Permission{ - $permission = new Permission($name, "Deprecated, kept for backwards compatibility only"); - PermissionManager::getInstance()->addPermission($permission); - return $permission; - } - public static function registerCorePermissions() : void{ $consoleRoot = self::registerPermission(new Permission(self::ROOT_CONSOLE, "Grants all console permissions")); $operatorRoot = self::registerPermission(new Permission(self::ROOT_OPERATOR, "Grants all operator permissions"), [$consoleRoot]); @@ -65,25 +59,15 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_DEFAULTGAMEMODE, "Allows the user to change the default gamemode"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_DIFFICULTY, "Allows the user to change the game difficulty"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_DUMPMEMORY, "Allows the user to dump memory contents"), [$consoleRoot]); - - $effectRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_EFFECT); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_EFFECT_OTHER, "Allows the user to modify effects of other players"), [$operatorRoot, $effectRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_EFFECT_SELF, "Allows the user to modify their own effects"), [$operatorRoot, $effectRoot]); - - $enchantRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_ENCHANT); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_ENCHANT_OTHER, "Allows the user to enchant the held items of other players"), [$operatorRoot, $enchantRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_ENCHANT_SELF, "Allows the user to enchant their own held item"), [$operatorRoot, $enchantRoot]); - - $gameModeRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_GAMEMODE); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GAMEMODE_OTHER, "Allows the user to change the game mode of other players"), [$operatorRoot, $gameModeRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GAMEMODE_SELF, "Allows the user to change their own game mode"), [$operatorRoot, $gameModeRoot]); - + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_EFFECT_OTHER, "Allows the user to modify effects of other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_EFFECT_SELF, "Allows the user to modify their own effects"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_ENCHANT_OTHER, "Allows the user to enchant the held items of other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_ENCHANT_SELF, "Allows the user to enchant their own held item"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GAMEMODE_OTHER, "Allows the user to change the game mode of other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GAMEMODE_SELF, "Allows the user to change their own game mode"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GC, "Allows the user to fire garbage collection tasks"), [$operatorRoot]); - - $giveRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_GIVE); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GIVE_OTHER, "Allows the user to give items to other players"), [$operatorRoot, $giveRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GIVE_SELF, "Allows the user to give items to themselves"), [$operatorRoot, $giveRoot]); - + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GIVE_OTHER, "Allows the user to give items to other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_GIVE_SELF, "Allows the user to give items to themselves"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_HELP, "Allows the user to view the help menu"), [$everyoneRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_KICK, "Allows the user to kick players"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_KILL_OTHER, "Allows the user to kill other players"), [$operatorRoot]); @@ -100,18 +84,12 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SAY, "Allows the user to talk as the console"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SEED, "Allows the user to view the seed of the world"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SETWORLDSPAWN, "Allows the user to change the world spawn"), [$operatorRoot]); - - $spawnpointRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_SPAWNPOINT); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SPAWNPOINT_OTHER, "Allows the user to change the respawn point of other players"), [$operatorRoot, $spawnpointRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SPAWNPOINT_SELF, "Allows the user to change their own respawn point"), [$operatorRoot, $spawnpointRoot]); - + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SPAWNPOINT_OTHER, "Allows the user to change the respawn point of other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_SPAWNPOINT_SELF, "Allows the user to change their own respawn point"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_STATUS, "Allows the user to view the server performance"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_STOP, "Allows the user to stop the server"), [$operatorRoot]); - - $teleportRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_TELEPORT); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TELEPORT_OTHER, "Allows the user to teleport other players"), [$operatorRoot, $teleportRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TELEPORT_SELF, "Allows the user to teleport themselves"), [$operatorRoot, $teleportRoot]); - + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TELEPORT_OTHER, "Allows the user to teleport other players"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TELEPORT_SELF, "Allows the user to teleport themselves"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TELL, "Allows the user to privately message another player"), [$everyoneRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TIME_ADD, "Allows the user to fast-forward time"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TIME_QUERY, "Allows the user query the time"), [$operatorRoot]); @@ -119,11 +97,8 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TIME_START, "Allows the user to restart the time"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TIME_STOP, "Allows the user to stop the time"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TIMINGS, "Allows the user to record timings to analyse server performance"), [$operatorRoot]); - - $titleRoot = self::registerDeprecatedPermission(DefaultPermissionNames::COMMAND_TITLE); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TITLE_OTHER, "Allows the user to send a title to the specified player"), [$operatorRoot, $titleRoot]); - self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TITLE_SELF, "Allows the user to send a title to themselves"), [$operatorRoot, $titleRoot]); - + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TITLE_OTHER, "Allows the user to send a title to the specified player"), [$operatorRoot]); + self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TITLE_SELF, "Allows the user to send a title to themselves"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_TRANSFERSERVER, "Allows the user to transfer self to another server"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_UNBAN_IP, "Allows the user to unban IP addresses"), [$operatorRoot]); self::registerPermission(new Permission(DefaultPermissionNames::COMMAND_UNBAN_PLAYER, "Allows the user to unban players"), [$operatorRoot]); From 8fd4918429651f01ba3b5440646496930bd40284 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 25 Dec 2022 18:26:53 +0000 Subject: [PATCH 464/692] Use Filesystem::fileGetContents() in more places --- src/data/bedrock/ItemTagToIdMap.php | 5 ++--- .../block/upgrade/BlockStateUpgradeSchemaUtils.php | 9 ++------- src/data/bedrock/item/BlockItemIdMap.php | 5 ++--- .../item/upgrade/ItemIdMetaUpgradeSchemaUtils.php | 9 ++------- src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php | 4 ++-- src/world/format/io/GlobalBlockStateHandlers.php | 7 +++---- tools/generate-block-palette-spec.php | 5 ++--- tools/generate-blockstate-upgrade-schema.php | 9 ++------- tools/generate-item-upgrade-schema.php | 6 +++--- 9 files changed, 20 insertions(+), 39 deletions(-) diff --git a/src/data/bedrock/ItemTagToIdMap.php b/src/data/bedrock/ItemTagToIdMap.php index 0782ff424..9190fa28b 100644 --- a/src/data/bedrock/ItemTagToIdMap.php +++ b/src/data/bedrock/ItemTagToIdMap.php @@ -23,13 +23,12 @@ declare(strict_types=1); namespace pocketmine\data\bedrock; -use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; use function array_keys; -use function file_get_contents; use function gettype; use function is_array; use function is_string; @@ -46,7 +45,7 @@ final class ItemTagToIdMap{ use SingletonTrait; private static function make() : self{ - $map = json_decode(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join(BEDROCK_DATA_PATH, 'item_tags.json'))), true, flags: JSON_THROW_ON_ERROR); + $map = json_decode(Filesystem::fileGetContents(Path::join(BEDROCK_DATA_PATH, 'item_tags.json')), true, flags: JSON_THROW_ON_ERROR); if(!is_array($map)){ throw new AssumptionFailedError("Invalid item tag map, expected array"); } diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 562635402..27aa5b510 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -27,16 +27,15 @@ use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModel; use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelBlockRemap; use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelTag; use pocketmine\data\bedrock\block\upgrade\model\BlockStateUpgradeSchemaModelValueRemap; -use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; +use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; use function array_map; use function count; -use function file_get_contents; use function get_debug_type; use function gettype; use function implode; @@ -275,11 +274,7 @@ final class BlockStateUpgradeSchemaUtils{ $fullPath = Path::join($path, $filename); - try{ - $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); - }catch(\ErrorException $e){ - throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); - } + $raw = Filesystem::fileGetContents($fullPath); try{ $schema = self::loadSchemaFromString($raw, $priority); diff --git a/src/data/bedrock/item/BlockItemIdMap.php b/src/data/bedrock/item/BlockItemIdMap.php index d012fe3cb..58a155a5a 100644 --- a/src/data/bedrock/item/BlockItemIdMap.php +++ b/src/data/bedrock/item/BlockItemIdMap.php @@ -24,11 +24,10 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; -use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; use function array_flip; -use function file_get_contents; use function is_array; use function json_decode; use const JSON_THROW_ON_ERROR; @@ -42,7 +41,7 @@ final class BlockItemIdMap{ private static function make() : self{ $map = json_decode( - Utils::assumeNotFalse(file_get_contents(Path::join(BEDROCK_DATA_PATH, 'block_id_to_item_id_map.json')), "Missing required resource file"), + Filesystem::fileGetContents(Path::join(BEDROCK_DATA_PATH, 'block_id_to_item_id_map.json')), associative: true, flags: JSON_THROW_ON_ERROR ); diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php index c7d5d1577..6aade2eaa 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php @@ -24,9 +24,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item\upgrade; use pocketmine\data\bedrock\item\upgrade\model\ItemIdMetaUpgradeSchemaModel; -use pocketmine\errorhandler\ErrorToExceptionHandler; +use pocketmine\utils\Filesystem; use Symfony\Component\Filesystem\Path; -use function file_get_contents; use function gettype; use function is_object; use function json_decode; @@ -60,11 +59,7 @@ final class ItemIdMetaUpgradeSchemaUtils{ $fullPath = Path::join($path, $filename); - try{ - $raw = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($fullPath)); - }catch(\ErrorException $e){ - throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); - } + $raw = Filesystem::fileGetContents($fullPath); try{ $schema = self::loadSchemaFromString($raw, $priority); diff --git a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php index 9e5c86a3d..2aac8de64 100644 --- a/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php +++ b/src/data/bedrock/item/upgrade/R12ItemIdToBlockIdMap.php @@ -24,10 +24,10 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item\upgrade; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; -use function file_get_contents; use function is_array; use function is_string; use function json_decode; @@ -47,7 +47,7 @@ final class R12ItemIdToBlockIdMap{ private static function make() : self{ $map = json_decode( - Utils::assumeNotFalse(file_get_contents(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, '1.12.0_item_id_to_block_id_map.json')), "Missing required resource file"), + Filesystem::fileGetContents(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, '1.12.0_item_id_to_block_id_map.json')), associative: true, flags: JSON_THROW_ON_ERROR ); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 36202fe9f..d22eb368b 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -32,9 +32,8 @@ use pocketmine\data\bedrock\block\upgrade\BlockIdMetaUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgrader; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; -use pocketmine\errorhandler\ErrorToExceptionHandler; +use pocketmine\utils\Filesystem; use Symfony\Component\Filesystem\Path; -use function file_get_contents; use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; /** @@ -69,10 +68,10 @@ final class GlobalBlockStateHandlers{ )); self::$blockDataUpgrader = new BlockDataUpgrader( BlockIdMetaUpgrader::loadFromString( - ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join( + Filesystem::fileGetContents(Path::join( BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, '1.12.0_to_1.18.10_blockstate_map.bin' - ))), + )), LegacyBlockIdToStringIdMap::getInstance(), $blockStateUpgrader ), diff --git a/tools/generate-block-palette-spec.php b/tools/generate-block-palette-spec.php index bb8505b77..6217d5437 100644 --- a/tools/generate-block-palette-spec.php +++ b/tools/generate-block-palette-spec.php @@ -23,18 +23,17 @@ declare(strict_types=1); namespace pocketmine\tools\generate_block_palette_spec; -use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\convert\BlockStateDictionary; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use function array_values; use function count; use function dirname; -use function file_get_contents; use function file_put_contents; use function fwrite; use function get_class; @@ -54,7 +53,7 @@ if(count($argv) !== 3){ [, $inputFile, $outputFile] = $argv; try{ - $states = BlockStateDictionary::loadPaletteFromString(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($inputFile))); + $states = BlockStateDictionary::loadPaletteFromString(Filesystem::fileGetContents($inputFile)); }catch(NbtException){ fwrite(STDERR, "Invalid block palette file $argv[1]\n"); exit(1); diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index abf0be797..f05243264 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -28,15 +28,14 @@ use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchema; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaBlockRemap; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaValueRemap; -use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\nbt\tag\Tag; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use function array_key_first; use function count; use function dirname; -use function file_get_contents; use function file_put_contents; use function fwrite; use function json_encode; @@ -59,11 +58,7 @@ class BlockStateMapping{ * @phpstan-return array> */ function loadUpgradeTable(string $file, bool $reverse) : array{ - try{ - $contents = ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($file)); - }catch(\ErrorException $e){ - throw new \RuntimeException("Failed loading mapping table file $file: " . $e->getMessage(), 0, $e); - } + $contents = Filesystem::fileGetContents($file); $data = (new NetworkNbtSerializer())->readMultiple($contents); $result = []; diff --git a/tools/generate-item-upgrade-schema.php b/tools/generate-item-upgrade-schema.php index 0f59bebe0..c6096bafb 100644 --- a/tools/generate-item-upgrade-schema.php +++ b/tools/generate-item-upgrade-schema.php @@ -30,10 +30,10 @@ declare(strict_types=1); namespace pocketmine\tools\generate_item_upgrade_schema; use pocketmine\errorhandler\ErrorToExceptionHandler; +use pocketmine\utils\Filesystem; use Symfony\Component\Filesystem\Path; use function count; use function dirname; -use function file_get_contents; use function file_put_contents; use function is_array; use function json_decode; @@ -55,7 +55,7 @@ if(count($argv) !== 4){ [, $mappingTableFile, $upgradeSchemasDir, $outputFile] = $argv; -$target = json_decode(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents($mappingTableFile)), true, JSON_THROW_ON_ERROR); +$target = json_decode(Filesystem::fileGetContents($mappingTableFile), true, JSON_THROW_ON_ERROR); if(!is_array($target)){ \GlobalLogger::get()->error("Invalid mapping table file"); exit(1); @@ -69,7 +69,7 @@ foreach($files as $file){ continue; } \GlobalLogger::get()->info("Processing schema file $file"); - $data = json_decode(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => file_get_contents(Path::join($upgradeSchemasDir, $file))), associative: true, flags: JSON_THROW_ON_ERROR); + $data = json_decode(Filesystem::fileGetContents(Path::join($upgradeSchemasDir, $file)), associative: true, flags: JSON_THROW_ON_ERROR); if(!is_array($data)){ \GlobalLogger::get()->error("Invalid schema file $file"); exit(1); From c1ba735c9e9b68416b7e50d56ab37e16691d7234 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 18:05:34 +0000 Subject: [PATCH 465/692] Move common protocol disconnection logic to NetworkSession --- src/network/mcpe/NetworkSession.php | 9 ++++++++- src/network/mcpe/handler/LoginPacketHandler.php | 10 +--------- .../mcpe/handler/SessionStartPacketHandler.php | 12 +----------- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 29a3bff41..6ac31cd9f 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -74,6 +74,7 @@ use pocketmine\network\mcpe\protocol\PacketDecodeException; use pocketmine\network\mcpe\protocol\PacketPool; use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\PlayStatusPacket; +use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\RemoveActorPacket; use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\serializer\PacketSerializer; @@ -201,7 +202,6 @@ class NetworkSession{ $this->connectTime = time(); $this->setHandler(new SessionStartPacketHandler( - $this->server, $this, fn() => $this->onSessionStartSuccess() )); @@ -581,6 +581,13 @@ class NetworkSession{ }, $reason); } + public function disconnectIncompatibleProtocol(int $protocolVersion) : void{ + $this->tryDisconnect( + fn() => $this->sendDataPacket(PlayStatusPacket::create($protocolVersion < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true), + $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $protocolVersion)) + ); + } + /** * Instructs the remote client to connect to a different server. */ diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index 11e5b4af4..07ca46b39 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -25,7 +25,6 @@ namespace pocketmine\network\mcpe\handler; use pocketmine\entity\InvalidSkinException; use pocketmine\event\player\PlayerPreLoginEvent; -use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; use pocketmine\network\mcpe\auth\ProcessLoginTask; use pocketmine\network\mcpe\convert\SkinAdapterSingleton; @@ -33,7 +32,6 @@ use pocketmine\network\mcpe\JwtException; use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\LoginPacket; -use pocketmine\network\mcpe\protocol\PlayStatusPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\types\login\AuthenticationData; use pocketmine\network\mcpe\protocol\types\login\ClientData; @@ -64,13 +62,7 @@ class LoginPacketHandler extends PacketHandler{ public function handleLogin(LoginPacket $packet) : bool{ if(!$this->isCompatibleProtocol($packet->protocol)){ - $this->session->sendDataPacket(PlayStatusPacket::create($packet->protocol < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true); - - //This pocketmine disconnect message will only be seen by the console (PlayStatusPacket causes the messages to be shown for the client) - $this->session->disconnect( - $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $packet->protocol)), - false - ); + $this->session->disconnectIncompatibleProtocol($packet->protocol); return true; } diff --git a/src/network/mcpe/handler/SessionStartPacketHandler.php b/src/network/mcpe/handler/SessionStartPacketHandler.php index 687422de2..dd7ae47a8 100644 --- a/src/network/mcpe/handler/SessionStartPacketHandler.php +++ b/src/network/mcpe/handler/SessionStartPacketHandler.php @@ -23,14 +23,11 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\handler; -use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\NetworkSettingsPacket; -use pocketmine\network\mcpe\protocol\PlayStatusPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\RequestNetworkSettingsPacket; use pocketmine\network\mcpe\protocol\types\CompressionAlgorithm; -use pocketmine\Server; final class SessionStartPacketHandler extends PacketHandler{ @@ -38,7 +35,6 @@ final class SessionStartPacketHandler extends PacketHandler{ * @phpstan-param \Closure() : void $onSuccess */ public function __construct( - private Server $server, private NetworkSession $session, private \Closure $onSuccess ){} @@ -46,13 +42,7 @@ final class SessionStartPacketHandler extends PacketHandler{ public function handleRequestNetworkSettings(RequestNetworkSettingsPacket $packet) : bool{ $protocolVersion = $packet->getProtocolVersion(); if(!$this->isCompatibleProtocol($protocolVersion)){ - $this->session->sendDataPacket(PlayStatusPacket::create($protocolVersion < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true); - - //This pocketmine disconnect message will only be seen by the console (PlayStatusPacket causes the messages to be shown for the client) - $this->session->disconnect( - $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $protocolVersion)), - false - ); + $this->session->disconnectIncompatibleProtocol($protocolVersion); return true; } From 9796dfd4d910b0269ffd03a2d9ad567478c5c616 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 18:32:22 +0000 Subject: [PATCH 466/692] Fix build --- src/network/mcpe/NetworkSession.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 6ac31cd9f..c3f510b04 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -583,7 +583,9 @@ class NetworkSession{ public function disconnectIncompatibleProtocol(int $protocolVersion) : void{ $this->tryDisconnect( - fn() => $this->sendDataPacket(PlayStatusPacket::create($protocolVersion < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true), + function() use ($protocolVersion) : void{ + $this->sendDataPacket(PlayStatusPacket::create($protocolVersion < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true); + }, $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $protocolVersion)) ); } From f173b91ca19927117fb53aad4d3025d10c1fb907 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 18:36:07 +0000 Subject: [PATCH 467/692] Introduce support for Translatable disconnection messages this allows localizing disconnection screens (at least, once #4512 has been addressed) and the disconnect reasons shown on the console. We already had disconnect messages implicitly localized in a few places, so this is just formalizing it. This does break BC with any code that previously passed translation keys as the disconnect screen message, because they'll no longer be translated (only Translatables will be translatated now). --- .../player/PlayerDuplicateLoginEvent.php | 7 ++-- src/event/player/PlayerKickEvent.php | 6 +-- src/event/player/PlayerPreLoginEvent.php | 9 ++-- src/event/player/PlayerQuitEvent.php | 4 +- src/network/NetworkSessionManager.php | 3 +- src/network/mcpe/NetworkSession.php | 41 ++++++++++++------- src/network/mcpe/auth/ProcessLoginTask.php | 32 ++++++++------- .../mcpe/auth/VerifyLoginException.php | 10 +++++ .../mcpe/handler/LoginPacketHandler.php | 13 +++--- .../handler/ResourcePacksPacketHandler.php | 4 +- src/player/Player.php | 12 +++--- 11 files changed, 86 insertions(+), 55 deletions(-) diff --git a/src/event/player/PlayerDuplicateLoginEvent.php b/src/event/player/PlayerDuplicateLoginEvent.php index 0de9ace00..c7c1ece68 100644 --- a/src/event/player/PlayerDuplicateLoginEvent.php +++ b/src/event/player/PlayerDuplicateLoginEvent.php @@ -26,6 +26,7 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; use pocketmine\event\Event; +use pocketmine\lang\Translatable; use pocketmine\network\mcpe\NetworkSession; /** @@ -35,7 +36,7 @@ use pocketmine\network\mcpe\NetworkSession; class PlayerDuplicateLoginEvent extends Event implements Cancellable{ use CancellableTrait; - private string $disconnectMessage = "Logged in from another location"; + private Translatable|string $disconnectMessage = "Logged in from another location"; public function __construct( private NetworkSession $connectingSession, @@ -53,11 +54,11 @@ class PlayerDuplicateLoginEvent extends Event implements Cancellable{ /** * Returns the message shown to the session which gets disconnected. */ - public function getDisconnectMessage() : string{ + public function getDisconnectMessage() : Translatable|string{ return $this->disconnectMessage; } - public function setDisconnectMessage(string $message) : void{ + public function setDisconnectMessage(Translatable|string $message) : void{ $this->disconnectMessage = $message; } } diff --git a/src/event/player/PlayerKickEvent.php b/src/event/player/PlayerKickEvent.php index 4d98d24e8..11f77e4de 100644 --- a/src/event/player/PlayerKickEvent.php +++ b/src/event/player/PlayerKickEvent.php @@ -36,7 +36,7 @@ class PlayerKickEvent extends PlayerEvent implements Cancellable{ public function __construct( Player $player, - protected string $reason, + protected Translatable|string $reason, protected Translatable|string $quitMessage ){ $this->player = $player; @@ -46,7 +46,7 @@ class PlayerKickEvent extends PlayerEvent implements Cancellable{ * Sets the message shown on the kicked player's disconnection screen. * This message is also displayed in the console and server log. */ - public function setReason(string $reason) : void{ + public function setReason(Translatable|string $reason) : void{ $this->reason = $reason; } @@ -55,7 +55,7 @@ class PlayerKickEvent extends PlayerEvent implements Cancellable{ * This message is also displayed in the console and server log. * When kicked by the /kick command, the default is something like "Kicked by admin.". */ - public function getReason() : string{ + public function getReason() : Translatable|string{ return $this->reason; } diff --git a/src/event/player/PlayerPreLoginEvent.php b/src/event/player/PlayerPreLoginEvent.php index 940369143..537aeba66 100644 --- a/src/event/player/PlayerPreLoginEvent.php +++ b/src/event/player/PlayerPreLoginEvent.php @@ -25,6 +25,7 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\Event; +use pocketmine\lang\Translatable; use pocketmine\player\PlayerInfo; use function array_keys; use function count; @@ -52,7 +53,7 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ self::KICK_REASON_BANNED ]; - /** @var string[] reason const => associated message */ + /** @var Translatable[]|string[] reason const => associated message */ protected array $kickReasons = []; public function __construct( @@ -107,7 +108,7 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ * Sets a reason to disallow the player to continue continue authenticating, with a message. * This can also be used to change kick messages for already-set flags. */ - public function setKickReason(int $flag, string $message) : void{ + public function setKickReason(int $flag, Translatable|string $message) : void{ $this->kickReasons[$flag] = $message; } @@ -138,7 +139,7 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ /** * Returns the kick message provided for the given kick flag, or null if not set. */ - public function getKickMessage(int $flag) : ?string{ + public function getKickMessage(int $flag) : Translatable|string|null{ return $this->kickReasons[$flag] ?? null; } @@ -150,7 +151,7 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ * * @see PlayerPreLoginEvent::KICK_REASON_PRIORITY */ - public function getFinalKickMessage() : string{ + public function getFinalKickMessage() : Translatable|string{ foreach(self::KICK_REASON_PRIORITY as $p){ if(isset($this->kickReasons[$p])){ return $this->kickReasons[$p]; diff --git a/src/event/player/PlayerQuitEvent.php b/src/event/player/PlayerQuitEvent.php index ce1c80787..13b48d6c0 100644 --- a/src/event/player/PlayerQuitEvent.php +++ b/src/event/player/PlayerQuitEvent.php @@ -40,7 +40,7 @@ class PlayerQuitEvent extends PlayerEvent{ public function __construct( Player $player, protected Translatable|string $quitMessage, - protected string $quitReason + protected Translatable|string $quitReason ){ $this->player = $player; } @@ -62,7 +62,7 @@ class PlayerQuitEvent extends PlayerEvent{ /** * Returns the disconnect reason shown in the server log and on the console. */ - public function getQuitReason() : string{ + public function getQuitReason() : Translatable|string{ return $this->quitReason; } } diff --git a/src/network/NetworkSessionManager.php b/src/network/NetworkSessionManager.php index de1b7bfe3..99a5a6a79 100644 --- a/src/network/NetworkSessionManager.php +++ b/src/network/NetworkSessionManager.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\network; +use pocketmine\lang\Translatable; use pocketmine\network\mcpe\NetworkSession; use function count; use function spl_object_id; @@ -74,7 +75,7 @@ class NetworkSessionManager{ /** * Terminates all connected sessions with the given reason. */ - public function close(string $reason = "") : void{ + public function close(Translatable|string $reason = "") : void{ foreach($this->sessions as $session){ $session->disconnect($reason); } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index c3f510b04..5b3d6bb3f 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -34,7 +34,6 @@ use pocketmine\event\server\DataPacketReceiveEvent; use pocketmine\event\server\DataPacketSendEvent; use pocketmine\form\Form; use pocketmine\lang\KnownTranslationFactory; -use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\Translatable; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; @@ -230,9 +229,7 @@ class NetworkSession{ $this->logger->info("Player: " . TextFormat::AQUA . $info->getUsername() . TextFormat::RESET); $this->logger->setPrefix($this->getLogPrefix()); }, - function(bool $isAuthenticated, bool $authRequired, ?string $error, ?string $clientPubKey) : void{ - $this->setAuthenticationStatus($isAuthenticated, $authRequired, $error, $clientPubKey); - } + \Closure::fromCallable([$this, "setAuthenticationStatus"]) )); } @@ -542,7 +539,7 @@ class NetworkSession{ /** * @phpstan-param \Closure() : void $func */ - private function tryDisconnect(\Closure $func, string $reason) : void{ + private function tryDisconnect(\Closure $func, Translatable|string $reason) : void{ if($this->connected && !$this->disconnectGuard){ $this->disconnectGuard = true; $func(); @@ -555,7 +552,14 @@ class NetworkSession{ $this->disposeHooks->clear(); $this->setHandler(null); $this->connected = false; - $this->logger->info("Session closed due to $reason"); + + if($reason instanceof Translatable){ + $translated = $this->server->getLanguage()->translate($reason); + }else{ + $translated = $reason; + } + //TODO: l10n + $this->logger->info("Session closed due to $translated"); } } @@ -567,13 +571,22 @@ class NetworkSession{ $this->invManager = null; } + private function sendDisconnectPacket(Translatable|string $reason) : void{ + if($reason instanceof Translatable){ + $translated = $this->server->getLanguage()->translate($reason); + }else{ + $translated = $reason; + } + $this->sendDataPacket(DisconnectPacket::create($translated)); + } + /** * Disconnects the session, destroying the associated player (if it exists). */ - public function disconnect(string $reason, bool $notify = true) : void{ + public function disconnect(Translatable|string $reason, bool $notify = true) : void{ $this->tryDisconnect(function() use ($reason, $notify) : void{ if($notify){ - $this->sendDataPacket(DisconnectPacket::create($reason)); + $this->sendDisconnectPacket($reason); } if($this->player !== null){ $this->player->onPostDisconnect($reason, null); @@ -593,7 +606,7 @@ class NetworkSession{ /** * Instructs the remote client to connect to a different server. */ - public function transfer(string $ip, int $port, string $reason = "transfer") : void{ + public function transfer(string $ip, int $port, Translatable|string $reason = "transfer") : void{ $this->tryDisconnect(function() use ($ip, $port, $reason) : void{ $this->sendDataPacket(TransferPacket::create($ip, $port), true); if($this->player !== null){ @@ -605,9 +618,9 @@ class NetworkSession{ /** * Called by the Player when it is closed (for example due to getting kicked). */ - public function onPlayerDestroyed(string $reason) : void{ + public function onPlayerDestroyed(Translatable|string $reason) : void{ $this->tryDisconnect(function() use ($reason) : void{ - $this->sendDataPacket(DisconnectPacket::create($reason)); + $this->sendDisconnectPacket($reason); }, $reason); } @@ -623,7 +636,7 @@ class NetworkSession{ }, $reason); } - private function setAuthenticationStatus(bool $authenticated, bool $authRequired, ?string $error, ?string $clientPubKey) : void{ + private function setAuthenticationStatus(bool $authenticated, bool $authRequired, Translatable|string|null $error, ?string $clientPubKey) : void{ if(!$this->connected){ return; } @@ -636,7 +649,7 @@ class NetworkSession{ } if($error !== null){ - $this->disconnect($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_invalidSession($this->server->getLanguage()->translateString($error)))); + $this->disconnect(KnownTranslationFactory::pocketmine_disconnect_invalidSession($error)); return; } @@ -645,7 +658,7 @@ class NetworkSession{ if(!$this->authenticated){ if($authRequired){ - $this->disconnect(KnownTranslationKeys::DISCONNECTIONSCREEN_NOTAUTHENTICATED); + $this->disconnect(KnownTranslationFactory::disconnectionScreen_notAuthenticated()); return; } if($this->info instanceof XboxLivePlayerInfo){ diff --git a/src/network/mcpe/auth/ProcessLoginTask.php b/src/network/mcpe/auth/ProcessLoginTask.php index 553fef68f..8df9886d3 100644 --- a/src/network/mcpe/auth/ProcessLoginTask.php +++ b/src/network/mcpe/auth/ProcessLoginTask.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\auth; -use pocketmine\lang\KnownTranslationKeys; +use pocketmine\lang\KnownTranslationFactory; +use pocketmine\lang\Translatable; use pocketmine\network\mcpe\JwtException; use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\protocol\types\login\JwtChainLinkBody; @@ -49,7 +50,7 @@ class ProcessLoginTask extends AsyncTask{ * keychain is invalid for whatever reason (bad signature, not in nbf-exp window, etc). If this is non-null, the * keychain might have been tampered with. The player will always be disconnected if this is non-null. */ - private ?string $error = "Unknown"; + private Translatable|string|null $error = "Unknown"; /** * Whether the player is logged into Xbox Live. This is true if any link in the keychain is signed with the Mojang * root public key. @@ -59,7 +60,7 @@ class ProcessLoginTask extends AsyncTask{ /** * @param string[] $chainJwts - * @phpstan-param \Closure(bool $isAuthenticated, bool $authRequired, ?string $error, ?string $clientPublicKey) : void $onCompletion + * @phpstan-param \Closure(bool $isAuthenticated, bool $authRequired, Translatable|string|null $error, ?string $clientPublicKey) : void $onCompletion */ public function __construct( array $chainJwts, @@ -76,7 +77,7 @@ class ProcessLoginTask extends AsyncTask{ $this->clientPublicKey = $this->validateChain(); $this->error = null; }catch(VerifyLoginException $e){ - $this->error = $e->getMessage(); + $this->error = $e->getDisconnectMessage(); } } @@ -109,7 +110,8 @@ class ProcessLoginTask extends AsyncTask{ try{ [$headersArray, $claimsArray, ] = JwtUtils::parse($jwt); }catch(JwtException $e){ - throw new VerifyLoginException("Failed to parse JWT: " . $e->getMessage(), 0, $e); + //TODO: we shouldn't be showing internal information like this to the client + throw new VerifyLoginException("Failed to parse JWT: " . $e->getMessage(), null, 0, $e); } $mapper = new \JsonMapper(); @@ -121,21 +123,23 @@ class ProcessLoginTask extends AsyncTask{ /** @var JwtHeader $headers */ $headers = $mapper->map($headersArray, new JwtHeader()); }catch(\JsonMapper_Exception $e){ - throw new VerifyLoginException("Invalid JWT header: " . $e->getMessage(), 0, $e); + //TODO: we shouldn't be showing internal information like this to the client + throw new VerifyLoginException("Invalid JWT header: " . $e->getMessage(), null, 0, $e); } $headerDerKey = base64_decode($headers->x5u, true); if($headerDerKey === false){ + //TODO: we shouldn't be showing internal information like this to the client throw new VerifyLoginException("Invalid JWT public key: base64 decoding error decoding x5u"); } if($currentPublicKey === null){ if(!$first){ - throw new VerifyLoginException(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_MISSINGKEY); + throw new VerifyLoginException("Missing JWT public key", KnownTranslationFactory::pocketmine_disconnect_invalidSession_missingKey()); } }elseif($headerDerKey !== $currentPublicKey){ //Fast path: if the header key doesn't match what we expected, the signature isn't going to validate anyway - throw new VerifyLoginException(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE); + throw new VerifyLoginException("Invalid JWT signature", KnownTranslationFactory::pocketmine_disconnect_invalidSession_badSignature()); } try{ @@ -145,10 +149,10 @@ class ProcessLoginTask extends AsyncTask{ } try{ if(!JwtUtils::verify($jwt, $signingKeyOpenSSL)){ - throw new VerifyLoginException(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE); + throw new VerifyLoginException("Invalid JWT signature", KnownTranslationFactory::pocketmine_disconnect_invalidSession_badSignature()); } }catch(JwtException $e){ - throw new VerifyLoginException($e->getMessage(), 0, $e); + throw new VerifyLoginException($e->getMessage(), null, 0, $e); } if($headers->x5u === self::MOJANG_ROOT_PUBLIC_KEY){ @@ -164,16 +168,16 @@ class ProcessLoginTask extends AsyncTask{ /** @var JwtChainLinkBody $claims */ $claims = $mapper->map($claimsArray, new JwtChainLinkBody()); }catch(\JsonMapper_Exception $e){ - throw new VerifyLoginException("Invalid chain link body: " . $e->getMessage(), 0, $e); + throw new VerifyLoginException("Invalid chain link body: " . $e->getMessage(), null, 0, $e); } $time = time(); if(isset($claims->nbf) && $claims->nbf > $time + self::CLOCK_DRIFT_MAX){ - throw new VerifyLoginException(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_TOOEARLY); + throw new VerifyLoginException("JWT not yet valid", KnownTranslationFactory::pocketmine_disconnect_invalidSession_tooEarly()); } if(isset($claims->exp) && $claims->exp < $time - self::CLOCK_DRIFT_MAX){ - throw new VerifyLoginException(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_TOOLATE); + throw new VerifyLoginException("JWT expired", KnownTranslationFactory::pocketmine_disconnect_invalidSession_tooLate()); } if(isset($claims->identityPublicKey)){ @@ -188,7 +192,7 @@ class ProcessLoginTask extends AsyncTask{ public function onCompletion() : void{ /** * @var \Closure $callback - * @phpstan-var \Closure(bool, bool, ?string, ?string) : void $callback + * @phpstan-var \Closure(bool, bool, Translatable|string|null, ?string) : void $callback */ $callback = $this->fetchLocal(self::TLS_KEY_ON_COMPLETION); $callback($this->authenticated, $this->authRequired, $this->error, $this->clientPublicKey); diff --git a/src/network/mcpe/auth/VerifyLoginException.php b/src/network/mcpe/auth/VerifyLoginException.php index b112215a8..b58c97416 100644 --- a/src/network/mcpe/auth/VerifyLoginException.php +++ b/src/network/mcpe/auth/VerifyLoginException.php @@ -23,6 +23,16 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\auth; +use pocketmine\lang\Translatable; + class VerifyLoginException extends \RuntimeException{ + private Translatable|string $disconnectMessage; + + public function __construct(string $message, Translatable|string|null $disconnectMessage = null, int $code = 0, ?\Throwable $previous = null){ + parent::__construct($message, $code, $previous); + $this->disconnectMessage = $disconnectMessage ?? $message; + } + + public function getDisconnectMessage() : Translatable|string{ return $this->disconnectMessage; } } diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index 07ca46b39..1c7e59b69 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -25,7 +25,8 @@ namespace pocketmine\network\mcpe\handler; use pocketmine\entity\InvalidSkinException; use pocketmine\event\player\PlayerPreLoginEvent; -use pocketmine\lang\KnownTranslationKeys; +use pocketmine\lang\KnownTranslationFactory; +use pocketmine\lang\Translatable; use pocketmine\network\mcpe\auth\ProcessLoginTask; use pocketmine\network\mcpe\convert\SkinAdapterSingleton; use pocketmine\network\mcpe\JwtException; @@ -51,7 +52,7 @@ use function is_array; class LoginPacketHandler extends PacketHandler{ /** * @phpstan-param \Closure(PlayerInfo) : void $playerInfoConsumer - * @phpstan-param \Closure(bool $isAuthenticated, bool $authRequired, ?string $error, ?string $clientPubKey) : void $authCallback + * @phpstan-param \Closure(bool $isAuthenticated, bool $authRequired, Translatable|string|null $error, ?string $clientPubKey) : void $authCallback */ public function __construct( private Server $server, @@ -70,7 +71,7 @@ class LoginPacketHandler extends PacketHandler{ $extraData = $this->fetchAuthData($packet->chainDataJwt); if(!Player::isValidUserName($extraData->displayName)){ - $this->session->disconnect(KnownTranslationKeys::DISCONNECTIONSCREEN_INVALIDNAME); + $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_invalidName()); return true; } @@ -80,7 +81,7 @@ class LoginPacketHandler extends PacketHandler{ $skin = SkinAdapterSingleton::get()->fromSkinData(ClientDataToSkinDataHelper::fromClientData($clientData)); }catch(\InvalidArgumentException | InvalidSkinException $e){ $this->session->getLogger()->debug("Invalid skin: " . $e->getMessage()); - $this->session->disconnect(KnownTranslationKeys::DISCONNECTIONSCREEN_INVALIDSKIN); + $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_invalidSkin()); return true; } @@ -116,12 +117,14 @@ class LoginPacketHandler extends PacketHandler{ $this->server->requiresAuthentication() ); if($this->server->getNetwork()->getConnectionCount() > $this->server->getMaxPlayers()){ - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_FULL, KnownTranslationKeys::DISCONNECTIONSCREEN_SERVERFULL); + $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_FULL, KnownTranslationFactory::disconnectionScreen_serverFull()); } if(!$this->server->isWhitelisted($playerInfo->getUsername())){ + //TODO: l10n $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_WHITELISTED, "Server is whitelisted"); } if($this->server->getNameBans()->isBanned($playerInfo->getUsername()) || $this->server->getIPBans()->isBanned($this->session->getIp())){ + //TODO: l10n $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_BANNED, "You are banned"); } diff --git a/src/network/mcpe/handler/ResourcePacksPacketHandler.php b/src/network/mcpe/handler/ResourcePacksPacketHandler.php index d1ba85724..0dfe15ef4 100644 --- a/src/network/mcpe/handler/ResourcePacksPacketHandler.php +++ b/src/network/mcpe/handler/ResourcePacksPacketHandler.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\handler; -use pocketmine\lang\KnownTranslationKeys; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\ResourcePackChunkDataPacket; @@ -86,7 +86,7 @@ class ResourcePacksPacketHandler extends PacketHandler{ private function disconnectWithError(string $error) : void{ $this->session->getLogger()->error("Error downloading resource packs: " . $error); - $this->session->disconnect(KnownTranslationKeys::DISCONNECTIONSCREEN_RESOURCEPACK); + $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_resourcePack()); } public function handleResourcePackClientResponse(ResourcePackClientResponsePacket $packet) : bool{ diff --git a/src/player/Player.php b/src/player/Player.php index 507747b0f..5819fa8cb 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -96,7 +96,6 @@ use pocketmine\item\Item; use pocketmine\item\ItemUseResult; use pocketmine\item\Releasable; use pocketmine\lang\KnownTranslationFactory; -use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\Language; use pocketmine\lang\Translatable; use pocketmine\math\Vector3; @@ -2102,13 +2101,13 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ /** * Kicks a player from the server */ - public function kick(string $reason = "", Translatable|string|null $quitMessage = null) : bool{ + public function kick(Translatable|string $reason = "", Translatable|string|null $quitMessage = null) : bool{ $ev = new PlayerKickEvent($this, $reason, $quitMessage ?? $this->getLeaveMessage()); $ev->call(); if(!$ev->isCancelled()){ $reason = $ev->getReason(); if($reason === ""){ - $reason = KnownTranslationKeys::DISCONNECTIONSCREEN_NOREASON; + $reason = KnownTranslationFactory::disconnectionScreen_noReason(); } $this->disconnect($reason, $ev->getQuitMessage()); @@ -2127,10 +2126,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ * * Note for internals developers: Do not call this from network sessions. It will cause a feedback loop. * - * @param string $reason Shown to the player, usually this will appear on their disconnect screen. + * @param Translatable|string $reason Shown on the disconnect screen, and in the server log * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) */ - public function disconnect(string $reason, Translatable|string|null $quitMessage = null) : void{ + public function disconnect(Translatable|string $reason, Translatable|string|null $quitMessage = null) : void{ if(!$this->isConnected()){ return; } @@ -2143,10 +2142,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ * @internal * This method executes post-disconnect actions and cleanups. * - * @param string $reason Shown to the player, usually this will appear on their disconnect screen. * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) */ - public function onPostDisconnect(string $reason, Translatable|string|null $quitMessage) : void{ + public function onPostDisconnect(Translatable|string $reason, Translatable|string|null $quitMessage) : void{ if($this->isConnected()){ throw new \LogicException("Player is still connected"); } From 6b8b7311f09b10eefbbf7b5b10874b2338b602ee Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 18:57:32 +0000 Subject: [PATCH 468/692] Support localized disconnect screen messages for PlayerLoginEvent --- src/event/player/PlayerLoginEvent.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/event/player/PlayerLoginEvent.php b/src/event/player/PlayerLoginEvent.php index e8edc5db9..734e54823 100644 --- a/src/event/player/PlayerLoginEvent.php +++ b/src/event/player/PlayerLoginEvent.php @@ -25,6 +25,7 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; +use pocketmine\lang\Translatable; use pocketmine\player\Player; /** @@ -37,16 +38,16 @@ class PlayerLoginEvent extends PlayerEvent implements Cancellable{ public function __construct( Player $player, - protected string $kickMessage + protected Translatable|string $kickMessage ){ $this->player = $player; } - public function setKickMessage(string $kickMessage) : void{ + public function setKickMessage(Translatable|string $kickMessage) : void{ $this->kickMessage = $kickMessage; } - public function getKickMessage() : string{ + public function getKickMessage() : Translatable|string{ return $this->kickMessage; } } From 7ac6bd79a9fda0a8a335b608bb7fc3c85d5fcdbc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 20:05:59 +0000 Subject: [PATCH 469/692] Localized remaining disconnection screens (except one or two that should never actually happen) --- composer.json | 2 +- composer.lock | 14 +- src/Server.php | 3 +- src/command/defaults/BanCommand.php | 2 +- src/command/defaults/BanIpCommand.php | 2 +- src/command/defaults/KickCommand.php | 2 +- src/command/defaults/WhitelistCommand.php | 5 +- .../player/PlayerDuplicateLoginEvent.php | 7 +- src/event/player/PlayerTransferEvent.php | 7 +- src/lang/KnownTranslationFactory.php | 341 ++++++++++++++++++ src/lang/KnownTranslationKeys.php | 82 +++++ src/network/mcpe/NetworkSession.php | 18 +- .../mcpe/handler/LoginPacketHandler.php | 21 +- .../handler/ResourcePacksPacketHandler.php | 2 +- src/network/mcpe/raklib/RakLibInterface.php | 9 +- src/player/Player.php | 12 +- 16 files changed, 486 insertions(+), 43 deletions(-) diff --git a/composer.json b/composer.json index ad19b71aa..db0f8a791 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,7 @@ "pocketmine/classloader": "^0.2.0", "pocketmine/color": "^0.2.0", "pocketmine/errorhandler": "^0.6.0", - "pocketmine/locale-data": "~2.11.0", + "pocketmine/locale-data": "~2.15.0", "pocketmine/log": "^0.4.0", "pocketmine/log-pthreads": "^0.4.0", "pocketmine/math": "^0.4.0", diff --git a/composer.lock b/composer.lock index 75639aa99..b95eaa9a0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2d4da4bb4787764fbe706a04311c3cbf", + "content-hash": "d833363f328eda3b1e080c3c5a7c76a4", "packages": [ { "name": "adhocore/json-comment", @@ -591,16 +591,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.11.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "4b33d8fa53eda53d9662a7478806ebae2e4a5c53" + "reference": "87feaefdd8364730a2350e58fa274b1b493a9d3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/4b33d8fa53eda53d9662a7478806ebae2e4a5c53", - "reference": "4b33d8fa53eda53d9662a7478806ebae2e4a5c53", + "url": "https://api.github.com/repos/pmmp/Language/zipball/87feaefdd8364730a2350e58fa274b1b493a9d3f", + "reference": "87feaefdd8364730a2350e58fa274b1b493a9d3f", "shasum": "" }, "type": "library", @@ -608,9 +608,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.11.0" + "source": "https://github.com/pmmp/Language/tree/2.15.0" }, - "time": "2022-11-25T14:24:34+00:00" + "time": "2022-12-27T19:59:39+00:00" }, { "name": "pocketmine/log", diff --git a/src/Server.php b/src/Server.php index c082f4a1d..8c1cc7122 100644 --- a/src/Server.php +++ b/src/Server.php @@ -567,7 +567,8 @@ class Server{ }, static function() use ($playerPromiseResolver, $session) : void{ if($session->isConnected()){ - $session->disconnect("Spawn terrain generation failed"); + $session->getLogger()->error("Spawn terrain generation failed"); + $session->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_internal()); } $playerPromiseResolver->reject(); } diff --git a/src/command/defaults/BanCommand.php b/src/command/defaults/BanCommand.php index fc3117ae1..7cc7a8148 100644 --- a/src/command/defaults/BanCommand.php +++ b/src/command/defaults/BanCommand.php @@ -55,7 +55,7 @@ class BanCommand extends VanillaCommand{ $sender->getServer()->getNameBans()->addBan($name, $reason, null, $sender->getName()); if(($player = $sender->getServer()->getPlayerExact($name)) instanceof Player){ - $player->kick($reason !== "" ? "Banned by admin. Reason: " . $reason : "Banned by admin."); + $player->kick($reason !== "" ? KnownTranslationFactory::pocketmine_disconnect_ban($reason) : KnownTranslationFactory::pocketmine_disconnect_ban_noReason()); } Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_ban_success($player !== null ? $player->getName() : $name)); diff --git a/src/command/defaults/BanIpCommand.php b/src/command/defaults/BanIpCommand.php index 2d8bc0632..3c8ceceaf 100644 --- a/src/command/defaults/BanIpCommand.php +++ b/src/command/defaults/BanIpCommand.php @@ -78,7 +78,7 @@ class BanIpCommand extends VanillaCommand{ foreach($sender->getServer()->getOnlinePlayers() as $player){ if($player->getNetworkSession()->getIp() === $ip){ - $player->kick("Banned by admin. Reason: " . ($reason !== "" ? $reason : "IP banned.")); + $player->kick(KnownTranslationFactory::pocketmine_disconnect_ban($reason !== "" ? $reason : KnownTranslationFactory::pocketmine_disconnect_ban_ip())); } } diff --git a/src/command/defaults/KickCommand.php b/src/command/defaults/KickCommand.php index 78767b9da..1bb38d1b2 100644 --- a/src/command/defaults/KickCommand.php +++ b/src/command/defaults/KickCommand.php @@ -55,7 +55,7 @@ class KickCommand extends VanillaCommand{ $reason = trim(implode(" ", $args)); if(($player = $sender->getServer()->getPlayerByPrefix($name)) instanceof Player){ - $player->kick("Kicked by admin." . ($reason !== "" ? " Reason: " . $reason : "")); + $player->kick($reason !== "" ? KnownTranslationFactory::pocketmine_disconnect_kick($reason) : KnownTranslationFactory::pocketmine_disconnect_kick_noReason()); if($reason !== ""){ Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_kick_success_reason($player->getName(), $reason)); }else{ diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index 2b1a90c53..a69334c4a 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -122,7 +122,7 @@ class WhitelistCommand extends VanillaCommand{ $server = $sender->getServer(); $server->removeWhitelist($args[1]); if(!$server->isWhitelisted($args[1])){ - $server->getPlayerExact($args[1])?->kick("Server whitelisted."); + $server->getPlayerExact($args[1])?->kick(KnownTranslationFactory::pocketmine_disconnect_kick(KnownTranslationFactory::pocketmine_disconnect_whitelisted())); } Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_remove_success($args[1])); } @@ -135,9 +135,10 @@ class WhitelistCommand extends VanillaCommand{ } private function kickNonWhitelistedPlayers(Server $server) : void{ + $message = KnownTranslationFactory::pocketmine_disconnect_kick(KnownTranslationFactory::pocketmine_disconnect_whitelisted()); foreach($server->getOnlinePlayers() as $player){ if(!$server->isWhitelisted($player->getName())){ - $player->kick("Server whitelisted."); + $player->kick($message); } } } diff --git a/src/event/player/PlayerDuplicateLoginEvent.php b/src/event/player/PlayerDuplicateLoginEvent.php index c7c1ece68..53d68bcd0 100644 --- a/src/event/player/PlayerDuplicateLoginEvent.php +++ b/src/event/player/PlayerDuplicateLoginEvent.php @@ -26,6 +26,7 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; use pocketmine\event\Event; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\Translatable; use pocketmine\network\mcpe\NetworkSession; @@ -36,12 +37,14 @@ use pocketmine\network\mcpe\NetworkSession; class PlayerDuplicateLoginEvent extends Event implements Cancellable{ use CancellableTrait; - private Translatable|string $disconnectMessage = "Logged in from another location"; + private Translatable|string $disconnectMessage; public function __construct( private NetworkSession $connectingSession, private NetworkSession $existingSession - ){} + ){ + $this->disconnectMessage = KnownTranslationFactory::disconnectionScreen_loggedinOtherLocation(); + } public function getConnectingSession() : NetworkSession{ return $this->connectingSession; diff --git a/src/event/player/PlayerTransferEvent.php b/src/event/player/PlayerTransferEvent.php index 1e08ec5d7..5d8c0bb7e 100644 --- a/src/event/player/PlayerTransferEvent.php +++ b/src/event/player/PlayerTransferEvent.php @@ -25,6 +25,7 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; +use pocketmine\lang\Translatable; use pocketmine\player\Player; /** @@ -37,7 +38,7 @@ class PlayerTransferEvent extends PlayerEvent implements Cancellable{ Player $player, protected string $address, protected int $port, - protected string $message + protected Translatable|string $message ){ $this->player = $player; } @@ -73,14 +74,14 @@ class PlayerTransferEvent extends PlayerEvent implements Cancellable{ /** * Returns the disconnect reason shown in the server log and on the console. */ - public function getMessage() : string{ + public function getMessage() : Translatable|string{ return $this->message; } /** * Sets the disconnect reason shown in the server log and on the console. */ - public function setMessage(string $message) : void{ + public function setMessage(Translatable|string $message) : void{ $this->message = $message; } } diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index f1db1c6d1..584fb342d 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -661,6 +661,12 @@ final class KnownTranslationFactory{ ]); } + public static function death_attack_fireworks(Translatable|string $param0) : Translatable{ + return new Translatable(KnownTranslationKeys::DEATH_ATTACK_FIREWORKS, [ + 0 => $param0, + ]); + } + public static function death_attack_generic(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::DEATH_ATTACK_GENERIC, [ 0 => $param0, @@ -760,6 +766,10 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::DISCONNECTIONSCREEN_INVALIDSKIN, []); } + public static function disconnectionScreen_loggedinOtherLocation() : Translatable{ + return new Translatable(KnownTranslationKeys::DISCONNECTIONSCREEN_LOGGEDINOTHERLOCATION, []); + } + public static function disconnectionScreen_noReason() : Translatable{ return new Translatable(KnownTranslationKeys::DISCONNECTIONSCREEN_NOREASON, []); } @@ -1574,6 +1584,47 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DEBUG_ENABLE, []); } + public static function pocketmine_disconnect_ban(Translatable|string $reason) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN, [ + "reason" => $reason, + ]); + } + + public static function pocketmine_disconnect_ban_hardcore() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN_HARDCORE, []); + } + + public static function pocketmine_disconnect_ban_ip() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN_IP, []); + } + + public static function pocketmine_disconnect_ban_noReason() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN_NOREASON, []); + } + + public static function pocketmine_disconnect_error(Translatable|string $error, Translatable|string $errorId) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR, [ + "error" => $error, + "errorId" => $errorId, + ]); + } + + public static function pocketmine_disconnect_error_authentication() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_AUTHENTICATION, []); + } + + public static function pocketmine_disconnect_error_badPacket() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_BADPACKET, []); + } + + public static function pocketmine_disconnect_error_internal() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_INTERNAL, []); + } + + public static function pocketmine_disconnect_error_loginTimeout() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT, []); + } + public static function pocketmine_disconnect_incompatibleProtocol(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL, [ 0 => $param0, @@ -1602,6 +1653,28 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_INVALIDSESSION_TOOLATE, []); } + public static function pocketmine_disconnect_kick(Translatable|string $reason) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_KICK, [ + "reason" => $reason, + ]); + } + + public static function pocketmine_disconnect_kick_noReason() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_KICK_NOREASON, []); + } + + public static function pocketmine_disconnect_transfer() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_TRANSFER, []); + } + + public static function pocketmine_disconnect_whitelisted() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_WHITELISTED, []); + } + + public static function pocketmine_disconnect_xblImpersonation() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_XBLIMPERSONATION, []); + } + public static function pocketmine_level_ambiguousFormat(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_AMBIGUOUSFORMAT, [ 0 => $param0, @@ -1707,6 +1780,274 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_network_session_close(Translatable|string $reason) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_NETWORK_SESSION_CLOSE, [ + "reason" => $reason, + ]); + } + + public static function pocketmine_network_session_open() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_NETWORK_SESSION_OPEN, []); + } + + public static function pocketmine_network_session_playerName(Translatable|string $playerName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_NETWORK_SESSION_PLAYERNAME, [ + "playerName" => $playerName, + ]); + } + + public static function pocketmine_permission_broadcast_admin() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_BROADCAST_ADMIN, []); + } + + public static function pocketmine_permission_broadcast_user() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_BROADCAST_USER, []); + } + + public static function pocketmine_permission_command_ban_ip() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_BAN_IP, []); + } + + public static function pocketmine_permission_command_ban_list() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_BAN_LIST, []); + } + + public static function pocketmine_permission_command_ban_player() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_BAN_PLAYER, []); + } + + public static function pocketmine_permission_command_clear_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_CLEAR_OTHER, []); + } + + public static function pocketmine_permission_command_clear_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_CLEAR_SELF, []); + } + + public static function pocketmine_permission_command_defaultgamemode() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_DEFAULTGAMEMODE, []); + } + + public static function pocketmine_permission_command_difficulty() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_DIFFICULTY, []); + } + + public static function pocketmine_permission_command_dumpmemory() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_DUMPMEMORY, []); + } + + public static function pocketmine_permission_command_effect_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_EFFECT_OTHER, []); + } + + public static function pocketmine_permission_command_effect_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_EFFECT_SELF, []); + } + + public static function pocketmine_permission_command_enchant_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_ENCHANT_OTHER, []); + } + + public static function pocketmine_permission_command_enchant_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_ENCHANT_SELF, []); + } + + public static function pocketmine_permission_command_gamemode_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_GAMEMODE_OTHER, []); + } + + public static function pocketmine_permission_command_gamemode_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_GAMEMODE_SELF, []); + } + + public static function pocketmine_permission_command_gc() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_GC, []); + } + + public static function pocketmine_permission_command_give_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_GIVE_OTHER, []); + } + + public static function pocketmine_permission_command_give_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_GIVE_SELF, []); + } + + public static function pocketmine_permission_command_help() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_HELP, []); + } + + public static function pocketmine_permission_command_kick() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_KICK, []); + } + + public static function pocketmine_permission_command_kill_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_KILL_OTHER, []); + } + + public static function pocketmine_permission_command_kill_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_KILL_SELF, []); + } + + public static function pocketmine_permission_command_list() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_LIST, []); + } + + public static function pocketmine_permission_command_me() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_ME, []); + } + + public static function pocketmine_permission_command_op_give() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_OP_GIVE, []); + } + + public static function pocketmine_permission_command_op_take() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_OP_TAKE, []); + } + + public static function pocketmine_permission_command_particle() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_PARTICLE, []); + } + + public static function pocketmine_permission_command_plugins() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_PLUGINS, []); + } + + public static function pocketmine_permission_command_save_disable() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SAVE_DISABLE, []); + } + + public static function pocketmine_permission_command_save_enable() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SAVE_ENABLE, []); + } + + public static function pocketmine_permission_command_save_perform() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SAVE_PERFORM, []); + } + + public static function pocketmine_permission_command_say() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SAY, []); + } + + public static function pocketmine_permission_command_seed() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SEED, []); + } + + public static function pocketmine_permission_command_setworldspawn() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SETWORLDSPAWN, []); + } + + public static function pocketmine_permission_command_spawnpoint_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SPAWNPOINT_OTHER, []); + } + + public static function pocketmine_permission_command_spawnpoint_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_SPAWNPOINT_SELF, []); + } + + public static function pocketmine_permission_command_status() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_STATUS, []); + } + + public static function pocketmine_permission_command_stop() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_STOP, []); + } + + public static function pocketmine_permission_command_teleport_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TELEPORT_OTHER, []); + } + + public static function pocketmine_permission_command_teleport_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TELEPORT_SELF, []); + } + + public static function pocketmine_permission_command_tell() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TELL, []); + } + + public static function pocketmine_permission_command_time_add() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIME_ADD, []); + } + + public static function pocketmine_permission_command_time_query() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIME_QUERY, []); + } + + public static function pocketmine_permission_command_time_set() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIME_SET, []); + } + + public static function pocketmine_permission_command_time_start() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIME_START, []); + } + + public static function pocketmine_permission_command_time_stop() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIME_STOP, []); + } + + public static function pocketmine_permission_command_timings() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TIMINGS, []); + } + + public static function pocketmine_permission_command_title_other() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TITLE_OTHER, []); + } + + public static function pocketmine_permission_command_title_self() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TITLE_SELF, []); + } + + public static function pocketmine_permission_command_transferserver() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_TRANSFERSERVER, []); + } + + public static function pocketmine_permission_command_unban_ip() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_UNBAN_IP, []); + } + + public static function pocketmine_permission_command_unban_player() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_UNBAN_PLAYER, []); + } + + public static function pocketmine_permission_command_version() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_VERSION, []); + } + + public static function pocketmine_permission_command_whitelist_add() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_ADD, []); + } + + public static function pocketmine_permission_command_whitelist_disable() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_DISABLE, []); + } + + public static function pocketmine_permission_command_whitelist_enable() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_ENABLE, []); + } + + public static function pocketmine_permission_command_whitelist_list() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_LIST, []); + } + + public static function pocketmine_permission_command_whitelist_reload() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_RELOAD, []); + } + + public static function pocketmine_permission_command_whitelist_remove() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_COMMAND_WHITELIST_REMOVE, []); + } + + public static function pocketmine_permission_group_console() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_GROUP_CONSOLE, []); + } + + public static function pocketmine_permission_group_operator() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_GROUP_OPERATOR, []); + } + + public static function pocketmine_permission_group_user() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PERMISSION_GROUP_USER, []); + } + public static function pocketmine_player_invalidEntity(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLAYER_INVALIDENTITY, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index bd98496cb..d69e1db94 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -146,6 +146,7 @@ final class KnownTranslationKeys{ public const DEATH_ATTACK_EXPLOSION_PLAYER = "death.attack.explosion.player"; public const DEATH_ATTACK_FALL = "death.attack.fall"; public const DEATH_ATTACK_FALLINGBLOCK = "death.attack.fallingBlock"; + public const DEATH_ATTACK_FIREWORKS = "death.attack.fireworks"; public const DEATH_ATTACK_GENERIC = "death.attack.generic"; public const DEATH_ATTACK_INFIRE = "death.attack.inFire"; public const DEATH_ATTACK_INWALL = "death.attack.inWall"; @@ -163,6 +164,7 @@ final class KnownTranslationKeys{ public const DEFAULT_VALUES_INFO = "default_values_info"; public const DISCONNECTIONSCREEN_INVALIDNAME = "disconnectionScreen.invalidName"; public const DISCONNECTIONSCREEN_INVALIDSKIN = "disconnectionScreen.invalidSkin"; + public const DISCONNECTIONSCREEN_LOGGEDINOTHERLOCATION = "disconnectionScreen.loggedinOtherLocation"; public const DISCONNECTIONSCREEN_NOREASON = "disconnectionScreen.noReason"; public const DISCONNECTIONSCREEN_NOTAUTHENTICATED = "disconnectionScreen.notAuthenticated"; public const DISCONNECTIONSCREEN_OUTDATEDCLIENT = "disconnectionScreen.outdatedClient"; @@ -342,12 +344,26 @@ final class KnownTranslationKeys{ public const POCKETMINE_DATA_PLAYEROLD = "pocketmine.data.playerOld"; public const POCKETMINE_DATA_SAVEERROR = "pocketmine.data.saveError"; public const POCKETMINE_DEBUG_ENABLE = "pocketmine.debug.enable"; + public const POCKETMINE_DISCONNECT_BAN = "pocketmine.disconnect.ban"; + public const POCKETMINE_DISCONNECT_BAN_HARDCORE = "pocketmine.disconnect.ban.hardcore"; + public const POCKETMINE_DISCONNECT_BAN_IP = "pocketmine.disconnect.ban.ip"; + public const POCKETMINE_DISCONNECT_BAN_NOREASON = "pocketmine.disconnect.ban.noReason"; + public const POCKETMINE_DISCONNECT_ERROR = "pocketmine.disconnect.error"; + public const POCKETMINE_DISCONNECT_ERROR_AUTHENTICATION = "pocketmine.disconnect.error.authentication"; + public const POCKETMINE_DISCONNECT_ERROR_BADPACKET = "pocketmine.disconnect.error.badPacket"; + public const POCKETMINE_DISCONNECT_ERROR_INTERNAL = "pocketmine.disconnect.error.internal"; + public const POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT = "pocketmine.disconnect.error.loginTimeout"; public const POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL = "pocketmine.disconnect.incompatibleProtocol"; public const POCKETMINE_DISCONNECT_INVALIDSESSION = "pocketmine.disconnect.invalidSession"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE = "pocketmine.disconnect.invalidSession.badSignature"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_MISSINGKEY = "pocketmine.disconnect.invalidSession.missingKey"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_TOOEARLY = "pocketmine.disconnect.invalidSession.tooEarly"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_TOOLATE = "pocketmine.disconnect.invalidSession.tooLate"; + public const POCKETMINE_DISCONNECT_KICK = "pocketmine.disconnect.kick"; + public const POCKETMINE_DISCONNECT_KICK_NOREASON = "pocketmine.disconnect.kick.noReason"; + public const POCKETMINE_DISCONNECT_TRANSFER = "pocketmine.disconnect.transfer"; + public const POCKETMINE_DISCONNECT_WHITELISTED = "pocketmine.disconnect.whitelisted"; + public const POCKETMINE_DISCONNECT_XBLIMPERSONATION = "pocketmine.disconnect.xblImpersonation"; public const POCKETMINE_LEVEL_AMBIGUOUSFORMAT = "pocketmine.level.ambiguousFormat"; public const POCKETMINE_LEVEL_BACKGROUNDGENERATION = "pocketmine.level.backgroundGeneration"; public const POCKETMINE_LEVEL_BADDEFAULTFORMAT = "pocketmine.level.badDefaultFormat"; @@ -365,6 +381,72 @@ final class KnownTranslationKeys{ public const POCKETMINE_LEVEL_UNKNOWNGENERATOR = "pocketmine.level.unknownGenerator"; public const POCKETMINE_LEVEL_UNLOADING = "pocketmine.level.unloading"; public const POCKETMINE_LEVEL_UNSUPPORTEDFORMAT = "pocketmine.level.unsupportedFormat"; + public const POCKETMINE_NETWORK_SESSION_CLOSE = "pocketmine.network.session.close"; + public const POCKETMINE_NETWORK_SESSION_OPEN = "pocketmine.network.session.open"; + public const POCKETMINE_NETWORK_SESSION_PLAYERNAME = "pocketmine.network.session.playerName"; + public const POCKETMINE_PERMISSION_BROADCAST_ADMIN = "pocketmine.permission.broadcast.admin"; + public const POCKETMINE_PERMISSION_BROADCAST_USER = "pocketmine.permission.broadcast.user"; + public const POCKETMINE_PERMISSION_COMMAND_BAN_IP = "pocketmine.permission.command.ban.ip"; + public const POCKETMINE_PERMISSION_COMMAND_BAN_LIST = "pocketmine.permission.command.ban.list"; + public const POCKETMINE_PERMISSION_COMMAND_BAN_PLAYER = "pocketmine.permission.command.ban.player"; + public const POCKETMINE_PERMISSION_COMMAND_CLEAR_OTHER = "pocketmine.permission.command.clear.other"; + public const POCKETMINE_PERMISSION_COMMAND_CLEAR_SELF = "pocketmine.permission.command.clear.self"; + public const POCKETMINE_PERMISSION_COMMAND_DEFAULTGAMEMODE = "pocketmine.permission.command.defaultgamemode"; + public const POCKETMINE_PERMISSION_COMMAND_DIFFICULTY = "pocketmine.permission.command.difficulty"; + public const POCKETMINE_PERMISSION_COMMAND_DUMPMEMORY = "pocketmine.permission.command.dumpmemory"; + public const POCKETMINE_PERMISSION_COMMAND_EFFECT_OTHER = "pocketmine.permission.command.effect.other"; + public const POCKETMINE_PERMISSION_COMMAND_EFFECT_SELF = "pocketmine.permission.command.effect.self"; + public const POCKETMINE_PERMISSION_COMMAND_ENCHANT_OTHER = "pocketmine.permission.command.enchant.other"; + public const POCKETMINE_PERMISSION_COMMAND_ENCHANT_SELF = "pocketmine.permission.command.enchant.self"; + public const POCKETMINE_PERMISSION_COMMAND_GAMEMODE_OTHER = "pocketmine.permission.command.gamemode.other"; + public const POCKETMINE_PERMISSION_COMMAND_GAMEMODE_SELF = "pocketmine.permission.command.gamemode.self"; + public const POCKETMINE_PERMISSION_COMMAND_GC = "pocketmine.permission.command.gc"; + public const POCKETMINE_PERMISSION_COMMAND_GIVE_OTHER = "pocketmine.permission.command.give.other"; + public const POCKETMINE_PERMISSION_COMMAND_GIVE_SELF = "pocketmine.permission.command.give.self"; + public const POCKETMINE_PERMISSION_COMMAND_HELP = "pocketmine.permission.command.help"; + public const POCKETMINE_PERMISSION_COMMAND_KICK = "pocketmine.permission.command.kick"; + public const POCKETMINE_PERMISSION_COMMAND_KILL_OTHER = "pocketmine.permission.command.kill.other"; + public const POCKETMINE_PERMISSION_COMMAND_KILL_SELF = "pocketmine.permission.command.kill.self"; + public const POCKETMINE_PERMISSION_COMMAND_LIST = "pocketmine.permission.command.list"; + public const POCKETMINE_PERMISSION_COMMAND_ME = "pocketmine.permission.command.me"; + public const POCKETMINE_PERMISSION_COMMAND_OP_GIVE = "pocketmine.permission.command.op.give"; + public const POCKETMINE_PERMISSION_COMMAND_OP_TAKE = "pocketmine.permission.command.op.take"; + public const POCKETMINE_PERMISSION_COMMAND_PARTICLE = "pocketmine.permission.command.particle"; + public const POCKETMINE_PERMISSION_COMMAND_PLUGINS = "pocketmine.permission.command.plugins"; + public const POCKETMINE_PERMISSION_COMMAND_SAVE_DISABLE = "pocketmine.permission.command.save.disable"; + public const POCKETMINE_PERMISSION_COMMAND_SAVE_ENABLE = "pocketmine.permission.command.save.enable"; + public const POCKETMINE_PERMISSION_COMMAND_SAVE_PERFORM = "pocketmine.permission.command.save.perform"; + public const POCKETMINE_PERMISSION_COMMAND_SAY = "pocketmine.permission.command.say"; + public const POCKETMINE_PERMISSION_COMMAND_SEED = "pocketmine.permission.command.seed"; + public const POCKETMINE_PERMISSION_COMMAND_SETWORLDSPAWN = "pocketmine.permission.command.setworldspawn"; + public const POCKETMINE_PERMISSION_COMMAND_SPAWNPOINT_OTHER = "pocketmine.permission.command.spawnpoint.other"; + public const POCKETMINE_PERMISSION_COMMAND_SPAWNPOINT_SELF = "pocketmine.permission.command.spawnpoint.self"; + public const POCKETMINE_PERMISSION_COMMAND_STATUS = "pocketmine.permission.command.status"; + public const POCKETMINE_PERMISSION_COMMAND_STOP = "pocketmine.permission.command.stop"; + public const POCKETMINE_PERMISSION_COMMAND_TELEPORT_OTHER = "pocketmine.permission.command.teleport.other"; + public const POCKETMINE_PERMISSION_COMMAND_TELEPORT_SELF = "pocketmine.permission.command.teleport.self"; + public const POCKETMINE_PERMISSION_COMMAND_TELL = "pocketmine.permission.command.tell"; + public const POCKETMINE_PERMISSION_COMMAND_TIME_ADD = "pocketmine.permission.command.time.add"; + public const POCKETMINE_PERMISSION_COMMAND_TIME_QUERY = "pocketmine.permission.command.time.query"; + public const POCKETMINE_PERMISSION_COMMAND_TIME_SET = "pocketmine.permission.command.time.set"; + public const POCKETMINE_PERMISSION_COMMAND_TIME_START = "pocketmine.permission.command.time.start"; + public const POCKETMINE_PERMISSION_COMMAND_TIME_STOP = "pocketmine.permission.command.time.stop"; + public const POCKETMINE_PERMISSION_COMMAND_TIMINGS = "pocketmine.permission.command.timings"; + public const POCKETMINE_PERMISSION_COMMAND_TITLE_OTHER = "pocketmine.permission.command.title.other"; + public const POCKETMINE_PERMISSION_COMMAND_TITLE_SELF = "pocketmine.permission.command.title.self"; + public const POCKETMINE_PERMISSION_COMMAND_TRANSFERSERVER = "pocketmine.permission.command.transferserver"; + public const POCKETMINE_PERMISSION_COMMAND_UNBAN_IP = "pocketmine.permission.command.unban.ip"; + public const POCKETMINE_PERMISSION_COMMAND_UNBAN_PLAYER = "pocketmine.permission.command.unban.player"; + public const POCKETMINE_PERMISSION_COMMAND_VERSION = "pocketmine.permission.command.version"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_ADD = "pocketmine.permission.command.whitelist.add"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_DISABLE = "pocketmine.permission.command.whitelist.disable"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_ENABLE = "pocketmine.permission.command.whitelist.enable"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_LIST = "pocketmine.permission.command.whitelist.list"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_RELOAD = "pocketmine.permission.command.whitelist.reload"; + public const POCKETMINE_PERMISSION_COMMAND_WHITELIST_REMOVE = "pocketmine.permission.command.whitelist.remove"; + public const POCKETMINE_PERMISSION_GROUP_CONSOLE = "pocketmine.permission.group.console"; + public const POCKETMINE_PERMISSION_GROUP_OPERATOR = "pocketmine.permission.group.operator"; + public const POCKETMINE_PERMISSION_GROUP_USER = "pocketmine.permission.group.user"; public const POCKETMINE_PLAYER_INVALIDENTITY = "pocketmine.player.invalidEntity"; public const POCKETMINE_PLAYER_INVALIDMOVE = "pocketmine.player.invalidMove"; public const POCKETMINE_PLAYER_LOGIN = "pocketmine.player.logIn"; diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 5b3d6bb3f..d04e61b6f 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -132,6 +132,7 @@ use function get_class; use function in_array; use function json_encode; use function ksort; +use function random_bytes; use function strcasecmp; use function strlen; use function strtolower; @@ -236,7 +237,11 @@ class NetworkSession{ protected function createPlayer() : void{ $this->server->createPlayer($this, $this->info, $this->authenticated, $this->cachedOfflinePlayerData)->onCompletion( \Closure::fromCallable([$this, 'onPlayerCreated']), - fn() => $this->disconnect("Player creation failed") //TODO: this should never actually occur... right? + function() : void{ + //TODO: this should never actually occur... right? + $this->logger->error("Failed to create player"); + $this->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_internal()); + } ); } @@ -594,6 +599,10 @@ class NetworkSession{ }, $reason); } + public function disconnectWithError(Translatable|string $reason) : void{ + $this->disconnect(KnownTranslationFactory::pocketmine_disconnect_error($reason, bin2hex(random_bytes(6)))); + } + public function disconnectIncompatibleProtocol(int $protocolVersion) : void{ $this->tryDisconnect( function() use ($protocolVersion) : void{ @@ -606,7 +615,8 @@ class NetworkSession{ /** * Instructs the remote client to connect to a different server. */ - public function transfer(string $ip, int $port, Translatable|string $reason = "transfer") : void{ + public function transfer(string $ip, int $port, Translatable|string|null $reason = null) : void{ + $reason ??= KnownTranslationFactory::pocketmine_disconnect_transfer(); $this->tryDisconnect(function() use ($ip, $port, $reason) : void{ $this->sendDataPacket(TransferPacket::create($ip, $port), true); if($this->player !== null){ @@ -649,7 +659,7 @@ class NetworkSession{ } if($error !== null){ - $this->disconnect(KnownTranslationFactory::pocketmine_disconnect_invalidSession($error)); + $this->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_invalidSession($error)); return; } @@ -1146,7 +1156,7 @@ class NetworkSession{ if($this->info === null){ if(time() >= $this->connectTime + 10){ - $this->disconnect("Login timeout"); + $this->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_loginTimeout()); } return; diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index 1c7e59b69..0919f85e3 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -71,7 +71,7 @@ class LoginPacketHandler extends PacketHandler{ $extraData = $this->fetchAuthData($packet->chainDataJwt); if(!Player::isValidUserName($extraData->displayName)){ - $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_invalidName()); + $this->session->disconnectWithError(KnownTranslationFactory::disconnectionScreen_invalidName()); return true; } @@ -81,7 +81,7 @@ class LoginPacketHandler extends PacketHandler{ $skin = SkinAdapterSingleton::get()->fromSkinData(ClientDataToSkinDataHelper::fromClientData($clientData)); }catch(\InvalidArgumentException | InvalidSkinException $e){ $this->session->getLogger()->debug("Invalid skin: " . $e->getMessage()); - $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_invalidSkin()); + $this->session->disconnectWithError(KnownTranslationFactory::disconnectionScreen_invalidSkin()); return true; } @@ -120,12 +120,19 @@ class LoginPacketHandler extends PacketHandler{ $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_FULL, KnownTranslationFactory::disconnectionScreen_serverFull()); } if(!$this->server->isWhitelisted($playerInfo->getUsername())){ - //TODO: l10n - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_WHITELISTED, "Server is whitelisted"); + $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_WHITELISTED, KnownTranslationFactory::pocketmine_disconnect_whitelisted()); } - if($this->server->getNameBans()->isBanned($playerInfo->getUsername()) || $this->server->getIPBans()->isBanned($this->session->getIp())){ - //TODO: l10n - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_BANNED, "You are banned"); + + $banMessage = null; + if(($banEntry = $this->server->getNameBans()->getEntry($playerInfo->getUsername())) !== null){ + $banReason = $banEntry->getReason(); + $banMessage = $banReason === "" ? KnownTranslationFactory::pocketmine_disconnect_ban_noReason() : KnownTranslationFactory::pocketmine_disconnect_ban($banReason); + }elseif(($banEntry = $this->server->getIPBans()->getEntry($this->session->getIp())) !== null){ + $banReason = $banEntry->getReason(); + $banMessage = KnownTranslationFactory::pocketmine_disconnect_ban($banReason !== "" ? $banReason : KnownTranslationFactory::pocketmine_disconnect_ban_ip()); + } + if($banMessage !== null){ + $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_BANNED, $banMessage); } $ev->call(); diff --git a/src/network/mcpe/handler/ResourcePacksPacketHandler.php b/src/network/mcpe/handler/ResourcePacksPacketHandler.php index 0dfe15ef4..8e76c545d 100644 --- a/src/network/mcpe/handler/ResourcePacksPacketHandler.php +++ b/src/network/mcpe/handler/ResourcePacksPacketHandler.php @@ -86,7 +86,7 @@ class ResourcePacksPacketHandler extends PacketHandler{ private function disconnectWithError(string $error) : void{ $this->session->getLogger()->error("Error downloading resource packs: " . $error); - $this->session->disconnect(KnownTranslationFactory::disconnectionScreen_resourcePack()); + $this->session->disconnectWithError(KnownTranslationFactory::disconnectionScreen_resourcePack()); } public function handleResourcePackClientResponse(ResourcePackClientResponsePacket $packet) : bool{ diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index bf1f75c26..c48cba81c 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\AdvancedNetworkInterface; use pocketmine\network\mcpe\compression\ZlibCompressor; use pocketmine\network\mcpe\convert\TypeConverter; @@ -46,10 +47,8 @@ use raklib\server\ServerEventListener; use raklib\utils\InternetAddress; use function addcslashes; use function base64_encode; -use function bin2hex; use function implode; use function mt_rand; -use function random_bytes; use function rtrim; use function substr; use const PHP_INT_MAX; @@ -182,14 +181,12 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ try{ $session->handleEncoded($buf); }catch(PacketHandlingException $e){ - $errorId = bin2hex(random_bytes(6)); - $logger = $session->getLogger(); - $logger->error("Bad packet (error ID $errorId): " . $e->getMessage()); + $logger->error("Bad packet: " . $e->getMessage()); //intentionally doesn't use logException, we don't want spammy packet error traces to appear in release mode $logger->debug(implode("\n", Utils::printableExceptionInfo($e))); - $session->disconnect("Packet processing error (Error ID: $errorId)"); + $session->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_badPacket()); $this->interface->blockAddress($address, 5); } } diff --git a/src/player/Player.php b/src/player/Player.php index 5819fa8cb..fa1ac0f48 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2081,14 +2081,14 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ /** * Transfers a player to another server. * - * @param string $address The IP address or hostname of the destination server - * @param int $port The destination port, defaults to 19132 - * @param string $message Message to show in the console when closing the player + * @param string $address The IP address or hostname of the destination server + * @param int $port The destination port, defaults to 19132 + * @param Translatable|string|null $message Message to show in the console when closing the player, null will use the default message * * @return bool if transfer was successful. */ - public function transfer(string $address, int $port = 19132, string $message = "transfer") : bool{ - $ev = new PlayerTransferEvent($this, $address, $port, $message); + public function transfer(string $address, int $port = 19132, Translatable|string|null $message = null) : bool{ + $ev = new PlayerTransferEvent($this, $address, $port, $message ?? KnownTranslationFactory::pocketmine_disconnect_transfer()); $ev->call(); if(!$ev->isCancelled()){ $this->getNetworkSession()->transfer($ev->getAddress(), $ev->getPort(), $ev->getMessage()); @@ -2303,7 +2303,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ public function respawn() : void{ if($this->server->isHardcore()){ - if($this->kick("You have been banned because you died in hardcore mode")){ //this allows plugins to prevent the ban by cancelling PlayerKickEvent + if($this->kick(KnownTranslationFactory::pocketmine_disconnect_ban(KnownTranslationFactory::pocketmine_disconnect_ban_hardcore()))){ //this allows plugins to prevent the ban by cancelling PlayerKickEvent $this->server->getNameBans()->addBan($this->getName(), "Died in hardcore mode"); } return; From c79806eaf0a31762570ecd4b3316a2fd487e6de2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 20:11:46 +0000 Subject: [PATCH 470/692] NetworkSession: localize session open, close, and player name discovery messages --- src/network/mcpe/NetworkSession.php | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index d04e61b6f..986684f62 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -207,7 +207,7 @@ class NetworkSession{ )); $this->manager->add($this); - $this->logger->info("Session opened"); + $this->logger->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_network_session_open())); } private function getLogPrefix() : string{ @@ -227,7 +227,7 @@ class NetworkSession{ $this, function(PlayerInfo $info) : void{ $this->info = $info; - $this->logger->info("Player: " . TextFormat::AQUA . $info->getUsername() . TextFormat::RESET); + $this->logger->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_network_session_playerName(TextFormat::AQUA . $info->getUsername() . TextFormat::RESET))); $this->logger->setPrefix($this->getLogPrefix()); }, \Closure::fromCallable([$this, "setAuthenticationStatus"]) @@ -558,13 +558,7 @@ class NetworkSession{ $this->setHandler(null); $this->connected = false; - if($reason instanceof Translatable){ - $translated = $this->server->getLanguage()->translate($reason); - }else{ - $translated = $reason; - } - //TODO: l10n - $this->logger->info("Session closed due to $translated"); + $this->logger->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_network_session_close($reason))); } } From 2da9b76452cc2a951c4f10e771bddeb139fe3006 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 27 Dec 2022 20:29:38 +0000 Subject: [PATCH 471/692] Added translatable descriptions for permissions --- src/permission/DefaultPermissions.php | 127 +++++++++++---------- src/permission/Permission.php | 10 +- tests/phpstan/configs/actual-problems.neon | 2 +- tools/generate-permission-doc.php | 9 +- 4 files changed, 78 insertions(+), 70 deletions(-) diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index 06e7705f8..4af3d1b09 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\permission; +use pocketmine\lang\KnownTranslationFactory as l10n; use pocketmine\permission\DefaultPermissionNames as Names; abstract class DefaultPermissions{ @@ -47,69 +48,69 @@ abstract class DefaultPermissions{ } public static function registerCorePermissions() : void{ - $consoleRoot = self::registerPermission(new Permission(self::ROOT_CONSOLE, "Grants all console permissions")); - $operatorRoot = self::registerPermission(new Permission(self::ROOT_OPERATOR, "Grants all operator permissions"), [$consoleRoot]); - $everyoneRoot = self::registerPermission(new Permission(self::ROOT_USER, "Grants all non-sensitive permissions that everyone gets by default"), [$operatorRoot]); + $consoleRoot = self::registerPermission(new Permission(self::ROOT_CONSOLE, l10n::pocketmine_permission_group_console())); + $operatorRoot = self::registerPermission(new Permission(self::ROOT_OPERATOR, l10n::pocketmine_permission_group_operator()), [$consoleRoot]); + $everyoneRoot = self::registerPermission(new Permission(self::ROOT_USER, l10n::pocketmine_permission_group_user()), [$operatorRoot]); - self::registerPermission(new Permission(Names::BROADCAST_ADMIN, "Allows the user to receive administrative broadcasts"), [$operatorRoot]); - self::registerPermission(new Permission(Names::BROADCAST_USER, "Allows the user to receive user broadcasts"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_BAN_IP, "Allows the user to ban IP addresses"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_BAN_LIST, "Allows the user to list banned players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_BAN_PLAYER, "Allows the user to ban players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_CLEAR_OTHER, "Allows the user to clear inventory of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_CLEAR_SELF, "Allows the user to clear their own inventory"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_DEFAULTGAMEMODE, "Allows the user to change the default gamemode"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_DIFFICULTY, "Allows the user to change the game difficulty"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_DUMPMEMORY, "Allows the user to dump memory contents"), [$consoleRoot]); - self::registerPermission(new Permission(Names::COMMAND_EFFECT_OTHER, "Allows the user to modify effects of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_EFFECT_SELF, "Allows the user to modify their own effects"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_ENCHANT_OTHER, "Allows the user to enchant the held items of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_ENCHANT_SELF, "Allows the user to enchant their own held item"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_OTHER, "Allows the user to change the game mode of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_SELF, "Allows the user to change their own game mode"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_GC, "Allows the user to fire garbage collection tasks"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_GIVE_OTHER, "Allows the user to give items to other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_GIVE_SELF, "Allows the user to give items to themselves"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_HELP, "Allows the user to view the help menu"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_KICK, "Allows the user to kick players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_KILL_OTHER, "Allows the user to kill other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_KILL_SELF, "Allows the user to commit suicide"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_LIST, "Allows the user to list all online players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_ME, "Allows the user to perform a chat action"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_OP_GIVE, "Allows the user to give a player operator status"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_OP_TAKE, "Allows the user to take a player's operator status"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_PARTICLE, "Allows the user to create particle effects"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_PLUGINS, "Allows the user to view the list of plugins"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SAVE_DISABLE, "Allows the user to disable automatic saving"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SAVE_ENABLE, "Allows the user to enable automatic saving"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SAVE_PERFORM, "Allows the user to perform a manual save"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SAY, "Allows the user to talk as the console"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SEED, "Allows the user to view the seed of the world"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SETWORLDSPAWN, "Allows the user to change the world spawn"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SPAWNPOINT_OTHER, "Allows the user to change the respawn point of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_SPAWNPOINT_SELF, "Allows the user to change their own respawn point"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_STATUS, "Allows the user to view the server performance"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_STOP, "Allows the user to stop the server"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TELEPORT_OTHER, "Allows the user to teleport other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TELEPORT_SELF, "Allows the user to teleport themselves"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TELL, "Allows the user to privately message another player"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIME_ADD, "Allows the user to fast-forward time"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIME_QUERY, "Allows the user query the time"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIME_SET, "Allows the user to change the time"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIME_START, "Allows the user to restart the time"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIME_STOP, "Allows the user to stop the time"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TIMINGS, "Allows the user to record timings to analyse server performance"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TITLE_OTHER, "Allows the user to send a title to the specified player"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TITLE_SELF, "Allows the user to send a title to themselves"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_TRANSFERSERVER, "Allows the user to transfer self to another server"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_UNBAN_IP, "Allows the user to unban IP addresses"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_UNBAN_PLAYER, "Allows the user to unban players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_VERSION, "Allows the user to view the version of the server"), [$everyoneRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_ADD, "Allows the user to add a player to the server whitelist"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_DISABLE, "Allows the user to disable the server whitelist"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_ENABLE, "Allows the user to enable the server whitelist"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_LIST, "Allows the user to list all players on the server whitelist"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_RELOAD, "Allows the user to reload the server whitelist"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_WHITELIST_REMOVE, "Allows the user to remove a player from the server whitelist"), [$operatorRoot]); + self::registerPermission(new Permission(Names::BROADCAST_ADMIN, l10n::pocketmine_permission_broadcast_admin()), [$operatorRoot]); + self::registerPermission(new Permission(Names::BROADCAST_USER, l10n::pocketmine_permission_broadcast_user()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_BAN_IP, l10n::pocketmine_permission_command_ban_ip()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_BAN_LIST, l10n::pocketmine_permission_command_ban_list()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_BAN_PLAYER, l10n::pocketmine_permission_command_ban_player()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_CLEAR_OTHER, l10n::pocketmine_permission_command_clear_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_CLEAR_SELF, l10n::pocketmine_permission_command_clear_self()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_DEFAULTGAMEMODE, l10n::pocketmine_permission_command_defaultgamemode()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_DIFFICULTY, l10n::pocketmine_permission_command_difficulty()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_DUMPMEMORY, l10n::pocketmine_permission_command_dumpmemory()), [$consoleRoot]); + self::registerPermission(new Permission(Names::COMMAND_EFFECT_OTHER, l10n::pocketmine_permission_command_effect_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_EFFECT_SELF, l10n::pocketmine_permission_command_effect_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_ENCHANT_OTHER, l10n::pocketmine_permission_command_enchant_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_ENCHANT_SELF, l10n::pocketmine_permission_command_enchant_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_OTHER, l10n::pocketmine_permission_command_gamemode_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_SELF, l10n::pocketmine_permission_command_gamemode_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_GC, l10n::pocketmine_permission_command_gc()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_GIVE_OTHER, l10n::pocketmine_permission_command_give_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_GIVE_SELF, l10n::pocketmine_permission_command_give_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_HELP, l10n::pocketmine_permission_command_help()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_KICK, l10n::pocketmine_permission_command_kick()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_KILL_OTHER, l10n::pocketmine_permission_command_kill_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_KILL_SELF, l10n::pocketmine_permission_command_kill_self()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_LIST, l10n::pocketmine_permission_command_list()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_ME, l10n::pocketmine_permission_command_me()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_OP_GIVE, l10n::pocketmine_permission_command_op_give()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_OP_TAKE, l10n::pocketmine_permission_command_op_take()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_PARTICLE, l10n::pocketmine_permission_command_particle()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_PLUGINS, l10n::pocketmine_permission_command_plugins()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SAVE_DISABLE, l10n::pocketmine_permission_command_save_disable()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SAVE_ENABLE, l10n::pocketmine_permission_command_save_enable()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SAVE_PERFORM, l10n::pocketmine_permission_command_save_enable()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SAY, l10n::pocketmine_permission_command_say()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SEED, l10n::pocketmine_permission_command_seed()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SETWORLDSPAWN, l10n::pocketmine_permission_command_setworldspawn()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SPAWNPOINT_OTHER, l10n::pocketmine_permission_command_spawnpoint_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_SPAWNPOINT_SELF, l10n::pocketmine_permission_command_spawnpoint_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_STATUS, l10n::pocketmine_permission_command_status()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_STOP, l10n::pocketmine_permission_command_stop()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TELEPORT_OTHER, l10n::pocketmine_permission_command_teleport_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TELEPORT_SELF, l10n::pocketmine_permission_command_teleport_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TELL, l10n::pocketmine_permission_command_tell()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIME_ADD, l10n::pocketmine_permission_command_time_add()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIME_QUERY, l10n::pocketmine_permission_command_time_query()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIME_SET, l10n::pocketmine_permission_command_time_set()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIME_START, l10n::pocketmine_permission_command_time_start()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIME_STOP, l10n::pocketmine_permission_command_time_stop()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TIMINGS, l10n::pocketmine_permission_command_timings()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TITLE_OTHER, l10n::pocketmine_permission_command_title_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TITLE_SELF, l10n::pocketmine_permission_command_title_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_TRANSFERSERVER, l10n::pocketmine_permission_command_transferserver()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_UNBAN_IP, l10n::pocketmine_permission_command_unban_ip()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_UNBAN_PLAYER, l10n::pocketmine_permission_command_unban_player()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_VERSION, l10n::pocketmine_permission_command_version()), [$everyoneRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_ADD, l10n::pocketmine_permission_command_whitelist_add()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_DISABLE, l10n::pocketmine_permission_command_whitelist_disable()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_ENABLE, l10n::pocketmine_permission_command_whitelist_enable()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_LIST, l10n::pocketmine_permission_command_whitelist_list()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_RELOAD, l10n::pocketmine_permission_command_whitelist_reload()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_WHITELIST_REMOVE, l10n::pocketmine_permission_command_whitelist_remove()), [$operatorRoot]); } } diff --git a/src/permission/Permission.php b/src/permission/Permission.php index f73f33ab8..fc10e3587 100644 --- a/src/permission/Permission.php +++ b/src/permission/Permission.php @@ -27,11 +27,13 @@ declare(strict_types=1); namespace pocketmine\permission; +use pocketmine\lang\Translatable; + /** * Represents a permission */ class Permission{ - private string $description; + private Translatable|string $description; /** * Creates a new Permission object to be attached to Permissible objects @@ -41,7 +43,7 @@ class Permission{ */ public function __construct( private string $name, - ?string $description = null, + Translatable|string|null $description = null, private array $children = [] ){ $this->description = $description ?? ""; //TODO: wtf ???? @@ -61,11 +63,11 @@ class Permission{ return $this->children; } - public function getDescription() : string{ + public function getDescription() : Translatable|string{ return $this->description; } - public function setDescription(string $value) : void{ + public function setDescription(Translatable|string $value) : void{ $this->description = $value; } diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 38a306f8c..44e3c0fcf 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -746,7 +746,7 @@ parameters: path: ../../../src/permission/PermissionParser.php - - message: "#^Parameter \\#2 \\$description of class pocketmine\\\\permission\\\\Permission constructor expects string\\|null, mixed given\\.$#" + message: "#^Parameter \\#2 \\$description of class pocketmine\\\\permission\\\\Permission constructor expects pocketmine\\\\lang\\\\Translatable\\|string\\|null, mixed given\\.$#" count: 1 path: ../../../src/permission/PermissionParser.php diff --git a/tools/generate-permission-doc.php b/tools/generate-permission-doc.php index fd04f1a29..79b6ced5c 100644 --- a/tools/generate-permission-doc.php +++ b/tools/generate-permission-doc.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\generate_permission_doc; +use pocketmine\lang\Language; +use pocketmine\lang\Translatable; use pocketmine\permission\DefaultPermissions; use pocketmine\permission\PermissionManager; use pocketmine\utils\Utils; @@ -58,6 +60,7 @@ function markdownify(string $name) : string{ return str_replace(['.', '`', ' '], ['', '', '-'], strtolower($name)); } DefaultPermissions::registerCorePermissions(); +$language = new Language(Language::FALLBACK_LANGUAGE); $cwd = Utils::assumeNotFalse(getcwd()); $output = Path::join($cwd, "core-permissions.$format"); @@ -94,12 +97,14 @@ if($format === "md"){ fwrite($doc, "\n"); } foreach($permissions as $permission){ + $description = $permission->getDescription(); + $plainDescription = $description instanceof Translatable ? $language->translate($description) : $description; if($format === "md"){ $link = count($permission->getChildren()) === 0 ? "N/A" : "[Jump](#" . markdownify("Permissions implied by `" . $permission->getName() . "`") . ")"; - fwrite($doc, "| `" . $permission->getName() . "` | " . $permission->getDescription() . " | $link |\n"); + fwrite($doc, "| `" . $permission->getName() . "` | $plainDescription | $link |\n"); }else{ fwrite($doc, " * - ``" . $permission->getName() . "``\n"); - fwrite($doc, " - " . $permission->getDescription() . "\n"); + fwrite($doc, " - $plainDescription\n"); if(count($permission->getChildren()) === 0){ fwrite($doc, " - N/A\n"); }else{ From 42db3abf5e109478da7c80a31d4a7082ff5cb4ff Mon Sep 17 00:00:00 2001 From: BrandPVP <114182697+BrandPVP@users.noreply.github.com> Date: Sat, 31 Dec 2022 16:04:22 +0300 Subject: [PATCH 472/692] QueryInfo->setPlayerList() now accepts string[] instead of Player[] (#5476) --- src/network/query/QueryInfo.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/network/query/QueryInfo.php b/src/network/query/QueryInfo.php index 1dc0dcf7e..2d36ac7e6 100644 --- a/src/network/query/QueryInfo.php +++ b/src/network/query/QueryInfo.php @@ -29,6 +29,7 @@ use pocketmine\plugin\Plugin; use pocketmine\Server; use pocketmine\utils\Binary; use pocketmine\utils\Utils; +use function array_map; use function chr; use function count; use function str_replace; @@ -41,7 +42,7 @@ final class QueryInfo{ private bool $listPlugins; /** @var Plugin[] */ private array $plugins; - /** @var Player[] */ + /** @var string[] */ private array $players; private string $gametype; @@ -67,7 +68,7 @@ final class QueryInfo{ $this->serverName = $server->getMotd(); $this->listPlugins = $server->getConfigGroup()->getPropertyBool("settings.query-plugins", true); $this->plugins = $server->getPluginManager()->getPlugins(); - $this->players = $server->getOnlinePlayers(); + $this->players = array_map(fn(Player $p) => $p->getName(), $server->getOnlinePlayers()); $this->gametype = ($server->getGamemode()->equals(GameMode::SURVIVAL()) || $server->getGamemode()->equals(GameMode::ADVENTURE())) ? "SMP" : "CMP"; $this->version = $server->getVersion(); @@ -122,17 +123,17 @@ final class QueryInfo{ } /** - * @return Player[] + * @return string[] */ public function getPlayerList() : array{ return $this->players; } /** - * @param Player[] $players + * @param string[] $players */ public function setPlayerList(array $players) : void{ - Utils::validateArrayValueType($players, function(Player $_) : void{}); + Utils::validateArrayValueType($players, function(string $_) : void{}); $this->players = $players; $this->destroyCache(); } @@ -226,7 +227,7 @@ final class QueryInfo{ $query .= "\x00\x01player_\x00\x00"; foreach($this->players as $player){ - $query .= $player->getName() . "\x00"; + $query .= $player . "\x00"; } $query .= "\x00"; From 85231215e7d559ca0bd28471c79fab32970ca306 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Wed, 4 Jan 2023 23:10:46 +0300 Subject: [PATCH 473/692] Implemented Sculk (#5489) --- src/block/BlockTypeIds.php | 3 +- src/block/Sculk.php | 41 +++++++++++++++++++ src/block/VanillaBlocks.php | 2 + .../convert/BlockObjectToStateSerializer.php | 1 + .../BlockStateToObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + .../block_factory_consistency_check.json | 2 +- 7 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/block/Sculk.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 3ab25dfbc..c63b22432 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -707,8 +707,9 @@ final class BlockTypeIds{ public const TWISTING_VINES = 10680; public const WEEPING_VINES = 10681; public const CHAIN = 10682; + public const SCULK = 10683; - public const FIRST_UNUSED_BLOCK_ID = 10683; + public const FIRST_UNUSED_BLOCK_ID = 10684; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/Sculk.php b/src/block/Sculk.php new file mode 100644 index 000000000..6f1f95f27 --- /dev/null +++ b/src/block/Sculk.php @@ -0,0 +1,41 @@ +mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM); $this->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK); $this->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6); + $this->mapSimple(Blocks::SCULK(), Ids::SCULK); $this->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN); $this->mapSimple(Blocks::SHROOMLIGHT(), Ids::SHROOMLIGHT); $this->mapSimple(Blocks::SHULKER_BOX(), Ids::UNDYED_SHULKER_BOX); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index 4621c6560..fdae56e31 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -407,6 +407,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->mapSimple(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); $this->mapSimple(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); $this->mapSimple(Ids::RESERVED6, fn() => Blocks::RESERVED6()); + $this->mapSimple(Ids::SCULK, fn() => Blocks::SCULK()); $this->mapSimple(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); $this->mapSimple(Ids::SHROOMLIGHT, fn() => Blocks::SHROOMLIGHT()); $this->mapSimple(Ids::SLIME, fn() => Blocks::SLIME()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 63baf3eff..e6afaab5c 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -936,6 +936,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("sandstone_stairs", fn() => Blocks::SANDSTONE_STAIRS()); $result->registerBlock("sandstone_wall", fn() => Blocks::SANDSTONE_WALL()); $result->registerBlock("sapling", fn() => Blocks::OAK_SAPLING()); + $result->registerBlock("sculk", fn() => Blocks::SCULK()); $result->registerBlock("sea_lantern", fn() => Blocks::SEA_LANTERN()); $result->registerBlock("sea_pickle", fn() => Blocks::SEA_PICKLE()); $result->registerBlock("sealantern", fn() => Blocks::SEA_LANTERN()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 490fc655a..db27a8528 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From c5ca0857ee06bb2d73ab0b10d61a80acb641674e Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sun, 8 Jan 2023 18:56:14 +0300 Subject: [PATCH 474/692] TileFactory: removed outdated TODO (#5503) [ci skip] --- src/block/tile/TileFactory.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/block/tile/TileFactory.php b/src/block/tile/TileFactory.php index 4a9c73872..ef1c630f1 100644 --- a/src/block/tile/TileFactory.php +++ b/src/block/tile/TileFactory.php @@ -78,7 +78,6 @@ final class TileFactory{ $this->register(Skull::class, ["Skull", "minecraft:skull"]); //TODO: Campfire - //TODO: Cauldron //TODO: ChalkboardBlock //TODO: ChemistryTable //TODO: CommandBlock From 9b4b960eb2165461d3ef393cf33030e7c2ce98f0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 8 Jan 2023 17:07:22 +0000 Subject: [PATCH 475/692] Remove deprecated methods --- src/entity/Living.php | 10 ---------- src/player/Player.php | 8 -------- 2 files changed, 18 deletions(-) diff --git a/src/entity/Living.php b/src/entity/Living.php index 34a297578..09e609b84 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -294,16 +294,6 @@ abstract class Living extends Entity{ return $nbt; } - /** - * @deprecated This function always returns true, no matter whether the target is in the line of sight or not. - * @see VoxelRayTrace::inDirection() for a more generalized method of ray-tracing to a target. - */ - public function hasLineOfSight(Entity $entity) : bool{ - //TODO: head height - return true; - //return $this->getLevelNonNull()->rayTraceBlocks(Vector3::createVector($this->x, $this->y + $this->height, $this->z), Vector3::createVector($entity->x, $entity->y + $entity->height, $entity->z)) === null; - } - public function getEffects() : EffectManager{ return $this->effectManager; } diff --git a/src/player/Player.php b/src/player/Player.php index 702992b0b..4281df2b8 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2013,14 +2013,6 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->getNetworkSession()->onChatMessage($message); } - /** - * @deprecated Use {@link Player::sendMessage()} with a Translatable instead. - * @param string[]|Translatable[] $parameters - */ - public function sendTranslation(string $message, array $parameters = []) : void{ - $this->sendMessage(new Translatable($message, $parameters)); - } - /** * @param string[] $args */ From 9c391a6809cb03323644e8b5af50741d109b2078 Mon Sep 17 00:00:00 2001 From: BrandPVP <114182697+BrandPVP@users.noreply.github.com> Date: Mon, 9 Jan 2023 23:43:08 +0300 Subject: [PATCH 476/692] Declare built-in command names inside the constructor (#5487) This increases code consistency by placing the name in the same place where everything else about the command is defined. --- src/command/SimpleCommandMap.php | 80 +++++++++---------- src/command/defaults/BanCommand.php | 4 +- src/command/defaults/BanIpCommand.php | 4 +- src/command/defaults/BanListCommand.php | 4 +- src/command/defaults/ClearCommand.php | 4 +- .../defaults/DefaultGamemodeCommand.php | 4 +- src/command/defaults/DeopCommand.php | 4 +- src/command/defaults/DifficultyCommand.php | 4 +- src/command/defaults/DumpMemoryCommand.php | 6 +- src/command/defaults/EffectCommand.php | 4 +- src/command/defaults/EnchantCommand.php | 4 +- src/command/defaults/GamemodeCommand.php | 4 +- .../defaults/GarbageCollectorCommand.php | 4 +- src/command/defaults/GiveCommand.php | 4 +- src/command/defaults/HelpCommand.php | 4 +- src/command/defaults/KickCommand.php | 4 +- src/command/defaults/KillCommand.php | 4 +- src/command/defaults/ListCommand.php | 4 +- src/command/defaults/MeCommand.php | 4 +- src/command/defaults/OpCommand.php | 4 +- src/command/defaults/PardonCommand.php | 4 +- src/command/defaults/PardonIpCommand.php | 4 +- src/command/defaults/ParticleCommand.php | 4 +- src/command/defaults/PluginsCommand.php | 4 +- src/command/defaults/SaveCommand.php | 4 +- src/command/defaults/SaveOffCommand.php | 4 +- src/command/defaults/SaveOnCommand.php | 4 +- src/command/defaults/SayCommand.php | 4 +- src/command/defaults/SeedCommand.php | 4 +- src/command/defaults/SetWorldSpawnCommand.php | 4 +- src/command/defaults/SpawnpointCommand.php | 4 +- src/command/defaults/StatusCommand.php | 4 +- src/command/defaults/StopCommand.php | 4 +- src/command/defaults/TeleportCommand.php | 4 +- src/command/defaults/TellCommand.php | 4 +- src/command/defaults/TimeCommand.php | 4 +- src/command/defaults/TimingsCommand.php | 4 +- src/command/defaults/TitleCommand.php | 4 +- .../defaults/TransferServerCommand.php | 4 +- src/command/defaults/VersionCommand.php | 4 +- src/command/defaults/WhitelistCommand.php | 4 +- 41 files changed, 121 insertions(+), 121 deletions(-) diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 2af24ffed..b0308e7f0 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -89,46 +89,46 @@ class SimpleCommandMap implements CommandMap{ private function setDefaultCommands() : void{ $this->registerAll("pocketmine", [ - new BanCommand("ban"), - new BanIpCommand("ban-ip"), - new BanListCommand("banlist"), - new ClearCommand("clear"), - new DefaultGamemodeCommand("defaultgamemode"), - new DeopCommand("deop"), - new DifficultyCommand("difficulty"), - new DumpMemoryCommand("dumpmemory"), - new EffectCommand("effect"), - new EnchantCommand("enchant"), - new GamemodeCommand("gamemode"), - new GarbageCollectorCommand("gc"), - new GiveCommand("give"), - new HelpCommand("help"), - new KickCommand("kick"), - new KillCommand("kill"), - new ListCommand("list"), - new MeCommand("me"), - new OpCommand("op"), - new PardonCommand("pardon"), - new PardonIpCommand("pardon-ip"), - new ParticleCommand("particle"), - new PluginsCommand("plugins"), - new SaveCommand("save-all"), - new SaveOffCommand("save-off"), - new SaveOnCommand("save-on"), - new SayCommand("say"), - new SeedCommand("seed"), - new SetWorldSpawnCommand("setworldspawn"), - new SpawnpointCommand("spawnpoint"), - new StatusCommand("status"), - new StopCommand("stop"), - new TeleportCommand("tp"), - new TellCommand("tell"), - new TimeCommand("time"), - new TimingsCommand("timings"), - new TitleCommand("title"), - new TransferServerCommand("transferserver"), - new VersionCommand("version"), - new WhitelistCommand("whitelist") + new BanCommand(), + new BanIpCommand(), + new BanListCommand(), + new ClearCommand(), + new DefaultGamemodeCommand(), + new DeopCommand(), + new DifficultyCommand(), + new DumpMemoryCommand(), + new EffectCommand(), + new EnchantCommand(), + new GamemodeCommand(), + new GarbageCollectorCommand(), + new GiveCommand(), + new HelpCommand(), + new KickCommand(), + new KillCommand(), + new ListCommand(), + new MeCommand(), + new OpCommand(), + new PardonCommand(), + new PardonIpCommand(), + new ParticleCommand(), + new PluginsCommand(), + new SaveCommand(), + new SaveOffCommand(), + new SaveOnCommand(), + new SayCommand(), + new SeedCommand(), + new SetWorldSpawnCommand(), + new SpawnpointCommand(), + new StatusCommand(), + new StopCommand(), + new TeleportCommand(), + new TellCommand(), + new TimeCommand(), + new TimingsCommand(), + new TitleCommand(), + new TransferServerCommand(), + new VersionCommand(), + new WhitelistCommand() ]); } diff --git a/src/command/defaults/BanCommand.php b/src/command/defaults/BanCommand.php index 7cc7a8148..adbdb6d3a 100644 --- a/src/command/defaults/BanCommand.php +++ b/src/command/defaults/BanCommand.php @@ -35,9 +35,9 @@ use function implode; class BanCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "ban", KnownTranslationFactory::pocketmine_command_ban_player_description(), KnownTranslationFactory::commands_ban_usage() ); diff --git a/src/command/defaults/BanIpCommand.php b/src/command/defaults/BanIpCommand.php index 3c8ceceaf..a23477e0d 100644 --- a/src/command/defaults/BanIpCommand.php +++ b/src/command/defaults/BanIpCommand.php @@ -36,9 +36,9 @@ use function inet_pton; class BanIpCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "ban-ip", KnownTranslationFactory::pocketmine_command_ban_ip_description(), KnownTranslationFactory::commands_banip_usage() ); diff --git a/src/command/defaults/BanListCommand.php b/src/command/defaults/BanListCommand.php index 606aef9a2..95c214969 100644 --- a/src/command/defaults/BanListCommand.php +++ b/src/command/defaults/BanListCommand.php @@ -37,9 +37,9 @@ use const SORT_STRING; class BanListCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "banlist", KnownTranslationFactory::pocketmine_command_banlist_description(), KnownTranslationFactory::commands_banlist_usage() ); diff --git a/src/command/defaults/ClearCommand.php b/src/command/defaults/ClearCommand.php index bb8b8d3c3..4e312b4e9 100644 --- a/src/command/defaults/ClearCommand.php +++ b/src/command/defaults/ClearCommand.php @@ -40,9 +40,9 @@ use function min; class ClearCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "clear", KnownTranslationFactory::pocketmine_command_clear_description(), KnownTranslationFactory::pocketmine_command_clear_usage() ); diff --git a/src/command/defaults/DefaultGamemodeCommand.php b/src/command/defaults/DefaultGamemodeCommand.php index 03eff2481..3860b9e34 100644 --- a/src/command/defaults/DefaultGamemodeCommand.php +++ b/src/command/defaults/DefaultGamemodeCommand.php @@ -32,9 +32,9 @@ use function count; class DefaultGamemodeCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "defaultgamemode", KnownTranslationFactory::pocketmine_command_defaultgamemode_description(), KnownTranslationFactory::commands_defaultgamemode_usage() ); diff --git a/src/command/defaults/DeopCommand.php b/src/command/defaults/DeopCommand.php index eb6cec268..4167012f7 100644 --- a/src/command/defaults/DeopCommand.php +++ b/src/command/defaults/DeopCommand.php @@ -35,9 +35,9 @@ use function count; class DeopCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "deop", KnownTranslationFactory::pocketmine_command_deop_description(), KnownTranslationFactory::commands_deop_usage() ); diff --git a/src/command/defaults/DifficultyCommand.php b/src/command/defaults/DifficultyCommand.php index 0bfc384e3..98eb3be3b 100644 --- a/src/command/defaults/DifficultyCommand.php +++ b/src/command/defaults/DifficultyCommand.php @@ -33,9 +33,9 @@ use function count; class DifficultyCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "difficulty", KnownTranslationFactory::pocketmine_command_difficulty_description(), KnownTranslationFactory::commands_difficulty_usage() ); diff --git a/src/command/defaults/DumpMemoryCommand.php b/src/command/defaults/DumpMemoryCommand.php index d118fb06e..d54ed88ee 100644 --- a/src/command/defaults/DumpMemoryCommand.php +++ b/src/command/defaults/DumpMemoryCommand.php @@ -30,11 +30,11 @@ use function date; class DumpMemoryCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "dumpmemory", "Dumps the memory", - "/$name [path]" + "/dumpmemory [path]" ); $this->setPermission(DefaultPermissionNames::COMMAND_DUMPMEMORY); } diff --git a/src/command/defaults/EffectCommand.php b/src/command/defaults/EffectCommand.php index 566861bd3..187fd4573 100644 --- a/src/command/defaults/EffectCommand.php +++ b/src/command/defaults/EffectCommand.php @@ -37,9 +37,9 @@ use function strtolower; class EffectCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "effect", KnownTranslationFactory::pocketmine_command_effect_description(), KnownTranslationFactory::commands_effect_usage() ); diff --git a/src/command/defaults/EnchantCommand.php b/src/command/defaults/EnchantCommand.php index e81473f78..26d7d9bec 100644 --- a/src/command/defaults/EnchantCommand.php +++ b/src/command/defaults/EnchantCommand.php @@ -34,9 +34,9 @@ use function implode; class EnchantCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "enchant", KnownTranslationFactory::pocketmine_command_enchant_description(), KnownTranslationFactory::commands_enchant_usage() ); diff --git a/src/command/defaults/GamemodeCommand.php b/src/command/defaults/GamemodeCommand.php index 2741101b6..8fe4e38e9 100644 --- a/src/command/defaults/GamemodeCommand.php +++ b/src/command/defaults/GamemodeCommand.php @@ -34,9 +34,9 @@ use function implode; class GamemodeCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "gamemode", KnownTranslationFactory::pocketmine_command_gamemode_description(), KnownTranslationFactory::commands_gamemode_usage() ); diff --git a/src/command/defaults/GarbageCollectorCommand.php b/src/command/defaults/GarbageCollectorCommand.php index 2aebf3b19..7bd64666f 100644 --- a/src/command/defaults/GarbageCollectorCommand.php +++ b/src/command/defaults/GarbageCollectorCommand.php @@ -34,9 +34,9 @@ use function round; class GarbageCollectorCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "gc", KnownTranslationFactory::pocketmine_command_gc_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_GC); diff --git a/src/command/defaults/GiveCommand.php b/src/command/defaults/GiveCommand.php index 535627895..424904492 100644 --- a/src/command/defaults/GiveCommand.php +++ b/src/command/defaults/GiveCommand.php @@ -41,9 +41,9 @@ use function implode; class GiveCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "give", KnownTranslationFactory::pocketmine_command_give_description(), KnownTranslationFactory::pocketmine_command_give_usage() ); diff --git a/src/command/defaults/HelpCommand.php b/src/command/defaults/HelpCommand.php index c38f1be96..487c915f2 100644 --- a/src/command/defaults/HelpCommand.php +++ b/src/command/defaults/HelpCommand.php @@ -44,9 +44,9 @@ use const SORT_NATURAL; class HelpCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "help", KnownTranslationFactory::pocketmine_command_help_description(), KnownTranslationFactory::commands_help_usage(), ["?"] diff --git a/src/command/defaults/KickCommand.php b/src/command/defaults/KickCommand.php index 1bb38d1b2..3d63e8bb3 100644 --- a/src/command/defaults/KickCommand.php +++ b/src/command/defaults/KickCommand.php @@ -37,9 +37,9 @@ use function trim; class KickCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "kick", KnownTranslationFactory::pocketmine_command_kick_description(), KnownTranslationFactory::commands_kick_usage() ); diff --git a/src/command/defaults/KillCommand.php b/src/command/defaults/KillCommand.php index 6ee9e5ac9..169905563 100644 --- a/src/command/defaults/KillCommand.php +++ b/src/command/defaults/KillCommand.php @@ -34,9 +34,9 @@ use function implode; class KillCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "kill", KnownTranslationFactory::pocketmine_command_kill_description(), KnownTranslationFactory::pocketmine_command_kill_usage(), ["suicide"] diff --git a/src/command/defaults/ListCommand.php b/src/command/defaults/ListCommand.php index d86416f3d..0264a2ef4 100644 --- a/src/command/defaults/ListCommand.php +++ b/src/command/defaults/ListCommand.php @@ -36,9 +36,9 @@ use const SORT_STRING; class ListCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "list", KnownTranslationFactory::pocketmine_command_list_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_LIST); diff --git a/src/command/defaults/MeCommand.php b/src/command/defaults/MeCommand.php index f7d3978a5..a6708840c 100644 --- a/src/command/defaults/MeCommand.php +++ b/src/command/defaults/MeCommand.php @@ -34,9 +34,9 @@ use function implode; class MeCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "me", KnownTranslationFactory::pocketmine_command_me_description(), KnownTranslationFactory::commands_me_usage() ); diff --git a/src/command/defaults/OpCommand.php b/src/command/defaults/OpCommand.php index 97b483c80..bcd119351 100644 --- a/src/command/defaults/OpCommand.php +++ b/src/command/defaults/OpCommand.php @@ -35,9 +35,9 @@ use function count; class OpCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "op", KnownTranslationFactory::pocketmine_command_op_description(), KnownTranslationFactory::commands_op_usage() ); diff --git a/src/command/defaults/PardonCommand.php b/src/command/defaults/PardonCommand.php index a545fb350..425b9e69f 100644 --- a/src/command/defaults/PardonCommand.php +++ b/src/command/defaults/PardonCommand.php @@ -32,9 +32,9 @@ use function count; class PardonCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "pardon", KnownTranslationFactory::pocketmine_command_unban_player_description(), KnownTranslationFactory::commands_unban_usage(), ["unban"] diff --git a/src/command/defaults/PardonIpCommand.php b/src/command/defaults/PardonIpCommand.php index a7adc237d..65bed221b 100644 --- a/src/command/defaults/PardonIpCommand.php +++ b/src/command/defaults/PardonIpCommand.php @@ -33,9 +33,9 @@ use function inet_pton; class PardonIpCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "pardon-ip", KnownTranslationFactory::pocketmine_command_unban_ip_description(), KnownTranslationFactory::commands_unbanip_usage(), ["unban-ip"] diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index 2c5d1c5d6..f20d47ccc 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -74,9 +74,9 @@ use function strtolower; class ParticleCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "particle", KnownTranslationFactory::pocketmine_command_particle_description(), KnownTranslationFactory::pocketmine_command_particle_usage() ); diff --git a/src/command/defaults/PluginsCommand.php b/src/command/defaults/PluginsCommand.php index ba7f602a4..d68fcbb01 100644 --- a/src/command/defaults/PluginsCommand.php +++ b/src/command/defaults/PluginsCommand.php @@ -36,9 +36,9 @@ use const SORT_STRING; class PluginsCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "plugins", KnownTranslationFactory::pocketmine_command_plugins_description(), null, ["pl"] diff --git a/src/command/defaults/SaveCommand.php b/src/command/defaults/SaveCommand.php index 0fefc573c..4e406e6a3 100644 --- a/src/command/defaults/SaveCommand.php +++ b/src/command/defaults/SaveCommand.php @@ -32,9 +32,9 @@ use function round; class SaveCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "save-all", KnownTranslationFactory::pocketmine_command_save_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_SAVE_PERFORM); diff --git a/src/command/defaults/SaveOffCommand.php b/src/command/defaults/SaveOffCommand.php index bb13623d7..73b8ca151 100644 --- a/src/command/defaults/SaveOffCommand.php +++ b/src/command/defaults/SaveOffCommand.php @@ -30,9 +30,9 @@ use pocketmine\permission\DefaultPermissionNames; class SaveOffCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "save-off", KnownTranslationFactory::pocketmine_command_saveoff_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_SAVE_DISABLE); diff --git a/src/command/defaults/SaveOnCommand.php b/src/command/defaults/SaveOnCommand.php index cb842db9e..f0a324aeb 100644 --- a/src/command/defaults/SaveOnCommand.php +++ b/src/command/defaults/SaveOnCommand.php @@ -30,9 +30,9 @@ use pocketmine\permission\DefaultPermissionNames; class SaveOnCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "save-on", KnownTranslationFactory::pocketmine_command_saveon_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_SAVE_ENABLE); diff --git a/src/command/defaults/SayCommand.php b/src/command/defaults/SayCommand.php index 8419d0de2..5c3203b5f 100644 --- a/src/command/defaults/SayCommand.php +++ b/src/command/defaults/SayCommand.php @@ -35,9 +35,9 @@ use function implode; class SayCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "say", KnownTranslationFactory::pocketmine_command_say_description(), KnownTranslationFactory::commands_say_usage() ); diff --git a/src/command/defaults/SeedCommand.php b/src/command/defaults/SeedCommand.php index af353f87a..6b426bd45 100644 --- a/src/command/defaults/SeedCommand.php +++ b/src/command/defaults/SeedCommand.php @@ -30,9 +30,9 @@ use pocketmine\player\Player; class SeedCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "seed", KnownTranslationFactory::pocketmine_command_seed_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_SEED); diff --git a/src/command/defaults/SetWorldSpawnCommand.php b/src/command/defaults/SetWorldSpawnCommand.php index 928afd86a..f251ab8a4 100644 --- a/src/command/defaults/SetWorldSpawnCommand.php +++ b/src/command/defaults/SetWorldSpawnCommand.php @@ -36,9 +36,9 @@ use function count; class SetWorldSpawnCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "setworldspawn", KnownTranslationFactory::pocketmine_command_setworldspawn_description(), KnownTranslationFactory::commands_setworldspawn_usage() ); diff --git a/src/command/defaults/SpawnpointCommand.php b/src/command/defaults/SpawnpointCommand.php index 445fea44f..e037a6829 100644 --- a/src/command/defaults/SpawnpointCommand.php +++ b/src/command/defaults/SpawnpointCommand.php @@ -37,9 +37,9 @@ use function round; class SpawnpointCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "spawnpoint", KnownTranslationFactory::pocketmine_command_spawnpoint_description(), KnownTranslationFactory::commands_spawnpoint_usage() ); diff --git a/src/command/defaults/StatusCommand.php b/src/command/defaults/StatusCommand.php index 15a603297..ea65a546f 100644 --- a/src/command/defaults/StatusCommand.php +++ b/src/command/defaults/StatusCommand.php @@ -36,9 +36,9 @@ use function round; class StatusCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "status", KnownTranslationFactory::pocketmine_command_status_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_STATUS); diff --git a/src/command/defaults/StopCommand.php b/src/command/defaults/StopCommand.php index 382f99ca0..bc4eef91c 100644 --- a/src/command/defaults/StopCommand.php +++ b/src/command/defaults/StopCommand.php @@ -30,9 +30,9 @@ use pocketmine\permission\DefaultPermissionNames; class StopCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "stop", KnownTranslationFactory::pocketmine_command_stop_description() ); $this->setPermission(DefaultPermissionNames::COMMAND_STOP); diff --git a/src/command/defaults/TeleportCommand.php b/src/command/defaults/TeleportCommand.php index 7493347e8..8ccfcec32 100644 --- a/src/command/defaults/TeleportCommand.php +++ b/src/command/defaults/TeleportCommand.php @@ -40,9 +40,9 @@ use function round; class TeleportCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "tp", KnownTranslationFactory::pocketmine_command_tp_description(), KnownTranslationFactory::commands_tp_usage(), ["teleport"] diff --git a/src/command/defaults/TellCommand.php b/src/command/defaults/TellCommand.php index 672e5b74b..713023382 100644 --- a/src/command/defaults/TellCommand.php +++ b/src/command/defaults/TellCommand.php @@ -36,9 +36,9 @@ use function implode; class TellCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "tell", KnownTranslationFactory::pocketmine_command_tell_description(), KnownTranslationFactory::commands_message_usage(), ["w", "msg"] diff --git a/src/command/defaults/TimeCommand.php b/src/command/defaults/TimeCommand.php index 33357e4df..325e178a8 100644 --- a/src/command/defaults/TimeCommand.php +++ b/src/command/defaults/TimeCommand.php @@ -35,9 +35,9 @@ use function implode; class TimeCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "time", KnownTranslationFactory::pocketmine_command_time_description(), KnownTranslationFactory::pocketmine_command_time_usage() ); diff --git a/src/command/defaults/TimingsCommand.php b/src/command/defaults/TimingsCommand.php index ae736b64f..00f0a057f 100644 --- a/src/command/defaults/TimingsCommand.php +++ b/src/command/defaults/TimingsCommand.php @@ -57,9 +57,9 @@ use const PHP_EOL; class TimingsCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "timings", KnownTranslationFactory::pocketmine_command_timings_description(), KnownTranslationFactory::pocketmine_command_timings_usage() ); diff --git a/src/command/defaults/TitleCommand.php b/src/command/defaults/TitleCommand.php index dfe24dc7b..e3bc247d7 100644 --- a/src/command/defaults/TitleCommand.php +++ b/src/command/defaults/TitleCommand.php @@ -33,9 +33,9 @@ use function implode; class TitleCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "title", KnownTranslationFactory::pocketmine_command_title_description(), KnownTranslationFactory::commands_title_usage() ); diff --git a/src/command/defaults/TransferServerCommand.php b/src/command/defaults/TransferServerCommand.php index 532f0e18c..d0cbd316a 100644 --- a/src/command/defaults/TransferServerCommand.php +++ b/src/command/defaults/TransferServerCommand.php @@ -32,9 +32,9 @@ use function count; class TransferServerCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "transferserver", KnownTranslationFactory::pocketmine_command_transferserver_description(), KnownTranslationFactory::pocketmine_command_transferserver_usage() ); diff --git a/src/command/defaults/VersionCommand.php b/src/command/defaults/VersionCommand.php index 20aa9b0e9..bafb129d1 100644 --- a/src/command/defaults/VersionCommand.php +++ b/src/command/defaults/VersionCommand.php @@ -40,9 +40,9 @@ use const PHP_VERSION; class VersionCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "version", KnownTranslationFactory::pocketmine_command_version_description(), KnownTranslationFactory::pocketmine_command_version_usage(), ["ver", "about"] diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index a69334c4a..cbf72902d 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -38,9 +38,9 @@ use const SORT_STRING; class WhitelistCommand extends VanillaCommand{ - public function __construct(string $name){ + public function __construct(){ parent::__construct( - $name, + "whitelist", KnownTranslationFactory::pocketmine_command_whitelist_description(), KnownTranslationFactory::commands_whitelist_usage() ); From ca1f1bf09fb646088d47f5cd819f8095e9255d3e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 Jan 2023 21:52:44 +0000 Subject: [PATCH 477/692] Fixed glowing item frames due to technical limitations, this requires separating them back into two different block types. However, this isn't too egregious since it's just one flag, and actually simplifies some code. closes #5478 --- src/block/BlockTypeIds.php | 1 + src/block/ItemFrame.php | 16 ---------- src/block/VanillaBlocks.php | 8 ++++- src/block/tile/GlowingItemFrame.php | 32 +++++++++++++++++++ src/block/tile/TileFactory.php | 1 + .../convert/BlockObjectToStateSerializer.php | 8 ++--- .../convert/BlockStateDeserializerHelper.php | 8 ++--- .../convert/BlockStateSerializerHelper.php | 9 ++++++ .../BlockStateToObjectDeserializer.php | 4 +-- .../ItemSerializerDeserializerRegistrar.php | 17 ++-------- src/item/StringToItemParser.php | 13 ++++---- .../block_factory_consistency_check.json | 2 +- 12 files changed, 67 insertions(+), 52 deletions(-) create mode 100644 src/block/tile/GlowingItemFrame.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index c63b22432..d8d306458 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -708,6 +708,7 @@ final class BlockTypeIds{ public const WEEPING_VINES = 10681; public const CHAIN = 10682; public const SCULK = 10683; + public const GLOWING_ITEM_FRAME = 10684; public const FIRST_UNUSED_BLOCK_ID = 10684; diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 68510cf27..6d92d3334 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -44,20 +44,12 @@ class ItemFrame extends Flowable{ public const ROTATIONS = 8; - protected bool $glowing = false; - protected bool $hasMap = false; //makes frame appear large if set protected ?Item $framedItem = null; protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - public function getRequiredTypeDataBits() : int{ return 1; } - - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ - $w->bool($this->glowing); - } - public function getRequiredStateDataBits() : int{ return 4; } protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ @@ -141,14 +133,6 @@ class ItemFrame extends Flowable{ return $this; } - public function isGlowing() : bool{ return $this->glowing; } - - /** @return $this */ - public function setGlowing(bool $glowing) : self{ - $this->glowing = $glowing; - return $this; - } - public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($this->framedItem !== null){ $this->itemRotation = ($this->itemRotation + 1) % self::ROTATIONS; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index d14d288a5..1e1f7829c 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -43,6 +43,7 @@ use pocketmine\block\tile\DaylightSensor as TileDaylightSensor; use pocketmine\block\tile\EnchantTable as TileEnchantingTable; use pocketmine\block\tile\EnderChest as TileEnderChest; use pocketmine\block\tile\FlowerPot as TileFlowerPot; +use pocketmine\block\tile\GlowingItemFrame as TileGlowingItemFrame; use pocketmine\block\tile\Hopper as TileHopper; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\tile\Jukebox as TileJukebox; @@ -409,6 +410,7 @@ use function mb_strtolower; * @method static Glass GLASS() * @method static GlassPane GLASS_PANE() * @method static GlazedTerracotta GLAZED_TERRACOTTA() + * @method static ItemFrame GLOWING_ITEM_FRAME() * @method static GlowingObsidian GLOWING_OBSIDIAN() * @method static Glowstone GLOWSTONE() * @method static Opaque GOLD() @@ -886,7 +888,11 @@ final class VanillaBlocks{ $ironDoorBreakInfo = new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD(), 25.0)); self::register("iron_door", new Door(new BID(Ids::IRON_DOOR), "Iron Door", $ironDoorBreakInfo)); self::register("iron_trapdoor", new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", $ironDoorBreakInfo)); - self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", new Info(new BreakInfo(0.25)))); + + $itemFrameInfo = new Info(new BreakInfo(0.25)); + self::register("item_frame", new ItemFrame(new BID(Ids::ITEM_FRAME, TileItemFrame::class), "Item Frame", $itemFrameInfo)); + self::register("glowing_item_frame", new ItemFrame(new BID(Ids::GLOWING_ITEM_FRAME, TileGlowingItemFrame::class), "Glow Item Frame", $itemFrameInfo)); + self::register("jukebox", new Jukebox(new BID(Ids::JUKEBOX, TileJukebox::class), "Jukebox", new Info(BreakInfo::axe(0.8)))); //TODO: in PC the hardness is 2.0, not 0.8, unsure if this is a MCPE bug or not self::register("ladder", new Ladder(new BID(Ids::LADDER), "Ladder", new Info(BreakInfo::axe(0.4)))); diff --git a/src/block/tile/GlowingItemFrame.php b/src/block/tile/GlowingItemFrame.php new file mode 100644 index 000000000..c388241b8 --- /dev/null +++ b/src/block/tile/GlowingItemFrame.php @@ -0,0 +1,32 @@ +register(Smoker::class, ["Smoker", "minecraft:smoker"]); $this->register(SporeBlossom::class, ["SporeBlossom", "minecraft:spore_blossom"]); $this->register(Skull::class, ["Skull", "minecraft:skull"]); + $this->register(GlowingItemFrame::class, ["GlowItemFrame"]); //TODO: Campfire //TODO: ChalkboardBlock diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index c6dfa294e..80519c609 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -990,6 +990,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }) ->writeHorizontalFacing($block->getFacing()); }); + $this->map(Blocks::GLOWING_ITEM_FRAME(), fn(ItemFrame $block) => Helper::encodeItemFrame($block, Ids::GLOW_FRAME)); $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); $this->mapStairs(Blocks::GRANITE_STAIRS(), Ids::GRANITE_STAIRS); @@ -1019,12 +1020,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ ->writeString(StateNames::MONSTER_EGG_STONE_TYPE, StringValues::MONSTER_EGG_STONE_TYPE_STONE_BRICK)); $this->map(Blocks::IRON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::IRON_DOOR))); $this->map(Blocks::IRON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::IRON_TRAPDOOR))); - $this->map(Blocks::ITEM_FRAME(), function(ItemFrame $block) : Writer{ - return Writer::create($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME) - ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) - ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) - ->writeFacingDirection($block->getFacing()); - }); + $this->map(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => Helper::encodeItemFrame($block, Ids::FRAME)); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); $this->map(Blocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); $this->map(Blocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index b2809d93f..e7bd14dfd 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -49,7 +49,6 @@ use pocketmine\block\Trapdoor; use pocketmine\block\utils\CopperOxidation; use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; -use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; use pocketmine\block\WallSign; @@ -172,12 +171,11 @@ final class BlockStateDeserializerHelper{ ->setFacing($in->readHorizontalFacing()); } - public static function decodeItemFrame(BlockStateReader $in, bool $glowing) : ItemFrame{ + public static function decodeItemFrame(ItemFrame $block, BlockStateReader $in) : ItemFrame{ $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is - return Blocks::ITEM_FRAME() + return $block ->setFacing($in->readFacingDirection()) - ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)) - ->setGlowing($glowing); + ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); } /** @throws BlockStateDeserializeException */ diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index c87b64788..312e726fc 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -32,6 +32,7 @@ use pocketmine\block\DoublePlant; use pocketmine\block\FenceGate; use pocketmine\block\FloorSign; use pocketmine\block\Furnace; +use pocketmine\block\ItemFrame; use pocketmine\block\Leaves; use pocketmine\block\Liquid; use pocketmine\block\RedMushroomBlock; @@ -50,6 +51,7 @@ use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\bedrock\block\BlockStateNames as StateNames; use pocketmine\data\bedrock\block\BlockTypeNames as Ids; +use pocketmine\data\bedrock\block\convert\BlockStateWriter as Writer; use pocketmine\data\bedrock\MushroomBlockTypeIdMap; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; @@ -138,6 +140,13 @@ final class BlockStateSerializerHelper{ ->writeHorizontalFacing($block->getFacing()); } + public static function encodeItemFrame(ItemFrame $block, string $id) : BlockStateWriter{ + return Writer::create($id) + ->writeBool(StateNames::ITEM_FRAME_MAP_BIT, $block->hasMap()) + ->writeBool(StateNames::ITEM_FRAME_PHOTO_BIT, false) + ->writeFacingDirection($block->getFacing()); + } + private static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeBool(BlockStateNames::PERSISTENT_BIT, $block->isNoDecay()) diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index fdae56e31..bca2cb390 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -731,7 +731,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ }); $this->map(Ids::FLOWING_LAVA, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::LAVA(), $in)); $this->map(Ids::FLOWING_WATER, fn(Reader $in) => Helper::decodeFlowingLiquid(Blocks::WATER(), $in)); - $this->map(Ids::FRAME, fn(Reader $in) => Helper::decodeItemFrame($in, false)); + $this->map(Ids::FRAME, fn(Reader $in) => Helper::decodeItemFrame(Blocks::ITEM_FRAME(), $in)); $this->map(Ids::FROSTED_ICE, function(Reader $in) : Block{ return Blocks::FROSTED_ICE() ->setAge($in->readBoundedInt(StateNames::AGE, 0, 3)); @@ -741,7 +741,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::GLOW_FRAME, fn(Reader $in) => Helper::decodeItemFrame($in, true)); + $this->map(Ids::GLOW_FRAME, fn(Reader $in) => Helper::decodeItemFrame(Blocks::GLOWING_ITEM_FRAME(), $in)); $this->map(Ids::GOLDEN_RAIL, function(Reader $in) : Block{ return Blocks::POWERED_RAIL() ->setPowered($in->readBool(StateNames::RAIL_DATA_BIT)) diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index d80bb3840..aafac3b60 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -25,7 +25,6 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Bed; use pocketmine\block\Block; -use pocketmine\block\ItemFrame; use pocketmine\block\Skull; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SkullType; @@ -57,7 +56,6 @@ final class ItemSerializerDeserializerRegistrar{ $this->register1to1BlockWithMetaMappings(); $this->register1to1ItemWithMetaMappings(); $this->register1ToNItemMappings(); - $this->registerMiscBlockMappings(); $this->registerMiscItemMappings(); } @@ -141,6 +139,8 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Block(Ids::CRIMSON_DOOR, Blocks::CRIMSON_DOOR()); $this->map1to1Block(Ids::DARK_OAK_DOOR, Blocks::DARK_OAK_DOOR()); $this->map1to1Block(Ids::FLOWER_POT, Blocks::FLOWER_POT()); + $this->map1to1Block(Ids::FRAME, Blocks::ITEM_FRAME()); + $this->map1to1Block(Ids::GLOW_FRAME, Blocks::GLOWING_ITEM_FRAME()); $this->map1to1Block(Ids::HOPPER, Blocks::HOPPER()); $this->map1to1Block(Ids::IRON_DOOR, Blocks::IRON_DOOR()); $this->map1to1Block(Ids::JUNGLE_DOOR, Blocks::JUNGLE_DOOR()); @@ -502,19 +502,6 @@ final class ItemSerializerDeserializerRegistrar{ ); } - /** - * Registers serializers and deserializers for blocks that don't fit any other pattern. - * Ideally we want to get rid of this completely, if possible. - * - * Most of these are single PocketMine-MP items which map to multiple IDs depending on their properties, which is - * complex to implement in a generic way. - */ - private function registerMiscBlockMappings() : void{ - $this->deserializer?->mapBlock(Ids::FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(false)); - $this->deserializer?->mapBlock(Ids::GLOW_FRAME, fn() => Blocks::ITEM_FRAME()->setGlowing(true)); - $this->serializer?->mapBlock(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => new Data($block->isGlowing() ? Ids::GLOW_FRAME : Ids::FRAME)); - } - /** * Registers serializers and deserializers for items that don't fit any other pattern. * Ideally we want to get rid of this completely, if possible. diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index e6afaab5c..8a66e3a07 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -627,8 +627,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("flower_pot_block", fn() => Blocks::FLOWER_POT()); $result->registerBlock("flowing_lava", fn() => Blocks::LAVA()); $result->registerBlock("flowing_water", fn() => Blocks::WATER()); - $result->registerBlock("frame", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); - $result->registerBlock("frame_block", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $result->registerBlock("frame", fn() => Blocks::ITEM_FRAME()); + $result->registerBlock("frame_block", fn() => Blocks::ITEM_FRAME()); $result->registerBlock("frosted_ice", fn() => Blocks::FROSTED_ICE()); $result->registerBlock("furnace", fn() => Blocks::FURNACE()); $result->registerBlock("gilded_blackstone", fn() => Blocks::GILDED_BLACKSTONE()); @@ -636,8 +636,9 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("glass_pane", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glass_panel", fn() => Blocks::GLASS_PANE()); $result->registerBlock("glazed_terracotta", fn() => Blocks::GLAZED_TERRACOTTA()); - $result->registerBlock("glow_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(true)); - $result->registerBlock("glow_item_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(true)); + $result->registerBlock("glow_frame", fn() => Blocks::GLOWING_ITEM_FRAME()); + $result->registerBlock("glow_item_frame", fn() => Blocks::GLOWING_ITEM_FRAME()); + $result->registerBlock("glowing_item_frame", fn() => Blocks::GLOWING_ITEM_FRAME()); $result->registerBlock("glowing_obsidian", fn() => Blocks::GLOWING_OBSIDIAN()); $result->registerBlock("glowing_redstone_ore", fn() => Blocks::REDSTONE_ORE()->setLit(true)); $result->registerBlock("glowingobsidian", fn() => Blocks::GLOWING_OBSIDIAN()); @@ -693,8 +694,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("iron_ore", fn() => Blocks::IRON_ORE()); $result->registerBlock("iron_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY()); $result->registerBlock("iron_trapdoor", fn() => Blocks::IRON_TRAPDOOR()); - $result->registerBlock("item_frame", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); - $result->registerBlock("item_frame_block", fn() => Blocks::ITEM_FRAME()->setGlowing(false)); + $result->registerBlock("item_frame", fn() => Blocks::ITEM_FRAME()); + $result->registerBlock("item_frame_block", fn() => Blocks::ITEM_FRAME()); $result->registerBlock("jack_o_lantern", fn() => Blocks::LIT_PUMPKIN()); $result->registerBlock("jukebox", fn() => Blocks::JUKEBOX()); $result->registerBlock("jungle_button", fn() => Blocks::JUNGLE_BUTTON()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index db27a8528..f68366a3a 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277702,5277703,5277704,5277705,5277706,5277707,5277712,5277713,5277714,5277715,5277716,5277717,5277718,5277719,5277720,5277721,5277722,5277723],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From c671d8a80b0cf496b09f02cd963432fc6c773012 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 Jan 2023 21:57:35 +0000 Subject: [PATCH 478/692] ItemFrame: fixed support conditions --- src/block/ItemFrame.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 6d92d3334..8828a8097 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\utils\AnyFacingTrait; +use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\item\Item; @@ -165,14 +166,18 @@ class ItemFrame extends Flowable{ return true; } + private function canBeSupportedBy(Block $block, int $face) : bool{ + return !$block->getSupportType($face)->equals(SupportType::NONE()); + } + public function onNearbyBlockChange() : void{ - if(!$this->getSide(Facing::opposite($this->facing))->isSolid()){ + if(!$this->canBeSupportedBy($this->getSide(Facing::opposite($this->facing)), $this->facing)){ $this->position->getWorld()->useBreakOn($this->position); } } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if(!$blockClicked->isSolid()){ + if(!$this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face)){ return false; } From 6dd006e7303ce74264bddd0bf992e228234b0107 Mon Sep 17 00:00:00 2001 From: Dylan T Date: Fri, 13 Jan 2023 01:31:24 +0000 Subject: [PATCH 479/692] Update BlockTypeIds.php --- src/block/BlockTypeIds.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index d8d306458..66fda9411 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -710,7 +710,7 @@ final class BlockTypeIds{ public const SCULK = 10683; public const GLOWING_ITEM_FRAME = 10684; - public const FIRST_UNUSED_BLOCK_ID = 10684; + public const FIRST_UNUSED_BLOCK_ID = 10685; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; From b76265cd37f1ca5f730ec8b51259fe666c2f7687 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 Jan 2023 17:20:08 +0000 Subject: [PATCH 480/692] PlayerChatEvent: introduce new formatting API this API is simultaneously more powerful and cleaner than the previous system. The previous system relied on undocumented behaviour and was limited to non-localizable strings. This enables custom servers to implement their own chat formats (e.g. containing localizable tags) which will be displayed in each player's own language (once per-player language has been properly implemented, anyway). --- src/event/player/PlayerChatEvent.php | 12 +++---- src/player/Player.php | 5 +-- src/player/chat/ChatFormatter.php | 38 ++++++++++++++++++++ src/player/chat/LegacyRawChatFormatter.php | 41 ++++++++++++++++++++++ src/player/chat/StandardChatFormatter.php | 37 +++++++++++++++++++ 5 files changed, 125 insertions(+), 8 deletions(-) create mode 100644 src/player/chat/ChatFormatter.php create mode 100644 src/player/chat/LegacyRawChatFormatter.php create mode 100644 src/player/chat/StandardChatFormatter.php diff --git a/src/event/player/PlayerChatEvent.php b/src/event/player/PlayerChatEvent.php index 6f2732142..1cdbb49fb 100644 --- a/src/event/player/PlayerChatEvent.php +++ b/src/event/player/PlayerChatEvent.php @@ -26,7 +26,7 @@ namespace pocketmine\event\player; use pocketmine\command\CommandSender; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; -use pocketmine\lang\KnownTranslationKeys; +use pocketmine\player\chat\ChatFormatter; use pocketmine\player\Player; use pocketmine\utils\Utils; @@ -43,7 +43,7 @@ class PlayerChatEvent extends PlayerEvent implements Cancellable{ Player $player, protected string $message, protected array $recipients, - protected string $format = KnownTranslationKeys::CHAT_TYPE_TEXT + protected ChatFormatter $formatter ){ $this->player = $player; } @@ -63,12 +63,12 @@ class PlayerChatEvent extends PlayerEvent implements Cancellable{ $this->player = $player; } - public function getFormat() : string{ - return $this->format; + public function getFormatter() : ChatFormatter{ + return $this->formatter; } - public function setFormat(string $format) : void{ - $this->format = $format; + public function setFormatter(ChatFormatter $formatter) : void{ + $this->formatter = $formatter; } /** diff --git a/src/player/Player.php b/src/player/Player.php index 4281df2b8..523e5c81f 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -114,6 +114,7 @@ use pocketmine\permission\DefaultPermissionNames; use pocketmine\permission\DefaultPermissions; use pocketmine\permission\PermissibleBase; use pocketmine\permission\PermissibleDelegateTrait; +use pocketmine\player\chat\StandardChatFormatter; use pocketmine\Server; use pocketmine\timings\Timings; use pocketmine\utils\AssumptionFailedError; @@ -1445,10 +1446,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->server->dispatchCommand($this, substr($messagePart, 1)); Timings::$playerCommand->stopTiming(); }else{ - $ev = new PlayerChatEvent($this, $messagePart, $this->server->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_USERS)); + $ev = new PlayerChatEvent($this, $messagePart, $this->server->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_USERS), new StandardChatFormatter()); $ev->call(); if(!$ev->isCancelled()){ - $this->server->broadcastMessage($this->getServer()->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients()); + $this->server->broadcastMessage($ev->getFormatter()->format($ev->getPlayer()->getDisplayName(), $ev->getMessage()), $ev->getRecipients()); } } } diff --git a/src/player/chat/ChatFormatter.php b/src/player/chat/ChatFormatter.php new file mode 100644 index 000000000..5e85985ec --- /dev/null +++ b/src/player/chat/ChatFormatter.php @@ -0,0 +1,38 @@ +format); + } +} diff --git a/src/player/chat/StandardChatFormatter.php b/src/player/chat/StandardChatFormatter.php new file mode 100644 index 000000000..e077b9b47 --- /dev/null +++ b/src/player/chat/StandardChatFormatter.php @@ -0,0 +1,37 @@ + Date: Fri, 13 Jan 2023 17:48:56 +0000 Subject: [PATCH 481/692] Properly localize jukebox popups --- src/block/Jukebox.php | 4 +-- src/network/mcpe/NetworkSession.php | 33 +++++++++++++------ .../mcpe/handler/DeathPacketHandler.php | 4 +-- src/player/Player.php | 7 ++-- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/block/Jukebox.php b/src/block/Jukebox.php index 257425668..20c3cab61 100644 --- a/src/block/Jukebox.php +++ b/src/block/Jukebox.php @@ -26,7 +26,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Jukebox as JukeboxTile; use pocketmine\item\Item; use pocketmine\item\Record; -use pocketmine\lang\KnownTranslationKeys; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\sound\RecordSound; @@ -45,7 +45,7 @@ class Jukebox extends Opaque{ if($this->record !== null){ $this->ejectRecord(); }elseif($item instanceof Record){ - $player->sendJukeboxPopup(KnownTranslationKeys::RECORD_NOWPLAYING, [$player->getLanguage()->translate($item->getRecordType()->getTranslatableName())]); + $player->sendJukeboxPopup(KnownTranslationFactory::record_nowPlaying($item->getRecordType()->getTranslatableName())); $this->insertRecord($item->pop()); } } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 93e06e524..f16a75d97 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -991,26 +991,39 @@ class NetworkSession{ $this->sendDataPacket(AvailableCommandsPacket::create($commandData, [], [], [])); } + /** + * @return string[][] + * @phpstan-return array{string, string[]} + */ + public function prepareClientTranslatableMessage(Translatable $message) : array{ + //we can't send nested translations to the client, so make sure they are always pre-translated by the server + $language = $this->player->getLanguage(); + $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $message->getParameters()); + return [$language->translateString($message->getText(), $parameters, "pocketmine."), $parameters]; + } + public function onChatMessage(Translatable|string $message) : void{ if($message instanceof Translatable){ - $language = $this->player->getLanguage(); if(!$this->server->isLanguageForced()){ - //we can't send nested translations to the client, so make sure they are always pre-translated by the server - $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $message->getParameters()); - $this->sendDataPacket(TextPacket::translation($language->translateString($message->getText(), $parameters, "pocketmine."), $parameters)); + $this->sendDataPacket(TextPacket::translation(...$this->prepareClientTranslatableMessage($message))); }else{ - $this->sendDataPacket(TextPacket::raw($language->translate($message))); + $this->sendDataPacket(TextPacket::raw($this->player->getLanguage()->translate($message))); } }else{ $this->sendDataPacket(TextPacket::raw($message)); } } - /** - * @param string[] $parameters - */ - public function onJukeboxPopup(string $key, array $parameters) : void{ - $this->sendDataPacket(TextPacket::jukeboxPopup($key, $parameters)); + public function onJukeboxPopup(Translatable|string $message) : void{ + $parameters = []; + if($message instanceof Translatable){ + if(!$this->server->isLanguageForced()){ + [$message, $parameters] = $this->prepareClientTranslatableMessage($message); + }else{ + $message = $this->player->getLanguage()->translate($message); + } + } + $this->sendDataPacket(TextPacket::jukeboxPopup($message, $parameters)); } public function onPopup(string $message) : void{ diff --git a/src/network/mcpe/handler/DeathPacketHandler.php b/src/network/mcpe/handler/DeathPacketHandler.php index 6347d8f65..c0c6e45ba 100644 --- a/src/network/mcpe/handler/DeathPacketHandler.php +++ b/src/network/mcpe/handler/DeathPacketHandler.php @@ -54,9 +54,7 @@ class DeathPacketHandler extends PacketHandler{ if($this->deathMessage instanceof Translatable){ $language = $this->player->getLanguage(); if(!$this->player->getServer()->isLanguageForced()){ - //we can't send nested translations to the client, so make sure they are always pre-translated by the server - $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $this->deathMessage->getParameters()); - $message = $language->translateString($this->deathMessage->getText(), $parameters, "pocketmine."); + [$message, $parameters] = $this->session->prepareClientTranslatableMessage($this->deathMessage); }else{ $message = $language->translate($this->deathMessage); } diff --git a/src/player/Player.php b/src/player/Player.php index 523e5c81f..0478080cf 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2014,11 +2014,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->getNetworkSession()->onChatMessage($message); } - /** - * @param string[] $args - */ - public function sendJukeboxPopup(string $key, array $args) : void{ - $this->getNetworkSession()->onJukeboxPopup($key, $args); + public function sendJukeboxPopup(Translatable|string $message) : void{ + $this->getNetworkSession()->onJukeboxPopup($message); } /** From 950eddf405482be0b779ac6b16d10016d9b4e4aa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 Jan 2023 17:57:41 +0000 Subject: [PATCH 482/692] Fix build --- src/network/mcpe/handler/DeathPacketHandler.php | 1 - tests/phpstan/configs/actual-problems.neon | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/network/mcpe/handler/DeathPacketHandler.php b/src/network/mcpe/handler/DeathPacketHandler.php index c0c6e45ba..9ed1a72f2 100644 --- a/src/network/mcpe/handler/DeathPacketHandler.php +++ b/src/network/mcpe/handler/DeathPacketHandler.php @@ -32,7 +32,6 @@ use pocketmine\network\mcpe\protocol\PlayerActionPacket; use pocketmine\network\mcpe\protocol\RespawnPacket; use pocketmine\network\mcpe\protocol\types\PlayerAction; use pocketmine\player\Player; -use function array_map; class DeathPacketHandler extends PacketHandler{ public function __construct( diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 44e3c0fcf..6698add08 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -617,7 +617,7 @@ parameters: - message: "#^Cannot call method getLanguage\\(\\) on pocketmine\\\\player\\\\Player\\|null\\.$#" - count: 2 + count: 4 path: ../../../src/network/mcpe/NetworkSession.php - From c55e23a2c6712fa141b59447be31694fe3e91607 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 14 Jan 2023 20:59:27 +0000 Subject: [PATCH 483/692] Localized disconnect message for spawn selection failure --- composer.json | 2 +- composer.lock | 14 +++++++------- src/Server.php | 2 +- src/lang/KnownTranslationFactory.php | 4 ++++ src/lang/KnownTranslationKeys.php | 1 + src/player/Player.php | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 9439370dd..e0a62356d 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,7 @@ "pocketmine/classloader": "^0.2.0", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", - "pocketmine/locale-data": "~2.17.0", + "pocketmine/locale-data": "~2.18.0", "pocketmine/log": "^0.4.0", "pocketmine/log-pthreads": "^0.4.0", "pocketmine/math": "^0.4.0", diff --git a/composer.lock b/composer.lock index 79036c66d..dbb111bd2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5c869a38ea239fff76262c1648cef623", + "content-hash": "032bb0034871b16cbce5767efe6f69e4", "packages": [ { "name": "adhocore/json-comment", @@ -591,16 +591,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.17.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "a2c7071117c98ccc0e333994271cab1072eb3c06" + "reference": "0f50afc3d0fec29f769a62e93c71f8a0fb968f76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/a2c7071117c98ccc0e333994271cab1072eb3c06", - "reference": "a2c7071117c98ccc0e333994271cab1072eb3c06", + "url": "https://api.github.com/repos/pmmp/Language/zipball/0f50afc3d0fec29f769a62e93c71f8a0fb968f76", + "reference": "0f50afc3d0fec29f769a62e93c71f8a0fb968f76", "shasum": "" }, "type": "library", @@ -608,9 +608,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.17.0" + "source": "https://github.com/pmmp/Language/tree/2.18.0" }, - "time": "2023-01-13T17:22:45+00:00" + "time": "2023-01-14T17:52:46+00:00" }, { "name": "pocketmine/log", diff --git a/src/Server.php b/src/Server.php index 0422324f7..c8939ecda 100644 --- a/src/Server.php +++ b/src/Server.php @@ -580,7 +580,7 @@ class Server{ }, function() use ($playerPromiseResolver, $session) : void{ if($session->isConnected()){ - $session->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_internal()); + $session->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_respawn()); } $playerPromiseResolver->reject(); } diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index c114ae5de..07a8b17b4 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1629,6 +1629,10 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT, []); } + public static function pocketmine_disconnect_error_respawn() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_RESPAWN, []); + } + public static function pocketmine_disconnect_incompatibleProtocol(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 0dd623f60..3221ecbdc 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -354,6 +354,7 @@ final class KnownTranslationKeys{ public const POCKETMINE_DISCONNECT_ERROR_BADPACKET = "pocketmine.disconnect.error.badPacket"; public const POCKETMINE_DISCONNECT_ERROR_INTERNAL = "pocketmine.disconnect.error.internal"; public const POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT = "pocketmine.disconnect.error.loginTimeout"; + public const POCKETMINE_DISCONNECT_ERROR_RESPAWN = "pocketmine.disconnect.error.respawn"; public const POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL = "pocketmine.disconnect.incompatibleProtocol"; public const POCKETMINE_DISCONNECT_INVALIDSESSION = "pocketmine.disconnect.invalidSession"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE = "pocketmine.disconnect.invalidSession.badSignature"; diff --git a/src/player/Player.php b/src/player/Player.php index e9b1977e7..5bf99b3bb 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2349,7 +2349,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ }, function() : void{ if($this->isConnected()){ - $this->disconnect("Unable to find a respawn position"); + $this->getNetworkSession()->disconnectWithError(KnownTranslationFactory::pocketmine_disconnect_error_respawn()); } } ); From 7abfc465674cdfa37c6718e791da8eb12d0d56b9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 17 Jan 2023 21:41:30 +0000 Subject: [PATCH 484/692] First look at 3D biome support --- .../mcpe/serializer/ChunkSerializer.php | 70 +++---- src/world/World.php | 12 +- src/world/format/BiomeArray.php | 72 ------- src/world/format/Chunk.php | 24 +-- src/world/format/SubChunk.php | 5 + src/world/format/io/ChunkUtils.php | 22 +++ src/world/format/io/FastChunkSerializer.php | 51 ++--- src/world/format/io/leveldb/LevelDB.php | 181 +++++++++++++++--- src/world/format/io/region/Anvil.php | 5 +- .../io/region/LegacyAnvilChunkTrait.php | 43 +++-- src/world/format/io/region/McRegion.php | 38 ++-- src/world/format/io/region/PMAnvil.php | 5 +- src/world/generator/Flat.php | 3 +- src/world/generator/PopulationTask.php | 4 +- src/world/generator/hell/Nether.php | 7 +- src/world/generator/normal/Normal.php | 6 +- src/world/generator/populator/GroundCover.php | 2 +- tests/phpunit/world/format/ChunkTest.php | 9 +- tests/phpunit/world/format/SubChunkTest.php | 3 +- 19 files changed, 319 insertions(+), 243 deletions(-) delete mode 100644 src/world/format/BiomeArray.php diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index e628652df..772587855 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -36,9 +36,7 @@ use pocketmine\utils\BinaryStream; use pocketmine\world\format\Chunk; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; -use function chr; use function count; -use function str_repeat; final class ChunkSerializer{ private function __construct(){ @@ -64,13 +62,16 @@ final class ChunkSerializer{ $stream = PacketSerializer::encoder($encoderContext); $subChunkCount = self::getSubChunkCount($chunk); - for($y = Chunk::MIN_SUBCHUNK_INDEX, $writtenCount = 0; $writtenCount < $subChunkCount; ++$y, ++$writtenCount){ + $writtenCount = 0; + for($y = Chunk::MIN_SUBCHUNK_INDEX; $writtenCount < $subChunkCount; ++$y, ++$writtenCount){ self::serializeSubChunk($chunk->getSubChunk($y), $blockMapper, $stream, false); } - //TODO: right now we don't support 3D natively, so we just 3Dify our 2D biomes so they fill the column - $encodedBiomePalette = self::serializeBiomesAsPalette($chunk); - $stream->put(str_repeat($encodedBiomePalette, 24)); + $biomeIdMap = LegacyBiomeIdToStringIdMap::getInstance(); + //all biomes must always be written :( + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ + self::serializeBiomePalette($chunk->getSubChunk($y)->getBiomeArray(), $biomeIdMap, $stream); + } $stream->putByte(0); //border block array count //Border block entry format: 1 byte (4 bits X, 4 bits Z). These are however useless since they crash the regular client. @@ -123,6 +124,28 @@ final class ChunkSerializer{ } } + private static function serializeBiomePalette(PalettedBlockArray $biomePalette, LegacyBiomeIdToStringIdMap $biomeIdMap, PacketSerializer $stream) : void{ + $biomePaletteBitsPerBlock = $biomePalette->getBitsPerBlock(); + $stream->putByte(($biomePaletteBitsPerBlock << 1) | 1); //the last bit is non-persistence (like for blocks), though it has no effect on biomes since they always use integer IDs + $stream->put($biomePalette->getWordArray()); + + //these LSHIFT by 1 uvarints are optimizations: the client expects zigzag varints here + //but since we know they are always unsigned, we can avoid the extra fcall overhead of + //zigzag and just shift directly. + $biomePaletteArray = $biomePalette->getPalette(); + if($biomePaletteBitsPerBlock !== 0){ + $stream->putUnsignedVarInt(count($biomePaletteArray) << 1); + } + + foreach($biomePaletteArray as $p){ + if($biomeIdMap->legacyToString($p) === null){ + //make sure we aren't sending bogus biomes - the 1.18.0 client crashes if we do this + $p = BiomeIds::OCEAN; + } + $stream->put(Binary::writeUnsignedVarInt($p << 1)); + } + } + public static function serializeTiles(Chunk $chunk) : string{ $stream = new BinaryStream(); foreach($chunk->getTiles() as $tile){ @@ -133,39 +156,4 @@ final class ChunkSerializer{ return $stream->getBuffer(); } - - private static function serializeBiomesAsPalette(Chunk $chunk) : string{ - $biomeIdMap = LegacyBiomeIdToStringIdMap::getInstance(); - $biomePalette = new PalettedBlockArray($chunk->getBiomeId(0, 0)); - for($x = 0; $x < 16; ++$x){ - for($z = 0; $z < 16; ++$z){ - $biomeId = $chunk->getBiomeId($x, $z); - if($biomeIdMap->legacyToString($biomeId) === null){ - //make sure we aren't sending bogus biomes - the 1.18.0 client crashes if we do this - $biomeId = BiomeIds::OCEAN; - } - for($y = 0; $y < 16; ++$y){ - $biomePalette->set($x, $y, $z, $biomeId); - } - } - } - - $biomePaletteBitsPerBlock = $biomePalette->getBitsPerBlock(); - $encodedBiomePalette = - chr(($biomePaletteBitsPerBlock << 1) | 1) . //the last bit is non-persistence (like for blocks), though it has no effect on biomes since they always use integer IDs - $biomePalette->getWordArray(); - - //these LSHIFT by 1 uvarints are optimizations: the client expects zigzag varints here - //but since we know they are always unsigned, we can avoid the extra fcall overhead of - //zigzag and just shift directly. - $biomePaletteArray = $biomePalette->getPalette(); - if($biomePaletteBitsPerBlock !== 0){ - $encodedBiomePalette .= Binary::writeUnsignedVarInt(count($biomePaletteArray) << 1); - } - foreach($biomePaletteArray as $p){ - $encodedBiomePalette .= Binary::writeUnsignedVarInt($p << 1); - } - - return $encodedBiomePalette; - } } diff --git a/src/world/World.php b/src/world/World.php index d8f555ea3..2d7f18d4e 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -2241,23 +2241,23 @@ class World implements ChunkManager{ return ($chunk = $this->loadChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null ? $chunk->getTile($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK) : null; } - public function getBiomeId(int $x, int $z) : int{ + public function getBiomeId(int $x, int $y, int $z) : int{ if(($chunk = $this->loadChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null){ - return $chunk->getBiomeId($x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK); + return $chunk->getBiomeId($x & Chunk::COORD_MASK, $y & Chunk::COORD_MASK, $z & Chunk::COORD_MASK); } return BiomeIds::OCEAN; //TODO: this should probably throw instead (terrain not generated yet) } - public function getBiome(int $x, int $z) : Biome{ - return BiomeRegistry::getInstance()->getBiome($this->getBiomeId($x, $z)); + public function getBiome(int $x, int $y, int $z) : Biome{ + return BiomeRegistry::getInstance()->getBiome($this->getBiomeId($x, $y, $z)); } - public function setBiomeId(int $x, int $z, int $biomeId) : void{ + public function setBiomeId(int $x, int $y, int $z, int $biomeId) : void{ $chunkX = $x >> Chunk::COORD_BIT_SIZE; $chunkZ = $z >> Chunk::COORD_BIT_SIZE; $this->unlockChunk($chunkX, $chunkZ, null); if(($chunk = $this->loadChunk($chunkX, $chunkZ)) !== null){ - $chunk->setBiomeId($x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK, $biomeId); + $chunk->setBiomeId($x & Chunk::COORD_MASK, $y & Chunk::COORD_MASK, $z & Chunk::COORD_MASK, $biomeId); }else{ //if we allowed this, the modifications would be lost when the chunk is created throw new WorldException("Cannot set biome in a non-generated chunk"); diff --git a/src/world/format/BiomeArray.php b/src/world/format/BiomeArray.php deleted file mode 100644 index 5c7a3131f..000000000 --- a/src/world/format/BiomeArray.php +++ /dev/null @@ -1,72 +0,0 @@ -payload = $payload; - } - - public static function fill(int $biomeId) : self{ - return new BiomeArray(str_repeat(chr($biomeId), 256)); - } - - private static function idx(int $x, int $z) : int{ - if($x < 0 || $x >= 16 || $z < 0 || $z >= 16){ - throw new \InvalidArgumentException("x and z must be in the range 0-15"); - } - return ($z << 4) | $x; - } - - public function get(int $x, int $z) : int{ - return ord($this->payload[self::idx($x, $z)]); - } - - public function set(int $x, int $z, int $biomeId) : void{ - if($biomeId < 0 || $biomeId >= 256){ - throw new \InvalidArgumentException("Biome ID must be in the range 0-255"); - } - $this->payload[self::idx($x, $z)] = chr($biomeId); - } - - /** - * @return string ZZZZXXXX key bits - */ - public function getData() : string{ - return $this->payload; - } -} diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index e6b4780c6..7c55b6292 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -29,6 +29,7 @@ namespace pocketmine\world\format; use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\block\tile\Tile; +use pocketmine\data\bedrock\BiomeIds; use function array_map; class Chunk{ @@ -59,21 +60,19 @@ class Chunk{ protected HeightArray $heightMap; - protected BiomeArray $biomeIds; - /** * @param SubChunk[] $subChunks */ - public function __construct(array $subChunks, BiomeArray $biomeIds, bool $terrainPopulated){ + public function __construct(array $subChunks, bool $terrainPopulated){ $this->subChunks = new \SplFixedArray(Chunk::MAX_SUBCHUNKS); foreach($this->subChunks as $y => $null){ - $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, []); + //TODO: we should probably require all subchunks to be provided here + $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], new PalettedBlockArray(BiomeIds::OCEAN)); } $val = (self::MAX_SUBCHUNK_INDEX + 1) * SubChunk::EDGE_LENGTH; $this->heightMap = HeightArray::fill($val); //TODO: what about lazily initializing this? - $this->biomeIds = $biomeIds; $this->terrainPopulated = $terrainPopulated; } @@ -153,8 +152,8 @@ class Chunk{ * * @return int 0-255 */ - public function getBiomeId(int $x, int $z) : int{ - return $this->biomeIds->get($x, $z); + public function getBiomeId(int $x, int $y, int $z) : int{ + return $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBiomeArray()->get($x, $y, $z); } /** @@ -164,8 +163,8 @@ class Chunk{ * @param int $z 0-15 * @param int $biomeId 0-255 */ - public function setBiomeId(int $x, int $z, int $biomeId) : void{ - $this->biomeIds->set($x, $z, $biomeId); + public function setBiomeId(int $x, int $y, int $z, int $biomeId) : void{ + $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBiomeArray()->set($x, $y, $z, $biomeId); $this->terrainDirtyFlags |= self::DIRTY_FLAG_BIOMES; } @@ -230,10 +229,6 @@ class Chunk{ } } - public function getBiomeIdArray() : string{ - return $this->biomeIds->getData(); - } - /** * @return int[] */ @@ -291,7 +286,7 @@ class Chunk{ throw new \InvalidArgumentException("Invalid subchunk Y coordinate $y"); } - $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, []); + $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], new PalettedBlockArray(BiomeIds::OCEAN)); $this->setTerrainDirtyFlag(self::DIRTY_FLAG_BLOCKS, true); } @@ -322,7 +317,6 @@ class Chunk{ return clone $subChunk; }, $this->subChunks->toArray())); $this->heightMap = clone $this->heightMap; - $this->biomeIds = clone $this->biomeIds; } /** diff --git a/src/world/format/SubChunk.php b/src/world/format/SubChunk.php index d10968160..5dc221514 100644 --- a/src/world/format/SubChunk.php +++ b/src/world/format/SubChunk.php @@ -40,6 +40,7 @@ class SubChunk{ public function __construct( private int $emptyBlockId, private array $blockLayers, + private PalettedBlockArray $biomes, private ?LightArray $skyLight = null, private ?LightArray $blockLight = null ){} @@ -102,6 +103,8 @@ class SubChunk{ return null; //highest block not in this subchunk } + public function getBiomeArray() : PalettedBlockArray{ return $this->biomes; } + public function getBlockSkyLightArray() : LightArray{ return $this->skyLight ??= LightArray::fill(0); } @@ -137,6 +140,7 @@ class SubChunk{ unset($this->blockLayers[$k]); } $this->blockLayers = array_values($this->blockLayers); + $this->biomes->collectGarbage(); if($this->skyLight !== null && $this->skyLight->isUniform(0)){ $this->skyLight = null; @@ -150,6 +154,7 @@ class SubChunk{ $this->blockLayers = array_map(function(PalettedBlockArray $array) : PalettedBlockArray{ return clone $array; }, $this->blockLayers); + $this->biomes = clone $this->biomes; if($this->skyLight !== null){ $this->skyLight = clone $this->skyLight; diff --git a/src/world/format/io/ChunkUtils.php b/src/world/format/io/ChunkUtils.php index b9b366685..3692b2470 100644 --- a/src/world/format/io/ChunkUtils.php +++ b/src/world/format/io/ChunkUtils.php @@ -23,8 +23,11 @@ declare(strict_types=1); namespace pocketmine\world\format\io; +use pocketmine\world\format\PalettedBlockArray; use function chr; +use function ord; use function str_repeat; +use function strlen; class ChunkUtils{ @@ -42,4 +45,23 @@ class ChunkUtils{ return $result; } + /** + * Converts 2D biomes into a 3D biome palette. This palette can then be cloned for every subchunk. + */ + public static function extrapolate3DBiomes(string $biomes2d) : PalettedBlockArray{ + if(strlen($biomes2d) !== 256){ + throw new \InvalidArgumentException("Biome array is expected to be exactly 256 bytes"); + } + $biomePalette = new PalettedBlockArray(ord($biomes2d[0])); + for($x = 0; $x < 16; ++$x){ + for($z = 0; $z < 16; ++$z){ + $biomeId = ord($biomes2d[($z << 4) | $x]); + for($y = 0; $y < 16; ++$y){ + $biomePalette->set($x, $y, $z, $biomeId); + } + } + } + + return $biomePalette; + } } diff --git a/src/world/format/io/FastChunkSerializer.php b/src/world/format/io/FastChunkSerializer.php index 7da8c9ab4..6e18f27ac 100644 --- a/src/world/format/io/FastChunkSerializer.php +++ b/src/world/format/io/FastChunkSerializer.php @@ -25,7 +25,6 @@ namespace pocketmine\world\format\io; use pocketmine\utils\Binary; use pocketmine\utils\BinaryStream; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; @@ -46,6 +45,17 @@ final class FastChunkSerializer{ //NOOP } + private static function serializePalettedArray(BinaryStream $stream, PalettedBlockArray $array) : void{ + $wordArray = $array->getWordArray(); + $palette = $array->getPalette(); + + $stream->putByte($array->getBitsPerBlock()); + $stream->put($wordArray); + $serialPalette = pack("L*", ...$palette); + $stream->putInt(strlen($serialPalette)); + $stream->put($serialPalette); + } + /** * Fast-serializes the chunk for passing between threads * TODO: tiles and entities @@ -67,23 +77,25 @@ final class FastChunkSerializer{ $layers = $subChunk->getBlockLayers(); $stream->putByte(count($layers)); foreach($layers as $blocks){ - $wordArray = $blocks->getWordArray(); - $palette = $blocks->getPalette(); - - $stream->putByte($blocks->getBitsPerBlock()); - $stream->put($wordArray); - $serialPalette = pack("L*", ...$palette); - $stream->putInt(strlen($serialPalette)); - $stream->put($serialPalette); + self::serializePalettedArray($stream, $blocks); } + self::serializePalettedArray($stream, $subChunk->getBiomeArray()); + } - //biomes - $stream->put($chunk->getBiomeIdArray()); - return $stream->getBuffer(); } + private static function deserializePalettedArray(BinaryStream $stream) : PalettedBlockArray{ + $bitsPerBlock = $stream->getByte(); + $words = $stream->get(PalettedBlockArray::getExpectedWordArraySize($bitsPerBlock)); + /** @var int[] $unpackedPalette */ + $unpackedPalette = unpack("L*", $stream->get($stream->getInt())); //unpack() will never fail here + $palette = array_values($unpackedPalette); + + return PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); + } + /** * Deserializes a fast-serialized chunk */ @@ -103,19 +115,12 @@ final class FastChunkSerializer{ /** @var PalettedBlockArray[] $layers */ $layers = []; for($i = 0, $layerCount = $stream->getByte(); $i < $layerCount; ++$i){ - $bitsPerBlock = $stream->getByte(); - $words = $stream->get(PalettedBlockArray::getExpectedWordArraySize($bitsPerBlock)); - /** @var int[] $unpackedPalette */ - $unpackedPalette = unpack("L*", $stream->get($stream->getInt())); //unpack() will never fail here - $palette = array_values($unpackedPalette); - - $layers[] = PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); + $layers[] = self::deserializePalettedArray($stream); } - $subChunks[$y] = new SubChunk($airBlockId, $layers); + $biomeArray = self::deserializePalettedArray($stream); + $subChunks[$y] = new SubChunk($airBlockId, $layers, $biomeArray); } - $biomeIds = new BiomeArray($stream->get(256)); - - return new Chunk($subChunks, $biomeIds, $terrainPopulated); + return new Chunk($subChunks, $terrainPopulated); } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 13514261b..c8bb35e73 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -35,7 +35,6 @@ use pocketmine\nbt\TreeRoot; use pocketmine\utils\Binary; use pocketmine\utils\BinaryDataException; use pocketmine\utils\BinaryStream; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\BaseWorldProvider; use pocketmine\world\format\io\ChunkData; @@ -145,7 +144,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** * @throws CorruptedChunkException */ - protected function deserializePaletted(BinaryStream $stream) : PalettedBlockArray{ + protected function deserializeBlockPalette(BinaryStream $stream) : PalettedBlockArray{ $bitsPerBlock = $stream->getByte() >> 1; try{ @@ -188,6 +187,99 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); } + /** + * @throws CorruptedChunkException + */ + private static function getExpected3dBiomesCount(int $chunkVersion) : int{ + return match(true){ + $chunkVersion >= ChunkVersion::v1_18_30 => 24, + $chunkVersion >= ChunkVersion::v1_18_0_25_beta => 25, + $chunkVersion >= ChunkVersion::v1_18_0_24_beta => 32, + $chunkVersion >= ChunkVersion::v1_18_0_22_beta => 65, + $chunkVersion >= ChunkVersion::v1_17_40_20_beta_experimental_caves_cliffs => 32, + default => throw new CorruptedChunkException("Chunk version $chunkVersion should not have 3D biomes") + }; + } + + /** + * @throws CorruptedChunkException + */ + private static function deserializeBiomePalette(BinaryStream $stream, int $bitsPerBlock) : PalettedBlockArray{ + try{ + $words = $stream->get(PalettedBlockArray::getExpectedWordArraySize($bitsPerBlock)); + }catch(\InvalidArgumentException $e){ + throw new CorruptedChunkException("Failed to deserialize paletted biomes: " . $e->getMessage(), 0, $e); + } + $palette = []; + $paletteSize = $bitsPerBlock === 0 ? 1 : $stream->getLInt(); + + for($i = 0; $i < $paletteSize; ++$i){ + $palette[] = $stream->getLInt(); + } + + //TODO: exceptions + return PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); + } + + private static function serializeBiomePalette(BinaryStream $stream, PalettedBlockArray $biomes) : void{ + $stream->putByte($biomes->getBitsPerBlock() << 1); + $stream->put($biomes->getWordArray()); + + $palette = $biomes->getPalette(); + if($biomes->getBitsPerBlock() !== 0){ + $stream->putLInt(count($palette)); + } + foreach($palette as $p){ + $stream->putLInt($p); + } + } + + /** + * @throws CorruptedChunkException + * @return PalettedBlockArray[] + * @phpstan-return array + */ + private static function deserialize3dBiomes(BinaryStream $stream, int $chunkVersion) : array{ + $previous = null; + $result = []; + $nextIndex = Chunk::MIN_SUBCHUNK_INDEX; + + $expectedCount = self::getExpected3dBiomesCount($chunkVersion); + for($i = 0; $i < $expectedCount; ++$i){ + try{ + $bitsPerBlock = $stream->getByte() >> 1; + if($bitsPerBlock === 127){ + if($previous === null){ + throw new CorruptedChunkException("Serialized biome palette $i has no previous palette to copy from"); + } + $decoded = clone $previous; + }else{ + $decoded = self::deserializeBiomePalette($stream, $bitsPerBlock); + } + $previous = $decoded; + if($nextIndex <= Chunk::MAX_SUBCHUNK_INDEX){ //older versions wrote additional superfluous biome palettes + $result[$nextIndex++] = $decoded; + } + }catch(BinaryDataException $e){ + throw new CorruptedChunkException("Failed to deserialize biome palette $i: " . $e->getMessage(), 0, $e); + } + } + if(!$stream->feof()){ + throw new CorruptedChunkException("3D biomes data contains extra unread data"); + } + + return $result; + } + + private static function serialize3dBiomes(BinaryStream $stream, Chunk $chunk) : void{ + //TODO: the server-side min/max may not coincide with the world storage min/max - we may need additional logic to handle this + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; $y++){ + //TODO: is it worth trying to use the previous palette if it's the same as the current one? vanilla supports + //this, but it's not clear if it's worth the effort to implement. + self::serializeBiomePalette($stream, $chunk->getSubChunk($y)->getBiomeArray()); + } + } + /** * @phpstan-param-out int $x * @phpstan-param-out int $y @@ -280,9 +372,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** @var SubChunk[] $subChunks */ $subChunks = []; - /** @var BiomeArray|null $biomeArray */ - $biomeArray = null; - $hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION; $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; @@ -330,8 +419,37 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ case ChunkVersion::v1_0_0: $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); + $biomeArrays = []; + if(($maps2d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES)) !== false){ + $binaryStream = new BinaryStream($maps2d); + + try{ + $binaryStream->get(512); //heightmap, discard it + $biomes3d = ChunkUtils::extrapolate3DBiomes($binaryStream->get(256)); //never throws + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ + $biomeArrays[$i] = clone $biomes3d; + } + }elseif(($maps3d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_3D_BIOMES)) !== false){ + $binaryStream = new BinaryStream($maps3d); + + try{ + $binaryStream->get(512); + $biomeArrays = self::deserialize3dBiomes($binaryStream, $chunkVersion); + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + }else{ + for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ + $biomeArrays[$i] = new PalettedBlockArray(BiomeIds::OCEAN); //polyfill + } + } + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y + $subChunkKeyOffset))) === false){ + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], $biomeArrays[$y]); continue; } @@ -369,14 +487,14 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $storages[] = $convertedLegacyExtraData[$y]; } - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); break; case SubChunkVersion::PALETTED_SINGLE: - $storages = [$this->deserializePaletted($binaryStream)]; + $storages = [$this->deserializeBlockPalette($binaryStream)]; if(isset($convertedLegacyExtraData[$y])){ $storages[] = $convertedLegacyExtraData[$y]; } - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); break; case SubChunkVersion::PALETTED_MULTI: case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: @@ -390,9 +508,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $storages = []; for($k = 0; $k < $storageCount; ++$k){ - $storages[] = $this->deserializePaletted($binaryStream); + $storages[] = $this->deserializeBlockPalette($binaryStream); } - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); } break; default: @@ -401,16 +519,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } } - if(($maps2d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES)) !== false){ - $binaryStream = new BinaryStream($maps2d); - - try{ - $binaryStream->get(512); //heightmap, discard it - $biomeArray = new BiomeArray($binaryStream->get(256)); //never throws - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - } break; case ChunkVersion::v0_9_5: case ChunkVersion::v0_9_2: @@ -430,22 +538,30 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ throw new CorruptedChunkException($e->getMessage(), 0, $e); } + try{ + $binaryStream->get(256); //heightmap, discard it + /** @var int[] $unpackedBiomeArray */ + $unpackedBiomeArray = unpack("N*", $binaryStream->get(1024)); //unpack() will never fail here + $biomes3d = ChunkUtils::extrapolate3DBiomes(ChunkUtils::convertBiomeColors(array_values($unpackedBiomeArray))); //never throws + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + for($yy = 0; $yy < 8; ++$yy){ $storages = [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $yy)]; if(isset($convertedLegacyExtraData[$yy])){ $storages[] = $convertedLegacyExtraData[$yy]; } - $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages); + $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, clone $biomes3d); } - try{ - $binaryStream->get(256); //heightmap, discard it - /** @var int[] $unpackedBiomeArray */ - $unpackedBiomeArray = unpack("N*", $binaryStream->get(1024)); //unpack() will never fail here - $biomeArray = new BiomeArray(ChunkUtils::convertBiomeColors(array_values($unpackedBiomeArray))); //never throws - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); + //make sure extrapolated biomes get filled in correctly + for($yy = Chunk::MIN_SUBCHUNK_INDEX; $yy <= Chunk::MAX_SUBCHUNK_INDEX; ++$yy){ + if(!isset($subChunks[$yy])){ + $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); + } } + break; default: //TODO: set chunks read-only so the version on disk doesn't get overwritten @@ -485,8 +601,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: tile ticks, biome states (?) $chunk = new Chunk( - $subChunks, - $biomeArray ?? BiomeArray::fill(BiomeIds::OCEAN), //TODO: maybe missing biomes should be an error? + $subChunks, //TODO: maybe missing biomes should be an error? $terrainPopulated ); @@ -545,7 +660,11 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES)){ - $write->put($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES, str_repeat("\x00", 512) . $chunk->getBiomeIdArray()); + $write->delete($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES); + $stream = new BinaryStream(); + $stream->put(str_repeat("\x00", 512)); //fake heightmap + self::serialize3dBiomes($stream, $chunk); + $write->put($index . ChunkDataKey::HEIGHTMAP_AND_3D_BIOMES, $stream->getBuffer()); } //TODO: use this properly diff --git a/src/world/format/io/region/Anvil.php b/src/world/format/io/region/Anvil.php index 8012facd9..c1b6b9671 100644 --- a/src/world/format/io/region/Anvil.php +++ b/src/world/format/io/region/Anvil.php @@ -26,16 +26,17 @@ namespace pocketmine\world\format\io\region; use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; class Anvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; - protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ + protected function deserializeSubChunk(CompoundTag $subChunk, PalettedBlockArray $biomes3d) : SubChunk{ return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkYZX( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) - )]); + )], $biomes3d); //ignore legacy light information } diff --git a/src/world/format/io/region/LegacyAnvilChunkTrait.php b/src/world/format/io/region/LegacyAnvilChunkTrait.php index 8d4f8ddf4..05d4b0fb8 100644 --- a/src/world/format/io/region/LegacyAnvilChunkTrait.php +++ b/src/world/format/io/region/LegacyAnvilChunkTrait.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; +use pocketmine\block\Block; +use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\nbt\BigEndianNbtSerializer; use pocketmine\nbt\NbtDataException; @@ -30,12 +32,13 @@ use pocketmine\nbt\tag\ByteArrayTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntArrayTag; use pocketmine\nbt\tag\ListTag; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\ChunkUtils; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; +use function strlen; use function zlib_decode; /** @@ -67,34 +70,38 @@ trait LegacyAnvilChunkTrait{ throw new CorruptedChunkException("'Level' key is missing from chunk NBT"); } + $makeBiomeArray = function(string $biomeIds) : PalettedBlockArray{ + if(strlen($biomeIds) !== 256){ + throw new CorruptedChunkException("Expected biome array to be exactly 256 bytes, got " . strlen($biomeIds)); + } + //TODO: we may need to convert legacy biome IDs + return ChunkUtils::extrapolate3DBiomes($biomeIds); + }; + + if(($biomeColorsTag = $chunk->getTag("BiomeColors")) instanceof IntArrayTag){ + $biomes3d = $makeBiomeArray(ChunkUtils::convertBiomeColors($biomeColorsTag->getValue())); //Convert back to original format + }elseif(($biomesTag = $chunk->getTag("Biomes")) instanceof ByteArrayTag){ + $biomes3d = $makeBiomeArray($biomesTag->getValue()); + }else{ + $biomes3d = new PalettedBlockArray(BiomeIds::OCEAN); + } + $subChunks = []; $subChunksTag = $chunk->getListTag("Sections") ?? []; foreach($subChunksTag as $subChunk){ if($subChunk instanceof CompoundTag){ - $subChunks[$subChunk->getByte("Y")] = $this->deserializeSubChunk($subChunk); + $subChunks[$subChunk->getByte("Y")] = $this->deserializeSubChunk($subChunk, clone $biomes3d); } } - - $makeBiomeArray = function(string $biomeIds) : BiomeArray{ - try{ - return new BiomeArray($biomeIds); - }catch(\InvalidArgumentException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ + if(!isset($subChunks[$y])){ + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); } - }; - $biomeArray = null; - if(($biomeColorsTag = $chunk->getTag("BiomeColors")) instanceof IntArrayTag){ - $biomeArray = $makeBiomeArray(ChunkUtils::convertBiomeColors($biomeColorsTag->getValue())); //Convert back to original format - }elseif(($biomesTag = $chunk->getTag("Biomes")) instanceof ByteArrayTag){ - $biomeArray = $makeBiomeArray($biomesTag->getValue()); - }else{ - $biomeArray = BiomeArray::fill(BiomeIds::OCEAN); } return new ChunkData( new Chunk( $subChunks, - $biomeArray, $chunk->getByte("TerrainPopulated", 0) !== 0 ), ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], @@ -102,6 +109,6 @@ trait LegacyAnvilChunkTrait{ ); } - abstract protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk; + abstract protected function deserializeSubChunk(CompoundTag $subChunk, PalettedBlockArray $biomes3d) : SubChunk; } diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index 98e9f703e..f911d0043 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -33,12 +33,13 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntArrayTag; use pocketmine\nbt\tag\ListTag; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\ChunkUtils; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; +use function strlen; use function zlib_decode; class McRegion extends RegionWorldProvider{ @@ -69,34 +70,37 @@ class McRegion extends RegionWorldProvider{ //trying to read it. return null; } + + $makeBiomeArray = function(string $biomeIds) : PalettedBlockArray{ + if(strlen($biomeIds) !== 256){ + throw new CorruptedChunkException("Expected biome array to be exactly 256 bytes, got " . strlen($biomeIds)); + } + return ChunkUtils::extrapolate3DBiomes($biomeIds); + }; + if(($biomeColorsTag = $chunk->getTag("BiomeColors")) instanceof IntArrayTag){ + $biomes3d = $makeBiomeArray(ChunkUtils::convertBiomeColors($biomeColorsTag->getValue())); //Convert back to original format + }elseif(($biomesTag = $chunk->getTag("Biomes")) instanceof ByteArrayTag){ + $biomes3d = $makeBiomeArray($biomesTag->getValue()); + }else{ + $biomes3d = new PalettedBlockArray(BiomeIds::OCEAN); + } + $subChunks = []; $fullIds = self::readFixedSizeByteArray($chunk, "Blocks", 32768); $fullData = self::readFixedSizeByteArray($chunk, "Data", 16384); for($y = 0; $y < 8; ++$y){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)]); + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)], clone $biomes3d); } - - $makeBiomeArray = function(string $biomeIds) : BiomeArray{ - try{ - return new BiomeArray($biomeIds); - }catch(\InvalidArgumentException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ + if(!isset($subChunks[$y])){ + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); } - }; - $biomeIds = null; - if(($biomeColorsTag = $chunk->getTag("BiomeColors")) instanceof IntArrayTag){ - $biomeIds = $makeBiomeArray(ChunkUtils::convertBiomeColors($biomeColorsTag->getValue())); //Convert back to original format - }elseif(($biomesTag = $chunk->getTag("Biomes")) instanceof ByteArrayTag){ - $biomeIds = $makeBiomeArray($biomesTag->getValue()); - }else{ - $biomeIds = BiomeArray::fill(BiomeIds::OCEAN); } return new ChunkData( new Chunk( $subChunks, - $biomeIds, $chunk->getByte("TerrainPopulated", 0) !== 0 ), ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], diff --git a/src/world/format/io/region/PMAnvil.php b/src/world/format/io/region/PMAnvil.php index 29b47b352..8d31f73bc 100644 --- a/src/world/format/io/region/PMAnvil.php +++ b/src/world/format/io/region/PMAnvil.php @@ -26,6 +26,7 @@ namespace pocketmine\world\format\io\region; use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; /** @@ -35,11 +36,11 @@ use pocketmine\world\format\SubChunk; class PMAnvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; - protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ + protected function deserializeSubChunk(CompoundTag $subChunk, PalettedBlockArray $biomes3d) : SubChunk{ return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkXZY( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) - )]); + )], $biomes3d); } protected static function getRegionFileExtension() : string{ diff --git a/src/world/generator/Flat.php b/src/world/generator/Flat.php index 12dbc4bd0..9536cde03 100644 --- a/src/world/generator/Flat.php +++ b/src/world/generator/Flat.php @@ -25,7 +25,6 @@ namespace pocketmine\world\generator; use pocketmine\block\VanillaBlocks; use pocketmine\world\ChunkManager; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\SubChunk; use pocketmine\world\generator\object\OreType; @@ -67,7 +66,7 @@ class Flat extends Generator{ } protected function generateBaseChunk() : void{ - $this->chunk = new Chunk([], BiomeArray::fill($this->options->getBiomeId()), false); + $this->chunk = new Chunk([], false); $structure = $this->options->getStructure(); $count = count($structure); diff --git a/src/world/generator/PopulationTask.php b/src/world/generator/PopulationTask.php index b2e3d610c..e7e2b407c 100644 --- a/src/world/generator/PopulationTask.php +++ b/src/world/generator/PopulationTask.php @@ -23,10 +23,8 @@ declare(strict_types=1); namespace pocketmine\world\generator; -use pocketmine\data\bedrock\BiomeIds; use pocketmine\scheduler\AsyncTask; use pocketmine\utils\AssumptionFailedError; -use pocketmine\world\format\BiomeArray; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\FastChunkSerializer; use pocketmine\world\SimpleChunkManager; @@ -112,7 +110,7 @@ class PopulationTask extends AsyncTask{ } private static function setOrGenerateChunk(SimpleChunkManager $manager, Generator $generator, int $chunkX, int $chunkZ, ?Chunk $chunk) : Chunk{ - $manager->setChunk($chunkX, $chunkZ, $chunk ?? new Chunk([], BiomeArray::fill(BiomeIds::OCEAN), false)); + $manager->setChunk($chunkX, $chunkZ, $chunk ?? new Chunk([], false)); if($chunk === null){ $generator->generateChunk($manager, $chunkX, $chunkZ); $chunk = $manager->getChunk($chunkX, $chunkZ); diff --git a/src/world/generator/hell/Nether.php b/src/world/generator/hell/Nether.php index 61c8624a0..e00b22015 100644 --- a/src/world/generator/hell/Nether.php +++ b/src/world/generator/hell/Nether.php @@ -34,6 +34,7 @@ use pocketmine\world\generator\noise\Simplex; use pocketmine\world\generator\object\OreType; use pocketmine\world\generator\populator\Ore; use pocketmine\world\generator\populator\Populator; +use pocketmine\world\World; use function abs; class Nether extends Generator{ @@ -78,7 +79,9 @@ class Nether extends Generator{ for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < Chunk::EDGE_LENGTH; ++$z){ - $chunk->setBiomeId($x, $z, BiomeIds::HELL); + for($y = World::Y_MIN; $y < World::Y_MAX; $y++){ + $chunk->setBiomeId($x, $y, $z, BiomeIds::HELL); + } for($y = 0; $y < 128; ++$y){ if($y === 0 || $y === 127){ @@ -109,7 +112,7 @@ class Nether extends Generator{ } $chunk = $world->getChunk($chunkX, $chunkZ); - $biome = BiomeRegistry::getInstance()->getBiome($chunk->getBiomeId(7, 7)); + $biome = BiomeRegistry::getInstance()->getBiome($chunk->getBiomeId(7, 7, 7)); $biome->populateChunk($world, $chunkX, $chunkZ, $this->random); } } diff --git a/src/world/generator/normal/Normal.php b/src/world/generator/normal/Normal.php index c03a06feb..107d147e9 100644 --- a/src/world/generator/normal/Normal.php +++ b/src/world/generator/normal/Normal.php @@ -160,7 +160,9 @@ class Normal extends Generator{ $weightSum = 0; $biome = $this->pickBiome($absoluteX, $absoluteZ); - $chunk->setBiomeId($x, $z, $biome->getId()); + for($y = World::Y_MIN; $y < World::Y_MAX; $y++){ + $chunk->setBiomeId($x, $y, $z, $biome->getId()); + } for($sx = -$this->gaussian->smoothSize; $sx <= $this->gaussian->smoothSize; ++$sx){ for($sz = -$this->gaussian->smoothSize; $sz <= $this->gaussian->smoothSize; ++$sz){ @@ -218,7 +220,7 @@ class Normal extends Generator{ } $chunk = $world->getChunk($chunkX, $chunkZ); - $biome = BiomeRegistry::getInstance()->getBiome($chunk->getBiomeId(7, 7)); + $biome = BiomeRegistry::getInstance()->getBiome($chunk->getBiomeId(7, 7, 7)); $biome->populateChunk($world, $chunkX, $chunkZ, $this->random); } } diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 2aa6cca9b..16a1d95a0 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -41,7 +41,7 @@ class GroundCover implements Populator{ $biomeRegistry = BiomeRegistry::getInstance(); for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < Chunk::EDGE_LENGTH; ++$z){ - $biome = $biomeRegistry->getBiome($chunk->getBiomeId($x, $z)); + $biome = $biomeRegistry->getBiome($chunk->getBiomeId($x, 0, $z)); $cover = $biome->getGroundCover(); if(count($cover) > 0){ $diffY = 0; diff --git a/tests/phpunit/world/format/ChunkTest.php b/tests/phpunit/world/format/ChunkTest.php index b285a6308..a8cca71b2 100644 --- a/tests/phpunit/world/format/ChunkTest.php +++ b/tests/phpunit/world/format/ChunkTest.php @@ -24,23 +24,22 @@ declare(strict_types=1); namespace pocketmine\world\format; use PHPUnit\Framework\TestCase; -use pocketmine\data\bedrock\BiomeIds; class ChunkTest extends TestCase{ public function testClone() : void{ - $chunk = new Chunk([], BiomeArray::fill(BiomeIds::OCEAN), false); + $chunk = new Chunk([], false); $chunk->setFullBlock(0, 0, 0, 1); - $chunk->setBiomeId(0, 0, 1); + $chunk->setBiomeId(0, 0, 0, 1); $chunk->setHeightMap(0, 0, 1); $chunk2 = clone $chunk; $chunk2->setFullBlock(0, 0, 0, 2); - $chunk2->setBiomeId(0, 0, 2); + $chunk2->setBiomeId(0, 0, 0, 2); $chunk2->setHeightMap(0, 0, 2); self::assertNotSame($chunk->getFullBlock(0, 0, 0), $chunk2->getFullBlock(0, 0, 0)); - self::assertNotSame($chunk->getBiomeId(0, 0), $chunk2->getBiomeId(0, 0)); + self::assertNotSame($chunk->getBiomeId(0, 0, 0), $chunk2->getBiomeId(0, 0, 0)); self::assertNotSame($chunk->getHeightMap(0, 0), $chunk2->getHeightMap(0, 0)); } } diff --git a/tests/phpunit/world/format/SubChunkTest.php b/tests/phpunit/world/format/SubChunkTest.php index 4f33a45fc..3b7861051 100644 --- a/tests/phpunit/world/format/SubChunkTest.php +++ b/tests/phpunit/world/format/SubChunkTest.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format; use PHPUnit\Framework\TestCase; +use pocketmine\data\bedrock\BiomeIds; class SubChunkTest extends TestCase{ @@ -31,7 +32,7 @@ class SubChunkTest extends TestCase{ * Test that a cloned SubChunk instance doesn't influence the original */ public function testClone() : void{ - $sub1 = new SubChunk(0, []); + $sub1 = new SubChunk(0, [], new PalettedBlockArray(BiomeIds::OCEAN)); $sub1->setFullBlock(0, 0, 0, 1); $sub1->getBlockLightArray()->set(0, 0, 0, 1); From 7314151c4731ccc215a77824df82943a7b0bea7d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 17 Jan 2023 22:47:43 +0000 Subject: [PATCH 485/692] LevelDB: code cleanup --- src/world/format/io/leveldb/LevelDB.php | 372 ++++++++++++++---------- 1 file changed, 214 insertions(+), 158 deletions(-) diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index c8bb35e73..8f3aa54ab 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -27,6 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; @@ -187,6 +188,22 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); } + private static function serializeBlockPalette(BinaryStream $stream, PalettedBlockArray $blocks, BlockStateSerializer $blockStateSerializer) : void{ + $stream->putByte($blocks->getBitsPerBlock() << 1); + $stream->put($blocks->getWordArray()); + + $palette = $blocks->getPalette(); + if($blocks->getBitsPerBlock() !== 0){ + $stream->putLInt(count($palette)); + } + $tags = []; + foreach($palette as $p){ + $tags[] = new TreeRoot($blockStateSerializer->serialize($p)->toNbt()); + } + + $stream->put((new LittleEndianNbtSerializer())->writeMultiple($tags)); + } + /** * @throws CorruptedChunkException */ @@ -353,10 +370,203 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return ord($chunkVersionRaw); } + /** + * Deserializes terrain data stored in the 0.9 full-chunk format into subchunks. + * + * @return SubChunk[] + * @phpstan-return array + * @throws CorruptedWorldException + */ + private function deserializeLegacyTerrainData(string $index, int $chunkVersion) : array{ + $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); + + $legacyTerrain = $this->db->get($index . ChunkDataKey::LEGACY_TERRAIN); + if($legacyTerrain === false){ + throw new CorruptedChunkException("Missing expected LEGACY_TERRAIN tag for format version $chunkVersion"); + } + $binaryStream = new BinaryStream($legacyTerrain); + try{ + $fullIds = $binaryStream->get(32768); + $fullData = $binaryStream->get(16384); + $binaryStream->get(32768); //legacy light info, discard it + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + + try{ + $binaryStream->get(256); //heightmap, discard it + /** @var int[] $unpackedBiomeArray */ + $unpackedBiomeArray = unpack("N*", $binaryStream->get(1024)); //unpack() will never fail here + $biomes3d = ChunkUtils::extrapolate3DBiomes(ChunkUtils::convertBiomeColors(array_values($unpackedBiomeArray))); //never throws + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + + $subChunks = []; + for($yy = 0; $yy < 8; ++$yy){ + $storages = [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $yy)]; + if(isset($convertedLegacyExtraData[$yy])){ + $storages[] = $convertedLegacyExtraData[$yy]; + } + $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, clone $biomes3d); + } + + //make sure extrapolated biomes get filled in correctly + for($yy = Chunk::MIN_SUBCHUNK_INDEX; $yy <= Chunk::MAX_SUBCHUNK_INDEX; ++$yy){ + if(!isset($subChunks[$yy])){ + $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); + } + } + + return $subChunks; + } + + /** + * Deserializes a subchunk stored in the legacy non-paletted format used from 1.0 until 1.2.13. + */ + private function deserializeNonPalettedSubChunkData(BinaryStream $binaryStream, int $chunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette) : SubChunk{ + try{ + $blocks = $binaryStream->get(4096); + $blockData = $binaryStream->get(2048); + + if($chunkVersion < ChunkVersion::v1_1_0){ + $binaryStream->get(4096); //legacy light info, discard it + } + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + + $storages = [$this->palettizeLegacySubChunkXZY($blocks, $blockData)]; + if($convertedLegacyExtraData !== null){ + $storages[] = $convertedLegacyExtraData; + } + + return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + } + + /** + * Deserializes subchunk data stored under a subchunk LevelDB key. + * + * @see ChunkDataKey::SUBCHUNK + * @throws CorruptedChunkException + */ + private function deserializeSubChunkData(BinaryStream $binaryStream, int $chunkVersion, int $subChunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette) : SubChunk{ + switch($subChunkVersion){ + case SubChunkVersion::CLASSIC: + case SubChunkVersion::CLASSIC_BUG_2: //these are all identical to version 0, but vanilla respects these so we should also + case SubChunkVersion::CLASSIC_BUG_3: + case SubChunkVersion::CLASSIC_BUG_4: + case SubChunkVersion::CLASSIC_BUG_5: + case SubChunkVersion::CLASSIC_BUG_6: + case SubChunkVersion::CLASSIC_BUG_7: + return $this->deserializeNonPalettedSubChunkData($binaryStream, $chunkVersion, $convertedLegacyExtraData, $biomePalette); + case SubChunkVersion::PALETTED_SINGLE: + $storages = [$this->deserializeBlockPalette($binaryStream)]; + if($convertedLegacyExtraData !== null){ + $storages[] = $convertedLegacyExtraData; + } + return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + case SubChunkVersion::PALETTED_MULTI: + case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: + //legacy extradata layers intentionally ignored because they aren't supposed to exist in v8 + + $storageCount = $binaryStream->getByte(); + if($subChunkVersion >= SubChunkVersion::PALETTED_MULTI_WITH_OFFSET){ + //height ignored; this seems pointless since this is already in the key anyway + $binaryStream->getByte(); + } + + $storages = []; + for($k = 0; $k < $storageCount; ++$k){ + $storages[] = $this->deserializeBlockPalette($binaryStream); + } + return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + default: + //TODO: set chunks read-only so the version on disk doesn't get overwritten + throw new CorruptedChunkException("don't know how to decode LevelDB subchunk format version $subChunkVersion"); + } + } + private static function hasOffsetCavesAndCliffsSubChunks(int $chunkVersion) : bool{ return $chunkVersion >= ChunkVersion::v1_16_220_50_unused && $chunkVersion <= ChunkVersion::v1_16_230_50_unused; } + /** + * Deserializes any subchunks stored under subchunk LevelDB keys, upgrading them to the current format if necessary. + * + * @param PalettedBlockArray[] $convertedLegacyExtraData + * @param PalettedBlockArray[] $biomeArrays + * + * @phpstan-param array $convertedLegacyExtraData + * @phpstan-param array $biomeArrays + * @phpstan-param-out bool $hasBeenUpgraded + * + * @return SubChunk[] + * @phpstan-return array + */ + private function deserializeAllSubChunkData(string $index, int $chunkVersion, bool &$hasBeenUpgraded, array $convertedLegacyExtraData, array $biomeArrays) : array{ + $subChunks = []; + + $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; + for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ + if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y + $subChunkKeyOffset))) === false){ + $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], $biomeArrays[$y]); + continue; + } + + $binaryStream = new BinaryStream($data); + if($binaryStream->feof()){ + throw new CorruptedChunkException("Unexpected empty data for subchunk $y"); + } + $subChunkVersion = $binaryStream->getByte(); + if($subChunkVersion < self::CURRENT_LEVEL_SUBCHUNK_VERSION){ + $hasBeenUpgraded = true; + } + + $subChunks[$y] = $this->deserializeSubChunkData($binaryStream, $chunkVersion, $subChunkVersion, $convertedLegacyExtraData[$y] ?? null, $biomeArrays[$y]); + } + + return $subChunks; + } + + /** + * Deserializes any available biome data into an array of paletted biomes. Old 2D biomes are extrapolated to 3D. + * + * @return PalettedBlockArray[] + * @phpstan-return array + */ + private function deserializeBiomeData(string $index, int $chunkVersion) : array{ + $biomeArrays = []; + if(($maps2d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES)) !== false){ + $binaryStream = new BinaryStream($maps2d); + + try{ + $binaryStream->get(512); //heightmap, discard it + $biomes3d = ChunkUtils::extrapolate3DBiomes($binaryStream->get(256)); //never throws + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ + $biomeArrays[$i] = clone $biomes3d; + } + }elseif(($maps3d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_3D_BIOMES)) !== false){ + $binaryStream = new BinaryStream($maps3d); + + try{ + $binaryStream->get(512); + $biomeArrays = self::deserialize3dBiomes($binaryStream, $chunkVersion); + }catch(BinaryDataException $e){ + throw new CorruptedChunkException($e->getMessage(), 0, $e); + } + }else{ + for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ + $biomeArrays[$i] = new PalettedBlockArray(BiomeIds::OCEAN); //polyfill + } + } + + return $biomeArrays; + } + /** * @throws CorruptedChunkException */ @@ -369,13 +579,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return null; } - /** @var SubChunk[] $subChunks */ - $subChunks = []; - $hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION; - $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; - switch($chunkVersion){ case ChunkVersion::v1_18_30: case ChunkVersion::v1_18_0_25_beta: @@ -418,150 +623,13 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: check beds case ChunkVersion::v1_0_0: $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); - - $biomeArrays = []; - if(($maps2d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES)) !== false){ - $binaryStream = new BinaryStream($maps2d); - - try{ - $binaryStream->get(512); //heightmap, discard it - $biomes3d = ChunkUtils::extrapolate3DBiomes($binaryStream->get(256)); //never throws - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ - $biomeArrays[$i] = clone $biomes3d; - } - }elseif(($maps3d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_3D_BIOMES)) !== false){ - $binaryStream = new BinaryStream($maps3d); - - try{ - $binaryStream->get(512); - $biomeArrays = self::deserialize3dBiomes($binaryStream, $chunkVersion); - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - }else{ - for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ - $biomeArrays[$i] = new PalettedBlockArray(BiomeIds::OCEAN); //polyfill - } - } - - for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ - if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y + $subChunkKeyOffset))) === false){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], $biomeArrays[$y]); - continue; - } - - $binaryStream = new BinaryStream($data); - if($binaryStream->feof()){ - throw new CorruptedChunkException("Unexpected empty data for subchunk $y"); - } - $subChunkVersion = $binaryStream->getByte(); - if($subChunkVersion < self::CURRENT_LEVEL_SUBCHUNK_VERSION){ - $hasBeenUpgraded = true; - } - - switch($subChunkVersion){ - case SubChunkVersion::CLASSIC: - case SubChunkVersion::CLASSIC_BUG_2: //these are all identical to version 0, but vanilla respects these so we should also - case SubChunkVersion::CLASSIC_BUG_3: - case SubChunkVersion::CLASSIC_BUG_4: - case SubChunkVersion::CLASSIC_BUG_5: - case SubChunkVersion::CLASSIC_BUG_6: - case SubChunkVersion::CLASSIC_BUG_7: - try{ - $blocks = $binaryStream->get(4096); - $blockData = $binaryStream->get(2048); - - if($chunkVersion < ChunkVersion::v1_1_0){ - $binaryStream->get(4096); //legacy light info, discard it - $hasBeenUpgraded = true; - } - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - - $storages = [$this->palettizeLegacySubChunkXZY($blocks, $blockData)]; - if(isset($convertedLegacyExtraData[$y])){ - $storages[] = $convertedLegacyExtraData[$y]; - } - - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); - break; - case SubChunkVersion::PALETTED_SINGLE: - $storages = [$this->deserializeBlockPalette($binaryStream)]; - if(isset($convertedLegacyExtraData[$y])){ - $storages[] = $convertedLegacyExtraData[$y]; - } - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); - break; - case SubChunkVersion::PALETTED_MULTI: - case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: - //legacy extradata layers intentionally ignored because they aren't supposed to exist in v8 - $storageCount = $binaryStream->getByte(); - if($subChunkVersion >= SubChunkVersion::PALETTED_MULTI_WITH_OFFSET){ - //height ignored; this seems pointless since this is already in the key anyway - $binaryStream->getByte(); - } - if($storageCount > 0){ - $storages = []; - - for($k = 0; $k < $storageCount; ++$k){ - $storages[] = $this->deserializeBlockPalette($binaryStream); - } - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomeArrays[$y]); - } - break; - default: - //TODO: set chunks read-only so the version on disk doesn't get overwritten - throw new CorruptedChunkException("don't know how to decode LevelDB subchunk format version $subChunkVersion"); - } - } - + $biomeArrays = $this->deserializeBiomeData($index, $chunkVersion); + $subChunks = $this->deserializeAllSubChunkData($index, $chunkVersion, $hasBeenUpgraded, $convertedLegacyExtraData, $biomeArrays); break; case ChunkVersion::v0_9_5: case ChunkVersion::v0_9_2: case ChunkVersion::v0_9_0: - $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); - - $legacyTerrain = $this->db->get($index . ChunkDataKey::LEGACY_TERRAIN); - if($legacyTerrain === false){ - throw new CorruptedChunkException("Missing expected LEGACY_TERRAIN tag for format version $chunkVersion"); - } - $binaryStream = new BinaryStream($legacyTerrain); - try{ - $fullIds = $binaryStream->get(32768); - $fullData = $binaryStream->get(16384); - $binaryStream->get(32768); //legacy light info, discard it - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - - try{ - $binaryStream->get(256); //heightmap, discard it - /** @var int[] $unpackedBiomeArray */ - $unpackedBiomeArray = unpack("N*", $binaryStream->get(1024)); //unpack() will never fail here - $biomes3d = ChunkUtils::extrapolate3DBiomes(ChunkUtils::convertBiomeColors(array_values($unpackedBiomeArray))); //never throws - }catch(BinaryDataException $e){ - throw new CorruptedChunkException($e->getMessage(), 0, $e); - } - - for($yy = 0; $yy < 8; ++$yy){ - $storages = [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $yy)]; - if(isset($convertedLegacyExtraData[$yy])){ - $storages[] = $convertedLegacyExtraData[$yy]; - } - $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, clone $biomes3d); - } - - //make sure extrapolated biomes get filled in correctly - for($yy = Chunk::MIN_SUBCHUNK_INDEX; $yy <= Chunk::MAX_SUBCHUNK_INDEX; ++$yy){ - if(!isset($subChunks[$yy])){ - $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); - } - } - + $subChunks = $this->deserializeLegacyTerrainData($index, $chunkVersion); break; default: //TODO: set chunks read-only so the version on disk doesn't get overwritten @@ -639,19 +707,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $layers = $subChunk->getBlockLayers(); $subStream->putByte(count($layers)); foreach($layers as $blocks){ - $subStream->putByte($blocks->getBitsPerBlock() << 1); - $subStream->put($blocks->getWordArray()); - - $palette = $blocks->getPalette(); - if($blocks->getBitsPerBlock() !== 0){ - $subStream->putLInt(count($palette)); - } - $tags = []; - foreach($palette as $p){ - $tags[] = new TreeRoot($blockStateSerializer->serialize($p)->toNbt()); - } - - $subStream->put((new LittleEndianNbtSerializer())->writeMultiple($tags)); + self::serializeBlockPalette($subStream, $blocks, $blockStateSerializer); } $write->put($key, $subStream->getBuffer()); From 023010370b3794d0e79471c28adf2e23b09b78a8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 18 Jan 2023 19:50:18 +0000 Subject: [PATCH 486/692] Release 5.0.0-ALPHA7 --- changelogs/5.0-alpha.md | 132 ++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 133 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index de11e5c7a..09d92bc7a 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -737,3 +737,135 @@ Released 19th December 2022. - `EntityLegacyIds` has been removed. Legacy entity IDs found during world loading are now converted via `LegacyEntityIdToStringIdMap`. - All usages of NBT keys now use class constants instead of hardcoded strings (except for an occasional overlooked one). - All members of `BlockTypeTags` now have a `pocketmine:` prefix on the value. This does not affect constant usages. + +# 5.0.0-ALPHA7 +Released 18th January 2023. + +**This release includes changes from the following releases, which may not be mentioned:** +- [4.12.3](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.3) +- [4.12.4](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.4) +- [4.12.5](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.5) +- [4.12.6](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.6) +- [4.12.7](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.7) +- [4.12.8](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.8) +- [4.12.9](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.9) +- [4.12.10](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.10) +- [4.13.0-BETA1](https://github.com/pmmp/PocketMine-MP/releases/tag/4.13.0-BETA1) + +## Fixes +- Fixed glowing item frame placement creating the wrong tile, causing invisible items. + +## Localization +- Localized disconnect messages are now used in the following cases: + - Server full + - Player not on the server whitelist + - Player on the server ban list + - Invalid skin + - Invalid username + - Kicked using `/kick` + - Banned using `/ban` + - Failure to find a safe spawn position +- Session open, session close and session player name discovery messages are now localized. +- All permissions now have localized descriptions. These are not currently used by PocketMine-MP, but may be useful for plugins. + +## Gameplay +### Worlds +- Added support for 3D biomes. This isn't used by PocketMine-MP yet, but is necessary to be able to fully load 1.18 worlds. + +### Blocks +- Added the following new blocks: + - Chain + - Sculk + +### Items +- Added the following new items: + - Eye Drops (from Education Edition) + - Antidote (from Education Edition) + - Elixir (from Education Edition) + - Tonic (from Education Edition) + +## API +### Overview +- Biome-related APIs have changed to accommodate 3D biomes. +- Disconnect-related APIs have changed to accommodate localized disconnect messages. +- New, more powerful chat formatting API introduced to `PlayerChatEvent`. +- Glowing item frames moved to a separate block type instead of being a property of regular item frames (due to technical limitations). + +### `pocketmine\block` +- The following API methods have been removed: + - `ItemFrame->isGlowing() : bool` + - `ItemFrame->setGlowing(bool $glowing) : void` +- The following new API methods have been added: + - `public static VanillaBlocks::GLOWING_ITEM_FRAME() : ItemFrame` +- The following constants have been added: + - `BlockTypeIds::GLOWING_ITEM_FRAME` + - `BlockTypeIds::CHAIN` + - `BlockTypeIds::SCULK` +- The following new classes have been added: + - `Chain` + - `Sculk` + +### `pocketmine\event\player` +- The following API methods have changed signatures: + - `PlayerDuplicateLoginEvent->getDisconnectMessage()` now returns `Translatable|string` instead of `string` + - `PlayerDuplicateLoginEvent->setDisconnectMessage()` now accepts `Translatable|string` instead of `string` + - `PlayerKickEvent->getReason()` now returns `Translatable|string` instead of `string` + - `PlayerKickEvent->setReason()` now accepts `Translatable|string` instead of `string` + - `PlayerLoginEvent->getKickMessage()` now returns `Translatable|string` instead of `string` + - `PlayerLoginEvent->setKickMessage()` now accepts `Translatable|string` instead of `string` + - `PlayerPreLoginEvent->getFinalKickMessage()` now returns `Translatable|string` instead of `string` + - `PlayerPreLoginEvent->getKickMessage()` now returns `Translatable|string|null` instead of `string|null` + - `PlayerPreLoginEvent->setKickReason()` now accepts `Translatable|string` for the `$message` parameter instead of `string` + - `PlayerQuitEvent->getQuitReason()` now returns `Translatable|string` instead of `string` +- The following API methods have been removed: + - `PlayerChatEvent->getFormat()` (use `PlayerChatEvent->getChatFormatter()` instead) + - `PlayerChatEvent->setFormat()` (use `PlayerChatEvent->setChatFormatter()` instead) +- The following new API methods have been added: + - `public PlayerChatEvent->setChatFormatter(\pocketmine\player\chat\ChatFormatter $formatter) : void` - sets the chat formatter to be used for this event + - `public PlayerChatEvent->getChatFormatter() : \pocketmine\player\chat\ChatFormatter` - returns the chat formatter to be used for this event + +### `pocketmine\item` +- The following new classes have been added: + - `Medicine` + - `MedicineType` +- The following new class constants have been added: + - `ItemTypeIds::MEDICINE` + +### `pocketmine\network\query` +- The following API methods have changed signatures: + - `QueryInfo->getPlayerList()` now returns `list` instead of `list` + - `QueryInfo->setPlayerList()` now accepts `list` instead of `list` + +### `pocketmine\player` +- The following API methods have changed signatures: + - `Player->kick()` now accepts `Translatable|string` for `$reason` instead of `string` (to allow localized kick messages) + - `Player->disconnect()` now accepts `Translatable|string` for `$reason` instead of `string` (to allow localized disconnect messages) + - `Player->sendJukeboxPopup()` now accepts `Translatable|string` instead of `string, string[]` + +#### `pocketmine\player\chat` +- The following new classes have been added: + - `ChatFormatter` - interface implemented by chat formatters + - `StandardChatFormatter` - formats chat messages in the vanilla Minecraft style + - `LegacyRawChatFormatter` - implements the same behaviour previously used by `PlayerChatEvent->setFormat()` + +### `pocketmine\world` +- The following API methods have changed signatures: + - `World->getBiome()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `World->getBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `World->setBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + +#### `pocketmine\world\format` +- The following new API methods have been added: + - `public SubChunk->getBiomeArray() : PalettedBlockArray` +- The following API methods have changed signatures: + - `Chunk->getBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `Chunk->setBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `Chunk->__construct()` no longer accepts `BiomeArray` as a parameter (contained in each subchunk instead) + - `SubChunk->__construct()` now accepts `int $emptyBlockId, list $blocks, PalettedBlockArray $biomes, ?LightArray $blockLight, ?LightArray $skyLight` instead of `int, list, ?LightArray, ?LightArray` +- The following classes have been removed + - `BiomeArray` + +## Internals +- Built-in commands now declare their names inside the class constructor, rather than accepting them as parameters. This improves code consistency. +- `NetworkSession` disconnect APIs now accept `Translatable|string` instead of `string` to allow localized disconnect messages. +- All external usages of `KnownTranslationKeys` are now removed. All localized messages are now sent using `Translatable` objects (usually from `KnownTranslationFactory`). diff --git a/src/VersionInfo.php b/src/VersionInfo.php index cfca3b4b5..90d1a5f9b 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA7"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 5d2ac214a8756dcc3693815f116d7230edbf0ac7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 18 Jan 2023 19:50:18 +0000 Subject: [PATCH 487/692] 5.0.0-ALPHA8 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 90d1a5f9b..98044d7de 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA7"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA8"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 41e60cb62c0b50559c64e8e590b95a84bf4c22de Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 18 Jan 2023 20:36:53 +0000 Subject: [PATCH 488/692] NetworkSession: remove unnecessary translation --- src/network/mcpe/NetworkSession.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index c08769429..3cb21106d 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -634,7 +634,7 @@ class NetworkSession{ function() use ($protocolVersion) : void{ $this->sendDataPacket(PlayStatusPacket::create($protocolVersion < ProtocolInfo::CURRENT_PROTOCOL ? PlayStatusPacket::LOGIN_FAILED_CLIENT : PlayStatusPacket::LOGIN_FAILED_SERVER), true); }, - $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $protocolVersion)) + KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol((string) $protocolVersion) ); } From b8f6b66e42e830539e5b24d532710d536bbdb8c2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 18 Jan 2023 20:57:17 +0000 Subject: [PATCH 489/692] First look at separating disconnect reason and disconnect screen messages (#4512) --- .../player/PlayerDisconnectEventTrait.php | 62 +++++++++++++++++++ .../player/PlayerDuplicateLoginEvent.php | 5 +- src/event/player/PlayerKickEvent.php | 23 ++----- src/network/NetworkSessionManager.php | 7 ++- src/network/mcpe/NetworkSession.php | 31 +++++----- .../handler/ResourcePacksPacketHandler.php | 2 +- src/player/Player.php | 26 +++++--- 7 files changed, 111 insertions(+), 45 deletions(-) create mode 100644 src/event/player/PlayerDisconnectEventTrait.php diff --git a/src/event/player/PlayerDisconnectEventTrait.php b/src/event/player/PlayerDisconnectEventTrait.php new file mode 100644 index 000000000..219f74247 --- /dev/null +++ b/src/event/player/PlayerDisconnectEventTrait.php @@ -0,0 +1,62 @@ +disconnectReason = $disconnectReason; + } + + /** + * Returns the kick reason shown in the server log and on the console. + * When kicked by the /kick command, the default is something like "Kicked by admin.". + */ + public function getDisconnectReason() : Translatable|string{ + return $this->disconnectReason; + } + + /** + * Sets the message shown on the player's disconnection screen. + * This can be as long as you like, and may contain formatting and newlines. + * If this is set to null, the kick reason will be used as the disconnect screen message directly. + */ + public function setDisconnectScreenMessage(Translatable|string|null $disconnectScreenMessage) : void{ + $this->disconnectScreenMessage = $disconnectScreenMessage; + } + + /** + * Returns the message shown on the player's disconnection screen. + * When kicked by the /kick command, the default is something like "Kicked by admin.". + * If this is null, the kick reason will be used as the disconnect screen message directly. + */ + public function getDisconnectScreenMessage() : Translatable|string|null{ return $this->disconnectScreenMessage ?? $this->disconnectReason; } +} diff --git a/src/event/player/PlayerDuplicateLoginEvent.php b/src/event/player/PlayerDuplicateLoginEvent.php index 53d68bcd0..eddd544fd 100644 --- a/src/event/player/PlayerDuplicateLoginEvent.php +++ b/src/event/player/PlayerDuplicateLoginEvent.php @@ -36,12 +36,15 @@ use pocketmine\network\mcpe\NetworkSession; */ class PlayerDuplicateLoginEvent extends Event implements Cancellable{ use CancellableTrait; + use PlayerDisconnectEventTrait; private Translatable|string $disconnectMessage; public function __construct( private NetworkSession $connectingSession, - private NetworkSession $existingSession + private NetworkSession $existingSession, + private Translatable|string $disconnectReason, + private Translatable|string|null $disconnectScreenMessage ){ $this->disconnectMessage = KnownTranslationFactory::disconnectionScreen_loggedinOtherLocation(); } diff --git a/src/event/player/PlayerKickEvent.php b/src/event/player/PlayerKickEvent.php index 11f77e4de..8e00385a2 100644 --- a/src/event/player/PlayerKickEvent.php +++ b/src/event/player/PlayerKickEvent.php @@ -33,32 +33,17 @@ use pocketmine\player\Player; */ class PlayerKickEvent extends PlayerEvent implements Cancellable{ use CancellableTrait; + use PlayerDisconnectEventTrait; public function __construct( Player $player, - protected Translatable|string $reason, - protected Translatable|string $quitMessage + protected Translatable|string $disconnectReason, + protected Translatable|string $quitMessage, + protected Translatable|string|null $disconnectScreenMessage ){ $this->player = $player; } - /** - * Sets the message shown on the kicked player's disconnection screen. - * This message is also displayed in the console and server log. - */ - public function setReason(Translatable|string $reason) : void{ - $this->reason = $reason; - } - - /** - * Returns the message shown on the kicked player's disconnection screen. - * This message is also displayed in the console and server log. - * When kicked by the /kick command, the default is something like "Kicked by admin.". - */ - public function getReason() : Translatable|string{ - return $this->reason; - } - /** * Sets the quit message broadcasted to other players. */ diff --git a/src/network/NetworkSessionManager.php b/src/network/NetworkSessionManager.php index 35ddb0453..d8ff7fe03 100644 --- a/src/network/NetworkSessionManager.php +++ b/src/network/NetworkSessionManager.php @@ -96,10 +96,13 @@ class NetworkSessionManager{ /** * Terminates all connected sessions with the given reason. + * + * @param Translatable|string $reason Shown in the server log - this should be a short one-line message + * @param Translatable|string|null $disconnectScreenMessage Shown on the player's disconnection screen (null will use the reason) */ - public function close(Translatable|string $reason = "") : void{ + public function close(Translatable|string $reason = "", Translatable|string|null $disconnectScreenMessage = null) : void{ foreach($this->sessions as $session){ - $session->disconnect($reason); + $session->disconnect($reason, $disconnectScreenMessage); } $this->sessions = []; } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 3cb21106d..5025928d2 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -602,22 +602,25 @@ class NetworkSession{ $this->invManager = null; } - private function sendDisconnectPacket(Translatable|string $reason) : void{ - if($reason instanceof Translatable){ - $translated = $this->server->getLanguage()->translate($reason); + private function sendDisconnectPacket(Translatable|string $message) : void{ + if($message instanceof Translatable){ + $translated = $this->server->getLanguage()->translate($message); }else{ - $translated = $reason; + $translated = $message; } $this->sendDataPacket(DisconnectPacket::create($translated)); } /** * Disconnects the session, destroying the associated player (if it exists). + * + * @param Translatable|string $reason Shown in the server log - this should be a short one-line message + * @param Translatable|string|null $disconnectScreenMessage Shown on the player's disconnection screen (null will use the reason) */ - public function disconnect(Translatable|string $reason, bool $notify = true) : void{ - $this->tryDisconnect(function() use ($reason, $notify) : void{ + public function disconnect(Translatable|string $reason, Translatable|string|null $disconnectScreenMessage = null, bool $notify = true) : void{ + $this->tryDisconnect(function() use ($reason, $disconnectScreenMessage, $notify) : void{ if($notify){ - $this->sendDisconnectPacket($reason); + $this->sendDisconnectPacket($disconnectScreenMessage ?? $reason); } if($this->player !== null){ $this->player->onPostDisconnect($reason, null); @@ -654,9 +657,9 @@ class NetworkSession{ /** * Called by the Player when it is closed (for example due to getting kicked). */ - public function onPlayerDestroyed(Translatable|string $reason) : void{ - $this->tryDisconnect(function() use ($reason) : void{ - $this->sendDisconnectPacket($reason); + public function onPlayerDestroyed(Translatable|string $reason, Translatable|string $disconnectScreenMessage) : void{ + $this->tryDisconnect(function() use ($disconnectScreenMessage) : void{ + $this->sendDisconnectPacket($disconnectScreenMessage); }, $reason); } @@ -694,7 +697,7 @@ class NetworkSession{ if(!$this->authenticated){ if($authRequired){ - $this->disconnect(KnownTranslationFactory::disconnectionScreen_notAuthenticated()); + $this->disconnect("Not authenticated", KnownTranslationFactory::disconnectionScreen_notAuthenticated()); return; } if($this->info instanceof XboxLivePlayerInfo){ @@ -728,14 +731,14 @@ class NetworkSession{ if($kickForXUIDMismatch($info instanceof XboxLivePlayerInfo ? $info->getXuid() : "")){ return; } - $ev = new PlayerDuplicateLoginEvent($this, $existingSession); + $ev = new PlayerDuplicateLoginEvent($this, $existingSession, KnownTranslationFactory::disconnectionScreen_loggedinOtherLocation(), null); $ev->call(); if($ev->isCancelled()){ - $this->disconnect($ev->getDisconnectMessage()); + $this->disconnect($ev->getDisconnectReason(), $ev->getDisconnectScreenMessage()); return; } - $existingSession->disconnect($ev->getDisconnectMessage()); + $existingSession->disconnect($ev->getDisconnectReason(), $ev->getDisconnectScreenMessage()); } } diff --git a/src/network/mcpe/handler/ResourcePacksPacketHandler.php b/src/network/mcpe/handler/ResourcePacksPacketHandler.php index 8e76c545d..7438fe47c 100644 --- a/src/network/mcpe/handler/ResourcePacksPacketHandler.php +++ b/src/network/mcpe/handler/ResourcePacksPacketHandler.php @@ -93,7 +93,7 @@ class ResourcePacksPacketHandler extends PacketHandler{ switch($packet->status){ case ResourcePackClientResponsePacket::STATUS_REFUSED: //TODO: add lang strings for this - $this->session->disconnect("You must accept resource packs to join this server.", true); + $this->session->disconnect("Refused resource packs", "You must accept resource packs to join this server.", true); break; case ResourcePackClientResponsePacket::STATUS_SEND_PACKS: foreach($packet->packIds as $uuid){ diff --git a/src/player/Player.php b/src/player/Player.php index 5bf99b3bb..3218929a9 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2090,16 +2090,24 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ /** * Kicks a player from the server + * + * @param Translatable|string $reason Shown in the server log - this should be a short one-line message + * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) + * @param Translatable|string|null $disconnectScreenMessage Shown on the player's disconnection screen (null will use the reason) */ - public function kick(Translatable|string $reason = "", Translatable|string|null $quitMessage = null) : bool{ - $ev = new PlayerKickEvent($this, $reason, $quitMessage ?? $this->getLeaveMessage()); + public function kick(Translatable|string $reason = "", Translatable|string|null $quitMessage = null, Translatable|string|null $disconnectScreenMessage = null) : bool{ + $ev = new PlayerKickEvent($this, $reason, $quitMessage ?? $this->getLeaveMessage(), $disconnectScreenMessage); $ev->call(); if(!$ev->isCancelled()){ - $reason = $ev->getReason(); + $reason = $ev->getDisconnectReason(); if($reason === ""){ $reason = KnownTranslationFactory::disconnectionScreen_noReason(); } - $this->disconnect($reason, $ev->getQuitMessage()); + $disconnectScreenMessage = $ev->getDisconnectScreenMessage() ?? $reason; + if($disconnectScreenMessage === ""){ + $disconnectScreenMessage = KnownTranslationFactory::disconnectionScreen_noReason(); + } + $this->disconnect($reason, $ev->getQuitMessage(), $disconnectScreenMessage); return true; } @@ -2116,15 +2124,16 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ * * Note for internals developers: Do not call this from network sessions. It will cause a feedback loop. * - * @param Translatable|string $reason Shown on the disconnect screen, and in the server log - * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) + * @param Translatable|string $reason Shown in the server log - this should be a short one-line message + * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) + * @param Translatable|string|null $disconnectScreenMessage Shown on the player's disconnection screen (null will use the reason) */ - public function disconnect(Translatable|string $reason, Translatable|string|null $quitMessage = null) : void{ + public function disconnect(Translatable|string $reason, Translatable|string|null $quitMessage = null, Translatable|string|null $disconnectScreenMessage = null) : void{ if(!$this->isConnected()){ return; } - $this->getNetworkSession()->onPlayerDestroyed($reason); + $this->getNetworkSession()->onPlayerDestroyed($reason, $disconnectScreenMessage ?? $reason); $this->onPostDisconnect($reason, $quitMessage); } @@ -2132,6 +2141,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ * @internal * This method executes post-disconnect actions and cleanups. * + * @param Translatable|string $reason Shown in the server log - this should be a short one-line message * @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default) */ public function onPostDisconnect(Translatable|string $reason, Translatable|string|null $quitMessage) : void{ From 222415859af50e583087e24fd4c6a9e7a9a4eba2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:02:33 +0000 Subject: [PATCH 490/692] Require pthreads ^5.1 This version of pthreads has a substantially improved API, improved performance, improved memory usage, and much less magical and broken behaviour. --- .github/workflows/main.yml | 10 +- composer.json | 8 +- composer.lock | 91 ++++++++++--------- src/PocketMine.php | 4 +- src/console/ConsoleReaderChildProcess.php | 11 ++- src/network/mcpe/ChunkRequestTask.php | 8 +- src/network/mcpe/auth/ProcessLoginTask.php | 10 +- .../mcpe/compression/CompressBatchTask.php | 9 +- .../mcpe/raklib/PthreadsChannelReader.php | 5 +- .../mcpe/raklib/PthreadsChannelWriter.php | 5 +- src/network/mcpe/raklib/RakLibInterface.php | 6 +- src/network/mcpe/raklib/RakLibServer.php | 25 +++-- .../SnoozeAwarePthreadsChannelWriter.php | 5 +- src/scheduler/AsyncPool.php | 2 +- src/scheduler/AsyncTask.php | 32 +++---- src/thread/CommonThreadPartsTrait.php | 9 +- src/thread/NonThreadSafeValue.php | 57 ++++++++++++ src/thread/ThreadManager.php | 15 ++- src/utils/MainLogger.php | 3 + src/utils/MainLoggerThread.php | 9 +- tests/phpstan/configs/phpstan-bugs.neon | 8 +- tests/phpstan/stubs/pthreads.stub | 31 ++++++- 22 files changed, 245 insertions(+), 118 deletions(-) create mode 100644 src/thread/NonThreadSafeValue.php diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0481c78c9..85abd45ed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,7 +21,7 @@ jobs: with: php-version: ${{ matrix.php }} install-path: "./bin" - pm-version-major: "4" + pm-version-major: "5" phpstan: name: PHPStan analysis @@ -42,7 +42,7 @@ jobs: with: php-version: ${{ matrix.php }} install-path: "./bin" - pm-version-major: "4" + pm-version-major: "5" - name: Install Composer run: curl -sS https://getcomposer.org/installer | php @@ -81,7 +81,7 @@ jobs: with: php-version: ${{ matrix.php }} install-path: "./bin" - pm-version-major: "4" + pm-version-major: "5" - name: Install Composer run: curl -sS https://getcomposer.org/installer | php @@ -122,7 +122,7 @@ jobs: with: php-version: ${{ matrix.php }} install-path: "./bin" - pm-version-major: "4" + pm-version-major: "5" - name: Install Composer run: curl -sS https://getcomposer.org/installer | php @@ -161,7 +161,7 @@ jobs: with: php-version: ${{ matrix.php }} install-path: "./bin" - pm-version-major: "4" + pm-version-major: "5" - name: Install Composer run: curl -sS https://getcomposer.org/installer | php diff --git a/composer.json b/composer.json index 41d30efe2..39d0a9e16 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "ext-openssl": "*", "ext-pcre": "*", "ext-phar": "*", - "ext-pthreads": "^4.0", + "ext-pthreads": "^5.1", "ext-reflection": "*", "ext-simplexml": "*", "ext-sockets": "*", @@ -40,17 +40,17 @@ "pocketmine/bedrock-protocol": "~18.0.0+bedrock-1.19.50", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", - "pocketmine/classloader": "^0.2.0", + "pocketmine/classloader": "dev-pthreads-v5", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", "pocketmine/locale-data": "~2.18.0", "pocketmine/log": "^0.4.0", - "pocketmine/log-pthreads": "^0.4.0", + "pocketmine/log-pthreads": "dev-pthreads-v5", "pocketmine/math": "^0.4.0", "pocketmine/nbt": "^0.3.2", "pocketmine/raklib": "^0.14.2", "pocketmine/raklib-ipc": "^0.1.0", - "pocketmine/snooze": "^0.3.0", + "pocketmine/snooze": "dev-pthreads-v5", "ramsey/uuid": "^4.1", "symfony/filesystem": "^5.4" }, diff --git a/composer.lock b/composer.lock index a48d419ba..d31480efa 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "19f6b653d5b36e04f2d799de5972e567", + "content-hash": "5725b919e65c02842812b1fed8a3d77c", "packages": [ { "name": "adhocore/json-comment", @@ -469,20 +469,20 @@ }, { "name": "pocketmine/classloader", - "version": "0.2.0", + "version": "dev-pthreads-v5", "source": { "type": "git", "url": "https://github.com/pmmp/ClassLoader.git", - "reference": "49ea303993efdfb39cd302e2156d50aa78209e78" + "reference": "dc98186e947d8940b8f6f4dbb2837f7c961a4812" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/49ea303993efdfb39cd302e2156d50aa78209e78", - "reference": "49ea303993efdfb39cd302e2156d50aa78209e78", + "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/dc98186e947d8940b8f6f4dbb2837f7c961a4812", + "reference": "dc98186e947d8940b8f6f4dbb2837f7c961a4812", "shasum": "" }, "require": { - "ext-pthreads": "~3.2.0 || ^4.0", + "ext-pthreads": "^5.0", "ext-reflection": "*", "php": "^8.0" }, @@ -491,8 +491,8 @@ }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.99", - "phpstan/phpstan-strict-rules": "^0.12.4", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5" }, "type": "library", @@ -508,9 +508,9 @@ "description": "Ad-hoc autoloading components used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/ClassLoader/issues", - "source": "https://github.com/pmmp/ClassLoader/tree/0.2.0" + "source": "https://github.com/pmmp/ClassLoader/tree/pthreads-v5" }, - "time": "2021-11-01T20:17:27+00:00" + "time": "2023-01-20T18:50:37+00:00" }, { "name": "pocketmine/color", @@ -591,16 +591,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.18.0", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "0f50afc3d0fec29f769a62e93c71f8a0fb968f76" + "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/0f50afc3d0fec29f769a62e93c71f8a0fb968f76", - "reference": "0f50afc3d0fec29f769a62e93c71f8a0fb968f76", + "url": "https://api.github.com/repos/pmmp/Language/zipball/da25bfe9ee4822a84feb9b7e620c56ad4000aed0", + "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0", "shasum": "" }, "type": "library", @@ -608,9 +608,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.18.0" + "source": "https://github.com/pmmp/Language/tree/2.18.3" }, - "time": "2023-01-14T17:52:46+00:00" + "time": "2023-01-17T21:43:36+00:00" }, { "name": "pocketmine/log", @@ -655,21 +655,21 @@ }, { "name": "pocketmine/log-pthreads", - "version": "0.4.0", + "version": "dev-pthreads-v5", "source": { "type": "git", "url": "https://github.com/pmmp/LogPthreads.git", - "reference": "61f709e8cf36bcc24e4efe02acded680a1ce23cd" + "reference": "83a66c9b8c39531b97a3b08c0ea97db967a3c60a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/61f709e8cf36bcc24e4efe02acded680a1ce23cd", - "reference": "61f709e8cf36bcc24e4efe02acded680a1ce23cd", + "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/83a66c9b8c39531b97a3b08c0ea97db967a3c60a", + "reference": "83a66c9b8c39531b97a3b08c0ea97db967a3c60a", "shasum": "" }, "require": { - "ext-pthreads": "~3.2.0 || ^4.0", - "php": "^7.4 || ^8.0", + "ext-pthreads": "^5.0", + "php": "^8.0", "pocketmine/log": "^0.4.0" }, "conflict": { @@ -677,8 +677,8 @@ }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.88", - "phpstan/phpstan-strict-rules": "^0.12.4" + "phpstan/phpstan": "1.8.11", + "phpstan/phpstan-strict-rules": "^1.0" }, "type": "library", "autoload": { @@ -693,9 +693,9 @@ "description": "Logging components specialized for pthreads used by PocketMine-MP and related projects", "support": { "issues": "https://github.com/pmmp/LogPthreads/issues", - "source": "https://github.com/pmmp/LogPthreads/tree/0.4.0" + "source": "https://github.com/pmmp/LogPthreads/tree/pthreads-v5" }, - "time": "2021-11-01T21:42:09+00:00" + "time": "2023-01-20T19:45:45+00:00" }, { "name": "pocketmine/math", @@ -866,26 +866,26 @@ }, { "name": "pocketmine/snooze", - "version": "0.3.1", + "version": "dev-pthreads-v5", "source": { "type": "git", "url": "https://github.com/pmmp/Snooze.git", - "reference": "0ac8fc2a781c419a1f64ebca4d5835028f59e29b" + "reference": "8589ddfa1672215dcc78d8edb7acb4cf67d59d5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Snooze/zipball/0ac8fc2a781c419a1f64ebca4d5835028f59e29b", - "reference": "0ac8fc2a781c419a1f64ebca4d5835028f59e29b", + "url": "https://api.github.com/repos/pmmp/Snooze/zipball/8589ddfa1672215dcc78d8edb7acb4cf67d59d5a", + "reference": "8589ddfa1672215dcc78d8edb7acb4cf67d59d5a", "shasum": "" }, "require": { - "ext-pthreads": "~3.2.0 || ^4.0", - "php-64bit": "^7.3 || ^8.0" + "ext-pthreads": "^5.0", + "php-64bit": "^8.0" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.99", - "phpstan/phpstan-strict-rules": "^0.12.4" + "phpstan/phpstan": "1.9.14", + "phpstan/phpstan-strict-rules": "^1.0" }, "type": "library", "autoload": { @@ -900,9 +900,9 @@ "description": "Thread notification management library for code using the pthreads extension", "support": { "issues": "https://github.com/pmmp/Snooze/issues", - "source": "https://github.com/pmmp/Snooze/tree/0.3.1" + "source": "https://github.com/pmmp/Snooze/tree/pthreads-v5" }, - "time": "2021-11-01T20:50:08+00:00" + "time": "2023-01-20T18:19:39+00:00" }, { "name": "ramsey/collection", @@ -1610,16 +1610,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.2", + "version": "v4.15.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", "shasum": "" }, "require": { @@ -1660,9 +1660,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" }, - "time": "2022-11-12T15:38:23+00:00" + "time": "2023-01-16T22:05:37+00:00" }, { "name": "phar-io/manifest", @@ -3374,7 +3374,10 @@ "stability-flags": { "pocketmine/bedrock-block-upgrade-schema": 20, "pocketmine/bedrock-data": 20, - "pocketmine/bedrock-item-upgrade-schema": 20 + "pocketmine/bedrock-item-upgrade-schema": 20, + "pocketmine/classloader": 20, + "pocketmine/log-pthreads": 20, + "pocketmine/snooze": 20 }, "prefer-stable": false, "prefer-lowest": false, @@ -3396,7 +3399,7 @@ "ext-openssl": "*", "ext-pcre": "*", "ext-phar": "*", - "ext-pthreads": "^4.0", + "ext-pthreads": "^5.1", "ext-reflection": "*", "ext-simplexml": "*", "ext-sockets": "*", diff --git a/src/PocketMine.php b/src/PocketMine.php index 4b0b644ec..762837102 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -122,8 +122,8 @@ namespace pocketmine { if(substr_count($pthreads_version, ".") < 2){ $pthreads_version = "0.$pthreads_version"; } - if(version_compare($pthreads_version, "4.0.0") < 0 || version_compare($pthreads_version, "5.0.0") >= 0){ - $messages[] = "pthreads ^4.0.0 is required, while you have $pthreads_version."; + if(version_compare($pthreads_version, "5.1.0") < 0 || version_compare($pthreads_version, "6.0.0") >= 0){ + $messages[] = "pthreads ^5.0.0 is required, while you have $pthreads_version."; } } diff --git a/src/console/ConsoleReaderChildProcess.php b/src/console/ConsoleReaderChildProcess.php index 2d4e3fc56..3dd2c24c2 100644 --- a/src/console/ConsoleReaderChildProcess.php +++ b/src/console/ConsoleReaderChildProcess.php @@ -46,13 +46,17 @@ if($socket === false){ throw new \RuntimeException("Failed to connect to server process ($errCode): $errMessage"); } -$channel = new \Threaded(); +/** @phpstan-var \ThreadedArray $channel */ +$channel = new \ThreadedArray(); $thread = new class($channel) extends \Thread{ + /** + * @phpstan-param \ThreadedArray $channel + */ public function __construct( - private \Threaded $channel, + private \ThreadedArray $channel, ){} - public function run(){ + public function run() : void{ require dirname(__DIR__, 2) . '/vendor/autoload.php'; $channel = $this->channel; @@ -75,7 +79,6 @@ while(!feof($socket)){ if(count($channel) === 0){ $channel->wait(1_000_000); } - /** @var string|null $line */ $line = $channel->shift(); return $line; }); diff --git a/src/network/mcpe/ChunkRequestTask.php b/src/network/mcpe/ChunkRequestTask.php index 1c9410f22..b466618c9 100644 --- a/src/network/mcpe/ChunkRequestTask.php +++ b/src/network/mcpe/ChunkRequestTask.php @@ -33,6 +33,7 @@ use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; use pocketmine\network\mcpe\protocol\types\ChunkPosition; use pocketmine\network\mcpe\serializer\ChunkSerializer; use pocketmine\scheduler\AsyncTask; +use pocketmine\thread\NonThreadSafeValue; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\FastChunkSerializer; @@ -43,14 +44,15 @@ class ChunkRequestTask extends AsyncTask{ protected string $chunk; protected int $chunkX; protected int $chunkZ; - protected Compressor $compressor; + /** @phpstan-var NonThreadSafeValue */ + protected NonThreadSafeValue $compressor; private string $tiles; /** * @phpstan-param (\Closure() : void)|null $onError */ public function __construct(int $chunkX, int $chunkZ, Chunk $chunk, CompressBatchPromise $promise, Compressor $compressor, ?\Closure $onError = null){ - $this->compressor = $compressor; + $this->compressor = new NonThreadSafeValue($compressor); $this->chunk = FastChunkSerializer::serializeTerrain($chunk); $this->chunkX = $chunkX; @@ -66,7 +68,7 @@ class ChunkRequestTask extends AsyncTask{ $subCount = ChunkSerializer::getSubChunkCount($chunk); $encoderContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()); $payload = ChunkSerializer::serializeFullChunk($chunk, RuntimeBlockMapping::getInstance(), $encoderContext, $this->tiles); - $this->setResult($this->compressor->compress(PacketBatch::fromPackets($encoderContext, LevelChunkPacket::create(new ChunkPosition($this->chunkX, $this->chunkZ), $subCount, false, null, $payload))->getBuffer())); + $this->setResult($this->compressor->deserialize()->compress(PacketBatch::fromPackets($encoderContext, LevelChunkPacket::create(new ChunkPosition($this->chunkX, $this->chunkZ), $subCount, false, null, $payload))->getBuffer())); } public function onError() : void{ diff --git a/src/network/mcpe/auth/ProcessLoginTask.php b/src/network/mcpe/auth/ProcessLoginTask.php index 8df9886d3..1ea36fa37 100644 --- a/src/network/mcpe/auth/ProcessLoginTask.php +++ b/src/network/mcpe/auth/ProcessLoginTask.php @@ -30,6 +30,7 @@ use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\protocol\types\login\JwtChainLinkBody; use pocketmine\network\mcpe\protocol\types\login\JwtHeader; use pocketmine\scheduler\AsyncTask; +use pocketmine\thread\NonThreadSafeValue; use function base64_decode; use function igbinary_serialize; use function igbinary_unserialize; @@ -49,8 +50,10 @@ class ProcessLoginTask extends AsyncTask{ * Whether the keychain signatures were validated correctly. This will be set to an error message if any link in the * keychain is invalid for whatever reason (bad signature, not in nbf-exp window, etc). If this is non-null, the * keychain might have been tampered with. The player will always be disconnected if this is non-null. + * + * @phpstan-var NonThreadSafeValue|string|null */ - private Translatable|string|null $error = "Unknown"; + private NonThreadSafeValue|string|null $error = "Unknown"; /** * Whether the player is logged into Xbox Live. This is true if any link in the keychain is signed with the Mojang * root public key. @@ -77,7 +80,8 @@ class ProcessLoginTask extends AsyncTask{ $this->clientPublicKey = $this->validateChain(); $this->error = null; }catch(VerifyLoginException $e){ - $this->error = $e->getDisconnectMessage(); + $disconnectMessage = $e->getDisconnectMessage(); + $this->error = $disconnectMessage instanceof Translatable ? new NonThreadSafeValue($disconnectMessage) : $disconnectMessage; } } @@ -195,6 +199,6 @@ class ProcessLoginTask extends AsyncTask{ * @phpstan-var \Closure(bool, bool, Translatable|string|null, ?string) : void $callback */ $callback = $this->fetchLocal(self::TLS_KEY_ON_COMPLETION); - $callback($this->authenticated, $this->authRequired, $this->error, $this->clientPublicKey); + $callback($this->authenticated, $this->authRequired, $this->error instanceof NonThreadSafeValue ? $this->error->deserialize() : $this->error, $this->clientPublicKey); } } diff --git a/src/network/mcpe/compression/CompressBatchTask.php b/src/network/mcpe/compression/CompressBatchTask.php index b863076fa..96e9051b6 100644 --- a/src/network/mcpe/compression/CompressBatchTask.php +++ b/src/network/mcpe/compression/CompressBatchTask.php @@ -24,21 +24,26 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\compression; use pocketmine\scheduler\AsyncTask; +use pocketmine\thread\NonThreadSafeValue; class CompressBatchTask extends AsyncTask{ private const TLS_KEY_PROMISE = "promise"; + /** @phpstan-var NonThreadSafeValue */ + private NonThreadSafeValue $compressor; + public function __construct( private string $data, CompressBatchPromise $promise, - private Compressor $compressor + Compressor $compressor ){ + $this->compressor = new NonThreadSafeValue($compressor); $this->storeLocal(self::TLS_KEY_PROMISE, $promise); } public function onRun() : void{ - $this->setResult($this->compressor->compress($this->data)); + $this->setResult($this->compressor->deserialize()->compress($this->data)); } public function onCompletion() : void{ diff --git a/src/network/mcpe/raklib/PthreadsChannelReader.php b/src/network/mcpe/raklib/PthreadsChannelReader.php index d5b52c790..68c718b0f 100644 --- a/src/network/mcpe/raklib/PthreadsChannelReader.php +++ b/src/network/mcpe/raklib/PthreadsChannelReader.php @@ -26,7 +26,10 @@ namespace pocketmine\network\mcpe\raklib; use raklib\server\ipc\InterThreadChannelReader; final class PthreadsChannelReader implements InterThreadChannelReader{ - public function __construct(private \Threaded $buffer){} + /** + * @phpstan-param \ThreadedArray $buffer + */ + public function __construct(private \ThreadedArray $buffer){} public function read() : ?string{ return $this->buffer->shift(); diff --git a/src/network/mcpe/raklib/PthreadsChannelWriter.php b/src/network/mcpe/raklib/PthreadsChannelWriter.php index 5462f7776..afbeefdd2 100644 --- a/src/network/mcpe/raklib/PthreadsChannelWriter.php +++ b/src/network/mcpe/raklib/PthreadsChannelWriter.php @@ -26,7 +26,10 @@ namespace pocketmine\network\mcpe\raklib; use raklib\server\ipc\InterThreadChannelWriter; final class PthreadsChannelWriter implements InterThreadChannelWriter{ - public function __construct(private \Threaded $buffer){} + /** + * @phpstan-param \ThreadedArray $buffer + */ + public function __construct(private \ThreadedArray $buffer){} public function write(string $str) : void{ $this->buffer[] = $str; diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 1cb82ef5a..1adb3c844 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -85,8 +85,10 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $this->sleeper = new SleeperNotifier(); - $mainToThreadBuffer = new \Threaded(); - $threadToMainBuffer = new \Threaded(); + /** @phpstan-var \ThreadedArray $mainToThreadBuffer */ + $mainToThreadBuffer = new \ThreadedArray(); + /** @phpstan-var \ThreadedArray $threadToMainBuffer */ + $threadToMainBuffer = new \ThreadedArray(); $this->rakLib = new RakLibServer( $this->server->getLogger(), diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 13523f3a8..ccdadca55 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; use pocketmine\snooze\SleeperNotifier; +use pocketmine\thread\NonThreadSafeValue; use pocketmine\thread\Thread; use raklib\generic\Socket; use raklib\generic\SocketException; @@ -43,19 +44,27 @@ class RakLibServer extends Thread{ protected bool $cleanShutdown = false; protected bool $ready = false; protected string $mainPath; - public ?RakLibThreadCrashInfo $crashInfo = null; + /** @phpstan-var NonThreadSafeValue|null */ + public ?NonThreadSafeValue $crashInfo = null; + /** @phpstan-var NonThreadSafeValue */ + protected NonThreadSafeValue $address; + /** + * @phpstan-param \ThreadedArray $mainToThreadBuffer + * @phpstan-param \ThreadedArray $threadToMainBuffer + */ public function __construct( protected \ThreadedLogger $logger, - protected \Threaded $mainToThreadBuffer, - protected \Threaded $threadToMainBuffer, - protected InternetAddress $address, + protected \ThreadedArray $mainToThreadBuffer, + protected \ThreadedArray $threadToMainBuffer, + InternetAddress $address, protected int $serverId, protected int $maxMtuSize, protected int $protocolVersion, protected SleeperNotifier $mainThreadNotifier ){ $this->mainPath = \pocketmine\PATH; + $this->address = new NonThreadSafeValue($address); } /** @@ -75,12 +84,12 @@ class RakLibServer extends Thread{ } public function getCrashInfo() : ?RakLibThreadCrashInfo{ - return $this->crashInfo; + return $this->crashInfo?->deserialize(); } private function setCrashInfo(RakLibThreadCrashInfo $info) : void{ $this->synchronized(function(RakLibThreadCrashInfo $info) : void{ - $this->crashInfo = $info; + $this->crashInfo = new NonThreadSafeValue($info); $this->notify(); }, $info); } @@ -91,7 +100,7 @@ class RakLibServer extends Thread{ while(!$this->ready && $this->crashInfo === null){ $this->wait(); } - $crashInfo = $this->crashInfo; + $crashInfo = $this->crashInfo?->deserialize(); if($crashInfo !== null){ if($crashInfo->getClass() === SocketException::class){ throw new SocketException($crashInfo->getMessage()); @@ -110,7 +119,7 @@ class RakLibServer extends Thread{ register_shutdown_function([$this, "shutdownHandler"]); try{ - $socket = new Socket($this->address); + $socket = new Socket($this->address->deserialize()); }catch(SocketException $e){ $this->setCrashInfo(RakLibThreadCrashInfo::fromThrowable($e)); return; diff --git a/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php index 739acf051..723cb3730 100644 --- a/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php +++ b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php @@ -27,8 +27,11 @@ use pocketmine\snooze\SleeperNotifier; use raklib\server\ipc\InterThreadChannelWriter; final class SnoozeAwarePthreadsChannelWriter implements InterThreadChannelWriter{ + /** + * @phpstan-param \ThreadedArray $buffer + */ public function __construct( - private \Threaded $buffer, + private \ThreadedArray $buffer, private SleeperNotifier $notifier ){} diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 76fe6c052..e8097c3df 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -158,7 +158,7 @@ class AsyncPool{ throw new \InvalidArgumentException("Cannot submit the same AsyncTask instance more than once"); } - $task->progressUpdates = new \Threaded(); + $task->progressUpdates = new \ThreadedArray(); $task->setSubmitted(); $this->getWorker($worker)->stack($task); diff --git a/src/scheduler/AsyncTask.php b/src/scheduler/AsyncTask.php index 9b8866f43..2194f47db 100644 --- a/src/scheduler/AsyncTask.php +++ b/src/scheduler/AsyncTask.php @@ -23,11 +23,11 @@ declare(strict_types=1); namespace pocketmine\scheduler; -use pocketmine\utils\AssumptionFailedError; +use pocketmine\thread\NonThreadSafeValue; use function igbinary_serialize; use function igbinary_unserialize; +use function is_null; use function is_scalar; -use function is_string; use function spl_object_id; /** @@ -51,15 +51,10 @@ use function spl_object_id; * thread, e.g. during {@link AsyncTask::onCompletion()} or {@link AsyncTask::onProgressUpdate()}. This means that * whatever you do in onRun() must be able to work without the Server instance. * - * WARNING: Any non-Threaded objects WILL BE SERIALIZED when assigned to members of AsyncTasks or other Threaded object. - * If later accessed from said Threaded object, you will be operating on a COPY OF THE OBJECT, NOT THE ORIGINAL OBJECT. - * If you want to store non-serializable objects to access when the task completes, store them using + * If you want to store non-thread-safe objects to access when the task completes, store them using * {@link AsyncTask::storeLocal}. - * - * WARNING: Arrays are converted to Volatile objects when assigned as members of Threaded objects. - * Keep this in mind when using arrays stored as members of your AsyncTask. */ -abstract class AsyncTask extends \Threaded{ +abstract class AsyncTask extends \ThreadedRunnable{ /** * @var \ArrayObject|mixed[]|null object hash => mixed data * @phpstan-var \ArrayObject>|null @@ -71,10 +66,11 @@ abstract class AsyncTask extends \Threaded{ /** @var AsyncWorker|null $worker */ public $worker = null; - public \Threaded $progressUpdates; + /** @phpstan-var \ThreadedArray */ + public \ThreadedArray $progressUpdates; - private string|int|bool|null|float $result = null; - private bool $serialized = false; + /** @phpstan-var NonThreadSafeValue|string|int|bool|float|null */ + private NonThreadSafeValue|string|int|bool|null|float $result = null; private bool $cancelRun = false; private bool $submitted = false; @@ -117,15 +113,14 @@ abstract class AsyncTask extends \Threaded{ * @return mixed */ public function getResult(){ - if($this->serialized){ - if(!is_string($this->result)) throw new AssumptionFailedError("Result expected to be a serialized string"); - return igbinary_unserialize($this->result); + if($this->result instanceof NonThreadSafeValue){ + return $this->result->deserialize(); } return $this->result; } public function setResult(mixed $result) : void{ - $this->result = ($this->serialized = !is_scalar($result)) ? igbinary_serialize($result) : $result; + $this->result = is_scalar($result) || is_null($result) ? $result : new NonThreadSafeValue($result); } public function cancelRun() : void{ @@ -164,15 +159,14 @@ abstract class AsyncTask extends \Threaded{ * @param mixed $progress A value that can be safely serialize()'ed. */ public function publishProgress(mixed $progress) : void{ - $this->progressUpdates[] = igbinary_serialize($progress); + $this->progressUpdates[] = igbinary_serialize($progress) ?? throw new \InvalidArgumentException("Progress must be serializable"); } /** * @internal Only call from AsyncPool.php on the main thread */ public function checkProgressUpdates() : void{ - while($this->progressUpdates->count() !== 0){ - $progress = $this->progressUpdates->shift(); + while(($progress = $this->progressUpdates->shift()) !== null){ $this->onProgressUpdate(igbinary_unserialize($progress)); } } diff --git a/src/thread/CommonThreadPartsTrait.php b/src/thread/CommonThreadPartsTrait.php index 8268d5c3f..777acd009 100644 --- a/src/thread/CommonThreadPartsTrait.php +++ b/src/thread/CommonThreadPartsTrait.php @@ -28,8 +28,11 @@ use pocketmine\Server; use function error_reporting; trait CommonThreadPartsTrait{ - /** @var \Threaded|\ClassLoader[]|null */ - private ?\Threaded $classLoaders = null; + /** + * @var \ThreadedArray|\ClassLoader[]|null + * @phpstan-var \ThreadedArray|null + */ + private ?\ThreadedArray $classLoaders = null; protected ?string $composerAutoloaderPath = null; protected bool $isKilled = false; @@ -52,7 +55,7 @@ trait CommonThreadPartsTrait{ } if($this->classLoaders === null){ - $this->classLoaders = new \Threaded(); + $this->classLoaders = new \ThreadedArray(); }else{ foreach($this->classLoaders as $k => $autoloader){ unset($this->classLoaders[$k]); diff --git a/src/thread/NonThreadSafeValue.php b/src/thread/NonThreadSafeValue.php new file mode 100644 index 000000000..9d443b065 --- /dev/null +++ b/src/thread/NonThreadSafeValue.php @@ -0,0 +1,57 @@ +variable = igbinary_serialize($variable) ?? throw new \InvalidArgumentException("Cannot serialize variable of type " . get_debug_type($variable)); + } + + /** + * Returns a deserialized copy of the original variable. + * + * @phpstan-return TValue + */ + public function deserialize() : mixed{ + return igbinary_unserialize($this->variable); + } +} diff --git a/src/thread/ThreadManager.php b/src/thread/ThreadManager.php index f383b2c49..a60d9bf9e 100644 --- a/src/thread/ThreadManager.php +++ b/src/thread/ThreadManager.php @@ -25,7 +25,7 @@ namespace pocketmine\thread; use function spl_object_id; -class ThreadManager extends \Volatile{ +class ThreadManager extends \ThreadedBase{ private static ?self $instance = null; @@ -40,12 +40,19 @@ class ThreadManager extends \Volatile{ return self::$instance; } + /** @phpstan-var \ThreadedArray */ + private \ThreadedArray $threads; + + private function __construct(){ + $this->threads = new \ThreadedArray(); + } + public function add(Worker|Thread $thread) : void{ - $this[spl_object_id($thread)] = $thread; + $this->threads[spl_object_id($thread)] = $thread; } public function remove(Worker|Thread $thread) : void{ - unset($this[spl_object_id($thread)]); + unset($this->threads[spl_object_id($thread)]); } /** @@ -56,7 +63,7 @@ class ThreadManager extends \Volatile{ /** * @var Worker|Thread $thread */ - foreach($this as $key => $thread){ + foreach($this->threads as $key => $thread){ $array[$key] = $thread; } diff --git a/src/utils/MainLogger.php b/src/utils/MainLogger.php index 6f65303bf..f79615586 100644 --- a/src/utils/MainLogger.php +++ b/src/utils/MainLogger.php @@ -194,6 +194,9 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ Terminal::writeLine($message); $this->logWriterThread->write($time->format("Y-m-d") . " " . TextFormat::clean($message) . PHP_EOL); + /** + * @var \ThreadedLoggerAttachment $attachment + */ foreach($this->attachments as $attachment){ $attachment->log($level, $message); } diff --git a/src/utils/MainLoggerThread.php b/src/utils/MainLoggerThread.php index b56562134..c7287e349 100644 --- a/src/utils/MainLoggerThread.php +++ b/src/utils/MainLoggerThread.php @@ -30,14 +30,15 @@ use function is_resource; use function touch; final class MainLoggerThread extends \Thread{ - private \Threaded $buffer; + /** @phpstan-var \ThreadedArray */ + private \ThreadedArray $buffer; private bool $syncFlush = false; private bool $shutdown = false; public function __construct( private string $logFile ){ - $this->buffer = new \Threaded(); + $this->buffer = new \ThreadedArray(); touch($this->logFile); } @@ -72,9 +73,7 @@ final class MainLoggerThread extends \Thread{ * @param resource $logResource */ private function writeLogStream($logResource) : void{ - while($this->buffer->count() > 0){ - /** @var string $chunk */ - $chunk = $this->buffer->shift(); + while(($chunk = $this->buffer->shift()) !== null){ fwrite($logResource, $chunk); } diff --git a/tests/phpstan/configs/phpstan-bugs.neon b/tests/phpstan/configs/phpstan-bugs.neon index 3ee56e8be..f45f9a643 100644 --- a/tests/phpstan/configs/phpstan-bugs.neon +++ b/tests/phpstan/configs/phpstan-bugs.neon @@ -46,9 +46,9 @@ parameters: path: ../../../src/plugin/PluginManager.php - - message: "#^Offset \\(int\\|string\\) on array\\ in isset\\(\\) always exists and is not nullable\\.$#" + message: "#^Parameter \\#1 \\$work of method Worker\\:\\:stack\\(\\) expects Threaded, pocketmine\\\\scheduler\\\\AsyncTask given\\.$#" count: 1 - path: ../../../src/plugin/PluginManager.php + path: ../../../src/scheduler/AsyncPool.php - message: "#^Static property pocketmine\\\\scheduler\\\\AsyncTask\\:\\:\\$threadLocalStorage \\(ArrayObject\\\\>\\|null\\) does not accept non\\-empty\\-array\\\\>\\|ArrayObject\\\\>\\.$#" @@ -56,12 +56,12 @@ parameters: path: ../../../src/scheduler/AsyncTask.php - - message: "#^Property pocketmine\\\\thread\\\\Thread\\:\\:\\$classLoaders \\(\\(iterable\\&Threaded\\)\\|null\\) does not accept array\\\\|\\(iterable\\&Threaded\\)\\.$#" + message: "#^Property pocketmine\\\\thread\\\\Thread\\:\\:\\$classLoaders \\(ThreadedArray\\\\|null\\) does not accept array\\{ClassLoader\\}\\|ThreadedArray\\\\.$#" count: 1 path: ../../../src/thread/Thread.php - - message: "#^Property pocketmine\\\\thread\\\\Worker\\:\\:\\$classLoaders \\(\\(iterable\\&Threaded\\)\\|null\\) does not accept array\\\\|\\(iterable\\&Threaded\\)\\.$#" + message: "#^Property pocketmine\\\\thread\\\\Worker\\:\\:\\$classLoaders \\(ThreadedArray\\\\|null\\) does not accept array\\{ClassLoader\\}\\|ThreadedArray\\\\.$#" count: 1 path: ../../../src/thread/Worker.php diff --git a/tests/phpstan/stubs/pthreads.stub b/tests/phpstan/stubs/pthreads.stub index 054c8c372..a48fceea0 100644 --- a/tests/phpstan/stubs/pthreads.stub +++ b/tests/phpstan/stubs/pthreads.stub @@ -1,6 +1,33 @@ + * @implements \IteratorAggregate */ -class Threaded implements \Traversable{} +abstract class ThreadedBase implements \IteratorAggregate{ + + /** + * @template TReturn + * @param \Closure() : TReturn $function + * @param mixed ...$args + * @return TReturn + */ + public function synchronized(\Closure $function, mixed ...$args) : mixed{} +} + +/** + * @template TKey of array-key + * @template TValue + * @implements ArrayAccess + */ +final class ThreadedArray extends ThreadedBase implements Countable, ArrayAccess{ + + /** + * @return TValue|null + */ + public function pop() : mixed{} + + /** + * @return TValue|null + */ + public function shift() : mixed{} +} \ No newline at end of file From 06ad1a2d2b37cdead3640a002f7a7c04e0a16274 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:04:01 +0000 Subject: [PATCH 491/692] Updated dependencies to release versions --- composer.json | 6 +++--- composer.lock | 43 ++++++++++++++++++++----------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/composer.json b/composer.json index 39d0a9e16..f4f97914f 100644 --- a/composer.json +++ b/composer.json @@ -40,17 +40,17 @@ "pocketmine/bedrock-protocol": "~18.0.0+bedrock-1.19.50", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", - "pocketmine/classloader": "dev-pthreads-v5", + "pocketmine/classloader": "^0.3.0", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", "pocketmine/locale-data": "~2.18.0", "pocketmine/log": "^0.4.0", - "pocketmine/log-pthreads": "dev-pthreads-v5", + "pocketmine/log-pthreads": "^0.5.0", "pocketmine/math": "^0.4.0", "pocketmine/nbt": "^0.3.2", "pocketmine/raklib": "^0.14.2", "pocketmine/raklib-ipc": "^0.1.0", - "pocketmine/snooze": "dev-pthreads-v5", + "pocketmine/snooze": "^0.4.0", "ramsey/uuid": "^4.1", "symfony/filesystem": "^5.4" }, diff --git a/composer.lock b/composer.lock index d31480efa..fec4f42dc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5725b919e65c02842812b1fed8a3d77c", + "content-hash": "17ca826af1a32c9768cd162e75d10ad5", "packages": [ { "name": "adhocore/json-comment", @@ -469,16 +469,16 @@ }, { "name": "pocketmine/classloader", - "version": "dev-pthreads-v5", + "version": "0.3.0", "source": { "type": "git", "url": "https://github.com/pmmp/ClassLoader.git", - "reference": "dc98186e947d8940b8f6f4dbb2837f7c961a4812" + "reference": "407caf521186ec1f03024f39031cc681ad491026" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/dc98186e947d8940b8f6f4dbb2837f7c961a4812", - "reference": "dc98186e947d8940b8f6f4dbb2837f7c961a4812", + "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/407caf521186ec1f03024f39031cc681ad491026", + "reference": "407caf521186ec1f03024f39031cc681ad491026", "shasum": "" }, "require": { @@ -508,9 +508,9 @@ "description": "Ad-hoc autoloading components used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/ClassLoader/issues", - "source": "https://github.com/pmmp/ClassLoader/tree/pthreads-v5" + "source": "https://github.com/pmmp/ClassLoader/tree/0.3.0" }, - "time": "2023-01-20T18:50:37+00:00" + "time": "2023-01-23T19:46:53+00:00" }, { "name": "pocketmine/color", @@ -655,16 +655,16 @@ }, { "name": "pocketmine/log-pthreads", - "version": "dev-pthreads-v5", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/pmmp/LogPthreads.git", - "reference": "83a66c9b8c39531b97a3b08c0ea97db967a3c60a" + "reference": "0ecfea6dcfc9a9f5c86e126ac1661732de5c5666" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/83a66c9b8c39531b97a3b08c0ea97db967a3c60a", - "reference": "83a66c9b8c39531b97a3b08c0ea97db967a3c60a", + "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/0ecfea6dcfc9a9f5c86e126ac1661732de5c5666", + "reference": "0ecfea6dcfc9a9f5c86e126ac1661732de5c5666", "shasum": "" }, "require": { @@ -693,9 +693,9 @@ "description": "Logging components specialized for pthreads used by PocketMine-MP and related projects", "support": { "issues": "https://github.com/pmmp/LogPthreads/issues", - "source": "https://github.com/pmmp/LogPthreads/tree/pthreads-v5" + "source": "https://github.com/pmmp/LogPthreads/tree/0.5.0" }, - "time": "2023-01-20T19:45:45+00:00" + "time": "2023-01-23T19:52:12+00:00" }, { "name": "pocketmine/math", @@ -866,16 +866,16 @@ }, { "name": "pocketmine/snooze", - "version": "dev-pthreads-v5", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/pmmp/Snooze.git", - "reference": "8589ddfa1672215dcc78d8edb7acb4cf67d59d5a" + "reference": "6b1d6cc645d674590ff9be2438ac00032f9ee292" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Snooze/zipball/8589ddfa1672215dcc78d8edb7acb4cf67d59d5a", - "reference": "8589ddfa1672215dcc78d8edb7acb4cf67d59d5a", + "url": "https://api.github.com/repos/pmmp/Snooze/zipball/6b1d6cc645d674590ff9be2438ac00032f9ee292", + "reference": "6b1d6cc645d674590ff9be2438ac00032f9ee292", "shasum": "" }, "require": { @@ -900,9 +900,9 @@ "description": "Thread notification management library for code using the pthreads extension", "support": { "issues": "https://github.com/pmmp/Snooze/issues", - "source": "https://github.com/pmmp/Snooze/tree/pthreads-v5" + "source": "https://github.com/pmmp/Snooze/tree/0.4.0" }, - "time": "2023-01-20T18:19:39+00:00" + "time": "2023-01-23T19:43:19+00:00" }, { "name": "ramsey/collection", @@ -3374,10 +3374,7 @@ "stability-flags": { "pocketmine/bedrock-block-upgrade-schema": 20, "pocketmine/bedrock-data": 20, - "pocketmine/bedrock-item-upgrade-schema": 20, - "pocketmine/classloader": 20, - "pocketmine/log-pthreads": 20, - "pocketmine/snooze": 20 + "pocketmine/bedrock-item-upgrade-schema": 20 }, "prefer-stable": false, "prefer-lowest": false, From 002f7d6826ba0fa7a91feeddf785641b640e3f71 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:21:06 +0000 Subject: [PATCH 492/692] PlayerDuplicateLoginEvent: remove dead code --- src/event/player/PlayerDuplicateLoginEvent.php | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/event/player/PlayerDuplicateLoginEvent.php b/src/event/player/PlayerDuplicateLoginEvent.php index eddd544fd..fb0f8186e 100644 --- a/src/event/player/PlayerDuplicateLoginEvent.php +++ b/src/event/player/PlayerDuplicateLoginEvent.php @@ -38,16 +38,12 @@ class PlayerDuplicateLoginEvent extends Event implements Cancellable{ use CancellableTrait; use PlayerDisconnectEventTrait; - private Translatable|string $disconnectMessage; - public function __construct( private NetworkSession $connectingSession, private NetworkSession $existingSession, private Translatable|string $disconnectReason, private Translatable|string|null $disconnectScreenMessage - ){ - $this->disconnectMessage = KnownTranslationFactory::disconnectionScreen_loggedinOtherLocation(); - } + ){} public function getConnectingSession() : NetworkSession{ return $this->connectingSession; @@ -56,15 +52,4 @@ class PlayerDuplicateLoginEvent extends Event implements Cancellable{ public function getExistingSession() : NetworkSession{ return $this->existingSession; } - - /** - * Returns the message shown to the session which gets disconnected. - */ - public function getDisconnectMessage() : Translatable|string{ - return $this->disconnectMessage; - } - - public function setDisconnectMessage(Translatable|string $message) : void{ - $this->disconnectMessage = $message; - } } From 375ec8e00cce63ae28d84ac5b1c1cd93919ca72a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:36:02 +0000 Subject: [PATCH 493/692] Fix CS --- src/event/player/PlayerDuplicateLoginEvent.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/event/player/PlayerDuplicateLoginEvent.php b/src/event/player/PlayerDuplicateLoginEvent.php index fb0f8186e..3acb56615 100644 --- a/src/event/player/PlayerDuplicateLoginEvent.php +++ b/src/event/player/PlayerDuplicateLoginEvent.php @@ -26,7 +26,6 @@ namespace pocketmine\event\player; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; use pocketmine\event\Event; -use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\Translatable; use pocketmine\network\mcpe\NetworkSession; From 5aa8b953a817491ea04f33cb1bc1e17e94796acf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:38:35 +0000 Subject: [PATCH 494/692] Release 5.0.0-ALPHA8 --- changelogs/5.0-alpha.md | 40 ++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 09d92bc7a..784111476 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -869,3 +869,43 @@ Released 18th January 2023. - Built-in commands now declare their names inside the class constructor, rather than accepting them as parameters. This improves code consistency. - `NetworkSession` disconnect APIs now accept `Translatable|string` instead of `string` to allow localized disconnect messages. - All external usages of `KnownTranslationKeys` are now removed. All localized messages are now sent using `Translatable` objects (usually from `KnownTranslationFactory`). + +# 5.0.0-ALPHA8 +Released 23rd January 2023. + +## Core +- Updated `ext-pthreads` requirement to `^5.1.0`. This version improves performance, memory usage, includes BC-breaking API changes, and removes a lot of confusing behaviour. + - See [`ext-pthreads` 5.0.0 release](https://github.com/pmmp/pthreads/releases/tag/5.0.0) for more information. + - For the most part, plugins will be unaffected, unless using `Threaded` objects directly, or directly interacting with other pthreads APIs. + +## API +### Overview +- It's now possible to specify a different disconnect reason and disconnection screen message. This is useful if you want to display a fancy disconnect screen, but don't want to spam the server log with useless information. + +### `pocketmine\event\player` +- The following API methods have been removed: + - `PlayerKickEvent->getReason()` - replaced by `getDisconnectReason()` and `getDisconnectScreenMessage()` + - `PlayerKickEvent->setReason()` - replaced by `setDisconnectReason()` and `setDisconnectScreenMessage()` + - `PlayerDuplicateLoginEvent->getDisconnectMessage()` - replaced by `getDisconnectReason()` and `getDisconnectScreenMessage()` + - `PlayerDuplicateLoginEvent->setDisconnectMessage()` - replaced by `setDisconnectReason()` and `setDisconnectScreenMessage()` +- The following new API methods have been added: + - `public PlayerKickEvent->getDisconnectReason() : Translatable|string` - returns the reason for the disconnection displayed in the console and server log + - `public PlayerKickEvent->setDisconnectReason(Translatable|string $disconnectReason) : void` - sets the reason for the disconnection displayed in the console and server log + - `public PlayerKickEvent->getDisconnectScreenMessage() : Translatable|string|null` - returns the message to be displayed on the disconnect screen (the message in `getDisconnectReason()` is used if null is returned) + - `public PlayerKickEvent->setDisconnectScreenMessage(Translatable|string|null $disconnectScreenMessage) : void` - sets the message to be displayed on the disconnect screen (the message in `setDisconnectReason()` is used if null is passed) + - `public PlayerDuplicateLoginEvent->getDisconnectReason() : Translatable|string` - returns the reason for the disconnection displayed in the console and server log + - `public PlayerDuplicateLoginEvent->setDisconnectReason(Translatable|string $disconnectReason) : void` - sets the reason for the disconnection displayed in the console and server log + - `public PlayerDuplicateLoginEvent->getDisconnectScreenMessage() : Translatable|string|null` - returns the message to be displayed on the disconnect screen (the message in `getDisconnectReason()` is used if null is returned) + - `public PlayerDuplicateLoginEvent->setDisconnectScreenMessage(Translatable|string|null $disconnectScreenMessage) : void` - sets the message to be displayed on the disconnect screen (the message in `setDisconnectReason()` is used if null is passed) + +### `pocketmine\network` +- The following API methods have changed signatures: + - `NetworkSessionManager->close()` now accepts an additional `Translatable|string|null $disconnectScreenMessage` parameter. + +### `pocketmine\player` +- The following API methods have changed signatures: + - `Player->kick()` now accepts an additional `Translatable|string|null $disconnectScreenMessage` parameter, which is the message to be displayed on the disconnect screen (the message in `$reason` is used if null is passed) + - `Player->disconnect()` now accepts an additional `Translatable|string|null $disconnectScreenMessage` parameter, which is the message to be displayed on the disconnect screen (the message in `$reason` is used if null is passed) + +## Internals +- `NetworkSession` disconnect methods have been altered to allow specifying a different disconnect reason and disconnection screen message. \ No newline at end of file diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 98044d7de..55e6d705c 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA8"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 92896c78da01b68ee9a281bb73da163783b765f4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Jan 2023 20:38:35 +0000 Subject: [PATCH 495/692] 5.0.0-ALPHA9 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 55e6d705c..01b260f6f 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA8"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA9"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From cbaff1caecefea7abc186836de95f2db3c816e9f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 24 Jan 2023 15:49:42 +0000 Subject: [PATCH 496/692] BlockPlaceEvent: use BlockTransaction, closes #1760 BlockPlaceEvent no longer extends BlockEvent, since it's now a multi-block event getBlockReplaced() is removed getTransaction() is added to be honest, BlockPlaceEvent should be something like PlayerBlockPlaceEvent... --- src/event/block/BlockPlaceEvent.php | 25 ++++++++++++++++--------- src/world/World.php | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/event/block/BlockPlaceEvent.php b/src/event/block/BlockPlaceEvent.php index eeb6a7dbc..b92569fc1 100644 --- a/src/event/block/BlockPlaceEvent.php +++ b/src/event/block/BlockPlaceEvent.php @@ -26,24 +26,24 @@ namespace pocketmine\event\block; use pocketmine\block\Block; use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; +use pocketmine\event\Event; use pocketmine\item\Item; use pocketmine\player\Player; +use pocketmine\world\BlockTransaction; /** - * Called when a player places a block + * Called when a player initiates a block placement action. + * More than one block may be changed by a single placement action, for example when placing a door. */ -class BlockPlaceEvent extends BlockEvent implements Cancellable{ +class BlockPlaceEvent extends Event implements Cancellable{ use CancellableTrait; public function __construct( protected Player $player, - Block $blockPlace, - protected Block $blockReplace, + protected BlockTransaction $transaction, protected Block $blockAgainst, protected Item $item - ){ - parent::__construct($blockPlace); - } + ){} /** * Returns the player who is placing the block. @@ -59,8 +59,15 @@ class BlockPlaceEvent extends BlockEvent implements Cancellable{ return clone $this->item; } - public function getBlockReplaced() : Block{ - return $this->blockReplace; + /** + * Returns a BlockTransaction object containing all the block positions that will be changed by this event, and the + * states they will be changed to. + * + * This will usually contain only one block, but may contain more if the block being placed is a multi-block + * structure such as a door or bed. + */ + public function getTransaction() : BlockTransaction{ + return $this->transaction; } public function getBlockAgainst() : Block{ diff --git a/src/world/World.php b/src/world/World.php index 2d7f18d4e..e6f240614 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -2051,7 +2051,7 @@ class World implements ChunkManager{ } if($player !== null){ - $ev = new BlockPlaceEvent($player, $hand, $blockReplace, $blockClicked, $item); + $ev = new BlockPlaceEvent($player, $tx, $blockClicked, $item); if($player->isSpectator()){ $ev->cancel(); } From 2f469ef4a0baa9d1157e578c7ecc7e78fd27411c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 25 Jan 2023 18:50:14 +0000 Subject: [PATCH 497/692] Added mangrove, azalea and flowering azalea leaves --- src/block/BlockLegacyIdHelper.php | 22 +++--- src/block/BlockTypeIds.php | 5 +- src/block/Leaves.php | 32 +++++--- src/block/VanillaBlocks.php | 9 ++- src/block/utils/LeavesType.php | 74 +++++++++++++++++++ .../convert/BlockObjectToStateSerializer.php | 3 + .../convert/BlockStateDeserializerHelper.php | 8 ++ .../convert/BlockStateSerializerHelper.php | 2 +- .../BlockStateToObjectDeserializer.php | 35 ++++----- src/item/StringToItemParser.php | 3 + .../block_factory_consistency_check.json | 2 +- 11 files changed, 150 insertions(+), 45 deletions(-) create mode 100644 src/block/utils/LeavesType.php diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index 0a1b74538..c7cb2f5d7 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -26,6 +26,7 @@ namespace pocketmine\block; use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; +use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WoodType; use pocketmine\item\VanillaItems; @@ -108,15 +109,18 @@ final class BlockLegacyIdHelper{ }); } - public static function getLeavesIdentifier(TreeType $treeType) : BID{ - return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_LEAVES, - TreeType::SPRUCE()->id() => Ids::SPRUCE_LEAVES, - TreeType::BIRCH()->id() => Ids::BIRCH_LEAVES, - TreeType::JUNGLE()->id() => Ids::JUNGLE_LEAVES, - TreeType::ACACIA()->id() => Ids::ACACIA_LEAVES, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_LEAVES, - default => throw new AssumptionFailedError("All tree types should be covered") + public static function getLeavesIdentifier(LeavesType $leavesType) : BID{ + return new BID(match($leavesType->id()){ + LeavesType::OAK()->id() => Ids::OAK_LEAVES, + LeavesType::SPRUCE()->id() => Ids::SPRUCE_LEAVES, + LeavesType::BIRCH()->id() => Ids::BIRCH_LEAVES, + LeavesType::JUNGLE()->id() => Ids::JUNGLE_LEAVES, + LeavesType::ACACIA()->id() => Ids::ACACIA_LEAVES, + LeavesType::DARK_OAK()->id() => Ids::DARK_OAK_LEAVES, + LeavesType::MANGROVE()->id() => Ids::MANGROVE_LEAVES, + LeavesType::AZALEA()->id() => Ids::AZALEA_LEAVES, + LeavesType::FLOWERING_AZALEA()->id() => Ids::FLOWERING_AZALEA_LEAVES, + default => throw new AssumptionFailedError("All leaves types should be covered") }); } diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 66fda9411..324ef60ce 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -709,8 +709,11 @@ final class BlockTypeIds{ public const CHAIN = 10682; public const SCULK = 10683; public const GLOWING_ITEM_FRAME = 10684; + public const MANGROVE_LEAVES = 10685; + public const AZALEA_LEAVES = 10686; + public const FLOWERING_AZALEA_LEAVES = 10687; - public const FIRST_UNUSED_BLOCK_ID = 10685; + public const FIRST_UNUSED_BLOCK_ID = 10688; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/Leaves.php b/src/block/Leaves.php index c93d798da..9dc38e091 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\TreeType; use pocketmine\data\runtime\RuntimeDataReader; @@ -39,13 +40,13 @@ use pocketmine\world\World; use function mt_rand; class Leaves extends Transparent{ - protected TreeType $treeType; + protected LeavesType $leavesType; //immutable for now protected bool $noDecay = false; protected bool $checkDecay = false; - public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, TreeType $treeType){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, LeavesType $leavesType){ parent::__construct($idInfo, $name, $typeInfo); - $this->treeType = $treeType; + $this->leavesType = $leavesType; } public function getRequiredStateDataBits() : int{ return 2; } @@ -55,6 +56,8 @@ class Leaves extends Transparent{ $w->bool($this->checkDecay); } + public function getLeavesType() : LeavesType{ return $this->leavesType; } + public function isNoDecay() : bool{ return $this->noDecay; } /** @return $this */ @@ -140,17 +143,22 @@ class Leaves extends Transparent{ $drops = []; if(mt_rand(1, 20) === 1){ //Saplings - $drops[] = (match($this->treeType){ - TreeType::ACACIA() => VanillaBlocks::ACACIA_SAPLING(), - TreeType::BIRCH() => VanillaBlocks::BIRCH_SAPLING(), - TreeType::DARK_OAK() => VanillaBlocks::DARK_OAK_SAPLING(), - TreeType::JUNGLE() => VanillaBlocks::JUNGLE_SAPLING(), - TreeType::OAK() => VanillaBlocks::OAK_SAPLING(), - TreeType::SPRUCE() => VanillaBlocks::SPRUCE_SAPLING(), + $sapling = (match($this->leavesType){ + LeavesType::ACACIA() => VanillaBlocks::ACACIA_SAPLING(), + LeavesType::BIRCH() => VanillaBlocks::BIRCH_SAPLING(), + LeavesType::DARK_OAK() => VanillaBlocks::DARK_OAK_SAPLING(), + LeavesType::JUNGLE() => VanillaBlocks::JUNGLE_SAPLING(), + LeavesType::OAK() => VanillaBlocks::OAK_SAPLING(), + LeavesType::SPRUCE() => VanillaBlocks::SPRUCE_SAPLING(), + LeavesType::MANGROVE(), //TODO: mangrove propagule + LeavesType::AZALEA(), LeavesType::FLOWERING_AZALEA() => null, //TODO: azalea default => throw new AssumptionFailedError("Unreachable") - })->asItem(); + })?->asItem(); + if($sapling !== null){ + $drops[] = $sapling; + } } - if(($this->treeType->equals(TreeType::OAK()) || $this->treeType->equals(TreeType::DARK_OAK())) && mt_rand(1, 200) === 1){ //Apples + if(($this->leavesType->equals(LeavesType::OAK()) || $this->leavesType->equals(LeavesType::DARK_OAK())) && mt_rand(1, 200) === 1){ //Apples $drops[] = VanillaItems::APPLE(); } if(mt_rand(1, 50) === 1){ diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 1e1f7829c..ee4e3595a 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -54,6 +54,7 @@ use pocketmine\block\tile\Note as TileNote; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; +use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\TreeType; use pocketmine\block\utils\WoodType; use pocketmine\crafting\FurnaceType; @@ -99,6 +100,7 @@ use function mb_strtolower; * @method static Stair ANDESITE_STAIRS() * @method static Wall ANDESITE_WALL() * @method static Anvil ANVIL() + * @method static Leaves AZALEA_LEAVES() * @method static Flower AZURE_BLUET() * @method static Bamboo BAMBOO() * @method static BambooSapling BAMBOO_SAPLING() @@ -402,6 +404,7 @@ use function mb_strtolower; * @method static TallGrass FERN() * @method static Fire FIRE() * @method static FletchingTable FLETCHING_TABLE() + * @method static Leaves FLOWERING_AZALEA_LEAVES() * @method static FlowerPot FLOWER_POT() * @method static Froglight FROGLIGHT() * @method static FrostedIce FROSTED_ICE() @@ -485,6 +488,7 @@ use function mb_strtolower; * @method static WoodenDoor MANGROVE_DOOR() * @method static WoodenFence MANGROVE_FENCE() * @method static FenceGate MANGROVE_FENCE_GATE() + * @method static Leaves MANGROVE_LEAVES() * @method static Wood MANGROVE_LOG() * @method static Planks MANGROVE_PLANKS() * @method static WoodenPressurePlate MANGROVE_PRESSURE_PLATE() @@ -1106,7 +1110,10 @@ final class VanillaBlocks{ foreach(TreeType::getAll() as $treeType){ $name = $treeType->getDisplayName(); self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", $saplingTypeInfo, $treeType)); - self::register($treeType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($treeType), $name . " Leaves", $leavesBreakInfo, $treeType)); + } + foreach(LeavesType::getAll() as $leavesType){ + $name = $leavesType->getDisplayName(); + self::register($leavesType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($leavesType), $name . " Leaves", $leavesBreakInfo, $leavesType)); } $sandstoneBreakInfo = new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD())); diff --git a/src/block/utils/LeavesType.php b/src/block/utils/LeavesType.php new file mode 100644 index 000000000..c7bc1a0ed --- /dev/null +++ b/src/block/utils/LeavesType.php @@ -0,0 +1,74 @@ +Enum___construct($enumName); + } + + public function getDisplayName() : string{ + return $this->displayName; + } +} diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 82e84c18c..04c56e536 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -605,6 +605,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ default => throw new BlockStateSerializeException("Invalid Anvil damage {$damage}"), }); }); + $this->map(Blocks::AZALEA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves($block, new Writer(Ids::AZALEA_LEAVES))); $this->map(Blocks::AZURE_BLUET(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_HOUSTONIA)); $this->map(Blocks::BAMBOO(), function(Bamboo $block) : Writer{ return Writer::create(Ids::BAMBOO) @@ -950,6 +951,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::FLOWER_POT) ->writeBool(StateNames::UPDATE_BIT, false); //to keep MCPE happy }); + $this->map(Blocks::FLOWERING_AZALEA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves($block, new Writer(Ids::AZALEA_LEAVES_FLOWERED))); $this->map(Blocks::FROGLIGHT(), function(Froglight $block){ return Writer::create(match($block->getFroglightType()){ FroglightType::OCHRE() => Ids::OCHRE_FROGLIGHT, @@ -1086,6 +1088,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MANGROVE_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::MANGROVE_BUTTON))); $this->map(Blocks::MANGROVE_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::MANGROVE_DOOR))); $this->map(Blocks::MANGROVE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::MANGROVE_FENCE_GATE))); + $this->map(Blocks::MANGROVE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves($block, new Writer(Ids::MANGROVE_LEAVES))); $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); $this->map(Blocks::MANGROVE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::MANGROVE_PRESSURE_PLATE))); $this->map(Blocks::MANGROVE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::MANGROVE_STANDING_SIGN))); diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index e7bd14dfd..6384a3e94 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -37,6 +37,7 @@ use pocketmine\block\FloorCoralFan; use pocketmine\block\FloorSign; use pocketmine\block\GlazedTerracotta; use pocketmine\block\ItemFrame; +use pocketmine\block\Leaves; use pocketmine\block\Liquid; use pocketmine\block\RedMushroomBlock; use pocketmine\block\RedstoneComparator; @@ -178,6 +179,13 @@ final class BlockStateDeserializerHelper{ ->setHasMap($in->readBool(StateNames::ITEM_FRAME_MAP_BIT)); } + /** @throws BlockStateDeserializeException */ + public static function decodeLeaves(Leaves $block, BlockStateReader $in) : Leaves{ + return $block + ->setNoDecay($in->readBool(StateNames::PERSISTENT_BIT)) + ->setCheckDecay($in->readBool(StateNames::UPDATE_BIT)); + } + /** @throws BlockStateDeserializeException */ public static function decodeLiquid(Liquid $block, BlockStateReader $in, bool $still) : Liquid{ $fluidHeightState = $in->readBoundedInt(BlockStateNames::LIQUID_DEPTH, 0, 15); diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index 312e726fc..f449cae8f 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -147,7 +147,7 @@ final class BlockStateSerializerHelper{ ->writeFacingDirection($block->getFacing()); } - private static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{ + public static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeBool(BlockStateNames::PERSISTENT_BIT, $block->isNoDecay()) ->writeBool(BlockStateNames::UPDATE_BIT, $block->isCheckDecay()); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index bca2cb390..7b10b935d 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -457,6 +457,8 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ }) ->setFacing($in->readLegacyHorizontalFacing()); }); + $this->map(Ids::AZALEA_LEAVES, fn(Reader $in) => Helper::decodeLeaves(Blocks::AZALEA_LEAVES(), $in)); + $this->map(Ids::AZALEA_LEAVES_FLOWERED, fn(Reader $in) => Helper::decodeLeaves(Blocks::FLOWERING_AZALEA_LEAVES(), $in)); $this->map(Ids::BAMBOO, function(Reader $in) : Block{ return Blocks::BAMBOO() ->setLeafSize(match($value = $in->readString(StateNames::BAMBOO_LEAF_SIZE)){ @@ -787,26 +789,18 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setHanging($in->readBool(StateNames::HANGING)); }); $this->map(Ids::LAVA, fn(Reader $in) => Helper::decodeStillLiquid(Blocks::LAVA(), $in)); - $this->map(Ids::LEAVES, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::OLD_LEAF_TYPE)){ - StringValues::OLD_LEAF_TYPE_BIRCH => Blocks::BIRCH_LEAVES(), - StringValues::OLD_LEAF_TYPE_JUNGLE => Blocks::JUNGLE_LEAVES(), - StringValues::OLD_LEAF_TYPE_OAK => Blocks::OAK_LEAVES(), - StringValues::OLD_LEAF_TYPE_SPRUCE => Blocks::SPRUCE_LEAVES(), - default => throw $in->badValueException(StateNames::OLD_LEAF_TYPE, $type), - }) - ->setNoDecay($in->readBool(StateNames::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(StateNames::UPDATE_BIT)); - }); - $this->map(Ids::LEAVES2, function(Reader $in) : Block{ - return (match($type = $in->readString(StateNames::NEW_LEAF_TYPE)){ - StringValues::NEW_LEAF_TYPE_ACACIA => Blocks::ACACIA_LEAVES(), - StringValues::NEW_LEAF_TYPE_DARK_OAK => Blocks::DARK_OAK_LEAVES(), - default => throw $in->badValueException(StateNames::NEW_LEAF_TYPE, $type), - }) - ->setNoDecay($in->readBool(StateNames::PERSISTENT_BIT)) - ->setCheckDecay($in->readBool(StateNames::UPDATE_BIT)); - }); + $this->map(Ids::LEAVES, fn(Reader $in) => Helper::decodeLeaves(match($type = $in->readString(StateNames::OLD_LEAF_TYPE)){ + StringValues::OLD_LEAF_TYPE_BIRCH => Blocks::BIRCH_LEAVES(), + StringValues::OLD_LEAF_TYPE_JUNGLE => Blocks::JUNGLE_LEAVES(), + StringValues::OLD_LEAF_TYPE_OAK => Blocks::OAK_LEAVES(), + StringValues::OLD_LEAF_TYPE_SPRUCE => Blocks::SPRUCE_LEAVES(), + default => throw $in->badValueException(StateNames::OLD_LEAF_TYPE, $type), + }, $in)); + $this->map(Ids::LEAVES2, fn(Reader $in) => Helper::decodeLeaves(match($type = $in->readString(StateNames::NEW_LEAF_TYPE)){ + StringValues::NEW_LEAF_TYPE_ACACIA => Blocks::ACACIA_LEAVES(), + StringValues::NEW_LEAF_TYPE_DARK_OAK => Blocks::DARK_OAK_LEAVES(), + default => throw $in->badValueException(StateNames::NEW_LEAF_TYPE, $type), + }, $in)); $this->map(Ids::LECTERN, function(Reader $in) : Block{ return Blocks::LECTERN() ->setFacing($in->readLegacyHorizontalFacing()) @@ -887,6 +881,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::MANGROVE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::MANGROVE_DOOR(), $in)); $this->mapSlab(Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB, fn() => Blocks::MANGROVE_SLAB()); $this->map(Ids::MANGROVE_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::MANGROVE_FENCE_GATE(), $in)); + $this->map(Ids::MANGROVE_LEAVES, fn(Reader $in) => Helper::decodeLeaves(Blocks::MANGROVE_LEAVES(), $in)); $this->map(Ids::MANGROVE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_LOG(), false, $in)); $this->map(Ids::MANGROVE_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::MANGROVE_PRESSURE_PLATE(), $in)); $this->mapStairs(Ids::MANGROVE_STAIRS, fn() => Blocks::MANGROVE_STAIRS()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 8a66e3a07..a7408dd51 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -140,6 +140,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("andesite_wall", fn() => Blocks::ANDESITE_WALL()); $result->registerBlock("anvil", fn() => Blocks::ANVIL()); $result->registerBlock("ateupd_block", fn() => Blocks::INFO_UPDATE2()); + $result->registerBlock("azalea_leaves", fn() => Blocks::AZALEA_LEAVES()); $result->registerBlock("azure_bluet", fn() => Blocks::AZURE_BLUET()); $result->registerBlock("bamboo", fn() => Blocks::BAMBOO()); $result->registerBlock("bamboo_sapling", fn() => Blocks::BAMBOO_SAPLING()); @@ -625,6 +626,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("fletching_table", fn() => Blocks::FLETCHING_TABLE()); $result->registerBlock("flower_pot", fn() => Blocks::FLOWER_POT()); $result->registerBlock("flower_pot_block", fn() => Blocks::FLOWER_POT()); + $result->registerBlock("flowering_azalea_leaves", fn() => Blocks::FLOWERING_AZALEA_LEAVES()); $result->registerBlock("flowing_lava", fn() => Blocks::LAVA()); $result->registerBlock("flowing_water", fn() => Blocks::WATER()); $result->registerBlock("frame", fn() => Blocks::ITEM_FRAME()); @@ -755,6 +757,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("mangrove_door", fn() => Blocks::MANGROVE_DOOR()); $result->registerBlock("mangrove_fence", fn() => Blocks::MANGROVE_FENCE()); $result->registerBlock("mangrove_fence_gate", fn() => Blocks::MANGROVE_FENCE_GATE()); + $result->registerBlock("mangrove_leaves", fn() => Blocks::MANGROVE_LEAVES()); $result->registerBlock("mangrove_log", fn() => Blocks::MANGROVE_LOG()->setStripped(false)); $result->registerBlock("mangrove_planks", fn() => Blocks::MANGROVE_PLANKS()); $result->registerBlock("mangrove_pressure_plate", fn() => Blocks::MANGROVE_PRESSURE_PLATE()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index f68366a3a..951af22a7 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azalea Leaves":[5471232,5471233,5471234,5471235],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Flowering Azalea Leaves":[5471744,5471745,5471746,5471747],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Leaves":[5470720,5470721,5470722,5470723],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 0a3ecfdae9bee568722e393e26ee5b97d07394a0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 25 Jan 2023 18:53:11 +0000 Subject: [PATCH 498/692] Clean up terminology around block state IDs and their handling --- src/block/Block.php | 4 ++-- src/block/InfestedStone.php | 2 +- ...Factory.php => RuntimeBlockStateRegistry.php} | 9 ++++++--- src/block/tile/FlowerPot.php | 4 ++-- .../convert/BlockObjectToStateSerializer.php | 4 ++-- src/data/bedrock/item/ItemDeserializer.php | 4 ++-- src/entity/EntityFactory.php | 4 ++-- src/entity/object/FallingBlock.php | 4 ++-- src/item/ItemBlock.php | 4 ++-- src/item/ItemBlockWallOrFloor.php | 6 +++--- src/world/Explosion.php | 6 +++--- src/world/SimpleChunkManager.php | 6 +++--- src/world/World.php | 16 ++++++++-------- src/world/format/Chunk.php | 8 ++++---- src/world/format/SubChunk.php | 4 ++-- src/world/generator/Flat.php | 2 +- src/world/generator/hell/Nether.php | 6 +++--- src/world/generator/normal/Normal.php | 6 +++--- src/world/generator/populator/GroundCover.php | 10 +++++----- src/world/light/BlockLightUpdate.php | 4 ++-- src/world/light/LightPopulationTask.php | 4 ++-- src/world/light/LightUpdate.php | 2 +- src/world/light/SkyLightUpdate.php | 6 +++--- tests/phpunit/block/BlockTest.php | 4 ++-- .../block/regenerate_consistency_check.php | 6 +++--- .../convert/BlockSerializerDeserializerTest.php | 4 ++-- .../item/ItemSerializerDeserializerTest.php | 4 ++-- .../mcpe/convert/RuntimeBlockMappingTest.php | 4 ++-- tests/phpunit/world/format/ChunkTest.php | 6 +++--- tests/phpunit/world/format/SubChunkTest.php | 6 +++--- 30 files changed, 81 insertions(+), 78 deletions(-) rename src/block/{BlockFactory.php => RuntimeBlockStateRegistry.php} (93%) diff --git a/src/block/Block.php b/src/block/Block.php index 2e8faf82f..5bbddb0c0 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -97,7 +97,7 @@ class Block{ * Returns the full blockstate ID of this block. This is a compact way of representing a blockstate used to store * blocks in chunks at runtime. * - * This ID can be used to later obtain a copy of this block using {@link BlockFactory::fromStateId()}. + * This ID can be used to later obtain a copy of this block using {@link RuntimeBlockStateRegistry::fromStateId()}. */ public function getStateId() : int{ return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeStateData(); @@ -216,7 +216,7 @@ class Block{ */ public function writeStateToWorld() : void{ $world = $this->position->getWorld(); - $world->getOrLoadChunkAtPosition($this->position)->setFullBlock($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getStateId()); + $world->getOrLoadChunkAtPosition($this->position)->setBlockStateId($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getStateId()); $tileType = $this->idInfo->getTileClass(); $oldTile = $world->getTile($this->position); diff --git a/src/block/InfestedStone.php b/src/block/InfestedStone.php index eb10b38ad..deaa013fc 100644 --- a/src/block/InfestedStone.php +++ b/src/block/InfestedStone.php @@ -35,7 +35,7 @@ final class InfestedStone extends Opaque{ } public function getImitatedBlock() : Block{ - return BlockFactory::getInstance()->fromStateId($this->imitated); + return RuntimeBlockStateRegistry::getInstance()->fromStateId($this->imitated); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/BlockFactory.php b/src/block/RuntimeBlockStateRegistry.php similarity index 93% rename from src/block/BlockFactory.php rename to src/block/RuntimeBlockStateRegistry.php index 9c17e0c45..5aef7006f 100644 --- a/src/block/BlockFactory.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -32,10 +32,13 @@ use pocketmine\world\light\LightUpdate; use function min; /** - * Manages deserializing block types from their legacy blockIDs and metadata. - * This is primarily needed for loading chunks from disk. + * Blocks are stored as state IDs in chunks at runtime (it would waste far too much memory to represent every block as + * an object). This class maps block state IDs to their corresponding block objects when reading blocks from chunks at + * runtime. + * + * @internal Plugin devs shouldn't need to interact with this class at all, unless registering a new block type. */ -class BlockFactory{ +class RuntimeBlockStateRegistry{ use SingletonTrait; /** diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 9ef15053a..d6c2c58fb 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -25,7 +25,7 @@ namespace pocketmine\block\tile; use pocketmine\block\Air; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateNames; use pocketmine\data\SavedDataLoadingException; @@ -67,7 +67,7 @@ class FlowerPot extends Spawnable{ }catch(BlockStateDeserializeException $e){ throw new SavedDataLoadingException("Error deserializing plant for flower pot: " . $e->getMessage(), 0, $e); } - $this->setPlant(BlockFactory::getInstance()->fromStateId($blockStateId)); + $this->setPlant(RuntimeBlockStateRegistry::getInstance()->fromStateId($blockStateId)); } } diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 04c56e536..6e7497c0d 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -32,7 +32,6 @@ use pocketmine\block\Bed; use pocketmine\block\Beetroot; use pocketmine\block\Bell; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; use pocketmine\block\BoneBlock; use pocketmine\block\BrewingStand; use pocketmine\block\BrownMushroomBlock; @@ -107,6 +106,7 @@ use pocketmine\block\RedstoneOre; use pocketmine\block\RedstoneRepeater; use pocketmine\block\RedstoneTorch; use pocketmine\block\RedstoneWire; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\Sapling; use pocketmine\block\SeaPickle; use pocketmine\block\SimplePillar; @@ -197,7 +197,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ public function serialize(int $stateId) : BlockStateData{ //TODO: singleton usage not ideal //TODO: we may want to deduplicate cache entries to avoid wasting memory - return $this->cache[$stateId] ??= $this->serializeBlock(BlockFactory::getInstance()->fromStateId($stateId)); + return $this->cache[$stateId] ??= $this->serializeBlock(RuntimeBlockStateRegistry::getInstance()->fromStateId($stateId)); } /** diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index bde907d4e..f4f43e3cb 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateDeserializer; use pocketmine\data\bedrock\block\convert\UnsupportedBlockStateException; @@ -76,7 +76,7 @@ final class ItemDeserializer{ } //TODO: worth caching this or not? - return BlockFactory::getInstance()->fromStateId($block)->asItem(); + return RuntimeBlockStateRegistry::getInstance()->fromStateId($block)->asItem(); } $id = $data->getName(); if(!isset($this->deserializers[$id])){ diff --git a/src/entity/EntityFactory.php b/src/entity/EntityFactory.php index 0a6839cc1..d8d189cff 100644 --- a/src/entity/EntityFactory.php +++ b/src/entity/EntityFactory.php @@ -26,7 +26,7 @@ namespace pocketmine\entity; use DaveRandom\CallbackValidator\CallbackType; use DaveRandom\CallbackValidator\ParameterType; use DaveRandom\CallbackValidator\ReturnType; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\data\bedrock\LegacyEntityIdToStringIdMap; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\data\bedrock\PotionTypeIds; @@ -112,7 +112,7 @@ final class EntityFactory{ }, ['XPOrb', 'minecraft:xp_orb']); $this->register(FallingBlock::class, function(World $world, CompoundTag $nbt) : FallingBlock{ - return new FallingBlock(Helper::parseLocation($nbt, $world), FallingBlock::parseBlockNBT(BlockFactory::getInstance(), $nbt), $nbt); + return new FallingBlock(Helper::parseLocation($nbt, $world), FallingBlock::parseBlockNBT(RuntimeBlockStateRegistry::getInstance(), $nbt), $nbt); }, ['FallingSand', 'minecraft:falling_block']); $this->register(ItemEntity::class, function(World $world, CompoundTag $nbt) : ItemEntity{ diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 15b7aeac9..301d38b64 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\entity\object; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\utils\Fallable; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; @@ -66,7 +66,7 @@ class FallingBlock extends Entity{ protected function getInitialGravity() : float{ return 0.04; } - public static function parseBlockNBT(BlockFactory $factory, CompoundTag $nbt) : Block{ + public static function parseBlockNBT(RuntimeBlockStateRegistry $factory, CompoundTag $nbt) : Block{ //TODO: 1.8+ save format $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index eb476de88..1a005286d 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\VanillaBlocks; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; @@ -59,7 +59,7 @@ final class ItemBlock extends Item{ public function getBlock(?int $clickedFace = null) : Block{ //TODO: HACKY MESS, CLEAN IT UP - $factory = BlockFactory::getInstance(); + $factory = RuntimeBlockStateRegistry::getInstance(); if(!$factory->isRegistered($this->blockTypeId)){ return VanillaBlocks::AIR(); } diff --git a/src/item/ItemBlockWallOrFloor.php b/src/item/ItemBlockWallOrFloor.php index bd1213b34..c20c73a1d 100644 --- a/src/item/ItemBlockWallOrFloor.php +++ b/src/item/ItemBlockWallOrFloor.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -40,9 +40,9 @@ class ItemBlockWallOrFloor extends Item{ public function getBlock(?int $clickedFace = null) : Block{ if($clickedFace !== null && Facing::axis($clickedFace) !== Axis::Y){ - return BlockFactory::getInstance()->fromStateId($this->wallVariant); + return RuntimeBlockStateRegistry::getInstance()->fromStateId($this->wallVariant); } - return BlockFactory::getInstance()->fromStateId($this->floorVariant); + return RuntimeBlockStateRegistry::getInstance()->fromStateId($this->floorVariant); } public function getFuelTime() : int{ diff --git a/src/world/Explosion.php b/src/world/Explosion.php index 6bd72fb6f..acc806f99 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\TNT; use pocketmine\block\VanillaBlocks; use pocketmine\entity\Entity; @@ -81,7 +81,7 @@ class Explosion{ return false; } - $blockFactory = BlockFactory::getInstance(); + $blockFactory = RuntimeBlockStateRegistry::getInstance(); $mRays = $this->rays - 1; for($i = 0; $i < $this->rays; ++$i){ @@ -112,7 +112,7 @@ class Explosion{ continue; } - $state = $this->subChunkExplorer->currentSubChunk->getFullBlock($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK); + $state = $this->subChunkExplorer->currentSubChunk->getBlockStateId($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK); $blastResistance = $blockFactory->blastResistance[$state] ?? 0; if($blastResistance >= 0){ diff --git a/src/world/SimpleChunkManager.php b/src/world/SimpleChunkManager.php index 85849c450..221adbe89 100644 --- a/src/world/SimpleChunkManager.php +++ b/src/world/SimpleChunkManager.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\VanillaBlocks; use pocketmine\utils\Limits; use pocketmine\world\format\Chunk; @@ -41,14 +41,14 @@ class SimpleChunkManager implements ChunkManager{ public function getBlockAt(int $x, int $y, int $z) : Block{ if($this->isInWorld($x, $y, $z) && ($chunk = $this->getChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null){ - return BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); + return RuntimeBlockStateRegistry::getInstance()->fromStateId($chunk->getBlockStateId($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); } return VanillaBlocks::AIR(); } public function setBlockAt(int $x, int $y, int $z, Block $block) : void{ if(($chunk = $this->getChunk($x >> Chunk::COORD_BIT_SIZE, $z >> Chunk::COORD_BIT_SIZE)) !== null){ - $chunk->setFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK, $block->getStateId()); + $chunk->setBlockStateId($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK, $block->getStateId()); }else{ throw new \InvalidArgumentException("Cannot set block at coordinates x=$x,y=$y,z=$z, terrain is not loaded or out of bounds"); } diff --git a/src/world/World.php b/src/world/World.php index e6f240614..15ea9f787 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -28,8 +28,8 @@ namespace pocketmine\world; use pocketmine\block\Air; use pocketmine\block\Block; -use pocketmine\block\BlockFactory; use pocketmine\block\BlockTypeIds; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; use pocketmine\block\tile\TileFactory; @@ -533,7 +533,7 @@ class World implements ChunkManager{ if($blockStateData === null){ continue; } - $block = BlockFactory::getInstance()->fromStateId(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); + $block = RuntimeBlockStateRegistry::getInstance()->fromStateId(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); }else{ //TODO: we probably ought to log an error here continue; @@ -544,7 +544,7 @@ class World implements ChunkManager{ } } - foreach(BlockFactory::getInstance()->getAllKnownStates() as $state){ + foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $state){ $dontTickName = $dontTickBlocks[$state->getTypeId()] ?? null; if($dontTickName === null && $state->ticksRandomly()){ $this->randomTickBlocks[$state->getStateId()] = true; @@ -1295,7 +1295,7 @@ class World implements ChunkManager{ $entity->onRandomUpdate(); } - $blockFactory = BlockFactory::getInstance(); + $blockFactory = RuntimeBlockStateRegistry::getInstance(); foreach($chunk->getSubChunks() as $Y => $subChunk){ if(!$subChunk->isEmptyFast()){ $k = 0; @@ -1309,7 +1309,7 @@ class World implements ChunkManager{ $z = ($k >> (SubChunk::COORD_BIT_SIZE * 2)) & SubChunk::COORD_MASK; $k >>= (SubChunk::COORD_BIT_SIZE * 3); - $state = $subChunk->getFullBlock($x, $y, $z); + $state = $subChunk->getBlockStateId($x, $y, $z); if(isset($this->randomTickBlocks[$state])){ $block = $blockFactory->fromStateId($state); @@ -1609,7 +1609,7 @@ class World implements ChunkManager{ return; } - $blockFactory = BlockFactory::getInstance(); + $blockFactory = RuntimeBlockStateRegistry::getInstance(); $this->timings->doBlockSkyLightUpdates->startTiming(); if($this->skyLightUpdate === null){ $this->skyLightUpdate = new SkyLightUpdate(new SubChunkExplorer($this), $blockFactory->lightFilter, $blockFactory->blocksDirectSkyLight); @@ -1732,7 +1732,7 @@ class World implements ChunkManager{ $chunk = $this->chunks[$chunkHash] ?? null; if($chunk !== null){ - $block = BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); + $block = RuntimeBlockStateRegistry::getInstance()->fromStateId($chunk->getBlockStateId($x & Chunk::COORD_MASK, $y, $z & Chunk::COORD_MASK)); }else{ $addToCache = false; $block = VanillaBlocks::AIR(); @@ -2371,7 +2371,7 @@ class World implements ChunkManager{ $localY = $tilePosition->getFloorY(); $localZ = $tilePosition->getFloorZ() & Chunk::COORD_MASK; - $newBlock = BlockFactory::getInstance()->fromStateId($chunk->getFullBlock($localX, $localY, $localZ)); + $newBlock = RuntimeBlockStateRegistry::getInstance()->fromStateId($chunk->getBlockStateId($localX, $localY, $localZ)); $expectedTileClass = $newBlock->getIdInfo()->getTileClass(); if( $expectedTileClass === null || //new block doesn't expect a tile diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index 7c55b6292..fd0b83a7b 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -93,15 +93,15 @@ class Chunk{ * * @return int bitmap, (id << 4) | meta */ - public function getFullBlock(int $x, int $y, int $z) : int{ - return $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getFullBlock($x, $y & SubChunk::COORD_MASK, $z); + public function getBlockStateId(int $x, int $y, int $z) : int{ + return $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBlockStateId($x, $y & SubChunk::COORD_MASK, $z); } /** * Sets the blockstate at the given coordinate by internal ID. */ - public function setFullBlock(int $x, int $y, int $z, int $block) : void{ - $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->setFullBlock($x, $y & SubChunk::COORD_MASK, $z, $block); + public function setBlockStateId(int $x, int $y, int $z, int $block) : void{ + $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->setBlockStateId($x, $y & SubChunk::COORD_MASK, $z, $block); $this->terrainDirtyFlags |= self::DIRTY_FLAG_BLOCKS; } diff --git a/src/world/format/SubChunk.php b/src/world/format/SubChunk.php index 5dc221514..3f7e943e3 100644 --- a/src/world/format/SubChunk.php +++ b/src/world/format/SubChunk.php @@ -69,14 +69,14 @@ class SubChunk{ */ public function getEmptyBlockId() : int{ return $this->emptyBlockId; } - public function getFullBlock(int $x, int $y, int $z) : int{ + public function getBlockStateId(int $x, int $y, int $z) : int{ if(count($this->blockLayers) === 0){ return $this->emptyBlockId; } return $this->blockLayers[0]->get($x, $y, $z); } - public function setFullBlock(int $x, int $y, int $z, int $block) : void{ + public function setBlockStateId(int $x, int $y, int $z, int $block) : void{ if(count($this->blockLayers) === 0){ $this->blockLayers[] = new PalettedBlockArray($this->emptyBlockId); } diff --git a/src/world/generator/Flat.php b/src/world/generator/Flat.php index 9536cde03..01efaff07 100644 --- a/src/world/generator/Flat.php +++ b/src/world/generator/Flat.php @@ -77,7 +77,7 @@ class Flat extends Generator{ for($Z = 0; $Z < SubChunk::EDGE_LENGTH; ++$Z){ for($X = 0; $X < SubChunk::EDGE_LENGTH; ++$X){ - $subchunk->setFullBlock($X, $y, $Z, $id); + $subchunk->setBlockStateId($X, $y, $Z, $id); } } } diff --git a/src/world/generator/hell/Nether.php b/src/world/generator/hell/Nether.php index e00b22015..665d9452e 100644 --- a/src/world/generator/hell/Nether.php +++ b/src/world/generator/hell/Nether.php @@ -85,16 +85,16 @@ class Nether extends Generator{ for($y = 0; $y < 128; ++$y){ if($y === 0 || $y === 127){ - $chunk->setFullBlock($x, $y, $z, $bedrock); + $chunk->setBlockStateId($x, $y, $z, $bedrock); continue; } $noiseValue = (abs($this->emptyHeight - $y) / $this->emptyHeight) * $this->emptyAmplitude - $noise[$x][$z][$y]; $noiseValue -= 1 - $this->density; if($noiseValue > 0){ - $chunk->setFullBlock($x, $y, $z, $netherrack); + $chunk->setBlockStateId($x, $y, $z, $netherrack); }elseif($y <= $this->waterHeight){ - $chunk->setFullBlock($x, $y, $z, $stillLava); + $chunk->setBlockStateId($x, $y, $z, $stillLava); } } } diff --git a/src/world/generator/normal/Normal.php b/src/world/generator/normal/Normal.php index 107d147e9..a750fc894 100644 --- a/src/world/generator/normal/Normal.php +++ b/src/world/generator/normal/Normal.php @@ -194,15 +194,15 @@ class Normal extends Generator{ for($y = 0; $y < 128; ++$y){ if($y === 0){ - $chunk->setFullBlock($x, $y, $z, $bedrock); + $chunk->setBlockStateId($x, $y, $z, $bedrock); continue; } $noiseValue = $noise[$x][$z][$y] - 1 / $smoothHeight * ($y - $smoothHeight - $minSum); if($noiseValue > 0){ - $chunk->setFullBlock($x, $y, $z, $stone); + $chunk->setBlockStateId($x, $y, $z, $stone); }elseif($y <= $this->waterHeight){ - $chunk->setFullBlock($x, $y, $z, $stillWater); + $chunk->setBlockStateId($x, $y, $z, $stillWater); } } } diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 16a1d95a0..1ce0c9fca 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\world\generator\populator; -use pocketmine\block\BlockFactory; use pocketmine\block\BlockTypeIds; use pocketmine\block\Liquid; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\utils\Random; use pocketmine\world\biome\BiomeRegistry; use pocketmine\world\ChunkManager; @@ -37,7 +37,7 @@ class GroundCover implements Populator{ public function populate(ChunkManager $world, int $chunkX, int $chunkZ, Random $random) : void{ $chunk = $world->getChunk($chunkX, $chunkZ); - $factory = BlockFactory::getInstance(); + $factory = RuntimeBlockStateRegistry::getInstance(); $biomeRegistry = BiomeRegistry::getInstance(); for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < Chunk::EDGE_LENGTH; ++$z){ @@ -51,7 +51,7 @@ class GroundCover implements Populator{ $startY = 127; for(; $startY > 0; --$startY){ - if(!$factory->fromStateId($chunk->getFullBlock($x, $startY, $z))->isTransparent()){ + if(!$factory->fromStateId($chunk->getBlockStateId($x, $startY, $z))->isTransparent()){ break; } } @@ -59,7 +59,7 @@ class GroundCover implements Populator{ $endY = $startY - count($cover); for($y = $startY; $y > $endY && $y >= 0; --$y){ $b = $cover[$startY - $y]; - $id = $factory->fromStateId($chunk->getFullBlock($x, $y, $z)); + $id = $factory->fromStateId($chunk->getBlockStateId($x, $y, $z)); if($id->getTypeId() === BlockTypeIds::AIR && $b->isSolid()){ break; } @@ -67,7 +67,7 @@ class GroundCover implements Populator{ continue; } - $chunk->setFullBlock($x, $y, $z, $b->getStateId()); + $chunk->setBlockStateId($x, $y, $z, $b->getStateId()); } } } diff --git a/src/world/light/BlockLightUpdate.php b/src/world/light/BlockLightUpdate.php index cc8964fbe..b7e0aa9e3 100644 --- a/src/world/light/BlockLightUpdate.php +++ b/src/world/light/BlockLightUpdate.php @@ -50,7 +50,7 @@ class BlockLightUpdate extends LightUpdate{ public function recalculateNode(int $x, int $y, int $z) : void{ if($this->subChunkExplorer->moveTo($x, $y, $z) !== SubChunkExplorerStatus::INVALID){ - $block = $this->subChunkExplorer->currentSubChunk->getFullBlock($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); + $block = $this->subChunkExplorer->currentSubChunk->getBlockStateId($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); $this->setAndUpdateLight($x, $y, $z, max($this->lightEmitters[$block] ?? 0, $this->getHighestAdjacentLight($x, $y, $z) - ($this->lightFilters[$block] ?? self::BASE_LIGHT_FILTER))); } } @@ -83,7 +83,7 @@ class BlockLightUpdate extends LightUpdate{ for($x = 0; $x < SubChunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < SubChunk::EDGE_LENGTH; ++$z){ for($y = 0; $y < SubChunk::EDGE_LENGTH; ++$y){ - $light = $this->lightEmitters[$subChunk->getFullBlock($x, $y, $z)] ?? 0; + $light = $this->lightEmitters[$subChunk->getBlockStateId($x, $y, $z)] ?? 0; if($light > 0){ $this->setAndUpdateLight( $baseX + $x, diff --git a/src/world/light/LightPopulationTask.php b/src/world/light/LightPopulationTask.php index 2acccbf8f..5aa0ead65 100644 --- a/src/world/light/LightPopulationTask.php +++ b/src/world/light/LightPopulationTask.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\light; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\scheduler\AsyncTask; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\FastChunkSerializer; @@ -57,7 +57,7 @@ class LightPopulationTask extends AsyncTask{ $manager = new SimpleChunkManager(World::Y_MIN, World::Y_MAX); $manager->setChunk(0, 0, $chunk); - $blockFactory = BlockFactory::getInstance(); + $blockFactory = RuntimeBlockStateRegistry::getInstance(); foreach([ "Block" => new BlockLightUpdate(new SubChunkExplorer($manager), $blockFactory->lightFilter, $blockFactory->light), "Sky" => new SkyLightUpdate(new SubChunkExplorer($manager), $blockFactory->lightFilter, $blockFactory->blocksDirectSkyLight), diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index 83c99e5a4..d40e68e05 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -191,7 +191,7 @@ abstract class LightUpdate{ $ly = $y & SubChunk::COORD_MASK; $lz = $z & SubChunk::COORD_MASK; $current = $lightArray->get($lx, $ly, $lz); - $potentialLight = $newAdjacentLevel - ($this->lightFilters[$this->subChunkExplorer->currentSubChunk->getFullBlock($lx, $ly, $lz)] ?? self::BASE_LIGHT_FILTER); + $potentialLight = $newAdjacentLevel - ($this->lightFilters[$this->subChunkExplorer->currentSubChunk->getBlockStateId($lx, $ly, $lz)] ?? self::BASE_LIGHT_FILTER); if($current < $potentialLight){ $lightArray->set($lx, $ly, $lz, $potentialLight); diff --git a/src/world/light/SkyLightUpdate.php b/src/world/light/SkyLightUpdate.php index d77f1de5b..501563482 100644 --- a/src/world/light/SkyLightUpdate.php +++ b/src/world/light/SkyLightUpdate.php @@ -66,7 +66,7 @@ class SkyLightUpdate extends LightUpdate{ $chunk = $this->subChunkExplorer->currentChunk; $oldHeightMap = $chunk->getHeightMap($x & Chunk::COORD_MASK, $z & Chunk::COORD_MASK); - $source = $this->subChunkExplorer->currentSubChunk->getFullBlock($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); + $source = $this->subChunkExplorer->currentSubChunk->getBlockStateId($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); $yPlusOne = $y + 1; @@ -194,7 +194,7 @@ class SkyLightUpdate extends LightUpdate{ $result->set($x, $z, World::Y_MIN); }else{ for(; $y >= World::Y_MIN; --$y){ - if(isset($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)])){ + if(isset($directSkyLightBlockers[$chunk->getBlockStateId($x, $y, $z)])){ $result->set($x, $z, $y + 1); break; } @@ -221,7 +221,7 @@ class SkyLightUpdate extends LightUpdate{ return World::Y_MIN; } for(; $y >= World::Y_MIN; --$y){ - if(isset($directSkyLightBlockers[$chunk->getFullBlock($x, $y, $z)])){ + if(isset($directSkyLightBlockers[$chunk->getBlockStateId($x, $y, $z)])){ break; } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 7404b15e3..3f6dbac95 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -33,11 +33,11 @@ use const SORT_STRING; class BlockTest extends TestCase{ - /** @var BlockFactory */ + /** @var RuntimeBlockStateRegistry */ private $blockFactory; public function setUp() : void{ - $this->blockFactory = new BlockFactory(); + $this->blockFactory = new RuntimeBlockStateRegistry(); } /** diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index 0db6d3382..9930c54f0 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -22,17 +22,17 @@ declare(strict_types=1); use pocketmine\block\Block; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\utils\AssumptionFailedError; require dirname(__DIR__, 3) . '/vendor/autoload.php'; /* This script needs to be re-run after any intentional blockfactory change (adding or removing a block state). */ -$factory = new \pocketmine\block\BlockFactory(); +$factory = new \pocketmine\block\RuntimeBlockStateRegistry(); $remaps = []; $new = []; -foreach(BlockFactory::getInstance()->getAllKnownStates() as $index => $block){ +foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $index => $block){ if($index !== $block->getStateId()){ throw new AssumptionFailedError("State index should always match state ID"); } diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index f69b4d010..71d4135ea 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -26,8 +26,8 @@ namespace pocketmine\data\bedrock\block\convert; use PHPUnit\Framework\TestCase; use pocketmine\block\BaseBanner; use pocketmine\block\Bed; -use pocketmine\block\BlockFactory; use pocketmine\block\BlockTypeIds; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\Skull; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateSerializeException; @@ -43,7 +43,7 @@ final class BlockSerializerDeserializerTest extends TestCase{ } public function testAllKnownBlockStatesSerializableAndDeserializable() : void{ - foreach(BlockFactory::getInstance()->getAllKnownStates() as $block){ + foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $block){ try{ $blockStateData = $this->serializer->serializeBlock($block); }catch(BlockStateSerializeException $e){ diff --git a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php index a7617735c..b3945d0f6 100644 --- a/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/item/ItemSerializerDeserializerTest.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; use PHPUnit\Framework\TestCase; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\item\VanillaItems; use pocketmine\world\format\io\GlobalBlockStateHandlers; @@ -60,7 +60,7 @@ final class ItemSerializerDeserializerTest extends TestCase{ } public function testAllVanillaBlocksSerializableAndDeserializable() : void{ - foreach(BlockFactory::getInstance()->getAllKnownStates() as $block){ + foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $block){ $item = $block->asItem(); if($item->isNull()){ continue; diff --git a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php index 581735503..9e7287da2 100644 --- a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php +++ b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; use PHPUnit\Framework\TestCase; -use pocketmine\block\BlockFactory; +use pocketmine\block\RuntimeBlockStateRegistry; class RuntimeBlockMappingTest extends TestCase{ @@ -32,7 +32,7 @@ class RuntimeBlockMappingTest extends TestCase{ * @doesNotPerformAssertions */ public function testAllBlockStatesSerialize() : void{ - foreach(BlockFactory::getInstance()->getAllKnownStates() as $state){ + foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $state){ RuntimeBlockMapping::getInstance()->toRuntimeId($state->getStateId()); } } diff --git a/tests/phpunit/world/format/ChunkTest.php b/tests/phpunit/world/format/ChunkTest.php index a8cca71b2..d612ce9d2 100644 --- a/tests/phpunit/world/format/ChunkTest.php +++ b/tests/phpunit/world/format/ChunkTest.php @@ -29,16 +29,16 @@ class ChunkTest extends TestCase{ public function testClone() : void{ $chunk = new Chunk([], false); - $chunk->setFullBlock(0, 0, 0, 1); + $chunk->setBlockStateId(0, 0, 0, 1); $chunk->setBiomeId(0, 0, 0, 1); $chunk->setHeightMap(0, 0, 1); $chunk2 = clone $chunk; - $chunk2->setFullBlock(0, 0, 0, 2); + $chunk2->setBlockStateId(0, 0, 0, 2); $chunk2->setBiomeId(0, 0, 0, 2); $chunk2->setHeightMap(0, 0, 2); - self::assertNotSame($chunk->getFullBlock(0, 0, 0), $chunk2->getFullBlock(0, 0, 0)); + self::assertNotSame($chunk->getBlockStateId(0, 0, 0), $chunk2->getBlockStateId(0, 0, 0)); self::assertNotSame($chunk->getBiomeId(0, 0, 0), $chunk2->getBiomeId(0, 0, 0)); self::assertNotSame($chunk->getHeightMap(0, 0), $chunk2->getHeightMap(0, 0)); } diff --git a/tests/phpunit/world/format/SubChunkTest.php b/tests/phpunit/world/format/SubChunkTest.php index 3b7861051..cdb440147 100644 --- a/tests/phpunit/world/format/SubChunkTest.php +++ b/tests/phpunit/world/format/SubChunkTest.php @@ -34,17 +34,17 @@ class SubChunkTest extends TestCase{ public function testClone() : void{ $sub1 = new SubChunk(0, [], new PalettedBlockArray(BiomeIds::OCEAN)); - $sub1->setFullBlock(0, 0, 0, 1); + $sub1->setBlockStateId(0, 0, 0, 1); $sub1->getBlockLightArray()->set(0, 0, 0, 1); $sub1->getBlockSkyLightArray()->set(0, 0, 0, 1); $sub2 = clone $sub1; - $sub2->setFullBlock(0, 0, 0, 2); + $sub2->setBlockStateId(0, 0, 0, 2); $sub2->getBlockLightArray()->set(0, 0, 0, 2); $sub2->getBlockSkyLightArray()->set(0, 0, 0, 2); - self::assertNotSame($sub1->getFullBlock(0, 0, 0), $sub2->getFullBlock(0, 0, 0)); + self::assertNotSame($sub1->getBlockStateId(0, 0, 0), $sub2->getBlockStateId(0, 0, 0)); self::assertNotSame($sub1->getBlockLightArray()->get(0, 0, 0), $sub2->getBlockLightArray()->get(0, 0, 0)); self::assertNotSame($sub1->getBlockSkyLightArray()->get(0, 0, 0), $sub2->getBlockSkyLightArray()->get(0, 0, 0)); } From 2cd8e4d2708e5391796f51fab9379a4da04ee35c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 25 Jan 2023 19:02:42 +0000 Subject: [PATCH 499/692] ... --- src/block/Leaves.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 9dc38e091..d4f22c8ac 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -25,7 +25,6 @@ namespace pocketmine\block; use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\SupportType; -use pocketmine\block\utils\TreeType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\event\block\LeavesDecayEvent; From f56339c30649f426e7e2d49256b3319f39a2bc0f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 26 Jan 2023 14:48:43 +0000 Subject: [PATCH 500/692] Fix build --- src/block/Block.php | 7 ++- src/world/Explosion.php | 7 ++- src/world/generator/hell/Nether.php | 4 +- src/world/generator/normal/Normal.php | 3 +- src/world/generator/populator/GroundCover.php | 2 +- tests/phpstan/configs/actual-problems.neon | 53 ++----------------- 6 files changed, 22 insertions(+), 54 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 5bbddb0c0..1481284a8 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -42,6 +42,7 @@ use pocketmine\math\RayTraceResult; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; use pocketmine\player\Player; +use pocketmine\utils\AssumptionFailedError; use pocketmine\world\BlockTransaction; use pocketmine\world\format\Chunk; use pocketmine\world\Position; @@ -216,7 +217,11 @@ class Block{ */ public function writeStateToWorld() : void{ $world = $this->position->getWorld(); - $world->getOrLoadChunkAtPosition($this->position)->setBlockStateId($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getStateId()); + $chunk = $world->getOrLoadChunkAtPosition($this->position); + if($chunk === null){ + throw new AssumptionFailedError("World::setBlock() should have loaded the chunk before calling this method"); + } + $chunk->setBlockStateId($this->position->x & Chunk::COORD_MASK, $this->position->y, $this->position->z & Chunk::COORD_MASK, $this->getStateId()); $tileType = $this->idInfo->getTileClass(); $oldTile = $world->getTile($this->position); diff --git a/src/world/Explosion.php b/src/world/Explosion.php index acc806f99..601f9109e 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -35,6 +35,7 @@ use pocketmine\event\entity\EntityExplodeEvent; use pocketmine\item\VanillaItems; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; +use pocketmine\utils\AssumptionFailedError; use pocketmine\world\format\SubChunk; use pocketmine\world\particle\HugeExplodeSeedParticle; use pocketmine\world\sound\ExplodeSound; @@ -111,8 +112,12 @@ class Explosion{ if($this->subChunkExplorer->moveTo($vBlockX, $vBlockY, $vBlockZ) === SubChunkExplorerStatus::INVALID){ continue; } + $subChunk = $this->subChunkExplorer->currentSubChunk; + if($subChunk === null){ + throw new AssumptionFailedError("SubChunkExplorer subchunk should not be null here"); + } - $state = $this->subChunkExplorer->currentSubChunk->getBlockStateId($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK); + $state = $subChunk->getBlockStateId($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK); $blastResistance = $blockFactory->blastResistance[$state] ?? 0; if($blastResistance >= 0){ diff --git a/src/world/generator/hell/Nether.php b/src/world/generator/hell/Nether.php index 665d9452e..f58360820 100644 --- a/src/world/generator/hell/Nether.php +++ b/src/world/generator/hell/Nether.php @@ -25,6 +25,7 @@ namespace pocketmine\world\generator\hell; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\BiomeIds; +use pocketmine\utils\AssumptionFailedError; use pocketmine\world\biome\BiomeRegistry; use pocketmine\world\ChunkManager; use pocketmine\world\format\Chunk; @@ -71,7 +72,8 @@ class Nether extends Generator{ $noise = $this->noiseBase->getFastNoise3D(Chunk::EDGE_LENGTH, 128, Chunk::EDGE_LENGTH, 4, 8, 4, $chunkX * Chunk::EDGE_LENGTH, 0, $chunkZ * Chunk::EDGE_LENGTH); - $chunk = $world->getChunk($chunkX, $chunkZ); + //TODO: why don't we just create and set the chunk here directly? + $chunk = $world->getChunk($chunkX, $chunkZ) ?? throw new \InvalidArgumentException("Chunk $chunkX $chunkZ does not yet exist"); $bedrock = VanillaBlocks::BEDROCK()->getStateId(); $netherrack = VanillaBlocks::NETHERRACK()->getStateId(); diff --git a/src/world/generator/normal/Normal.php b/src/world/generator/normal/Normal.php index a750fc894..1d4805e16 100644 --- a/src/world/generator/normal/Normal.php +++ b/src/world/generator/normal/Normal.php @@ -141,7 +141,8 @@ class Normal extends Generator{ $noise = $this->noiseBase->getFastNoise3D(Chunk::EDGE_LENGTH, 128, Chunk::EDGE_LENGTH, 4, 8, 4, $chunkX * Chunk::EDGE_LENGTH, 0, $chunkZ * Chunk::EDGE_LENGTH); - $chunk = $world->getChunk($chunkX, $chunkZ); + //TODO: why don't we just create and set the chunk here directly? + $chunk = $world->getChunk($chunkX, $chunkZ) ?? throw new \InvalidArgumentException("Chunk $chunkX $chunkZ does not yet exist"); $biomeCache = []; diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 1ce0c9fca..6af3e657c 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -36,7 +36,7 @@ use function min; class GroundCover implements Populator{ public function populate(ChunkManager $world, int $chunkX, int $chunkZ, Random $random) : void{ - $chunk = $world->getChunk($chunkX, $chunkZ); + $chunk = $world->getChunk($chunkX, $chunkZ) ?? throw new \InvalidArgumentException("Chunk $chunkX $chunkZ does not yet exist"); $factory = RuntimeBlockStateRegistry::getInstance(); $biomeRegistry = BiomeRegistry::getInstance(); for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 6698add08..5f01c2d18 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -61,7 +61,7 @@ parameters: path: ../../../src/VersionInfo.php - - message: "#^Cannot call method setFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" + message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\format\\\\Chunk\\:\\:setBlockStateId\\(\\) expects int, float\\|int given\\.$#" count: 1 path: ../../../src/block/Block.php @@ -910,11 +910,6 @@ parameters: count: 1 path: ../../../src/utils/Utils.php - - - message: "#^Cannot call method getFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" - count: 1 - path: ../../../src/world/Explosion.php - - message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:getTileAt\\(\\) expects int, float\\|int given\\.$#" count: 1 @@ -1150,31 +1145,11 @@ parameters: count: 1 path: ../../../src/world/generator/hell/Nether.php - - - message: "#^Cannot call method setBiomeId\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 1 - path: ../../../src/world/generator/hell/Nether.php - - - - message: "#^Cannot call method setFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 3 - path: ../../../src/world/generator/hell/Nether.php - - message: "#^Cannot call method getBiomeId\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" count: 1 path: ../../../src/world/generator/normal/Normal.php - - - message: "#^Cannot call method setBiomeId\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 1 - path: ../../../src/world/generator/normal/Normal.php - - - - message: "#^Cannot call method setFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 3 - path: ../../../src/world/generator/normal/Normal.php - - message: "#^Parameter \\#1 \\$start of method pocketmine\\\\utils\\\\Random\\:\\:nextRange\\(\\) expects int, float\\|int given\\.$#" count: 2 @@ -1195,28 +1170,13 @@ parameters: count: 1 path: ../../../src/world/generator/object/TallGrass.php - - - message: "#^Cannot call method getBiomeId\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 1 - path: ../../../src/world/generator/populator/GroundCover.php - - - - message: "#^Cannot call method getFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 2 - path: ../../../src/world/generator/populator/GroundCover.php - - - - message: "#^Cannot call method setFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\Chunk\\|null\\.$#" - count: 1 - path: ../../../src/world/generator/populator/GroundCover.php - - message: "#^Cannot call method getBlockLightArray\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 path: ../../../src/world/light/BlockLightUpdate.php - - message: "#^Cannot call method getFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" + message: "#^Cannot call method getBlockStateId\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 path: ../../../src/world/light/BlockLightUpdate.php @@ -1241,7 +1201,7 @@ parameters: path: ../../../src/world/light/LightPopulationTask.php - - message: "#^Cannot call method getFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" + message: "#^Cannot call method getBlockStateId\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 path: ../../../src/world/light/LightUpdate.php @@ -1251,7 +1211,7 @@ parameters: path: ../../../src/world/light/SkyLightUpdate.php - - message: "#^Cannot call method getFullBlock\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" + message: "#^Cannot call method getBlockStateId\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 path: ../../../src/world/light/SkyLightUpdate.php @@ -1280,11 +1240,6 @@ parameters: count: 1 path: ../../../src/world/light/SkyLightUpdate.php - - - message: "#^Only numeric types are allowed in \\+, int\\|false given on the left side\\.$#" - count: 1 - path: ../../../src/world/light/SkyLightUpdate.php - - message: "#^Parameter \\#1 \\$chunk of static method pocketmine\\\\world\\\\light\\\\SkyLightUpdate\\:\\:recalculateHeightMap\\(\\) expects pocketmine\\\\world\\\\format\\\\Chunk, pocketmine\\\\world\\\\format\\\\Chunk\\|null given\\.$#" count: 1 From 0975da57d661090a9f2afeb4e8c1cdffd0c1baed Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 26 Jan 2023 14:51:18 +0000 Subject: [PATCH 501/692] Removed obsolete pthreads-related ignoreErrors --- tests/phpstan/configs/actual-problems.neon | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 5f01c2d18..0ab691189 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -730,11 +730,6 @@ parameters: count: 1 path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php - - - message: "#^Method pocketmine\\\\network\\\\mcpe\\\\raklib\\\\PthreadsChannelReader\\:\\:read\\(\\) should return string\\|null but returns mixed\\.$#" - count: 1 - path: ../../../src/network/mcpe/raklib/PthreadsChannelReader.php - - message: "#^Method pocketmine\\\\permission\\\\DefaultPermissions\\:\\:registerPermission\\(\\) should return pocketmine\\\\permission\\\\Permission but returns pocketmine\\\\permission\\\\Permission\\|null\\.$#" count: 1 @@ -835,21 +830,6 @@ parameters: count: 1 path: ../../../src/scheduler/AsyncTask.php - - - message: "#^PHPDoc type pocketmine\\\\scheduler\\\\AsyncWorker\\|null of property pocketmine\\\\scheduler\\\\AsyncTask\\:\\:\\$worker is not the same as PHPDoc type Worker of overridden property Threaded\\:\\:\\$worker\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncTask.php - - - - message: "#^Parameter \\#1 \\$str of function igbinary_unserialize expects string, mixed given\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncTask.php - - - - message: "#^Property pocketmine\\\\scheduler\\\\AsyncTask\\:\\:\\$result \\(bool\\|float\\|int\\|string\\|null\\) does not accept mixed\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncTask.php - - message: "#^Property pocketmine\\\\scheduler\\\\BulkCurlTask\\:\\:\\$operations \\(string\\) does not accept string\\|null\\.$#" count: 1 From 2b987b450b87d64416fa33c1552d470b28520315 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 26 Jan 2023 14:58:32 +0000 Subject: [PATCH 502/692] always the CS... --- src/world/generator/hell/Nether.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/world/generator/hell/Nether.php b/src/world/generator/hell/Nether.php index f58360820..e12e03eb5 100644 --- a/src/world/generator/hell/Nether.php +++ b/src/world/generator/hell/Nether.php @@ -25,7 +25,6 @@ namespace pocketmine\world\generator\hell; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\BiomeIds; -use pocketmine\utils\AssumptionFailedError; use pocketmine\world\biome\BiomeRegistry; use pocketmine\world\ChunkManager; use pocketmine\world\format\Chunk; From 0f81b7be15047000ec4d29eb36fbb261277d1e8e Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Thu, 26 Jan 2023 18:08:15 +0300 Subject: [PATCH 503/692] Fixed deepslate drops (#5535) Co-authored-by: Dylan T --- src/block/VanillaBlocks.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index ee4e3595a..898e5833b 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -1510,7 +1510,15 @@ final class VanillaBlocks{ self::register("raw_iron", new Opaque(new BID(Ids::RAW_IRON), "Raw Iron Block", new Info(BreakInfo::pickaxe(5, ToolTier::STONE(), 30.0)))); $deepslateBreakInfo = new Info(BreakInfo::pickaxe(3, ToolTier::WOOD(), 18.0)); - self::register("deepslate", new SimplePillar(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo)); + self::register("deepslate", new class(new BID(Ids::DEEPSLATE), "Deepslate", $deepslateBreakInfo) extends SimplePillar{ + public function getDropsForCompatibleTool(Item $item) : array{ + return [VanillaBlocks::COBBLED_DEEPSLATE()->asItem()]; + } + + public function isAffectedBySilkTouch() : bool{ + return true; + } + }); //TODO: parity issue here - in Java this has a hardness of 3.0, but in bedrock it's 3.5 self::register("chiseled_deepslate", new Opaque(new BID(Ids::CHISELED_DEEPSLATE), "Chiseled Deepslate", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD(), 18.0)))); From 5226300b99d8fdd60f117f6d99b70038ce2d56ef Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Fri, 27 Jan 2023 18:07:41 -0500 Subject: [PATCH 504/692] Ring bell when hit by a projectile (#5505) --- src/block/Bell.php | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/block/Bell.php b/src/block/Bell.php index f9e61e43d..85c4ecaaf 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -29,9 +29,11 @@ use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\entity\projectile\Projectile; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; +use pocketmine\math\RayTraceResult; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\BlockTransaction; @@ -134,14 +136,7 @@ final class Bell extends Transparent{ public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ $faceHit = Facing::opposite($player->getHorizontalFacing()); - if( - $this->attachmentType->equals(BellAttachmentType::CEILING()) || - ($this->attachmentType->equals(BellAttachmentType::FLOOR()) && Facing::axis($faceHit) === Facing::axis($this->facing)) || - ( - ($this->attachmentType->equals(BellAttachmentType::ONE_WALL()) || $this->attachmentType->equals(BellAttachmentType::TWO_WALLS())) && - ($faceHit === Facing::rotateY($this->facing, false) || $faceHit === Facing::rotateY($this->facing, true)) - ) - ){ + if($this->isValidFaceToRing($faceHit)){ $this->ring($faceHit); return true; } @@ -150,6 +145,13 @@ final class Bell extends Transparent{ return false; } + public function onProjectileHit(Projectile $projectile, RayTraceResult $hitResult) : void{ + $faceHit = Facing::opposite($projectile->getHorizontalFacing()); + if($this->isValidFaceToRing($faceHit)){ + $this->ring($faceHit); + } + } + public function ring(int $faceHit) : void{ $world = $this->position->getWorld(); $world->addSound($this->position, new BellRingSound()); @@ -158,4 +160,15 @@ final class Bell extends Transparent{ $world->broadcastPacketToViewers($this->position, $tile->createFakeUpdatePacket($faceHit)); } } + + private function isValidFaceToRing(int $faceHit) : bool{ + return ( + $this->attachmentType->equals(BellAttachmentType::CEILING()) || + ($this->attachmentType->equals(BellAttachmentType::FLOOR()) && Facing::axis($faceHit) === Facing::axis($this->facing)) || + ( + ($this->attachmentType->equals(BellAttachmentType::ONE_WALL()) || $this->attachmentType->equals(BellAttachmentType::TWO_WALLS())) && + ($faceHit === Facing::rotateY($this->facing, false) || $faceHit === Facing::rotateY($this->facing, true)) + ) + ); + } } From d3fff4e0b253fe8e323eba80125ac16aa3c72e56 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Feb 2023 21:21:55 +0000 Subject: [PATCH 505/692] Updated to newer BedrockBlockUpgradeSchema --- composer.lock | 8 +++--- .../block/upgrade/BlockIdMetaUpgrader.php | 28 +++++++++++++------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index 55c86608e..83a6d6ca0 100644 --- a/composer.lock +++ b/composer.lock @@ -254,12 +254,12 @@ "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4" + "reference": "b0cc441e029cf5a6de5b05dd0f5657208855232b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4", - "reference": "63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/b0cc441e029cf5a6de5b05dd0f5657208855232b", + "reference": "b0cc441e029cf5a6de5b05dd0f5657208855232b", "shasum": "" }, "default-branch": true, @@ -273,7 +273,7 @@ "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master" }, - "time": "2022-08-07T19:29:31+00:00" + "time": "2023-02-01T21:11:39+00:00" }, { "name": "pocketmine/bedrock-data", diff --git a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php index ef8267295..972362b86 100644 --- a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php @@ -24,7 +24,8 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; +use pocketmine\nbt\LittleEndianNbtSerializer; +use pocketmine\utils\BinaryDataException; use pocketmine\utils\BinaryStream; /** @@ -75,15 +76,24 @@ final class BlockIdMetaUpgrader{ $mappingTable = []; $legacyStateMapReader = new BinaryStream($data); - $nbtReader = new NetworkNbtSerializer(); - while(!$legacyStateMapReader->feof()){ - $id = $legacyStateMapReader->get($legacyStateMapReader->getUnsignedVarInt()); - $meta = $legacyStateMapReader->getLShort(); + $nbtReader = new LittleEndianNbtSerializer(); - $offset = $legacyStateMapReader->getOffset(); - $state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag(); - $legacyStateMapReader->setOffset($offset); - $mappingTable[$id][$meta] = $blockStateUpgrader->upgrade(BlockStateData::fromNbt($state)); + $idCount = $legacyStateMapReader->getUnsignedVarInt(); + for($idIndex = 0; $idIndex < $idCount; $idIndex++){ + $id = $legacyStateMapReader->get($legacyStateMapReader->getUnsignedVarInt()); + + $metaCount = $legacyStateMapReader->getUnsignedVarInt(); + for($metaIndex = 0; $metaIndex < $metaCount; $metaIndex++){ + $meta = $legacyStateMapReader->getUnsignedVarInt(); + + $offset = $legacyStateMapReader->getOffset(); + $state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag(); + $legacyStateMapReader->setOffset($offset); + $mappingTable[$id][$meta] = $blockStateUpgrader->upgrade(BlockStateData::fromNbt($state)); + } + } + if(!$legacyStateMapReader->feof()){ + throw new BinaryDataException("Unexpected trailing data in legacy state map data"); } return new self($mappingTable, $idMap); From 0e15a8698a8e0a9f44beb4ca89c7ed74737612d7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Feb 2023 22:35:59 +0000 Subject: [PATCH 506/692] BlockStateUpgrader: do not use blockstate version to manage internal schemas these are no longer reliable. --- .../block/upgrade/BlockStateUpgradeSchema.php | 8 ++- .../upgrade/BlockStateUpgradeSchemaUtils.php | 28 ++++---- .../block/upgrade/BlockStateUpgrader.php | 69 +++++++++---------- .../format/io/GlobalBlockStateHandlers.php | 3 +- 4 files changed, 53 insertions(+), 55 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php index 44c56e6ca..36960383e 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchema.php @@ -69,14 +69,18 @@ final class BlockStateUpgradeSchema{ public int $maxVersionMinor, public int $maxVersionPatch, public int $maxVersionRevision, - private int $priority + private int $schemaId ){} + /** + * @deprecated This is defined by Mojang, and therefore cannot be relied on. Use getSchemaId() instead for + * internal version management. + */ public function getVersionId() : int{ return ($this->maxVersionMajor << 24) | ($this->maxVersionMinor << 16) | ($this->maxVersionPatch << 8) | $this->maxVersionRevision; } - public function getPriority() : int{ return $this->priority; } + public function getSchemaId() : int{ return $this->schemaId; } public function isEmpty() : bool{ foreach([ diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 27aa5b510..64f79663e 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -110,13 +110,13 @@ final class BlockStateUpgradeSchemaUtils{ }; } - public static function fromJsonModel(BlockStateUpgradeSchemaModel $model, int $priority) : BlockStateUpgradeSchema{ + public static function fromJsonModel(BlockStateUpgradeSchemaModel $model, int $schemaId) : BlockStateUpgradeSchema{ $result = new BlockStateUpgradeSchema( $model->maxVersionMajor, $model->maxVersionMinor, $model->maxVersionPatch, $model->maxVersionRevision, - $priority + $schemaId ); $result->renamedIds = $model->renamedIds ?? []; $result->renamedProperties = $model->renamedProperties ?? []; @@ -250,11 +250,11 @@ final class BlockStateUpgradeSchemaUtils{ } /** - * Returns a list of schemas ordered by priority. Oldest schemas appear first. + * Returns a list of schemas ordered by schema ID. Oldest schemas appear first. * * @return BlockStateUpgradeSchema[] */ - public static function loadSchemas(string $path, int $currentVersion) : array{ + public static function loadSchemas(string $path, int $maxSchemaId) : array{ $iterator = new \RegexIterator( new \FilesystemIterator( $path, @@ -270,32 +270,30 @@ final class BlockStateUpgradeSchemaUtils{ /** @var string[] $matches */ foreach($iterator as $matches){ $filename = $matches[0]; - $priority = (int) $matches[1]; + $schemaId = (int) $matches[1]; + + if($schemaId > $maxSchemaId){ + continue; + } $fullPath = Path::join($path, $filename); $raw = Filesystem::fileGetContents($fullPath); try{ - $schema = self::loadSchemaFromString($raw, $priority); + $schema = self::loadSchemaFromString($raw, $schemaId); }catch(\RuntimeException $e){ throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); } - if($schema->getVersionId() > $currentVersion){ - //this might be a beta schema which shouldn't be applicable - //TODO: why do we load the whole schema just to throw it away if it's too new? ... - continue; - } - - $result[$priority] = $schema; + $result[$schemaId] = $schema; } ksort($result, SORT_NUMERIC); return $result; } - public static function loadSchemaFromString(string $raw, int $priority) : BlockStateUpgradeSchema{ + public static function loadSchemaFromString(string $raw, int $schemaId) : BlockStateUpgradeSchema{ try{ $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); }catch(\JsonException $e){ @@ -312,6 +310,6 @@ final class BlockStateUpgradeSchemaUtils{ throw new \RuntimeException($e->getMessage(), 0, $e); } - return self::fromJsonModel($model, $priority); + return self::fromJsonModel($model, $schemaId); } } diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php index 637674a26..b7fd5a422 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -31,7 +31,7 @@ use function ksort; use const SORT_NUMERIC; final class BlockStateUpgrader{ - /** @var BlockStateUpgradeSchema[][] */ + /** @var BlockStateUpgradeSchema[] */ private array $upgradeSchemas = []; /** @@ -45,59 +45,54 @@ final class BlockStateUpgrader{ } public function addSchema(BlockStateUpgradeSchema $schema) : void{ - $schemaList = $this->upgradeSchemas[$schema->getVersionId()] ?? []; - - $priority = $schema->getPriority(); - if(isset($schemaList[$priority])){ - throw new \InvalidArgumentException("Cannot add two schemas to the same version with the same priority"); + $schemaId = $schema->getSchemaId(); + if(isset($this->upgradeSchemas[$schemaId])){ + throw new \InvalidArgumentException("Cannot add two schemas with the same schema ID"); } - $schemaList[$priority] = $schema; - ksort($schemaList, SORT_NUMERIC); - $this->upgradeSchemas[$schema->getVersionId()] = $schemaList; + $this->upgradeSchemas[$schemaId] = $schema; ksort($this->upgradeSchemas, SORT_NUMERIC); } public function upgrade(BlockStateData $blockStateData) : BlockStateData{ $version = $blockStateData->getVersion(); - foreach($this->upgradeSchemas as $resultVersion => $schemas){ + foreach($this->upgradeSchemas as $schema){ + $resultVersion = $schema->getVersionId(); if($version > $resultVersion){ //even if this is actually the same version, we have to apply it anyway because mojang are dumb and //didn't always bump the blockstate version when changing it :( continue; } - foreach($schemas as $schema){ - $oldName = $blockStateData->getName(); - $oldState = $blockStateData->getStates(); - if(isset($schema->remappedStates[$oldName])){ - foreach($schema->remappedStates[$oldName] as $remap){ - if(count($oldState) !== count($remap->oldState)){ - continue; //try next state - } - foreach(Utils::stringifyKeys($oldState) as $k => $v){ - if(!isset($remap->oldState[$k]) || !$remap->oldState[$k]->equals($v)){ - continue 2; //try next state - } - } - - $blockStateData = new BlockStateData($remap->newName, $remap->newState, $resultVersion); - continue 2; //try next schema + $oldName = $blockStateData->getName(); + $oldState = $blockStateData->getStates(); + if(isset($schema->remappedStates[$oldName])){ + foreach($schema->remappedStates[$oldName] as $remap){ + if(count($oldState) !== count($remap->oldState)){ + continue; //try next state } + foreach(Utils::stringifyKeys($oldState) as $k => $v){ + if(!isset($remap->oldState[$k]) || !$remap->oldState[$k]->equals($v)){ + continue 2; //try next state + } + } + + $blockStateData = new BlockStateData($remap->newName, $remap->newState, $resultVersion); + continue 2; //try next schema } - $newName = $schema->renamedIds[$oldName] ?? null; + } + $newName = $schema->renamedIds[$oldName] ?? null; - $stateChanges = 0; - $states = $blockStateData->getStates(); + $stateChanges = 0; + $states = $blockStateData->getStates(); - $states = $this->applyPropertyAdded($schema, $oldName, $states, $stateChanges); - $states = $this->applyPropertyRemoved($schema, $oldName, $states, $stateChanges); - $states = $this->applyPropertyRenamedOrValueChanged($schema, $oldName, $states, $stateChanges); - $states = $this->applyPropertyValueChanged($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyAdded($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyRemoved($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyRenamedOrValueChanged($schema, $oldName, $states, $stateChanges); + $states = $this->applyPropertyValueChanged($schema, $oldName, $states, $stateChanges); - if($newName !== null || $stateChanges > 0){ - $blockStateData = new BlockStateData($newName ?? $oldName, $states, $resultVersion); - //don't break out; we may need to further upgrade the state - } + if($newName !== null || $stateChanges > 0){ + $blockStateData = new BlockStateData($newName ?? $oldName, $states, $resultVersion); + //don't break out; we may need to further upgrade the state } } diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index d22eb368b..bd983dea8 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -43,6 +43,7 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; * benefits for now. */ final class GlobalBlockStateHandlers{ + public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 151; //https://github.com/pmmp/BedrockBlockUpgradeSchema/blob/b0cc441e029cf5a6de5b05dd0f5657208855232b/nbt_upgrade_schema/0151_1.19.0.34_beta_to_1.19.20.json private static ?BlockObjectToStateSerializer $blockStateSerializer = null; @@ -64,7 +65,7 @@ final class GlobalBlockStateHandlers{ if(self::$blockDataUpgrader === null){ $blockStateUpgrader = new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), - BlockStateData::CURRENT_VERSION + self::MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID )); self::$blockDataUpgrader = new BlockDataUpgrader( BlockIdMetaUpgrader::loadFromString( From e9b994cbc3cf979b902738d0a6563bef6a832a04 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Feb 2023 15:29:45 +0000 Subject: [PATCH 507/692] Allow limiting max schema ID loaded for item ID upgrading --- .../bedrock/item/upgrade/ItemDataUpgrader.php | 6 +++--- .../item/upgrade/ItemIdMetaUpgradeSchema.php | 4 ++-- .../item/upgrade/ItemIdMetaUpgradeSchemaUtils.php | 15 +++++++++------ src/world/format/io/GlobalItemDataHandlers.php | 3 ++- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index defaed6a3..f37bc7f8e 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -64,10 +64,10 @@ final class ItemDataUpgrader{ } public function addIdMetaUpgradeSchema(ItemIdMetaUpgradeSchema $schema) : void{ - if(isset($this->idMetaUpgradeSchemas[$schema->getPriority()])){ - throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getPriority()); + if(isset($this->idMetaUpgradeSchemas[$schema->getSchemaId()])){ + throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getSchemaId()); } - $this->idMetaUpgradeSchemas[$schema->getPriority()] = $schema; + $this->idMetaUpgradeSchemas[$schema->getSchemaId()] = $schema; ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); } diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php index e88111ef2..8a271e430 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php @@ -36,10 +36,10 @@ final class ItemIdMetaUpgradeSchema{ public function __construct( private array $renamedIds, private array $remappedMetas, - private int $priority + private int $schemaId ){} - public function getPriority() : int{ return $this->priority; } + public function getSchemaId() : int{ return $this->schemaId; } public function renameId(string $id) : ?string{ return $this->renamedIds[mb_strtolower($id, 'US-ASCII')] ?? null; diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php index 6aade2eaa..ef1543a80 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchemaUtils.php @@ -39,7 +39,7 @@ final class ItemIdMetaUpgradeSchemaUtils{ * @return ItemIdMetaUpgradeSchema[] * @phpstan-return array */ - public static function loadSchemas(string $path) : array{ + public static function loadSchemas(string $path, int $maxSchemaId) : array{ $iterator = new \RegexIterator( new \FilesystemIterator( $path, @@ -55,26 +55,29 @@ final class ItemIdMetaUpgradeSchemaUtils{ /** @var string[] $matches */ foreach($iterator as $matches){ $filename = $matches[0]; - $priority = (int) $matches[1]; + $schemaId = (int) $matches[1]; + if($schemaId > $maxSchemaId){ + continue; + } $fullPath = Path::join($path, $filename); $raw = Filesystem::fileGetContents($fullPath); try{ - $schema = self::loadSchemaFromString($raw, $priority); + $schema = self::loadSchemaFromString($raw, $schemaId); }catch(\RuntimeException $e){ throw new \RuntimeException("Loading schema file $fullPath: " . $e->getMessage(), 0, $e); } - $result[$priority] = $schema; + $result[$schemaId] = $schema; } ksort($result, SORT_NUMERIC); return $result; } - public static function loadSchemaFromString(string $raw, int $priority) : ItemIdMetaUpgradeSchema{ + public static function loadSchemaFromString(string $raw, int $schemaId) : ItemIdMetaUpgradeSchema{ try{ $json = json_decode($raw, false, flags: JSON_THROW_ON_ERROR); }catch(\JsonException $e){ @@ -91,6 +94,6 @@ final class ItemIdMetaUpgradeSchemaUtils{ throw new \RuntimeException($e->getMessage(), 0, $e); } - return new ItemIdMetaUpgradeSchema($model->renamedIds, $model->remappedMetas, $priority); + return new ItemIdMetaUpgradeSchema($model->renamedIds, $model->remappedMetas, $schemaId); } } diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php index dab291b58..d7530113a 100644 --- a/src/world/format/io/GlobalItemDataHandlers.php +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -33,6 +33,7 @@ use Symfony\Component\Filesystem\Path; use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH; final class GlobalItemDataHandlers{ + public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 81; //0081_1.18.30_to_1.19.30.34_beta.json private static ?ItemSerializer $itemSerializer = null; @@ -53,7 +54,7 @@ final class GlobalItemDataHandlers{ LegacyItemIdToStringIdMap::getInstance(), R12ItemIdToBlockIdMap::getInstance(), GlobalBlockStateHandlers::getUpgrader(), - ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema')) + ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema'), self::MAX_ITEM_ID_UPGRADE_SCHEMA_ID) ); } } From 6b7a4e2c418e369348d00c3933cbe2934b49a22c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Feb 2023 16:08:49 +0000 Subject: [PATCH 508/692] Split up ItemDataUpgrader (preparing for code backport) --- .../bedrock/item/upgrade/ItemDataUpgrader.php | 49 ++---------- .../item/upgrade/ItemIdMetaUpgrader.php | 77 +++++++++++++++++++ .../format/io/GlobalItemDataHandlers.php | 5 +- 3 files changed, 87 insertions(+), 44 deletions(-) create mode 100644 src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index f37bc7f8e..47ac61219 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -36,40 +36,19 @@ use pocketmine\nbt\tag\ShortTag; use pocketmine\nbt\tag\StringTag; use pocketmine\utils\Binary; use function assert; -use function ksort; -use const SORT_NUMERIC; final class ItemDataUpgrader{ private const TAG_LEGACY_ID = "id"; //TAG_Short (or TAG_String for Java itemstacks) /** - * @var ItemIdMetaUpgradeSchema[] - * @phpstan-var array - */ - private array $idMetaUpgradeSchemas = []; - - /** - * @param ItemIdMetaUpgradeSchema[] $idMetaUpgradeSchemas * @phpstan-param array $idMetaUpgradeSchemas */ public function __construct( + private ItemIdMetaUpgrader $idMetaUpgrader, private LegacyItemIdToStringIdMap $legacyIntToStringIdMap, private R12ItemIdToBlockIdMap $r12ItemIdToBlockIdMap, private BlockDataUpgrader $blockDataUpgrader, - array $idMetaUpgradeSchemas - ){ - foreach($idMetaUpgradeSchemas as $schema){ - $this->addIdMetaUpgradeSchema($schema); - } - } - - public function addIdMetaUpgradeSchema(ItemIdMetaUpgradeSchema $schema) : void{ - if(isset($this->idMetaUpgradeSchemas[$schema->getSchemaId()])){ - throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getSchemaId()); - } - $this->idMetaUpgradeSchemas[$schema->getSchemaId()] = $schema; - ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); - } + ){} /** * This function replaces the legacy ItemFactory::get(). @@ -87,7 +66,7 @@ final class ItemDataUpgrader{ $blockStateData = null; } - [$newNameId, $newMeta] = $this->upgradeItemStringIdMeta($rawNameId, $meta); + [$newNameId, $newMeta] = $this->idMetaUpgrader->upgradeStringIdMeta($rawNameId, $meta); //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? @@ -107,6 +86,8 @@ final class ItemDataUpgrader{ * @throws SavedDataLoadingException if the legacy numeric ID doesn't map to a string ID */ public function upgradeItemTypeDataInt(int $legacyNumericId, int $meta, int $count, ?CompoundTag $nbt) : SavedItemStackData{ + //do not upgrade the ID beyond this initial step - we need the 1.12 ID for the item ID -> block ID map in the + //next step $rawNameId = $this->legacyIntToStringIdMap->legacyToString($legacyNumericId); if($rawNameId === null){ throw new SavedDataLoadingException("Unmapped legacy item ID $legacyNumericId"); @@ -158,7 +139,7 @@ final class ItemDataUpgrader{ $blockStateData = null; } - [$newNameId, $newMeta] = $this->upgradeItemStringIdMeta($rawNameId, $meta); + [$newNameId, $newMeta] = $this->idMetaUpgrader->upgradeStringIdMeta($rawNameId, $meta); //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? @@ -217,21 +198,5 @@ final class ItemDataUpgrader{ ); } - /** - * @phpstan-return array{string, int} - */ - public function upgradeItemStringIdMeta(string $id, int $meta) : array{ - $newId = $id; - $newMeta = $meta; - foreach($this->idMetaUpgradeSchemas as $schema){ - if(($remappedMetaId = $schema->remapMeta($newId, $newMeta)) !== null){ - $newId = $remappedMetaId; - $newMeta = 0; - }elseif(($renamedId = $schema->renameId($newId)) !== null){ - $newId = $renamedId; - } - } - - return [$newId, $newMeta]; - } + public function getIdMetaUpgrader() : ItemIdMetaUpgrader{ return $this->idMetaUpgrader; } } diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php new file mode 100644 index 000000000..6a0ec3eed --- /dev/null +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php @@ -0,0 +1,77 @@ + + */ + private array $idMetaUpgradeSchemas = []; + + /** + * @param ItemIdMetaUpgradeSchema[] $idMetaUpgradeSchemas + * @phpstan-param array $idMetaUpgradeSchemas + */ + public function __construct( + array $idMetaUpgradeSchemas, + ){ + foreach($idMetaUpgradeSchemas as $schema){ + $this->addIdMetaUpgradeSchema($schema); + } + } + + public function addIdMetaUpgradeSchema(ItemIdMetaUpgradeSchema $schema) : void{ + if(isset($this->idMetaUpgradeSchemas[$schema->getSchemaId()])){ + throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getSchemaId()); + } + $this->idMetaUpgradeSchemas[$schema->getSchemaId()] = $schema; + ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); + } + + /** + * @phpstan-return array{string, int} + */ + public function upgradeStringIdMeta(string $id, int $meta) : array{ + $newId = $id; + $newMeta = $meta; + foreach($this->idMetaUpgradeSchemas as $schema){ + if(($remappedMetaId = $schema->remapMeta($newId, $newMeta)) !== null){ + $newId = $remappedMetaId; + $newMeta = 0; + }elseif(($renamedId = $schema->renameId($newId)) !== null){ + $newId = $renamedId; + } + } + + return [$newId, $newMeta]; + } +} diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php index d7530113a..3c456dabd 100644 --- a/src/world/format/io/GlobalItemDataHandlers.php +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -26,6 +26,7 @@ namespace pocketmine\world\format\io; use pocketmine\data\bedrock\item\ItemDeserializer; use pocketmine\data\bedrock\item\ItemSerializer; use pocketmine\data\bedrock\item\upgrade\ItemDataUpgrader; +use pocketmine\data\bedrock\item\upgrade\ItemIdMetaUpgrader; use pocketmine\data\bedrock\item\upgrade\ItemIdMetaUpgradeSchemaUtils; use pocketmine\data\bedrock\item\upgrade\LegacyItemIdToStringIdMap; use pocketmine\data\bedrock\item\upgrade\R12ItemIdToBlockIdMap; @@ -51,10 +52,10 @@ final class GlobalItemDataHandlers{ public static function getUpgrader() : ItemDataUpgrader{ return self::$itemDataUpgrader ??= new ItemDataUpgrader( + new ItemIdMetaUpgrader(ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema'), self::MAX_ITEM_ID_UPGRADE_SCHEMA_ID)), LegacyItemIdToStringIdMap::getInstance(), R12ItemIdToBlockIdMap::getInstance(), - GlobalBlockStateHandlers::getUpgrader(), - ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema'), self::MAX_ITEM_ID_UPGRADE_SCHEMA_ID) + GlobalBlockStateHandlers::getUpgrader() ); } } From da5302ca86825451d01c3879d785cc6702f22a24 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Feb 2023 16:21:50 +0000 Subject: [PATCH 509/692] BlockStateData: introduce and use current() --- src/crafting/CraftingManagerFromDataHelper.php | 2 +- src/data/bedrock/block/BlockStateData.php | 8 ++++++++ src/data/bedrock/block/convert/BlockStateWriter.php | 2 +- src/data/bedrock/block/upgrade/BlockDataUpgrader.php | 2 +- src/network/mcpe/convert/RuntimeBlockMapping.php | 2 +- src/world/format/io/GlobalBlockStateHandlers.php | 2 +- 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 8e0bb8e04..228e3623a 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -117,7 +117,7 @@ final class CraftingManagerFromDataHelper{ ->read(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => base64_decode($blockStatesRaw, true))) ->mustGetCompoundTag() ->getValue(); - $blockStateData = new BlockStateData($blockName, $blockStatesTag, BlockStateData::CURRENT_VERSION); + $blockStateData = BlockStateData::current($blockName, $blockStatesTag); }else{ $blockStateData = null; } diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index be0048c6d..6ac0184f7 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -58,6 +58,14 @@ final class BlockStateData{ private int $version ){} + /** + * @param Tag[] $states + * @phpstan-param array $states + */ + public static function current(string $name, array $states) : self{ + return new self($name, $states, self::CURRENT_VERSION); + } + public function getName() : string{ return $this->name; } /** diff --git a/src/data/bedrock/block/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php index db305bb3d..eefd2ec69 100644 --- a/src/data/bedrock/block/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -281,6 +281,6 @@ final class BlockStateWriter{ } public function getBlockStateData() : BlockStateData{ - return new BlockStateData($this->id, $this->states, BlockStateData::CURRENT_VERSION); + return BlockStateData::current($this->id, $this->states); } } diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index e27469ac2..ad73cc98a 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -51,7 +51,7 @@ final class BlockDataUpgrader{ $blockStateData = $this->upgradeStringIdMeta($id, $data); if($blockStateData === null){ //unknown block, invalid ID - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + $blockStateData = BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); } }else{ //Modern (post-1.13) blockstate diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index f4d57924b..a379cd659 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -63,7 +63,7 @@ final class RuntimeBlockMapping{ private BlockStateSerializer $blockStateSerializer ){ $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData( - new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION) + BlockStateData::current(BlockTypeNames::INFO_UPDATE, []) ) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); //lookup the state data from the dictionary to avoid keeping two copies of the same data around $this->fallbackStateData = $this->blockStateDictionary->getDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index bd983dea8..1d7476acd 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -84,6 +84,6 @@ final class GlobalBlockStateHandlers{ } public static function getUnknownBlockStateData() : BlockStateData{ - return self::$unknownBlockStateData ??= new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + return self::$unknownBlockStateData ??= BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); } } From 433b0ca6ccaf415b0d2b012bad4d656dac38c621 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Feb 2023 16:23:21 +0000 Subject: [PATCH 510/692] Fix PHPStan --- src/data/bedrock/item/upgrade/ItemDataUpgrader.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 47ac61219..07629043e 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -40,9 +40,6 @@ use function assert; final class ItemDataUpgrader{ private const TAG_LEGACY_ID = "id"; //TAG_Short (or TAG_String for Java itemstacks) - /** - * @phpstan-param array $idMetaUpgradeSchemas - */ public function __construct( private ItemIdMetaUpgrader $idMetaUpgrader, private LegacyItemIdToStringIdMap $legacyIntToStringIdMap, From 5d0388e7478428d3c575bcdde4bc62da9ddb0299 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 11:10:29 +0000 Subject: [PATCH 511/692] PlayerPreLoginEvent no longer implements Cancellable please see #5516 for motivation on this, but I don't think anyone will be complaining - this behaviour made no sense and caused a lot of confusion for people who were trying to set custom ban messages. --- src/event/player/PlayerPreLoginEvent.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/event/player/PlayerPreLoginEvent.php b/src/event/player/PlayerPreLoginEvent.php index 258120fd7..8a3bbec9f 100644 --- a/src/event/player/PlayerPreLoginEvent.php +++ b/src/event/player/PlayerPreLoginEvent.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\event\player; -use pocketmine\event\Cancellable; use pocketmine\event\Event; use pocketmine\lang\Translatable; use pocketmine\player\PlayerInfo; @@ -40,7 +39,7 @@ use function count; * WARNING: Any information about the player CANNOT be trusted at this stage, because they are not authenticated and * could be a hacker posing as another player. */ -class PlayerPreLoginEvent extends Event implements Cancellable{ +class PlayerPreLoginEvent extends Event{ public const KICK_REASON_PLUGIN = 0; public const KICK_REASON_SERVER_FULL = 1; public const KICK_REASON_SERVER_WHITELISTED = 2; @@ -160,8 +159,4 @@ class PlayerPreLoginEvent extends Event implements Cancellable{ return ""; } - - public function isCancelled() : bool{ - return !$this->isAllowed(); - } } From 2d56aa50b9469a53ec6bfbddc2f5337624dbf170 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 11:32:32 +0000 Subject: [PATCH 512/692] A bunch of mostly inseparable changes to PlayerPreLoginEvent including support for separated disconnect reasons and disconnect screen messages (closes #4512) While the refactoring of kick reason -> kick flag wasn't exactly in my agenda, I realized that these changes would become pretty confusing and inconsistent with other events if they weren't refactored. Hopefully I don't have to break this API again for a while... --- src/event/player/PlayerPreLoginEvent.php | 100 ++++++++++++------ .../mcpe/handler/LoginPacketHandler.php | 8 +- 2 files changed, 70 insertions(+), 38 deletions(-) diff --git a/src/event/player/PlayerPreLoginEvent.php b/src/event/player/PlayerPreLoginEvent.php index 8a3bbec9f..5a69c0e17 100644 --- a/src/event/player/PlayerPreLoginEvent.php +++ b/src/event/player/PlayerPreLoginEvent.php @@ -40,20 +40,22 @@ use function count; * could be a hacker posing as another player. */ class PlayerPreLoginEvent extends Event{ - public const KICK_REASON_PLUGIN = 0; - public const KICK_REASON_SERVER_FULL = 1; - public const KICK_REASON_SERVER_WHITELISTED = 2; - public const KICK_REASON_BANNED = 3; + public const KICK_FLAG_PLUGIN = 0; + public const KICK_FLAG_SERVER_FULL = 1; + public const KICK_FLAG_SERVER_WHITELISTED = 2; + public const KICK_FLAG_BANNED = 3; - public const KICK_REASON_PRIORITY = [ - self::KICK_REASON_PLUGIN, //Plugin reason should always take priority over anything else - self::KICK_REASON_SERVER_FULL, - self::KICK_REASON_SERVER_WHITELISTED, - self::KICK_REASON_BANNED + public const KICK_FLAG_PRIORITY = [ + self::KICK_FLAG_PLUGIN, //Plugin reason should always take priority over anything else + self::KICK_FLAG_SERVER_FULL, + self::KICK_FLAG_SERVER_WHITELISTED, + self::KICK_FLAG_BANNED ]; /** @var Translatable[]|string[] reason const => associated message */ - protected array $kickReasons = []; + protected array $disconnectReasons = []; + /** @var Translatable[]|string[] */ + protected array $disconnectScreenMessages = []; public function __construct( private PlayerInfo $playerInfo, @@ -88,27 +90,31 @@ class PlayerPreLoginEvent extends Event{ } /** - * Returns an array of kick reasons currently assigned. + * Returns an array of kick flags currently assigned. * * @return int[] */ - public function getKickReasons() : array{ - return array_keys($this->kickReasons); + public function getKickFlags() : array{ + return array_keys($this->disconnectReasons); } /** - * Returns whether the given kick reason is set for this event. + * Returns whether the given kick flag is set for this event. */ - public function isKickReasonSet(int $flag) : bool{ - return isset($this->kickReasons[$flag]); + public function isKickFlagSet(int $flag) : bool{ + return isset($this->disconnectReasons[$flag]); } /** * Sets a reason to disallow the player to continue authenticating, with a message. * This can also be used to change kick messages for already-set flags. + * + * @param Translatable|string $disconnectReason Shown in the server log - this should be a short one-line message + * @param Translatable|string|null $disconnectScreenMessage Shown on the player's disconnection screen (null will use the reason) */ - public function setKickReason(int $flag, Translatable|string $message) : void{ - $this->kickReasons[$flag] = $message; + public function setKickFlag(int $flag, Translatable|string $disconnectReason, Translatable|string|null $disconnectScreenMessage = null) : void{ + $this->disconnectReasons[$flag] = $disconnectReason; + $this->disconnectScreenMessages[$flag] = $disconnectScreenMessage ?? $disconnectReason; } /** @@ -117,43 +123,69 @@ class PlayerPreLoginEvent extends Event{ * * @param int $flag Specific flag to clear. */ - public function clearKickReason(int $flag) : void{ - unset($this->kickReasons[$flag]); + public function clearKickFlag(int $flag) : void{ + unset($this->disconnectReasons[$flag], $this->disconnectScreenMessages[$flag]); } /** * Clears all pre-assigned kick reasons, allowing the player to continue logging in. */ - public function clearAllKickReasons() : void{ - $this->kickReasons = []; + public function clearAllKickFlags() : void{ + $this->disconnectReasons = []; + $this->disconnectScreenMessages = []; } /** * Returns whether the player is allowed to continue logging in. */ public function isAllowed() : bool{ - return count($this->kickReasons) === 0; + return count($this->disconnectReasons) === 0; } /** - * Returns the kick message provided for the given kick flag, or null if not set. + * Returns the disconnect reason provided for the given kick flag, or null if not set. + * This is the message which will be shown in the server log and on the console. */ - public function getKickMessage(int $flag) : Translatable|string|null{ - return $this->kickReasons[$flag] ?? null; + public function getDisconnectReason(int $flag) : Translatable|string|null{ + return $this->disconnectReasons[$flag] ?? null; } /** - * Returns the final kick message which will be shown on the disconnect screen. - * - * Note: Only one message (the highest priority one) will be shown. See priority order to decide how to set your + * Returns the disconnect screen message provided for the given kick flag, or null if not set. + * This is the message shown to the player on the disconnect screen. + */ + public function getDisconnectScreenMessage(int $flag) : Translatable|string|null{ + return $this->disconnectScreenMessages[$flag] ?? null; + } + + /** + * Resolves the message that will be shown in the server log if the player is kicked. + * Only one message (the highest priority one) will be shown. See priority order to decide how to set your * messages. * - * @see PlayerPreLoginEvent::KICK_REASON_PRIORITY + * @see PlayerPreLoginEvent::KICK_FLAG_PRIORITY */ - public function getFinalKickMessage() : Translatable|string{ - foreach(self::KICK_REASON_PRIORITY as $p){ - if(isset($this->kickReasons[$p])){ - return $this->kickReasons[$p]; + public function getFinalDisconnectReason() : Translatable|string{ + foreach(self::KICK_FLAG_PRIORITY as $p){ + if(isset($this->disconnectReasons[$p])){ + return $this->disconnectReasons[$p]; + } + } + + return ""; + } + + /** + * Resolves the message that will be shown on the player's disconnect screen if they are kicked. + * Only one message (the highest priority one) will be shown. See priority order to decide how to set your + * messages. + * + * @see PlayerPreLoginEvent::KICK_FLAG_PRIORITY + */ + public function getFinalDisconnectScreenMessage() : Translatable|string{ + foreach(self::KICK_FLAG_PRIORITY as $p){ + if(isset($this->disconnectScreenMessages[$p])){ + return $this->disconnectScreenMessages[$p]; } } diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index 744896b4d..acc425099 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -117,10 +117,10 @@ class LoginPacketHandler extends PacketHandler{ $this->server->requiresAuthentication() ); if($this->server->getNetwork()->getValidConnectionCount() > $this->server->getMaxPlayers()){ - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_FULL, KnownTranslationFactory::disconnectionScreen_serverFull()); + $ev->setKickFlag(PlayerPreLoginEvent::KICK_FLAG_SERVER_FULL, KnownTranslationFactory::disconnectionScreen_serverFull()); } if(!$this->server->isWhitelisted($playerInfo->getUsername())){ - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_SERVER_WHITELISTED, KnownTranslationFactory::pocketmine_disconnect_whitelisted()); + $ev->setKickFlag(PlayerPreLoginEvent::KICK_FLAG_SERVER_WHITELISTED, KnownTranslationFactory::pocketmine_disconnect_whitelisted()); } $banMessage = null; @@ -132,12 +132,12 @@ class LoginPacketHandler extends PacketHandler{ $banMessage = KnownTranslationFactory::pocketmine_disconnect_ban($banReason !== "" ? $banReason : KnownTranslationFactory::pocketmine_disconnect_ban_ip()); } if($banMessage !== null){ - $ev->setKickReason(PlayerPreLoginEvent::KICK_REASON_BANNED, $banMessage); + $ev->setKickFlag(PlayerPreLoginEvent::KICK_FLAG_BANNED, $banMessage); } $ev->call(); if(!$ev->isAllowed()){ - $this->session->disconnect($ev->getFinalKickMessage()); + $this->session->disconnect($ev->getFinalDisconnectReason(), $ev->getFinalDisconnectScreenMessage()); return true; } From 525f62e1e43f6b9e3c0e808998c3a967cff90948 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:00:16 +0000 Subject: [PATCH 513/692] =?UTF-8?q?=C3=82RakLib=200.15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 4 +-- composer.lock | 36 ++++++++++----------- src/network/mcpe/raklib/RakLibInterface.php | 5 +-- src/network/mcpe/raklib/RakLibServer.php | 3 +- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/composer.json b/composer.json index 6371e4697..4a26ad682 100644 --- a/composer.json +++ b/composer.json @@ -48,8 +48,8 @@ "pocketmine/log-pthreads": "^0.5.0", "pocketmine/math": "^0.4.0", "pocketmine/nbt": "^0.3.2", - "pocketmine/raklib": "^0.14.2", - "pocketmine/raklib-ipc": "^0.1.0", + "pocketmine/raklib": "^0.15.0", + "pocketmine/raklib-ipc": "^0.2.0", "pocketmine/snooze": "^0.4.0", "ramsey/uuid": "^4.1", "symfony/filesystem": "^5.4" diff --git a/composer.lock b/composer.lock index f242a9cb6..4a8fab0f9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "627198dc2e7f08e616478e9ca8ce9ae7", + "content-hash": "4e1a995669862685144f13d26f45fd6d", "packages": [ { "name": "adhocore/json-comment", @@ -780,16 +780,16 @@ }, { "name": "pocketmine/raklib", - "version": "0.14.5", + "version": "0.15.0", "source": { "type": "git", "url": "https://github.com/pmmp/RakLib.git", - "reference": "85b4e5cb7117d37e010eeadb3ff53b21276c6f48" + "reference": "1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/RakLib/zipball/85b4e5cb7117d37e010eeadb3ff53b21276c6f48", - "reference": "85b4e5cb7117d37e010eeadb3ff53b21276c6f48", + "url": "https://api.github.com/repos/pmmp/RakLib/zipball/1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1", + "reference": "1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1", "shasum": "" }, "require": { @@ -801,7 +801,7 @@ "pocketmine/log": "^0.3.0 || ^0.4.0" }, "require-dev": { - "phpstan/phpstan": "1.7.7", + "phpstan/phpstan": "1.9.17", "phpstan/phpstan-strict-rules": "^1.0" }, "type": "library", @@ -817,33 +817,33 @@ "description": "A RakNet server implementation written in PHP", "support": { "issues": "https://github.com/pmmp/RakLib/issues", - "source": "https://github.com/pmmp/RakLib/tree/0.14.5" + "source": "https://github.com/pmmp/RakLib/tree/0.15.0" }, - "time": "2022-08-25T16:16:44+00:00" + "time": "2023-02-13T12:56:35+00:00" }, { "name": "pocketmine/raklib-ipc", - "version": "0.1.1", + "version": "0.2.0", "source": { "type": "git", "url": "https://github.com/pmmp/RakLibIpc.git", - "reference": "922a6444b0c6c7daaa5aa5a832107e1ec4738aed" + "reference": "26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/RakLibIpc/zipball/922a6444b0c6c7daaa5aa5a832107e1ec4738aed", - "reference": "922a6444b0c6c7daaa5aa5a832107e1ec4738aed", + "url": "https://api.github.com/repos/pmmp/RakLibIpc/zipball/26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c", + "reference": "26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", + "php": "^8.0", "php-64bit": "*", "pocketmine/binaryutils": "^0.2.0", - "pocketmine/raklib": "^0.13.1 || ^0.14.0" + "pocketmine/raklib": "^0.15.0" }, "require-dev": { - "phpstan/phpstan": "0.12.81", - "phpstan/phpstan-strict-rules": "^0.12.2" + "phpstan/phpstan": "1.9.17", + "phpstan/phpstan-strict-rules": "^1.0.0" }, "type": "library", "autoload": { @@ -858,9 +858,9 @@ "description": "Channel-based protocols for inter-thread/inter-process communication with RakLib", "support": { "issues": "https://github.com/pmmp/RakLibIpc/issues", - "source": "https://github.com/pmmp/RakLibIpc/tree/0.1.1" + "source": "https://github.com/pmmp/RakLibIpc/tree/0.2.0" }, - "time": "2021-09-22T17:01:12+00:00" + "time": "2023-02-13T13:40:40+00:00" }, { "name": "pocketmine/snooze", diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 1adb3c844..f09eff2e6 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -39,6 +39,7 @@ use pocketmine\Server; use pocketmine\snooze\SleeperNotifier; use pocketmine\timings\Timings; use pocketmine\utils\Utils; +use raklib\generic\DisconnectReason; use raklib\generic\SocketException; use raklib\protocol\EncapsulatedPacket; use raklib\protocol\PacketReliability; @@ -142,11 +143,11 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ } } - public function onClientDisconnect(int $sessionId, string $reason) : void{ + public function onClientDisconnect(int $sessionId, int $reason) : void{ if(isset($this->sessions[$sessionId])){ $session = $this->sessions[$sessionId]; unset($this->sessions[$sessionId]); - $session->onClientDisconnect($reason); + $session->onClientDisconnect(DisconnectReason::toString($reason)); } } diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index ccdadca55..f199d6aa5 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -31,6 +31,7 @@ use raklib\generic\SocketException; use raklib\server\ipc\RakLibToUserThreadMessageSender; use raklib\server\ipc\UserToRakLibThreadMessageReceiver; use raklib\server\Server; +use raklib\server\ServerSocket; use raklib\server\SimpleProtocolAcceptor; use raklib\utils\ExceptionTraceCleaner; use raklib\utils\InternetAddress; @@ -119,7 +120,7 @@ class RakLibServer extends Thread{ register_shutdown_function([$this, "shutdownHandler"]); try{ - $socket = new Socket($this->address->deserialize()); + $socket = new ServerSocket($this->address->deserialize()); }catch(SocketException $e){ $this->setCrashInfo(RakLibThreadCrashInfo::fromThrowable($e)); return; From 886b40a4551fb71d81ca9ddc89230e4de646e101 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:10:25 +0000 Subject: [PATCH 514/692] =?UTF-8?q?=C3=82Localize=20disconnect=20reasons?= =?UTF-8?q?=20for=20RakLib=20disconnects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 2 +- composer.lock | 14 +++++++------- src/lang/KnownTranslationFactory.php | 12 ++++++++++++ src/lang/KnownTranslationKeys.php | 3 +++ src/network/mcpe/NetworkSession.php | 2 +- src/network/mcpe/raklib/RakLibInterface.php | 7 ++++++- 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 4a26ad682..14af18c14 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,7 @@ "pocketmine/classloader": "^0.3.0", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", - "pocketmine/locale-data": "~2.18.0", + "pocketmine/locale-data": "~2.19.0", "pocketmine/log": "^0.4.0", "pocketmine/log-pthreads": "^0.5.0", "pocketmine/math": "^0.4.0", diff --git a/composer.lock b/composer.lock index 4a8fab0f9..808f1f371 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4e1a995669862685144f13d26f45fd6d", + "content-hash": "ba82d633c6f28c95ea7dbe0dc97be7f0", "packages": [ { "name": "adhocore/json-comment", @@ -589,16 +589,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.18.3", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0" + "reference": "f47d1687f21f09d2858f040873184a11746b1cf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/da25bfe9ee4822a84feb9b7e620c56ad4000aed0", - "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0", + "url": "https://api.github.com/repos/pmmp/Language/zipball/f47d1687f21f09d2858f040873184a11746b1cf7", + "reference": "f47d1687f21f09d2858f040873184a11746b1cf7", "shasum": "" }, "type": "library", @@ -606,9 +606,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.18.3" + "source": "https://github.com/pmmp/Language/tree/2.19.0" }, - "time": "2023-01-17T21:43:36+00:00" + "time": "2023-02-13T13:55:22+00:00" }, { "name": "pocketmine/log", diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 07a8b17b4..ea8c2952e 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1606,6 +1606,14 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN_NOREASON, []); } + public static function pocketmine_disconnect_clientDisconnect() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_CLIENTDISCONNECT, []); + } + + public static function pocketmine_disconnect_clientReconnect() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_CLIENTRECONNECT, []); + } + public static function pocketmine_disconnect_error(Translatable|string $error, Translatable|string $errorId) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR, [ "error" => $error, @@ -1633,6 +1641,10 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_RESPAWN, []); } + public static function pocketmine_disconnect_error_timeout() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_TIMEOUT, []); + } + public static function pocketmine_disconnect_incompatibleProtocol(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 3221ecbdc..c83452730 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -349,12 +349,15 @@ final class KnownTranslationKeys{ public const POCKETMINE_DISCONNECT_BAN_HARDCORE = "pocketmine.disconnect.ban.hardcore"; public const POCKETMINE_DISCONNECT_BAN_IP = "pocketmine.disconnect.ban.ip"; public const POCKETMINE_DISCONNECT_BAN_NOREASON = "pocketmine.disconnect.ban.noReason"; + public const POCKETMINE_DISCONNECT_CLIENTDISCONNECT = "pocketmine.disconnect.clientDisconnect"; + public const POCKETMINE_DISCONNECT_CLIENTRECONNECT = "pocketmine.disconnect.clientReconnect"; public const POCKETMINE_DISCONNECT_ERROR = "pocketmine.disconnect.error"; public const POCKETMINE_DISCONNECT_ERROR_AUTHENTICATION = "pocketmine.disconnect.error.authentication"; public const POCKETMINE_DISCONNECT_ERROR_BADPACKET = "pocketmine.disconnect.error.badPacket"; public const POCKETMINE_DISCONNECT_ERROR_INTERNAL = "pocketmine.disconnect.error.internal"; public const POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT = "pocketmine.disconnect.error.loginTimeout"; public const POCKETMINE_DISCONNECT_ERROR_RESPAWN = "pocketmine.disconnect.error.respawn"; + public const POCKETMINE_DISCONNECT_ERROR_TIMEOUT = "pocketmine.disconnect.error.timeout"; public const POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL = "pocketmine.disconnect.incompatibleProtocol"; public const POCKETMINE_DISCONNECT_INVALIDSESSION = "pocketmine.disconnect.invalidSession"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE = "pocketmine.disconnect.invalidSession.badSignature"; diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 87731d791..44b1e3003 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -668,7 +668,7 @@ class NetworkSession{ * Called by the network interface to close the session when the client disconnects without server input, for * example in a timeout condition or voluntary client disconnect. */ - public function onClientDisconnect(string $reason) : void{ + public function onClientDisconnect(Translatable|string $reason) : void{ $this->tryDisconnect(function() use ($reason) : void{ if($this->player !== null){ $this->player->onPostDisconnect($reason, null); diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index f09eff2e6..412a74152 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -147,7 +147,12 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ if(isset($this->sessions[$sessionId])){ $session = $this->sessions[$sessionId]; unset($this->sessions[$sessionId]); - $session->onClientDisconnect(DisconnectReason::toString($reason)); + $session->onClientDisconnect(match($reason){ + DisconnectReason::CLIENT_DISCONNECT => KnownTranslationFactory::pocketmine_disconnect_clientDisconnect(), + DisconnectReason::PEER_TIMEOUT => KnownTranslationFactory::pocketmine_disconnect_error_timeout(), + DisconnectReason::CLIENT_RECONNECT => KnownTranslationFactory::pocketmine_disconnect_clientReconnect(), + default => "Unknown RakLib disconnect reason (ID $reason)" + }); } } From d891646d0ab2a62b3dbc93093555fca1a393023d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:10:42 +0000 Subject: [PATCH 515/692] Fix CS --- src/network/mcpe/raklib/RakLibServer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index f199d6aa5..3238d1b44 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -26,7 +26,6 @@ namespace pocketmine\network\mcpe\raklib; use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\NonThreadSafeValue; use pocketmine\thread\Thread; -use raklib\generic\Socket; use raklib\generic\SocketException; use raklib\server\ipc\RakLibToUserThreadMessageSender; use raklib\server\ipc\UserToRakLibThreadMessageReceiver; From 082f9e164772c2ca42f8ef1ef0b854345c32ae01 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:22:36 +0000 Subject: [PATCH 516/692] Deny permission to use a command if no permission is set Having no permission is almost always a bug. We already have behaviour elsewhere in the core that assumes undefined permission = permission denied. This behaviour might confuse some people, but I think it's much less dangerous than accidentally allowing everyone to use your command. --- src/command/Command.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/Command.php b/src/command/Command.php index 7ae9ae7c1..65d4decea 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -113,7 +113,7 @@ abstract class Command{ public function testPermissionSilent(CommandSender $target, ?string $permission = null) : bool{ $permission ??= $this->permission; if($permission === null || $permission === ""){ - return true; + return false; } foreach(explode(";", $permission) as $p){ From cb10360c204d30aa4c0bf6ada3f43be895c5ccb6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:24:30 +0000 Subject: [PATCH 517/692] SimpleCommandMap: require commands to have a permission fixes #5305 --- src/command/SimpleCommandMap.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index b0308e7f0..b46a24d08 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -139,6 +139,10 @@ class SimpleCommandMap implements CommandMap{ } public function register(string $fallbackPrefix, Command $command, ?string $label = null) : bool{ + if($command->getPermission() === null){ + throw new \InvalidArgumentException("Commands must have a permission set"); + } + if($label === null){ $label = $command->getLabel(); } From caebe14dab3e9862822e20479f7d33ffda11976f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:44:55 +0000 Subject: [PATCH 518/692] Use an array for command permissions it doesn't make sense to have to parse the string every time we want to verify permissions, nor to expect that people will somehow know to use ; to separate them without it being documented anywhere... --- src/command/Command.php | 40 +++++++++++++--------- src/command/SimpleCommandMap.php | 2 +- src/command/defaults/ClearCommand.php | 3 +- src/command/defaults/EffectCommand.php | 5 ++- src/command/defaults/EnchantCommand.php | 5 ++- src/command/defaults/GamemodeCommand.php | 5 ++- src/command/defaults/GiveCommand.php | 4 +-- src/command/defaults/KillCommand.php | 3 +- src/command/defaults/SpawnpointCommand.php | 5 ++- src/command/defaults/TeleportCommand.php | 5 ++- src/command/defaults/TimeCommand.php | 5 ++- src/command/defaults/TitleCommand.php | 4 +-- src/command/defaults/WhitelistCommand.php | 4 +-- 13 files changed, 44 insertions(+), 46 deletions(-) diff --git a/src/command/Command.php b/src/command/Command.php index 65d4decea..b144ad404 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -33,7 +33,7 @@ use pocketmine\permission\PermissionManager; use pocketmine\Server; use pocketmine\utils\BroadcastLoggerForwarder; use pocketmine\utils\TextFormat; -use function explode; +use function implode; use function str_replace; abstract class Command{ @@ -55,7 +55,8 @@ abstract class Command{ protected Translatable|string $usageMessage; - private ?string $permission = null; + /** @var string[] */ + private array $permission = []; private ?string $permissionMessage = null; /** @@ -81,19 +82,28 @@ abstract class Command{ return $this->name; } - public function getPermission() : ?string{ + /** + * @return string[] + */ + public function getPermission() : array{ return $this->permission; } - public function setPermission(?string $permission) : void{ - if($permission !== null){ - foreach(explode(";", $permission) as $perm){ - if(PermissionManager::getInstance()->getPermission($perm) === null){ - throw new \InvalidArgumentException("Cannot use non-existing permission \"$perm\""); - } + /** + * @param string[]|string|null $permissions + */ + public function setPermissions(array $permissions) : void{ + $permissionManager = PermissionManager::getInstance(); + foreach($permissions as $perm){ + if($permissionManager->getPermission($perm) === null){ + throw new \InvalidArgumentException("Cannot use non-existing permission \"$perm\""); } } - $this->permission = $permission; + $this->permission = $permissions; + } + + public function setPermission(?string $permission) : void{ + $this->setPermissions($permission === null ? [] : explode(";", $permission)); } public function testPermission(CommandSender $target, ?string $permission = null) : bool{ @@ -104,19 +114,15 @@ abstract class Command{ if($this->permissionMessage === null){ $target->sendMessage(KnownTranslationFactory::pocketmine_command_error_permission($this->name)->prefix(TextFormat::RED)); }elseif($this->permissionMessage !== ""){ - $target->sendMessage(str_replace("", $permission ?? $this->permission, $this->permissionMessage)); + $target->sendMessage(str_replace("", $permission ?? implode(";", $this->permission), $this->permissionMessage)); } return false; } public function testPermissionSilent(CommandSender $target, ?string $permission = null) : bool{ - $permission ??= $this->permission; - if($permission === null || $permission === ""){ - return false; - } - - foreach(explode(";", $permission) as $p){ + $list = $permission !== null ? [$permission] : $this->permission; + foreach($list as $p){ if($target->hasPermission($p)){ return true; } diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index b46a24d08..525ecd317 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -139,7 +139,7 @@ class SimpleCommandMap implements CommandMap{ } public function register(string $fallbackPrefix, Command $command, ?string $label = null) : bool{ - if($command->getPermission() === null){ + if(count($command->getPermission()) === 0){ throw new \InvalidArgumentException("Commands must have a permission set"); } diff --git a/src/command/defaults/ClearCommand.php b/src/command/defaults/ClearCommand.php index 4e312b4e9..f6f491fbf 100644 --- a/src/command/defaults/ClearCommand.php +++ b/src/command/defaults/ClearCommand.php @@ -35,7 +35,6 @@ use pocketmine\lang\KnownTranslationFactory; use pocketmine\permission\DefaultPermissionNames; use pocketmine\utils\TextFormat; use function count; -use function implode; use function min; class ClearCommand extends VanillaCommand{ @@ -46,7 +45,7 @@ class ClearCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_clear_description(), KnownTranslationFactory::pocketmine_command_clear_usage() ); - $this->setPermission(implode(";", [DefaultPermissionNames::COMMAND_CLEAR_SELF, DefaultPermissionNames::COMMAND_CLEAR_OTHER])); + $this->setPermissions([DefaultPermissionNames::COMMAND_CLEAR_SELF, DefaultPermissionNames::COMMAND_CLEAR_OTHER]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/EffectCommand.php b/src/command/defaults/EffectCommand.php index 187fd4573..938323222 100644 --- a/src/command/defaults/EffectCommand.php +++ b/src/command/defaults/EffectCommand.php @@ -32,7 +32,6 @@ use pocketmine\permission\DefaultPermissionNames; use pocketmine\utils\Limits; use pocketmine\utils\TextFormat; use function count; -use function implode; use function strtolower; class EffectCommand extends VanillaCommand{ @@ -43,10 +42,10 @@ class EffectCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_effect_description(), KnownTranslationFactory::commands_effect_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_EFFECT_SELF, DefaultPermissionNames::COMMAND_EFFECT_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/EnchantCommand.php b/src/command/defaults/EnchantCommand.php index 26d7d9bec..583bd59ec 100644 --- a/src/command/defaults/EnchantCommand.php +++ b/src/command/defaults/EnchantCommand.php @@ -30,7 +30,6 @@ use pocketmine\item\enchantment\StringToEnchantmentParser; use pocketmine\lang\KnownTranslationFactory; use pocketmine\permission\DefaultPermissionNames; use function count; -use function implode; class EnchantCommand extends VanillaCommand{ @@ -40,10 +39,10 @@ class EnchantCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_enchant_description(), KnownTranslationFactory::commands_enchant_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_ENCHANT_SELF, DefaultPermissionNames::COMMAND_ENCHANT_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/GamemodeCommand.php b/src/command/defaults/GamemodeCommand.php index 8fe4e38e9..86ca8e9df 100644 --- a/src/command/defaults/GamemodeCommand.php +++ b/src/command/defaults/GamemodeCommand.php @@ -30,7 +30,6 @@ use pocketmine\lang\KnownTranslationFactory; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\GameMode; use function count; -use function implode; class GamemodeCommand extends VanillaCommand{ @@ -40,10 +39,10 @@ class GamemodeCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_gamemode_description(), KnownTranslationFactory::commands_gamemode_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_GAMEMODE_SELF, DefaultPermissionNames::COMMAND_GAMEMODE_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/GiveCommand.php b/src/command/defaults/GiveCommand.php index 424904492..72d33688b 100644 --- a/src/command/defaults/GiveCommand.php +++ b/src/command/defaults/GiveCommand.php @@ -47,10 +47,10 @@ class GiveCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_give_description(), KnownTranslationFactory::pocketmine_command_give_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_GIVE_SELF, DefaultPermissionNames::COMMAND_GIVE_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/KillCommand.php b/src/command/defaults/KillCommand.php index 169905563..e58234ead 100644 --- a/src/command/defaults/KillCommand.php +++ b/src/command/defaults/KillCommand.php @@ -30,7 +30,6 @@ use pocketmine\event\entity\EntityDamageEvent; use pocketmine\lang\KnownTranslationFactory; use pocketmine\permission\DefaultPermissionNames; use function count; -use function implode; class KillCommand extends VanillaCommand{ @@ -41,7 +40,7 @@ class KillCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_kill_usage(), ["suicide"] ); - $this->setPermission(implode(";", [DefaultPermissionNames::COMMAND_KILL_SELF, DefaultPermissionNames::COMMAND_KILL_OTHER])); + $this->setPermissions([DefaultPermissionNames::COMMAND_KILL_SELF, DefaultPermissionNames::COMMAND_KILL_OTHER]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/SpawnpointCommand.php b/src/command/defaults/SpawnpointCommand.php index e037a6829..614a749d5 100644 --- a/src/command/defaults/SpawnpointCommand.php +++ b/src/command/defaults/SpawnpointCommand.php @@ -32,7 +32,6 @@ use pocketmine\player\Player; use pocketmine\world\Position; use pocketmine\world\World; use function count; -use function implode; use function round; class SpawnpointCommand extends VanillaCommand{ @@ -43,10 +42,10 @@ class SpawnpointCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_spawnpoint_description(), KnownTranslationFactory::commands_spawnpoint_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_SPAWNPOINT_SELF, DefaultPermissionNames::COMMAND_SPAWNPOINT_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/TeleportCommand.php b/src/command/defaults/TeleportCommand.php index 8ccfcec32..b506364bf 100644 --- a/src/command/defaults/TeleportCommand.php +++ b/src/command/defaults/TeleportCommand.php @@ -35,7 +35,6 @@ use pocketmine\utils\TextFormat; use pocketmine\world\World; use function array_shift; use function count; -use function implode; use function round; class TeleportCommand extends VanillaCommand{ @@ -47,10 +46,10 @@ class TeleportCommand extends VanillaCommand{ KnownTranslationFactory::commands_tp_usage(), ["teleport"] ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_TELEPORT_SELF, DefaultPermissionNames::COMMAND_TELEPORT_OTHER - ])); + ]); } private function findPlayer(CommandSender $sender, string $playerName) : ?Player{ diff --git a/src/command/defaults/TimeCommand.php b/src/command/defaults/TimeCommand.php index 325e178a8..8e937b21b 100644 --- a/src/command/defaults/TimeCommand.php +++ b/src/command/defaults/TimeCommand.php @@ -31,7 +31,6 @@ use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\world\World; use function count; -use function implode; class TimeCommand extends VanillaCommand{ @@ -41,13 +40,13 @@ class TimeCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_time_description(), KnownTranslationFactory::pocketmine_command_time_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_TIME_ADD, DefaultPermissionNames::COMMAND_TIME_SET, DefaultPermissionNames::COMMAND_TIME_START, DefaultPermissionNames::COMMAND_TIME_STOP, DefaultPermissionNames::COMMAND_TIME_QUERY - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/TitleCommand.php b/src/command/defaults/TitleCommand.php index e3bc247d7..ecc4c569c 100644 --- a/src/command/defaults/TitleCommand.php +++ b/src/command/defaults/TitleCommand.php @@ -39,10 +39,10 @@ class TitleCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_title_description(), KnownTranslationFactory::commands_title_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_TITLE_SELF, DefaultPermissionNames::COMMAND_TITLE_OTHER - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index cbf72902d..65860aefa 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -44,14 +44,14 @@ class WhitelistCommand extends VanillaCommand{ KnownTranslationFactory::pocketmine_command_whitelist_description(), KnownTranslationFactory::commands_whitelist_usage() ); - $this->setPermission(implode(";", [ + $this->setPermissions([ DefaultPermissionNames::COMMAND_WHITELIST_RELOAD, DefaultPermissionNames::COMMAND_WHITELIST_ENABLE, DefaultPermissionNames::COMMAND_WHITELIST_DISABLE, DefaultPermissionNames::COMMAND_WHITELIST_LIST, DefaultPermissionNames::COMMAND_WHITELIST_ADD, DefaultPermissionNames::COMMAND_WHITELIST_REMOVE - ])); + ]); } public function execute(CommandSender $sender, string $commandLabel, array $args){ From aacd92bf08ec765308e9e1ef5cab6cf11710ea93 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:46:37 +0000 Subject: [PATCH 519/692] Command: fix setPermissions docblock --- src/command/Command.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/Command.php b/src/command/Command.php index b144ad404..175be6433 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -90,7 +90,7 @@ abstract class Command{ } /** - * @param string[]|string|null $permissions + * @param string[] $permissions */ public function setPermissions(array $permissions) : void{ $permissionManager = PermissionManager::getInstance(); From c0f3dbdd70385d975a57001ce958e270cd8de0dc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2023 15:12:53 +0000 Subject: [PATCH 520/692] Regenerate constants for block and item data handling --- src/data/bedrock/block/BlockStateNames.php | 1 + src/data/bedrock/block/BlockTypeNames.php | 29 ++++++++++++++++++++++ src/data/bedrock/item/ItemTypeNames.php | 10 ++++++++ 3 files changed, 40 insertions(+) diff --git a/src/data/bedrock/block/BlockStateNames.php b/src/data/bedrock/block/BlockStateNames.php index 31973c01e..96cfc1fa5 100644 --- a/src/data/bedrock/block/BlockStateNames.php +++ b/src/data/bedrock/block/BlockStateNames.php @@ -44,6 +44,7 @@ final class BlockStateNames{ public const BITE_COUNTER = "bite_counter"; public const BLOCK_LIGHT_LEVEL = "block_light_level"; public const BLOOM = "bloom"; + public const BOOKS_STORED = "books_stored"; public const BREWING_STAND_SLOT_A_BIT = "brewing_stand_slot_a_bit"; public const BREWING_STAND_SLOT_B_BIT = "brewing_stand_slot_b_bit"; public const BREWING_STAND_SLOT_C_BIT = "brewing_stand_slot_c_bit"; diff --git a/src/data/bedrock/block/BlockTypeNames.php b/src/data/bedrock/block/BlockTypeNames.php index 9df763773..913472c47 100644 --- a/src/data/bedrock/block/BlockTypeNames.php +++ b/src/data/bedrock/block/BlockTypeNames.php @@ -34,6 +34,7 @@ final class BlockTypeNames{ public const ACACIA_BUTTON = "minecraft:acacia_button"; public const ACACIA_DOOR = "minecraft:acacia_door"; public const ACACIA_FENCE_GATE = "minecraft:acacia_fence_gate"; + public const ACACIA_HANGING_SIGN = "minecraft:acacia_hanging_sign"; public const ACACIA_PRESSURE_PLATE = "minecraft:acacia_pressure_plate"; public const ACACIA_STAIRS = "minecraft:acacia_stairs"; public const ACACIA_STANDING_SIGN = "minecraft:acacia_standing_sign"; @@ -51,7 +52,25 @@ final class BlockTypeNames{ public const AZALEA_LEAVES = "minecraft:azalea_leaves"; public const AZALEA_LEAVES_FLOWERED = "minecraft:azalea_leaves_flowered"; public const BAMBOO = "minecraft:bamboo"; + public const BAMBOO_BLOCK = "minecraft:bamboo_block"; + public const BAMBOO_BUTTON = "minecraft:bamboo_button"; + public const BAMBOO_DOOR = "minecraft:bamboo_door"; + public const BAMBOO_DOUBLE_SLAB = "minecraft:bamboo_double_slab"; + public const BAMBOO_FENCE = "minecraft:bamboo_fence"; + public const BAMBOO_FENCE_GATE = "minecraft:bamboo_fence_gate"; + public const BAMBOO_HANGING_SIGN = "minecraft:bamboo_hanging_sign"; + public const BAMBOO_MOSAIC = "minecraft:bamboo_mosaic"; + public const BAMBOO_MOSAIC_DOUBLE_SLAB = "minecraft:bamboo_mosaic_double_slab"; + public const BAMBOO_MOSAIC_SLAB = "minecraft:bamboo_mosaic_slab"; + public const BAMBOO_MOSAIC_STAIRS = "minecraft:bamboo_mosaic_stairs"; + public const BAMBOO_PLANKS = "minecraft:bamboo_planks"; + public const BAMBOO_PRESSURE_PLATE = "minecraft:bamboo_pressure_plate"; public const BAMBOO_SAPLING = "minecraft:bamboo_sapling"; + public const BAMBOO_SLAB = "minecraft:bamboo_slab"; + public const BAMBOO_STAIRS = "minecraft:bamboo_stairs"; + public const BAMBOO_STANDING_SIGN = "minecraft:bamboo_standing_sign"; + public const BAMBOO_TRAPDOOR = "minecraft:bamboo_trapdoor"; + public const BAMBOO_WALL_SIGN = "minecraft:bamboo_wall_sign"; public const BARREL = "minecraft:barrel"; public const BARRIER = "minecraft:barrier"; public const BASALT = "minecraft:basalt"; @@ -66,6 +85,7 @@ final class BlockTypeNames{ public const BIRCH_BUTTON = "minecraft:birch_button"; public const BIRCH_DOOR = "minecraft:birch_door"; public const BIRCH_FENCE_GATE = "minecraft:birch_fence_gate"; + public const BIRCH_HANGING_SIGN = "minecraft:birch_hanging_sign"; public const BIRCH_PRESSURE_PLATE = "minecraft:birch_pressure_plate"; public const BIRCH_STAIRS = "minecraft:birch_stairs"; public const BIRCH_STANDING_SIGN = "minecraft:birch_standing_sign"; @@ -117,6 +137,7 @@ final class BlockTypeNames{ public const CHEMICAL_HEAT = "minecraft:chemical_heat"; public const CHEMISTRY_TABLE = "minecraft:chemistry_table"; public const CHEST = "minecraft:chest"; + public const CHISELED_BOOKSHELF = "minecraft:chiseled_bookshelf"; public const CHISELED_DEEPSLATE = "minecraft:chiseled_deepslate"; public const CHISELED_NETHER_BRICKS = "minecraft:chiseled_nether_bricks"; public const CHISELED_POLISHED_BLACKSTONE = "minecraft:chiseled_polished_blackstone"; @@ -161,6 +182,7 @@ final class BlockTypeNames{ public const CRIMSON_FENCE = "minecraft:crimson_fence"; public const CRIMSON_FENCE_GATE = "minecraft:crimson_fence_gate"; public const CRIMSON_FUNGUS = "minecraft:crimson_fungus"; + public const CRIMSON_HANGING_SIGN = "minecraft:crimson_hanging_sign"; public const CRIMSON_HYPHAE = "minecraft:crimson_hyphae"; public const CRIMSON_NYLIUM = "minecraft:crimson_nylium"; public const CRIMSON_PLANKS = "minecraft:crimson_planks"; @@ -182,6 +204,7 @@ final class BlockTypeNames{ public const DARK_OAK_BUTTON = "minecraft:dark_oak_button"; public const DARK_OAK_DOOR = "minecraft:dark_oak_door"; public const DARK_OAK_FENCE_GATE = "minecraft:dark_oak_fence_gate"; + public const DARK_OAK_HANGING_SIGN = "minecraft:dark_oak_hanging_sign"; public const DARK_OAK_PRESSURE_PLATE = "minecraft:dark_oak_pressure_plate"; public const DARK_OAK_STAIRS = "minecraft:dark_oak_stairs"; public const DARK_OAK_TRAPDOOR = "minecraft:dark_oak_trapdoor"; @@ -424,6 +447,7 @@ final class BlockTypeNames{ public const JUNGLE_BUTTON = "minecraft:jungle_button"; public const JUNGLE_DOOR = "minecraft:jungle_door"; public const JUNGLE_FENCE_GATE = "minecraft:jungle_fence_gate"; + public const JUNGLE_HANGING_SIGN = "minecraft:jungle_hanging_sign"; public const JUNGLE_PRESSURE_PLATE = "minecraft:jungle_pressure_plate"; public const JUNGLE_STAIRS = "minecraft:jungle_stairs"; public const JUNGLE_STANDING_SIGN = "minecraft:jungle_standing_sign"; @@ -472,6 +496,7 @@ final class BlockTypeNames{ public const MANGROVE_DOUBLE_SLAB = "minecraft:mangrove_double_slab"; public const MANGROVE_FENCE = "minecraft:mangrove_fence"; public const MANGROVE_FENCE_GATE = "minecraft:mangrove_fence_gate"; + public const MANGROVE_HANGING_SIGN = "minecraft:mangrove_hanging_sign"; public const MANGROVE_LEAVES = "minecraft:mangrove_leaves"; public const MANGROVE_LOG = "minecraft:mangrove_log"; public const MANGROVE_PLANKS = "minecraft:mangrove_planks"; @@ -515,6 +540,7 @@ final class BlockTypeNames{ public const NETHERREACTOR = "minecraft:netherreactor"; public const NORMAL_STONE_STAIRS = "minecraft:normal_stone_stairs"; public const NOTEBLOCK = "minecraft:noteblock"; + public const OAK_HANGING_SIGN = "minecraft:oak_hanging_sign"; public const OAK_STAIRS = "minecraft:oak_stairs"; public const OBSERVER = "minecraft:observer"; public const OBSIDIAN = "minecraft:obsidian"; @@ -642,6 +668,7 @@ final class BlockTypeNames{ public const SPRUCE_BUTTON = "minecraft:spruce_button"; public const SPRUCE_DOOR = "minecraft:spruce_door"; public const SPRUCE_FENCE_GATE = "minecraft:spruce_fence_gate"; + public const SPRUCE_HANGING_SIGN = "minecraft:spruce_hanging_sign"; public const SPRUCE_PRESSURE_PLATE = "minecraft:spruce_pressure_plate"; public const SPRUCE_STAIRS = "minecraft:spruce_stairs"; public const SPRUCE_STANDING_SIGN = "minecraft:spruce_standing_sign"; @@ -667,6 +694,7 @@ final class BlockTypeNames{ public const STONECUTTER = "minecraft:stonecutter"; public const STONECUTTER_BLOCK = "minecraft:stonecutter_block"; public const STRIPPED_ACACIA_LOG = "minecraft:stripped_acacia_log"; + public const STRIPPED_BAMBOO_BLOCK = "minecraft:stripped_bamboo_block"; public const STRIPPED_BIRCH_LOG = "minecraft:stripped_birch_log"; public const STRIPPED_CRIMSON_HYPHAE = "minecraft:stripped_crimson_hyphae"; public const STRIPPED_CRIMSON_STEM = "minecraft:stripped_crimson_stem"; @@ -709,6 +737,7 @@ final class BlockTypeNames{ public const WARPED_FENCE = "minecraft:warped_fence"; public const WARPED_FENCE_GATE = "minecraft:warped_fence_gate"; public const WARPED_FUNGUS = "minecraft:warped_fungus"; + public const WARPED_HANGING_SIGN = "minecraft:warped_hanging_sign"; public const WARPED_HYPHAE = "minecraft:warped_hyphae"; public const WARPED_NYLIUM = "minecraft:warped_nylium"; public const WARPED_PLANKS = "minecraft:warped_planks"; diff --git a/src/data/bedrock/item/ItemTypeNames.php b/src/data/bedrock/item/ItemTypeNames.php index b8cd2b9b7..80a103df3 100644 --- a/src/data/bedrock/item/ItemTypeNames.php +++ b/src/data/bedrock/item/ItemTypeNames.php @@ -41,6 +41,9 @@ final class ItemTypeNames{ public const AXOLOTL_SPAWN_EGG = "minecraft:axolotl_spawn_egg"; public const BAKED_POTATO = "minecraft:baked_potato"; public const BALLOON = "minecraft:balloon"; + public const BAMBOO_CHEST_RAFT = "minecraft:bamboo_chest_raft"; + public const BAMBOO_RAFT = "minecraft:bamboo_raft"; + public const BAMBOO_SIGN = "minecraft:bamboo_sign"; public const BANNER = "minecraft:banner"; public const BANNER_PATTERN = "minecraft:banner_pattern"; public const BAT_SPAWN_EGG = "minecraft:bat_spawn_egg"; @@ -73,6 +76,7 @@ final class ItemTypeNames{ public const BROWN_DYE = "minecraft:brown_dye"; public const BUCKET = "minecraft:bucket"; public const CAKE = "minecraft:cake"; + public const CAMEL_SPAWN_EGG = "minecraft:camel_spawn_egg"; public const CAMERA = "minecraft:camera"; public const CAMPFIRE = "minecraft:campfire"; public const CARROT = "minecraft:carrot"; @@ -149,6 +153,7 @@ final class ItemTypeNames{ public const ENCHANTED_BOOK = "minecraft:enchanted_book"; public const ENCHANTED_GOLDEN_APPLE = "minecraft:enchanted_golden_apple"; public const END_CRYSTAL = "minecraft:end_crystal"; + public const ENDER_DRAGON_SPAWN_EGG = "minecraft:ender_dragon_spawn_egg"; public const ENDER_EYE = "minecraft:ender_eye"; public const ENDER_PEARL = "minecraft:ender_pearl"; public const ENDERMAN_SPAWN_EGG = "minecraft:enderman_spawn_egg"; @@ -215,6 +220,7 @@ final class ItemTypeNames{ public const IRON_BOOTS = "minecraft:iron_boots"; public const IRON_CHESTPLATE = "minecraft:iron_chestplate"; public const IRON_DOOR = "minecraft:iron_door"; + public const IRON_GOLEM_SPAWN_EGG = "minecraft:iron_golem_spawn_egg"; public const IRON_HELMET = "minecraft:iron_helmet"; public const IRON_HOE = "minecraft:iron_hoe"; public const IRON_HORSE_ARMOR = "minecraft:iron_horse_armor"; @@ -359,6 +365,8 @@ final class ItemTypeNames{ public const SKULL_BANNER_PATTERN = "minecraft:skull_banner_pattern"; public const SLIME_BALL = "minecraft:slime_ball"; public const SLIME_SPAWN_EGG = "minecraft:slime_spawn_egg"; + public const SNIFFER_SPAWN_EGG = "minecraft:sniffer_spawn_egg"; + public const SNOW_GOLEM_SPAWN_EGG = "minecraft:snow_golem_spawn_egg"; public const SNOWBALL = "minecraft:snowball"; public const SOUL_CAMPFIRE = "minecraft:soul_campfire"; public const SPARKLER = "minecraft:sparkler"; @@ -389,6 +397,7 @@ final class ItemTypeNames{ public const TADPOLE_SPAWN_EGG = "minecraft:tadpole_spawn_egg"; public const TNT_MINECART = "minecraft:tnt_minecart"; public const TOTEM_OF_UNDYING = "minecraft:totem_of_undying"; + public const TRADER_LLAMA_SPAWN_EGG = "minecraft:trader_llama_spawn_egg"; public const TRIDENT = "minecraft:trident"; public const TROPICAL_FISH = "minecraft:tropical_fish"; public const TROPICAL_FISH_BUCKET = "minecraft:tropical_fish_bucket"; @@ -409,6 +418,7 @@ final class ItemTypeNames{ public const WHITE_DYE = "minecraft:white_dye"; public const WITCH_SPAWN_EGG = "minecraft:witch_spawn_egg"; public const WITHER_SKELETON_SPAWN_EGG = "minecraft:wither_skeleton_spawn_egg"; + public const WITHER_SPAWN_EGG = "minecraft:wither_spawn_egg"; public const WOLF_SPAWN_EGG = "minecraft:wolf_spawn_egg"; public const WOODEN_AXE = "minecraft:wooden_axe"; public const WOODEN_DOOR = "minecraft:wooden_door"; From 7611155ff9c063834faa900f325424d347d12954 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2023 15:13:12 +0000 Subject: [PATCH 521/692] CS --- src/command/Command.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/command/Command.php b/src/command/Command.php index 175be6433..e17e7de87 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -33,6 +33,7 @@ use pocketmine\permission\PermissionManager; use pocketmine\Server; use pocketmine\utils\BroadcastLoggerForwarder; use pocketmine\utils\TextFormat; +use function explode; use function implode; use function str_replace; From 75f74454c63058e4906061605ed0f963eccec584 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Wed, 15 Feb 2023 18:15:04 +0300 Subject: [PATCH 522/692] Implemented reinforced deepslate (#5553) --- src/block/BlockTypeIds.php | 3 ++- src/block/VanillaBlocks.php | 6 ++++++ .../bedrock/block/convert/BlockObjectToStateSerializer.php | 1 + .../block/convert/BlockStateToObjectDeserializer.php | 1 + src/item/StringToItemParser.php | 1 + tests/phpunit/block/block_factory_consistency_check.json | 2 +- 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 324ef60ce..63ffb2025 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -712,8 +712,9 @@ final class BlockTypeIds{ public const MANGROVE_LEAVES = 10685; public const AZALEA_LEAVES = 10686; public const FLOWERING_AZALEA_LEAVES = 10687; + public const REINFORCED_DEEPSLATE = 10688; - public const FIRST_UNUSED_BLOCK_ID = 10688; + public const FIRST_UNUSED_BLOCK_ID = 10689; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 898e5833b..31584f668 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -628,6 +628,7 @@ use function mb_strtolower; * @method static Wall RED_SANDSTONE_WALL() * @method static Torch RED_TORCH() * @method static Flower RED_TULIP() + * @method static Opaque REINFORCED_DEEPSLATE() * @method static Reserved6 RESERVED6() * @method static DoublePlant ROSE_BUSH() * @method static Sand SAND() @@ -1201,6 +1202,11 @@ final class VanillaBlocks{ self::register("muddy_mangrove_roots", new SimplePillar(new BID(Ids::MUDDY_MANGROVE_ROOTS), "Muddy Mangrove Roots", new Info(BreakInfo::shovel(0.7), [Tags::MUD]))); self::register("froglight", new Froglight(new BID(Ids::FROGLIGHT), "Froglight", new Info(new BreakInfo(0.3)))); self::register("sculk", new Sculk(new BID(Ids::SCULK), "Sculk", new Info(new BreakInfo(0.6, ToolType::HOE)))); + self::register("reinforced_deepslate", new class(new BID(Ids::REINFORCED_DEEPSLATE), "Reinforced Deepslate", new Info(new BreakInfo(55.0, ToolType::NONE, 0, 3600.0))) extends Opaque{ + public function getDropsForCompatibleTool(Item $item) : array{ + return []; + } + }); self::registerBlocksR13(); self::registerBlocksR14(); diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 6e7497c0d..40d5650c3 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -544,6 +544,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->mapSimple(Blocks::REDSTONE(), Ids::REDSTONE_BLOCK); $this->mapSimple(Blocks::RED_MUSHROOM(), Ids::RED_MUSHROOM); $this->mapSimple(Blocks::RED_NETHER_BRICKS(), Ids::RED_NETHER_BRICK); + $this->mapSimple(Blocks::REINFORCED_DEEPSLATE(), Ids::REINFORCED_DEEPSLATE); $this->mapSimple(Blocks::RESERVED6(), Ids::RESERVED6); $this->mapSimple(Blocks::SCULK(), Ids::SCULK); $this->mapSimple(Blocks::SEA_LANTERN(), Ids::SEA_LANTERN); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index 7b10b935d..39e7b0b65 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -406,6 +406,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->mapSimple(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM()); $this->mapSimple(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS()); $this->mapSimple(Ids::REDSTONE_BLOCK, fn() => Blocks::REDSTONE()); + $this->mapSimple(Ids::REINFORCED_DEEPSLATE, fn() => Blocks::REINFORCED_DEEPSLATE()); $this->mapSimple(Ids::RESERVED6, fn() => Blocks::RESERVED6()); $this->mapSimple(Ids::SCULK, fn() => Blocks::SCULK()); $this->mapSimple(Ids::SEA_LANTERN, fn() => Blocks::SEA_LANTERN()); diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a7408dd51..37b8276f2 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -928,6 +928,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("redstone_wire", fn() => Blocks::REDSTONE_WIRE()); $result->registerBlock("reeds", fn() => Blocks::SUGARCANE()); $result->registerBlock("reeds_block", fn() => Blocks::SUGARCANE()); + $result->registerBlock("reinforced_deepslate", fn() => Blocks::REINFORCED_DEEPSLATE()); $result->registerBlock("repeater", fn() => Blocks::REDSTONE_REPEATER()); $result->registerBlock("repeater_block", fn() => Blocks::REDSTONE_REPEATER()); $result->registerBlock("reserved6", fn() => Blocks::RESERVED6()); diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 951af22a7..5f7ce0cbf 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azalea Leaves":[5471232,5471233,5471234,5471235],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Flowering Azalea Leaves":[5471744,5471745,5471746,5471747],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Leaves":[5470720,5470721,5470722,5470723],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azalea Leaves":[5471232,5471233,5471234,5471235],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Flowering Azalea Leaves":[5471744,5471745,5471746,5471747],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Leaves":[5470720,5470721,5470722,5470723],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Reinforced Deepslate":[5472256],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file From 4c3892b2d648b162c3cb742a8f4109252c3923b6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2023 15:41:12 +0000 Subject: [PATCH 523/692] RuntimeBlockStateRegistry: separate permutation expansion from register() --- src/block/RuntimeBlockStateRegistry.php | 48 +++++++++++++++---------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index 5aef7006f..15106d227 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -29,6 +29,7 @@ use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\light\LightUpdate; +use function get_class; use function min; /** @@ -81,6 +82,34 @@ class RuntimeBlockStateRegistry{ } } + /** + * Generates all the possible valid blockstates for a given block type. + * + * @phpstan-return \Generator + */ + private static function generateAllStatesForType(Block $block) : \Generator{ + //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes + //at some point we'll need to find a better way to do this + $bits = $block->getRequiredTypeDataBits() + $block->getRequiredStateDataBits(); + if($bits > Block::INTERNAL_STATE_DATA_BITS){ + throw new \InvalidArgumentException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); + } + for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ + $v = clone $block; + try{ + $v->decodeStateData($stateData); + if($v->computeStateData() !== $stateData){ + //TODO: this should probably be a hard error + throw new InvalidSerializedRuntimeDataException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeStateData() . " for input $stateData)"); + } + }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it + continue; + } + + yield $v; + } + } + /** * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading * from disk, and also when being read at runtime. @@ -102,24 +131,7 @@ class RuntimeBlockStateRegistry{ $this->typeIndex[$typeId] = clone $block; - //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes - //at some point we'll need to find a better way to do this - $bits = $block->getRequiredTypeDataBits() + $block->getRequiredStateDataBits(); - if($bits > Block::INTERNAL_STATE_DATA_BITS){ - throw new \InvalidArgumentException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); - } - for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ - $v = clone $block; - try{ - $v->decodeStateData($stateData); - if($v->computeStateData() !== $stateData){ - //if the fullID comes back different, this is a broken state that we can't rely on; map it to default - throw new InvalidSerializedRuntimeDataException("Corrupted state"); - } - }catch(InvalidSerializedRuntimeDataException $e){ //invalid property combination, leave it - continue; - } - + foreach(self::generateAllStatesForType($block) as $v){ $this->fillStaticArrays($v->getStateId(), $v); } } From e6f1cb69d1ee6871d21ff1c664cf74d1c7cceb09 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2023 15:44:58 +0000 Subject: [PATCH 524/692] RuntimeBlockStateRegistry: throw a hard error on blockstates that return different state data than they were given this suggests improper validation of state data. --- src/block/RuntimeBlockStateRegistry.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index 15106d227..ae6386e33 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -100,7 +100,7 @@ class RuntimeBlockStateRegistry{ $v->decodeStateData($stateData); if($v->computeStateData() !== $stateData){ //TODO: this should probably be a hard error - throw new InvalidSerializedRuntimeDataException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeStateData() . " for input $stateData)"); + throw new \LogicException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeStateData() . " for input $stateData)"); } }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it continue; From ceff230d73aba84e0fdad55d765879102ac5a248 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2023 15:57:54 +0000 Subject: [PATCH 525/692] Simplify generation of enum serializers code --- build/generate-runtime-enum-serializers.php | 71 +++++++-------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index f71b87cdc..cb30ef3df 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -60,11 +60,10 @@ require dirname(__DIR__) . '/vendor/autoload.php'; * @return string[] * @phpstan-return list */ -function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string &$functionName) : array{ +function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string $functionName) : array{ $bits = getBitsRequired($memberNames); $lines = []; - $functionName = lcfirst($virtualTypeName); $lines[] = "public function $functionName(\\$nativeTypeName \$value) : void{"; $lines[] = "\t\$this->int($bits, match(\$value){"; @@ -85,11 +84,10 @@ function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array * @return string[] * @phpstan-return list */ -function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string &$functionName) : array{ +function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array $memberNames, string $functionName) : array{ $bits = getBitsRequired($memberNames); $lines = []; - $functionName = lcfirst($virtualTypeName); $lines[] = "public function $functionName(\\$nativeTypeName &\$value) : void{"; $lines[] = "\t\$value = match(\$this->readInt($bits)){"; @@ -122,43 +120,6 @@ function stringifyEnumMembers(array $members, string $enumClass) : array{ return array_map(fn(string $enumCaseName) => "\\$enumClass::$enumCaseName()", array_keys($members)); } -/** - * @param object[] $enumMembers - * @phpstan-param array $enumMembers - * - * @return string[] - * @phpstan-return list - */ -function buildEnumWriterFunc(array $enumMembers, string &$functionName) : array{ - $reflect = new \ReflectionClass($enumMembers[array_key_first($enumMembers)]); - return buildWriterFunc( - $reflect->getShortName(), - $reflect->getName(), - stringifyEnumMembers($enumMembers, $reflect->getName()), - $functionName - ); -} - -/** - * @param object[] $enumMembers - * @phpstan-param array $enumMembers - * - * @return string[] - * @phpstan-return list - */ -function buildEnumReaderFunc(array $enumMembers, string &$functionName) : array{ - if(count($enumMembers) === 0){ - throw new \InvalidArgumentException("Enum members cannot be empty"); - } - $reflect = new \ReflectionClass($enumMembers[array_key_first($enumMembers)]); - return buildReaderFunc( - $reflect->getShortName(), - $reflect->getName(), - stringifyEnumMembers($enumMembers, $reflect->getName()), - $functionName - ); -} - $enumsUsed = [ BellAttachmentType::getAll(), CopperOxidation::getAll(), @@ -185,15 +146,29 @@ $writerFuncs = [ "abstract public function int(int \$bits, int \$value) : void;" ] ]; -$functionName = ""; foreach($enumsUsed as $enumMembers){ - $writerF = buildEnumWriterFunc($enumMembers, $functionName); - /** @var string $functionName */ - $writerFuncs[$functionName] = $writerF; - $readerF = buildEnumReaderFunc($enumMembers, $functionName); - /** @var string $functionName */ - $readerFuncs[$functionName] = $readerF; + if(count($enumMembers) === 0){ + throw new \InvalidArgumentException("Enum members cannot be empty"); + } + $reflect = new \ReflectionClass($enumMembers[array_key_first($enumMembers)]); + $virtualTypeName = $reflect->getShortName(); + $nativeTypeName = $reflect->getName(); + $functionName = lcfirst($virtualTypeName); + + $stringifiedMembers = stringifyEnumMembers($enumMembers, $nativeTypeName); + $writerFuncs[$functionName] = buildWriterFunc( + $virtualTypeName, + $nativeTypeName, + $stringifiedMembers, + $functionName + ); + $readerFuncs[$functionName] = buildReaderFunc( + $virtualTypeName, + $nativeTypeName, + $stringifiedMembers, + $functionName + ); } /** From c2f6d8139a1413b05a1999561162d6d73b97a3bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2023 16:23:32 +0000 Subject: [PATCH 526/692] Added interface RuntimeDataDescriber --- build/generate-runtime-enum-serializers.php | 24 +++++-- src/block/Anvil.php | 7 +- src/block/Bamboo.php | 5 +- src/block/BambooSapling.php | 5 +- src/block/Barrel.php | 5 +- src/block/Bed.php | 5 +- src/block/Bedrock.php | 5 +- src/block/Bell.php | 5 +- src/block/Block.php | 7 +- src/block/BrewingStand.php | 5 +- src/block/Button.php | 5 +- src/block/Cactus.php | 5 +- src/block/Cake.php | 5 +- src/block/Candle.php | 5 +- src/block/ChorusFlower.php | 5 +- src/block/CocoaBlock.php | 5 +- src/block/Crops.php | 5 +- src/block/DaylightSensor.php | 5 +- src/block/DetectorRail.php | 5 +- src/block/Dirt.php | 5 +- src/block/Door.php | 5 +- src/block/DoublePlant.php | 5 +- src/block/EndPortalFrame.php | 5 +- src/block/Farmland.php | 5 +- src/block/FenceGate.php | 5 +- src/block/FillableCauldron.php | 5 +- src/block/Fire.php | 5 +- src/block/FloorCoralFan.php | 5 +- src/block/Froglight.php | 5 +- src/block/FrostedIce.php | 5 +- src/block/Furnace.php | 5 +- src/block/Hopper.php | 5 +- src/block/ItemFrame.php | 5 +- src/block/Lantern.php | 5 +- src/block/Leaves.php | 5 +- src/block/Lectern.php | 5 +- src/block/Lever.php | 5 +- src/block/Light.php | 5 +- src/block/Liquid.php | 5 +- src/block/NetherPortal.php | 5 +- src/block/NetherVines.php | 5 +- src/block/NetherWartPlant.php | 5 +- src/block/Rail.php | 5 +- src/block/RedMushroomBlock.php | 5 +- src/block/RedstoneComparator.php | 5 +- src/block/RedstoneLamp.php | 5 +- src/block/RedstoneOre.php | 5 +- src/block/RedstoneRepeater.php | 5 +- src/block/RedstoneTorch.php | 5 +- src/block/Sapling.php | 5 +- src/block/SeaPickle.php | 5 +- src/block/ShulkerBox.php | 5 +- src/block/SimplePressurePlate.php | 5 +- src/block/Skull.php | 7 +- src/block/Slab.php | 5 +- src/block/SnowLayer.php | 5 +- src/block/Sponge.php | 5 +- src/block/Stair.php | 5 +- src/block/StraightOnlyRail.php | 5 +- src/block/Sugarcane.php | 5 +- src/block/SweetBerryBush.php | 5 +- src/block/TNT.php | 7 +- src/block/Torch.php | 5 +- src/block/Trapdoor.php | 5 +- src/block/Tripwire.php | 5 +- src/block/TripwireHook.php | 5 +- src/block/UnknownBlock.php | 5 +- src/block/Vine.php | 5 +- src/block/Wall.php | 5 +- src/block/WallCoralFan.php | 5 +- src/block/Wood.php | 5 +- .../AnalogRedstoneSignalEmitterTrait.php | 5 +- src/block/utils/AnyFacingTrait.php | 5 +- src/block/utils/CandleTrait.php | 5 +- src/block/utils/ColoredTrait.php | 5 +- src/block/utils/CopperTrait.php | 5 +- src/block/utils/CoralTypeTrait.php | 5 +- src/block/utils/HorizontalFacingTrait.php | 5 +- src/block/utils/PillarRotationTrait.php | 5 +- .../utils/RailPoweredByRedstoneTrait.php | 5 +- src/block/utils/SignLikeRotationTrait.php | 5 +- src/data/runtime/RuntimeDataDescriber.php | 67 +++++++++++++++++++ src/data/runtime/RuntimeDataReader.php | 13 ++-- src/data/runtime/RuntimeDataWriter.php | 58 +++++++++------- src/data/runtime/RuntimeEnumDescriber.php | 58 ++++++++++++++++ .../runtime/RuntimeEnumSerializerTrait.php | 54 +++++++-------- src/item/Banner.php | 5 +- src/item/CoralFan.php | 5 +- src/item/Dye.php | 5 +- src/item/Item.php | 4 +- src/item/ItemBlock.php | 5 +- src/item/Medicine.php | 5 +- src/item/Potion.php | 5 +- src/item/SplashPotion.php | 5 +- src/item/SuspiciousStew.php | 5 +- 95 files changed, 395 insertions(+), 331 deletions(-) create mode 100644 src/data/runtime/RuntimeDataDescriber.php create mode 100644 src/data/runtime/RuntimeEnumDescriber.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index cb30ef3df..d4b723814 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -64,8 +64,8 @@ function buildWriterFunc(string $virtualTypeName, string $nativeTypeName, array $bits = getBitsRequired($memberNames); $lines = []; - $lines[] = "public function $functionName(\\$nativeTypeName \$value) : void{"; - $lines[] = "\t\$this->int($bits, match(\$value){"; + $lines[] = "public function $functionName(\\$nativeTypeName &\$value) : void{"; + $lines[] = "\t\$this->writeInt($bits, match(\$value){"; foreach($memberNames as $key => $memberName){ $lines[] = "\t\t$memberName => $key,"; @@ -101,6 +101,10 @@ function buildReaderFunc(string $virtualTypeName, string $nativeTypeName, array return $lines; } +function buildInterfaceFunc(string $nativeTypeName, string $functionName) : string{ + return "public function $functionName(\\$nativeTypeName &\$value) : void;"; +} + /** * @param mixed[] $members */ @@ -143,9 +147,10 @@ $readerFuncs = [ ]; $writerFuncs = [ "" => [ - "abstract public function int(int \$bits, int \$value) : void;" + "abstract protected function writeInt(int \$bits, int \$value) : void;" ] ]; +$interfaceFuncs = []; foreach($enumsUsed as $enumMembers){ if(count($enumMembers) === 0){ @@ -169,13 +174,17 @@ foreach($enumsUsed as $enumMembers){ $stringifiedMembers, $functionName ); + $interfaceFuncs[$functionName] = [buildInterfaceFunc( + $nativeTypeName, + $functionName + )]; } /** * @param string[][] $functions * @phpstan-param array> $functions */ -function printFunctions(array $functions, string $className) : void{ +function printFunctions(array $functions, string $className, string $classType) : void{ ksort($functions, SORT_STRING); ob_start(); @@ -213,14 +222,15 @@ namespace pocketmine\data\runtime; HEADER; - echo "trait $className{\n\n"; + echo "$classType $className{\n\n"; echo implode("\n\n", array_map(fn(array $functionLines) => "\t" . implode("\n\t", $functionLines), $functions)); echo "\n\n}\n"; file_put_contents(dirname(__DIR__) . '/src/data/runtime/' . $className . '.php', ob_get_clean()); } -printFunctions($writerFuncs, "RuntimeEnumSerializerTrait"); -printFunctions($readerFuncs, "RuntimeEnumDeserializerTrait"); +printFunctions($writerFuncs, "RuntimeEnumSerializerTrait", "trait"); +printFunctions($readerFuncs, "RuntimeEnumDeserializerTrait", "trait"); +printFunctions($interfaceFuncs, "RuntimeEnumDescriber", "interface"); echo "Done. Don't forget to run CS fixup after generating code.\n"; diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 59b8d17c9..76dc2cede 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -28,8 +28,7 @@ use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\object\FallingBlock; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -54,13 +53,13 @@ class Anvil extends Transparent implements Fallable{ public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index 2f2640629..b576e771f 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; @@ -58,7 +57,7 @@ class Bamboo extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); $w->bool($this->thick); $w->bool($this->ready); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index b3eba99ff..d5342f6b4 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Bamboo as ItemBamboo; use pocketmine\item\Fertilizer; @@ -39,7 +38,7 @@ final class BambooSapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 68c344825..ee732b72c 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Barrel as TileBarrel; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -41,7 +40,7 @@ class Barrel extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->open); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 3a5e0ff10..6da2f5aa9 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -28,8 +28,7 @@ use pocketmine\block\utils\ColoredTrait; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\item\Item; @@ -56,7 +55,7 @@ class Bed extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->occupied); $w->bool($this->head); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index b4252d27c..5095d3a64 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class Bedrock extends Opaque{ private bool $burnsForever = false; public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index 85c4ecaaf..20942f1df 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -27,8 +27,7 @@ use pocketmine\block\tile\Bell as TileBell; use pocketmine\block\utils\BellAttachmentType; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\projectile\Projectile; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -51,7 +50,7 @@ final class Bell extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bellAttachmentType($this->attachmentType); $w->horizontalFacing($this->facing); } diff --git a/src/block/Block.php b/src/block/Block.php index 1481284a8..2dce0a49a 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -29,6 +29,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; @@ -174,7 +175,7 @@ class Block{ $stateBits = $this->getRequiredStateDataBits(); $requiredBits = $typeBits + $stateBits; $writer = new RuntimeDataWriter($requiredBits); - $writer->int($typeBits, $this->computeTypeData()); + $writer->writeInt($typeBits, $this->computeTypeData()); $this->describeState($writer); $writtenBits = $writer->getOffset() - $typeBits; @@ -185,11 +186,11 @@ class Block{ return $writer->getValue(); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //NOOP } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index cdc34eef9..033d93df0 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\tile\BrewingStand as TileBrewingStand; use pocketmine\block\utils\BrewingStandSlot; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -46,7 +45,7 @@ class BrewingStand extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->brewingStandSlots($this->slots); } diff --git a/src/block/Button.php b/src/block/Button.php index 64a953b7b..6274b7e69 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -41,7 +40,7 @@ abstract class Button extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->pressed); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 2f384b923..8828219d8 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\event\block\BlockGrowEvent; use pocketmine\event\entity\EntityDamageByBlockEvent; @@ -44,7 +43,7 @@ class Cactus extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index a17a767c1..8870968c2 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\math\AxisAlignedBB; @@ -39,7 +38,7 @@ class Cake extends BaseCake{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } diff --git a/src/block/Candle.php b/src/block/Candle.php index 9afc4c6de..b382c0fe5 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\CandleTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -51,7 +50,7 @@ class Candle extends Transparent{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $this->encodeLitState($w); $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); } diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php index 2a0c9ac02..8b20b0e3d 100644 --- a/src/block/ChorusFlower.php +++ b/src/block/ChorusFlower.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\projectile\Projectile; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Item; @@ -52,7 +51,7 @@ final class ChorusFlower extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataWriter|RuntimeDataReader $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 47213f82f..02c4390b9 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WoodType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -49,7 +48,7 @@ class CocoaBlock extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Crops.php b/src/block/Crops.php index 4052485c6..aabab87bb 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -41,7 +40,7 @@ abstract class Crops extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 2fdcfdef4..27ec3764e 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -44,7 +43,7 @@ class DaylightSensor extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); $w->bool($this->inverted); } diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 92c60f9f8..032f30870 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->activated); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index d0b38806a..ead1e0c83 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\DirtType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Fertilizer; use pocketmine\item\Hoe; use pocketmine\item\Item; @@ -48,7 +47,7 @@ class Dirt extends Opaque{ public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Door.php b/src/block/Door.php index 263d854aa..b0eba797c 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -44,7 +43,7 @@ class Door extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->hingeRight); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 6d6c80f0f..00c967271 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -36,7 +35,7 @@ class DoublePlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 2e4250984..f4e08393f 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -38,7 +37,7 @@ class EndPortalFrame extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->eye); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 2e80c5d2a..cdc3b464e 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\entity\EntityTrampleFarmlandEvent; @@ -40,7 +39,7 @@ class Farmland extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 96cb41d4e..75ffccbea 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WoodTypeTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -45,7 +44,7 @@ class FenceGate extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->open); $w->bool($this->inWall); diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php index acc16e575..048b3f312 100644 --- a/src/block/FillableCauldron.php +++ b/src/block/FillableCauldron.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -42,7 +41,7 @@ abstract class FillableCauldron extends Transparent{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); } diff --git a/src/block/Fire.php b/src/block/Fire.php index df3f8c79f..8184caf6d 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockBurnEvent; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\math\Facing; @@ -42,7 +41,7 @@ class Fire extends BaseFire{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index a9d53c119..11bfb9e0f 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; @@ -40,7 +39,7 @@ final class FloorCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index 0e8daa4b6..e93ec2eb8 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\FroglightType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; final class Froglight extends SimplePillar{ @@ -38,7 +37,7 @@ final class Froglight extends SimplePillar{ public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 081e5ad71..c1eacb019 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockMeltEvent; use function mt_rand; @@ -35,7 +34,7 @@ class FrostedIce extends Ice{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 2147169f2..8cb174985 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -27,8 +27,7 @@ use pocketmine\block\tile\Furnace as TileFurnace; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\crafting\FurnaceType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -49,7 +48,7 @@ class Furnace extends Opaque{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->lit); } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 603a48bae..7764a4ee7 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Hopper as TileHopper; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -42,7 +41,7 @@ class Hopper extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::UP); $w->bool($this->powered); } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 8828a8097..a3c313ca2 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\utils\AnyFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -53,7 +52,7 @@ class ItemFrame extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->hasMap); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index 50df67576..47aa4496f 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -46,7 +45,7 @@ class Lantern extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index d4f22c8ac..94d6cbcca 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\LeavesDecayEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -50,7 +49,7 @@ class Leaves extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->noDecay); $w->bool($this->checkDecay); } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index c77afd8e1..7a144dbb8 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -27,8 +27,7 @@ use pocketmine\block\tile\Lectern as TileLectern; use pocketmine\block\utils\FacesOppositePlacingPlayerTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\WritableBookBase; use pocketmine\math\AxisAlignedBB; @@ -49,7 +48,7 @@ class Lectern extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->producingSignal); } diff --git a/src/block/Lever.php b/src/block/Lever.php index b82fb04cb..a39937687 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\LeverFacing; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -47,7 +46,7 @@ class Lever extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->leverFacing($this->facing); $w->bool($this->activated); } diff --git a/src/block/Light.php b/src/block/Light.php index 397a8f98d..bdd232b6c 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -37,7 +36,7 @@ final class Light extends Flowable{ public function getRequiredTypeDataBits() : int{ return 4; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 769fc039a..4f76d4699 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\MinimumCostFlowCalculator; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\event\block\BlockFormEvent; use pocketmine\event\block\BlockSpreadEvent; @@ -51,7 +50,7 @@ abstract class Liquid extends Transparent{ public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->bool($this->falling); $w->bool($this->still); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 7a12ebd74..873040fd3 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -37,7 +36,7 @@ class NetherPortal extends Transparent{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php index 5b7a46d76..c2c497112 100644 --- a/src/block/NetherVines.php +++ b/src/block/NetherVines.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; @@ -57,7 +56,7 @@ class NetherVines extends Flowable{ return 5; } - public function describeState(RuntimeDataWriter|RuntimeDataReader $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(5, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index a9325d92f..2d3316b2c 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Item; use pocketmine\math\Facing; @@ -40,7 +39,7 @@ class NetherWartPlant extends Flowable{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 31d74c061..2d37f6e95 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\Facing; use function array_keys; use function implode; @@ -37,7 +36,7 @@ class Rail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->railShape($this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 18ab59bd1..42763ba95 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\MushroomBlockType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use function mt_rand; @@ -39,7 +38,7 @@ class RedMushroomBlock extends Opaque{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->mushroomBlockType($this->mushroomBlockType); } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index 50fe4d28f..e105701d1 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -28,8 +28,7 @@ use pocketmine\block\utils\AnalogRedstoneSignalEmitterTrait; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -47,7 +46,7 @@ class RedstoneComparator extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->isSubtractMode); $w->bool($this->powered); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 9a8c3785c..5557076b3 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -24,15 +24,14 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\PoweredByRedstoneTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index c4f449700..34d463731 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; @@ -36,7 +35,7 @@ class RedstoneOre extends Opaque{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index b72d25463..212bc9f4e 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\PoweredByRedstoneTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -46,7 +45,7 @@ class RedstoneRepeater extends Flowable{ public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); $w->bool($this->powered); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index ba37039f2..b36bc9185 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneTorch extends Torch{ protected bool $lit = true; public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->lit); } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index cfe301223..ea04ba624 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\TreeType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -49,7 +48,7 @@ class Sapling extends Flowable{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index fe2cd1dac..770ae6b45 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; @@ -41,7 +40,7 @@ class SeaPickle extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->bool($this->underwater); } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index 72236be48..292506deb 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\utils\AnyFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -37,7 +36,7 @@ class ShulkerBox extends Opaque{ public function getRequiredStateDataBits() : int{ return 0; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index 1d0a9d8c1..f93e244a5 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index b2e02b8d4..36a587aa9 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\utils\SkullType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -52,13 +51,13 @@ class Skull extends Flowable{ public function getRequiredTypeDataBits() : int{ return 3; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Slab.php b/src/block/Slab.php index a1b09a151..3290648eb 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\SlabType; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -44,7 +43,7 @@ class Slab extends Transparent{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->slabType($this->slabType); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index e3628f98a..4f3950e74 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockMeltEvent; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -49,7 +48,7 @@ class SnowLayer extends Flowable implements Fallable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index d4eceb542..d8784febd 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index 83569e8b1..afbbf7918 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -26,8 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\StairShape; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; @@ -49,7 +48,7 @@ class Stair extends Transparent{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->upsideDown); } diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 9b8141355..bb9482fe9 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\RailConnectionInfo; use pocketmine\data\bedrock\block\BlockLegacyMetadata; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use function array_keys; use function implode; @@ -39,7 +38,7 @@ class StraightOnlyRail extends BaseRail{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->straightOnlyRailShape($this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 69951dce4..a23c6d74d 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockGrowEvent; use pocketmine\item\Fertilizer; use pocketmine\item\Item; @@ -41,7 +40,7 @@ class Sugarcane extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index f7b8b1c02..a93306da9 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\entity\Living; use pocketmine\event\block\BlockGrowEvent; @@ -48,7 +47,7 @@ class SweetBerryBush extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index cf1158a67..1206d0e30 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Location; use pocketmine\entity\object\PrimedTNT; use pocketmine\entity\projectile\Projectile; @@ -48,13 +47,13 @@ class TNT extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index 0542c2be6..5b496c9ad 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -39,7 +38,7 @@ class Torch extends Flowable{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 8f6d5aab1..83bf4693e 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\block\utils\SupportType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -43,7 +42,7 @@ class Trapdoor extends Transparent{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->open); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 74d55ffba..c785e6d12 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\VanillaItems; @@ -36,7 +35,7 @@ class Tripwire extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->triggered); $w->bool($this->suspended); $w->bool($this->connected); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index cb39e42d0..9180f971f 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -41,7 +40,7 @@ class TripwireHook extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->connected); $w->bool($this->powered); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index dd4a934c3..f3faeb689 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; /** @@ -41,7 +40,7 @@ class UnknownBlock extends Transparent{ public function getRequiredTypeDataBits() : int{ return Block::INTERNAL_STATE_DATA_BITS; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); diff --git a/src/block/Vine.php b/src/block/Vine.php index 0ba00fee6..65c6d59ae 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\math\Axis; @@ -42,7 +41,7 @@ class Vine extends Flowable{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacingFlags($this->faces); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 817df1658..84b45150c 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\SupportType; use pocketmine\block\utils\WallConnectionType; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\Axis; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; @@ -45,7 +44,7 @@ class Wall extends Transparent{ public function getRequiredStateDataBits() : int{ return 9; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->wallConnections($this->connections); $w->bool($this->post); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index e100170f4..f50438c6e 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\HorizontalFacingTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Axis; @@ -39,7 +38,7 @@ final class WallCoralFan extends BaseCoral{ public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index cadc32036..5ffd1c775 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -25,8 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\PillarRotationTrait; use pocketmine\block\utils\WoodTypeTrait; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\math\Vector3; @@ -41,7 +40,7 @@ class Wood extends Opaque{ public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 4c8cd5be9..5247e7576 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index cf98507d3..0788c1aca 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\Facing; trait AnyFacingTrait{ @@ -32,7 +31,7 @@ trait AnyFacingTrait{ public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index bb1e3fba3..1391382e4 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\projectile\Projectile; use pocketmine\item\Durable; use pocketmine\item\enchantment\VanillaEnchantments; @@ -42,7 +41,7 @@ trait CandleTrait{ public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 00e0d61a2..ce7113159 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; trait ColoredTrait{ /** @var DyeColor */ @@ -34,7 +33,7 @@ trait ColoredTrait{ public function getRequiredTypeDataBits() : int{ return 4; } /** @see Block::describeType() */ - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 6bbb4fa37..0842d1351 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -25,8 +25,7 @@ namespace pocketmine\block\utils; use pocketmine\block\BlockIdentifier; use pocketmine\block\BlockTypeInfo; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Axe; use pocketmine\item\Item; use pocketmine\item\ItemTypeIds; @@ -47,7 +46,7 @@ trait CopperTrait{ public function getRequiredTypeDataBits() : int{ return 3; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index ccab725e1..3e362394a 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; trait CoralTypeTrait{ protected CoralType $coralType; @@ -34,7 +33,7 @@ trait CoralTypeTrait{ public function getRequiredTypeDataBits() : int{ return 4; } /** @see Block::describeType() */ - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); $w->bool($this->dead); } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 437dd2cf3..283cba078 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -33,7 +32,7 @@ trait HorizontalFacingTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 8c1480b03..9b898ca15 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; use pocketmine\block\Block; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -38,7 +37,7 @@ trait PillarRotationTrait{ public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->axis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 64a03f35e..19801ee10 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->powered); } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index e2c6d7609..9fb03b8a4 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\utils; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use function floor; trait SignLikeRotationTrait{ @@ -33,7 +32,7 @@ trait SignLikeRotationTrait{ public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->rotation); } diff --git a/src/data/runtime/RuntimeDataDescriber.php b/src/data/runtime/RuntimeDataDescriber.php new file mode 100644 index 000000000..e983cea31 --- /dev/null +++ b/src/data/runtime/RuntimeDataDescriber.php @@ -0,0 +1,67 @@ + $connections + */ + public function wallConnections(array &$connections) : void; + + /** + * @param BrewingStandSlot[] $slots + * @phpstan-param array $slots + */ + public function brewingStandSlots(array &$slots) : void; + + public function railShape(int &$railShape) : void; + + public function straightOnlyRailShape(int &$railShape) : void; +} diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index f09d857f5..14fbca209 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -30,7 +30,7 @@ use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; -final class RuntimeDataReader{ +final class RuntimeDataReader implements RuntimeDataDescriber{ use RuntimeEnumDeserializerTrait; private int $offset = 0; @@ -55,12 +55,16 @@ final class RuntimeDataReader{ $value = $this->readInt($bits); } - public function boundedInt(int $bits, int $min, int $max, int &$value) : void{ + protected function readBoundedInt(int $bits, int $min, int $max) : int{ $result = $this->readInt($bits) + $min; if($result < $min || $result > $max){ throw new InvalidSerializedRuntimeDataException("Value is outside the range $min - $max"); } - $value = $result; + return $result; + } + + public function boundedInt(int $bits, int $min, int $max, int &$value) : void{ + $value = $this->readBoundedInt($bits, $min, $max); } protected function readBool() : bool{ @@ -142,8 +146,7 @@ final class RuntimeDataReader{ $result = []; //TODO: we can pack this into 7 bits instead of 8 foreach(Facing::HORIZONTAL as $facing){ - $type = 0; - $this->boundedInt(2, 0, 2, $type); + $type = $this->readBoundedInt(2, 0, 2); if($type !== 0){ $result[$facing] = match($type){ 1 => WallConnectionType::SHORT(), diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index 23aa45b39..feaef3698 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -30,7 +30,7 @@ use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; use function array_flip; -final class RuntimeDataWriter{ +final class RuntimeDataWriter implements RuntimeDataDescriber{ use RuntimeEnumSerializerTrait; private int $value = 0; @@ -40,7 +40,7 @@ final class RuntimeDataWriter{ private int $maxBits ){} - public function int(int $bits, int $value) : void{ + public function writeInt(int $bits, int $value) : void{ if($this->offset + $bits > $this->maxBits){ throw new \InvalidArgumentException("Bit buffer cannot be larger than $this->maxBits bits (already have $this->offset bits)"); } @@ -52,19 +52,31 @@ final class RuntimeDataWriter{ $this->offset += $bits; } - public function boundedInt(int $bits, int $min, int $max, int $value) : void{ + public function int(int $bits, int &$value) : void{ + $this->writeInt($bits, $value); + } + + protected function writeBoundedInt(int $bits, int $min, int $max, int $value) : void{ if($value < $min || $value > $max){ throw new \InvalidArgumentException("Value $value is outside the range $min - $max"); } - $this->int($bits, $value - $min); + $this->writeInt($bits, $value - $min); } - public function bool(bool $value) : void{ - $this->int(1, $value ? 1 : 0); + public function boundedInt(int $bits, int $min, int $max, int &$value) : void{ + $this->writeBoundedInt($bits, $min, $max, $value); } - public function horizontalFacing(int $facing) : void{ - $this->int(2, match($facing){ + protected function writeBool(bool $value) : void{ + $this->writeInt(1, $value ? 1 : 0); + } + + public function bool(bool &$value) : void{ + $this->writeBool($value); + } + + public function horizontalFacing(int &$facing) : void{ + $this->writeInt(2, match($facing){ Facing::NORTH => 0, Facing::EAST => 1, Facing::SOUTH => 2, @@ -76,15 +88,15 @@ final class RuntimeDataWriter{ /** * @param int[] $faces */ - public function horizontalFacingFlags(array $faces) : void{ + public function horizontalFacingFlags(array &$faces) : void{ $uniqueFaces = array_flip($faces); foreach(Facing::HORIZONTAL as $facing){ - $this->bool(isset($uniqueFaces[$facing])); + $this->writeBool(isset($uniqueFaces[$facing])); } } - public function facing(int $facing) : void{ - $this->int(3, match($facing){ + public function facing(int &$facing) : void{ + $this->writeInt(3, match($facing){ 0 => Facing::DOWN, 1 => Facing::UP, 2 => Facing::NORTH, @@ -95,12 +107,12 @@ final class RuntimeDataWriter{ }); } - public function facingExcept(int $facing, int $except) : void{ + public function facingExcept(int &$facing, int $except) : void{ $this->facing($facing); } - public function axis(int $axis) : void{ - $this->int(2, match($axis){ + public function axis(int &$axis) : void{ + $this->writeInt(2, match($axis){ Axis::X => 0, Axis::Z => 1, Axis::Y => 2, @@ -108,8 +120,8 @@ final class RuntimeDataWriter{ }); } - public function horizontalAxis(int $axis) : void{ - $this->int(1, match($axis){ + public function horizontalAxis(int &$axis) : void{ + $this->writeInt(1, match($axis){ Axis::X => 0, Axis::Z => 1, default => throw new \InvalidArgumentException("Invalid horizontal axis $axis") @@ -120,10 +132,10 @@ final class RuntimeDataWriter{ * @param WallConnectionType[] $connections * @phpstan-param array $connections */ - public function wallConnections(array $connections) : void{ + public function wallConnections(array &$connections) : void{ //TODO: we can pack this into 7 bits instead of 8 foreach(Facing::HORIZONTAL as $facing){ - $this->boundedInt(2, 0, 2, match($connections[$facing] ?? null){ + $this->writeBoundedInt(2, 0, 2, match($connections[$facing] ?? null){ null => 0, WallConnectionType::SHORT() => 1, WallConnectionType::TALL() => 2, @@ -136,21 +148,21 @@ final class RuntimeDataWriter{ * @param BrewingStandSlot[] $slots * @phpstan-param array $slots */ - public function brewingStandSlots(array $slots) : void{ + public function brewingStandSlots(array &$slots) : void{ foreach([ BrewingStandSlot::EAST(), BrewingStandSlot::NORTHWEST(), BrewingStandSlot::SOUTHWEST(), ] as $member){ - $this->bool(isset($slots[$member->id()])); + $this->writeBool(isset($slots[$member->id()])); } } - public function railShape(int $railShape) : void{ + public function railShape(int &$railShape) : void{ $this->int(4, $railShape); } - public function straightOnlyRailShape(int $railShape) : void{ + public function straightOnlyRailShape(int &$railShape) : void{ $this->int(3, $railShape); } diff --git a/src/data/runtime/RuntimeEnumDescriber.php b/src/data/runtime/RuntimeEnumDescriber.php new file mode 100644 index 000000000..dc0083e8b --- /dev/null +++ b/src/data/runtime/RuntimeEnumDescriber.php @@ -0,0 +1,58 @@ +int(2, match($value){ + public function bellAttachmentType(\pocketmine\block\utils\BellAttachmentType &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\BellAttachmentType::CEILING() => 0, \pocketmine\block\utils\BellAttachmentType::FLOOR() => 1, \pocketmine\block\utils\BellAttachmentType::ONE_WALL() => 2, @@ -41,8 +41,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function copperOxidation(\pocketmine\block\utils\CopperOxidation $value) : void{ - $this->int(2, match($value){ + public function copperOxidation(\pocketmine\block\utils\CopperOxidation &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\CopperOxidation::EXPOSED() => 0, \pocketmine\block\utils\CopperOxidation::NONE() => 1, \pocketmine\block\utils\CopperOxidation::OXIDIZED() => 2, @@ -51,8 +51,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function coralType(\pocketmine\block\utils\CoralType $value) : void{ - $this->int(3, match($value){ + public function coralType(\pocketmine\block\utils\CoralType &$value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\CoralType::BRAIN() => 0, \pocketmine\block\utils\CoralType::BUBBLE() => 1, \pocketmine\block\utils\CoralType::FIRE() => 2, @@ -62,8 +62,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function dirtType(\pocketmine\block\utils\DirtType $value) : void{ - $this->int(2, match($value){ + public function dirtType(\pocketmine\block\utils\DirtType &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\DirtType::COARSE() => 0, \pocketmine\block\utils\DirtType::NORMAL() => 1, \pocketmine\block\utils\DirtType::ROOTED() => 2, @@ -71,8 +71,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function dyeColor(\pocketmine\block\utils\DyeColor $value) : void{ - $this->int(4, match($value){ + public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{ + $this->writeInt(4, match($value){ \pocketmine\block\utils\DyeColor::BLACK() => 0, \pocketmine\block\utils\DyeColor::BLUE() => 1, \pocketmine\block\utils\DyeColor::BROWN() => 2, @@ -93,8 +93,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function froglightType(\pocketmine\block\utils\FroglightType $value) : void{ - $this->int(2, match($value){ + public function froglightType(\pocketmine\block\utils\FroglightType &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\FroglightType::OCHRE() => 0, \pocketmine\block\utils\FroglightType::PEARLESCENT() => 1, \pocketmine\block\utils\FroglightType::VERDANT() => 2, @@ -102,8 +102,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function leverFacing(\pocketmine\block\utils\LeverFacing $value) : void{ - $this->int(3, match($value){ + public function leverFacing(\pocketmine\block\utils\LeverFacing &$value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\LeverFacing::DOWN_AXIS_X() => 0, \pocketmine\block\utils\LeverFacing::DOWN_AXIS_Z() => 1, \pocketmine\block\utils\LeverFacing::EAST() => 2, @@ -116,8 +116,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function medicineType(\pocketmine\item\MedicineType $value) : void{ - $this->int(2, match($value){ + public function medicineType(\pocketmine\item\MedicineType &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\item\MedicineType::ANTIDOTE() => 0, \pocketmine\item\MedicineType::ELIXIR() => 1, \pocketmine\item\MedicineType::EYE_DROPS() => 2, @@ -126,8 +126,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType $value) : void{ - $this->int(4, match($value){ + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ + $this->writeInt(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, \pocketmine\block\utils\MushroomBlockType::CAP_EAST() => 1, \pocketmine\block\utils\MushroomBlockType::CAP_MIDDLE() => 2, @@ -143,8 +143,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function potionType(\pocketmine\item\PotionType $value) : void{ - $this->int(6, match($value){ + public function potionType(\pocketmine\item\PotionType &$value) : void{ + $this->writeInt(6, match($value){ \pocketmine\item\PotionType::AWKWARD() => 0, \pocketmine\item\PotionType::FIRE_RESISTANCE() => 1, \pocketmine\item\PotionType::HARMING() => 2, @@ -191,8 +191,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function skullType(\pocketmine\block\utils\SkullType $value) : void{ - $this->int(3, match($value){ + public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ + $this->writeInt(3, match($value){ \pocketmine\block\utils\SkullType::CREEPER() => 0, \pocketmine\block\utils\SkullType::DRAGON() => 1, \pocketmine\block\utils\SkullType::PLAYER() => 2, @@ -203,8 +203,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function slabType(\pocketmine\block\utils\SlabType $value) : void{ - $this->int(2, match($value){ + public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ + $this->writeInt(2, match($value){ \pocketmine\block\utils\SlabType::BOTTOM() => 0, \pocketmine\block\utils\SlabType::DOUBLE() => 1, \pocketmine\block\utils\SlabType::TOP() => 2, @@ -212,8 +212,8 @@ trait RuntimeEnumSerializerTrait{ }); } - public function suspiciousStewType(\pocketmine\item\SuspiciousStewType $value) : void{ - $this->int(4, match($value){ + public function suspiciousStewType(\pocketmine\item\SuspiciousStewType &$value) : void{ + $this->writeInt(4, match($value){ \pocketmine\item\SuspiciousStewType::ALLIUM() => 0, \pocketmine\item\SuspiciousStewType::AZURE_BLUET() => 1, \pocketmine\item\SuspiciousStewType::BLUE_ORCHID() => 2, diff --git a/src/item/Banner.php b/src/item/Banner.php index e86d4dbce..5de6bd909 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -29,8 +29,7 @@ use pocketmine\block\utils\BannerPatternLayer; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\BannerPatternTypeIdMap; use pocketmine\data\bedrock\DyeColorIdMap; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; @@ -64,7 +63,7 @@ class Banner extends ItemBlockWallOrFloor{ return $this; } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index c3f23d2ca..7ea31d53d 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -27,8 +27,7 @@ use pocketmine\block\Block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\VanillaBlocks; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\math\Axis; use pocketmine\math\Facing; @@ -42,7 +41,7 @@ final class CoralFan extends Item{ parent::__construct($identifier, VanillaBlocks::CORAL_FAN()->getName()); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //this is aliased to ensure a compile error in case the functions in Item or Block start to differ in future //right now we can directly reuse encodeType from CoralTypeTrait, but that might silently stop working if Item //were to be altered. CoralTypeTrait was originally intended for blocks, so it's better not to assume anything. diff --git a/src/item/Dye.php b/src/item/Dye.php index 4a32983d8..969c66eee 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -24,8 +24,7 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\utils\DyeColor; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class Dye extends Item{ private DyeColor $color; @@ -35,7 +34,7 @@ class Dye extends Item{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/Item.php b/src/item/Item.php index ded0de16b..ea2bd6125 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -32,7 +32,7 @@ use pocketmine\block\BlockToolType; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\EnchantmentIdMap; use pocketmine\data\bedrock\item\ItemTypeDeserializeException; -use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; @@ -470,7 +470,7 @@ class Item implements \JsonSerializable{ return $writer->getValue(); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //NOOP } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 1a005286d..a7e14b5ce 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -26,8 +26,7 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\RuntimeBlockStateRegistry; use pocketmine\block\VanillaBlocks; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; /** * Class used for Items that directly represent blocks, such as stone, dirt, wood etc. @@ -53,7 +52,7 @@ final class ItemBlock extends Item{ $this->maxStackSize = $block->getMaxStackSize(); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); } diff --git a/src/item/Medicine.php b/src/item/Medicine.php index 0915a19c1..099af6d3c 100644 --- a/src/item/Medicine.php +++ b/src/item/Medicine.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Living; use pocketmine\player\Player; @@ -37,7 +36,7 @@ class Medicine extends Item implements ConsumableItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->medicineType($this->medicineType); } diff --git a/src/item/Potion.php b/src/item/Potion.php index 1933c9909..7fcbeaa04 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Living; use pocketmine\player\Player; @@ -37,7 +36,7 @@ class Potion extends Item implements ConsumableItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index 462b670b3..a99d7541d 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\entity\Location; use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity; use pocketmine\entity\projectile\Throwable; @@ -39,7 +38,7 @@ class SplashPotion extends ProjectileItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/SuspiciousStew.php b/src/item/SuspiciousStew.php index 8f5eb3e2d..1ecb94d7b 100644 --- a/src/item/SuspiciousStew.php +++ b/src/item/SuspiciousStew.php @@ -23,8 +23,7 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\data\runtime\RuntimeDataReader; -use pocketmine\data\runtime\RuntimeDataWriter; +use pocketmine\data\runtime\RuntimeDataDescriber; class SuspiciousStew extends Food{ @@ -35,7 +34,7 @@ class SuspiciousStew extends Food{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->suspiciousStewType($this->suspiciousStewType); } From 55a48e0c8403fa24250ffc05e86158107b8750d5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2023 16:45:19 +0000 Subject: [PATCH 527/692] Block: specifying required type/state data bits is no longer required RuntimeDataSizeCalculator allows calculating the number of required bits from describeType directly, which considerably reduces boilerplate code. --- build/generate-runtime-enum-serializers.php | 27 +++++ src/block/Anvil.php | 4 - src/block/Bamboo.php | 2 - src/block/BambooSapling.php | 2 - src/block/Barrel.php | 2 - src/block/Bed.php | 2 - src/block/Bedrock.php | 2 - src/block/Bell.php | 2 - src/block/Block.php | 32 +++++- src/block/BrewingStand.php | 2 - src/block/Button.php | 2 - src/block/Cactus.php | 2 - src/block/Cake.php | 2 - src/block/Candle.php | 4 - src/block/ChorusFlower.php | 2 - src/block/CocoaBlock.php | 2 - src/block/Crops.php | 2 - src/block/DaylightSensor.php | 2 - src/block/DetectorRail.php | 2 - src/block/Dirt.php | 2 - src/block/Door.php | 2 - src/block/DoublePlant.php | 2 - src/block/EndPortalFrame.php | 2 - src/block/Farmland.php | 2 - src/block/FenceGate.php | 2 - src/block/FillableCauldron.php | 4 - src/block/Fire.php | 2 - src/block/FloorCoralFan.php | 2 - src/block/Froglight.php | 2 - src/block/FrostedIce.php | 2 - src/block/Furnace.php | 2 - src/block/Hopper.php | 2 - src/block/ItemFrame.php | 2 - src/block/Lantern.php | 2 - src/block/Leaves.php | 2 - src/block/Lectern.php | 2 - src/block/Lever.php | 2 - src/block/Light.php | 2 - src/block/Liquid.php | 2 - src/block/NetherPortal.php | 2 - src/block/NetherVines.php | 4 - src/block/NetherWartPlant.php | 2 - src/block/Rail.php | 2 - src/block/RedMushroomBlock.php | 2 - src/block/RedstoneComparator.php | 2 - src/block/RedstoneLamp.php | 2 - src/block/RedstoneOre.php | 2 - src/block/RedstoneRepeater.php | 2 - src/block/RedstoneTorch.php | 2 - src/block/Sapling.php | 2 - src/block/SeaPickle.php | 2 - src/block/ShulkerBox.php | 2 - src/block/SimplePressurePlate.php | 2 - src/block/Skull.php | 4 - src/block/Slab.php | 2 - src/block/SnowLayer.php | 2 - src/block/Sponge.php | 2 - src/block/Stair.php | 2 - src/block/StraightOnlyRail.php | 2 - src/block/Sugarcane.php | 2 - src/block/SweetBerryBush.php | 2 - src/block/TNT.php | 4 - src/block/Torch.php | 2 - src/block/Trapdoor.php | 2 - src/block/Tripwire.php | 2 - src/block/TripwireHook.php | 2 - src/block/UnknownBlock.php | 2 - src/block/Vine.php | 2 - src/block/Wall.php | 2 - src/block/WallCoralFan.php | 2 - src/block/Wood.php | 2 - .../AnalogRedstoneSignalEmitterTrait.php | 2 - src/block/utils/AnyFacingTrait.php | 2 - src/block/utils/CandleTrait.php | 2 - src/block/utils/ColoredTrait.php | 2 - src/block/utils/CopperTrait.php | 2 - src/block/utils/CoralTypeTrait.php | 2 - src/block/utils/HorizontalFacingTrait.php | 2 - src/block/utils/PillarRotationTrait.php | 2 - .../utils/RailPoweredByRedstoneTrait.php | 2 - src/block/utils/SignLikeRotationTrait.php | 2 - .../runtime/RuntimeDataSizeCalculator.php | 99 +++++++++++++++++++ .../RuntimeEnumSizeCalculatorTrait.php | 86 ++++++++++++++++ 83 files changed, 242 insertions(+), 172 deletions(-) create mode 100644 src/data/runtime/RuntimeDataSizeCalculator.php create mode 100644 src/data/runtime/RuntimeEnumSizeCalculatorTrait.php diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index d4b723814..db1d384ca 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -105,6 +105,22 @@ function buildInterfaceFunc(string $nativeTypeName, string $functionName) : stri return "public function $functionName(\\$nativeTypeName &\$value) : void;"; } +/** + * @param string[] $memberNames + * @phpstan-param list $memberNames + * + * @return string[] + * @phpstan-return list + */ +function buildSizeCalculationFunc(string $nativeTypeName, string $functionName, array $memberNames) : array{ + $lines = []; + $lines[] = "public function $functionName(\\$nativeTypeName &\$value) : void{"; + $lines[] = "\t\$this->addBits(" . getBitsRequired($memberNames) . ");"; + $lines[] = "}"; + + return $lines; +} + /** * @param mixed[] $members */ @@ -151,6 +167,11 @@ $writerFuncs = [ ] ]; $interfaceFuncs = []; +$sizeCalculationFuncs = [ + "" => [ + "abstract protected function addBits(int \$bits) : void;" + ] +]; foreach($enumsUsed as $enumMembers){ if(count($enumMembers) === 0){ @@ -178,6 +199,11 @@ foreach($enumsUsed as $enumMembers){ $nativeTypeName, $functionName )]; + $sizeCalculationFuncs[$functionName] = buildSizeCalculationFunc( + $nativeTypeName, + $functionName, + $stringifiedMembers + ); } /** @@ -232,5 +258,6 @@ HEADER; printFunctions($writerFuncs, "RuntimeEnumSerializerTrait", "trait"); printFunctions($readerFuncs, "RuntimeEnumDeserializerTrait", "trait"); printFunctions($interfaceFuncs, "RuntimeEnumDescriber", "interface"); +printFunctions($sizeCalculationFuncs, "RuntimeEnumSizeCalculatorTrait", "trait"); echo "Done. Don't forget to run CS fixup after generating code.\n"; diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 76dc2cede..17814e2c9 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,14 +51,10 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index b576e771f..a6a08859b 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -55,8 +55,6 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); $w->bool($this->thick); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index d5342f6b4..cfa81519b 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -36,8 +36,6 @@ use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ private bool $ready = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index ee732b72c..68eda5331 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -38,8 +38,6 @@ class Barrel extends Opaque{ protected bool $open = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->open); diff --git a/src/block/Bed.php b/src/block/Bed.php index 6da2f5aa9..678c8a542 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -53,8 +53,6 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->occupied); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 5095d3a64..4bca83305 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Bedrock extends Opaque{ private bool $burnsForever = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index 20942f1df..f20a031c2 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -48,8 +48,6 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bellAttachmentType($this->attachmentType); $w->horizontalFacing($this->facing); diff --git a/src/block/Block.php b/src/block/Block.php index 2dce0a49a..6863f47bc 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -31,6 +31,7 @@ use pocketmine\block\tile\Tile; use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\data\runtime\RuntimeDataReader; +use pocketmine\data\runtime\RuntimeDataSizeCalculator; use pocketmine\data\runtime\RuntimeDataWriter; use pocketmine\entity\Entity; use pocketmine\entity\projectile\Projectile; @@ -64,6 +65,17 @@ class Block{ /** @var AxisAlignedBB[]|null */ protected ?array $collisionBoxes = null; + /** + * @var int[] + * @phpstan-var array + */ + private static array $typeDataBits = []; + /** + * @var int[] + * @phpstan-var array + */ + private static array $stateDataBits = []; + /** * @param string $name English name of the block type (TODO: implement translations) */ @@ -114,9 +126,25 @@ class Block{ return new ItemBlock($this); } - public function getRequiredTypeDataBits() : int{ return 0; } + final public function getRequiredTypeDataBits() : int{ + $class = get_class($this); + if(isset(self::$typeDataBits[$class])){ + return self::$typeDataBits[$class]; + } + $calculator = new RuntimeDataSizeCalculator(); + $this->describeType($calculator); + return self::$typeDataBits[$class] = $calculator->getBitsUsed(); + } - public function getRequiredStateDataBits() : int{ return 0; } + final public function getRequiredStateDataBits() : int{ + $class = get_class($this); + if(isset(self::$stateDataBits[$class])){ + return self::$stateDataBits[$class]; + } + $calculator = new RuntimeDataSizeCalculator(); + $this->describeState($calculator); + return self::$stateDataBits[$class] = $calculator->getBitsUsed(); + } /** * @internal diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 033d93df0..479d20739 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -43,8 +43,6 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->brewingStandSlots($this->slots); } diff --git a/src/block/Button.php b/src/block/Button.php index 6274b7e69..aa6ca8fa0 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -38,8 +38,6 @@ abstract class Button extends Flowable{ protected bool $pressed = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->pressed); diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 8828219d8..18dd726e7 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -41,8 +41,6 @@ class Cactus extends Transparent{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 8870968c2..93e51be21 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -36,8 +36,6 @@ class Cake extends BaseCake{ protected int $bites = 0; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } diff --git a/src/block/Candle.php b/src/block/Candle.php index b382c0fe5..4870277cc 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -46,10 +46,6 @@ class Candle extends Transparent{ private int $count = self::MIN_COUNT; - public function getRequiredStateDataBits() : int{ - return 3; - } - protected function describeState(RuntimeDataDescriber $w) : void{ $this->encodeLitState($w); $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php index 8b20b0e3d..2aa65d1f6 100644 --- a/src/block/ChorusFlower.php +++ b/src/block/ChorusFlower.php @@ -49,8 +49,6 @@ final class ChorusFlower extends Flowable{ private int $age = self::MIN_AGE; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 02c4390b9..fe4f1736b 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -46,8 +46,6 @@ class CocoaBlock extends Transparent{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, 0, self::MAX_AGE, $this->age); diff --git a/src/block/Crops.php b/src/block/Crops.php index aabab87bb..c1c13bee9 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -38,8 +38,6 @@ abstract class Crops extends Flowable{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 27ec3764e..2a55500c6 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -41,8 +41,6 @@ class DaylightSensor extends Transparent{ protected bool $inverted = false; - public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); $w->bool($this->inverted); diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 032f30870..8af12276b 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->activated); diff --git a/src/block/Dirt.php b/src/block/Dirt.php index ead1e0c83..900879433 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -45,8 +45,6 @@ class Dirt extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Door.php b/src/block/Door.php index b0eba797c..98a8f5309 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -41,8 +41,6 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 00c967271..be231c1ea 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -33,8 +33,6 @@ use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ protected bool $top = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index f4e08393f..5a6537d4d 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -35,8 +35,6 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->eye); diff --git a/src/block/Farmland.php b/src/block/Farmland.php index cdc3b464e..7ce08c2d9 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -37,8 +37,6 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 75ffccbea..7ad96d842 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -42,8 +42,6 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->open); diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php index 048b3f312..b6d9b995e 100644 --- a/src/block/FillableCauldron.php +++ b/src/block/FillableCauldron.php @@ -37,10 +37,6 @@ abstract class FillableCauldron extends Transparent{ private int $fillLevel = self::MIN_FILL_LEVEL; - public function getRequiredStateDataBits() : int{ - return 3; - } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); } diff --git a/src/block/Fire.php b/src/block/Fire.php index 8184caf6d..6f4332261 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -39,8 +39,6 @@ class Fire extends BaseFire{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 11bfb9e0f..173c87a08 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -37,8 +37,6 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index e93ec2eb8..13b68e21e 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -35,8 +35,6 @@ final class Froglight extends SimplePillar{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredTypeDataBits() : int{ return 2; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index c1eacb019..5953ce8ae 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -32,8 +32,6 @@ class FrostedIce extends Ice{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index 8cb174985..f830a3835 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -46,8 +46,6 @@ class Furnace extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->lit); diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 7764a4ee7..778e5c2a1 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -39,8 +39,6 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::UP); $w->bool($this->powered); diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index a3c313ca2..94754910f 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -50,8 +50,6 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->hasMap); diff --git a/src/block/Lantern.php b/src/block/Lantern.php index 47aa4496f..a5d8031dd 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -43,8 +43,6 @@ class Lantern extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 94d6cbcca..b83de2dde 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -47,8 +47,6 @@ class Leaves extends Transparent{ $this->leavesType = $leavesType; } - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->noDecay); $w->bool($this->checkDecay); diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 7a144dbb8..ae1df8549 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -46,8 +46,6 @@ class Lectern extends Transparent{ protected bool $producingSignal = false; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->producingSignal); diff --git a/src/block/Lever.php b/src/block/Lever.php index a39937687..284a646d9 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -44,8 +44,6 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->leverFacing($this->facing); $w->bool($this->activated); diff --git a/src/block/Light.php b/src/block/Light.php index bdd232b6c..5ee7281c9 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -34,8 +34,6 @@ final class Light extends Flowable{ private int $level = self::MAX_LIGHT_LEVEL; - public function getRequiredTypeDataBits() : int{ return 4; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 4f76d4699..476a8f8c7 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -48,8 +48,6 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; - public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->bool($this->falling); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 873040fd3..0c507a166 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -34,8 +34,6 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php index c2c497112..4a924b2be 100644 --- a/src/block/NetherVines.php +++ b/src/block/NetherVines.php @@ -52,10 +52,6 @@ class NetherVines extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ - return 5; - } - public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(5, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 2d3316b2c..787b1f5f8 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -37,8 +37,6 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 2d37f6e95..12b47e6ea 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -34,8 +34,6 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->railShape($this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 42763ba95..17fced412 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -36,8 +36,6 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->mushroomBlockType($this->mushroomBlockType); } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index e105701d1..0f8fee840 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -44,8 +44,6 @@ class RedstoneComparator extends Flowable{ protected bool $isSubtractMode = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->isSubtractMode); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 5557076b3..1d0ff7345 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -29,8 +29,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 34d463731..13cf84205 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -33,8 +33,6 @@ use function mt_rand; class RedstoneOre extends Opaque{ protected bool $lit = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 212bc9f4e..d1ad17eeb 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -43,8 +43,6 @@ class RedstoneRepeater extends Flowable{ protected int $delay = self::MIN_DELAY; - public function getRequiredStateDataBits() : int{ return 5; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index b36bc9185..f85c6c07a 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneTorch extends Torch{ protected bool $lit = true; - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->lit); diff --git a/src/block/Sapling.php b/src/block/Sapling.php index ea04ba624..838a32ce8 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -46,8 +46,6 @@ class Sapling extends Flowable{ $this->treeType = $treeType; } - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index 770ae6b45..c2955cbaa 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -38,8 +38,6 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->bool($this->underwater); diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index 292506deb..e979b09e5 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -34,8 +34,6 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; - public function getRequiredStateDataBits() : int{ return 0; } - protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index f93e244a5..f4ad37ea4 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 36a587aa9..10403ab6b 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -49,14 +49,10 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredTypeDataBits() : int{ return 3; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Slab.php b/src/block/Slab.php index 3290648eb..4e25d15a4 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -41,8 +41,6 @@ class Slab extends Transparent{ $this->slabType = SlabType::BOTTOM(); } - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->slabType($this->slabType); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index 4f3950e74..ec08620c0 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -46,8 +46,6 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index d8784febd..b4e523ffa 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; - public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index afbbf7918..971dbc43a 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -46,8 +46,6 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->upsideDown); diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index bb9482fe9..fe3d19b25 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -36,8 +36,6 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->straightOnlyRailShape($this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index a23c6d74d..cc41c0fb0 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -38,8 +38,6 @@ class Sugarcane extends Flowable{ protected int $age = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index a93306da9..c9e9232e7 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -45,8 +45,6 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index 1206d0e30..7012f7145 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -45,14 +45,10 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index 5b496c9ad..b7bc5136f 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -36,8 +36,6 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 83bf4693e..79e3f0e8f 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -40,8 +40,6 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index c785e6d12..b8b3e732d 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -33,8 +33,6 @@ class Tripwire extends Flowable{ protected bool $connected = false; protected bool $disarmed = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->triggered); $w->bool($this->suspended); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 9180f971f..2ad6057b8 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -38,8 +38,6 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->connected); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index f3faeb689..7c48b236f 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -38,8 +38,6 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - public function getRequiredTypeDataBits() : int{ return Block::INTERNAL_STATE_DATA_BITS; } - protected function describeType(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block diff --git a/src/block/Vine.php b/src/block/Vine.php index 65c6d59ae..53d4b1efe 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -39,8 +39,6 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacingFlags($this->faces); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 84b45150c..8b128c525 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -42,8 +42,6 @@ class Wall extends Transparent{ protected array $connections = []; protected bool $post = false; - public function getRequiredStateDataBits() : int{ return 9; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->wallConnections($this->connections); $w->bool($this->post); diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index f50438c6e..c7e350c47 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -36,8 +36,6 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index 5ffd1c775..9a0c36e1d 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -38,8 +38,6 @@ class Wood extends Opaque{ private bool $stripped = false; - public function getRequiredTypeDataBits() : int{ return 1; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 5247e7576..783517dcd 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 0788c1aca..78fdd9bf9 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -29,8 +29,6 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; - public function getRequiredStateDataBits() : int{ return 3; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index 1391382e4..60dd61849 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -39,8 +39,6 @@ use pocketmine\world\sound\FlintSteelSound; trait CandleTrait{ private bool $lit = false; - public function getRequiredStateDataBits() : int{ return 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index ce7113159..42abe64b9 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -30,8 +30,6 @@ trait ColoredTrait{ /** @var DyeColor */ private $color; - public function getRequiredTypeDataBits() : int{ return 4; } - /** @see Block::describeType() */ protected function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 0842d1351..ed230c6ba 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -44,8 +44,6 @@ trait CopperTrait{ parent::__construct($identifier, $name, $typeInfo); } - public function getRequiredTypeDataBits() : int{ return 3; } - protected function describeType(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 3e362394a..d2c96c8f4 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -30,8 +30,6 @@ trait CoralTypeTrait{ protected CoralType $coralType; protected bool $dead = false; - public function getRequiredTypeDataBits() : int{ return 4; } - /** @see Block::describeType() */ protected function describeType(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 283cba078..b1558b154 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -30,8 +30,6 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 9b898ca15..0fc206a20 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -35,8 +35,6 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; - public function getRequiredStateDataBits() : int{ return 2; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->axis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index 19801ee10..a95fea253 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -28,8 +28,6 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; - public function getRequiredStateDataBits() : int{ return parent::getRequiredStateDataBits() + 1; } - protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->powered); diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index 9fb03b8a4..2fed25910 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -30,8 +30,6 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; - public function getRequiredStateDataBits() : int{ return 4; } - protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->rotation); } diff --git a/src/data/runtime/RuntimeDataSizeCalculator.php b/src/data/runtime/RuntimeDataSizeCalculator.php new file mode 100644 index 000000000..5678ffd81 --- /dev/null +++ b/src/data/runtime/RuntimeDataSizeCalculator.php @@ -0,0 +1,99 @@ +bits += $bits; + } + + public function getBitsUsed() : int{ + return $this->bits; + } + + public function int(int $bits, int &$value) : void{ + $this->addBits($bits); + } + + public function boundedInt(int $bits, int $min, int $max, int &$value) : void{ + $this->addBits($bits); + } + + public function bool(bool &$value) : void{ + $this->addBits(1); + } + + public function horizontalFacing(int &$facing) : void{ + $this->addBits(2); + } + + /** + * @inheritDoc + */ + public function horizontalFacingFlags(array &$faces) : void{ + $this->addBits(count(Facing::HORIZONTAL)); + // TODO: Implement horizontalFacingFlags() method. + } + + public function facing(int &$facing) : void{ + $this->addBits(3); + } + + public function facingExcept(int &$facing, int $except) : void{ + $this->facing($facing); + } + + public function axis(int &$axis) : void{ + $this->addBits(2); + } + + public function horizontalAxis(int &$axis) : void{ + $this->addBits(1); + } + + public function wallConnections(array &$connections) : void{ + //TODO: this can be reduced to 7 if we pack the trinary values + $this->addBits(8); + } + + public function brewingStandSlots(array &$slots) : void{ + $this->addBits(count(BrewingStandSlot::getAll())); + } + + public function railShape(int &$railShape) : void{ + $this->addBits(4); + } + + public function straightOnlyRailShape(int &$railShape) : void{ + $this->addBits(3); + } +} diff --git a/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php b/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php new file mode 100644 index 000000000..25defa2c0 --- /dev/null +++ b/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php @@ -0,0 +1,86 @@ +addBits(2); + } + + public function copperOxidation(\pocketmine\block\utils\CopperOxidation &$value) : void{ + $this->addBits(2); + } + + public function coralType(\pocketmine\block\utils\CoralType &$value) : void{ + $this->addBits(3); + } + + public function dirtType(\pocketmine\block\utils\DirtType &$value) : void{ + $this->addBits(2); + } + + public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{ + $this->addBits(4); + } + + public function froglightType(\pocketmine\block\utils\FroglightType &$value) : void{ + $this->addBits(2); + } + + public function leverFacing(\pocketmine\block\utils\LeverFacing &$value) : void{ + $this->addBits(3); + } + + public function medicineType(\pocketmine\item\MedicineType &$value) : void{ + $this->addBits(2); + } + + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ + $this->addBits(4); + } + + public function potionType(\pocketmine\item\PotionType &$value) : void{ + $this->addBits(6); + } + + public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ + $this->addBits(3); + } + + public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ + $this->addBits(2); + } + + public function suspiciousStewType(\pocketmine\item\SuspiciousStewType &$value) : void{ + $this->addBits(4); + } + +} From 42df1a5c704e870fc3a8377119496b5a6af505df Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 17 Feb 2023 20:19:32 +0000 Subject: [PATCH 528/692] Fixed merge error --- src/network/mcpe/handler/LoginPacketHandler.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index b1b29bc1a..8ea93d29c 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -33,6 +33,7 @@ use pocketmine\network\mcpe\JwtException; use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\LoginPacket; +use pocketmine\network\mcpe\protocol\PlayStatusPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\types\login\AuthenticationData; use pocketmine\network\mcpe\protocol\types\login\ClientData; @@ -92,8 +93,8 @@ class LoginPacketHandler extends PacketHandler{ //This pocketmine disconnect message will only be seen by the console (PlayStatusPacket causes the messages to be shown for the client) $this->session->disconnect( - $this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol("$packet->protocol (< v1.19.62)")), - false + KnownTranslationFactory::pocketmine_disconnect_incompatibleProtocol("$packet->protocol (< v1.19.62)"), + notify: false ); return true; From 2feb9ca9037ef0dd4b9bf8f4b905a5b22ed58661 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 21 Feb 2023 16:12:44 +0000 Subject: [PATCH 529/692] ItemIdMetaUpgrader: consistency of API method naming --- src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php index 6a0ec3eed..71ba2f47e 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php @@ -45,11 +45,11 @@ final class ItemIdMetaUpgrader{ array $idMetaUpgradeSchemas, ){ foreach($idMetaUpgradeSchemas as $schema){ - $this->addIdMetaUpgradeSchema($schema); + $this->addSchema($schema); } } - public function addIdMetaUpgradeSchema(ItemIdMetaUpgradeSchema $schema) : void{ + public function addSchema(ItemIdMetaUpgradeSchema $schema) : void{ if(isset($this->idMetaUpgradeSchemas[$schema->getSchemaId()])){ throw new \InvalidArgumentException("Already have a schema with priority " . $schema->getSchemaId()); } From 94ffef1a99fa1afdf80c8de5b9a380e67b333237 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 21 Feb 2023 16:14:31 +0000 Subject: [PATCH 530/692] ItemIdMetaUpgrader: consistency of API method naming --- src/data/bedrock/item/upgrade/ItemDataUpgrader.php | 4 ++-- src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 07629043e..46fce81ce 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -63,7 +63,7 @@ final class ItemDataUpgrader{ $blockStateData = null; } - [$newNameId, $newMeta] = $this->idMetaUpgrader->upgradeStringIdMeta($rawNameId, $meta); + [$newNameId, $newMeta] = $this->idMetaUpgrader->upgrade($rawNameId, $meta); //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? @@ -136,7 +136,7 @@ final class ItemDataUpgrader{ $blockStateData = null; } - [$newNameId, $newMeta] = $this->idMetaUpgrader->upgradeStringIdMeta($rawNameId, $meta); + [$newNameId, $newMeta] = $this->idMetaUpgrader->upgrade($rawNameId, $meta); //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php index 71ba2f47e..8afd28f0e 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php @@ -60,7 +60,7 @@ final class ItemIdMetaUpgrader{ /** * @phpstan-return array{string, int} */ - public function upgradeStringIdMeta(string $id, int $meta) : array{ + public function upgrade(string $id, int $meta) : array{ $newId = $id; $newMeta = $meta; foreach($this->idMetaUpgradeSchemas as $schema){ From 9a67fbf27abfc6c5aa45a7361b326096742d9132 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 21 Feb 2023 16:44:27 +0000 Subject: [PATCH 531/692] Release 5.0.0-ALPHA9 --- changelogs/5.0-alpha.md | 129 +++++++++++++++++++++++++++++++++++++++- src/VersionInfo.php | 2 +- 2 files changed, 129 insertions(+), 2 deletions(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index 784111476..981bd3787 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -908,4 +908,131 @@ Released 23rd January 2023. - `Player->disconnect()` now accepts an additional `Translatable|string|null $disconnectScreenMessage` parameter, which is the message to be displayed on the disconnect screen (the message in `$reason` is used if null is passed) ## Internals -- `NetworkSession` disconnect methods have been altered to allow specifying a different disconnect reason and disconnection screen message. \ No newline at end of file +- `NetworkSession` disconnect methods have been altered to allow specifying a different disconnect reason and disconnection screen message. + +# 5.0.0-ALPHA9 +Released 21st February 2023. + +## Core +- Introduced timings for individual packet encoding. +- Network timings now cover more parts of the network system which weren't previously accounted for. + +## API +### `pocketmine\block` +- Blocks are no longer required to explicitly specify how many type or state data bits they require. This is now automatically calculated using `RuntimeDataSizeCalculator`. +- The following API methods have changed signatures: + - `Block->describeState()` now accepts `RuntimeDataDescriber` instead of `RuntimeDataReader|RuntimeDataWriter` + - `Block->describeType()` now accepts `RuntimeDataDescriber` instead of `RuntimeDataReader|RuntimeDataWriter` + - `Block->getRequiredStateDataBits()` is now `final`. + - `Block->getRequiredTypeDataBits()` is now `final`. + - `Leaves->__construct()` now `LeavesType $leavesType` instead of `TreeType $treeType` +- The following API methods have been added: + - `public Leaves->getLeavesType() : LeavesType` - returns the type of leaves +- The following classes have been added: + - `LeavesType` - an enum of all the different types of leaves +- The following classes have been renamed: + - `BlockFactory` -> `RuntimeBlockStateRegistry` - this more accurately describes the purpose of the class +- The following API methods have changed behaviour: + - `RuntimeBlockStateRegistry->register()` now throws a `LogicException` if a block does not properly reject invalid state data. + +### `pocketmine\command` +- `SimpleCommandMap` now requires all commands to have a permission set when registered. + - If you actually want to allow everyone to use your command (not advised), you can add a new permission to the `pocketmine.group.user` group, or use `default: true` for `plugin.yml` permissions. +- The following API methods have changed behaviour: + - `Command->testPermissionSilent()` now returns `false` if there are no permissions associated with the command. This is to prevent commands with no permissions being usable by everyone, which has previously been a source of security issues. +- The following API methods have been added: + - `public Command->getPermissions() : list` - returns a list of permissions which grant usage access to this command. A user with one or more of these permissions will be able to invoke the command's `execute()` method + - `public Command->setPermissions(list $permissions) : void` - sets the permissions which grant usage access to this command. This should be used instead of `setPermission()` with `;` separators (which is now deprecated) + +### `pocketmine\data\bedrock\block` +- The following API methods have been added: + - `public static BlockStateData::current(string $name, array $states) : BlockStateData` - creates a new `BlockStateData` instance with the current blockstate version + +### `pocketmine\data\bedrock\block\upgrade` +- Blockstate upgrade schemas are now indexed by schema ID instead of Minecraft version. This is because the Minecraft blockstate version isn't consistently bumped when changes are made. +- `BlockStateUpgrader` now requires that every schema added must have a unique schema ID. +- The following API methods have been removed: + - `BlockStateUpgradeSchema->getPriority()` +- The following API methods have been added: + - `public BlockStateUpgradeSchema->getSchemaId() : int` - returns the schema ID of this upgrade schema, usually the number at the start of the JSON filename +- The following API methods have changed signatures: + - `BlockStateUpgradeSchemaUtils::fromJsonModel()` now accepts `int $schemaId` instead of `int $priority` + - `BlockStateUpgradeSchemaUtils::loadSchemaFromString()` now accepts `int $schemaId` instead of `int $priority` + - `BlockStateUpgradeSchemaUtils::loadSchemas()` now accepts `int $maxSchemaId` instead of `int $currentVersion` + +### `pocketmine\data\bedrock\item\upgrade` +- The following API methods have changed signatures: + - `ItemUpgradeSchemaUtils::loadSchemas()` now accepts `int $maxSchemaId` +- The following API methods have been renamed: + - `ItemIdMetaUpgradeSchema->getPriority()` -> `ItemIdMetaUpgradeSchema->getSchemaId()` +- The following classes have been added: + - `ItemIdMetaUpgrader` - encapsulates handling for upgrading item string IDs and meta to newer versions +- The following API methods have been moved: + - `ItemDataUpgrader->addIdMetaUpgradeSchema()` -> `ItemIdMetaUpgrader->addSchema()` + - `ItemDataUpgrader->upgradeItemStringIdMeta()` -> `ItemIdMetaUpgrader->upgrade()` + +### `pocketmine\data\runtime` +- The following interfaces have been added: + - `RuntimeDataDescriber` - contract for symmetric APIs exposed by `RuntimeDataReader`, `RuntimeDataWriter` and `RuntimeDataSizeCalculator` + +### `pocketmine\event\player` +- `PlayerPreLoginEvent` now supports setting separate log reasons (disconnect reason) and disconnect screen messages. +- The following classes have inheritance changes: + - `PlayerPreLoginEvent` no longer implements `Cancellable`. This caused unexpected behaviour for most plugin devs due to default-ignoring cancelled events, forcing people to usually have to use `@handleCancelled` to handle the event when they wanted to use it. +- The following API methods have been added: + - `public PlayerPreLoginEvent->getDisconnectScreenMessage(int $flag) : Translatable|string|null` - returns the message to be displayed on the disconnect screen for the specified kick flag, if set + - `public PlayerPreLoginEvent->getFinalDisconnectScreenMessage() : Translatable|string|null` - returns the message to be displayed on the disconnect screen, taking into account the kick flags set +- The following API constants have been renamed: + - `PlayerPreLoginEvent::KICK_REASON_BANNED` -> `PlayerPreLoginEvent::KICK_FLAG_BANNED` + - `PlayerPreLoginEvent::KICK_REASON_PLUGIN` -> `PlayerPreLoginEvent::KICK_FLAG_PLUGIN` + - `PlayerPreLoginEvent::KICK_REASON_PRIORITY` -> `PlayerPreLoginEvent::KICK_FLAG_PRIORITY` + - `PlayerPreLoginEvent::KICK_REASON_SERVER_FULL` -> `PlayerPreLoginEvent::KICK_FLAG_SERVER_FULL` + - `PlayerPreLoginEvent::KICK_REASON_SERVER_WHITELISTED` -> `PlayerPreLoginEvent::KICK_FLAG_SERVER_WHITELISTED` +- The following API methods have been renamed: + - `PlayerPreLoginEvent->clearAllKickReasons()` -> `PlayerPreLoginEvent->clearAllKickFlags()` + - `PlayerPreLoginEvent->clearKickReason()` -> `PlayerPreLoginEvent->clearKickFlag()` + - `PlayerPreLoginEvent->getFinalKickMessage()` -> `PlayerPreLoginEvent->getFinalDisconnectReason()` (now used for logs only, if a disconnect screen message is set for the highest priority flag) + - `PlayerPreLoginEvent->getKickMessage()` -> `PlayerPreLoginEvent->getDisconnectReason()` (now used for logs only, if a disconnect screen message is set for the flag) + - `PlayerPreLoginEvent->getKickReasons()` -> `PlayerPreLoginEvent->getKickFlags()` + - `PlayerPreLoginEvent->isKickReasonSet()` -> `PlayerPreLoginEvent->isKickFlagSet()` + - `PlayerPreLoginEvent->setKickReason()` -> `PlayerPreLoginEvent->setKickFlag()` +- The following API methods have changed signatures: + - `PlayerPreLoginEvent->setKickFlag()` (previously `setKickReason()`) now accepts `Translatable|string $disconnectReason, Translatable|string|null $disconnectScreenMessage = null` instead of `Translatable|string $message` + +### `pocketmine\event\block` +- The following classes have inheritance changes: + - `BlockPlaceEvent` no longer extends `BlockEvent`, and therefore no longer has `getBlock()`. +- The following API methods have been removed: + - `BlockPlaceEvent->getBlockReplaced()` - this information is now provided in the `BlockTransaction` object returned by `BlockPlaceEvent->getTransaction()` +- The following API methods have been added: + - `public BlockPlaceEvent->getTransaction() : BlockTransaction` - returns the transaction containing a list of changed block positions and the blockstates they will be changed to +- The following API methods have changed signatures: + - `BlockPlaceEvent->__construct()` now accepts `BlockTransaction $transaction` instead of `Block $blockPlace, Block $blockReplace` + +### `pocketmine\item` +- The following API methods have signature changes: + - `Item->describeType()` now accepts `RuntimeDataDescriber` instead of `RuntimeDataReader|RuntimeDataWriter` + +### `pocketmine\world\format` +- The following API methods have been renamed: + - `Chunk->getFullBlock()` -> `Chunk->getBlockStateId()` + - `Chunk->setFullBlock()` -> `Chunk->setBlockStateId()` + - `SubChunk->getFullBlock()` -> `SubChunk->getBlockStateId()` + - `SubChunk->setFullBlock()` -> `SubChunk->setBlockStateId()` + +## Gameplay +### Blocks +- The following new blocks have been added: + - Mangrove Leaves + - Azalea Leaves + - Flowering Azalea Leaves + - Reinforced Deepslate +- Fixed incorrect drops of deepslate when mined without a Silk Touch tool. +- Bells now ring when hit by a projectile. + +## Internals +- `build/generate-runtime-enum-serializers.php` now generates the following additional classes: + - `interface RuntimeEnumDescriber` + - `trait RuntimeEnumSizeCalculatorTrait` +- Block type/state data required bits are now calculated from `Block->describeType()` using `RuntimeDataSizeCalculator`. +- Commands now use an array for permissions internally, instead of a string separated by `;`. \ No newline at end of file diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 01b260f6f..c3206271a 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA9"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 627c62a230f08fa21e4351ec157c597cb63fa2cf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 21 Feb 2023 16:44:31 +0000 Subject: [PATCH 532/692] 5.0.0-ALPHA10 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index c3206271a..51f9cca15 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA9"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-ALPHA10"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "alpha"; private function __construct(){ From 7608d5f04e347f9548d2040aa624867571848125 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 23 Feb 2023 22:03:35 +0000 Subject: [PATCH 533/692] Use BedrockDataFiles in more places --- src/data/bedrock/ItemTagToIdMap.php | 4 +--- src/data/bedrock/item/BlockItemIdMap.php | 5 ++--- src/inventory/CreativeInventory.php | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/data/bedrock/ItemTagToIdMap.php b/src/data/bedrock/ItemTagToIdMap.php index 9190fa28b..84f2ff451 100644 --- a/src/data/bedrock/ItemTagToIdMap.php +++ b/src/data/bedrock/ItemTagToIdMap.php @@ -27,14 +27,12 @@ use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; -use Symfony\Component\Filesystem\Path; use function array_keys; use function gettype; use function is_array; use function is_string; use function json_decode; use const JSON_THROW_ON_ERROR; -use const pocketmine\BEDROCK_DATA_PATH; /** * Tracks Minecraft Bedrock item tags, and the item IDs which belong to them @@ -45,7 +43,7 @@ final class ItemTagToIdMap{ use SingletonTrait; private static function make() : self{ - $map = json_decode(Filesystem::fileGetContents(Path::join(BEDROCK_DATA_PATH, 'item_tags.json')), true, flags: JSON_THROW_ON_ERROR); + $map = json_decode(Filesystem::fileGetContents(BedrockDataFiles::ITEM_TAGS_JSON), true, flags: JSON_THROW_ON_ERROR); if(!is_array($map)){ throw new AssumptionFailedError("Invalid item tag map, expected array"); } diff --git a/src/data/bedrock/item/BlockItemIdMap.php b/src/data/bedrock/item/BlockItemIdMap.php index 58a155a5a..6a993f60d 100644 --- a/src/data/bedrock/item/BlockItemIdMap.php +++ b/src/data/bedrock/item/BlockItemIdMap.php @@ -23,15 +23,14 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item; +use pocketmine\data\bedrock\BedrockDataFiles; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; -use Symfony\Component\Filesystem\Path; use function array_flip; use function is_array; use function json_decode; use const JSON_THROW_ON_ERROR; -use const pocketmine\BEDROCK_DATA_PATH; /** * Bidirectional map of block IDs to their corresponding blockitem IDs, used for storing items on disk @@ -41,7 +40,7 @@ final class BlockItemIdMap{ private static function make() : self{ $map = json_decode( - Filesystem::fileGetContents(Path::join(BEDROCK_DATA_PATH, 'block_id_to_item_id_map.json')), + Filesystem::fileGetContents(BedrockDataFiles::BLOCK_ID_TO_ITEM_ID_MAP_JSON), associative: true, flags: JSON_THROW_ON_ERROR ); diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index ea5893f87..76cfd874a 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -25,9 +25,9 @@ namespace pocketmine\inventory; use pocketmine\crafting\CraftingManagerFromDataHelper; use pocketmine\crafting\json\ItemStackData; +use pocketmine\data\bedrock\BedrockDataFiles; use pocketmine\item\Item; use pocketmine\utils\SingletonTrait; -use Symfony\Component\Filesystem\Path; final class CreativeInventory{ use SingletonTrait; @@ -37,7 +37,7 @@ final class CreativeInventory{ private function __construct(){ $creativeItems = CraftingManagerFromDataHelper::loadJsonArrayOfObjectsFile( - Path::join(\pocketmine\BEDROCK_DATA_PATH, "creativeitems.json"), + BedrockDataFiles::CREATIVEITEMS_JSON, ItemStackData::class ); foreach($creativeItems as $data){ From 948aa059c37fdfcdc63ef7e61ae0e1fe10c88e02 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 15:09:52 +0000 Subject: [PATCH 534/692] =?UTF-8?q?=C3=82Command:=20fixed=20inconsistent?= =?UTF-8?q?=20API=20method=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/command/Command.php | 2 +- src/command/SimpleCommandMap.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/command/Command.php b/src/command/Command.php index e17e7de87..02bae60d9 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -86,7 +86,7 @@ abstract class Command{ /** * @return string[] */ - public function getPermission() : array{ + public function getPermissions() : array{ return $this->permission; } diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 525ecd317..1268e715b 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -139,7 +139,7 @@ class SimpleCommandMap implements CommandMap{ } public function register(string $fallbackPrefix, Command $command, ?string $label = null) : bool{ - if(count($command->getPermission()) === 0){ + if(count($command->getPermissions()) === 0){ throw new \InvalidArgumentException("Commands must have a permission set"); } From 77fe0a69ba363f85734e604c6cf1bee5a4abb0d4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 15:10:46 +0000 Subject: [PATCH 535/692] ItemIdentifier: remove dead TODO comment --- src/item/ItemIdentifier.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index 5ddf652bd..e0d0d28ba 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -33,9 +33,6 @@ class ItemIdentifier{ public static function fromBlock(Block $block) : self{ //negative item type IDs are treated as block IDs //TODO: maybe an ItemBlockIdentifier is in order? - //TODO: this isn't vanilla-compliant, but it'll do for now - we only use the "legacy" item ID/meta for full type - //indexing right now, because item type IDs aren't granular enough - //this should be removed once that's addressed return new self(-$block->getTypeId()); } From 33140482bb66242c6ae6dc6e89fc0b61ea1ed930 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 15:28:50 +0000 Subject: [PATCH 536/692] ItemTypeIds: added fromBlockTypeId() and toBlockTypeId() this allows checking the type of a blockitem without being required to create a block to do it. --- src/block/WaterCauldron.php | 3 +-- src/block/inventory/ShulkerBoxInventory.php | 10 ++++------ src/item/ItemIdentifier.php | 3 +-- src/item/ItemTypeIds.php | 15 +++++++++++++++ 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php index 88327a010..fddccf43b 100644 --- a/src/block/WaterCauldron.php +++ b/src/block/WaterCauldron.php @@ -31,7 +31,6 @@ use pocketmine\item\Armor; use pocketmine\item\Banner; use pocketmine\item\Dye; use pocketmine\item\Item; -use pocketmine\item\ItemBlock; use pocketmine\item\ItemTypeIds; use pocketmine\item\Potion; use pocketmine\item\PotionType; @@ -155,7 +154,7 @@ final class WaterCauldron extends FillableCauldron{ $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT)); $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); } - }elseif($item instanceof ItemBlock && $item->getBlock()->getTypeId() === BlockTypeIds::DYED_SHULKER_BOX){ + }elseif(ItemTypeIds::toBlockTypeId($item->getTypeId()) === BlockTypeIds::DYED_SHULKER_BOX){ if($this->customWaterColor === null){ $newItem = VanillaBlocks::SHULKER_BOX()->asItem(); $newItem->setNamedTag($item->getNamedTag()); diff --git a/src/block/inventory/ShulkerBoxInventory.php b/src/block/inventory/ShulkerBoxInventory.php index 102e0b648..d915a9951 100644 --- a/src/block/inventory/ShulkerBoxInventory.php +++ b/src/block/inventory/ShulkerBoxInventory.php @@ -26,7 +26,7 @@ namespace pocketmine\block\inventory; use pocketmine\block\BlockTypeIds; use pocketmine\inventory\SimpleInventory; use pocketmine\item\Item; -use pocketmine\item\ItemBlock; +use pocketmine\item\ItemTypeIds; use pocketmine\network\mcpe\protocol\BlockEventPacket; use pocketmine\network\mcpe\protocol\types\BlockPosition; use pocketmine\world\Position; @@ -51,11 +51,9 @@ class ShulkerBoxInventory extends SimpleInventory implements BlockInventory{ } public function canAddItem(Item $item) : bool{ - if($item instanceof ItemBlock){ - $blockTypeId = $item->getBlock()->getTypeId(); - if($blockTypeId === BlockTypeIds::SHULKER_BOX || $blockTypeId === BlockTypeIds::DYED_SHULKER_BOX){ - return false; - } + $blockTypeId = ItemTypeIds::toBlockTypeId($item->getTypeId()); + if($blockTypeId === BlockTypeIds::SHULKER_BOX || $blockTypeId === BlockTypeIds::DYED_SHULKER_BOX){ + return false; } return parent::canAddItem($item); } diff --git a/src/item/ItemIdentifier.php b/src/item/ItemIdentifier.php index e0d0d28ba..8be4d7d56 100644 --- a/src/item/ItemIdentifier.php +++ b/src/item/ItemIdentifier.php @@ -31,9 +31,8 @@ class ItemIdentifier{ ){} public static function fromBlock(Block $block) : self{ - //negative item type IDs are treated as block IDs //TODO: maybe an ItemBlockIdentifier is in order? - return new self(-$block->getTypeId()); + return new self(ItemTypeIds::fromBlockTypeId($block->getTypeId())); } public function getTypeId() : int{ return $this->typeId; } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index b7eea8055..180842555 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -311,4 +311,19 @@ final class ItemTypeIds{ public static function newId() : int{ return self::$nextDynamicId++; } + + public static function fromBlockTypeId(int $blockTypeId) : int{ + if($blockTypeId < 0){ + throw new \InvalidArgumentException("Block type IDs cannot be negative"); + } + //negative item type IDs are treated as block IDs + return -$blockTypeId; + } + + public static function toBlockTypeId(int $itemTypeId) : int{ + if($itemTypeId > 0){ + throw new \InvalidArgumentException("Item type ID $itemTypeId does not represent a block"); + } + return -$itemTypeId; + } } From f64dc01bd1c14ff3f79bd6c18d0c337dbc0e87e0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 15:50:18 +0000 Subject: [PATCH 537/692] ItemBlock: drop the charade about overriding built-in block types this allows cleaning up a whole lot of abusable mess from the API, and we never properly supported overriding built-in block types anyway. --- src/block/Anvil.php | 4 +-- src/block/Bamboo.php | 2 +- src/block/BambooSapling.php | 2 +- src/block/Barrel.php | 2 +- src/block/Bed.php | 2 +- src/block/Bedrock.php | 2 +- src/block/Bell.php | 2 +- src/block/Block.php | 4 +-- src/block/BrewingStand.php | 2 +- src/block/Button.php | 2 +- src/block/Cactus.php | 2 +- src/block/Cake.php | 2 +- src/block/Candle.php | 2 +- src/block/ChorusFlower.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/Crops.php | 2 +- src/block/DaylightSensor.php | 2 +- src/block/DetectorRail.php | 2 +- src/block/Dirt.php | 2 +- src/block/Door.php | 2 +- src/block/DoublePlant.php | 2 +- src/block/EndPortalFrame.php | 2 +- src/block/Farmland.php | 2 +- src/block/FenceGate.php | 2 +- src/block/FillableCauldron.php | 2 +- src/block/Fire.php | 2 +- src/block/FloorCoralFan.php | 2 +- src/block/Froglight.php | 2 +- src/block/FrostedIce.php | 2 +- src/block/Furnace.php | 2 +- src/block/Hopper.php | 2 +- src/block/ItemFrame.php | 2 +- src/block/Lantern.php | 2 +- src/block/Leaves.php | 2 +- src/block/Lectern.php | 2 +- src/block/Lever.php | 2 +- src/block/Light.php | 2 +- src/block/Liquid.php | 2 +- src/block/NetherPortal.php | 2 +- src/block/NetherWartPlant.php | 2 +- src/block/Rail.php | 2 +- src/block/RedMushroomBlock.php | 2 +- src/block/RedstoneComparator.php | 2 +- src/block/RedstoneLamp.php | 2 +- src/block/RedstoneOre.php | 2 +- src/block/RedstoneRepeater.php | 2 +- src/block/RedstoneTorch.php | 2 +- src/block/RuntimeBlockStateRegistry.php | 28 --------------- src/block/Sapling.php | 2 +- src/block/SeaPickle.php | 2 +- src/block/ShulkerBox.php | 2 +- src/block/SimplePressurePlate.php | 2 +- src/block/Skull.php | 4 +-- src/block/Slab.php | 2 +- src/block/SnowLayer.php | 2 +- src/block/Sponge.php | 2 +- src/block/Stair.php | 2 +- src/block/StraightOnlyRail.php | 2 +- src/block/Sugarcane.php | 2 +- src/block/SweetBerryBush.php | 2 +- src/block/TNT.php | 4 +-- src/block/Torch.php | 2 +- src/block/Trapdoor.php | 2 +- src/block/Tripwire.php | 2 +- src/block/TripwireHook.php | 2 +- src/block/UnknownBlock.php | 2 +- src/block/Vine.php | 2 +- src/block/Wall.php | 2 +- src/block/WallCoralFan.php | 2 +- src/block/Wood.php | 2 +- .../AnalogRedstoneSignalEmitterTrait.php | 2 +- src/block/utils/AnyFacingTrait.php | 2 +- src/block/utils/CandleTrait.php | 2 +- src/block/utils/ColoredTrait.php | 2 +- src/block/utils/CopperTrait.php | 2 +- src/block/utils/CoralTypeTrait.php | 2 +- src/block/utils/HorizontalFacingTrait.php | 2 +- src/block/utils/PillarRotationTrait.php | 2 +- .../utils/RailPoweredByRedstoneTrait.php | 2 +- src/block/utils/SignLikeRotationTrait.php | 2 +- src/item/ItemBlock.php | 36 +++++-------------- tests/phpunit/block/BlockTest.php | 13 ++----- 82 files changed, 94 insertions(+), 149 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 17814e2c9..270004973 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,11 +51,11 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index a6a08859b..d766cdc2e 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -55,7 +55,7 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); $w->bool($this->thick); $w->bool($this->ready); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index cfa81519b..53db4b54b 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ private bool $ready = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 68eda5331..e9218db56 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -38,7 +38,7 @@ class Barrel extends Opaque{ protected bool $open = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->open); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 678c8a542..4b4262796 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -53,7 +53,7 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->occupied); $w->bool($this->head); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 4bca83305..7d8ed647f 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Bedrock extends Opaque{ private bool $burnsForever = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index f20a031c2..6792dc1a4 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -48,7 +48,7 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bellAttachmentType($this->attachmentType); $w->horizontalFacing($this->facing); } diff --git a/src/block/Block.php b/src/block/Block.php index 6863f47bc..34b327295 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -214,11 +214,11 @@ class Block{ return $writer->getValue(); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ //NOOP } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ //NOOP } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 479d20739..8c3d29ba1 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -43,7 +43,7 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->brewingStandSlots($this->slots); } diff --git a/src/block/Button.php b/src/block/Button.php index aa6ca8fa0..4573f03a4 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -38,7 +38,7 @@ abstract class Button extends Flowable{ protected bool $pressed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->pressed); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 18dd726e7..66b8734dd 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -41,7 +41,7 @@ class Cactus extends Transparent{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 93e51be21..4266ece68 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -36,7 +36,7 @@ class Cake extends BaseCake{ protected int $bites = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } diff --git a/src/block/Candle.php b/src/block/Candle.php index 4870277cc..4982ae189 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -46,7 +46,7 @@ class Candle extends Transparent{ private int $count = self::MIN_COUNT; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $this->encodeLitState($w); $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); } diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php index 2aa65d1f6..9236be47a 100644 --- a/src/block/ChorusFlower.php +++ b/src/block/ChorusFlower.php @@ -49,7 +49,7 @@ final class ChorusFlower extends Flowable{ private int $age = self::MIN_AGE; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index fe4f1736b..bfa0778dc 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -46,7 +46,7 @@ class CocoaBlock extends Transparent{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Crops.php b/src/block/Crops.php index c1c13bee9..de9d3f2db 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -38,7 +38,7 @@ abstract class Crops extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 2a55500c6..cb296e809 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -41,7 +41,7 @@ class DaylightSensor extends Transparent{ protected bool $inverted = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); $w->bool($this->inverted); } diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 8af12276b..10f371c66 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->activated); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 900879433..33f3800d7 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -45,7 +45,7 @@ class Dirt extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Door.php b/src/block/Door.php index 98a8f5309..13188ffa3 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -41,7 +41,7 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->hingeRight); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index be231c1ea..4b74cf701 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -33,7 +33,7 @@ use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ protected bool $top = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 5a6537d4d..89e700ca2 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -35,7 +35,7 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->eye); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 7ce08c2d9..bd2ff2f85 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -37,7 +37,7 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 7ad96d842..6bc86853b 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -42,7 +42,7 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->open); $w->bool($this->inWall); diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php index b6d9b995e..5f92eed57 100644 --- a/src/block/FillableCauldron.php +++ b/src/block/FillableCauldron.php @@ -37,7 +37,7 @@ abstract class FillableCauldron extends Transparent{ private int $fillLevel = self::MIN_FILL_LEVEL; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); } diff --git a/src/block/Fire.php b/src/block/Fire.php index 6f4332261..e1d463322 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -39,7 +39,7 @@ class Fire extends BaseFire{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 173c87a08..ff484fb78 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -37,7 +37,7 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index 13b68e21e..dcd14c900 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -35,7 +35,7 @@ final class Froglight extends SimplePillar{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 5953ce8ae..b2d2750a3 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -32,7 +32,7 @@ class FrostedIce extends Ice{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index f830a3835..f6cbe6bcf 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -46,7 +46,7 @@ class Furnace extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->lit); } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 778e5c2a1..42ccb14c7 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -39,7 +39,7 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::UP); $w->bool($this->powered); } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 94754910f..63016a390 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -50,7 +50,7 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->hasMap); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index a5d8031dd..a8fbddd37 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -43,7 +43,7 @@ class Lantern extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index b83de2dde..886946425 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -47,7 +47,7 @@ class Leaves extends Transparent{ $this->leavesType = $leavesType; } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->noDecay); $w->bool($this->checkDecay); } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index ae1df8549..0b4f3f622 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -46,7 +46,7 @@ class Lectern extends Transparent{ protected bool $producingSignal = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->producingSignal); } diff --git a/src/block/Lever.php b/src/block/Lever.php index 284a646d9..889402815 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -44,7 +44,7 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->leverFacing($this->facing); $w->bool($this->activated); } diff --git a/src/block/Light.php b/src/block/Light.php index 5ee7281c9..963c00385 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -34,7 +34,7 @@ final class Light extends Flowable{ private int $level = self::MAX_LIGHT_LEVEL; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 476a8f8c7..7126e4466 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -48,7 +48,7 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->bool($this->falling); $w->bool($this->still); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 0c507a166..dcad2a199 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -34,7 +34,7 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 787b1f5f8..afdf406cf 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -37,7 +37,7 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 12b47e6ea..2a0f4059d 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -34,7 +34,7 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->railShape($this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 17fced412..ab5d89fe9 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -36,7 +36,7 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->mushroomBlockType($this->mushroomBlockType); } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index 0f8fee840..c7a2917e4 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -44,7 +44,7 @@ class RedstoneComparator extends Flowable{ protected bool $isSubtractMode = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->isSubtractMode); $w->bool($this->powered); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 1d0ff7345..2a4d517d6 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -29,7 +29,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 13cf84205..d0d026837 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -33,7 +33,7 @@ use function mt_rand; class RedstoneOre extends Opaque{ protected bool $lit = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index d1ad17eeb..6b9362659 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -43,7 +43,7 @@ class RedstoneRepeater extends Flowable{ protected int $delay = self::MIN_DELAY; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); $w->bool($this->powered); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index f85c6c07a..fa1331eeb 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneTorch extends Torch{ protected bool $lit = true; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->lit); } diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index ae6386e33..a62e90736 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -151,18 +151,6 @@ class RuntimeBlockStateRegistry{ } } - /** - * @internal - * Returns the default state of the block type associated with the given type ID. - */ - public function fromTypeId(int $typeId) : Block{ - if(isset($this->typeIndex[$typeId])){ - return clone $this->typeIndex[$typeId]; - } - - throw new \InvalidArgumentException("Block ID $typeId is not registered"); - } - public function fromStateId(int $stateId) : Block{ if($stateId < 0){ throw new \InvalidArgumentException("Block state ID cannot be negative"); @@ -178,22 +166,6 @@ class RuntimeBlockStateRegistry{ return $block; } - /** - * Returns whether a specified block state is already registered in the block factory. - */ - public function isRegistered(int $typeId) : bool{ - $b = $this->typeIndex[$typeId] ?? null; - return $b !== null && !($b instanceof UnknownBlock); - } - - /** - * @return Block[] - * @phpstan-return array - */ - public function getAllKnownTypes() : array{ - return $this->typeIndex; - } - /** * @return Block[] */ diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 838a32ce8..9a973c927 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -46,7 +46,7 @@ class Sapling extends Flowable{ $this->treeType = $treeType; } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index c2955cbaa..d643f841c 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -38,7 +38,7 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->bool($this->underwater); } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index e979b09e5..88ba6e7b8 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -34,7 +34,7 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index f4ad37ea4..050654e76 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 10403ab6b..74daa831f 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -49,11 +49,11 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Slab.php b/src/block/Slab.php index 4e25d15a4..95a07e1b0 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -41,7 +41,7 @@ class Slab extends Transparent{ $this->slabType = SlabType::BOTTOM(); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->slabType($this->slabType); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index ec08620c0..a2528e02c 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -46,7 +46,7 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index b4e523ffa..5b283d18b 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index 971dbc43a..8e299c035 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -46,7 +46,7 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->upsideDown); } diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index fe3d19b25..63e43a52e 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -36,7 +36,7 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->straightOnlyRailShape($this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index cc41c0fb0..716c205b1 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -38,7 +38,7 @@ class Sugarcane extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index c9e9232e7..0ba065ce6 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -45,7 +45,7 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index 7012f7145..d35473e11 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -45,11 +45,11 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index b7bc5136f..1b659891f 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -36,7 +36,7 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 79e3f0e8f..898722f5b 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -40,7 +40,7 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->open); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index b8b3e732d..732b35676 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -33,7 +33,7 @@ class Tripwire extends Flowable{ protected bool $connected = false; protected bool $disarmed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->triggered); $w->bool($this->suspended); $w->bool($this->connected); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 2ad6057b8..c13504123 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -38,7 +38,7 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->connected); $w->bool($this->powered); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 7c48b236f..4523fd7ec 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -38,7 +38,7 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); diff --git a/src/block/Vine.php b/src/block/Vine.php index 53d4b1efe..a0309d840 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -39,7 +39,7 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacingFlags($this->faces); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 8b128c525..0bad315e9 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -42,7 +42,7 @@ class Wall extends Transparent{ protected array $connections = []; protected bool $post = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->wallConnections($this->connections); $w->bool($this->post); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index c7e350c47..5928f7842 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index 9a0c36e1d..3fbae40da 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -38,7 +38,7 @@ class Wood extends Opaque{ private bool $stripped = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 783517dcd..e3c4c9442 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 78fdd9bf9..25618d9dc 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -29,7 +29,7 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index 60dd61849..867cf15da 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -39,7 +39,7 @@ use pocketmine\world\sound\FlintSteelSound; trait CandleTrait{ private bool $lit = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 42abe64b9..b9a14bee1 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -31,7 +31,7 @@ trait ColoredTrait{ private $color; /** @see Block::describeType() */ - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index ed230c6ba..11c0178f9 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -44,7 +44,7 @@ trait CopperTrait{ parent::__construct($identifier, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index d2c96c8f4..4607831c8 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -31,7 +31,7 @@ trait CoralTypeTrait{ protected bool $dead = false; /** @see Block::describeType() */ - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); $w->bool($this->dead); } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index b1558b154..624250e11 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -30,7 +30,7 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 0fc206a20..fccd53676 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -35,7 +35,7 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->axis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index a95fea253..d4e9af665 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->powered); } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index 2fed25910..38ab84cb7 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -30,7 +30,7 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + public function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->rotation); } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index a7e14b5ce..16c4badf3 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -24,8 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; -use pocketmine\block\RuntimeBlockStateRegistry; -use pocketmine\block\VanillaBlocks; use pocketmine\data\runtime\RuntimeDataDescriber; /** @@ -35,47 +33,29 @@ use pocketmine\data\runtime\RuntimeDataDescriber; * just place wheat crops when used on the ground). */ final class ItemBlock extends Item{ - private int $blockTypeId; - private int $blockTypeData; - - private int $fuelTime; - private bool $fireProof; - private int $maxStackSize; - - public function __construct(Block $block){ + public function __construct( + private Block $block + ){ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); - $this->blockTypeId = $block->getTypeId(); - $this->blockTypeData = $block->computeTypeData(); - - $this->fuelTime = $block->getFuelTime(); - $this->fireProof = $block->isFireProofAsItem(); - $this->maxStackSize = $block->getMaxStackSize(); } protected function describeType(RuntimeDataDescriber $w) : void{ - $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); + $this->block->describeType($w); } public function getBlock(?int $clickedFace = null) : Block{ - //TODO: HACKY MESS, CLEAN IT UP - $factory = RuntimeBlockStateRegistry::getInstance(); - if(!$factory->isRegistered($this->blockTypeId)){ - return VanillaBlocks::AIR(); - } - $blockType = $factory->fromTypeId($this->blockTypeId); - $blockType->decodeTypeData($this->blockTypeData); - return $blockType; + return clone $this->block; } public function getFuelTime() : int{ - return $this->fuelTime; + return $this->block->getFuelTime(); } public function isFireProof() : bool{ - return $this->fireProof; + return $this->block->isFireProofAsItem(); } public function getMaxStackSize() : int{ - return $this->maxStackSize; + return $this->block->getMaxStackSize(); } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 3f6dbac95..cfcdf47b2 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -62,16 +62,9 @@ class BlockTest extends TestCase{ * Test registering a new block which does not yet exist */ public function testRegisterNewBlock() : void{ - for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ - if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); - $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); - return; - } - } - - throw new \RuntimeException("Can't test registering new blocks because no unused spaces left"); + $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::newId()), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); + $this->blockFactory->register($b); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); } /** From 7c974a12e119dc376328dd96a044986ccea106ff Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 15:51:55 +0000 Subject: [PATCH 538/692] Revert "ItemBlock: drop the charade about overriding built-in block types" This reverts commit f64dc01bd1c14ff3f79bd6c18d0c337dbc0e87e0. I forgot that the ItemBlock constructor implicitly strips off any states of the origin block, which is something that we unfortunately can't do any other way right now, since the blocks don't remember their default states. --- src/block/Anvil.php | 4 +-- src/block/Bamboo.php | 2 +- src/block/BambooSapling.php | 2 +- src/block/Barrel.php | 2 +- src/block/Bed.php | 2 +- src/block/Bedrock.php | 2 +- src/block/Bell.php | 2 +- src/block/Block.php | 4 +-- src/block/BrewingStand.php | 2 +- src/block/Button.php | 2 +- src/block/Cactus.php | 2 +- src/block/Cake.php | 2 +- src/block/Candle.php | 2 +- src/block/ChorusFlower.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/Crops.php | 2 +- src/block/DaylightSensor.php | 2 +- src/block/DetectorRail.php | 2 +- src/block/Dirt.php | 2 +- src/block/Door.php | 2 +- src/block/DoublePlant.php | 2 +- src/block/EndPortalFrame.php | 2 +- src/block/Farmland.php | 2 +- src/block/FenceGate.php | 2 +- src/block/FillableCauldron.php | 2 +- src/block/Fire.php | 2 +- src/block/FloorCoralFan.php | 2 +- src/block/Froglight.php | 2 +- src/block/FrostedIce.php | 2 +- src/block/Furnace.php | 2 +- src/block/Hopper.php | 2 +- src/block/ItemFrame.php | 2 +- src/block/Lantern.php | 2 +- src/block/Leaves.php | 2 +- src/block/Lectern.php | 2 +- src/block/Lever.php | 2 +- src/block/Light.php | 2 +- src/block/Liquid.php | 2 +- src/block/NetherPortal.php | 2 +- src/block/NetherWartPlant.php | 2 +- src/block/Rail.php | 2 +- src/block/RedMushroomBlock.php | 2 +- src/block/RedstoneComparator.php | 2 +- src/block/RedstoneLamp.php | 2 +- src/block/RedstoneOre.php | 2 +- src/block/RedstoneRepeater.php | 2 +- src/block/RedstoneTorch.php | 2 +- src/block/RuntimeBlockStateRegistry.php | 28 +++++++++++++++ src/block/Sapling.php | 2 +- src/block/SeaPickle.php | 2 +- src/block/ShulkerBox.php | 2 +- src/block/SimplePressurePlate.php | 2 +- src/block/Skull.php | 4 +-- src/block/Slab.php | 2 +- src/block/SnowLayer.php | 2 +- src/block/Sponge.php | 2 +- src/block/Stair.php | 2 +- src/block/StraightOnlyRail.php | 2 +- src/block/Sugarcane.php | 2 +- src/block/SweetBerryBush.php | 2 +- src/block/TNT.php | 4 +-- src/block/Torch.php | 2 +- src/block/Trapdoor.php | 2 +- src/block/Tripwire.php | 2 +- src/block/TripwireHook.php | 2 +- src/block/UnknownBlock.php | 2 +- src/block/Vine.php | 2 +- src/block/Wall.php | 2 +- src/block/WallCoralFan.php | 2 +- src/block/Wood.php | 2 +- .../AnalogRedstoneSignalEmitterTrait.php | 2 +- src/block/utils/AnyFacingTrait.php | 2 +- src/block/utils/CandleTrait.php | 2 +- src/block/utils/ColoredTrait.php | 2 +- src/block/utils/CopperTrait.php | 2 +- src/block/utils/CoralTypeTrait.php | 2 +- src/block/utils/HorizontalFacingTrait.php | 2 +- src/block/utils/PillarRotationTrait.php | 2 +- .../utils/RailPoweredByRedstoneTrait.php | 2 +- src/block/utils/SignLikeRotationTrait.php | 2 +- src/item/ItemBlock.php | 36 ++++++++++++++----- tests/phpunit/block/BlockTest.php | 13 +++++-- 82 files changed, 149 insertions(+), 94 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 270004973..17814e2c9 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,11 +51,11 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index d766cdc2e..a6a08859b 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -55,7 +55,7 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); $w->bool($this->thick); $w->bool($this->ready); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index 53db4b54b..cfa81519b 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ private bool $ready = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index e9218db56..68eda5331 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -38,7 +38,7 @@ class Barrel extends Opaque{ protected bool $open = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->open); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 4b4262796..678c8a542 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -53,7 +53,7 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->occupied); $w->bool($this->head); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 7d8ed647f..4bca83305 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Bedrock extends Opaque{ private bool $burnsForever = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index 6792dc1a4..f20a031c2 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -48,7 +48,7 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bellAttachmentType($this->attachmentType); $w->horizontalFacing($this->facing); } diff --git a/src/block/Block.php b/src/block/Block.php index 34b327295..6863f47bc 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -214,11 +214,11 @@ class Block{ return $writer->getValue(); } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //NOOP } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP } diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 8c3d29ba1..479d20739 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -43,7 +43,7 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->brewingStandSlots($this->slots); } diff --git a/src/block/Button.php b/src/block/Button.php index 4573f03a4..aa6ca8fa0 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -38,7 +38,7 @@ abstract class Button extends Flowable{ protected bool $pressed = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->pressed); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 66b8734dd..18dd726e7 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -41,7 +41,7 @@ class Cactus extends Transparent{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 4266ece68..93e51be21 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -36,7 +36,7 @@ class Cake extends BaseCake{ protected int $bites = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } diff --git a/src/block/Candle.php b/src/block/Candle.php index 4982ae189..4870277cc 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -46,7 +46,7 @@ class Candle extends Transparent{ private int $count = self::MIN_COUNT; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $this->encodeLitState($w); $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); } diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php index 9236be47a..2aa65d1f6 100644 --- a/src/block/ChorusFlower.php +++ b/src/block/ChorusFlower.php @@ -49,7 +49,7 @@ final class ChorusFlower extends Flowable{ private int $age = self::MIN_AGE; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index bfa0778dc..fe4f1736b 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -46,7 +46,7 @@ class CocoaBlock extends Transparent{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Crops.php b/src/block/Crops.php index de9d3f2db..c1c13bee9 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -38,7 +38,7 @@ abstract class Crops extends Flowable{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index cb296e809..2a55500c6 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -41,7 +41,7 @@ class DaylightSensor extends Transparent{ protected bool $inverted = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); $w->bool($this->inverted); } diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 10f371c66..8af12276b 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->activated); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 33f3800d7..900879433 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -45,7 +45,7 @@ class Dirt extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Door.php b/src/block/Door.php index 13188ffa3..98a8f5309 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -41,7 +41,7 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->hingeRight); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index 4b74cf701..be231c1ea 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -33,7 +33,7 @@ use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ protected bool $top = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 89e700ca2..5a6537d4d 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -35,7 +35,7 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->eye); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index bd2ff2f85..7ce08c2d9 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -37,7 +37,7 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 6bc86853b..7ad96d842 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -42,7 +42,7 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->open); $w->bool($this->inWall); diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php index 5f92eed57..b6d9b995e 100644 --- a/src/block/FillableCauldron.php +++ b/src/block/FillableCauldron.php @@ -37,7 +37,7 @@ abstract class FillableCauldron extends Transparent{ private int $fillLevel = self::MIN_FILL_LEVEL; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); } diff --git a/src/block/Fire.php b/src/block/Fire.php index e1d463322..6f4332261 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -39,7 +39,7 @@ class Fire extends BaseFire{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index ff484fb78..173c87a08 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -37,7 +37,7 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index dcd14c900..13b68e21e 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -35,7 +35,7 @@ final class Froglight extends SimplePillar{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index b2d2750a3..5953ce8ae 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -32,7 +32,7 @@ class FrostedIce extends Ice{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index f6cbe6bcf..f830a3835 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -46,7 +46,7 @@ class Furnace extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->lit); } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 42ccb14c7..778e5c2a1 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -39,7 +39,7 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::UP); $w->bool($this->powered); } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 63016a390..94754910f 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -50,7 +50,7 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->hasMap); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index a8fbddd37..a5d8031dd 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -43,7 +43,7 @@ class Lantern extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 886946425..b83de2dde 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -47,7 +47,7 @@ class Leaves extends Transparent{ $this->leavesType = $leavesType; } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->noDecay); $w->bool($this->checkDecay); } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index 0b4f3f622..ae1df8549 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -46,7 +46,7 @@ class Lectern extends Transparent{ protected bool $producingSignal = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->producingSignal); } diff --git a/src/block/Lever.php b/src/block/Lever.php index 889402815..284a646d9 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -44,7 +44,7 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->leverFacing($this->facing); $w->bool($this->activated); } diff --git a/src/block/Light.php b/src/block/Light.php index 963c00385..5ee7281c9 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -34,7 +34,7 @@ final class Light extends Flowable{ private int $level = self::MAX_LIGHT_LEVEL; - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 7126e4466..476a8f8c7 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -48,7 +48,7 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->bool($this->falling); $w->bool($this->still); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index dcad2a199..0c507a166 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -34,7 +34,7 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index afdf406cf..787b1f5f8 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -37,7 +37,7 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 2a0f4059d..12b47e6ea 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -34,7 +34,7 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->railShape($this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index ab5d89fe9..17fced412 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -36,7 +36,7 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->mushroomBlockType($this->mushroomBlockType); } diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index c7a2917e4..0f8fee840 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -44,7 +44,7 @@ class RedstoneComparator extends Flowable{ protected bool $isSubtractMode = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->isSubtractMode); $w->bool($this->powered); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 2a4d517d6..1d0ff7345 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -29,7 +29,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index d0d026837..13cf84205 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -33,7 +33,7 @@ use function mt_rand; class RedstoneOre extends Opaque{ protected bool $lit = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index 6b9362659..d1ad17eeb 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -43,7 +43,7 @@ class RedstoneRepeater extends Flowable{ protected int $delay = self::MIN_DELAY; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); $w->bool($this->powered); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index fa1331eeb..f85c6c07a 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneTorch extends Torch{ protected bool $lit = true; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->lit); } diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index a62e90736..ae6386e33 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -151,6 +151,18 @@ class RuntimeBlockStateRegistry{ } } + /** + * @internal + * Returns the default state of the block type associated with the given type ID. + */ + public function fromTypeId(int $typeId) : Block{ + if(isset($this->typeIndex[$typeId])){ + return clone $this->typeIndex[$typeId]; + } + + throw new \InvalidArgumentException("Block ID $typeId is not registered"); + } + public function fromStateId(int $stateId) : Block{ if($stateId < 0){ throw new \InvalidArgumentException("Block state ID cannot be negative"); @@ -166,6 +178,22 @@ class RuntimeBlockStateRegistry{ return $block; } + /** + * Returns whether a specified block state is already registered in the block factory. + */ + public function isRegistered(int $typeId) : bool{ + $b = $this->typeIndex[$typeId] ?? null; + return $b !== null && !($b instanceof UnknownBlock); + } + + /** + * @return Block[] + * @phpstan-return array + */ + public function getAllKnownTypes() : array{ + return $this->typeIndex; + } + /** * @return Block[] */ diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 9a973c927..838a32ce8 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -46,7 +46,7 @@ class Sapling extends Flowable{ $this->treeType = $treeType; } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index d643f841c..c2955cbaa 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -38,7 +38,7 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->bool($this->underwater); } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index 88ba6e7b8..e979b09e5 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -34,7 +34,7 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index 050654e76..f4ad37ea4 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 74daa831f..10403ab6b 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -49,11 +49,11 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Slab.php b/src/block/Slab.php index 95a07e1b0..4e25d15a4 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -41,7 +41,7 @@ class Slab extends Transparent{ $this->slabType = SlabType::BOTTOM(); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->slabType($this->slabType); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index a2528e02c..ec08620c0 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -46,7 +46,7 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index 5b283d18b..b4e523ffa 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index 8e299c035..971dbc43a 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -46,7 +46,7 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->upsideDown); } diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index 63e43a52e..fe3d19b25 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -36,7 +36,7 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->straightOnlyRailShape($this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 716c205b1..cc41c0fb0 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -38,7 +38,7 @@ class Sugarcane extends Flowable{ protected int $age = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 0ba065ce6..c9e9232e7 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -45,7 +45,7 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index d35473e11..7012f7145 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -45,11 +45,11 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index 1b659891f..b7bc5136f 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -36,7 +36,7 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 898722f5b..79e3f0e8f 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -40,7 +40,7 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->open); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index 732b35676..b8b3e732d 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -33,7 +33,7 @@ class Tripwire extends Flowable{ protected bool $connected = false; protected bool $disarmed = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->triggered); $w->bool($this->suspended); $w->bool($this->connected); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index c13504123..2ad6057b8 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -38,7 +38,7 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->connected); $w->bool($this->powered); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 4523fd7ec..7c48b236f 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -38,7 +38,7 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); diff --git a/src/block/Vine.php b/src/block/Vine.php index a0309d840..53d4b1efe 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -39,7 +39,7 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacingFlags($this->faces); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 0bad315e9..8b128c525 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -42,7 +42,7 @@ class Wall extends Transparent{ protected array $connections = []; protected bool $post = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->wallConnections($this->connections); $w->bool($this->post); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index 5928f7842..c7e350c47 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index 3fbae40da..9a0c36e1d 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -38,7 +38,7 @@ class Wood extends Opaque{ private bool $stripped = false; - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index e3c4c9442..783517dcd 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 25618d9dc..78fdd9bf9 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -29,7 +29,7 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index 867cf15da..60dd61849 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -39,7 +39,7 @@ use pocketmine\world\sound\FlintSteelSound; trait CandleTrait{ private bool $lit = false; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index b9a14bee1..42abe64b9 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -31,7 +31,7 @@ trait ColoredTrait{ private $color; /** @see Block::describeType() */ - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 11c0178f9..ed230c6ba 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -44,7 +44,7 @@ trait CopperTrait{ parent::__construct($identifier, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 4607831c8..d2c96c8f4 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -31,7 +31,7 @@ trait CoralTypeTrait{ protected bool $dead = false; /** @see Block::describeType() */ - public function describeType(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); $w->bool($this->dead); } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index 624250e11..b1558b154 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -30,7 +30,7 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index fccd53676..0fc206a20 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -35,7 +35,7 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->axis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index d4e9af665..a95fea253 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ parent::describeState($w); $w->bool($this->powered); } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index 38ab84cb7..2fed25910 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -30,7 +30,7 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->rotation); } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 16c4badf3..a7e14b5ce 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; +use pocketmine\block\RuntimeBlockStateRegistry; +use pocketmine\block\VanillaBlocks; use pocketmine\data\runtime\RuntimeDataDescriber; /** @@ -33,29 +35,47 @@ use pocketmine\data\runtime\RuntimeDataDescriber; * just place wheat crops when used on the ground). */ final class ItemBlock extends Item{ - public function __construct( - private Block $block - ){ + private int $blockTypeId; + private int $blockTypeData; + + private int $fuelTime; + private bool $fireProof; + private int $maxStackSize; + + public function __construct(Block $block){ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); + $this->blockTypeId = $block->getTypeId(); + $this->blockTypeData = $block->computeTypeData(); + + $this->fuelTime = $block->getFuelTime(); + $this->fireProof = $block->isFireProofAsItem(); + $this->maxStackSize = $block->getMaxStackSize(); } protected function describeType(RuntimeDataDescriber $w) : void{ - $this->block->describeType($w); + $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); } public function getBlock(?int $clickedFace = null) : Block{ - return clone $this->block; + //TODO: HACKY MESS, CLEAN IT UP + $factory = RuntimeBlockStateRegistry::getInstance(); + if(!$factory->isRegistered($this->blockTypeId)){ + return VanillaBlocks::AIR(); + } + $blockType = $factory->fromTypeId($this->blockTypeId); + $blockType->decodeTypeData($this->blockTypeData); + return $blockType; } public function getFuelTime() : int{ - return $this->block->getFuelTime(); + return $this->fuelTime; } public function isFireProof() : bool{ - return $this->block->isFireProofAsItem(); + return $this->fireProof; } public function getMaxStackSize() : int{ - return $this->block->getMaxStackSize(); + return $this->maxStackSize; } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index cfcdf47b2..3f6dbac95 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -62,9 +62,16 @@ class BlockTest extends TestCase{ * Test registering a new block which does not yet exist */ public function testRegisterNewBlock() : void{ - $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::newId()), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); - $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); + for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ + if(!$this->blockFactory->isRegistered($i)){ + $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); + $this->blockFactory->register($b); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); + return; + } + } + + throw new \RuntimeException("Can't test registering new blocks because no unused spaces left"); } /** From cbb58d3e0d0ba8d78e13482217a52ff44baa1d1a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 16:23:40 +0000 Subject: [PATCH 539/692] Block: reduce method placement chaos --- src/block/Block.php | 83 +++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 6863f47bc..d0edd01a7 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -105,6 +105,15 @@ class Block{ return $this->fallbackName; } + + /** + * Returns a type ID that identifies this type of block. This does not include information like facing, open/closed, + * powered/unpowered, etc. + */ + public function getTypeId() : int{ + return $this->idInfo->getBlockTypeId(); + } + /** * @internal * @@ -117,6 +126,39 @@ class Block{ return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeStateData(); } + /** + * Returns whether the given block has an equivalent type to this one. This compares the type IDs. + */ + public function isSameType(Block $other) : bool{ + return $this->getTypeId() === $other->getTypeId(); + } + + /** + * Returns whether the given block has the same type and properties as this block. + */ + public function isSameState(Block $other) : bool{ + return $this->getStateId() === $other->getStateId(); + } + + /** + * @return string[] + */ + public function getTypeTags() : array{ + return $this->typeInfo->getTypeTags(); + } + + /** + * Returns whether this block type has the given type tag. Type tags are used as a dynamic way to tag blocks as + * having certain properties, allowing type checks which are more dynamic than hardcoding a bunch of IDs or a bunch + * of instanceof checks. + * + * For example, grass blocks, dirt, farmland, podzol and mycelium are all dirt-like blocks, and support the + * placement of blocks like flowers, so they have a common tag which allows them to be identified as such. + */ + public function hasTypeTag(string $tag) : bool{ + return $this->typeInfo->hasTypeTag($tag); + } + /** * Returns the block as an item. * State information such as facing, powered/unpowered, open/closed, etc., is discarded. @@ -272,47 +314,6 @@ class Block{ } } - /** - * Returns a type ID that identifies this type of block. This does not include information like facing, open/closed, - * powered/unpowered, etc. - */ - public function getTypeId() : int{ - return $this->idInfo->getBlockTypeId(); - } - - /** - * Returns whether the given block has an equivalent type to this one. This compares the type IDs. - */ - public function isSameType(Block $other) : bool{ - return $this->getTypeId() === $other->getTypeId(); - } - - /** - * Returns whether the given block has the same type and properties as this block. - */ - public function isSameState(Block $other) : bool{ - return $this->getStateId() === $other->getStateId(); - } - - /** - * @return string[] - */ - public function getTypeTags() : array{ - return $this->typeInfo->getTypeTags(); - } - - /** - * Returns whether this block type has the given type tag. Type tags are used as a dynamic way to tag blocks as - * having certain properties, allowing type checks which are more dynamic than hardcoding a bunch of IDs or a bunch - * of instanceof checks. - * - * For example, grass blocks, dirt, farmland, podzol and mycelium are all dirt-like blocks, and support the - * placement of blocks like flowers, so they have a common tag which allows them to be identified as such. - */ - public function hasTypeTag(string $tag) : bool{ - return $this->typeInfo->hasTypeTag($tag); - } - /** * AKA: Block->isPlaceable */ From 4692552fdc9280403b8cfcd5525b25ccaa319762 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 16:32:33 +0000 Subject: [PATCH 540/692] Block: improve documentation of type ID and state ID --- src/block/Block.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index d0edd01a7..3f2bc5cb2 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -105,10 +105,14 @@ class Block{ return $this->fallbackName; } - /** - * Returns a type ID that identifies this type of block. This does not include information like facing, open/closed, - * powered/unpowered, etc. + * Returns a type ID that identifies this type of block. This allows comparing basic block types, e.g. wool, stone, + * glass, etc. + * + * This does **NOT** include information like facing, open/closed, powered/unpowered, colour, etc. This means that, + * for example, red wool and green wool have the same type ID. + * + * @see BlockTypeIds */ public function getTypeId() : int{ return $this->idInfo->getBlockTypeId(); @@ -120,6 +124,11 @@ class Block{ * Returns the full blockstate ID of this block. This is a compact way of representing a blockstate used to store * blocks in chunks at runtime. * + * This usually encodes all properties of the block, such as facing, open/closed, powered/unpowered, colour, etc. + * However, some blocks (such as signs and chests) may store additional properties in an associated "tile" if they + * have too many possible values to be encoded into the state ID. These extra properties are **NOT** included in + * this function's result. + * * This ID can be used to later obtain a copy of this block using {@link RuntimeBlockStateRegistry::fromStateId()}. */ public function getStateId() : int{ From e15e53859fa902a6ef8c402d611f0ab411ca0294 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 17:25:48 +0000 Subject: [PATCH 541/692] tidy --- src/block/Block.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 3f2bc5cb2..aed558241 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -202,8 +202,7 @@ class Block{ */ final public function decodeTypeData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); - $givenBits = $typeBits; - $reader = new RuntimeDataReader($givenBits, $data); + $reader = new RuntimeDataReader($typeBits, $data); $this->describeType($reader); $readBits = $reader->getOffset(); @@ -218,8 +217,7 @@ class Block{ final public function decodeStateData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); - $givenBits = $typeBits + $stateBits; - $reader = new RuntimeDataReader($givenBits, $data); + $reader = new RuntimeDataReader($typeBits + $stateBits, $data); $this->decodeTypeData($reader->readInt($typeBits)); $this->describeState($reader); @@ -234,8 +232,7 @@ class Block{ */ final public function computeTypeData() : int{ $typeBits = $this->getRequiredTypeDataBits(); - $requiredBits = $typeBits; - $writer = new RuntimeDataWriter($requiredBits); + $writer = new RuntimeDataWriter($typeBits); $this->describeType($writer); $writtenBits = $writer->getOffset(); @@ -252,8 +249,7 @@ class Block{ final public function computeStateData() : int{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); - $requiredBits = $typeBits + $stateBits; - $writer = new RuntimeDataWriter($requiredBits); + $writer = new RuntimeDataWriter($typeBits + $stateBits); $writer->writeInt($typeBits, $this->computeTypeData()); $this->describeState($writer); From 972f107972f931bf658e8ab730d25de8e365704c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 17:31:52 +0000 Subject: [PATCH 542/692] Block: added documentation for describeType() and describeState() --- src/block/Block.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/block/Block.php b/src/block/Block.php index aed558241..fb43a214f 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -261,10 +261,26 @@ class Block{ return $writer->getValue(); } + /** + * Describes properties of this block which apply to both the block and item form of the block. + * Examples of suitable properties include colour, skull type, and any other information which **IS** kept when the + * block is mined or block-picked. + * + * The method implementation must NOT use conditional logic to determine which properties are written. It must + * always write the same properties in the same order, regardless of the current state of the block. + */ protected function describeType(RuntimeDataDescriber $w) : void{ //NOOP } + /** + * Describes properties of this block which apply only to the block form of the block. + * Examples of suitable properties include facing, open/closed, powered/unpowered, on/off, and any other information + * which **IS NOT** kept when the block is mined or block-picked. + * + * The method implementation must NOT use conditional logic to determine which properties are written. It must + * always write the same properties in the same order, regardless of the current state of the block. + */ protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP } From 95c18ef99a93126eba4f52d8482d84a9e28a4dda Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 2 Mar 2023 17:42:44 +0000 Subject: [PATCH 543/692] Block: change confusing naming of decode/computeStateData these actually accept a combination of type and state data, so it's a bit inconsistent with other references to 'state data'. --- src/block/Block.php | 8 ++++---- src/block/RuntimeBlockStateRegistry.php | 6 +++--- tests/phpunit/block/BlockTest.php | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index fb43a214f..934a485d9 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -132,7 +132,7 @@ class Block{ * This ID can be used to later obtain a copy of this block using {@link RuntimeBlockStateRegistry::fromStateId()}. */ public function getStateId() : int{ - return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeStateData(); + return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeTypeAndStateData(); } /** @@ -214,7 +214,7 @@ class Block{ /** * @internal */ - final public function decodeStateData(int $data) : void{ + final public function decodeTypeAndStateData(int $data) : void{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); $reader = new RuntimeDataReader($typeBits + $stateBits, $data); @@ -246,7 +246,7 @@ class Block{ /** * @internal */ - final public function computeStateData() : int{ + final public function computeTypeAndStateData() : int{ $typeBits = $this->getRequiredTypeDataBits(); $stateBits = $this->getRequiredStateDataBits(); $writer = new RuntimeDataWriter($typeBits + $stateBits); @@ -720,7 +720,7 @@ class Block{ * @return string */ public function __toString(){ - return "Block[" . $this->getName() . "] (" . $this->getTypeId() . ":" . $this->computeStateData() . ")"; + return "Block[" . $this->getName() . "] (" . $this->getTypeId() . ":" . $this->computeTypeAndStateData() . ")"; } /** diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index ae6386e33..ed3761b72 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -97,10 +97,10 @@ class RuntimeBlockStateRegistry{ for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ $v = clone $block; try{ - $v->decodeStateData($stateData); - if($v->computeStateData() !== $stateData){ + $v->decodeTypeAndStateData($stateData); + if($v->computeTypeAndStateData() !== $stateData){ //TODO: this should probably be a hard error - throw new \LogicException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeStateData() . " for input $stateData)"); + throw new \LogicException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeTypeAndStateData() . " for input $stateData)"); } }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it continue; diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 3f6dbac95..8712212c5 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -126,7 +126,7 @@ class BlockTest extends TestCase{ $states = $this->blockFactory->getAllKnownStates(); foreach($states as $stateId => $state){ - self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . $state->getTypeId() . ":" . $state->computeStateData() . ", " . print_r($state, true) . ") - consistency check may need regenerating"); + self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . $state->getTypeId() . ":" . $state->computeTypeAndStateData() . ", " . print_r($state, true) . ") - consistency check may need regenerating"); self::assertSame($knownStates[$stateId], $state->getName()); } asort($knownStates, SORT_STRING); From b9d62de29d146bc7fdfd71516fa83fba2ecabf83 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Mar 2023 15:47:34 +0000 Subject: [PATCH 544/692] Pack wall connections into 7 bits for runtime data encoding --- src/block/Block.php | 2 +- src/data/runtime/RuntimeDataReader.php | 6 ++++-- src/data/runtime/RuntimeDataSizeCalculator.php | 3 +-- src/data/runtime/RuntimeDataWriter.php | 9 ++++++--- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 934a485d9..d557411fe 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -54,7 +54,7 @@ use function get_class; use const PHP_INT_MAX; class Block{ - public const INTERNAL_STATE_DATA_BITS = 9; + public const INTERNAL_STATE_DATA_BITS = 8; public const INTERNAL_STATE_DATA_MASK = ~(~0 << self::INTERNAL_STATE_DATA_BITS); protected BlockIdentifier $idInfo; diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index 14fbca209..ded875385 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -144,9 +144,10 @@ final class RuntimeDataReader implements RuntimeDataDescriber{ */ public function wallConnections(array &$connections) : void{ $result = []; - //TODO: we can pack this into 7 bits instead of 8 + $offset = 0; + $packed = $this->readBoundedInt(7, 0, (3 ** 4) - 1); foreach(Facing::HORIZONTAL as $facing){ - $type = $this->readBoundedInt(2, 0, 2); + $type = intdiv($packed, (3 ** $offset)) % 3; if($type !== 0){ $result[$facing] = match($type){ 1 => WallConnectionType::SHORT(), @@ -154,6 +155,7 @@ final class RuntimeDataReader implements RuntimeDataDescriber{ default => throw new AssumptionFailedError("Unreachable") }; } + $offset++; } $connections = $result; diff --git a/src/data/runtime/RuntimeDataSizeCalculator.php b/src/data/runtime/RuntimeDataSizeCalculator.php index 5678ffd81..ded209470 100644 --- a/src/data/runtime/RuntimeDataSizeCalculator.php +++ b/src/data/runtime/RuntimeDataSizeCalculator.php @@ -81,8 +81,7 @@ final class RuntimeDataSizeCalculator implements RuntimeDataDescriber{ } public function wallConnections(array &$connections) : void{ - //TODO: this can be reduced to 7 if we pack the trinary values - $this->addBits(8); + $this->addBits(7); } public function brewingStandSlots(array &$slots) : void{ diff --git a/src/data/runtime/RuntimeDataWriter.php b/src/data/runtime/RuntimeDataWriter.php index feaef3698..0b3cd73e3 100644 --- a/src/data/runtime/RuntimeDataWriter.php +++ b/src/data/runtime/RuntimeDataWriter.php @@ -133,15 +133,18 @@ final class RuntimeDataWriter implements RuntimeDataDescriber{ * @phpstan-param array $connections */ public function wallConnections(array &$connections) : void{ - //TODO: we can pack this into 7 bits instead of 8 + $packed = 0; + $offset = 0; foreach(Facing::HORIZONTAL as $facing){ - $this->writeBoundedInt(2, 0, 2, match($connections[$facing] ?? null){ + $packed += match($connections[$facing] ?? null){ null => 0, WallConnectionType::SHORT() => 1, WallConnectionType::TALL() => 2, default => throw new AssumptionFailedError("Unreachable") - }); + } * (3 ** $offset); + $offset++; } + $this->writeBoundedInt(7, 0, (3 ** 4) - 1, $packed); } /** From 5eeb63f64b93bc6af5f40e4731215f1f38b7d05f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Mar 2023 15:52:57 +0000 Subject: [PATCH 545/692] always the CS ... --- src/data/runtime/RuntimeDataReader.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/runtime/RuntimeDataReader.php b/src/data/runtime/RuntimeDataReader.php index ded875385..280a0f499 100644 --- a/src/data/runtime/RuntimeDataReader.php +++ b/src/data/runtime/RuntimeDataReader.php @@ -29,6 +29,7 @@ use pocketmine\block\utils\WallConnectionType; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; +use function intdiv; final class RuntimeDataReader implements RuntimeDataDescriber{ use RuntimeEnumDeserializerTrait; From a42a67fc507f1939d96c162849d33ac9b4bc0342 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 4 Mar 2023 15:53:56 +0000 Subject: [PATCH 546/692] Update consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 5f7ce0cbf..1fc151ab5 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[5248000],"Acacia Button":[5120512,5120513,5120514,5120515,5120516,5120517,5120520,5120521,5120522,5120523,5120524,5120525],"Acacia Door":[5121024,5121025,5121026,5121027,5121028,5121029,5121030,5121031,5121032,5121033,5121034,5121035,5121036,5121037,5121038,5121039,5121040,5121041,5121042,5121043,5121044,5121045,5121046,5121047,5121048,5121049,5121050,5121051,5121052,5121053,5121054,5121055],"Acacia Fence":[5121536],"Acacia Fence Gate":[5122048,5122049,5122050,5122051,5122052,5122053,5122054,5122055,5122056,5122057,5122058,5122059,5122060,5122061,5122062,5122063],"Acacia Leaves":[5122560,5122561,5122562,5122563],"Acacia Log":[5123072,5123073,5123074,5123075,5123076,5123077],"Acacia Planks":[5123584],"Acacia Pressure Plate":[5124096,5124097],"Acacia Sapling":[5124608,5124609],"Acacia Sign":[5125120,5125121,5125122,5125123,5125124,5125125,5125126,5125127,5125128,5125129,5125130,5125131,5125132,5125133,5125134,5125135],"Acacia Slab":[5125632,5125633,5125634],"Acacia Stairs":[5126144,5126145,5126146,5126147,5126148,5126149,5126150,5126151],"Acacia Trapdoor":[5126656,5126657,5126658,5126659,5126660,5126661,5126662,5126663,5126664,5126665,5126666,5126667,5126668,5126669,5126670,5126671],"Acacia Wall Sign":[5127168,5127169,5127170,5127171],"Acacia Wood":[5127680,5127681,5127682,5127683,5127684,5127685],"Actinium":[5188096],"Activator Rail":[5128192,5128193,5128194,5128195,5128196,5128197,5128200,5128201,5128202,5128203,5128204,5128205],"Air":[5120000],"All Sided Mushroom Stem":[5128704],"Allium":[5129216],"Aluminum":[5188608],"Americium":[5189120],"Amethyst":[5396480],"Ancient Debris":[5396992],"Andesite":[5129728],"Andesite Slab":[5130240,5130241,5130242],"Andesite Stairs":[5130752,5130753,5130754,5130755,5130756,5130757,5130758,5130759],"Andesite Wall":[5131264,5131265,5131266,5131268,5131269,5131270,5131272,5131273,5131274,5131280,5131281,5131282,5131284,5131285,5131286,5131288,5131289,5131290,5131296,5131297,5131298,5131300,5131301,5131302,5131304,5131305,5131306,5131328,5131329,5131330,5131332,5131333,5131334,5131336,5131337,5131338,5131344,5131345,5131346,5131348,5131349,5131350,5131352,5131353,5131354,5131360,5131361,5131362,5131364,5131365,5131366,5131368,5131369,5131370,5131392,5131393,5131394,5131396,5131397,5131398,5131400,5131401,5131402,5131408,5131409,5131410,5131412,5131413,5131414,5131416,5131417,5131418,5131424,5131425,5131426,5131428,5131429,5131430,5131432,5131433,5131434,5131520,5131521,5131522,5131524,5131525,5131526,5131528,5131529,5131530,5131536,5131537,5131538,5131540,5131541,5131542,5131544,5131545,5131546,5131552,5131553,5131554,5131556,5131557,5131558,5131560,5131561,5131562,5131584,5131585,5131586,5131588,5131589,5131590,5131592,5131593,5131594,5131600,5131601,5131602,5131604,5131605,5131606,5131608,5131609,5131610,5131616,5131617,5131618,5131620,5131621,5131622,5131624,5131625,5131626,5131648,5131649,5131650,5131652,5131653,5131654,5131656,5131657,5131658,5131664,5131665,5131666,5131668,5131669,5131670,5131672,5131673,5131674,5131680,5131681,5131682,5131684,5131685,5131686,5131688,5131689,5131690],"Antimony":[5189632],"Anvil":[5131776,5131777,5131778,5131780,5131781,5131782,5131784,5131785,5131786,5131788,5131789,5131790],"Argon":[5190144],"Arsenic":[5190656],"Astatine":[5191168],"Azalea Leaves":[5471232,5471233,5471234,5471235],"Azure Bluet":[5132288],"Bamboo":[5132800,5132801,5132802,5132804,5132805,5132806,5132808,5132809,5132810,5132812,5132813,5132814],"Bamboo Sapling":[5133312,5133313],"Banner":[5133824,5133825,5133826,5133827,5133828,5133829,5133830,5133831,5133832,5133833,5133834,5133835,5133836,5133837,5133838,5133839,5133840,5133841,5133842,5133843,5133844,5133845,5133846,5133847,5133848,5133849,5133850,5133851,5133852,5133853,5133854,5133855,5133856,5133857,5133858,5133859,5133860,5133861,5133862,5133863,5133864,5133865,5133866,5133867,5133868,5133869,5133870,5133871,5133872,5133873,5133874,5133875,5133876,5133877,5133878,5133879,5133880,5133881,5133882,5133883,5133884,5133885,5133886,5133887,5133888,5133889,5133890,5133891,5133892,5133893,5133894,5133895,5133896,5133897,5133898,5133899,5133900,5133901,5133902,5133903,5133904,5133905,5133906,5133907,5133908,5133909,5133910,5133911,5133912,5133913,5133914,5133915,5133916,5133917,5133918,5133919,5133920,5133921,5133922,5133923,5133924,5133925,5133926,5133927,5133928,5133929,5133930,5133931,5133932,5133933,5133934,5133935,5133936,5133937,5133938,5133939,5133940,5133941,5133942,5133943,5133944,5133945,5133946,5133947,5133948,5133949,5133950,5133951,5133952,5133953,5133954,5133955,5133956,5133957,5133958,5133959,5133960,5133961,5133962,5133963,5133964,5133965,5133966,5133967,5133968,5133969,5133970,5133971,5133972,5133973,5133974,5133975,5133976,5133977,5133978,5133979,5133980,5133981,5133982,5133983,5133984,5133985,5133986,5133987,5133988,5133989,5133990,5133991,5133992,5133993,5133994,5133995,5133996,5133997,5133998,5133999,5134000,5134001,5134002,5134003,5134004,5134005,5134006,5134007,5134008,5134009,5134010,5134011,5134012,5134013,5134014,5134015,5134016,5134017,5134018,5134019,5134020,5134021,5134022,5134023,5134024,5134025,5134026,5134027,5134028,5134029,5134030,5134031,5134032,5134033,5134034,5134035,5134036,5134037,5134038,5134039,5134040,5134041,5134042,5134043,5134044,5134045,5134046,5134047,5134048,5134049,5134050,5134051,5134052,5134053,5134054,5134055,5134056,5134057,5134058,5134059,5134060,5134061,5134062,5134063,5134064,5134065,5134066,5134067,5134068,5134069,5134070,5134071,5134072,5134073,5134074,5134075,5134076,5134077,5134078,5134079],"Barium":[5191680],"Barrel":[5134336,5134337,5134338,5134339,5134340,5134341,5134344,5134345,5134346,5134347,5134348,5134349],"Barrier":[5134848],"Basalt":[5397504,5397505,5397506],"Beacon":[5135360],"Bed Block":[5135872,5135873,5135874,5135875,5135876,5135877,5135878,5135879,5135880,5135881,5135882,5135883,5135884,5135885,5135886,5135887,5135888,5135889,5135890,5135891,5135892,5135893,5135894,5135895,5135896,5135897,5135898,5135899,5135900,5135901,5135902,5135903,5135904,5135905,5135906,5135907,5135908,5135909,5135910,5135911,5135912,5135913,5135914,5135915,5135916,5135917,5135918,5135919,5135920,5135921,5135922,5135923,5135924,5135925,5135926,5135927,5135928,5135929,5135930,5135931,5135932,5135933,5135934,5135935,5135936,5135937,5135938,5135939,5135940,5135941,5135942,5135943,5135944,5135945,5135946,5135947,5135948,5135949,5135950,5135951,5135952,5135953,5135954,5135955,5135956,5135957,5135958,5135959,5135960,5135961,5135962,5135963,5135964,5135965,5135966,5135967,5135968,5135969,5135970,5135971,5135972,5135973,5135974,5135975,5135976,5135977,5135978,5135979,5135980,5135981,5135982,5135983,5135984,5135985,5135986,5135987,5135988,5135989,5135990,5135991,5135992,5135993,5135994,5135995,5135996,5135997,5135998,5135999,5136000,5136001,5136002,5136003,5136004,5136005,5136006,5136007,5136008,5136009,5136010,5136011,5136012,5136013,5136014,5136015,5136016,5136017,5136018,5136019,5136020,5136021,5136022,5136023,5136024,5136025,5136026,5136027,5136028,5136029,5136030,5136031,5136032,5136033,5136034,5136035,5136036,5136037,5136038,5136039,5136040,5136041,5136042,5136043,5136044,5136045,5136046,5136047,5136048,5136049,5136050,5136051,5136052,5136053,5136054,5136055,5136056,5136057,5136058,5136059,5136060,5136061,5136062,5136063,5136064,5136065,5136066,5136067,5136068,5136069,5136070,5136071,5136072,5136073,5136074,5136075,5136076,5136077,5136078,5136079,5136080,5136081,5136082,5136083,5136084,5136085,5136086,5136087,5136088,5136089,5136090,5136091,5136092,5136093,5136094,5136095,5136096,5136097,5136098,5136099,5136100,5136101,5136102,5136103,5136104,5136105,5136106,5136107,5136108,5136109,5136110,5136111,5136112,5136113,5136114,5136115,5136116,5136117,5136118,5136119,5136120,5136121,5136122,5136123,5136124,5136125,5136126,5136127],"Bedrock":[5136384,5136385],"Beetroot Block":[5136896,5136897,5136898,5136899,5136900,5136901,5136902,5136903],"Bell":[5137408,5137409,5137410,5137411,5137412,5137413,5137414,5137415,5137416,5137417,5137418,5137419,5137420,5137421,5137422,5137423],"Berkelium":[5192192],"Beryllium":[5192704],"Birch Button":[5137920,5137921,5137922,5137923,5137924,5137925,5137928,5137929,5137930,5137931,5137932,5137933],"Birch Door":[5138432,5138433,5138434,5138435,5138436,5138437,5138438,5138439,5138440,5138441,5138442,5138443,5138444,5138445,5138446,5138447,5138448,5138449,5138450,5138451,5138452,5138453,5138454,5138455,5138456,5138457,5138458,5138459,5138460,5138461,5138462,5138463],"Birch Fence":[5138944],"Birch Fence Gate":[5139456,5139457,5139458,5139459,5139460,5139461,5139462,5139463,5139464,5139465,5139466,5139467,5139468,5139469,5139470,5139471],"Birch Leaves":[5139968,5139969,5139970,5139971],"Birch Log":[5140480,5140481,5140482,5140483,5140484,5140485],"Birch Planks":[5140992],"Birch Pressure Plate":[5141504,5141505],"Birch Sapling":[5142016,5142017],"Birch Sign":[5142528,5142529,5142530,5142531,5142532,5142533,5142534,5142535,5142536,5142537,5142538,5142539,5142540,5142541,5142542,5142543],"Birch Slab":[5143040,5143041,5143042],"Birch Stairs":[5143552,5143553,5143554,5143555,5143556,5143557,5143558,5143559],"Birch Trapdoor":[5144064,5144065,5144066,5144067,5144068,5144069,5144070,5144071,5144072,5144073,5144074,5144075,5144076,5144077,5144078,5144079],"Birch Wall Sign":[5144576,5144577,5144578,5144579],"Birch Wood":[5145088,5145089,5145090,5145091,5145092,5145093],"Bismuth":[5193216],"Blackstone":[5399040],"Blackstone Slab":[5399552,5399553,5399554],"Blackstone Stairs":[5400064,5400065,5400066,5400067,5400068,5400069,5400070,5400071],"Blackstone Wall":[5400576,5400577,5400578,5400580,5400581,5400582,5400584,5400585,5400586,5400592,5400593,5400594,5400596,5400597,5400598,5400600,5400601,5400602,5400608,5400609,5400610,5400612,5400613,5400614,5400616,5400617,5400618,5400640,5400641,5400642,5400644,5400645,5400646,5400648,5400649,5400650,5400656,5400657,5400658,5400660,5400661,5400662,5400664,5400665,5400666,5400672,5400673,5400674,5400676,5400677,5400678,5400680,5400681,5400682,5400704,5400705,5400706,5400708,5400709,5400710,5400712,5400713,5400714,5400720,5400721,5400722,5400724,5400725,5400726,5400728,5400729,5400730,5400736,5400737,5400738,5400740,5400741,5400742,5400744,5400745,5400746,5400832,5400833,5400834,5400836,5400837,5400838,5400840,5400841,5400842,5400848,5400849,5400850,5400852,5400853,5400854,5400856,5400857,5400858,5400864,5400865,5400866,5400868,5400869,5400870,5400872,5400873,5400874,5400896,5400897,5400898,5400900,5400901,5400902,5400904,5400905,5400906,5400912,5400913,5400914,5400916,5400917,5400918,5400920,5400921,5400922,5400928,5400929,5400930,5400932,5400933,5400934,5400936,5400937,5400938,5400960,5400961,5400962,5400964,5400965,5400966,5400968,5400969,5400970,5400976,5400977,5400978,5400980,5400981,5400982,5400984,5400985,5400986,5400992,5400993,5400994,5400996,5400997,5400998,5401000,5401001,5401002],"Blast Furnace":[5146112,5146113,5146114,5146115,5146116,5146117,5146118,5146119],"Blue Ice":[5147136],"Blue Orchid":[5147648],"Blue Torch":[5148161,5148162,5148163,5148164,5148165],"Bohrium":[5193728],"Bone Block":[5148672,5148673,5148674],"Bookshelf":[5149184],"Boron":[5194240],"Brewing Stand":[5149696,5149697,5149698,5149699,5149700,5149701,5149702,5149703],"Brick Slab":[5150208,5150209,5150210],"Brick Stairs":[5150720,5150721,5150722,5150723,5150724,5150725,5150726,5150727],"Brick Wall":[5151232,5151233,5151234,5151236,5151237,5151238,5151240,5151241,5151242,5151248,5151249,5151250,5151252,5151253,5151254,5151256,5151257,5151258,5151264,5151265,5151266,5151268,5151269,5151270,5151272,5151273,5151274,5151296,5151297,5151298,5151300,5151301,5151302,5151304,5151305,5151306,5151312,5151313,5151314,5151316,5151317,5151318,5151320,5151321,5151322,5151328,5151329,5151330,5151332,5151333,5151334,5151336,5151337,5151338,5151360,5151361,5151362,5151364,5151365,5151366,5151368,5151369,5151370,5151376,5151377,5151378,5151380,5151381,5151382,5151384,5151385,5151386,5151392,5151393,5151394,5151396,5151397,5151398,5151400,5151401,5151402,5151488,5151489,5151490,5151492,5151493,5151494,5151496,5151497,5151498,5151504,5151505,5151506,5151508,5151509,5151510,5151512,5151513,5151514,5151520,5151521,5151522,5151524,5151525,5151526,5151528,5151529,5151530,5151552,5151553,5151554,5151556,5151557,5151558,5151560,5151561,5151562,5151568,5151569,5151570,5151572,5151573,5151574,5151576,5151577,5151578,5151584,5151585,5151586,5151588,5151589,5151590,5151592,5151593,5151594,5151616,5151617,5151618,5151620,5151621,5151622,5151624,5151625,5151626,5151632,5151633,5151634,5151636,5151637,5151638,5151640,5151641,5151642,5151648,5151649,5151650,5151652,5151653,5151654,5151656,5151657,5151658],"Bricks":[5151744],"Bromine":[5194752],"Brown Mushroom":[5152768],"Brown Mushroom Block":[5153280,5153281,5153282,5153283,5153284,5153285,5153286,5153287,5153288,5153289,5153290],"Cactus":[5153792,5153793,5153794,5153795,5153796,5153797,5153798,5153799,5153800,5153801,5153802,5153803,5153804,5153805,5153806,5153807],"Cadmium":[5195264],"Cake":[5154304,5154305,5154306,5154307,5154308,5154309,5154310],"Cake With Candle":[5458944,5458945],"Cake With Dyed Candle":[5459456,5459457,5459458,5459459,5459460,5459461,5459462,5459463,5459464,5459465,5459466,5459467,5459468,5459469,5459470,5459471,5459472,5459473,5459474,5459475,5459476,5459477,5459478,5459479,5459480,5459481,5459482,5459483,5459484,5459485,5459486,5459487],"Calcite":[5409280],"Calcium":[5195776],"Californium":[5196288],"Candle":[5457920,5457921,5457922,5457923,5457924,5457925,5457926,5457927],"Carbon":[5196800],"Carpet":[5154816,5154817,5154818,5154819,5154820,5154821,5154822,5154823,5154824,5154825,5154826,5154827,5154828,5154829,5154830,5154831],"Carrot Block":[5155328,5155329,5155330,5155331,5155332,5155333,5155334,5155335],"Cartography Table":[5460992],"Carved Pumpkin":[5155840,5155841,5155842,5155843],"Cauldron":[5463040],"Cerium":[5197312],"Cesium":[5197824],"Chain":[5469184,5469185,5469186],"Chest":[5156864,5156865,5156866,5156867],"Chiseled Deepslate":[5420032],"Chiseled Nether Bricks":[5420544],"Chiseled Polished Blackstone":[5404160],"Chiseled Quartz Block":[5157376,5157377,5157378],"Chiseled Red Sandstone":[5157888],"Chiseled Sandstone":[5158400],"Chiseled Stone Bricks":[5158912],"Chlorine":[5198336],"Chorus Flower":[5465600,5465601,5465602,5465603,5465604,5465605],"Chorus Plant":[5466112],"Chromium":[5198848],"Clay Block":[5159424],"Coal Block":[5159936],"Coal Ore":[5160448],"Cobalt":[5199360],"Cobbled Deepslate":[5415424],"Cobbled Deepslate Slab":[5415936,5415937,5415938],"Cobbled Deepslate Stairs":[5416448,5416449,5416450,5416451,5416452,5416453,5416454,5416455],"Cobbled Deepslate Wall":[5416960,5416961,5416962,5416964,5416965,5416966,5416968,5416969,5416970,5416976,5416977,5416978,5416980,5416981,5416982,5416984,5416985,5416986,5416992,5416993,5416994,5416996,5416997,5416998,5417000,5417001,5417002,5417024,5417025,5417026,5417028,5417029,5417030,5417032,5417033,5417034,5417040,5417041,5417042,5417044,5417045,5417046,5417048,5417049,5417050,5417056,5417057,5417058,5417060,5417061,5417062,5417064,5417065,5417066,5417088,5417089,5417090,5417092,5417093,5417094,5417096,5417097,5417098,5417104,5417105,5417106,5417108,5417109,5417110,5417112,5417113,5417114,5417120,5417121,5417122,5417124,5417125,5417126,5417128,5417129,5417130,5417216,5417217,5417218,5417220,5417221,5417222,5417224,5417225,5417226,5417232,5417233,5417234,5417236,5417237,5417238,5417240,5417241,5417242,5417248,5417249,5417250,5417252,5417253,5417254,5417256,5417257,5417258,5417280,5417281,5417282,5417284,5417285,5417286,5417288,5417289,5417290,5417296,5417297,5417298,5417300,5417301,5417302,5417304,5417305,5417306,5417312,5417313,5417314,5417316,5417317,5417318,5417320,5417321,5417322,5417344,5417345,5417346,5417348,5417349,5417350,5417352,5417353,5417354,5417360,5417361,5417362,5417364,5417365,5417366,5417368,5417369,5417370,5417376,5417377,5417378,5417380,5417381,5417382,5417384,5417385,5417386],"Cobblestone":[5160960],"Cobblestone Slab":[5161472,5161473,5161474],"Cobblestone Stairs":[5161984,5161985,5161986,5161987,5161988,5161989,5161990,5161991],"Cobblestone Wall":[5162496,5162497,5162498,5162500,5162501,5162502,5162504,5162505,5162506,5162512,5162513,5162514,5162516,5162517,5162518,5162520,5162521,5162522,5162528,5162529,5162530,5162532,5162533,5162534,5162536,5162537,5162538,5162560,5162561,5162562,5162564,5162565,5162566,5162568,5162569,5162570,5162576,5162577,5162578,5162580,5162581,5162582,5162584,5162585,5162586,5162592,5162593,5162594,5162596,5162597,5162598,5162600,5162601,5162602,5162624,5162625,5162626,5162628,5162629,5162630,5162632,5162633,5162634,5162640,5162641,5162642,5162644,5162645,5162646,5162648,5162649,5162650,5162656,5162657,5162658,5162660,5162661,5162662,5162664,5162665,5162666,5162752,5162753,5162754,5162756,5162757,5162758,5162760,5162761,5162762,5162768,5162769,5162770,5162772,5162773,5162774,5162776,5162777,5162778,5162784,5162785,5162786,5162788,5162789,5162790,5162792,5162793,5162794,5162816,5162817,5162818,5162820,5162821,5162822,5162824,5162825,5162826,5162832,5162833,5162834,5162836,5162837,5162838,5162840,5162841,5162842,5162848,5162849,5162850,5162852,5162853,5162854,5162856,5162857,5162858,5162880,5162881,5162882,5162884,5162885,5162886,5162888,5162889,5162890,5162896,5162897,5162898,5162900,5162901,5162902,5162904,5162905,5162906,5162912,5162913,5162914,5162916,5162917,5162918,5162920,5162921,5162922],"Cobweb":[5163008],"Cocoa Block":[5163520,5163521,5163522,5163523,5163524,5163525,5163526,5163527,5163528,5163529,5163530,5163531],"Compound Creator":[5164032,5164033,5164034,5164035],"Concrete":[5164544,5164545,5164546,5164547,5164548,5164549,5164550,5164551,5164552,5164553,5164554,5164555,5164556,5164557,5164558,5164559],"Concrete Powder":[5165056,5165057,5165058,5165059,5165060,5165061,5165062,5165063,5165064,5165065,5165066,5165067,5165068,5165069,5165070,5165071],"Copernicium":[5200384],"Copper":[5200896],"Copper Block":[5455872,5455873,5455874,5455875,5455876,5455877,5455878,5455879],"Copper Ore":[5449728],"Coral":[5165568,5165569,5165570,5165571,5165572,5165576,5165577,5165578,5165579,5165580],"Coral Block":[5166080,5166081,5166082,5166083,5166084,5166088,5166089,5166090,5166091,5166092],"Coral Fan":[5166592,5166593,5166594,5166595,5166596,5166600,5166601,5166602,5166603,5166604,5166608,5166609,5166610,5166611,5166612,5166616,5166617,5166618,5166619,5166620],"Cornflower":[5167104],"Cracked Deepslate Bricks":[5412352],"Cracked Deepslate Tiles":[5414912],"Cracked Nether Bricks":[5421056],"Cracked Polished Blackstone Bricks":[5406720],"Cracked Stone Bricks":[5167616],"Crafting Table":[5168128],"Crimson Button":[5434368,5434369,5434370,5434371,5434372,5434373,5434376,5434377,5434378,5434379,5434380,5434381],"Crimson Door":[5437440,5437441,5437442,5437443,5437444,5437445,5437446,5437447,5437448,5437449,5437450,5437451,5437452,5437453,5437454,5437455,5437456,5437457,5437458,5437459,5437460,5437461,5437462,5437463,5437464,5437465,5437466,5437467,5437468,5437469,5437470,5437471],"Crimson Fence":[5426688],"Crimson Fence Gate":[5438976,5438977,5438978,5438979,5438980,5438981,5438982,5438983,5438984,5438985,5438986,5438987,5438988,5438989,5438990,5438991],"Crimson Hyphae":[5431296,5431297,5431298,5431299,5431300,5431301],"Crimson Planks":[5425152],"Crimson Pressure Plate":[5435904,5435905],"Crimson Sign":[5442048,5442049,5442050,5442051,5442052,5442053,5442054,5442055,5442056,5442057,5442058,5442059,5442060,5442061,5442062,5442063],"Crimson Slab":[5428224,5428225,5428226],"Crimson Stairs":[5440512,5440513,5440514,5440515,5440516,5440517,5440518,5440519],"Crimson Stem":[5429760,5429761,5429762,5429763,5429764,5429765],"Crimson Trapdoor":[5432832,5432833,5432834,5432835,5432836,5432837,5432838,5432839,5432840,5432841,5432842,5432843,5432844,5432845,5432846,5432847],"Crimson Wall Sign":[5443584,5443585,5443586,5443587],"Crying Obsidian":[5454336],"Curium":[5201408],"Cut Copper Block":[5456384,5456385,5456386,5456387,5456388,5456389,5456390,5456391],"Cut Copper Slab Slab":[5456896,5456897,5456898,5456899,5456900,5456901,5456902,5456903,5456904,5456905,5456906,5456907,5456908,5456909,5456910,5456911,5456912,5456913,5456914,5456915,5456916,5456917,5456918,5456919],"Cut Copper Stairs":[5457408,5457409,5457410,5457411,5457412,5457413,5457414,5457415,5457416,5457417,5457418,5457419,5457420,5457421,5457422,5457423,5457424,5457425,5457426,5457427,5457428,5457429,5457430,5457431,5457432,5457433,5457434,5457435,5457436,5457437,5457438,5457439,5457440,5457441,5457442,5457443,5457444,5457445,5457446,5457447,5457448,5457449,5457450,5457451,5457452,5457453,5457454,5457455,5457456,5457457,5457458,5457459,5457460,5457461,5457462,5457463,5457464,5457465,5457466,5457467,5457468,5457469,5457470,5457471],"Cut Red Sandstone":[5168640],"Cut Red Sandstone Slab":[5169152,5169153,5169154],"Cut Sandstone":[5169664],"Cut Sandstone Slab":[5170176,5170177,5170178],"Dandelion":[5171200],"Dark Oak Button":[5171712,5171713,5171714,5171715,5171716,5171717,5171720,5171721,5171722,5171723,5171724,5171725],"Dark Oak Door":[5172224,5172225,5172226,5172227,5172228,5172229,5172230,5172231,5172232,5172233,5172234,5172235,5172236,5172237,5172238,5172239,5172240,5172241,5172242,5172243,5172244,5172245,5172246,5172247,5172248,5172249,5172250,5172251,5172252,5172253,5172254,5172255],"Dark Oak Fence":[5172736],"Dark Oak Fence Gate":[5173248,5173249,5173250,5173251,5173252,5173253,5173254,5173255,5173256,5173257,5173258,5173259,5173260,5173261,5173262,5173263],"Dark Oak Leaves":[5173760,5173761,5173762,5173763],"Dark Oak Log":[5174272,5174273,5174274,5174275,5174276,5174277],"Dark Oak Planks":[5174784],"Dark Oak Pressure Plate":[5175296,5175297],"Dark Oak Sapling":[5175808,5175809],"Dark Oak Sign":[5176320,5176321,5176322,5176323,5176324,5176325,5176326,5176327,5176328,5176329,5176330,5176331,5176332,5176333,5176334,5176335],"Dark Oak Slab":[5176832,5176833,5176834],"Dark Oak Stairs":[5177344,5177345,5177346,5177347,5177348,5177349,5177350,5177351],"Dark Oak Trapdoor":[5177856,5177857,5177858,5177859,5177860,5177861,5177862,5177863,5177864,5177865,5177866,5177867,5177868,5177869,5177870,5177871],"Dark Oak Wall Sign":[5178368,5178369,5178370,5178371],"Dark Oak Wood":[5178880,5178881,5178882,5178883,5178884,5178885],"Dark Prismarine":[5179392],"Dark Prismarine Slab":[5179904,5179905,5179906],"Dark Prismarine Stairs":[5180416,5180417,5180418,5180419,5180420,5180421,5180422,5180423],"Darmstadtium":[5201920],"Daylight Sensor":[5180928,5180929,5180930,5180931,5180932,5180933,5180934,5180935,5180936,5180937,5180938,5180939,5180940,5180941,5180942,5180943,5180944,5180945,5180946,5180947,5180948,5180949,5180950,5180951,5180952,5180953,5180954,5180955,5180956,5180957,5180958,5180959],"Dead Bush":[5181440],"Deepslate":[5409792,5409793,5409794],"Deepslate Brick Slab":[5410816,5410817,5410818],"Deepslate Brick Stairs":[5411328,5411329,5411330,5411331,5411332,5411333,5411334,5411335],"Deepslate Brick Wall":[5411840,5411841,5411842,5411844,5411845,5411846,5411848,5411849,5411850,5411856,5411857,5411858,5411860,5411861,5411862,5411864,5411865,5411866,5411872,5411873,5411874,5411876,5411877,5411878,5411880,5411881,5411882,5411904,5411905,5411906,5411908,5411909,5411910,5411912,5411913,5411914,5411920,5411921,5411922,5411924,5411925,5411926,5411928,5411929,5411930,5411936,5411937,5411938,5411940,5411941,5411942,5411944,5411945,5411946,5411968,5411969,5411970,5411972,5411973,5411974,5411976,5411977,5411978,5411984,5411985,5411986,5411988,5411989,5411990,5411992,5411993,5411994,5412000,5412001,5412002,5412004,5412005,5412006,5412008,5412009,5412010,5412096,5412097,5412098,5412100,5412101,5412102,5412104,5412105,5412106,5412112,5412113,5412114,5412116,5412117,5412118,5412120,5412121,5412122,5412128,5412129,5412130,5412132,5412133,5412134,5412136,5412137,5412138,5412160,5412161,5412162,5412164,5412165,5412166,5412168,5412169,5412170,5412176,5412177,5412178,5412180,5412181,5412182,5412184,5412185,5412186,5412192,5412193,5412194,5412196,5412197,5412198,5412200,5412201,5412202,5412224,5412225,5412226,5412228,5412229,5412230,5412232,5412233,5412234,5412240,5412241,5412242,5412244,5412245,5412246,5412248,5412249,5412250,5412256,5412257,5412258,5412260,5412261,5412262,5412264,5412265,5412266],"Deepslate Bricks":[5410304],"Deepslate Coal Ore":[5445632],"Deepslate Copper Ore":[5449216],"Deepslate Diamond Ore":[5446144],"Deepslate Emerald Ore":[5446656],"Deepslate Gold Ore":[5448704],"Deepslate Iron Ore":[5448192],"Deepslate Lapis Lazuli Ore":[5447168],"Deepslate Redstone Ore":[5447680,5447681],"Deepslate Tile Slab":[5413376,5413377,5413378],"Deepslate Tile Stairs":[5413888,5413889,5413890,5413891,5413892,5413893,5413894,5413895],"Deepslate Tile Wall":[5414400,5414401,5414402,5414404,5414405,5414406,5414408,5414409,5414410,5414416,5414417,5414418,5414420,5414421,5414422,5414424,5414425,5414426,5414432,5414433,5414434,5414436,5414437,5414438,5414440,5414441,5414442,5414464,5414465,5414466,5414468,5414469,5414470,5414472,5414473,5414474,5414480,5414481,5414482,5414484,5414485,5414486,5414488,5414489,5414490,5414496,5414497,5414498,5414500,5414501,5414502,5414504,5414505,5414506,5414528,5414529,5414530,5414532,5414533,5414534,5414536,5414537,5414538,5414544,5414545,5414546,5414548,5414549,5414550,5414552,5414553,5414554,5414560,5414561,5414562,5414564,5414565,5414566,5414568,5414569,5414570,5414656,5414657,5414658,5414660,5414661,5414662,5414664,5414665,5414666,5414672,5414673,5414674,5414676,5414677,5414678,5414680,5414681,5414682,5414688,5414689,5414690,5414692,5414693,5414694,5414696,5414697,5414698,5414720,5414721,5414722,5414724,5414725,5414726,5414728,5414729,5414730,5414736,5414737,5414738,5414740,5414741,5414742,5414744,5414745,5414746,5414752,5414753,5414754,5414756,5414757,5414758,5414760,5414761,5414762,5414784,5414785,5414786,5414788,5414789,5414790,5414792,5414793,5414794,5414800,5414801,5414802,5414804,5414805,5414806,5414808,5414809,5414810,5414816,5414817,5414818,5414820,5414821,5414822,5414824,5414825,5414826],"Deepslate Tiles":[5412864],"Detector Rail":[5181952,5181953,5181954,5181955,5181956,5181957,5181960,5181961,5181962,5181963,5181964,5181965],"Diamond Block":[5182464],"Diamond Ore":[5182976],"Diorite":[5183488],"Diorite Slab":[5184000,5184001,5184002],"Diorite Stairs":[5184512,5184513,5184514,5184515,5184516,5184517,5184518,5184519],"Diorite Wall":[5185024,5185025,5185026,5185028,5185029,5185030,5185032,5185033,5185034,5185040,5185041,5185042,5185044,5185045,5185046,5185048,5185049,5185050,5185056,5185057,5185058,5185060,5185061,5185062,5185064,5185065,5185066,5185088,5185089,5185090,5185092,5185093,5185094,5185096,5185097,5185098,5185104,5185105,5185106,5185108,5185109,5185110,5185112,5185113,5185114,5185120,5185121,5185122,5185124,5185125,5185126,5185128,5185129,5185130,5185152,5185153,5185154,5185156,5185157,5185158,5185160,5185161,5185162,5185168,5185169,5185170,5185172,5185173,5185174,5185176,5185177,5185178,5185184,5185185,5185186,5185188,5185189,5185190,5185192,5185193,5185194,5185280,5185281,5185282,5185284,5185285,5185286,5185288,5185289,5185290,5185296,5185297,5185298,5185300,5185301,5185302,5185304,5185305,5185306,5185312,5185313,5185314,5185316,5185317,5185318,5185320,5185321,5185322,5185344,5185345,5185346,5185348,5185349,5185350,5185352,5185353,5185354,5185360,5185361,5185362,5185364,5185365,5185366,5185368,5185369,5185370,5185376,5185377,5185378,5185380,5185381,5185382,5185384,5185385,5185386,5185408,5185409,5185410,5185412,5185413,5185414,5185416,5185417,5185418,5185424,5185425,5185426,5185428,5185429,5185430,5185432,5185433,5185434,5185440,5185441,5185442,5185444,5185445,5185446,5185448,5185449,5185450],"Dirt":[5185536,5185537,5185538],"Double Tallgrass":[5186048,5186049],"Dragon Egg":[5186560],"Dried Kelp Block":[5187072],"Dubnium":[5202432],"Dyed Candle":[5458432,5458433,5458434,5458435,5458436,5458437,5458438,5458439,5458440,5458441,5458442,5458443,5458444,5458445,5458446,5458447,5458448,5458449,5458450,5458451,5458452,5458453,5458454,5458455,5458456,5458457,5458458,5458459,5458460,5458461,5458462,5458463,5458464,5458465,5458466,5458467,5458468,5458469,5458470,5458471,5458472,5458473,5458474,5458475,5458476,5458477,5458478,5458479,5458480,5458481,5458482,5458483,5458484,5458485,5458486,5458487,5458488,5458489,5458490,5458491,5458492,5458493,5458494,5458495,5458496,5458497,5458498,5458499,5458500,5458501,5458502,5458503,5458504,5458505,5458506,5458507,5458508,5458509,5458510,5458511,5458512,5458513,5458514,5458515,5458516,5458517,5458518,5458519,5458520,5458521,5458522,5458523,5458524,5458525,5458526,5458527,5458528,5458529,5458530,5458531,5458532,5458533,5458534,5458535,5458536,5458537,5458538,5458539,5458540,5458541,5458542,5458543,5458544,5458545,5458546,5458547,5458548,5458549,5458550,5458551,5458552,5458553,5458554,5458555,5458556,5458557,5458558,5458559],"Dyed Shulker Box":[5187584,5187585,5187586,5187587,5187588,5187589,5187590,5187591,5187592,5187593,5187594,5187595,5187596,5187597,5187598,5187599],"Dysprosium":[5202944],"Einsteinium":[5203456],"Element Constructor":[5199872,5199873,5199874,5199875],"Emerald Block":[5249536],"Emerald Ore":[5250048],"Enchanting Table":[5250560],"End Portal Frame":[5251072,5251073,5251074,5251075,5251076,5251077,5251078,5251079],"End Rod":[5251584,5251585,5251586,5251587,5251588,5251589],"End Stone":[5252096],"End Stone Brick Slab":[5252608,5252609,5252610],"End Stone Brick Stairs":[5253120,5253121,5253122,5253123,5253124,5253125,5253126,5253127],"End Stone Brick Wall":[5253632,5253633,5253634,5253636,5253637,5253638,5253640,5253641,5253642,5253648,5253649,5253650,5253652,5253653,5253654,5253656,5253657,5253658,5253664,5253665,5253666,5253668,5253669,5253670,5253672,5253673,5253674,5253696,5253697,5253698,5253700,5253701,5253702,5253704,5253705,5253706,5253712,5253713,5253714,5253716,5253717,5253718,5253720,5253721,5253722,5253728,5253729,5253730,5253732,5253733,5253734,5253736,5253737,5253738,5253760,5253761,5253762,5253764,5253765,5253766,5253768,5253769,5253770,5253776,5253777,5253778,5253780,5253781,5253782,5253784,5253785,5253786,5253792,5253793,5253794,5253796,5253797,5253798,5253800,5253801,5253802,5253888,5253889,5253890,5253892,5253893,5253894,5253896,5253897,5253898,5253904,5253905,5253906,5253908,5253909,5253910,5253912,5253913,5253914,5253920,5253921,5253922,5253924,5253925,5253926,5253928,5253929,5253930,5253952,5253953,5253954,5253956,5253957,5253958,5253960,5253961,5253962,5253968,5253969,5253970,5253972,5253973,5253974,5253976,5253977,5253978,5253984,5253985,5253986,5253988,5253989,5253990,5253992,5253993,5253994,5254016,5254017,5254018,5254020,5254021,5254022,5254024,5254025,5254026,5254032,5254033,5254034,5254036,5254037,5254038,5254040,5254041,5254042,5254048,5254049,5254050,5254052,5254053,5254054,5254056,5254057,5254058],"End Stone Bricks":[5254144],"Ender Chest":[5254656,5254657,5254658,5254659],"Erbium":[5203968],"Europium":[5204480],"Fake Wooden Slab":[5255168,5255169,5255170],"Farmland":[5255680,5255681,5255682,5255683,5255684,5255685,5255686,5255687],"Fermium":[5204992],"Fern":[5256192],"Fire Block":[5256704,5256705,5256706,5256707,5256708,5256709,5256710,5256711,5256712,5256713,5256714,5256715,5256716,5256717,5256718,5256719],"Flerovium":[5205504],"Fletching Table":[5257216],"Flower Pot":[5257728],"Flowering Azalea Leaves":[5471744,5471745,5471746,5471747],"Fluorine":[5206016],"Francium":[5206528],"Froglight":[5467648,5467649,5467650,5467652,5467653,5467654,5467656,5467657,5467658],"Frosted Ice":[5258240,5258241,5258242,5258243],"Furnace":[5258752,5258753,5258754,5258755,5258756,5258757,5258758,5258759],"Gadolinium":[5207040],"Gallium":[5207552],"Germanium":[5208064],"Gilded Blackstone":[5454848],"Glass":[5259264],"Glass Pane":[5259776],"Glazed Terracotta":[5395968,5395969,5395970,5395971,5395972,5395973,5395974,5395975,5395976,5395977,5395978,5395979,5395980,5395981,5395982,5395983,5395984,5395985,5395986,5395987,5395988,5395989,5395990,5395991,5395992,5395993,5395994,5395995,5395996,5395997,5395998,5395999,5396000,5396001,5396002,5396003,5396004,5396005,5396006,5396007,5396008,5396009,5396010,5396011,5396012,5396013,5396014,5396015,5396016,5396017,5396018,5396019,5396020,5396021,5396022,5396023,5396024,5396025,5396026,5396027,5396028,5396029,5396030,5396031],"Glow Item Frame":[5470208,5470209,5470210,5470211,5470212,5470213,5470216,5470217,5470218,5470219,5470220,5470221],"Glowing Obsidian":[5260288],"Glowstone":[5260800],"Gold":[5208576],"Gold Block":[5261312],"Gold Ore":[5261824],"Granite":[5262336],"Granite Slab":[5262848,5262849,5262850],"Granite Stairs":[5263360,5263361,5263362,5263363,5263364,5263365,5263366,5263367],"Granite Wall":[5263872,5263873,5263874,5263876,5263877,5263878,5263880,5263881,5263882,5263888,5263889,5263890,5263892,5263893,5263894,5263896,5263897,5263898,5263904,5263905,5263906,5263908,5263909,5263910,5263912,5263913,5263914,5263936,5263937,5263938,5263940,5263941,5263942,5263944,5263945,5263946,5263952,5263953,5263954,5263956,5263957,5263958,5263960,5263961,5263962,5263968,5263969,5263970,5263972,5263973,5263974,5263976,5263977,5263978,5264000,5264001,5264002,5264004,5264005,5264006,5264008,5264009,5264010,5264016,5264017,5264018,5264020,5264021,5264022,5264024,5264025,5264026,5264032,5264033,5264034,5264036,5264037,5264038,5264040,5264041,5264042,5264128,5264129,5264130,5264132,5264133,5264134,5264136,5264137,5264138,5264144,5264145,5264146,5264148,5264149,5264150,5264152,5264153,5264154,5264160,5264161,5264162,5264164,5264165,5264166,5264168,5264169,5264170,5264192,5264193,5264194,5264196,5264197,5264198,5264200,5264201,5264202,5264208,5264209,5264210,5264212,5264213,5264214,5264216,5264217,5264218,5264224,5264225,5264226,5264228,5264229,5264230,5264232,5264233,5264234,5264256,5264257,5264258,5264260,5264261,5264262,5264264,5264265,5264266,5264272,5264273,5264274,5264276,5264277,5264278,5264280,5264281,5264282,5264288,5264289,5264290,5264292,5264293,5264294,5264296,5264297,5264298],"Grass":[5264384],"Grass Path":[5264896],"Gravel":[5265408],"Green Torch":[5266945,5266946,5266947,5266948,5266949],"Hafnium":[5209088],"Hanging Roots":[5460480],"Hardened Clay":[5267456],"Hardened Glass":[5267968],"Hardened Glass Pane":[5268480],"Hassium":[5209600],"Hay Bale":[5268992,5268993,5268994],"Heat Block":[5156352],"Helium":[5210112],"Holmium":[5210624],"Honeycomb Block":[5445120],"Hopper":[5269504,5269506,5269507,5269508,5269509,5269512,5269514,5269515,5269516,5269517],"Hydrogen":[5211136],"Ice":[5270016],"Indium":[5211648],"Infested Chiseled Stone Brick":[5270528],"Infested Cobblestone":[5271040],"Infested Cracked Stone Brick":[5271552],"Infested Mossy Stone Brick":[5272064],"Infested Stone":[5272576],"Infested Stone Brick":[5273088],"Invisible Bedrock":[5274624],"Iodine":[5212160],"Iridium":[5212672],"Iron":[5213184],"Iron Bars":[5275648],"Iron Block":[5275136],"Iron Door":[5276160,5276161,5276162,5276163,5276164,5276165,5276166,5276167,5276168,5276169,5276170,5276171,5276172,5276173,5276174,5276175,5276176,5276177,5276178,5276179,5276180,5276181,5276182,5276183,5276184,5276185,5276186,5276187,5276188,5276189,5276190,5276191],"Iron Ore":[5276672],"Iron Trapdoor":[5277184,5277185,5277186,5277187,5277188,5277189,5277190,5277191,5277192,5277193,5277194,5277195,5277196,5277197,5277198,5277199],"Item Frame":[5277696,5277697,5277698,5277699,5277700,5277701,5277704,5277705,5277706,5277707,5277708,5277709],"Jack o'Lantern":[5294592,5294593,5294594,5294595],"Jukebox":[5278208],"Jungle Button":[5278720,5278721,5278722,5278723,5278724,5278725,5278728,5278729,5278730,5278731,5278732,5278733],"Jungle Door":[5279232,5279233,5279234,5279235,5279236,5279237,5279238,5279239,5279240,5279241,5279242,5279243,5279244,5279245,5279246,5279247,5279248,5279249,5279250,5279251,5279252,5279253,5279254,5279255,5279256,5279257,5279258,5279259,5279260,5279261,5279262,5279263],"Jungle Fence":[5279744],"Jungle Fence Gate":[5280256,5280257,5280258,5280259,5280260,5280261,5280262,5280263,5280264,5280265,5280266,5280267,5280268,5280269,5280270,5280271],"Jungle Leaves":[5280768,5280769,5280770,5280771],"Jungle Log":[5281280,5281281,5281282,5281283,5281284,5281285],"Jungle Planks":[5281792],"Jungle Pressure Plate":[5282304,5282305],"Jungle Sapling":[5282816,5282817],"Jungle Sign":[5283328,5283329,5283330,5283331,5283332,5283333,5283334,5283335,5283336,5283337,5283338,5283339,5283340,5283341,5283342,5283343],"Jungle Slab":[5283840,5283841,5283842],"Jungle Stairs":[5284352,5284353,5284354,5284355,5284356,5284357,5284358,5284359],"Jungle Trapdoor":[5284864,5284865,5284866,5284867,5284868,5284869,5284870,5284871,5284872,5284873,5284874,5284875,5284876,5284877,5284878,5284879],"Jungle Wall Sign":[5285376,5285377,5285378,5285379],"Jungle Wood":[5285888,5285889,5285890,5285891,5285892,5285893],"Krypton":[5213696],"Lab Table":[5286400,5286401,5286402,5286403],"Ladder":[5286912,5286913,5286914,5286915],"Lantern":[5287424,5287425],"Lanthanum":[5214208],"Lapis Lazuli Block":[5287936],"Lapis Lazuli Ore":[5288448],"Large Fern":[5288960,5288961],"Lava":[5289472,5289473,5289474,5289475,5289476,5289477,5289478,5289479,5289480,5289481,5289482,5289483,5289484,5289485,5289486,5289487,5289488,5289489,5289490,5289491,5289492,5289493,5289494,5289495,5289496,5289497,5289498,5289499,5289500,5289501,5289502,5289503],"Lava Cauldron":[5464064,5464065,5464066,5464067,5464068,5464069],"Lawrencium":[5214720],"Lead":[5215232],"Lectern":[5289984,5289985,5289986,5289987,5289988,5289989,5289990,5289991],"Legacy Stonecutter":[5290496],"Lever":[5291008,5291009,5291010,5291011,5291012,5291013,5291014,5291015,5291016,5291017,5291018,5291019,5291020,5291021,5291022,5291023],"Light Block":[5407232,5407233,5407234,5407235,5407236,5407237,5407238,5407239,5407240,5407241,5407242,5407243,5407244,5407245,5407246,5407247],"Lightning Rod":[5455360,5455361,5455362,5455363,5455364,5455365],"Lilac":[5292544,5292545],"Lily Pad":[5293568],"Lily of the Valley":[5293056],"Lithium":[5215744],"Livermorium":[5216256],"Loom":[5295104,5295105,5295106,5295107],"Lutetium":[5216768],"Magma Block":[5296128],"Magnesium":[5217280],"Manganese":[5217792],"Mangrove Button":[5433856,5433857,5433858,5433859,5433860,5433861,5433864,5433865,5433866,5433867,5433868,5433869],"Mangrove Door":[5436928,5436929,5436930,5436931,5436932,5436933,5436934,5436935,5436936,5436937,5436938,5436939,5436940,5436941,5436942,5436943,5436944,5436945,5436946,5436947,5436948,5436949,5436950,5436951,5436952,5436953,5436954,5436955,5436956,5436957,5436958,5436959],"Mangrove Fence":[5426176],"Mangrove Fence Gate":[5438464,5438465,5438466,5438467,5438468,5438469,5438470,5438471,5438472,5438473,5438474,5438475,5438476,5438477,5438478,5438479],"Mangrove Leaves":[5470720,5470721,5470722,5470723],"Mangrove Log":[5429248,5429249,5429250,5429251,5429252,5429253],"Mangrove Planks":[5424640],"Mangrove Pressure Plate":[5435392,5435393],"Mangrove Roots":[5466624],"Mangrove Sign":[5441536,5441537,5441538,5441539,5441540,5441541,5441542,5441543,5441544,5441545,5441546,5441547,5441548,5441549,5441550,5441551],"Mangrove Slab":[5427712,5427713,5427714],"Mangrove Stairs":[5440000,5440001,5440002,5440003,5440004,5440005,5440006,5440007],"Mangrove Trapdoor":[5432320,5432321,5432322,5432323,5432324,5432325,5432326,5432327,5432328,5432329,5432330,5432331,5432332,5432333,5432334,5432335],"Mangrove Wall Sign":[5443072,5443073,5443074,5443075],"Mangrove Wood":[5430784,5430785,5430786,5430787,5430788,5430789],"Material Reducer":[5296640,5296641,5296642,5296643],"Meitnerium":[5218304],"Melon Block":[5297152],"Melon Stem":[5297664,5297665,5297666,5297667,5297668,5297669,5297670,5297671],"Mendelevium":[5218816],"Mercury":[5219328],"Mob Head":[5298184,5298185,5298186,5298187,5298188,5298189,5298192,5298193,5298194,5298195,5298196,5298197,5298200,5298201,5298202,5298203,5298204,5298205,5298208,5298209,5298210,5298211,5298212,5298213,5298216,5298217,5298218,5298219,5298220,5298221],"Molybdenum":[5219840],"Monster Spawner":[5298688],"Moscovium":[5220352],"Mossy Cobblestone":[5299200],"Mossy Cobblestone Slab":[5299712,5299713,5299714],"Mossy Cobblestone Stairs":[5300224,5300225,5300226,5300227,5300228,5300229,5300230,5300231],"Mossy Cobblestone Wall":[5300736,5300737,5300738,5300740,5300741,5300742,5300744,5300745,5300746,5300752,5300753,5300754,5300756,5300757,5300758,5300760,5300761,5300762,5300768,5300769,5300770,5300772,5300773,5300774,5300776,5300777,5300778,5300800,5300801,5300802,5300804,5300805,5300806,5300808,5300809,5300810,5300816,5300817,5300818,5300820,5300821,5300822,5300824,5300825,5300826,5300832,5300833,5300834,5300836,5300837,5300838,5300840,5300841,5300842,5300864,5300865,5300866,5300868,5300869,5300870,5300872,5300873,5300874,5300880,5300881,5300882,5300884,5300885,5300886,5300888,5300889,5300890,5300896,5300897,5300898,5300900,5300901,5300902,5300904,5300905,5300906,5300992,5300993,5300994,5300996,5300997,5300998,5301000,5301001,5301002,5301008,5301009,5301010,5301012,5301013,5301014,5301016,5301017,5301018,5301024,5301025,5301026,5301028,5301029,5301030,5301032,5301033,5301034,5301056,5301057,5301058,5301060,5301061,5301062,5301064,5301065,5301066,5301072,5301073,5301074,5301076,5301077,5301078,5301080,5301081,5301082,5301088,5301089,5301090,5301092,5301093,5301094,5301096,5301097,5301098,5301120,5301121,5301122,5301124,5301125,5301126,5301128,5301129,5301130,5301136,5301137,5301138,5301140,5301141,5301142,5301144,5301145,5301146,5301152,5301153,5301154,5301156,5301157,5301158,5301160,5301161,5301162],"Mossy Stone Brick Slab":[5301248,5301249,5301250],"Mossy Stone Brick Stairs":[5301760,5301761,5301762,5301763,5301764,5301765,5301766,5301767],"Mossy Stone Brick Wall":[5302272,5302273,5302274,5302276,5302277,5302278,5302280,5302281,5302282,5302288,5302289,5302290,5302292,5302293,5302294,5302296,5302297,5302298,5302304,5302305,5302306,5302308,5302309,5302310,5302312,5302313,5302314,5302336,5302337,5302338,5302340,5302341,5302342,5302344,5302345,5302346,5302352,5302353,5302354,5302356,5302357,5302358,5302360,5302361,5302362,5302368,5302369,5302370,5302372,5302373,5302374,5302376,5302377,5302378,5302400,5302401,5302402,5302404,5302405,5302406,5302408,5302409,5302410,5302416,5302417,5302418,5302420,5302421,5302422,5302424,5302425,5302426,5302432,5302433,5302434,5302436,5302437,5302438,5302440,5302441,5302442,5302528,5302529,5302530,5302532,5302533,5302534,5302536,5302537,5302538,5302544,5302545,5302546,5302548,5302549,5302550,5302552,5302553,5302554,5302560,5302561,5302562,5302564,5302565,5302566,5302568,5302569,5302570,5302592,5302593,5302594,5302596,5302597,5302598,5302600,5302601,5302602,5302608,5302609,5302610,5302612,5302613,5302614,5302616,5302617,5302618,5302624,5302625,5302626,5302628,5302629,5302630,5302632,5302633,5302634,5302656,5302657,5302658,5302660,5302661,5302662,5302664,5302665,5302666,5302672,5302673,5302674,5302676,5302677,5302678,5302680,5302681,5302682,5302688,5302689,5302690,5302692,5302693,5302694,5302696,5302697,5302698],"Mossy Stone Bricks":[5302784],"Mud":[5450752],"Mud Brick Slab":[5451776,5451777,5451778],"Mud Brick Stairs":[5452288,5452289,5452290,5452291,5452292,5452293,5452294,5452295],"Mud Brick Wall":[5452800,5452801,5452802,5452804,5452805,5452806,5452808,5452809,5452810,5452816,5452817,5452818,5452820,5452821,5452822,5452824,5452825,5452826,5452832,5452833,5452834,5452836,5452837,5452838,5452840,5452841,5452842,5452864,5452865,5452866,5452868,5452869,5452870,5452872,5452873,5452874,5452880,5452881,5452882,5452884,5452885,5452886,5452888,5452889,5452890,5452896,5452897,5452898,5452900,5452901,5452902,5452904,5452905,5452906,5452928,5452929,5452930,5452932,5452933,5452934,5452936,5452937,5452938,5452944,5452945,5452946,5452948,5452949,5452950,5452952,5452953,5452954,5452960,5452961,5452962,5452964,5452965,5452966,5452968,5452969,5452970,5453056,5453057,5453058,5453060,5453061,5453062,5453064,5453065,5453066,5453072,5453073,5453074,5453076,5453077,5453078,5453080,5453081,5453082,5453088,5453089,5453090,5453092,5453093,5453094,5453096,5453097,5453098,5453120,5453121,5453122,5453124,5453125,5453126,5453128,5453129,5453130,5453136,5453137,5453138,5453140,5453141,5453142,5453144,5453145,5453146,5453152,5453153,5453154,5453156,5453157,5453158,5453160,5453161,5453162,5453184,5453185,5453186,5453188,5453189,5453190,5453192,5453193,5453194,5453200,5453201,5453202,5453204,5453205,5453206,5453208,5453209,5453210,5453216,5453217,5453218,5453220,5453221,5453222,5453224,5453225,5453226],"Mud Bricks":[5451264],"Muddy Mangrove Roots":[5467136,5467137,5467138],"Mushroom Stem":[5303296],"Mycelium":[5303808],"Neodymium":[5220864],"Neon":[5221376],"Neptunium":[5221888],"Nether Brick Fence":[5304320],"Nether Brick Slab":[5304832,5304833,5304834],"Nether Brick Stairs":[5305344,5305345,5305346,5305347,5305348,5305349,5305350,5305351],"Nether Brick Wall":[5305856,5305857,5305858,5305860,5305861,5305862,5305864,5305865,5305866,5305872,5305873,5305874,5305876,5305877,5305878,5305880,5305881,5305882,5305888,5305889,5305890,5305892,5305893,5305894,5305896,5305897,5305898,5305920,5305921,5305922,5305924,5305925,5305926,5305928,5305929,5305930,5305936,5305937,5305938,5305940,5305941,5305942,5305944,5305945,5305946,5305952,5305953,5305954,5305956,5305957,5305958,5305960,5305961,5305962,5305984,5305985,5305986,5305988,5305989,5305990,5305992,5305993,5305994,5306000,5306001,5306002,5306004,5306005,5306006,5306008,5306009,5306010,5306016,5306017,5306018,5306020,5306021,5306022,5306024,5306025,5306026,5306112,5306113,5306114,5306116,5306117,5306118,5306120,5306121,5306122,5306128,5306129,5306130,5306132,5306133,5306134,5306136,5306137,5306138,5306144,5306145,5306146,5306148,5306149,5306150,5306152,5306153,5306154,5306176,5306177,5306178,5306180,5306181,5306182,5306184,5306185,5306186,5306192,5306193,5306194,5306196,5306197,5306198,5306200,5306201,5306202,5306208,5306209,5306210,5306212,5306213,5306214,5306216,5306217,5306218,5306240,5306241,5306242,5306244,5306245,5306246,5306248,5306249,5306250,5306256,5306257,5306258,5306260,5306261,5306262,5306264,5306265,5306266,5306272,5306273,5306274,5306276,5306277,5306278,5306280,5306281,5306282],"Nether Bricks":[5306368],"Nether Gold Ore":[5450240],"Nether Portal":[5306880,5306881],"Nether Quartz Ore":[5307392],"Nether Reactor Core":[5307904],"Nether Wart":[5308416,5308417,5308418,5308419],"Nether Wart Block":[5308928],"Netherite Block":[5462016],"Netherrack":[5309440],"Nickel":[5222400],"Nihonium":[5222912],"Niobium":[5223424],"Nitrogen":[5223936],"Nobelium":[5224448],"Note Block":[5309952],"Oak Button":[5310464,5310465,5310466,5310467,5310468,5310469,5310472,5310473,5310474,5310475,5310476,5310477],"Oak Door":[5310976,5310977,5310978,5310979,5310980,5310981,5310982,5310983,5310984,5310985,5310986,5310987,5310988,5310989,5310990,5310991,5310992,5310993,5310994,5310995,5310996,5310997,5310998,5310999,5311000,5311001,5311002,5311003,5311004,5311005,5311006,5311007],"Oak Fence":[5311488],"Oak Fence Gate":[5312000,5312001,5312002,5312003,5312004,5312005,5312006,5312007,5312008,5312009,5312010,5312011,5312012,5312013,5312014,5312015],"Oak Leaves":[5312512,5312513,5312514,5312515],"Oak Log":[5313024,5313025,5313026,5313027,5313028,5313029],"Oak Planks":[5313536],"Oak Pressure Plate":[5314048,5314049],"Oak Sapling":[5314560,5314561],"Oak Sign":[5315072,5315073,5315074,5315075,5315076,5315077,5315078,5315079,5315080,5315081,5315082,5315083,5315084,5315085,5315086,5315087],"Oak Slab":[5315584,5315585,5315586],"Oak Stairs":[5316096,5316097,5316098,5316099,5316100,5316101,5316102,5316103],"Oak Trapdoor":[5316608,5316609,5316610,5316611,5316612,5316613,5316614,5316615,5316616,5316617,5316618,5316619,5316620,5316621,5316622,5316623],"Oak Wall Sign":[5317120,5317121,5317122,5317123],"Oak Wood":[5317632,5317633,5317634,5317635,5317636,5317637],"Obsidian":[5318144],"Oganesson":[5224960],"Orange Tulip":[5319168],"Osmium":[5225472],"Oxeye Daisy":[5319680],"Oxygen":[5225984],"Packed Ice":[5320192],"Packed Mud":[5453312],"Palladium":[5226496],"Peony":[5320704,5320705],"Phosphorus":[5227008],"Pink Tulip":[5321728],"Platinum":[5227520],"Plutonium":[5228032],"Podzol":[5322240],"Polished Andesite":[5322752],"Polished Andesite Slab":[5323264,5323265,5323266],"Polished Andesite Stairs":[5323776,5323777,5323778,5323779,5323780,5323781,5323782,5323783],"Polished Basalt":[5398016,5398017,5398018],"Polished Blackstone":[5401088],"Polished Blackstone Brick Slab":[5405184,5405185,5405186],"Polished Blackstone Brick Stairs":[5405696,5405697,5405698,5405699,5405700,5405701,5405702,5405703],"Polished Blackstone Brick Wall":[5406208,5406209,5406210,5406212,5406213,5406214,5406216,5406217,5406218,5406224,5406225,5406226,5406228,5406229,5406230,5406232,5406233,5406234,5406240,5406241,5406242,5406244,5406245,5406246,5406248,5406249,5406250,5406272,5406273,5406274,5406276,5406277,5406278,5406280,5406281,5406282,5406288,5406289,5406290,5406292,5406293,5406294,5406296,5406297,5406298,5406304,5406305,5406306,5406308,5406309,5406310,5406312,5406313,5406314,5406336,5406337,5406338,5406340,5406341,5406342,5406344,5406345,5406346,5406352,5406353,5406354,5406356,5406357,5406358,5406360,5406361,5406362,5406368,5406369,5406370,5406372,5406373,5406374,5406376,5406377,5406378,5406464,5406465,5406466,5406468,5406469,5406470,5406472,5406473,5406474,5406480,5406481,5406482,5406484,5406485,5406486,5406488,5406489,5406490,5406496,5406497,5406498,5406500,5406501,5406502,5406504,5406505,5406506,5406528,5406529,5406530,5406532,5406533,5406534,5406536,5406537,5406538,5406544,5406545,5406546,5406548,5406549,5406550,5406552,5406553,5406554,5406560,5406561,5406562,5406564,5406565,5406566,5406568,5406569,5406570,5406592,5406593,5406594,5406596,5406597,5406598,5406600,5406601,5406602,5406608,5406609,5406610,5406612,5406613,5406614,5406616,5406617,5406618,5406624,5406625,5406626,5406628,5406629,5406630,5406632,5406633,5406634],"Polished Blackstone Bricks":[5404672],"Polished Blackstone Button":[5401600,5401601,5401602,5401603,5401604,5401605,5401608,5401609,5401610,5401611,5401612,5401613],"Polished Blackstone Pressure Plate":[5402112,5402113],"Polished Blackstone Slab":[5402624,5402625,5402626],"Polished Blackstone Stairs":[5403136,5403137,5403138,5403139,5403140,5403141,5403142,5403143],"Polished Blackstone Wall":[5403648,5403649,5403650,5403652,5403653,5403654,5403656,5403657,5403658,5403664,5403665,5403666,5403668,5403669,5403670,5403672,5403673,5403674,5403680,5403681,5403682,5403684,5403685,5403686,5403688,5403689,5403690,5403712,5403713,5403714,5403716,5403717,5403718,5403720,5403721,5403722,5403728,5403729,5403730,5403732,5403733,5403734,5403736,5403737,5403738,5403744,5403745,5403746,5403748,5403749,5403750,5403752,5403753,5403754,5403776,5403777,5403778,5403780,5403781,5403782,5403784,5403785,5403786,5403792,5403793,5403794,5403796,5403797,5403798,5403800,5403801,5403802,5403808,5403809,5403810,5403812,5403813,5403814,5403816,5403817,5403818,5403904,5403905,5403906,5403908,5403909,5403910,5403912,5403913,5403914,5403920,5403921,5403922,5403924,5403925,5403926,5403928,5403929,5403930,5403936,5403937,5403938,5403940,5403941,5403942,5403944,5403945,5403946,5403968,5403969,5403970,5403972,5403973,5403974,5403976,5403977,5403978,5403984,5403985,5403986,5403988,5403989,5403990,5403992,5403993,5403994,5404000,5404001,5404002,5404004,5404005,5404006,5404008,5404009,5404010,5404032,5404033,5404034,5404036,5404037,5404038,5404040,5404041,5404042,5404048,5404049,5404050,5404052,5404053,5404054,5404056,5404057,5404058,5404064,5404065,5404066,5404068,5404069,5404070,5404072,5404073,5404074],"Polished Deepslate":[5417472],"Polished Deepslate Slab":[5417984,5417985,5417986],"Polished Deepslate Stairs":[5418496,5418497,5418498,5418499,5418500,5418501,5418502,5418503],"Polished Deepslate Wall":[5419008,5419009,5419010,5419012,5419013,5419014,5419016,5419017,5419018,5419024,5419025,5419026,5419028,5419029,5419030,5419032,5419033,5419034,5419040,5419041,5419042,5419044,5419045,5419046,5419048,5419049,5419050,5419072,5419073,5419074,5419076,5419077,5419078,5419080,5419081,5419082,5419088,5419089,5419090,5419092,5419093,5419094,5419096,5419097,5419098,5419104,5419105,5419106,5419108,5419109,5419110,5419112,5419113,5419114,5419136,5419137,5419138,5419140,5419141,5419142,5419144,5419145,5419146,5419152,5419153,5419154,5419156,5419157,5419158,5419160,5419161,5419162,5419168,5419169,5419170,5419172,5419173,5419174,5419176,5419177,5419178,5419264,5419265,5419266,5419268,5419269,5419270,5419272,5419273,5419274,5419280,5419281,5419282,5419284,5419285,5419286,5419288,5419289,5419290,5419296,5419297,5419298,5419300,5419301,5419302,5419304,5419305,5419306,5419328,5419329,5419330,5419332,5419333,5419334,5419336,5419337,5419338,5419344,5419345,5419346,5419348,5419349,5419350,5419352,5419353,5419354,5419360,5419361,5419362,5419364,5419365,5419366,5419368,5419369,5419370,5419392,5419393,5419394,5419396,5419397,5419398,5419400,5419401,5419402,5419408,5419409,5419410,5419412,5419413,5419414,5419416,5419417,5419418,5419424,5419425,5419426,5419428,5419429,5419430,5419432,5419433,5419434],"Polished Diorite":[5324288],"Polished Diorite Slab":[5324800,5324801,5324802],"Polished Diorite Stairs":[5325312,5325313,5325314,5325315,5325316,5325317,5325318,5325319],"Polished Granite":[5325824],"Polished Granite Slab":[5326336,5326337,5326338],"Polished Granite Stairs":[5326848,5326849,5326850,5326851,5326852,5326853,5326854,5326855],"Polonium":[5228544],"Poppy":[5327360],"Potassium":[5229056],"Potato Block":[5327872,5327873,5327874,5327875,5327876,5327877,5327878,5327879],"Potion Cauldron":[5464576,5464577,5464578,5464579,5464580,5464581],"Powered Rail":[5328384,5328385,5328386,5328387,5328388,5328389,5328392,5328393,5328394,5328395,5328396,5328397],"Praseodymium":[5229568],"Prismarine":[5328896],"Prismarine Bricks":[5329408],"Prismarine Bricks Slab":[5329920,5329921,5329922],"Prismarine Bricks Stairs":[5330432,5330433,5330434,5330435,5330436,5330437,5330438,5330439],"Prismarine Slab":[5330944,5330945,5330946],"Prismarine Stairs":[5331456,5331457,5331458,5331459,5331460,5331461,5331462,5331463],"Prismarine Wall":[5331968,5331969,5331970,5331972,5331973,5331974,5331976,5331977,5331978,5331984,5331985,5331986,5331988,5331989,5331990,5331992,5331993,5331994,5332000,5332001,5332002,5332004,5332005,5332006,5332008,5332009,5332010,5332032,5332033,5332034,5332036,5332037,5332038,5332040,5332041,5332042,5332048,5332049,5332050,5332052,5332053,5332054,5332056,5332057,5332058,5332064,5332065,5332066,5332068,5332069,5332070,5332072,5332073,5332074,5332096,5332097,5332098,5332100,5332101,5332102,5332104,5332105,5332106,5332112,5332113,5332114,5332116,5332117,5332118,5332120,5332121,5332122,5332128,5332129,5332130,5332132,5332133,5332134,5332136,5332137,5332138,5332224,5332225,5332226,5332228,5332229,5332230,5332232,5332233,5332234,5332240,5332241,5332242,5332244,5332245,5332246,5332248,5332249,5332250,5332256,5332257,5332258,5332260,5332261,5332262,5332264,5332265,5332266,5332288,5332289,5332290,5332292,5332293,5332294,5332296,5332297,5332298,5332304,5332305,5332306,5332308,5332309,5332310,5332312,5332313,5332314,5332320,5332321,5332322,5332324,5332325,5332326,5332328,5332329,5332330,5332352,5332353,5332354,5332356,5332357,5332358,5332360,5332361,5332362,5332368,5332369,5332370,5332372,5332373,5332374,5332376,5332377,5332378,5332384,5332385,5332386,5332388,5332389,5332390,5332392,5332393,5332394],"Promethium":[5230080],"Protactinium":[5230592],"Pumpkin":[5332480],"Pumpkin Stem":[5332992,5332993,5332994,5332995,5332996,5332997,5332998,5332999],"Purple Torch":[5334017,5334018,5334019,5334020,5334021],"Purpur Block":[5334528],"Purpur Pillar":[5335040,5335041,5335042],"Purpur Slab":[5335552,5335553,5335554],"Purpur Stairs":[5336064,5336065,5336066,5336067,5336068,5336069,5336070,5336071],"Quartz Block":[5336576],"Quartz Bricks":[5419520],"Quartz Pillar":[5337088,5337089,5337090],"Quartz Slab":[5337600,5337601,5337602],"Quartz Stairs":[5338112,5338113,5338114,5338115,5338116,5338117,5338118,5338119],"Radium":[5231104],"Radon":[5231616],"Rail":[5338624,5338625,5338626,5338627,5338628,5338629,5338630,5338631,5338632,5338633],"Raw Copper Block":[5407744],"Raw Gold Block":[5408256],"Raw Iron Block":[5408768],"Red Mushroom":[5339648],"Red Mushroom Block":[5340160,5340161,5340162,5340163,5340164,5340165,5340166,5340167,5340168,5340169,5340170],"Red Nether Brick Slab":[5340672,5340673,5340674],"Red Nether Brick Stairs":[5341184,5341185,5341186,5341187,5341188,5341189,5341190,5341191],"Red Nether Brick Wall":[5341696,5341697,5341698,5341700,5341701,5341702,5341704,5341705,5341706,5341712,5341713,5341714,5341716,5341717,5341718,5341720,5341721,5341722,5341728,5341729,5341730,5341732,5341733,5341734,5341736,5341737,5341738,5341760,5341761,5341762,5341764,5341765,5341766,5341768,5341769,5341770,5341776,5341777,5341778,5341780,5341781,5341782,5341784,5341785,5341786,5341792,5341793,5341794,5341796,5341797,5341798,5341800,5341801,5341802,5341824,5341825,5341826,5341828,5341829,5341830,5341832,5341833,5341834,5341840,5341841,5341842,5341844,5341845,5341846,5341848,5341849,5341850,5341856,5341857,5341858,5341860,5341861,5341862,5341864,5341865,5341866,5341952,5341953,5341954,5341956,5341957,5341958,5341960,5341961,5341962,5341968,5341969,5341970,5341972,5341973,5341974,5341976,5341977,5341978,5341984,5341985,5341986,5341988,5341989,5341990,5341992,5341993,5341994,5342016,5342017,5342018,5342020,5342021,5342022,5342024,5342025,5342026,5342032,5342033,5342034,5342036,5342037,5342038,5342040,5342041,5342042,5342048,5342049,5342050,5342052,5342053,5342054,5342056,5342057,5342058,5342080,5342081,5342082,5342084,5342085,5342086,5342088,5342089,5342090,5342096,5342097,5342098,5342100,5342101,5342102,5342104,5342105,5342106,5342112,5342113,5342114,5342116,5342117,5342118,5342120,5342121,5342122],"Red Nether Bricks":[5342208],"Red Sand":[5342720],"Red Sandstone":[5343232],"Red Sandstone Slab":[5343744,5343745,5343746],"Red Sandstone Stairs":[5344256,5344257,5344258,5344259,5344260,5344261,5344262,5344263],"Red Sandstone Wall":[5344768,5344769,5344770,5344772,5344773,5344774,5344776,5344777,5344778,5344784,5344785,5344786,5344788,5344789,5344790,5344792,5344793,5344794,5344800,5344801,5344802,5344804,5344805,5344806,5344808,5344809,5344810,5344832,5344833,5344834,5344836,5344837,5344838,5344840,5344841,5344842,5344848,5344849,5344850,5344852,5344853,5344854,5344856,5344857,5344858,5344864,5344865,5344866,5344868,5344869,5344870,5344872,5344873,5344874,5344896,5344897,5344898,5344900,5344901,5344902,5344904,5344905,5344906,5344912,5344913,5344914,5344916,5344917,5344918,5344920,5344921,5344922,5344928,5344929,5344930,5344932,5344933,5344934,5344936,5344937,5344938,5345024,5345025,5345026,5345028,5345029,5345030,5345032,5345033,5345034,5345040,5345041,5345042,5345044,5345045,5345046,5345048,5345049,5345050,5345056,5345057,5345058,5345060,5345061,5345062,5345064,5345065,5345066,5345088,5345089,5345090,5345092,5345093,5345094,5345096,5345097,5345098,5345104,5345105,5345106,5345108,5345109,5345110,5345112,5345113,5345114,5345120,5345121,5345122,5345124,5345125,5345126,5345128,5345129,5345130,5345152,5345153,5345154,5345156,5345157,5345158,5345160,5345161,5345162,5345168,5345169,5345170,5345172,5345173,5345174,5345176,5345177,5345178,5345184,5345185,5345186,5345188,5345189,5345190,5345192,5345193,5345194],"Red Torch":[5345281,5345282,5345283,5345284,5345285],"Red Tulip":[5345792],"Redstone":[5349376,5349377,5349378,5349379,5349380,5349381,5349382,5349383,5349384,5349385,5349386,5349387,5349388,5349389,5349390,5349391],"Redstone Block":[5346304],"Redstone Comparator":[5346816,5346817,5346818,5346819,5346820,5346821,5346822,5346823,5346824,5346825,5346826,5346827,5346828,5346829,5346830,5346831],"Redstone Lamp":[5347328,5347329],"Redstone Ore":[5347840,5347841],"Redstone Repeater":[5348352,5348353,5348354,5348355,5348356,5348357,5348358,5348359,5348360,5348361,5348362,5348363,5348364,5348365,5348366,5348367,5348368,5348369,5348370,5348371,5348372,5348373,5348374,5348375,5348376,5348377,5348378,5348379,5348380,5348381,5348382,5348383],"Redstone Torch":[5348865,5348866,5348867,5348868,5348869,5348873,5348874,5348875,5348876,5348877],"Reinforced Deepslate":[5472256],"Rhenium":[5232128],"Rhodium":[5232640],"Roentgenium":[5233152],"Rose Bush":[5350400,5350401],"Rubidium":[5233664],"Ruthenium":[5234176],"Rutherfordium":[5234688],"Samarium":[5235200],"Sand":[5350912],"Sandstone":[5351424],"Sandstone Slab":[5351936,5351937,5351938],"Sandstone Stairs":[5352448,5352449,5352450,5352451,5352452,5352453,5352454,5352455],"Sandstone Wall":[5352960,5352961,5352962,5352964,5352965,5352966,5352968,5352969,5352970,5352976,5352977,5352978,5352980,5352981,5352982,5352984,5352985,5352986,5352992,5352993,5352994,5352996,5352997,5352998,5353000,5353001,5353002,5353024,5353025,5353026,5353028,5353029,5353030,5353032,5353033,5353034,5353040,5353041,5353042,5353044,5353045,5353046,5353048,5353049,5353050,5353056,5353057,5353058,5353060,5353061,5353062,5353064,5353065,5353066,5353088,5353089,5353090,5353092,5353093,5353094,5353096,5353097,5353098,5353104,5353105,5353106,5353108,5353109,5353110,5353112,5353113,5353114,5353120,5353121,5353122,5353124,5353125,5353126,5353128,5353129,5353130,5353216,5353217,5353218,5353220,5353221,5353222,5353224,5353225,5353226,5353232,5353233,5353234,5353236,5353237,5353238,5353240,5353241,5353242,5353248,5353249,5353250,5353252,5353253,5353254,5353256,5353257,5353258,5353280,5353281,5353282,5353284,5353285,5353286,5353288,5353289,5353290,5353296,5353297,5353298,5353300,5353301,5353302,5353304,5353305,5353306,5353312,5353313,5353314,5353316,5353317,5353318,5353320,5353321,5353322,5353344,5353345,5353346,5353348,5353349,5353350,5353352,5353353,5353354,5353360,5353361,5353362,5353364,5353365,5353366,5353368,5353369,5353370,5353376,5353377,5353378,5353380,5353381,5353382,5353384,5353385,5353386],"Scandium":[5235712],"Sculk":[5469696],"Sea Lantern":[5353472],"Sea Pickle":[5353984,5353985,5353986,5353987,5353988,5353989,5353990,5353991],"Seaborgium":[5236224],"Selenium":[5236736],"Shroomlight":[5424128],"Shulker Box":[5354496],"Silicon":[5237248],"Silver":[5237760],"Slime Block":[5355008],"Smithing Table":[5461504],"Smoker":[5355520,5355521,5355522,5355523,5355524,5355525,5355526,5355527],"Smooth Basalt":[5398528],"Smooth Quartz Block":[5356032],"Smooth Quartz Slab":[5356544,5356545,5356546],"Smooth Quartz Stairs":[5357056,5357057,5357058,5357059,5357060,5357061,5357062,5357063],"Smooth Red Sandstone":[5357568],"Smooth Red Sandstone Slab":[5358080,5358081,5358082],"Smooth Red Sandstone Stairs":[5358592,5358593,5358594,5358595,5358596,5358597,5358598,5358599],"Smooth Sandstone":[5359104],"Smooth Sandstone Slab":[5359616,5359617,5359618],"Smooth Sandstone Stairs":[5360128,5360129,5360130,5360131,5360132,5360133,5360134,5360135],"Smooth Stone":[5360640],"Smooth Stone Slab":[5361152,5361153,5361154],"Snow Block":[5361664],"Snow Layer":[5362176,5362177,5362178,5362179,5362180,5362181,5362182,5362183],"Sodium":[5238272],"Soul Fire":[5423616],"Soul Lantern":[5422592,5422593],"Soul Sand":[5362688],"Soul Soil":[5423104],"Soul Torch":[5422081,5422082,5422083,5422084,5422085],"Sponge":[5363200,5363201],"Spore Blossom":[5462528],"Spruce Button":[5363712,5363713,5363714,5363715,5363716,5363717,5363720,5363721,5363722,5363723,5363724,5363725],"Spruce Door":[5364224,5364225,5364226,5364227,5364228,5364229,5364230,5364231,5364232,5364233,5364234,5364235,5364236,5364237,5364238,5364239,5364240,5364241,5364242,5364243,5364244,5364245,5364246,5364247,5364248,5364249,5364250,5364251,5364252,5364253,5364254,5364255],"Spruce Fence":[5364736],"Spruce Fence Gate":[5365248,5365249,5365250,5365251,5365252,5365253,5365254,5365255,5365256,5365257,5365258,5365259,5365260,5365261,5365262,5365263],"Spruce Leaves":[5365760,5365761,5365762,5365763],"Spruce Log":[5366272,5366273,5366274,5366275,5366276,5366277],"Spruce Planks":[5366784],"Spruce Pressure Plate":[5367296,5367297],"Spruce Sapling":[5367808,5367809],"Spruce Sign":[5368320,5368321,5368322,5368323,5368324,5368325,5368326,5368327,5368328,5368329,5368330,5368331,5368332,5368333,5368334,5368335],"Spruce Slab":[5368832,5368833,5368834],"Spruce Stairs":[5369344,5369345,5369346,5369347,5369348,5369349,5369350,5369351],"Spruce Trapdoor":[5369856,5369857,5369858,5369859,5369860,5369861,5369862,5369863,5369864,5369865,5369866,5369867,5369868,5369869,5369870,5369871],"Spruce Wall Sign":[5370368,5370369,5370370,5370371],"Spruce Wood":[5370880,5370881,5370882,5370883,5370884,5370885],"Stained Clay":[5371392,5371393,5371394,5371395,5371396,5371397,5371398,5371399,5371400,5371401,5371402,5371403,5371404,5371405,5371406,5371407],"Stained Glass":[5371904,5371905,5371906,5371907,5371908,5371909,5371910,5371911,5371912,5371913,5371914,5371915,5371916,5371917,5371918,5371919],"Stained Glass Pane":[5372416,5372417,5372418,5372419,5372420,5372421,5372422,5372423,5372424,5372425,5372426,5372427,5372428,5372429,5372430,5372431],"Stained Hardened Glass":[5372928,5372929,5372930,5372931,5372932,5372933,5372934,5372935,5372936,5372937,5372938,5372939,5372940,5372941,5372942,5372943],"Stained Hardened Glass Pane":[5373440,5373441,5373442,5373443,5373444,5373445,5373446,5373447,5373448,5373449,5373450,5373451,5373452,5373453,5373454,5373455],"Stone":[5373952],"Stone Brick Slab":[5374464,5374465,5374466],"Stone Brick Stairs":[5374976,5374977,5374978,5374979,5374980,5374981,5374982,5374983],"Stone Brick Wall":[5375488,5375489,5375490,5375492,5375493,5375494,5375496,5375497,5375498,5375504,5375505,5375506,5375508,5375509,5375510,5375512,5375513,5375514,5375520,5375521,5375522,5375524,5375525,5375526,5375528,5375529,5375530,5375552,5375553,5375554,5375556,5375557,5375558,5375560,5375561,5375562,5375568,5375569,5375570,5375572,5375573,5375574,5375576,5375577,5375578,5375584,5375585,5375586,5375588,5375589,5375590,5375592,5375593,5375594,5375616,5375617,5375618,5375620,5375621,5375622,5375624,5375625,5375626,5375632,5375633,5375634,5375636,5375637,5375638,5375640,5375641,5375642,5375648,5375649,5375650,5375652,5375653,5375654,5375656,5375657,5375658,5375744,5375745,5375746,5375748,5375749,5375750,5375752,5375753,5375754,5375760,5375761,5375762,5375764,5375765,5375766,5375768,5375769,5375770,5375776,5375777,5375778,5375780,5375781,5375782,5375784,5375785,5375786,5375808,5375809,5375810,5375812,5375813,5375814,5375816,5375817,5375818,5375824,5375825,5375826,5375828,5375829,5375830,5375832,5375833,5375834,5375840,5375841,5375842,5375844,5375845,5375846,5375848,5375849,5375850,5375872,5375873,5375874,5375876,5375877,5375878,5375880,5375881,5375882,5375888,5375889,5375890,5375892,5375893,5375894,5375896,5375897,5375898,5375904,5375905,5375906,5375908,5375909,5375910,5375912,5375913,5375914],"Stone Bricks":[5376000],"Stone Button":[5376512,5376513,5376514,5376515,5376516,5376517,5376520,5376521,5376522,5376523,5376524,5376525],"Stone Pressure Plate":[5377024,5377025],"Stone Slab":[5377536,5377537,5377538],"Stone Stairs":[5378048,5378049,5378050,5378051,5378052,5378053,5378054,5378055],"Stonecutter":[5378560,5378561,5378562,5378563],"Strontium":[5238784],"Sugarcane":[5385216,5385217,5385218,5385219,5385220,5385221,5385222,5385223,5385224,5385225,5385226,5385227,5385228,5385229,5385230,5385231],"Sulfur":[5239296],"Sunflower":[5385728,5385729],"Sweet Berry Bush":[5386240,5386241,5386242,5386243],"TNT":[5387264,5387265,5387266,5387267],"Tall Grass":[5386752],"Tantalum":[5239808],"Technetium":[5240320],"Tellurium":[5240832],"Tennessine":[5241344],"Terbium":[5241856],"Thallium":[5242368],"Thorium":[5242880],"Thulium":[5243392],"Tin":[5243904],"Tinted Glass":[5444608],"Titanium":[5244416],"Torch":[5387777,5387778,5387779,5387780,5387781],"Trapped Chest":[5388288,5388289,5388290,5388291],"Tripwire":[5388800,5388801,5388802,5388803,5388804,5388805,5388806,5388807,5388808,5388809,5388810,5388811,5388812,5388813,5388814,5388815],"Tripwire Hook":[5389312,5389313,5389314,5389315,5389316,5389317,5389318,5389319,5389320,5389321,5389322,5389323,5389324,5389325,5389326,5389327],"Tuff":[5421568],"Tungsten":[5244928],"Twisting Vines":[5468160,5468161,5468162,5468163,5468164,5468165,5468166,5468167,5468168,5468169,5468170,5468171,5468172,5468173,5468174,5468175,5468176,5468177,5468178,5468179,5468180,5468181,5468182,5468183,5468184,5468185],"Underwater Torch":[5389825,5389826,5389827,5389828,5389829],"Uranium":[5245440],"Vanadium":[5245952],"Vines":[5390336,5390337,5390338,5390339,5390340,5390341,5390342,5390343,5390344,5390345,5390346,5390347,5390348,5390349,5390350,5390351],"Wall Banner":[5390848,5390849,5390850,5390851,5390852,5390853,5390854,5390855,5390856,5390857,5390858,5390859,5390860,5390861,5390862,5390863,5390864,5390865,5390866,5390867,5390868,5390869,5390870,5390871,5390872,5390873,5390874,5390875,5390876,5390877,5390878,5390879,5390880,5390881,5390882,5390883,5390884,5390885,5390886,5390887,5390888,5390889,5390890,5390891,5390892,5390893,5390894,5390895,5390896,5390897,5390898,5390899,5390900,5390901,5390902,5390903,5390904,5390905,5390906,5390907,5390908,5390909,5390910,5390911],"Wall Coral Fan":[5391360,5391361,5391362,5391363,5391364,5391368,5391369,5391370,5391371,5391372,5391376,5391377,5391378,5391379,5391380,5391384,5391385,5391386,5391387,5391388,5391392,5391393,5391394,5391395,5391396,5391400,5391401,5391402,5391403,5391404,5391408,5391409,5391410,5391411,5391412,5391416,5391417,5391418,5391419,5391420],"Warped Button":[5434880,5434881,5434882,5434883,5434884,5434885,5434888,5434889,5434890,5434891,5434892,5434893],"Warped Door":[5437952,5437953,5437954,5437955,5437956,5437957,5437958,5437959,5437960,5437961,5437962,5437963,5437964,5437965,5437966,5437967,5437968,5437969,5437970,5437971,5437972,5437973,5437974,5437975,5437976,5437977,5437978,5437979,5437980,5437981,5437982,5437983],"Warped Fence":[5427200],"Warped Fence Gate":[5439488,5439489,5439490,5439491,5439492,5439493,5439494,5439495,5439496,5439497,5439498,5439499,5439500,5439501,5439502,5439503],"Warped Hyphae":[5431808,5431809,5431810,5431811,5431812,5431813],"Warped Planks":[5425664],"Warped Pressure Plate":[5436416,5436417],"Warped Sign":[5442560,5442561,5442562,5442563,5442564,5442565,5442566,5442567,5442568,5442569,5442570,5442571,5442572,5442573,5442574,5442575],"Warped Slab":[5428736,5428737,5428738],"Warped Stairs":[5441024,5441025,5441026,5441027,5441028,5441029,5441030,5441031],"Warped Stem":[5430272,5430273,5430274,5430275,5430276,5430277],"Warped Trapdoor":[5433344,5433345,5433346,5433347,5433348,5433349,5433350,5433351,5433352,5433353,5433354,5433355,5433356,5433357,5433358,5433359],"Warped Wall Sign":[5444096,5444097,5444098,5444099],"Warped Wart Block":[5453824],"Water":[5391872,5391873,5391874,5391875,5391876,5391877,5391878,5391879,5391880,5391881,5391882,5391883,5391884,5391885,5391886,5391887,5391888,5391889,5391890,5391891,5391892,5391893,5391894,5391895,5391896,5391897,5391898,5391899,5391900,5391901,5391902,5391903],"Water Cauldron":[5463552,5463553,5463554,5463555,5463556,5463557],"Weeping Vines":[5468672,5468673,5468674,5468675,5468676,5468677,5468678,5468679,5468680,5468681,5468682,5468683,5468684,5468685,5468686,5468687,5468688,5468689,5468690,5468691,5468692,5468693,5468694,5468695,5468696,5468697],"Weighted Pressure Plate Heavy":[5392384,5392385,5392386,5392387,5392388,5392389,5392390,5392391,5392392,5392393,5392394,5392395,5392396,5392397,5392398,5392399],"Weighted Pressure Plate Light":[5392896,5392897,5392898,5392899,5392900,5392901,5392902,5392903,5392904,5392905,5392906,5392907,5392908,5392909,5392910,5392911],"Wheat Block":[5393408,5393409,5393410,5393411,5393412,5393413,5393414,5393415],"White Tulip":[5394432],"Wither Rose":[5459968],"Wool":[5394944,5394945,5394946,5394947,5394948,5394949,5394950,5394951,5394952,5394953,5394954,5394955,5394956,5394957,5394958,5394959],"Xenon":[5246464],"Ytterbium":[5246976],"Yttrium":[5247488],"Zinc":[5248512],"Zirconium":[5249024],"ate!upd":[5274112],"reserved6":[5349888],"update!":[5273600]},"stateDataBits":9} \ No newline at end of file +{"knownStates":{"???":[2624000],"Acacia Button":[2560256,2560257,2560258,2560259,2560260,2560261,2560264,2560265,2560266,2560267,2560268,2560269],"Acacia Door":[2560512,2560513,2560514,2560515,2560516,2560517,2560518,2560519,2560520,2560521,2560522,2560523,2560524,2560525,2560526,2560527,2560528,2560529,2560530,2560531,2560532,2560533,2560534,2560535,2560536,2560537,2560538,2560539,2560540,2560541,2560542,2560543],"Acacia Fence":[2560768],"Acacia Fence Gate":[2561024,2561025,2561026,2561027,2561028,2561029,2561030,2561031,2561032,2561033,2561034,2561035,2561036,2561037,2561038,2561039],"Acacia Leaves":[2561280,2561281,2561282,2561283],"Acacia Log":[2561536,2561537,2561538,2561539,2561540,2561541],"Acacia Planks":[2561792],"Acacia Pressure Plate":[2562048,2562049],"Acacia Sapling":[2562304,2562305],"Acacia Sign":[2562560,2562561,2562562,2562563,2562564,2562565,2562566,2562567,2562568,2562569,2562570,2562571,2562572,2562573,2562574,2562575],"Acacia Slab":[2562816,2562817,2562818],"Acacia Stairs":[2563072,2563073,2563074,2563075,2563076,2563077,2563078,2563079],"Acacia Trapdoor":[2563328,2563329,2563330,2563331,2563332,2563333,2563334,2563335,2563336,2563337,2563338,2563339,2563340,2563341,2563342,2563343],"Acacia Wall Sign":[2563584,2563585,2563586,2563587],"Acacia Wood":[2563840,2563841,2563842,2563843,2563844,2563845],"Actinium":[2594048],"Activator Rail":[2564096,2564097,2564098,2564099,2564100,2564101,2564104,2564105,2564106,2564107,2564108,2564109],"Air":[2560000],"All Sided Mushroom Stem":[2564352],"Allium":[2564608],"Aluminum":[2594304],"Americium":[2594560],"Amethyst":[2698240],"Ancient Debris":[2698496],"Andesite":[2564864],"Andesite Slab":[2565120,2565121,2565122],"Andesite Stairs":[2565376,2565377,2565378,2565379,2565380,2565381,2565382,2565383],"Andesite Wall":[2565632,2565633,2565634,2565635,2565636,2565637,2565638,2565639,2565640,2565641,2565642,2565643,2565644,2565645,2565646,2565647,2565648,2565649,2565650,2565651,2565652,2565653,2565654,2565655,2565656,2565657,2565658,2565659,2565660,2565661,2565662,2565663,2565664,2565665,2565666,2565667,2565668,2565669,2565670,2565671,2565672,2565673,2565674,2565675,2565676,2565677,2565678,2565679,2565680,2565681,2565682,2565683,2565684,2565685,2565686,2565687,2565688,2565689,2565690,2565691,2565692,2565693,2565694,2565695,2565696,2565697,2565698,2565699,2565700,2565701,2565702,2565703,2565704,2565705,2565706,2565707,2565708,2565709,2565710,2565711,2565712,2565760,2565761,2565762,2565763,2565764,2565765,2565766,2565767,2565768,2565769,2565770,2565771,2565772,2565773,2565774,2565775,2565776,2565777,2565778,2565779,2565780,2565781,2565782,2565783,2565784,2565785,2565786,2565787,2565788,2565789,2565790,2565791,2565792,2565793,2565794,2565795,2565796,2565797,2565798,2565799,2565800,2565801,2565802,2565803,2565804,2565805,2565806,2565807,2565808,2565809,2565810,2565811,2565812,2565813,2565814,2565815,2565816,2565817,2565818,2565819,2565820,2565821,2565822,2565823,2565824,2565825,2565826,2565827,2565828,2565829,2565830,2565831,2565832,2565833,2565834,2565835,2565836,2565837,2565838,2565839,2565840],"Antimony":[2594816],"Anvil":[2565888,2565889,2565890,2565892,2565893,2565894,2565896,2565897,2565898,2565900,2565901,2565902],"Argon":[2595072],"Arsenic":[2595328],"Astatine":[2595584],"Azalea Leaves":[2735616,2735617,2735618,2735619],"Azure Bluet":[2566144],"Bamboo":[2566400,2566401,2566402,2566404,2566405,2566406,2566408,2566409,2566410,2566412,2566413,2566414],"Bamboo Sapling":[2566656,2566657],"Banner":[2566912,2566913,2566914,2566915,2566916,2566917,2566918,2566919,2566920,2566921,2566922,2566923,2566924,2566925,2566926,2566927,2566928,2566929,2566930,2566931,2566932,2566933,2566934,2566935,2566936,2566937,2566938,2566939,2566940,2566941,2566942,2566943,2566944,2566945,2566946,2566947,2566948,2566949,2566950,2566951,2566952,2566953,2566954,2566955,2566956,2566957,2566958,2566959,2566960,2566961,2566962,2566963,2566964,2566965,2566966,2566967,2566968,2566969,2566970,2566971,2566972,2566973,2566974,2566975,2566976,2566977,2566978,2566979,2566980,2566981,2566982,2566983,2566984,2566985,2566986,2566987,2566988,2566989,2566990,2566991,2566992,2566993,2566994,2566995,2566996,2566997,2566998,2566999,2567000,2567001,2567002,2567003,2567004,2567005,2567006,2567007,2567008,2567009,2567010,2567011,2567012,2567013,2567014,2567015,2567016,2567017,2567018,2567019,2567020,2567021,2567022,2567023,2567024,2567025,2567026,2567027,2567028,2567029,2567030,2567031,2567032,2567033,2567034,2567035,2567036,2567037,2567038,2567039,2567040,2567041,2567042,2567043,2567044,2567045,2567046,2567047,2567048,2567049,2567050,2567051,2567052,2567053,2567054,2567055,2567056,2567057,2567058,2567059,2567060,2567061,2567062,2567063,2567064,2567065,2567066,2567067,2567068,2567069,2567070,2567071,2567072,2567073,2567074,2567075,2567076,2567077,2567078,2567079,2567080,2567081,2567082,2567083,2567084,2567085,2567086,2567087,2567088,2567089,2567090,2567091,2567092,2567093,2567094,2567095,2567096,2567097,2567098,2567099,2567100,2567101,2567102,2567103,2567104,2567105,2567106,2567107,2567108,2567109,2567110,2567111,2567112,2567113,2567114,2567115,2567116,2567117,2567118,2567119,2567120,2567121,2567122,2567123,2567124,2567125,2567126,2567127,2567128,2567129,2567130,2567131,2567132,2567133,2567134,2567135,2567136,2567137,2567138,2567139,2567140,2567141,2567142,2567143,2567144,2567145,2567146,2567147,2567148,2567149,2567150,2567151,2567152,2567153,2567154,2567155,2567156,2567157,2567158,2567159,2567160,2567161,2567162,2567163,2567164,2567165,2567166,2567167],"Barium":[2595840],"Barrel":[2567168,2567169,2567170,2567171,2567172,2567173,2567176,2567177,2567178,2567179,2567180,2567181],"Barrier":[2567424],"Basalt":[2698752,2698753,2698754],"Beacon":[2567680],"Bed Block":[2567936,2567937,2567938,2567939,2567940,2567941,2567942,2567943,2567944,2567945,2567946,2567947,2567948,2567949,2567950,2567951,2567952,2567953,2567954,2567955,2567956,2567957,2567958,2567959,2567960,2567961,2567962,2567963,2567964,2567965,2567966,2567967,2567968,2567969,2567970,2567971,2567972,2567973,2567974,2567975,2567976,2567977,2567978,2567979,2567980,2567981,2567982,2567983,2567984,2567985,2567986,2567987,2567988,2567989,2567990,2567991,2567992,2567993,2567994,2567995,2567996,2567997,2567998,2567999,2568000,2568001,2568002,2568003,2568004,2568005,2568006,2568007,2568008,2568009,2568010,2568011,2568012,2568013,2568014,2568015,2568016,2568017,2568018,2568019,2568020,2568021,2568022,2568023,2568024,2568025,2568026,2568027,2568028,2568029,2568030,2568031,2568032,2568033,2568034,2568035,2568036,2568037,2568038,2568039,2568040,2568041,2568042,2568043,2568044,2568045,2568046,2568047,2568048,2568049,2568050,2568051,2568052,2568053,2568054,2568055,2568056,2568057,2568058,2568059,2568060,2568061,2568062,2568063,2568064,2568065,2568066,2568067,2568068,2568069,2568070,2568071,2568072,2568073,2568074,2568075,2568076,2568077,2568078,2568079,2568080,2568081,2568082,2568083,2568084,2568085,2568086,2568087,2568088,2568089,2568090,2568091,2568092,2568093,2568094,2568095,2568096,2568097,2568098,2568099,2568100,2568101,2568102,2568103,2568104,2568105,2568106,2568107,2568108,2568109,2568110,2568111,2568112,2568113,2568114,2568115,2568116,2568117,2568118,2568119,2568120,2568121,2568122,2568123,2568124,2568125,2568126,2568127,2568128,2568129,2568130,2568131,2568132,2568133,2568134,2568135,2568136,2568137,2568138,2568139,2568140,2568141,2568142,2568143,2568144,2568145,2568146,2568147,2568148,2568149,2568150,2568151,2568152,2568153,2568154,2568155,2568156,2568157,2568158,2568159,2568160,2568161,2568162,2568163,2568164,2568165,2568166,2568167,2568168,2568169,2568170,2568171,2568172,2568173,2568174,2568175,2568176,2568177,2568178,2568179,2568180,2568181,2568182,2568183,2568184,2568185,2568186,2568187,2568188,2568189,2568190,2568191],"Bedrock":[2568192,2568193],"Beetroot Block":[2568448,2568449,2568450,2568451,2568452,2568453,2568454,2568455],"Bell":[2568704,2568705,2568706,2568707,2568708,2568709,2568710,2568711,2568712,2568713,2568714,2568715,2568716,2568717,2568718,2568719],"Berkelium":[2596096],"Beryllium":[2596352],"Birch Button":[2568960,2568961,2568962,2568963,2568964,2568965,2568968,2568969,2568970,2568971,2568972,2568973],"Birch Door":[2569216,2569217,2569218,2569219,2569220,2569221,2569222,2569223,2569224,2569225,2569226,2569227,2569228,2569229,2569230,2569231,2569232,2569233,2569234,2569235,2569236,2569237,2569238,2569239,2569240,2569241,2569242,2569243,2569244,2569245,2569246,2569247],"Birch Fence":[2569472],"Birch Fence Gate":[2569728,2569729,2569730,2569731,2569732,2569733,2569734,2569735,2569736,2569737,2569738,2569739,2569740,2569741,2569742,2569743],"Birch Leaves":[2569984,2569985,2569986,2569987],"Birch Log":[2570240,2570241,2570242,2570243,2570244,2570245],"Birch Planks":[2570496],"Birch Pressure Plate":[2570752,2570753],"Birch Sapling":[2571008,2571009],"Birch Sign":[2571264,2571265,2571266,2571267,2571268,2571269,2571270,2571271,2571272,2571273,2571274,2571275,2571276,2571277,2571278,2571279],"Birch Slab":[2571520,2571521,2571522],"Birch Stairs":[2571776,2571777,2571778,2571779,2571780,2571781,2571782,2571783],"Birch Trapdoor":[2572032,2572033,2572034,2572035,2572036,2572037,2572038,2572039,2572040,2572041,2572042,2572043,2572044,2572045,2572046,2572047],"Birch Wall Sign":[2572288,2572289,2572290,2572291],"Birch Wood":[2572544,2572545,2572546,2572547,2572548,2572549],"Bismuth":[2596608],"Blackstone":[2699520],"Blackstone Slab":[2699776,2699777,2699778],"Blackstone Stairs":[2700032,2700033,2700034,2700035,2700036,2700037,2700038,2700039],"Blackstone Wall":[2700288,2700289,2700290,2700291,2700292,2700293,2700294,2700295,2700296,2700297,2700298,2700299,2700300,2700301,2700302,2700303,2700304,2700305,2700306,2700307,2700308,2700309,2700310,2700311,2700312,2700313,2700314,2700315,2700316,2700317,2700318,2700319,2700320,2700321,2700322,2700323,2700324,2700325,2700326,2700327,2700328,2700329,2700330,2700331,2700332,2700333,2700334,2700335,2700336,2700337,2700338,2700339,2700340,2700341,2700342,2700343,2700344,2700345,2700346,2700347,2700348,2700349,2700350,2700351,2700352,2700353,2700354,2700355,2700356,2700357,2700358,2700359,2700360,2700361,2700362,2700363,2700364,2700365,2700366,2700367,2700368,2700416,2700417,2700418,2700419,2700420,2700421,2700422,2700423,2700424,2700425,2700426,2700427,2700428,2700429,2700430,2700431,2700432,2700433,2700434,2700435,2700436,2700437,2700438,2700439,2700440,2700441,2700442,2700443,2700444,2700445,2700446,2700447,2700448,2700449,2700450,2700451,2700452,2700453,2700454,2700455,2700456,2700457,2700458,2700459,2700460,2700461,2700462,2700463,2700464,2700465,2700466,2700467,2700468,2700469,2700470,2700471,2700472,2700473,2700474,2700475,2700476,2700477,2700478,2700479,2700480,2700481,2700482,2700483,2700484,2700485,2700486,2700487,2700488,2700489,2700490,2700491,2700492,2700493,2700494,2700495,2700496],"Blast Furnace":[2573056,2573057,2573058,2573059,2573060,2573061,2573062,2573063],"Blue Ice":[2573568],"Blue Orchid":[2573824],"Blue Torch":[2574081,2574082,2574083,2574084,2574085],"Bohrium":[2596864],"Bone Block":[2574336,2574337,2574338],"Bookshelf":[2574592],"Boron":[2597120],"Brewing Stand":[2574848,2574849,2574850,2574851,2574852,2574853,2574854,2574855],"Brick Slab":[2575104,2575105,2575106],"Brick Stairs":[2575360,2575361,2575362,2575363,2575364,2575365,2575366,2575367],"Brick Wall":[2575616,2575617,2575618,2575619,2575620,2575621,2575622,2575623,2575624,2575625,2575626,2575627,2575628,2575629,2575630,2575631,2575632,2575633,2575634,2575635,2575636,2575637,2575638,2575639,2575640,2575641,2575642,2575643,2575644,2575645,2575646,2575647,2575648,2575649,2575650,2575651,2575652,2575653,2575654,2575655,2575656,2575657,2575658,2575659,2575660,2575661,2575662,2575663,2575664,2575665,2575666,2575667,2575668,2575669,2575670,2575671,2575672,2575673,2575674,2575675,2575676,2575677,2575678,2575679,2575680,2575681,2575682,2575683,2575684,2575685,2575686,2575687,2575688,2575689,2575690,2575691,2575692,2575693,2575694,2575695,2575696,2575744,2575745,2575746,2575747,2575748,2575749,2575750,2575751,2575752,2575753,2575754,2575755,2575756,2575757,2575758,2575759,2575760,2575761,2575762,2575763,2575764,2575765,2575766,2575767,2575768,2575769,2575770,2575771,2575772,2575773,2575774,2575775,2575776,2575777,2575778,2575779,2575780,2575781,2575782,2575783,2575784,2575785,2575786,2575787,2575788,2575789,2575790,2575791,2575792,2575793,2575794,2575795,2575796,2575797,2575798,2575799,2575800,2575801,2575802,2575803,2575804,2575805,2575806,2575807,2575808,2575809,2575810,2575811,2575812,2575813,2575814,2575815,2575816,2575817,2575818,2575819,2575820,2575821,2575822,2575823,2575824],"Bricks":[2575872],"Bromine":[2597376],"Brown Mushroom":[2576384],"Brown Mushroom Block":[2576640,2576641,2576642,2576643,2576644,2576645,2576646,2576647,2576648,2576649,2576650],"Cactus":[2576896,2576897,2576898,2576899,2576900,2576901,2576902,2576903,2576904,2576905,2576906,2576907,2576908,2576909,2576910,2576911],"Cadmium":[2597632],"Cake":[2577152,2577153,2577154,2577155,2577156,2577157,2577158],"Cake With Candle":[2729472,2729473],"Cake With Dyed Candle":[2729728,2729729,2729730,2729731,2729732,2729733,2729734,2729735,2729736,2729737,2729738,2729739,2729740,2729741,2729742,2729743,2729744,2729745,2729746,2729747,2729748,2729749,2729750,2729751,2729752,2729753,2729754,2729755,2729756,2729757,2729758,2729759],"Calcite":[2704640],"Calcium":[2597888],"Californium":[2598144],"Candle":[2728960,2728961,2728962,2728963,2728964,2728965,2728966,2728967],"Carbon":[2598400],"Carpet":[2577408,2577409,2577410,2577411,2577412,2577413,2577414,2577415,2577416,2577417,2577418,2577419,2577420,2577421,2577422,2577423],"Carrot Block":[2577664,2577665,2577666,2577667,2577668,2577669,2577670,2577671],"Cartography Table":[2730496],"Carved Pumpkin":[2577920,2577921,2577922,2577923],"Cauldron":[2731520],"Cerium":[2598656],"Cesium":[2598912],"Chain":[2734592,2734593,2734594],"Chest":[2578432,2578433,2578434,2578435],"Chiseled Deepslate":[2710016],"Chiseled Nether Bricks":[2710272],"Chiseled Polished Blackstone":[2702080],"Chiseled Quartz Block":[2578688,2578689,2578690],"Chiseled Red Sandstone":[2578944],"Chiseled Sandstone":[2579200],"Chiseled Stone Bricks":[2579456],"Chlorine":[2599168],"Chorus Flower":[2732800,2732801,2732802,2732803,2732804,2732805],"Chorus Plant":[2733056],"Chromium":[2599424],"Clay Block":[2579712],"Coal Block":[2579968],"Coal Ore":[2580224],"Cobalt":[2599680],"Cobbled Deepslate":[2707712],"Cobbled Deepslate Slab":[2707968,2707969,2707970],"Cobbled Deepslate Stairs":[2708224,2708225,2708226,2708227,2708228,2708229,2708230,2708231],"Cobbled Deepslate Wall":[2708480,2708481,2708482,2708483,2708484,2708485,2708486,2708487,2708488,2708489,2708490,2708491,2708492,2708493,2708494,2708495,2708496,2708497,2708498,2708499,2708500,2708501,2708502,2708503,2708504,2708505,2708506,2708507,2708508,2708509,2708510,2708511,2708512,2708513,2708514,2708515,2708516,2708517,2708518,2708519,2708520,2708521,2708522,2708523,2708524,2708525,2708526,2708527,2708528,2708529,2708530,2708531,2708532,2708533,2708534,2708535,2708536,2708537,2708538,2708539,2708540,2708541,2708542,2708543,2708544,2708545,2708546,2708547,2708548,2708549,2708550,2708551,2708552,2708553,2708554,2708555,2708556,2708557,2708558,2708559,2708560,2708608,2708609,2708610,2708611,2708612,2708613,2708614,2708615,2708616,2708617,2708618,2708619,2708620,2708621,2708622,2708623,2708624,2708625,2708626,2708627,2708628,2708629,2708630,2708631,2708632,2708633,2708634,2708635,2708636,2708637,2708638,2708639,2708640,2708641,2708642,2708643,2708644,2708645,2708646,2708647,2708648,2708649,2708650,2708651,2708652,2708653,2708654,2708655,2708656,2708657,2708658,2708659,2708660,2708661,2708662,2708663,2708664,2708665,2708666,2708667,2708668,2708669,2708670,2708671,2708672,2708673,2708674,2708675,2708676,2708677,2708678,2708679,2708680,2708681,2708682,2708683,2708684,2708685,2708686,2708687,2708688],"Cobblestone":[2580480],"Cobblestone Slab":[2580736,2580737,2580738],"Cobblestone Stairs":[2580992,2580993,2580994,2580995,2580996,2580997,2580998,2580999],"Cobblestone Wall":[2581248,2581249,2581250,2581251,2581252,2581253,2581254,2581255,2581256,2581257,2581258,2581259,2581260,2581261,2581262,2581263,2581264,2581265,2581266,2581267,2581268,2581269,2581270,2581271,2581272,2581273,2581274,2581275,2581276,2581277,2581278,2581279,2581280,2581281,2581282,2581283,2581284,2581285,2581286,2581287,2581288,2581289,2581290,2581291,2581292,2581293,2581294,2581295,2581296,2581297,2581298,2581299,2581300,2581301,2581302,2581303,2581304,2581305,2581306,2581307,2581308,2581309,2581310,2581311,2581312,2581313,2581314,2581315,2581316,2581317,2581318,2581319,2581320,2581321,2581322,2581323,2581324,2581325,2581326,2581327,2581328,2581376,2581377,2581378,2581379,2581380,2581381,2581382,2581383,2581384,2581385,2581386,2581387,2581388,2581389,2581390,2581391,2581392,2581393,2581394,2581395,2581396,2581397,2581398,2581399,2581400,2581401,2581402,2581403,2581404,2581405,2581406,2581407,2581408,2581409,2581410,2581411,2581412,2581413,2581414,2581415,2581416,2581417,2581418,2581419,2581420,2581421,2581422,2581423,2581424,2581425,2581426,2581427,2581428,2581429,2581430,2581431,2581432,2581433,2581434,2581435,2581436,2581437,2581438,2581439,2581440,2581441,2581442,2581443,2581444,2581445,2581446,2581447,2581448,2581449,2581450,2581451,2581452,2581453,2581454,2581455,2581456],"Cobweb":[2581504],"Cocoa Block":[2581760,2581761,2581762,2581763,2581764,2581765,2581766,2581767,2581768,2581769,2581770,2581771],"Compound Creator":[2582016,2582017,2582018,2582019],"Concrete":[2582272,2582273,2582274,2582275,2582276,2582277,2582278,2582279,2582280,2582281,2582282,2582283,2582284,2582285,2582286,2582287],"Concrete Powder":[2582528,2582529,2582530,2582531,2582532,2582533,2582534,2582535,2582536,2582537,2582538,2582539,2582540,2582541,2582542,2582543],"Copernicium":[2600192],"Copper":[2600448],"Copper Block":[2727936,2727937,2727938,2727939,2727940,2727941,2727942,2727943],"Copper Ore":[2724864],"Coral":[2582784,2582785,2582786,2582787,2582788,2582792,2582793,2582794,2582795,2582796],"Coral Block":[2583040,2583041,2583042,2583043,2583044,2583048,2583049,2583050,2583051,2583052],"Coral Fan":[2583296,2583297,2583298,2583299,2583300,2583304,2583305,2583306,2583307,2583308,2583312,2583313,2583314,2583315,2583316,2583320,2583321,2583322,2583323,2583324],"Cornflower":[2583552],"Cracked Deepslate Bricks":[2706176],"Cracked Deepslate Tiles":[2707456],"Cracked Nether Bricks":[2710528],"Cracked Polished Blackstone Bricks":[2703360],"Cracked Stone Bricks":[2583808],"Crafting Table":[2584064],"Crimson Button":[2717184,2717185,2717186,2717187,2717188,2717189,2717192,2717193,2717194,2717195,2717196,2717197],"Crimson Door":[2718720,2718721,2718722,2718723,2718724,2718725,2718726,2718727,2718728,2718729,2718730,2718731,2718732,2718733,2718734,2718735,2718736,2718737,2718738,2718739,2718740,2718741,2718742,2718743,2718744,2718745,2718746,2718747,2718748,2718749,2718750,2718751],"Crimson Fence":[2713344],"Crimson Fence Gate":[2719488,2719489,2719490,2719491,2719492,2719493,2719494,2719495,2719496,2719497,2719498,2719499,2719500,2719501,2719502,2719503],"Crimson Hyphae":[2715648,2715649,2715650,2715651,2715652,2715653],"Crimson Planks":[2712576],"Crimson Pressure Plate":[2717952,2717953],"Crimson Sign":[2721024,2721025,2721026,2721027,2721028,2721029,2721030,2721031,2721032,2721033,2721034,2721035,2721036,2721037,2721038,2721039],"Crimson Slab":[2714112,2714113,2714114],"Crimson Stairs":[2720256,2720257,2720258,2720259,2720260,2720261,2720262,2720263],"Crimson Stem":[2714880,2714881,2714882,2714883,2714884,2714885],"Crimson Trapdoor":[2716416,2716417,2716418,2716419,2716420,2716421,2716422,2716423,2716424,2716425,2716426,2716427,2716428,2716429,2716430,2716431],"Crimson Wall Sign":[2721792,2721793,2721794,2721795],"Crying Obsidian":[2727168],"Curium":[2600704],"Cut Copper Block":[2728192,2728193,2728194,2728195,2728196,2728197,2728198,2728199],"Cut Copper Slab Slab":[2728448,2728449,2728450,2728451,2728452,2728453,2728454,2728455,2728456,2728457,2728458,2728459,2728460,2728461,2728462,2728463,2728464,2728465,2728466,2728467,2728468,2728469,2728470,2728471],"Cut Copper Stairs":[2728704,2728705,2728706,2728707,2728708,2728709,2728710,2728711,2728712,2728713,2728714,2728715,2728716,2728717,2728718,2728719,2728720,2728721,2728722,2728723,2728724,2728725,2728726,2728727,2728728,2728729,2728730,2728731,2728732,2728733,2728734,2728735,2728736,2728737,2728738,2728739,2728740,2728741,2728742,2728743,2728744,2728745,2728746,2728747,2728748,2728749,2728750,2728751,2728752,2728753,2728754,2728755,2728756,2728757,2728758,2728759,2728760,2728761,2728762,2728763,2728764,2728765,2728766,2728767],"Cut Red Sandstone":[2584320],"Cut Red Sandstone Slab":[2584576,2584577,2584578],"Cut Sandstone":[2584832],"Cut Sandstone Slab":[2585088,2585089,2585090],"Dandelion":[2585600],"Dark Oak Button":[2585856,2585857,2585858,2585859,2585860,2585861,2585864,2585865,2585866,2585867,2585868,2585869],"Dark Oak Door":[2586112,2586113,2586114,2586115,2586116,2586117,2586118,2586119,2586120,2586121,2586122,2586123,2586124,2586125,2586126,2586127,2586128,2586129,2586130,2586131,2586132,2586133,2586134,2586135,2586136,2586137,2586138,2586139,2586140,2586141,2586142,2586143],"Dark Oak Fence":[2586368],"Dark Oak Fence Gate":[2586624,2586625,2586626,2586627,2586628,2586629,2586630,2586631,2586632,2586633,2586634,2586635,2586636,2586637,2586638,2586639],"Dark Oak Leaves":[2586880,2586881,2586882,2586883],"Dark Oak Log":[2587136,2587137,2587138,2587139,2587140,2587141],"Dark Oak Planks":[2587392],"Dark Oak Pressure Plate":[2587648,2587649],"Dark Oak Sapling":[2587904,2587905],"Dark Oak Sign":[2588160,2588161,2588162,2588163,2588164,2588165,2588166,2588167,2588168,2588169,2588170,2588171,2588172,2588173,2588174,2588175],"Dark Oak Slab":[2588416,2588417,2588418],"Dark Oak Stairs":[2588672,2588673,2588674,2588675,2588676,2588677,2588678,2588679],"Dark Oak Trapdoor":[2588928,2588929,2588930,2588931,2588932,2588933,2588934,2588935,2588936,2588937,2588938,2588939,2588940,2588941,2588942,2588943],"Dark Oak Wall Sign":[2589184,2589185,2589186,2589187],"Dark Oak Wood":[2589440,2589441,2589442,2589443,2589444,2589445],"Dark Prismarine":[2589696],"Dark Prismarine Slab":[2589952,2589953,2589954],"Dark Prismarine Stairs":[2590208,2590209,2590210,2590211,2590212,2590213,2590214,2590215],"Darmstadtium":[2600960],"Daylight Sensor":[2590464,2590465,2590466,2590467,2590468,2590469,2590470,2590471,2590472,2590473,2590474,2590475,2590476,2590477,2590478,2590479,2590480,2590481,2590482,2590483,2590484,2590485,2590486,2590487,2590488,2590489,2590490,2590491,2590492,2590493,2590494,2590495],"Dead Bush":[2590720],"Deepslate":[2704896,2704897,2704898],"Deepslate Brick Slab":[2705408,2705409,2705410],"Deepslate Brick Stairs":[2705664,2705665,2705666,2705667,2705668,2705669,2705670,2705671],"Deepslate Brick Wall":[2705920,2705921,2705922,2705923,2705924,2705925,2705926,2705927,2705928,2705929,2705930,2705931,2705932,2705933,2705934,2705935,2705936,2705937,2705938,2705939,2705940,2705941,2705942,2705943,2705944,2705945,2705946,2705947,2705948,2705949,2705950,2705951,2705952,2705953,2705954,2705955,2705956,2705957,2705958,2705959,2705960,2705961,2705962,2705963,2705964,2705965,2705966,2705967,2705968,2705969,2705970,2705971,2705972,2705973,2705974,2705975,2705976,2705977,2705978,2705979,2705980,2705981,2705982,2705983,2705984,2705985,2705986,2705987,2705988,2705989,2705990,2705991,2705992,2705993,2705994,2705995,2705996,2705997,2705998,2705999,2706000,2706048,2706049,2706050,2706051,2706052,2706053,2706054,2706055,2706056,2706057,2706058,2706059,2706060,2706061,2706062,2706063,2706064,2706065,2706066,2706067,2706068,2706069,2706070,2706071,2706072,2706073,2706074,2706075,2706076,2706077,2706078,2706079,2706080,2706081,2706082,2706083,2706084,2706085,2706086,2706087,2706088,2706089,2706090,2706091,2706092,2706093,2706094,2706095,2706096,2706097,2706098,2706099,2706100,2706101,2706102,2706103,2706104,2706105,2706106,2706107,2706108,2706109,2706110,2706111,2706112,2706113,2706114,2706115,2706116,2706117,2706118,2706119,2706120,2706121,2706122,2706123,2706124,2706125,2706126,2706127,2706128],"Deepslate Bricks":[2705152],"Deepslate Coal Ore":[2722816],"Deepslate Copper Ore":[2724608],"Deepslate Diamond Ore":[2723072],"Deepslate Emerald Ore":[2723328],"Deepslate Gold Ore":[2724352],"Deepslate Iron Ore":[2724096],"Deepslate Lapis Lazuli Ore":[2723584],"Deepslate Redstone Ore":[2723840,2723841],"Deepslate Tile Slab":[2706688,2706689,2706690],"Deepslate Tile Stairs":[2706944,2706945,2706946,2706947,2706948,2706949,2706950,2706951],"Deepslate Tile Wall":[2707200,2707201,2707202,2707203,2707204,2707205,2707206,2707207,2707208,2707209,2707210,2707211,2707212,2707213,2707214,2707215,2707216,2707217,2707218,2707219,2707220,2707221,2707222,2707223,2707224,2707225,2707226,2707227,2707228,2707229,2707230,2707231,2707232,2707233,2707234,2707235,2707236,2707237,2707238,2707239,2707240,2707241,2707242,2707243,2707244,2707245,2707246,2707247,2707248,2707249,2707250,2707251,2707252,2707253,2707254,2707255,2707256,2707257,2707258,2707259,2707260,2707261,2707262,2707263,2707264,2707265,2707266,2707267,2707268,2707269,2707270,2707271,2707272,2707273,2707274,2707275,2707276,2707277,2707278,2707279,2707280,2707328,2707329,2707330,2707331,2707332,2707333,2707334,2707335,2707336,2707337,2707338,2707339,2707340,2707341,2707342,2707343,2707344,2707345,2707346,2707347,2707348,2707349,2707350,2707351,2707352,2707353,2707354,2707355,2707356,2707357,2707358,2707359,2707360,2707361,2707362,2707363,2707364,2707365,2707366,2707367,2707368,2707369,2707370,2707371,2707372,2707373,2707374,2707375,2707376,2707377,2707378,2707379,2707380,2707381,2707382,2707383,2707384,2707385,2707386,2707387,2707388,2707389,2707390,2707391,2707392,2707393,2707394,2707395,2707396,2707397,2707398,2707399,2707400,2707401,2707402,2707403,2707404,2707405,2707406,2707407,2707408],"Deepslate Tiles":[2706432],"Detector Rail":[2590976,2590977,2590978,2590979,2590980,2590981,2590984,2590985,2590986,2590987,2590988,2590989],"Diamond Block":[2591232],"Diamond Ore":[2591488],"Diorite":[2591744],"Diorite Slab":[2592000,2592001,2592002],"Diorite Stairs":[2592256,2592257,2592258,2592259,2592260,2592261,2592262,2592263],"Diorite Wall":[2592512,2592513,2592514,2592515,2592516,2592517,2592518,2592519,2592520,2592521,2592522,2592523,2592524,2592525,2592526,2592527,2592528,2592529,2592530,2592531,2592532,2592533,2592534,2592535,2592536,2592537,2592538,2592539,2592540,2592541,2592542,2592543,2592544,2592545,2592546,2592547,2592548,2592549,2592550,2592551,2592552,2592553,2592554,2592555,2592556,2592557,2592558,2592559,2592560,2592561,2592562,2592563,2592564,2592565,2592566,2592567,2592568,2592569,2592570,2592571,2592572,2592573,2592574,2592575,2592576,2592577,2592578,2592579,2592580,2592581,2592582,2592583,2592584,2592585,2592586,2592587,2592588,2592589,2592590,2592591,2592592,2592640,2592641,2592642,2592643,2592644,2592645,2592646,2592647,2592648,2592649,2592650,2592651,2592652,2592653,2592654,2592655,2592656,2592657,2592658,2592659,2592660,2592661,2592662,2592663,2592664,2592665,2592666,2592667,2592668,2592669,2592670,2592671,2592672,2592673,2592674,2592675,2592676,2592677,2592678,2592679,2592680,2592681,2592682,2592683,2592684,2592685,2592686,2592687,2592688,2592689,2592690,2592691,2592692,2592693,2592694,2592695,2592696,2592697,2592698,2592699,2592700,2592701,2592702,2592703,2592704,2592705,2592706,2592707,2592708,2592709,2592710,2592711,2592712,2592713,2592714,2592715,2592716,2592717,2592718,2592719,2592720],"Dirt":[2592768,2592769,2592770],"Double Tallgrass":[2593024,2593025],"Dragon Egg":[2593280],"Dried Kelp Block":[2593536],"Dubnium":[2601216],"Dyed Candle":[2729216,2729217,2729218,2729219,2729220,2729221,2729222,2729223,2729224,2729225,2729226,2729227,2729228,2729229,2729230,2729231,2729232,2729233,2729234,2729235,2729236,2729237,2729238,2729239,2729240,2729241,2729242,2729243,2729244,2729245,2729246,2729247,2729248,2729249,2729250,2729251,2729252,2729253,2729254,2729255,2729256,2729257,2729258,2729259,2729260,2729261,2729262,2729263,2729264,2729265,2729266,2729267,2729268,2729269,2729270,2729271,2729272,2729273,2729274,2729275,2729276,2729277,2729278,2729279,2729280,2729281,2729282,2729283,2729284,2729285,2729286,2729287,2729288,2729289,2729290,2729291,2729292,2729293,2729294,2729295,2729296,2729297,2729298,2729299,2729300,2729301,2729302,2729303,2729304,2729305,2729306,2729307,2729308,2729309,2729310,2729311,2729312,2729313,2729314,2729315,2729316,2729317,2729318,2729319,2729320,2729321,2729322,2729323,2729324,2729325,2729326,2729327,2729328,2729329,2729330,2729331,2729332,2729333,2729334,2729335,2729336,2729337,2729338,2729339,2729340,2729341,2729342,2729343],"Dyed Shulker Box":[2593792,2593793,2593794,2593795,2593796,2593797,2593798,2593799,2593800,2593801,2593802,2593803,2593804,2593805,2593806,2593807],"Dysprosium":[2601472],"Einsteinium":[2601728],"Element Constructor":[2599936,2599937,2599938,2599939],"Emerald Block":[2624768],"Emerald Ore":[2625024],"Enchanting Table":[2625280],"End Portal Frame":[2625536,2625537,2625538,2625539,2625540,2625541,2625542,2625543],"End Rod":[2625792,2625793,2625794,2625795,2625796,2625797],"End Stone":[2626048],"End Stone Brick Slab":[2626304,2626305,2626306],"End Stone Brick Stairs":[2626560,2626561,2626562,2626563,2626564,2626565,2626566,2626567],"End Stone Brick Wall":[2626816,2626817,2626818,2626819,2626820,2626821,2626822,2626823,2626824,2626825,2626826,2626827,2626828,2626829,2626830,2626831,2626832,2626833,2626834,2626835,2626836,2626837,2626838,2626839,2626840,2626841,2626842,2626843,2626844,2626845,2626846,2626847,2626848,2626849,2626850,2626851,2626852,2626853,2626854,2626855,2626856,2626857,2626858,2626859,2626860,2626861,2626862,2626863,2626864,2626865,2626866,2626867,2626868,2626869,2626870,2626871,2626872,2626873,2626874,2626875,2626876,2626877,2626878,2626879,2626880,2626881,2626882,2626883,2626884,2626885,2626886,2626887,2626888,2626889,2626890,2626891,2626892,2626893,2626894,2626895,2626896,2626944,2626945,2626946,2626947,2626948,2626949,2626950,2626951,2626952,2626953,2626954,2626955,2626956,2626957,2626958,2626959,2626960,2626961,2626962,2626963,2626964,2626965,2626966,2626967,2626968,2626969,2626970,2626971,2626972,2626973,2626974,2626975,2626976,2626977,2626978,2626979,2626980,2626981,2626982,2626983,2626984,2626985,2626986,2626987,2626988,2626989,2626990,2626991,2626992,2626993,2626994,2626995,2626996,2626997,2626998,2626999,2627000,2627001,2627002,2627003,2627004,2627005,2627006,2627007,2627008,2627009,2627010,2627011,2627012,2627013,2627014,2627015,2627016,2627017,2627018,2627019,2627020,2627021,2627022,2627023,2627024],"End Stone Bricks":[2627072],"Ender Chest":[2627328,2627329,2627330,2627331],"Erbium":[2601984],"Europium":[2602240],"Fake Wooden Slab":[2627584,2627585,2627586],"Farmland":[2627840,2627841,2627842,2627843,2627844,2627845,2627846,2627847],"Fermium":[2602496],"Fern":[2628096],"Fire Block":[2628352,2628353,2628354,2628355,2628356,2628357,2628358,2628359,2628360,2628361,2628362,2628363,2628364,2628365,2628366,2628367],"Flerovium":[2602752],"Fletching Table":[2628608],"Flower Pot":[2628864],"Flowering Azalea Leaves":[2735872,2735873,2735874,2735875],"Fluorine":[2603008],"Francium":[2603264],"Froglight":[2733824,2733825,2733826,2733828,2733829,2733830,2733832,2733833,2733834],"Frosted Ice":[2629120,2629121,2629122,2629123],"Furnace":[2629376,2629377,2629378,2629379,2629380,2629381,2629382,2629383],"Gadolinium":[2603520],"Gallium":[2603776],"Germanium":[2604032],"Gilded Blackstone":[2727424],"Glass":[2629632],"Glass Pane":[2629888],"Glazed Terracotta":[2697984,2697985,2697986,2697987,2697988,2697989,2697990,2697991,2697992,2697993,2697994,2697995,2697996,2697997,2697998,2697999,2698000,2698001,2698002,2698003,2698004,2698005,2698006,2698007,2698008,2698009,2698010,2698011,2698012,2698013,2698014,2698015,2698016,2698017,2698018,2698019,2698020,2698021,2698022,2698023,2698024,2698025,2698026,2698027,2698028,2698029,2698030,2698031,2698032,2698033,2698034,2698035,2698036,2698037,2698038,2698039,2698040,2698041,2698042,2698043,2698044,2698045,2698046,2698047],"Glow Item Frame":[2735104,2735105,2735106,2735107,2735108,2735109,2735112,2735113,2735114,2735115,2735116,2735117],"Glowing Obsidian":[2630144],"Glowstone":[2630400],"Gold":[2604288],"Gold Block":[2630656],"Gold Ore":[2630912],"Granite":[2631168],"Granite Slab":[2631424,2631425,2631426],"Granite Stairs":[2631680,2631681,2631682,2631683,2631684,2631685,2631686,2631687],"Granite Wall":[2631936,2631937,2631938,2631939,2631940,2631941,2631942,2631943,2631944,2631945,2631946,2631947,2631948,2631949,2631950,2631951,2631952,2631953,2631954,2631955,2631956,2631957,2631958,2631959,2631960,2631961,2631962,2631963,2631964,2631965,2631966,2631967,2631968,2631969,2631970,2631971,2631972,2631973,2631974,2631975,2631976,2631977,2631978,2631979,2631980,2631981,2631982,2631983,2631984,2631985,2631986,2631987,2631988,2631989,2631990,2631991,2631992,2631993,2631994,2631995,2631996,2631997,2631998,2631999,2632000,2632001,2632002,2632003,2632004,2632005,2632006,2632007,2632008,2632009,2632010,2632011,2632012,2632013,2632014,2632015,2632016,2632064,2632065,2632066,2632067,2632068,2632069,2632070,2632071,2632072,2632073,2632074,2632075,2632076,2632077,2632078,2632079,2632080,2632081,2632082,2632083,2632084,2632085,2632086,2632087,2632088,2632089,2632090,2632091,2632092,2632093,2632094,2632095,2632096,2632097,2632098,2632099,2632100,2632101,2632102,2632103,2632104,2632105,2632106,2632107,2632108,2632109,2632110,2632111,2632112,2632113,2632114,2632115,2632116,2632117,2632118,2632119,2632120,2632121,2632122,2632123,2632124,2632125,2632126,2632127,2632128,2632129,2632130,2632131,2632132,2632133,2632134,2632135,2632136,2632137,2632138,2632139,2632140,2632141,2632142,2632143,2632144],"Grass":[2632192],"Grass Path":[2632448],"Gravel":[2632704],"Green Torch":[2633473,2633474,2633475,2633476,2633477],"Hafnium":[2604544],"Hanging Roots":[2730240],"Hardened Clay":[2633728],"Hardened Glass":[2633984],"Hardened Glass Pane":[2634240],"Hassium":[2604800],"Hay Bale":[2634496,2634497,2634498],"Heat Block":[2578176],"Helium":[2605056],"Holmium":[2605312],"Honeycomb Block":[2722560],"Hopper":[2634752,2634754,2634755,2634756,2634757,2634760,2634762,2634763,2634764,2634765],"Hydrogen":[2605568],"Ice":[2635008],"Indium":[2605824],"Infested Chiseled Stone Brick":[2635264],"Infested Cobblestone":[2635520],"Infested Cracked Stone Brick":[2635776],"Infested Mossy Stone Brick":[2636032],"Infested Stone":[2636288],"Infested Stone Brick":[2636544],"Invisible Bedrock":[2637312],"Iodine":[2606080],"Iridium":[2606336],"Iron":[2606592],"Iron Bars":[2637824],"Iron Block":[2637568],"Iron Door":[2638080,2638081,2638082,2638083,2638084,2638085,2638086,2638087,2638088,2638089,2638090,2638091,2638092,2638093,2638094,2638095,2638096,2638097,2638098,2638099,2638100,2638101,2638102,2638103,2638104,2638105,2638106,2638107,2638108,2638109,2638110,2638111],"Iron Ore":[2638336],"Iron Trapdoor":[2638592,2638593,2638594,2638595,2638596,2638597,2638598,2638599,2638600,2638601,2638602,2638603,2638604,2638605,2638606,2638607],"Item Frame":[2638848,2638849,2638850,2638851,2638852,2638853,2638856,2638857,2638858,2638859,2638860,2638861],"Jack o'Lantern":[2647296,2647297,2647298,2647299],"Jukebox":[2639104],"Jungle Button":[2639360,2639361,2639362,2639363,2639364,2639365,2639368,2639369,2639370,2639371,2639372,2639373],"Jungle Door":[2639616,2639617,2639618,2639619,2639620,2639621,2639622,2639623,2639624,2639625,2639626,2639627,2639628,2639629,2639630,2639631,2639632,2639633,2639634,2639635,2639636,2639637,2639638,2639639,2639640,2639641,2639642,2639643,2639644,2639645,2639646,2639647],"Jungle Fence":[2639872],"Jungle Fence Gate":[2640128,2640129,2640130,2640131,2640132,2640133,2640134,2640135,2640136,2640137,2640138,2640139,2640140,2640141,2640142,2640143],"Jungle Leaves":[2640384,2640385,2640386,2640387],"Jungle Log":[2640640,2640641,2640642,2640643,2640644,2640645],"Jungle Planks":[2640896],"Jungle Pressure Plate":[2641152,2641153],"Jungle Sapling":[2641408,2641409],"Jungle Sign":[2641664,2641665,2641666,2641667,2641668,2641669,2641670,2641671,2641672,2641673,2641674,2641675,2641676,2641677,2641678,2641679],"Jungle Slab":[2641920,2641921,2641922],"Jungle Stairs":[2642176,2642177,2642178,2642179,2642180,2642181,2642182,2642183],"Jungle Trapdoor":[2642432,2642433,2642434,2642435,2642436,2642437,2642438,2642439,2642440,2642441,2642442,2642443,2642444,2642445,2642446,2642447],"Jungle Wall Sign":[2642688,2642689,2642690,2642691],"Jungle Wood":[2642944,2642945,2642946,2642947,2642948,2642949],"Krypton":[2606848],"Lab Table":[2643200,2643201,2643202,2643203],"Ladder":[2643456,2643457,2643458,2643459],"Lantern":[2643712,2643713],"Lanthanum":[2607104],"Lapis Lazuli Block":[2643968],"Lapis Lazuli Ore":[2644224],"Large Fern":[2644480,2644481],"Lava":[2644736,2644737,2644738,2644739,2644740,2644741,2644742,2644743,2644744,2644745,2644746,2644747,2644748,2644749,2644750,2644751,2644752,2644753,2644754,2644755,2644756,2644757,2644758,2644759,2644760,2644761,2644762,2644763,2644764,2644765,2644766,2644767],"Lava Cauldron":[2732032,2732033,2732034,2732035,2732036,2732037],"Lawrencium":[2607360],"Lead":[2607616],"Lectern":[2644992,2644993,2644994,2644995,2644996,2644997,2644998,2644999],"Legacy Stonecutter":[2645248],"Lever":[2645504,2645505,2645506,2645507,2645508,2645509,2645510,2645511,2645512,2645513,2645514,2645515,2645516,2645517,2645518,2645519],"Light Block":[2703616,2703617,2703618,2703619,2703620,2703621,2703622,2703623,2703624,2703625,2703626,2703627,2703628,2703629,2703630,2703631],"Lightning Rod":[2727680,2727681,2727682,2727683,2727684,2727685],"Lilac":[2646272,2646273],"Lily Pad":[2646784],"Lily of the Valley":[2646528],"Lithium":[2607872],"Livermorium":[2608128],"Loom":[2647552,2647553,2647554,2647555],"Lutetium":[2608384],"Magma Block":[2648064],"Magnesium":[2608640],"Manganese":[2608896],"Mangrove Button":[2716928,2716929,2716930,2716931,2716932,2716933,2716936,2716937,2716938,2716939,2716940,2716941],"Mangrove Door":[2718464,2718465,2718466,2718467,2718468,2718469,2718470,2718471,2718472,2718473,2718474,2718475,2718476,2718477,2718478,2718479,2718480,2718481,2718482,2718483,2718484,2718485,2718486,2718487,2718488,2718489,2718490,2718491,2718492,2718493,2718494,2718495],"Mangrove Fence":[2713088],"Mangrove Fence Gate":[2719232,2719233,2719234,2719235,2719236,2719237,2719238,2719239,2719240,2719241,2719242,2719243,2719244,2719245,2719246,2719247],"Mangrove Leaves":[2735360,2735361,2735362,2735363],"Mangrove Log":[2714624,2714625,2714626,2714627,2714628,2714629],"Mangrove Planks":[2712320],"Mangrove Pressure Plate":[2717696,2717697],"Mangrove Roots":[2733312],"Mangrove Sign":[2720768,2720769,2720770,2720771,2720772,2720773,2720774,2720775,2720776,2720777,2720778,2720779,2720780,2720781,2720782,2720783],"Mangrove Slab":[2713856,2713857,2713858],"Mangrove Stairs":[2720000,2720001,2720002,2720003,2720004,2720005,2720006,2720007],"Mangrove Trapdoor":[2716160,2716161,2716162,2716163,2716164,2716165,2716166,2716167,2716168,2716169,2716170,2716171,2716172,2716173,2716174,2716175],"Mangrove Wall Sign":[2721536,2721537,2721538,2721539],"Mangrove Wood":[2715392,2715393,2715394,2715395,2715396,2715397],"Material Reducer":[2648320,2648321,2648322,2648323],"Meitnerium":[2609152],"Melon Block":[2648576],"Melon Stem":[2648832,2648833,2648834,2648835,2648836,2648837,2648838,2648839],"Mendelevium":[2609408],"Mercury":[2609664],"Mob Head":[2649096,2649097,2649098,2649099,2649100,2649101,2649104,2649105,2649106,2649107,2649108,2649109,2649112,2649113,2649114,2649115,2649116,2649117,2649120,2649121,2649122,2649123,2649124,2649125,2649128,2649129,2649130,2649131,2649132,2649133],"Molybdenum":[2609920],"Monster Spawner":[2649344],"Moscovium":[2610176],"Mossy Cobblestone":[2649600],"Mossy Cobblestone Slab":[2649856,2649857,2649858],"Mossy Cobblestone Stairs":[2650112,2650113,2650114,2650115,2650116,2650117,2650118,2650119],"Mossy Cobblestone Wall":[2650368,2650369,2650370,2650371,2650372,2650373,2650374,2650375,2650376,2650377,2650378,2650379,2650380,2650381,2650382,2650383,2650384,2650385,2650386,2650387,2650388,2650389,2650390,2650391,2650392,2650393,2650394,2650395,2650396,2650397,2650398,2650399,2650400,2650401,2650402,2650403,2650404,2650405,2650406,2650407,2650408,2650409,2650410,2650411,2650412,2650413,2650414,2650415,2650416,2650417,2650418,2650419,2650420,2650421,2650422,2650423,2650424,2650425,2650426,2650427,2650428,2650429,2650430,2650431,2650432,2650433,2650434,2650435,2650436,2650437,2650438,2650439,2650440,2650441,2650442,2650443,2650444,2650445,2650446,2650447,2650448,2650496,2650497,2650498,2650499,2650500,2650501,2650502,2650503,2650504,2650505,2650506,2650507,2650508,2650509,2650510,2650511,2650512,2650513,2650514,2650515,2650516,2650517,2650518,2650519,2650520,2650521,2650522,2650523,2650524,2650525,2650526,2650527,2650528,2650529,2650530,2650531,2650532,2650533,2650534,2650535,2650536,2650537,2650538,2650539,2650540,2650541,2650542,2650543,2650544,2650545,2650546,2650547,2650548,2650549,2650550,2650551,2650552,2650553,2650554,2650555,2650556,2650557,2650558,2650559,2650560,2650561,2650562,2650563,2650564,2650565,2650566,2650567,2650568,2650569,2650570,2650571,2650572,2650573,2650574,2650575,2650576],"Mossy Stone Brick Slab":[2650624,2650625,2650626],"Mossy Stone Brick Stairs":[2650880,2650881,2650882,2650883,2650884,2650885,2650886,2650887],"Mossy Stone Brick Wall":[2651136,2651137,2651138,2651139,2651140,2651141,2651142,2651143,2651144,2651145,2651146,2651147,2651148,2651149,2651150,2651151,2651152,2651153,2651154,2651155,2651156,2651157,2651158,2651159,2651160,2651161,2651162,2651163,2651164,2651165,2651166,2651167,2651168,2651169,2651170,2651171,2651172,2651173,2651174,2651175,2651176,2651177,2651178,2651179,2651180,2651181,2651182,2651183,2651184,2651185,2651186,2651187,2651188,2651189,2651190,2651191,2651192,2651193,2651194,2651195,2651196,2651197,2651198,2651199,2651200,2651201,2651202,2651203,2651204,2651205,2651206,2651207,2651208,2651209,2651210,2651211,2651212,2651213,2651214,2651215,2651216,2651264,2651265,2651266,2651267,2651268,2651269,2651270,2651271,2651272,2651273,2651274,2651275,2651276,2651277,2651278,2651279,2651280,2651281,2651282,2651283,2651284,2651285,2651286,2651287,2651288,2651289,2651290,2651291,2651292,2651293,2651294,2651295,2651296,2651297,2651298,2651299,2651300,2651301,2651302,2651303,2651304,2651305,2651306,2651307,2651308,2651309,2651310,2651311,2651312,2651313,2651314,2651315,2651316,2651317,2651318,2651319,2651320,2651321,2651322,2651323,2651324,2651325,2651326,2651327,2651328,2651329,2651330,2651331,2651332,2651333,2651334,2651335,2651336,2651337,2651338,2651339,2651340,2651341,2651342,2651343,2651344],"Mossy Stone Bricks":[2651392],"Mud":[2725376],"Mud Brick Slab":[2725888,2725889,2725890],"Mud Brick Stairs":[2726144,2726145,2726146,2726147,2726148,2726149,2726150,2726151],"Mud Brick Wall":[2726400,2726401,2726402,2726403,2726404,2726405,2726406,2726407,2726408,2726409,2726410,2726411,2726412,2726413,2726414,2726415,2726416,2726417,2726418,2726419,2726420,2726421,2726422,2726423,2726424,2726425,2726426,2726427,2726428,2726429,2726430,2726431,2726432,2726433,2726434,2726435,2726436,2726437,2726438,2726439,2726440,2726441,2726442,2726443,2726444,2726445,2726446,2726447,2726448,2726449,2726450,2726451,2726452,2726453,2726454,2726455,2726456,2726457,2726458,2726459,2726460,2726461,2726462,2726463,2726464,2726465,2726466,2726467,2726468,2726469,2726470,2726471,2726472,2726473,2726474,2726475,2726476,2726477,2726478,2726479,2726480,2726528,2726529,2726530,2726531,2726532,2726533,2726534,2726535,2726536,2726537,2726538,2726539,2726540,2726541,2726542,2726543,2726544,2726545,2726546,2726547,2726548,2726549,2726550,2726551,2726552,2726553,2726554,2726555,2726556,2726557,2726558,2726559,2726560,2726561,2726562,2726563,2726564,2726565,2726566,2726567,2726568,2726569,2726570,2726571,2726572,2726573,2726574,2726575,2726576,2726577,2726578,2726579,2726580,2726581,2726582,2726583,2726584,2726585,2726586,2726587,2726588,2726589,2726590,2726591,2726592,2726593,2726594,2726595,2726596,2726597,2726598,2726599,2726600,2726601,2726602,2726603,2726604,2726605,2726606,2726607,2726608],"Mud Bricks":[2725632],"Muddy Mangrove Roots":[2733568,2733569,2733570],"Mushroom Stem":[2651648],"Mycelium":[2651904],"Neodymium":[2610432],"Neon":[2610688],"Neptunium":[2610944],"Nether Brick Fence":[2652160],"Nether Brick Slab":[2652416,2652417,2652418],"Nether Brick Stairs":[2652672,2652673,2652674,2652675,2652676,2652677,2652678,2652679],"Nether Brick Wall":[2652928,2652929,2652930,2652931,2652932,2652933,2652934,2652935,2652936,2652937,2652938,2652939,2652940,2652941,2652942,2652943,2652944,2652945,2652946,2652947,2652948,2652949,2652950,2652951,2652952,2652953,2652954,2652955,2652956,2652957,2652958,2652959,2652960,2652961,2652962,2652963,2652964,2652965,2652966,2652967,2652968,2652969,2652970,2652971,2652972,2652973,2652974,2652975,2652976,2652977,2652978,2652979,2652980,2652981,2652982,2652983,2652984,2652985,2652986,2652987,2652988,2652989,2652990,2652991,2652992,2652993,2652994,2652995,2652996,2652997,2652998,2652999,2653000,2653001,2653002,2653003,2653004,2653005,2653006,2653007,2653008,2653056,2653057,2653058,2653059,2653060,2653061,2653062,2653063,2653064,2653065,2653066,2653067,2653068,2653069,2653070,2653071,2653072,2653073,2653074,2653075,2653076,2653077,2653078,2653079,2653080,2653081,2653082,2653083,2653084,2653085,2653086,2653087,2653088,2653089,2653090,2653091,2653092,2653093,2653094,2653095,2653096,2653097,2653098,2653099,2653100,2653101,2653102,2653103,2653104,2653105,2653106,2653107,2653108,2653109,2653110,2653111,2653112,2653113,2653114,2653115,2653116,2653117,2653118,2653119,2653120,2653121,2653122,2653123,2653124,2653125,2653126,2653127,2653128,2653129,2653130,2653131,2653132,2653133,2653134,2653135,2653136],"Nether Bricks":[2653184],"Nether Gold Ore":[2725120],"Nether Portal":[2653440,2653441],"Nether Quartz Ore":[2653696],"Nether Reactor Core":[2653952],"Nether Wart":[2654208,2654209,2654210,2654211],"Nether Wart Block":[2654464],"Netherite Block":[2731008],"Netherrack":[2654720],"Nickel":[2611200],"Nihonium":[2611456],"Niobium":[2611712],"Nitrogen":[2611968],"Nobelium":[2612224],"Note Block":[2654976],"Oak Button":[2655232,2655233,2655234,2655235,2655236,2655237,2655240,2655241,2655242,2655243,2655244,2655245],"Oak Door":[2655488,2655489,2655490,2655491,2655492,2655493,2655494,2655495,2655496,2655497,2655498,2655499,2655500,2655501,2655502,2655503,2655504,2655505,2655506,2655507,2655508,2655509,2655510,2655511,2655512,2655513,2655514,2655515,2655516,2655517,2655518,2655519],"Oak Fence":[2655744],"Oak Fence Gate":[2656000,2656001,2656002,2656003,2656004,2656005,2656006,2656007,2656008,2656009,2656010,2656011,2656012,2656013,2656014,2656015],"Oak Leaves":[2656256,2656257,2656258,2656259],"Oak Log":[2656512,2656513,2656514,2656515,2656516,2656517],"Oak Planks":[2656768],"Oak Pressure Plate":[2657024,2657025],"Oak Sapling":[2657280,2657281],"Oak Sign":[2657536,2657537,2657538,2657539,2657540,2657541,2657542,2657543,2657544,2657545,2657546,2657547,2657548,2657549,2657550,2657551],"Oak Slab":[2657792,2657793,2657794],"Oak Stairs":[2658048,2658049,2658050,2658051,2658052,2658053,2658054,2658055],"Oak Trapdoor":[2658304,2658305,2658306,2658307,2658308,2658309,2658310,2658311,2658312,2658313,2658314,2658315,2658316,2658317,2658318,2658319],"Oak Wall Sign":[2658560,2658561,2658562,2658563],"Oak Wood":[2658816,2658817,2658818,2658819,2658820,2658821],"Obsidian":[2659072],"Oganesson":[2612480],"Orange Tulip":[2659584],"Osmium":[2612736],"Oxeye Daisy":[2659840],"Oxygen":[2612992],"Packed Ice":[2660096],"Packed Mud":[2726656],"Palladium":[2613248],"Peony":[2660352,2660353],"Phosphorus":[2613504],"Pink Tulip":[2660864],"Platinum":[2613760],"Plutonium":[2614016],"Podzol":[2661120],"Polished Andesite":[2661376],"Polished Andesite Slab":[2661632,2661633,2661634],"Polished Andesite Stairs":[2661888,2661889,2661890,2661891,2661892,2661893,2661894,2661895],"Polished Basalt":[2699008,2699009,2699010],"Polished Blackstone":[2700544],"Polished Blackstone Brick Slab":[2702592,2702593,2702594],"Polished Blackstone Brick Stairs":[2702848,2702849,2702850,2702851,2702852,2702853,2702854,2702855],"Polished Blackstone Brick Wall":[2703104,2703105,2703106,2703107,2703108,2703109,2703110,2703111,2703112,2703113,2703114,2703115,2703116,2703117,2703118,2703119,2703120,2703121,2703122,2703123,2703124,2703125,2703126,2703127,2703128,2703129,2703130,2703131,2703132,2703133,2703134,2703135,2703136,2703137,2703138,2703139,2703140,2703141,2703142,2703143,2703144,2703145,2703146,2703147,2703148,2703149,2703150,2703151,2703152,2703153,2703154,2703155,2703156,2703157,2703158,2703159,2703160,2703161,2703162,2703163,2703164,2703165,2703166,2703167,2703168,2703169,2703170,2703171,2703172,2703173,2703174,2703175,2703176,2703177,2703178,2703179,2703180,2703181,2703182,2703183,2703184,2703232,2703233,2703234,2703235,2703236,2703237,2703238,2703239,2703240,2703241,2703242,2703243,2703244,2703245,2703246,2703247,2703248,2703249,2703250,2703251,2703252,2703253,2703254,2703255,2703256,2703257,2703258,2703259,2703260,2703261,2703262,2703263,2703264,2703265,2703266,2703267,2703268,2703269,2703270,2703271,2703272,2703273,2703274,2703275,2703276,2703277,2703278,2703279,2703280,2703281,2703282,2703283,2703284,2703285,2703286,2703287,2703288,2703289,2703290,2703291,2703292,2703293,2703294,2703295,2703296,2703297,2703298,2703299,2703300,2703301,2703302,2703303,2703304,2703305,2703306,2703307,2703308,2703309,2703310,2703311,2703312],"Polished Blackstone Bricks":[2702336],"Polished Blackstone Button":[2700800,2700801,2700802,2700803,2700804,2700805,2700808,2700809,2700810,2700811,2700812,2700813],"Polished Blackstone Pressure Plate":[2701056,2701057],"Polished Blackstone Slab":[2701312,2701313,2701314],"Polished Blackstone Stairs":[2701568,2701569,2701570,2701571,2701572,2701573,2701574,2701575],"Polished Blackstone Wall":[2701824,2701825,2701826,2701827,2701828,2701829,2701830,2701831,2701832,2701833,2701834,2701835,2701836,2701837,2701838,2701839,2701840,2701841,2701842,2701843,2701844,2701845,2701846,2701847,2701848,2701849,2701850,2701851,2701852,2701853,2701854,2701855,2701856,2701857,2701858,2701859,2701860,2701861,2701862,2701863,2701864,2701865,2701866,2701867,2701868,2701869,2701870,2701871,2701872,2701873,2701874,2701875,2701876,2701877,2701878,2701879,2701880,2701881,2701882,2701883,2701884,2701885,2701886,2701887,2701888,2701889,2701890,2701891,2701892,2701893,2701894,2701895,2701896,2701897,2701898,2701899,2701900,2701901,2701902,2701903,2701904,2701952,2701953,2701954,2701955,2701956,2701957,2701958,2701959,2701960,2701961,2701962,2701963,2701964,2701965,2701966,2701967,2701968,2701969,2701970,2701971,2701972,2701973,2701974,2701975,2701976,2701977,2701978,2701979,2701980,2701981,2701982,2701983,2701984,2701985,2701986,2701987,2701988,2701989,2701990,2701991,2701992,2701993,2701994,2701995,2701996,2701997,2701998,2701999,2702000,2702001,2702002,2702003,2702004,2702005,2702006,2702007,2702008,2702009,2702010,2702011,2702012,2702013,2702014,2702015,2702016,2702017,2702018,2702019,2702020,2702021,2702022,2702023,2702024,2702025,2702026,2702027,2702028,2702029,2702030,2702031,2702032],"Polished Deepslate":[2708736],"Polished Deepslate Slab":[2708992,2708993,2708994],"Polished Deepslate Stairs":[2709248,2709249,2709250,2709251,2709252,2709253,2709254,2709255],"Polished Deepslate Wall":[2709504,2709505,2709506,2709507,2709508,2709509,2709510,2709511,2709512,2709513,2709514,2709515,2709516,2709517,2709518,2709519,2709520,2709521,2709522,2709523,2709524,2709525,2709526,2709527,2709528,2709529,2709530,2709531,2709532,2709533,2709534,2709535,2709536,2709537,2709538,2709539,2709540,2709541,2709542,2709543,2709544,2709545,2709546,2709547,2709548,2709549,2709550,2709551,2709552,2709553,2709554,2709555,2709556,2709557,2709558,2709559,2709560,2709561,2709562,2709563,2709564,2709565,2709566,2709567,2709568,2709569,2709570,2709571,2709572,2709573,2709574,2709575,2709576,2709577,2709578,2709579,2709580,2709581,2709582,2709583,2709584,2709632,2709633,2709634,2709635,2709636,2709637,2709638,2709639,2709640,2709641,2709642,2709643,2709644,2709645,2709646,2709647,2709648,2709649,2709650,2709651,2709652,2709653,2709654,2709655,2709656,2709657,2709658,2709659,2709660,2709661,2709662,2709663,2709664,2709665,2709666,2709667,2709668,2709669,2709670,2709671,2709672,2709673,2709674,2709675,2709676,2709677,2709678,2709679,2709680,2709681,2709682,2709683,2709684,2709685,2709686,2709687,2709688,2709689,2709690,2709691,2709692,2709693,2709694,2709695,2709696,2709697,2709698,2709699,2709700,2709701,2709702,2709703,2709704,2709705,2709706,2709707,2709708,2709709,2709710,2709711,2709712],"Polished Diorite":[2662144],"Polished Diorite Slab":[2662400,2662401,2662402],"Polished Diorite Stairs":[2662656,2662657,2662658,2662659,2662660,2662661,2662662,2662663],"Polished Granite":[2662912],"Polished Granite Slab":[2663168,2663169,2663170],"Polished Granite Stairs":[2663424,2663425,2663426,2663427,2663428,2663429,2663430,2663431],"Polonium":[2614272],"Poppy":[2663680],"Potassium":[2614528],"Potato Block":[2663936,2663937,2663938,2663939,2663940,2663941,2663942,2663943],"Potion Cauldron":[2732288,2732289,2732290,2732291,2732292,2732293],"Powered Rail":[2664192,2664193,2664194,2664195,2664196,2664197,2664200,2664201,2664202,2664203,2664204,2664205],"Praseodymium":[2614784],"Prismarine":[2664448],"Prismarine Bricks":[2664704],"Prismarine Bricks Slab":[2664960,2664961,2664962],"Prismarine Bricks Stairs":[2665216,2665217,2665218,2665219,2665220,2665221,2665222,2665223],"Prismarine Slab":[2665472,2665473,2665474],"Prismarine Stairs":[2665728,2665729,2665730,2665731,2665732,2665733,2665734,2665735],"Prismarine Wall":[2665984,2665985,2665986,2665987,2665988,2665989,2665990,2665991,2665992,2665993,2665994,2665995,2665996,2665997,2665998,2665999,2666000,2666001,2666002,2666003,2666004,2666005,2666006,2666007,2666008,2666009,2666010,2666011,2666012,2666013,2666014,2666015,2666016,2666017,2666018,2666019,2666020,2666021,2666022,2666023,2666024,2666025,2666026,2666027,2666028,2666029,2666030,2666031,2666032,2666033,2666034,2666035,2666036,2666037,2666038,2666039,2666040,2666041,2666042,2666043,2666044,2666045,2666046,2666047,2666048,2666049,2666050,2666051,2666052,2666053,2666054,2666055,2666056,2666057,2666058,2666059,2666060,2666061,2666062,2666063,2666064,2666112,2666113,2666114,2666115,2666116,2666117,2666118,2666119,2666120,2666121,2666122,2666123,2666124,2666125,2666126,2666127,2666128,2666129,2666130,2666131,2666132,2666133,2666134,2666135,2666136,2666137,2666138,2666139,2666140,2666141,2666142,2666143,2666144,2666145,2666146,2666147,2666148,2666149,2666150,2666151,2666152,2666153,2666154,2666155,2666156,2666157,2666158,2666159,2666160,2666161,2666162,2666163,2666164,2666165,2666166,2666167,2666168,2666169,2666170,2666171,2666172,2666173,2666174,2666175,2666176,2666177,2666178,2666179,2666180,2666181,2666182,2666183,2666184,2666185,2666186,2666187,2666188,2666189,2666190,2666191,2666192],"Promethium":[2615040],"Protactinium":[2615296],"Pumpkin":[2666240],"Pumpkin Stem":[2666496,2666497,2666498,2666499,2666500,2666501,2666502,2666503],"Purple Torch":[2667009,2667010,2667011,2667012,2667013],"Purpur Block":[2667264],"Purpur Pillar":[2667520,2667521,2667522],"Purpur Slab":[2667776,2667777,2667778],"Purpur Stairs":[2668032,2668033,2668034,2668035,2668036,2668037,2668038,2668039],"Quartz Block":[2668288],"Quartz Bricks":[2709760],"Quartz Pillar":[2668544,2668545,2668546],"Quartz Slab":[2668800,2668801,2668802],"Quartz Stairs":[2669056,2669057,2669058,2669059,2669060,2669061,2669062,2669063],"Radium":[2615552],"Radon":[2615808],"Rail":[2669312,2669313,2669314,2669315,2669316,2669317,2669318,2669319,2669320,2669321],"Raw Copper Block":[2703872],"Raw Gold Block":[2704128],"Raw Iron Block":[2704384],"Red Mushroom":[2669824],"Red Mushroom Block":[2670080,2670081,2670082,2670083,2670084,2670085,2670086,2670087,2670088,2670089,2670090],"Red Nether Brick Slab":[2670336,2670337,2670338],"Red Nether Brick Stairs":[2670592,2670593,2670594,2670595,2670596,2670597,2670598,2670599],"Red Nether Brick Wall":[2670848,2670849,2670850,2670851,2670852,2670853,2670854,2670855,2670856,2670857,2670858,2670859,2670860,2670861,2670862,2670863,2670864,2670865,2670866,2670867,2670868,2670869,2670870,2670871,2670872,2670873,2670874,2670875,2670876,2670877,2670878,2670879,2670880,2670881,2670882,2670883,2670884,2670885,2670886,2670887,2670888,2670889,2670890,2670891,2670892,2670893,2670894,2670895,2670896,2670897,2670898,2670899,2670900,2670901,2670902,2670903,2670904,2670905,2670906,2670907,2670908,2670909,2670910,2670911,2670912,2670913,2670914,2670915,2670916,2670917,2670918,2670919,2670920,2670921,2670922,2670923,2670924,2670925,2670926,2670927,2670928,2670976,2670977,2670978,2670979,2670980,2670981,2670982,2670983,2670984,2670985,2670986,2670987,2670988,2670989,2670990,2670991,2670992,2670993,2670994,2670995,2670996,2670997,2670998,2670999,2671000,2671001,2671002,2671003,2671004,2671005,2671006,2671007,2671008,2671009,2671010,2671011,2671012,2671013,2671014,2671015,2671016,2671017,2671018,2671019,2671020,2671021,2671022,2671023,2671024,2671025,2671026,2671027,2671028,2671029,2671030,2671031,2671032,2671033,2671034,2671035,2671036,2671037,2671038,2671039,2671040,2671041,2671042,2671043,2671044,2671045,2671046,2671047,2671048,2671049,2671050,2671051,2671052,2671053,2671054,2671055,2671056],"Red Nether Bricks":[2671104],"Red Sand":[2671360],"Red Sandstone":[2671616],"Red Sandstone Slab":[2671872,2671873,2671874],"Red Sandstone Stairs":[2672128,2672129,2672130,2672131,2672132,2672133,2672134,2672135],"Red Sandstone Wall":[2672384,2672385,2672386,2672387,2672388,2672389,2672390,2672391,2672392,2672393,2672394,2672395,2672396,2672397,2672398,2672399,2672400,2672401,2672402,2672403,2672404,2672405,2672406,2672407,2672408,2672409,2672410,2672411,2672412,2672413,2672414,2672415,2672416,2672417,2672418,2672419,2672420,2672421,2672422,2672423,2672424,2672425,2672426,2672427,2672428,2672429,2672430,2672431,2672432,2672433,2672434,2672435,2672436,2672437,2672438,2672439,2672440,2672441,2672442,2672443,2672444,2672445,2672446,2672447,2672448,2672449,2672450,2672451,2672452,2672453,2672454,2672455,2672456,2672457,2672458,2672459,2672460,2672461,2672462,2672463,2672464,2672512,2672513,2672514,2672515,2672516,2672517,2672518,2672519,2672520,2672521,2672522,2672523,2672524,2672525,2672526,2672527,2672528,2672529,2672530,2672531,2672532,2672533,2672534,2672535,2672536,2672537,2672538,2672539,2672540,2672541,2672542,2672543,2672544,2672545,2672546,2672547,2672548,2672549,2672550,2672551,2672552,2672553,2672554,2672555,2672556,2672557,2672558,2672559,2672560,2672561,2672562,2672563,2672564,2672565,2672566,2672567,2672568,2672569,2672570,2672571,2672572,2672573,2672574,2672575,2672576,2672577,2672578,2672579,2672580,2672581,2672582,2672583,2672584,2672585,2672586,2672587,2672588,2672589,2672590,2672591,2672592],"Red Torch":[2672641,2672642,2672643,2672644,2672645],"Red Tulip":[2672896],"Redstone":[2674688,2674689,2674690,2674691,2674692,2674693,2674694,2674695,2674696,2674697,2674698,2674699,2674700,2674701,2674702,2674703],"Redstone Block":[2673152],"Redstone Comparator":[2673408,2673409,2673410,2673411,2673412,2673413,2673414,2673415,2673416,2673417,2673418,2673419,2673420,2673421,2673422,2673423],"Redstone Lamp":[2673664,2673665],"Redstone Ore":[2673920,2673921],"Redstone Repeater":[2674176,2674177,2674178,2674179,2674180,2674181,2674182,2674183,2674184,2674185,2674186,2674187,2674188,2674189,2674190,2674191,2674192,2674193,2674194,2674195,2674196,2674197,2674198,2674199,2674200,2674201,2674202,2674203,2674204,2674205,2674206,2674207],"Redstone Torch":[2674433,2674434,2674435,2674436,2674437,2674441,2674442,2674443,2674444,2674445],"Reinforced Deepslate":[2736128],"Rhenium":[2616064],"Rhodium":[2616320],"Roentgenium":[2616576],"Rose Bush":[2675200,2675201],"Rubidium":[2616832],"Ruthenium":[2617088],"Rutherfordium":[2617344],"Samarium":[2617600],"Sand":[2675456],"Sandstone":[2675712],"Sandstone Slab":[2675968,2675969,2675970],"Sandstone Stairs":[2676224,2676225,2676226,2676227,2676228,2676229,2676230,2676231],"Sandstone Wall":[2676480,2676481,2676482,2676483,2676484,2676485,2676486,2676487,2676488,2676489,2676490,2676491,2676492,2676493,2676494,2676495,2676496,2676497,2676498,2676499,2676500,2676501,2676502,2676503,2676504,2676505,2676506,2676507,2676508,2676509,2676510,2676511,2676512,2676513,2676514,2676515,2676516,2676517,2676518,2676519,2676520,2676521,2676522,2676523,2676524,2676525,2676526,2676527,2676528,2676529,2676530,2676531,2676532,2676533,2676534,2676535,2676536,2676537,2676538,2676539,2676540,2676541,2676542,2676543,2676544,2676545,2676546,2676547,2676548,2676549,2676550,2676551,2676552,2676553,2676554,2676555,2676556,2676557,2676558,2676559,2676560,2676608,2676609,2676610,2676611,2676612,2676613,2676614,2676615,2676616,2676617,2676618,2676619,2676620,2676621,2676622,2676623,2676624,2676625,2676626,2676627,2676628,2676629,2676630,2676631,2676632,2676633,2676634,2676635,2676636,2676637,2676638,2676639,2676640,2676641,2676642,2676643,2676644,2676645,2676646,2676647,2676648,2676649,2676650,2676651,2676652,2676653,2676654,2676655,2676656,2676657,2676658,2676659,2676660,2676661,2676662,2676663,2676664,2676665,2676666,2676667,2676668,2676669,2676670,2676671,2676672,2676673,2676674,2676675,2676676,2676677,2676678,2676679,2676680,2676681,2676682,2676683,2676684,2676685,2676686,2676687,2676688],"Scandium":[2617856],"Sculk":[2734848],"Sea Lantern":[2676736],"Sea Pickle":[2676992,2676993,2676994,2676995,2676996,2676997,2676998,2676999],"Seaborgium":[2618112],"Selenium":[2618368],"Shroomlight":[2712064],"Shulker Box":[2677248],"Silicon":[2618624],"Silver":[2618880],"Slime Block":[2677504],"Smithing Table":[2730752],"Smoker":[2677760,2677761,2677762,2677763,2677764,2677765,2677766,2677767],"Smooth Basalt":[2699264],"Smooth Quartz Block":[2678016],"Smooth Quartz Slab":[2678272,2678273,2678274],"Smooth Quartz Stairs":[2678528,2678529,2678530,2678531,2678532,2678533,2678534,2678535],"Smooth Red Sandstone":[2678784],"Smooth Red Sandstone Slab":[2679040,2679041,2679042],"Smooth Red Sandstone Stairs":[2679296,2679297,2679298,2679299,2679300,2679301,2679302,2679303],"Smooth Sandstone":[2679552],"Smooth Sandstone Slab":[2679808,2679809,2679810],"Smooth Sandstone Stairs":[2680064,2680065,2680066,2680067,2680068,2680069,2680070,2680071],"Smooth Stone":[2680320],"Smooth Stone Slab":[2680576,2680577,2680578],"Snow Block":[2680832],"Snow Layer":[2681088,2681089,2681090,2681091,2681092,2681093,2681094,2681095],"Sodium":[2619136],"Soul Fire":[2711808],"Soul Lantern":[2711296,2711297],"Soul Sand":[2681344],"Soul Soil":[2711552],"Soul Torch":[2711041,2711042,2711043,2711044,2711045],"Sponge":[2681600,2681601],"Spore Blossom":[2731264],"Spruce Button":[2681856,2681857,2681858,2681859,2681860,2681861,2681864,2681865,2681866,2681867,2681868,2681869],"Spruce Door":[2682112,2682113,2682114,2682115,2682116,2682117,2682118,2682119,2682120,2682121,2682122,2682123,2682124,2682125,2682126,2682127,2682128,2682129,2682130,2682131,2682132,2682133,2682134,2682135,2682136,2682137,2682138,2682139,2682140,2682141,2682142,2682143],"Spruce Fence":[2682368],"Spruce Fence Gate":[2682624,2682625,2682626,2682627,2682628,2682629,2682630,2682631,2682632,2682633,2682634,2682635,2682636,2682637,2682638,2682639],"Spruce Leaves":[2682880,2682881,2682882,2682883],"Spruce Log":[2683136,2683137,2683138,2683139,2683140,2683141],"Spruce Planks":[2683392],"Spruce Pressure Plate":[2683648,2683649],"Spruce Sapling":[2683904,2683905],"Spruce Sign":[2684160,2684161,2684162,2684163,2684164,2684165,2684166,2684167,2684168,2684169,2684170,2684171,2684172,2684173,2684174,2684175],"Spruce Slab":[2684416,2684417,2684418],"Spruce Stairs":[2684672,2684673,2684674,2684675,2684676,2684677,2684678,2684679],"Spruce Trapdoor":[2684928,2684929,2684930,2684931,2684932,2684933,2684934,2684935,2684936,2684937,2684938,2684939,2684940,2684941,2684942,2684943],"Spruce Wall Sign":[2685184,2685185,2685186,2685187],"Spruce Wood":[2685440,2685441,2685442,2685443,2685444,2685445],"Stained Clay":[2685696,2685697,2685698,2685699,2685700,2685701,2685702,2685703,2685704,2685705,2685706,2685707,2685708,2685709,2685710,2685711],"Stained Glass":[2685952,2685953,2685954,2685955,2685956,2685957,2685958,2685959,2685960,2685961,2685962,2685963,2685964,2685965,2685966,2685967],"Stained Glass Pane":[2686208,2686209,2686210,2686211,2686212,2686213,2686214,2686215,2686216,2686217,2686218,2686219,2686220,2686221,2686222,2686223],"Stained Hardened Glass":[2686464,2686465,2686466,2686467,2686468,2686469,2686470,2686471,2686472,2686473,2686474,2686475,2686476,2686477,2686478,2686479],"Stained Hardened Glass Pane":[2686720,2686721,2686722,2686723,2686724,2686725,2686726,2686727,2686728,2686729,2686730,2686731,2686732,2686733,2686734,2686735],"Stone":[2686976],"Stone Brick Slab":[2687232,2687233,2687234],"Stone Brick Stairs":[2687488,2687489,2687490,2687491,2687492,2687493,2687494,2687495],"Stone Brick Wall":[2687744,2687745,2687746,2687747,2687748,2687749,2687750,2687751,2687752,2687753,2687754,2687755,2687756,2687757,2687758,2687759,2687760,2687761,2687762,2687763,2687764,2687765,2687766,2687767,2687768,2687769,2687770,2687771,2687772,2687773,2687774,2687775,2687776,2687777,2687778,2687779,2687780,2687781,2687782,2687783,2687784,2687785,2687786,2687787,2687788,2687789,2687790,2687791,2687792,2687793,2687794,2687795,2687796,2687797,2687798,2687799,2687800,2687801,2687802,2687803,2687804,2687805,2687806,2687807,2687808,2687809,2687810,2687811,2687812,2687813,2687814,2687815,2687816,2687817,2687818,2687819,2687820,2687821,2687822,2687823,2687824,2687872,2687873,2687874,2687875,2687876,2687877,2687878,2687879,2687880,2687881,2687882,2687883,2687884,2687885,2687886,2687887,2687888,2687889,2687890,2687891,2687892,2687893,2687894,2687895,2687896,2687897,2687898,2687899,2687900,2687901,2687902,2687903,2687904,2687905,2687906,2687907,2687908,2687909,2687910,2687911,2687912,2687913,2687914,2687915,2687916,2687917,2687918,2687919,2687920,2687921,2687922,2687923,2687924,2687925,2687926,2687927,2687928,2687929,2687930,2687931,2687932,2687933,2687934,2687935,2687936,2687937,2687938,2687939,2687940,2687941,2687942,2687943,2687944,2687945,2687946,2687947,2687948,2687949,2687950,2687951,2687952],"Stone Bricks":[2688000],"Stone Button":[2688256,2688257,2688258,2688259,2688260,2688261,2688264,2688265,2688266,2688267,2688268,2688269],"Stone Pressure Plate":[2688512,2688513],"Stone Slab":[2688768,2688769,2688770],"Stone Stairs":[2689024,2689025,2689026,2689027,2689028,2689029,2689030,2689031],"Stonecutter":[2689280,2689281,2689282,2689283],"Strontium":[2619392],"Sugarcane":[2692608,2692609,2692610,2692611,2692612,2692613,2692614,2692615,2692616,2692617,2692618,2692619,2692620,2692621,2692622,2692623],"Sulfur":[2619648],"Sunflower":[2692864,2692865],"Sweet Berry Bush":[2693120,2693121,2693122,2693123],"TNT":[2693632,2693633,2693634,2693635],"Tall Grass":[2693376],"Tantalum":[2619904],"Technetium":[2620160],"Tellurium":[2620416],"Tennessine":[2620672],"Terbium":[2620928],"Thallium":[2621184],"Thorium":[2621440],"Thulium":[2621696],"Tin":[2621952],"Tinted Glass":[2722304],"Titanium":[2622208],"Torch":[2693889,2693890,2693891,2693892,2693893],"Trapped Chest":[2694144,2694145,2694146,2694147],"Tripwire":[2694400,2694401,2694402,2694403,2694404,2694405,2694406,2694407,2694408,2694409,2694410,2694411,2694412,2694413,2694414,2694415],"Tripwire Hook":[2694656,2694657,2694658,2694659,2694660,2694661,2694662,2694663,2694664,2694665,2694666,2694667,2694668,2694669,2694670,2694671],"Tuff":[2710784],"Tungsten":[2622464],"Twisting Vines":[2734080,2734081,2734082,2734083,2734084,2734085,2734086,2734087,2734088,2734089,2734090,2734091,2734092,2734093,2734094,2734095,2734096,2734097,2734098,2734099,2734100,2734101,2734102,2734103,2734104,2734105],"Underwater Torch":[2694913,2694914,2694915,2694916,2694917],"Uranium":[2622720],"Vanadium":[2622976],"Vines":[2695168,2695169,2695170,2695171,2695172,2695173,2695174,2695175,2695176,2695177,2695178,2695179,2695180,2695181,2695182,2695183],"Wall Banner":[2695424,2695425,2695426,2695427,2695428,2695429,2695430,2695431,2695432,2695433,2695434,2695435,2695436,2695437,2695438,2695439,2695440,2695441,2695442,2695443,2695444,2695445,2695446,2695447,2695448,2695449,2695450,2695451,2695452,2695453,2695454,2695455,2695456,2695457,2695458,2695459,2695460,2695461,2695462,2695463,2695464,2695465,2695466,2695467,2695468,2695469,2695470,2695471,2695472,2695473,2695474,2695475,2695476,2695477,2695478,2695479,2695480,2695481,2695482,2695483,2695484,2695485,2695486,2695487],"Wall Coral Fan":[2695680,2695681,2695682,2695683,2695684,2695688,2695689,2695690,2695691,2695692,2695696,2695697,2695698,2695699,2695700,2695704,2695705,2695706,2695707,2695708,2695712,2695713,2695714,2695715,2695716,2695720,2695721,2695722,2695723,2695724,2695728,2695729,2695730,2695731,2695732,2695736,2695737,2695738,2695739,2695740],"Warped Button":[2717440,2717441,2717442,2717443,2717444,2717445,2717448,2717449,2717450,2717451,2717452,2717453],"Warped Door":[2718976,2718977,2718978,2718979,2718980,2718981,2718982,2718983,2718984,2718985,2718986,2718987,2718988,2718989,2718990,2718991,2718992,2718993,2718994,2718995,2718996,2718997,2718998,2718999,2719000,2719001,2719002,2719003,2719004,2719005,2719006,2719007],"Warped Fence":[2713600],"Warped Fence Gate":[2719744,2719745,2719746,2719747,2719748,2719749,2719750,2719751,2719752,2719753,2719754,2719755,2719756,2719757,2719758,2719759],"Warped Hyphae":[2715904,2715905,2715906,2715907,2715908,2715909],"Warped Planks":[2712832],"Warped Pressure Plate":[2718208,2718209],"Warped Sign":[2721280,2721281,2721282,2721283,2721284,2721285,2721286,2721287,2721288,2721289,2721290,2721291,2721292,2721293,2721294,2721295],"Warped Slab":[2714368,2714369,2714370],"Warped Stairs":[2720512,2720513,2720514,2720515,2720516,2720517,2720518,2720519],"Warped Stem":[2715136,2715137,2715138,2715139,2715140,2715141],"Warped Trapdoor":[2716672,2716673,2716674,2716675,2716676,2716677,2716678,2716679,2716680,2716681,2716682,2716683,2716684,2716685,2716686,2716687],"Warped Wall Sign":[2722048,2722049,2722050,2722051],"Warped Wart Block":[2726912],"Water":[2695936,2695937,2695938,2695939,2695940,2695941,2695942,2695943,2695944,2695945,2695946,2695947,2695948,2695949,2695950,2695951,2695952,2695953,2695954,2695955,2695956,2695957,2695958,2695959,2695960,2695961,2695962,2695963,2695964,2695965,2695966,2695967],"Water Cauldron":[2731776,2731777,2731778,2731779,2731780,2731781],"Weeping Vines":[2734336,2734337,2734338,2734339,2734340,2734341,2734342,2734343,2734344,2734345,2734346,2734347,2734348,2734349,2734350,2734351,2734352,2734353,2734354,2734355,2734356,2734357,2734358,2734359,2734360,2734361],"Weighted Pressure Plate Heavy":[2696192,2696193,2696194,2696195,2696196,2696197,2696198,2696199,2696200,2696201,2696202,2696203,2696204,2696205,2696206,2696207],"Weighted Pressure Plate Light":[2696448,2696449,2696450,2696451,2696452,2696453,2696454,2696455,2696456,2696457,2696458,2696459,2696460,2696461,2696462,2696463],"Wheat Block":[2696704,2696705,2696706,2696707,2696708,2696709,2696710,2696711],"White Tulip":[2697216],"Wither Rose":[2729984],"Wool":[2697472,2697473,2697474,2697475,2697476,2697477,2697478,2697479,2697480,2697481,2697482,2697483,2697484,2697485,2697486,2697487],"Xenon":[2623232],"Ytterbium":[2623488],"Yttrium":[2623744],"Zinc":[2624256],"Zirconium":[2624512],"ate!upd":[2637056],"reserved6":[2674944],"update!":[2636800]},"stateDataBits":8} \ No newline at end of file From 8933064cd575d3e057e500e6bd907765133fed35 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 Mar 2023 17:02:33 +0000 Subject: [PATCH 547/692] Fixed missing blockstate upgrader --- src/world/format/io/GlobalBlockStateHandlers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 1d7476acd..0fbc1c91a 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -43,7 +43,7 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; * benefits for now. */ final class GlobalBlockStateHandlers{ - public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 151; //https://github.com/pmmp/BedrockBlockUpgradeSchema/blob/b0cc441e029cf5a6de5b05dd0f5657208855232b/nbt_upgrade_schema/0151_1.19.0.34_beta_to_1.19.20.json + public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 161; //0161_1.19.50_to_1.19.60.26_beta.json private static ?BlockObjectToStateSerializer $blockStateSerializer = null; From a49957682e3952466cef4645d53b069b660ede12 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Mar 2023 15:15:05 +0000 Subject: [PATCH 548/692] Update RakLib --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 95125029e..8caa44c21 100644 --- a/composer.lock +++ b/composer.lock @@ -780,16 +780,16 @@ }, { "name": "pocketmine/raklib", - "version": "0.15.0", + "version": "0.15.1", "source": { "type": "git", "url": "https://github.com/pmmp/RakLib.git", - "reference": "1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1" + "reference": "79b7b4d1d7516dc6e322514453645ad9452b20ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/RakLib/zipball/1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1", - "reference": "1f490cff6bf5e9eb46ebdbf7a7994d62be2bd2c1", + "url": "https://api.github.com/repos/pmmp/RakLib/zipball/79b7b4d1d7516dc6e322514453645ad9452b20ca", + "reference": "79b7b4d1d7516dc6e322514453645ad9452b20ca", "shasum": "" }, "require": { @@ -817,9 +817,9 @@ "description": "A RakNet server implementation written in PHP", "support": { "issues": "https://github.com/pmmp/RakLib/issues", - "source": "https://github.com/pmmp/RakLib/tree/0.15.0" + "source": "https://github.com/pmmp/RakLib/tree/0.15.1" }, - "time": "2023-02-13T12:56:35+00:00" + "time": "2023-03-07T15:10:34+00:00" }, { "name": "pocketmine/raklib-ipc", From 9d442f2104b934b4031af93b650ad80cff745fc0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Mar 2023 15:25:22 +0000 Subject: [PATCH 549/692] Update composer dependencies --- composer.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/composer.lock b/composer.lock index 8caa44c21..554bdb240 100644 --- a/composer.lock +++ b/composer.lock @@ -250,16 +250,16 @@ }, { "name": "pocketmine/bedrock-block-upgrade-schema", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4" + "reference": "78c965a2316986ac0eaf3235d75efb187127e7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/a05ce434eb7f8c11058d26833bc975fe635b23b4", - "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/78c965a2316986ac0eaf3235d75efb187127e7a2", + "reference": "78c965a2316986ac0eaf3235d75efb187127e7a2", "shasum": "" }, "type": "library", @@ -270,9 +270,9 @@ "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", "support": { "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", - "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.0.0" + "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.1.0" }, - "time": "2023-02-01T21:09:54+00:00" + "time": "2023-03-06T17:53:36+00:00" }, { "name": "pocketmine/bedrock-data", @@ -1608,16 +1608,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { @@ -1658,9 +1658,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "phar-io/manifest", @@ -1935,16 +1935,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.25", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "0e2b40518197a8c0d4b08bc34dfff1c99c508954" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/0e2b40518197a8c0d4b08bc34dfff1c99c508954", - "reference": "0e2b40518197a8c0d4b08bc34dfff1c99c508954", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { @@ -1966,8 +1966,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -2000,7 +2000,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.25" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -2008,7 +2008,7 @@ "type": "github" } ], - "time": "2023-02-25T05:32:00+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", From 9e329d55a8d25b5857cfcb882d5ea383b4ec3e6f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Mar 2023 16:51:53 +0000 Subject: [PATCH 550/692] Release 5.0.0-BETA1 --- changelogs/5.0-beta.md | 44 ++++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 6 +++--- 2 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 changelogs/5.0-beta.md diff --git a/changelogs/5.0-beta.md b/changelogs/5.0-beta.md new file mode 100644 index 000000000..0fef808fc --- /dev/null +++ b/changelogs/5.0-beta.md @@ -0,0 +1,44 @@ +**For Minecraft: Bedrock Edition 1.19.62** + +5.0.0 is a major update to PocketMine-MP, including many new features and API changes. It is **not** compatible with plugins written for previous versions of PocketMine-MP. + +**During the beta phase, no new features will be added.** + +This stage of development is focused on stability and cleaning up any major issues introduced during the alpha stage. + +## WARNING +**This is a BETA release.** This means that it may be unstable, and is not yet ready for production use. + +Since this version has undergone substantial changes compared to 4.x, plugins written for 4.x will need to be updated to work on this version. + +Breaking API changes may still occur during the beta phase, but only if they are strictly necessary to fix a problem prior to full release. + +**BACK UP your data before testing this.** This version will work with worlds and player data from 4.x, +BUT any world or player data loaded in 5.0.0 will not work in 4.x due to backwards-incompatible storage format changes. + +# 5.0.0-BETA1 +Released 7th March 2023. + +**This release includes changes from the following releases:** +- [All 5.0.0 alpha releases](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA1/changelogs/5.0-alpha.md) +- [4.15.2](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA1/changelogs/4.15.md#4152) +- [4.15.3](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA1/changelogs/4.15.md#4153) +- [4.16.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA1/changelogs/4.16.md#4160) + +## API +### `pocketmine\block` +- Improved documentation for the following methods: + - `Block->getTypeId()` + - `Block->getStateId()` + - `Block->describeType()` + - `Block->describeState()` + +### `pocketmine\command` +- The following API methods have been renamed: + - `Command->getPermission()` -> `Command->getPermissions()` + +## Internals +- The following methods have been renamed: + - `Block->computeStateData()` -> `Block->computeTypeAndStateData()` + - `Block->decodeStateData()` -> `Block->decodeTypeAndStateData()` +- Wall state data now packs connections into 7 bits instead of 8. \ No newline at end of file diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 51f9cca15..05e917d81 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,9 +31,9 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-ALPHA10"; - public const IS_DEVELOPMENT_BUILD = true; - public const BUILD_CHANNEL = "alpha"; + public const BASE_VERSION = "5.0.0-BETA1"; + public const IS_DEVELOPMENT_BUILD = false; + public const BUILD_CHANNEL = "beta"; private function __construct(){ //NOOP From 867b8945e42f92b639c93199d458f9cc5e3ba9f6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Mar 2023 16:51:57 +0000 Subject: [PATCH 551/692] 5.0.0-BETA2 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 05e917d81..fd4a0409b 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-BETA1"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-BETA2"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; private function __construct(){ From fff8f0f81517ab12d21793b94c70c9a8bc580d92 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 7 Mar 2023 17:08:35 +0000 Subject: [PATCH 552/692] Use Item->canStackWith() instead of Item->equals() wherever possible --- src/block/tile/Furnace.php | 2 +- src/item/Item.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/tile/Furnace.php b/src/block/tile/Furnace.php index 5364e1d27..a706a827e 100644 --- a/src/block/tile/Furnace.php +++ b/src/block/tile/Furnace.php @@ -165,7 +165,7 @@ abstract class Furnace extends Spawnable implements Container, Nameable{ $furnaceType = $this->getFurnaceType(); $smelt = $this->position->getWorld()->getServer()->getCraftingManager()->getFurnaceRecipeManager($furnaceType)->match($raw); - $canSmelt = ($smelt instanceof FurnaceRecipe && $raw->getCount() > 0 && (($smelt->getResult()->equals($product) && $product->getCount() < $product->getMaxStackSize()) || $product->isNull())); + $canSmelt = ($smelt instanceof FurnaceRecipe && $raw->getCount() > 0 && (($smelt->getResult()->canStackWith($product) && $product->getCount() < $product->getMaxStackSize()) || $product->isNull())); if($this->remainingFuelTime <= 0 && $canSmelt && $fuel->getFuelTime() > 0 && $fuel->getCount() > 0){ $this->checkFuel($fuel); diff --git a/src/item/Item.php b/src/item/Item.php index ea2bd6125..d340eb760 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -637,7 +637,7 @@ class Item implements \JsonSerializable{ * Returns whether the specified item stack has the same ID, damage, NBT and count as this item stack. */ final public function equalsExact(Item $other) : bool{ - return $this->equals($other, true, true) && $this->count === $other->count; + return $this->canStackWith($other) && $this->count === $other->count; } final public function __toString() : string{ From 6151576baa1c3d933735998b07f032d3fe585aed Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 1 Feb 2023 01:19:50 +0000 Subject: [PATCH 553/692] Added model for smithing recipe --- .../CraftingManagerFromDataHelper.php | 2 + .../json/SmithingTransformRecipeData.php | 43 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/crafting/json/SmithingTransformRecipeData.php diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 228e3623a..0a28ca328 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -333,6 +333,8 @@ final class CraftingManagerFromDataHelper{ )); } + //TODO: smithing + return $result; } } diff --git a/src/crafting/json/SmithingTransformRecipeData.php b/src/crafting/json/SmithingTransformRecipeData.php new file mode 100644 index 000000000..dfb203a07 --- /dev/null +++ b/src/crafting/json/SmithingTransformRecipeData.php @@ -0,0 +1,43 @@ +input = $input; + $this->addition = $addition; + $this->output = $output; + $this->block = $block; + } +} \ No newline at end of file From 9b1ec261c47bf8ea4c733541399d72bd6a820b06 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Mar 2023 22:20:12 +0000 Subject: [PATCH 554/692] ... --- src/crafting/json/SmithingTransformRecipeData.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crafting/json/SmithingTransformRecipeData.php b/src/crafting/json/SmithingTransformRecipeData.php index dfb203a07..3ad78f48d 100644 --- a/src/crafting/json/SmithingTransformRecipeData.php +++ b/src/crafting/json/SmithingTransformRecipeData.php @@ -40,4 +40,4 @@ final class SmithingTransformRecipeData{ $this->output = $output; $this->block = $block; } -} \ No newline at end of file +} From 54c19fd662812a37758569be7d18c85d8435d7dc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Mar 2023 23:04:09 +0000 Subject: [PATCH 555/692] Open-source script that generates recipes and other goodies for BedrockData this script has been lurking in my workspace for years, waiting to be cleaned up and open-sourced. --- tools/generate-bedrock-data-from-packets.php | 558 +++++++++++++++++++ 1 file changed, 558 insertions(+) create mode 100644 tools/generate-bedrock-data-from-packets.php diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php new file mode 100644 index 000000000..3dc8ad172 --- /dev/null +++ b/tools/generate-bedrock-data-from-packets.php @@ -0,0 +1,558 @@ +blockMapping = new RuntimeBlockMapping( + BlockStateDictionary::loadFromString( + Filesystem::fileGetContents(Path::join($this->bedrockDataPath, "canonical_block_states.nbt")), + Filesystem::fileGetContents(Path::join($this->bedrockDataPath, "block_state_meta_map.json")), + ), + GlobalBlockStateHandlers::getSerializer() + ); + } + + private static function blockStatePropertiesToString(BlockStateData $blockStateData) : string{ + $statePropertiesTag = CompoundTag::create(); + foreach(Utils::stringifyKeys($blockStateData->getStates()) as $name => $value){ + $statePropertiesTag->setTag($name, $value); + } + return base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($statePropertiesTag))); + } + + private function itemStackToJson(ItemStack $itemStack) : ItemStackData{ + if($itemStack->getId() === 0){ + throw new InvalidArgumentException("Cannot serialize a null itemstack"); + } + if($this->itemTypeDictionary === null){ + throw new PacketHandlingException("Can't process item yet; haven't received item type dictionary"); + } + $data = new ItemStackData($this->itemTypeDictionary->fromIntId($itemStack->getId())); + + if($itemStack->getCount() !== 1){ + $data->count = $itemStack->getCount(); + } + + $meta = $itemStack->getMeta(); + if($meta === 32767){ + $meta = 0; //kick wildcard magic bullshit + } + if($itemStack->getBlockRuntimeId() !== 0){ + if($meta !== 0){ + throw new PacketHandlingException("Unexpected non-zero blockitem meta"); + } + $blockState = $this->blockMapping->getBlockStateDictionary()->getDataFromStateId($itemStack->getBlockRuntimeId()) ?? null; + if($blockState === null){ + throw new PacketHandlingException("Unmapped blockstate ID " . $itemStack->getBlockRuntimeId()); + } + + $stateProperties = $blockState->getStates(); + if(count($stateProperties) > 0){ + $data->block_states = self::blockStatePropertiesToString($blockState); + } + }elseif($meta !== 0){ + $data->meta = $meta; + } + + $nbt = $itemStack->getNbt(); + if($nbt !== null && count($nbt) > 0){ + $data->nbt = base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($nbt))); + } + + if(count($itemStack->getCanPlaceOn()) > 0){ + $data->can_place_on = $itemStack->getCanPlaceOn(); + } + if(count($itemStack->getCanDestroy()) > 0){ + $data->can_destroy = $itemStack->getCanDestroy(); + } + + return $data; + } + + /** + * @return mixed[] + */ + private static function objectToOrderedArray(object $object) : array{ + $result = (array) $object; + ksort($result, SORT_STRING); + + foreach($result as $property => $value){ + if(is_object($value)){ + $result[$property] = self::objectToOrderedArray($value); + }elseif(is_array($value)){ + $array = []; + foreach($value as $k => $v){ + if(is_object($v)){ + $array[$k] = self::objectToOrderedArray($v); + }else{ + $array[$k] = $v; + } + } + + $result[$property] = $array; + } + } + + return $result; + } + + private static function sort(mixed $object) : mixed{ + if(is_object($object)){ + return self::objectToOrderedArray($object); + } + if(is_array($object)){ + $result = []; + foreach($object as $k => $v){ + $result[$k] = self::sort($v); + } + return $result; + } + + return $object; + } + + public function handleStartGame(StartGamePacket $packet) : bool{ + $this->itemTypeDictionary = new ItemTypeDictionary($packet->itemTable); + + echo "updating legacy item ID mapping table\n"; + $table = []; + foreach($packet->itemTable as $entry){ + $table[$entry->getStringId()] = [ + "runtime_id" => $entry->getNumericId(), + "component_based" => $entry->isComponentBased() + ]; + } + ksort($table, SORT_STRING); + file_put_contents($this->bedrockDataPath . '/required_item_list.json', json_encode($table, JSON_PRETTY_PRINT) . "\n"); + + foreach($packet->levelSettings->experiments->getExperiments() as $name => $experiment){ + echo "Experiment \"$name\" is " . ($experiment ? "" : "not ") . "active\n"; + } + return true; + } + + public function handleCreativeContent(CreativeContentPacket $packet) : bool{ + echo "updating creative inventory data\n"; + $items = array_map(function(CreativeContentEntry $entry) : array{ + return self::objectToOrderedArray($this->itemStackToJson($entry->getItem())); + }, $packet->getEntries()); + file_put_contents($this->bedrockDataPath . '/creativeitems.json', json_encode($items, JSON_PRETTY_PRINT) . "\n"); + return true; + } + + private function recipeIngredientToJson(RecipeIngredient $itemStack) : RecipeIngredientData{ + if($this->itemTypeDictionary === null){ + throw new PacketHandlingException("Can't process item yet; haven't received item type dictionary"); + } + + $descriptor = $itemStack->getDescriptor(); + if($descriptor === null){ + throw new PacketHandlingException("Can't json-serialize a null recipe ingredient"); + } + $data = new RecipeIngredientData(); + + if($descriptor instanceof IntIdMetaItemDescriptor || $descriptor instanceof StringIdMetaItemDescriptor){ + if($descriptor instanceof IntIdMetaItemDescriptor){ + $data->name = $this->itemTypeDictionary->fromIntId($descriptor->getId()); + }else{ + $data->name = $descriptor->getId(); + } + $meta = $descriptor->getMeta(); + if($meta !== 32767){ + $blockStateId = $this->blockMapping->getBlockStateDictionary()->lookupStateIdFromIdMeta($data->name, $meta); + if($blockStateId !== null){ + $blockState = $this->blockMapping->getBlockStateDictionary()->getDataFromStateId($blockStateId); + if($blockState !== null && count($blockState->getStates()) > 0){ + $data->block_states = self::blockStatePropertiesToString($blockState); + } + }elseif($meta !== 0){ + $data->meta = $meta; + } + }else{ + $data->meta = $meta; + } + }elseif($descriptor instanceof TagItemDescriptor){ + $data->tag = $descriptor->getTag(); + }elseif($descriptor instanceof MolangItemDescriptor){ + $data->molang_expression = $descriptor->getMolangExpression(); + $data->molang_version = $descriptor->getMolangVersion(); + }elseif($descriptor instanceof ComplexAliasItemDescriptor){ + $data->name = $descriptor->getAlias(); + }else{ + throw new \UnexpectedValueException("Unknown item descriptor type " . get_class($descriptor)); + } + if($itemStack->getCount() !== 1){ + $data->count = $itemStack->getCount(); + } + + return $data; + } + + private function shapedRecipeToJson(ShapedRecipe $entry) : ShapedRecipeData{ + $keys = []; + + $shape = []; + $char = ord("A"); + + $outputsByKey = []; + foreach($entry->getInput() as $x => $row){ + foreach($row as $y => $ingredient){ + if($ingredient->getDescriptor() === null){ + $shape[$x][$y] = " "; + }else{ + $jsonIngredient = $this->recipeIngredientToJson($ingredient); + $hash = json_encode($jsonIngredient, JSON_THROW_ON_ERROR); + if(isset($keys[$hash])){ + $shape[$x][$y] = $keys[$hash]; + }else{ + $key = chr($char); + $keys[$hash] = $shape[$x][$y] = $key; + $outputsByKey[$key] = $jsonIngredient; + $char++; + } + } + } + } + return new ShapedRecipeData( + array_map(fn(array $array) => implode('', $array), $shape), + $outputsByKey, + array_map(fn(ItemStack $output) => $this->itemStackToJson($output), $entry->getOutput()), + $entry->getBlockName(), + $entry->getPriority() + ); + } + + private function shapelessRecipeToJson(ShapelessRecipe $recipe) : ShapelessRecipeData{ + return new ShapelessRecipeData( + array_map(fn(RecipeIngredient $input) => $this->recipeIngredientToJson($input), $recipe->getInputs()), + array_map(fn(ItemStack $output) => $this->itemStackToJson($output), $recipe->getOutputs()), + $recipe->getBlockName(), + $recipe->getPriority() + ); + } + + private function furnaceRecipeToJson(FurnaceRecipe $recipe) : FurnaceRecipeData{ + return new FurnaceRecipeData( + $this->recipeIngredientToJson(new RecipeIngredient(new IntIdMetaItemDescriptor($recipe->getInputId(), $recipe->getInputMeta() ?? 32767), 1)), + $this->itemStackToJson($recipe->getResult()), + $recipe->getBlockName() + ); + } + + private function smithingRecipeToJson(SmithingTransformRecipe $recipe) : SmithingTransformRecipeData{ + return new SmithingTransformRecipeData( + $this->recipeIngredientToJson($recipe->getInput()), + $this->recipeIngredientToJson($recipe->getAddition()), + $this->itemStackToJson($recipe->getOutput()), + $recipe->getBlockName() + ); + } + + public function handleCraftingData(CraftingDataPacket $packet) : bool{ + echo "updating crafting data\n"; + + $recipesPath = Path::join($this->bedrockDataPath, "recipes"); + Filesystem::recursiveUnlink($recipesPath); + @mkdir($recipesPath); + + $recipes = []; + foreach($packet->recipesWithTypeIds as $entry){ + static $typeMap = [ + CraftingDataPacket::ENTRY_SHAPELESS => "shapeless_crafting", + CraftingDataPacket::ENTRY_SHAPED => "shaped_crafting", + CraftingDataPacket::ENTRY_FURNACE => "smelting", + CraftingDataPacket::ENTRY_FURNACE_DATA => "smelting", + CraftingDataPacket::ENTRY_MULTI => "special_hardcoded", + CraftingDataPacket::ENTRY_SHULKER_BOX => "shapeless_shulker_box", + CraftingDataPacket::ENTRY_SHAPELESS_CHEMISTRY => "shapeless_chemistry", + CraftingDataPacket::ENTRY_SHAPED_CHEMISTRY => "shaped_chemistry", + CraftingDataPacket::ENTRY_SMITHING_TRANSFORM => "smithing", + ]; + if(!isset($typeMap[$entry->getTypeId()])){ + throw new \UnexpectedValueException("Unknown recipe type ID " . $entry->getTypeId()); + } + $mappedType = $typeMap[$entry->getTypeId()]; + + if($entry instanceof ShapedRecipe){ + $recipes[$mappedType][] = $this->shapedRecipeToJson($entry); + }elseif($entry instanceof ShapelessRecipe){ + $recipes[$mappedType][] = $this->shapelessRecipeToJson($entry); + }elseif($entry instanceof MultiRecipe){ + $recipes[$mappedType][] = $entry->getRecipeId()->toString(); + }elseif($entry instanceof FurnaceRecipe){ + $recipes[$mappedType][] = $this->furnaceRecipeToJson($entry); + }elseif($entry instanceof SmithingTransformRecipe){ + $recipes[$mappedType][] = $this->smithingRecipeToJson($entry); + }else{ + throw new AssumptionFailedError("Unknown recipe type " . get_class($entry)); + } + } + + foreach($packet->potionTypeRecipes as $recipe){ + $recipes["potion_type"][] = new PotionTypeRecipeData( + $this->recipeIngredientToJson(new RecipeIngredient(new IntIdMetaItemDescriptor($recipe->getInputItemId(), $recipe->getInputItemMeta()), 1)), + $this->recipeIngredientToJson(new RecipeIngredient(new IntIdMetaItemDescriptor($recipe->getIngredientItemId(), $recipe->getIngredientItemMeta()), 1)), + $this->itemStackToJson(new ItemStack($recipe->getOutputItemId(), $recipe->getOutputItemMeta(), 1, 0, null, [], [], null)), + ); + } + + if($this->itemTypeDictionary === null){ + throw new AssumptionFailedError("We should have already crashed if this was null"); + } + foreach($packet->potionContainerRecipes as $recipe){ + $recipes["potion_container_change"][] = new PotionContainerChangeRecipeData( + $this->itemTypeDictionary->fromIntId($recipe->getInputItemId()), + $this->recipeIngredientToJson(new RecipeIngredient(new IntIdMetaItemDescriptor($recipe->getIngredientItemId(), 0), 1)), + $this->itemTypeDictionary->fromIntId($recipe->getOutputItemId()), + ); + } + + //this sorts the data into a canonical order to make diffs between versions reliable + //how the data is ordered doesn't matter as long as it's reproducible + foreach($recipes as $_type => $entries){ + $_sortedRecipes = []; + foreach($entries as $entry){ + $entry = self::sort($entry); + $_key = json_encode($entry); + while(isset($_sortedRecipes[$_key])){ + echo "warning: duplicated $_type recipe: $_key\n"; + $_key .= "a"; + } + $_sortedRecipes[$_key] = $entry; + } + ksort($_sortedRecipes, SORT_STRING); + $recipes[$_type] = array_values($_sortedRecipes); + } + + ksort($recipes, SORT_STRING); + foreach($recipes as $type => $entries){ + echo "$type: " . count($entries) . "\n"; + } + foreach($recipes as $type => $entries){ + file_put_contents(Path::join($recipesPath, $type . '.json'), json_encode($entries, JSON_PRETTY_PRINT) . "\n"); + } + + return true; + } + + public function handleAvailableActorIdentifiers(AvailableActorIdentifiersPacket $packet) : bool{ + echo "storing actor identifiers" . PHP_EOL; + + $tag = $packet->identifiers->getRoot(); + if(!($tag instanceof CompoundTag)){ + throw new AssumptionFailedError(); + } + $idList = $tag->getTag("idlist"); + if(!($idList instanceof ListTag) || $idList->getTagType() !== NBT::TAG_Compound){ + echo $tag . "\n"; + throw new \RuntimeException("expected TAG_List(\"idlist\") tag inside root TAG_Compound"); + } + if($tag->count() > 1){ + echo $tag . "\n"; + echo "!!! unexpected extra data found in available actor identifiers\n"; + } + echo "updating legacy => string entity ID mapping table\n"; + $map = []; + /** + * @var CompoundTag $thing + */ + foreach($idList as $thing){ + $map[$thing->getString("id")] = $thing->getInt("rid"); + } + asort($map, SORT_NUMERIC); + file_put_contents($this->bedrockDataPath . '/entity_id_map.json', json_encode($map, JSON_PRETTY_PRINT) . "\n"); + echo "storing entity identifiers\n"; + file_put_contents($this->bedrockDataPath . '/entity_identifiers.nbt', $packet->identifiers->getEncodedNbt()); + return true; + } + + public function handleBiomeDefinitionList(BiomeDefinitionListPacket $packet) : bool{ + echo "storing biome definitions" . PHP_EOL; + + file_put_contents($this->bedrockDataPath . '/biome_definitions_full.nbt', $packet->definitions->getEncodedNbt()); + + $nbt = $packet->definitions->getRoot(); + if(!$nbt instanceof CompoundTag){ + throw new AssumptionFailedError(); + } + $strippedNbt = clone $nbt; + foreach($strippedNbt as $compound){ + if($compound instanceof CompoundTag){ + foreach([ + "minecraft:capped_surface", + "minecraft:consolidated_features", + "minecraft:frozen_ocean_surface", + "minecraft:legacy_world_generation_rules", + "minecraft:mesa_surface", + "minecraft:mountain_parameters", + "minecraft:multinoise_generation_rules", + "minecraft:overworld_generation_rules", + "minecraft:surface_material_adjustments", + "minecraft:surface_parameters", + "minecraft:swamp_surface", + ] as $remove){ + $compound->removeTag($remove); + } + } + } + + file_put_contents($this->bedrockDataPath . '/biome_definitions.nbt', (new CacheableNbt($strippedNbt))->getEncodedNbt()); + + return true; + } +} + +/** + * @param string[] $argv + */ +function main(array $argv) : int{ + if(count($argv) !== 3){ + fwrite(STDERR, 'Usage: ' . PHP_BINARY . ' ' . __FILE__ . ' '); + return 1; + } + [, $inputFile, $bedrockDataPath] = $argv; + + $handler = new ParserPacketHandler($bedrockDataPath); + + $packets = file($inputFile, FILE_IGNORE_NEW_LINES); + if($packets === false){ + fwrite(STDERR, 'File ' . $inputFile . ' not found or permission denied'); + return 1; + } + + foreach($packets as $lineNum => $line){ + $parts = explode(':', $line); + if(count($parts) !== 2){ + fwrite(STDERR, 'Wrong packet format at line ' . ($lineNum + 1) . ', expected read:base64 or write:base64'); + return 1; + } + $raw = base64_decode($parts[1], true); + if($raw === false){ + fwrite(STDERR, 'Invalid base64\'d packet on line ' . ($lineNum + 1) . ' could not be parsed'); + return 1; + } + + $pk = PacketPool::getInstance()->getPacket($raw); + if($pk === null){ + fwrite(STDERR, "Unknown packet on line " . ($lineNum + 1) . ": " . $parts[1]); + continue; + } + $serializer = PacketSerializer::decoder($raw, 0, new PacketSerializerContext( + $handler->itemTypeDictionary ?? + new ItemTypeDictionary([new ItemTypeEntry("minecraft:shield", 0, false)])) + ); + + $pk->decode($serializer); + $pk->handle($handler); + if(!$serializer->feof()){ + echo "Packet on line " . ($lineNum + 1) . ": didn't read all data from " . get_class($pk) . " (stopped at offset " . $serializer->getOffset() . " of " . strlen($serializer->getBuffer()) . " bytes): " . bin2hex($serializer->getRemaining()) . "\n"; + } + } + return 0; +} + +exit(main($argv)); From 2b88b215bfa1b47a588f6cd32eec252526fcc889 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Mar 2023 23:10:11 +0000 Subject: [PATCH 556/692] CS cleanup --- tools/generate-bedrock-data-from-packets.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 3dc8ad172..7be3ad1ab 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -17,7 +17,7 @@ * @link http://www.pocketmine.net/ * * -*/ + */ declare(strict_types=1); @@ -87,13 +87,16 @@ use function fwrite; use function get_class; use function implode; use function is_array; +use function is_object; use function json_encode; use function ksort; +use function mkdir; use function ord; use function strlen; use const FILE_IGNORE_NEW_LINES; use const JSON_PRETTY_PRINT; use const JSON_THROW_ON_ERROR; +use const PHP_BINARY; use const PHP_EOL; use const SORT_NUMERIC; use const SORT_STRING; From 7c95a65aded7f0430536950181103ae8b8f45fa9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 8 Mar 2023 23:14:11 +0000 Subject: [PATCH 557/692] ... --- tools/generate-bedrock-data-from-packets.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 7be3ad1ab..853c8e39f 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -53,7 +53,6 @@ use pocketmine\network\mcpe\protocol\types\CacheableNbt; use pocketmine\network\mcpe\protocol\types\inventory\CreativeContentEntry; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\ItemTypeEntry; -use pocketmine\network\mcpe\protocol\types\recipe\ComplexAliasItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\FurnaceRecipe; use pocketmine\network\mcpe\protocol\types\recipe\IntIdMetaItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\MolangItemDescriptor; @@ -283,8 +282,6 @@ class ParserPacketHandler extends PacketHandler{ }elseif($descriptor instanceof MolangItemDescriptor){ $data->molang_expression = $descriptor->getMolangExpression(); $data->molang_version = $descriptor->getMolangVersion(); - }elseif($descriptor instanceof ComplexAliasItemDescriptor){ - $data->name = $descriptor->getAlias(); }else{ throw new \UnexpectedValueException("Unknown item descriptor type " . get_class($descriptor)); } From a12319436850673c98b441a4094da0681fc9e81c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Mar 2023 16:14:19 +0000 Subject: [PATCH 558/692] BlockStateData: added getVersionAsString() --- src/data/bedrock/block/BlockStateData.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index 6ac0184f7..00eb947f9 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -80,6 +80,14 @@ final class BlockStateData{ public function getVersion() : int{ return $this->version; } + public function getVersionAsString() : string{ + $major = ($this->version >> 24) & 0xff; + $minor = ($this->version >> 16) & 0xff; + $patch = ($this->version >> 8) & 0xff; + $revision = $this->version & 0xff; + return "$major.$minor.$patch.$revision"; + } + /** * @throws BlockStateDeserializeException */ From 85a64d56fbce9f38ecafd5ce3fe1c52837648eac Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Mar 2023 18:42:01 +0000 Subject: [PATCH 559/692] Updated composer dependencies (major-next) --- composer.lock | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/composer.lock b/composer.lock index 28e657c4a..b379351ce 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9751c90077792bd5d12ebb53a0214ec1", + "content-hash": "1fce2212ea8f1510f2d68da4f46023db", "packages": [ { "name": "adhocore/json-comment", @@ -250,16 +250,16 @@ }, { "name": "pocketmine/bedrock-block-upgrade-schema", - "version": "1.1.0", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "78c965a2316986ac0eaf3235d75efb187127e7a2" + "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/78c965a2316986ac0eaf3235d75efb187127e7a2", - "reference": "78c965a2316986ac0eaf3235d75efb187127e7a2", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/a05ce434eb7f8c11058d26833bc975fe635b23b4", + "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4", "shasum": "" }, "type": "library", @@ -270,9 +270,9 @@ "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", "support": { "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", - "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.1.0" + "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.0.0" }, - "time": "2023-03-06T17:53:36+00:00" + "time": "2023-02-01T21:09:54+00:00" }, { "name": "pocketmine/bedrock-data", @@ -1549,16 +1549,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -1596,7 +1596,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -1604,7 +1604,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", @@ -1775,16 +1775,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.4", + "version": "1.10.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "8d39218664b45a4a42d5be66d2b63dcf8c149982" + "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8d39218664b45a4a42d5be66d2b63dcf8c149982", - "reference": "8d39218664b45a4a42d5be66d2b63dcf8c149982", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d089a3e0904b0fe7e2cf2d4fd37d427d64235a", + "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a", "shasum": "" }, "require": { @@ -1814,7 +1814,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.10.4" + "source": "https://github.com/phpstan/phpstan/tree/1.10.6" }, "funding": [ { @@ -1830,7 +1830,7 @@ "type": "tidelift" } ], - "time": "2023-03-06T13:39:20+00:00" + "time": "2023-03-09T16:55:12+00:00" }, { "name": "phpstan/phpstan-phpunit", @@ -2253,16 +2253,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.4", + "version": "9.6.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9125ee085b6d95e78277dc07aa1f46f9e0607b8d" + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9125ee085b6d95e78277dc07aa1f46f9e0607b8d", - "reference": "9125ee085b6d95e78277dc07aa1f46f9e0607b8d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86e761949019ae83f49240b2f2123fb5ab3b2fc5", + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5", "shasum": "" }, "require": { @@ -2295,8 +2295,8 @@ "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -2335,7 +2335,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.5" }, "funding": [ { @@ -2351,7 +2351,7 @@ "type": "tidelift" } ], - "time": "2023-02-27T13:06:37+00:00" + "time": "2023-03-09T06:34:10+00:00" }, { "name": "sebastian/cli-parser", From 777b4d6ac3c79e88c53310dc800f16a38fe4a0f6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Mar 2023 18:50:04 +0000 Subject: [PATCH 560/692] PM5-specific updates for 1.19.70 --- src/data/bedrock/block/BlockStateData.php | 6 +- src/data/bedrock/block/BlockStateNames.php | 1 + src/data/bedrock/block/BlockTypeNames.php | 21 +++++- .../convert/BlockObjectToStateSerializer.php | 72 ++++++++++++------- .../BlockStateToObjectDeserializer.php | 57 +++++++++------ src/data/bedrock/item/ItemTypeNames.php | 8 +++ .../format/io/GlobalBlockStateHandlers.php | 2 +- .../format/io/GlobalItemDataHandlers.php | 2 +- tools/generate-bedrock-data-from-packets.php | 3 + 9 files changed, 120 insertions(+), 52 deletions(-) diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index 00eb947f9..cc04bc31c 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -40,9 +40,9 @@ final class BlockStateData{ */ public const CURRENT_VERSION = (1 << 24) | //major - (18 << 16) | //minor - (10 << 8) | //patch - (1); //revision + (19 << 16) | //minor + (70 << 8) | //patch + (15); //revision public const TAG_NAME = "name"; public const TAG_STATES = "states"; diff --git a/src/data/bedrock/block/BlockStateNames.php b/src/data/bedrock/block/BlockStateNames.php index 96cfc1fa5..47838373f 100644 --- a/src/data/bedrock/block/BlockStateNames.php +++ b/src/data/bedrock/block/BlockStateNames.php @@ -48,6 +48,7 @@ final class BlockStateNames{ public const BREWING_STAND_SLOT_A_BIT = "brewing_stand_slot_a_bit"; public const BREWING_STAND_SLOT_B_BIT = "brewing_stand_slot_b_bit"; public const BREWING_STAND_SLOT_C_BIT = "brewing_stand_slot_c_bit"; + public const BRUSHED_PROGRESS = "brushed_progress"; public const BUTTON_PRESSED_BIT = "button_pressed_bit"; public const CAN_SUMMON = "can_summon"; public const CANDLES = "candles"; diff --git a/src/data/bedrock/block/BlockTypeNames.php b/src/data/bedrock/block/BlockTypeNames.php index 913472c47..56526ea9d 100644 --- a/src/data/bedrock/block/BlockTypeNames.php +++ b/src/data/bedrock/block/BlockTypeNames.php @@ -94,6 +94,7 @@ final class BlockTypeNames{ public const BLACK_CANDLE = "minecraft:black_candle"; public const BLACK_CANDLE_CAKE = "minecraft:black_candle_cake"; public const BLACK_GLAZED_TERRACOTTA = "minecraft:black_glazed_terracotta"; + public const BLACK_WOOL = "minecraft:black_wool"; public const BLACKSTONE = "minecraft:blackstone"; public const BLACKSTONE_DOUBLE_SLAB = "minecraft:blackstone_double_slab"; public const BLACKSTONE_SLAB = "minecraft:blackstone_slab"; @@ -104,6 +105,7 @@ final class BlockTypeNames{ public const BLUE_CANDLE_CAKE = "minecraft:blue_candle_cake"; public const BLUE_GLAZED_TERRACOTTA = "minecraft:blue_glazed_terracotta"; public const BLUE_ICE = "minecraft:blue_ice"; + public const BLUE_WOOL = "minecraft:blue_wool"; public const BONE_BLOCK = "minecraft:bone_block"; public const BOOKSHELF = "minecraft:bookshelf"; public const BORDER_BLOCK = "minecraft:border_block"; @@ -115,6 +117,7 @@ final class BlockTypeNames{ public const BROWN_GLAZED_TERRACOTTA = "minecraft:brown_glazed_terracotta"; public const BROWN_MUSHROOM = "minecraft:brown_mushroom"; public const BROWN_MUSHROOM_BLOCK = "minecraft:brown_mushroom_block"; + public const BROWN_WOOL = "minecraft:brown_wool"; public const BUBBLE_COLUMN = "minecraft:bubble_column"; public const BUDDING_AMETHYST = "minecraft:budding_amethyst"; public const CACTUS = "minecraft:cactus"; @@ -201,6 +204,7 @@ final class BlockTypeNames{ public const CYAN_CANDLE = "minecraft:cyan_candle"; public const CYAN_CANDLE_CAKE = "minecraft:cyan_candle_cake"; public const CYAN_GLAZED_TERRACOTTA = "minecraft:cyan_glazed_terracotta"; + public const CYAN_WOOL = "minecraft:cyan_wool"; public const DARK_OAK_BUTTON = "minecraft:dark_oak_button"; public const DARK_OAK_DOOR = "minecraft:dark_oak_door"; public const DARK_OAK_FENCE_GATE = "minecraft:dark_oak_fence_gate"; @@ -214,6 +218,7 @@ final class BlockTypeNames{ public const DAYLIGHT_DETECTOR = "minecraft:daylight_detector"; public const DAYLIGHT_DETECTOR_INVERTED = "minecraft:daylight_detector_inverted"; public const DEADBUSH = "minecraft:deadbush"; + public const DECORATED_POT = "minecraft:decorated_pot"; public const DEEPSLATE = "minecraft:deepslate"; public const DEEPSLATE_BRICK_DOUBLE_SLAB = "minecraft:deepslate_brick_double_slab"; public const DEEPSLATE_BRICK_SLAB = "minecraft:deepslate_brick_slab"; @@ -417,9 +422,11 @@ final class BlockTypeNames{ public const GRAY_CANDLE = "minecraft:gray_candle"; public const GRAY_CANDLE_CAKE = "minecraft:gray_candle_cake"; public const GRAY_GLAZED_TERRACOTTA = "minecraft:gray_glazed_terracotta"; + public const GRAY_WOOL = "minecraft:gray_wool"; public const GREEN_CANDLE = "minecraft:green_candle"; public const GREEN_CANDLE_CAKE = "minecraft:green_candle_cake"; public const GREEN_GLAZED_TERRACOTTA = "minecraft:green_glazed_terracotta"; + public const GREEN_WOOL = "minecraft:green_wool"; public const GRINDSTONE = "minecraft:grindstone"; public const HANGING_ROOTS = "minecraft:hanging_roots"; public const HARD_GLASS = "minecraft:hard_glass"; @@ -469,13 +476,16 @@ final class BlockTypeNames{ public const LIGHT_BLUE_CANDLE = "minecraft:light_blue_candle"; public const LIGHT_BLUE_CANDLE_CAKE = "minecraft:light_blue_candle_cake"; public const LIGHT_BLUE_GLAZED_TERRACOTTA = "minecraft:light_blue_glazed_terracotta"; + public const LIGHT_BLUE_WOOL = "minecraft:light_blue_wool"; public const LIGHT_GRAY_CANDLE = "minecraft:light_gray_candle"; public const LIGHT_GRAY_CANDLE_CAKE = "minecraft:light_gray_candle_cake"; + public const LIGHT_GRAY_WOOL = "minecraft:light_gray_wool"; public const LIGHT_WEIGHTED_PRESSURE_PLATE = "minecraft:light_weighted_pressure_plate"; public const LIGHTNING_ROD = "minecraft:lightning_rod"; public const LIME_CANDLE = "minecraft:lime_candle"; public const LIME_CANDLE_CAKE = "minecraft:lime_candle_cake"; public const LIME_GLAZED_TERRACOTTA = "minecraft:lime_glazed_terracotta"; + public const LIME_WOOL = "minecraft:lime_wool"; public const LIT_BLAST_FURNACE = "minecraft:lit_blast_furnace"; public const LIT_DEEPSLATE_REDSTONE_ORE = "minecraft:lit_deepslate_redstone_ore"; public const LIT_FURNACE = "minecraft:lit_furnace"; @@ -490,6 +500,7 @@ final class BlockTypeNames{ public const MAGENTA_CANDLE = "minecraft:magenta_candle"; public const MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake"; public const MAGENTA_GLAZED_TERRACOTTA = "minecraft:magenta_glazed_terracotta"; + public const MAGENTA_WOOL = "minecraft:magenta_wool"; public const MAGMA = "minecraft:magma"; public const MANGROVE_BUTTON = "minecraft:mangrove_button"; public const MANGROVE_DOOR = "minecraft:mangrove_door"; @@ -548,6 +559,7 @@ final class BlockTypeNames{ public const ORANGE_CANDLE = "minecraft:orange_candle"; public const ORANGE_CANDLE_CAKE = "minecraft:orange_candle_cake"; public const ORANGE_GLAZED_TERRACOTTA = "minecraft:orange_glazed_terracotta"; + public const ORANGE_WOOL = "minecraft:orange_wool"; public const OXIDIZED_COPPER = "minecraft:oxidized_copper"; public const OXIDIZED_CUT_COPPER = "minecraft:oxidized_cut_copper"; public const OXIDIZED_CUT_COPPER_SLAB = "minecraft:oxidized_cut_copper_slab"; @@ -559,6 +571,7 @@ final class BlockTypeNames{ public const PINK_CANDLE = "minecraft:pink_candle"; public const PINK_CANDLE_CAKE = "minecraft:pink_candle_cake"; public const PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta"; + public const PINK_WOOL = "minecraft:pink_wool"; public const PISTON = "minecraft:piston"; public const PISTON_ARM_COLLISION = "minecraft:piston_arm_collision"; public const PLANKS = "minecraft:planks"; @@ -598,6 +611,7 @@ final class BlockTypeNames{ public const PURPLE_CANDLE = "minecraft:purple_candle"; public const PURPLE_CANDLE_CAKE = "minecraft:purple_candle_cake"; public const PURPLE_GLAZED_TERRACOTTA = "minecraft:purple_glazed_terracotta"; + public const PURPLE_WOOL = "minecraft:purple_wool"; public const PURPUR_BLOCK = "minecraft:purpur_block"; public const PURPUR_STAIRS = "minecraft:purpur_stairs"; public const QUARTZ_BLOCK = "minecraft:quartz_block"; @@ -618,6 +632,7 @@ final class BlockTypeNames{ public const RED_NETHER_BRICK_STAIRS = "minecraft:red_nether_brick_stairs"; public const RED_SANDSTONE = "minecraft:red_sandstone"; public const RED_SANDSTONE_STAIRS = "minecraft:red_sandstone_stairs"; + public const RED_WOOL = "minecraft:red_wool"; public const REDSTONE_BLOCK = "minecraft:redstone_block"; public const REDSTONE_LAMP = "minecraft:redstone_lamp"; public const REDSTONE_ORE = "minecraft:redstone_ore"; @@ -708,12 +723,15 @@ final class BlockTypeNames{ public const STRIPPED_WARPED_STEM = "minecraft:stripped_warped_stem"; public const STRUCTURE_BLOCK = "minecraft:structure_block"; public const STRUCTURE_VOID = "minecraft:structure_void"; + public const SUSPICIOUS_SAND = "minecraft:suspicious_sand"; public const SWEET_BERRY_BUSH = "minecraft:sweet_berry_bush"; public const TALLGRASS = "minecraft:tallgrass"; public const TARGET = "minecraft:target"; public const TINTED_GLASS = "minecraft:tinted_glass"; public const TNT = "minecraft:tnt"; public const TORCH = "minecraft:torch"; + public const TORCHFLOWER = "minecraft:torchflower"; + public const TORCHFLOWER_CROP = "minecraft:torchflower_crop"; public const TRAPDOOR = "minecraft:trapdoor"; public const TRAPPED_CHEST = "minecraft:trapped_chest"; public const TRIP_WIRE = "minecraft:trip_wire"; @@ -783,15 +801,16 @@ final class BlockTypeNames{ public const WHITE_CANDLE = "minecraft:white_candle"; public const WHITE_CANDLE_CAKE = "minecraft:white_candle_cake"; public const WHITE_GLAZED_TERRACOTTA = "minecraft:white_glazed_terracotta"; + public const WHITE_WOOL = "minecraft:white_wool"; public const WITHER_ROSE = "minecraft:wither_rose"; public const WOOD = "minecraft:wood"; public const WOODEN_BUTTON = "minecraft:wooden_button"; public const WOODEN_DOOR = "minecraft:wooden_door"; public const WOODEN_PRESSURE_PLATE = "minecraft:wooden_pressure_plate"; public const WOODEN_SLAB = "minecraft:wooden_slab"; - public const WOOL = "minecraft:wool"; public const YELLOW_CANDLE = "minecraft:yellow_candle"; public const YELLOW_CANDLE_CAKE = "minecraft:yellow_candle_cake"; public const YELLOW_FLOWER = "minecraft:yellow_flower"; public const YELLOW_GLAZED_TERRACOTTA = "minecraft:yellow_glazed_terracotta"; + public const YELLOW_WOOL = "minecraft:yellow_wool"; } diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 40d5650c3..871e47847 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -189,6 +189,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ public function __construct(){ $this->registerCandleSerializers(); + $this->registerFlatColorBlockSerializers(); $this->registerCauldronSerializers(); $this->registerSimpleSerializers(); $this->registerSerializers(); @@ -303,6 +304,51 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ })->writeBool(StateNames::LIT, $block->isLit())); } + public function registerFlatColorBlockSerializers() : void{ + $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ + return Writer::create(match($color = $block->getColor()){ + DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA, + DyeColor::BLUE() => Ids::BLUE_GLAZED_TERRACOTTA, + DyeColor::BROWN() => Ids::BROWN_GLAZED_TERRACOTTA, + DyeColor::CYAN() => Ids::CYAN_GLAZED_TERRACOTTA, + DyeColor::GRAY() => Ids::GRAY_GLAZED_TERRACOTTA, + DyeColor::GREEN() => Ids::GREEN_GLAZED_TERRACOTTA, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, + DyeColor::LIGHT_GRAY() => Ids::SILVER_GLAZED_TERRACOTTA, + DyeColor::LIME() => Ids::LIME_GLAZED_TERRACOTTA, + DyeColor::MAGENTA() => Ids::MAGENTA_GLAZED_TERRACOTTA, + DyeColor::ORANGE() => Ids::ORANGE_GLAZED_TERRACOTTA, + DyeColor::PINK() => Ids::PINK_GLAZED_TERRACOTTA, + DyeColor::PURPLE() => Ids::PURPLE_GLAZED_TERRACOTTA, + DyeColor::RED() => Ids::RED_GLAZED_TERRACOTTA, + DyeColor::WHITE() => Ids::WHITE_GLAZED_TERRACOTTA, + DyeColor::YELLOW() => Ids::YELLOW_GLAZED_TERRACOTTA, + default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name()) + }) + ->writeHorizontalFacing($block->getFacing()); + }); + + $this->map(Blocks::WOOL(), fn(Wool $block) => Writer::create(match($color = $block->getColor()){ + DyeColor::BLACK() => Ids::BLACK_WOOL, + DyeColor::BLUE() => Ids::BLUE_WOOL, + DyeColor::BROWN() => Ids::BROWN_WOOL, + DyeColor::CYAN() => Ids::CYAN_WOOL, + DyeColor::GRAY() => Ids::GRAY_WOOL, + DyeColor::GREEN() => Ids::GREEN_WOOL, + DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_WOOL, + DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_WOOL, + DyeColor::LIME() => Ids::LIME_WOOL, + DyeColor::MAGENTA() => Ids::MAGENTA_WOOL, + DyeColor::ORANGE() => Ids::ORANGE_WOOL, + DyeColor::PINK() => Ids::PINK_WOOL, + DyeColor::PURPLE() => Ids::PURPLE_WOOL, + DyeColor::RED() => Ids::RED_WOOL, + DyeColor::WHITE() => Ids::WHITE_WOOL, + DyeColor::YELLOW() => Ids::YELLOW_WOOL, + default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name()) + })); + } + private function registerCauldronSerializers() : void{ $this->map(Blocks::CAULDRON(), fn() => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, 0, new Writer(Ids::CAULDRON))); $this->map(Blocks::LAVA_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_LAVA, $b->getFillLevel(), new Writer(Ids::LAVA_CAULDRON))); @@ -967,28 +1013,6 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ ->writeInt(StateNames::AGE, $block->getAge()); }); $this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE)); - $this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{ - return Writer::create(match ($color = $block->getColor()) { - DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA, - DyeColor::BLUE() => Ids::BLUE_GLAZED_TERRACOTTA, - DyeColor::BROWN() => Ids::BROWN_GLAZED_TERRACOTTA, - DyeColor::CYAN() => Ids::CYAN_GLAZED_TERRACOTTA, - DyeColor::GRAY() => Ids::GRAY_GLAZED_TERRACOTTA, - DyeColor::GREEN() => Ids::GREEN_GLAZED_TERRACOTTA, - DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, - DyeColor::LIGHT_GRAY() => Ids::SILVER_GLAZED_TERRACOTTA, - DyeColor::LIME() => Ids::LIME_GLAZED_TERRACOTTA, - DyeColor::MAGENTA() => Ids::MAGENTA_GLAZED_TERRACOTTA, - DyeColor::ORANGE() => Ids::ORANGE_GLAZED_TERRACOTTA, - DyeColor::PINK() => Ids::PINK_GLAZED_TERRACOTTA, - DyeColor::PURPLE() => Ids::PURPLE_GLAZED_TERRACOTTA, - DyeColor::RED() => Ids::RED_GLAZED_TERRACOTTA, - DyeColor::WHITE() => Ids::WHITE_GLAZED_TERRACOTTA, - DyeColor::YELLOW() => Ids::YELLOW_GLAZED_TERRACOTTA, - default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name()) - }) - ->writeHorizontalFacing($block->getFacing()); - }); $this->map(Blocks::GLOWING_ITEM_FRAME(), fn(ItemFrame $block) => Helper::encodeItemFrame($block, Ids::GLOW_FRAME)); $this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE)); $this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE)); @@ -1446,9 +1470,5 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT))); $this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE)); - $this->map(Blocks::WOOL(), function(Wool $block) : Writer{ - return Writer::create(Ids::WOOL) - ->writeColor($block->getColor()); - }); } } diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index 39e7b0b65..a6c57937e 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -70,6 +70,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ public function __construct(){ $this->registerCandleDeserializers(); + $this->registerFlatColorBlockDeserializers(); $this->registerCauldronDeserializers(); $this->registerSimpleDeserializers(); $this->registerDeserializers(); @@ -158,6 +159,42 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); } + private function registerFlatColorBlockDeserializers() : void{ + $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); + $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); + $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); + $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); + $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); + $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); + $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); + $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in)); + $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); + $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); + $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); + $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); + $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in)); + $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); + $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); + $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); + + $this->mapSimple(Ids::BLACK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLACK())); + $this->mapSimple(Ids::BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLUE())); + $this->mapSimple(Ids::BROWN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BROWN())); + $this->mapSimple(Ids::CYAN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::CYAN())); + $this->mapSimple(Ids::GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GRAY())); + $this->mapSimple(Ids::GREEN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GREEN())); + $this->mapSimple(Ids::LIGHT_BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_BLUE())); + $this->mapSimple(Ids::LIGHT_GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_GRAY())); + $this->mapSimple(Ids::LIME_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIME())); + $this->mapSimple(Ids::MAGENTA_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::MAGENTA())); + $this->mapSimple(Ids::ORANGE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::ORANGE())); + $this->mapSimple(Ids::PINK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PINK())); + $this->mapSimple(Ids::PURPLE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PURPLE())); + $this->mapSimple(Ids::RED_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::RED())); + $this->mapSimple(Ids::WHITE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::WHITE())); + $this->mapSimple(Ids::YELLOW_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::YELLOW())); + } + private function registerCauldronDeserializers() : void{ $deserializer = function(Reader $in) : Block{ $level = $in->readBoundedInt(StateNames::FILL_LEVEL, 0, 6); @@ -516,13 +553,11 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->mapSlab(Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::BLACKSTONE_SLAB()); $this->mapStairs(Ids::BLACKSTONE_STAIRS, fn() => Blocks::BLACKSTONE_STAIRS()); $this->map(Ids::BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::BLACKSTONE_WALL(), $in)); - $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); $this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{ return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) ->setLit(false); }); - $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); $this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{ $in->ignored(StateNames::DEPRECATED); return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis()); @@ -534,7 +569,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT)); }); $this->mapStairs(Ids::BRICK_STAIRS, fn() => Blocks::BRICK_STAIRS()); - $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); $this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in)); $this->map(Ids::CACTUS, function(Reader $in) : Block{ return Blocks::CACTUS() @@ -639,7 +673,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in)); $this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in)); $this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in)); - $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); $this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in)); $this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in)); $this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in)); @@ -751,8 +784,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5)); }); $this->mapStairs(Ids::GRANITE_STAIRS, fn() => Blocks::GRANITE_STAIRS()); - $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); - $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); $this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{ return Blocks::STAINED_HARDENED_GLASS() ->setColor($in->readColor()); @@ -830,9 +861,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::LIGHTNING_ROD() ->setFacing($in->readFacingDirection()); }); - $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); $this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in)); - $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); $this->map(Ids::LIT_BLAST_FURNACE, function(Reader $in) : Block{ return Blocks::BLAST_FURNACE() ->setFacing($in->readHorizontalFacing()) @@ -877,7 +906,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); }); - $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); $this->map(Ids::MANGROVE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::MANGROVE_BUTTON(), $in)); $this->map(Ids::MANGROVE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::MANGROVE_DOOR(), $in)); $this->mapSlab(Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB, fn() => Blocks::MANGROVE_SLAB()); @@ -922,13 +950,11 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS()); $this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS()); $this->map(Ids::OCHRE_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::OCHRE())->setAxis($in->readPillarAxis())); - $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); $this->map(Ids::OXIDIZED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED())); $this->map(Ids::OXIDIZED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED())); $this->mapSlab(Ids::OXIDIZED_CUT_COPPER_SLAB, Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED())); $this->mapStairs(Ids::OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED())); $this->map(Ids::PEARLESCENT_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::PEARLESCENT())->setAxis($in->readPillarAxis())); - $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); $this->map(Ids::PLANKS, function(Reader $in) : Block{ return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_OAK => Blocks::OAK_PLANKS(), @@ -986,7 +1012,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::PUMPKIN(); }); $this->map(Ids::PUMPKIN_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::PUMPKIN_STEM(), $in)); - $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in)); $this->map(Ids::PURPUR_BLOCK, function(Reader $in) : Block{ $type = $in->readString(StateNames::CHISEL_TYPE); if($type === StringValues::CHISEL_TYPE_LINES){ @@ -1039,7 +1064,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ default => throw $in->badValueException(StateNames::FLOWER_TYPE, $type), }; }); - $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); $this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in)); $this->mapStairs(Ids::RED_NETHER_BRICK_STAIRS, fn() => Blocks::RED_NETHER_BRICK_STAIRS()); $this->map(Ids::RED_SANDSTONE, function(Reader $in) : Block{ @@ -1111,7 +1135,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::DYED_SHULKER_BOX() ->setColor($in->readColor()); }); - $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in)); $this->map(Ids::SKULL, function(Reader $in) : Block{ return Blocks::MOB_HEAD() ->setFacing($in->readFacingWithoutDown()); @@ -1325,7 +1348,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setAge($in->readBoundedInt(StateNames::WEEPING_VINES_AGE, 0, 25)); }); $this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in)); - $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); $this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){ StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(), StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(), @@ -1339,11 +1361,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in)); $this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in)); $this->mapSlab(Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB, fn(Reader $in) => Helper::mapWoodenSlabType($in)); - $this->map(Ids::WOOL, function(Reader $in) : Block{ - return Blocks::WOOL() - ->setColor($in->readColor()); - }); - $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); } /** @throws BlockStateDeserializeException */ diff --git a/src/data/bedrock/item/ItemTypeNames.php b/src/data/bedrock/item/ItemTypeNames.php index 80a103df3..2a808d416 100644 --- a/src/data/bedrock/item/ItemTypeNames.php +++ b/src/data/bedrock/item/ItemTypeNames.php @@ -35,7 +35,9 @@ final class ItemTypeNames{ public const ALLAY_SPAWN_EGG = "minecraft:allay_spawn_egg"; public const AMETHYST_SHARD = "minecraft:amethyst_shard"; public const APPLE = "minecraft:apple"; + public const ARCHER_POTTERY_SHARD = "minecraft:archer_pottery_shard"; public const ARMOR_STAND = "minecraft:armor_stand"; + public const ARMS_UP_POTTERY_SHARD = "minecraft:arms_up_pottery_shard"; public const ARROW = "minecraft:arrow"; public const AXOLOTL_BUCKET = "minecraft:axolotl_bucket"; public const AXOLOTL_SPAWN_EGG = "minecraft:axolotl_spawn_egg"; @@ -74,6 +76,7 @@ final class ItemTypeNames{ public const BREWING_STAND = "minecraft:brewing_stand"; public const BRICK = "minecraft:brick"; public const BROWN_DYE = "minecraft:brown_dye"; + public const BRUSH = "minecraft:brush"; public const BUCKET = "minecraft:bucket"; public const CAKE = "minecraft:cake"; public const CAMEL_SPAWN_EGG = "minecraft:camel_spawn_egg"; @@ -126,6 +129,7 @@ final class ItemTypeNames{ public const DARK_OAK_CHEST_BOAT = "minecraft:dark_oak_chest_boat"; public const DARK_OAK_DOOR = "minecraft:dark_oak_door"; public const DARK_OAK_SIGN = "minecraft:dark_oak_sign"; + public const DEBUG_STICK = "minecraft:debug_stick"; public const DIAMOND = "minecraft:diamond"; public const DIAMOND_AXE = "minecraft:diamond_axe"; public const DIAMOND_BOOTS = "minecraft:diamond_boots"; @@ -326,6 +330,7 @@ final class ItemTypeNames{ public const POWDER_SNOW_BUCKET = "minecraft:powder_snow_bucket"; public const PRISMARINE_CRYSTALS = "minecraft:prismarine_crystals"; public const PRISMARINE_SHARD = "minecraft:prismarine_shard"; + public const PRIZE_POTTERY_SHARD = "minecraft:prize_pottery_shard"; public const PUFFERFISH = "minecraft:pufferfish"; public const PUFFERFISH_BUCKET = "minecraft:pufferfish_bucket"; public const PUFFERFISH_SPAWN_EGG = "minecraft:pufferfish_spawn_egg"; @@ -363,6 +368,7 @@ final class ItemTypeNames{ public const SKELETON_SPAWN_EGG = "minecraft:skeleton_spawn_egg"; public const SKULL = "minecraft:skull"; public const SKULL_BANNER_PATTERN = "minecraft:skull_banner_pattern"; + public const SKULL_POTTERY_SHARD = "minecraft:skull_pottery_shard"; public const SLIME_BALL = "minecraft:slime_ball"; public const SLIME_SPAWN_EGG = "minecraft:slime_spawn_egg"; public const SNIFFER_SPAWN_EGG = "minecraft:sniffer_spawn_egg"; @@ -396,6 +402,7 @@ final class ItemTypeNames{ public const TADPOLE_BUCKET = "minecraft:tadpole_bucket"; public const TADPOLE_SPAWN_EGG = "minecraft:tadpole_spawn_egg"; public const TNT_MINECART = "minecraft:tnt_minecart"; + public const TORCHFLOWER_SEEDS = "minecraft:torchflower_seeds"; public const TOTEM_OF_UNDYING = "minecraft:totem_of_undying"; public const TRADER_LLAMA_SPAWN_EGG = "minecraft:trader_llama_spawn_egg"; public const TRIDENT = "minecraft:trident"; @@ -426,6 +433,7 @@ final class ItemTypeNames{ public const WOODEN_PICKAXE = "minecraft:wooden_pickaxe"; public const WOODEN_SHOVEL = "minecraft:wooden_shovel"; public const WOODEN_SWORD = "minecraft:wooden_sword"; + public const WOOL = "minecraft:wool"; public const WRITABLE_BOOK = "minecraft:writable_book"; public const WRITTEN_BOOK = "minecraft:written_book"; public const YELLOW_DYE = "minecraft:yellow_dye"; diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 0fbc1c91a..2aee9876c 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -43,7 +43,7 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; * benefits for now. */ final class GlobalBlockStateHandlers{ - public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 161; //0161_1.19.50_to_1.19.60.26_beta.json + public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 171; //0171_1.19.60_to_1.9.70.26_beta.json private static ?BlockObjectToStateSerializer $blockStateSerializer = null; diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php index 3c456dabd..e3bef6466 100644 --- a/src/world/format/io/GlobalItemDataHandlers.php +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -34,7 +34,7 @@ use Symfony\Component\Filesystem\Path; use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH; final class GlobalItemDataHandlers{ - public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 81; //0081_1.18.30_to_1.19.30.34_beta.json + public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 91; //0091_1.19.60_to_1.19.70.26_beta.json private static ?ItemSerializer $itemSerializer = null; diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 853c8e39f..7be3ad1ab 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -53,6 +53,7 @@ use pocketmine\network\mcpe\protocol\types\CacheableNbt; use pocketmine\network\mcpe\protocol\types\inventory\CreativeContentEntry; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\ItemTypeEntry; +use pocketmine\network\mcpe\protocol\types\recipe\ComplexAliasItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\FurnaceRecipe; use pocketmine\network\mcpe\protocol\types\recipe\IntIdMetaItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\MolangItemDescriptor; @@ -282,6 +283,8 @@ class ParserPacketHandler extends PacketHandler{ }elseif($descriptor instanceof MolangItemDescriptor){ $data->molang_expression = $descriptor->getMolangExpression(); $data->molang_version = $descriptor->getMolangVersion(); + }elseif($descriptor instanceof ComplexAliasItemDescriptor){ + $data->name = $descriptor->getAlias(); }else{ throw new \UnexpectedValueException("Unknown item descriptor type " . get_class($descriptor)); } From 10d22a55ec698023eee19d899b954412d105df6b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Mar 2023 18:50:34 +0000 Subject: [PATCH 561/692] Updated composer dependencies (PM5) --- composer.lock | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/composer.lock b/composer.lock index b379351ce..e03cb4d66 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1fce2212ea8f1510f2d68da4f46023db", + "content-hash": "500661d6d723c3853f8e3b66c838a66b", "packages": [ { "name": "adhocore/json-comment", @@ -250,16 +250,16 @@ }, { "name": "pocketmine/bedrock-block-upgrade-schema", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4" + "reference": "e0540343e649a92126a1d4071ec401a811416c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/a05ce434eb7f8c11058d26833bc975fe635b23b4", - "reference": "a05ce434eb7f8c11058d26833bc975fe635b23b4", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/e0540343e649a92126a1d4071ec401a811416c76", + "reference": "e0540343e649a92126a1d4071ec401a811416c76", "shasum": "" }, "type": "library", @@ -270,22 +270,22 @@ "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", "support": { "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", - "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.0.0" + "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/1.1.1" }, - "time": "2023-02-01T21:09:54+00:00" + "time": "2023-03-08T23:45:59+00:00" }, { "name": "pocketmine/bedrock-data", - "version": "2.0.0+bedrock-1.19.60", + "version": "2.1.1+bedrock-1.19.70", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "957e49b2381641af29f595e4f32ded3e76ce4723" + "reference": "cba0567bcb25f987f2712092f8d662056719e82d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/957e49b2381641af29f595e4f32ded3e76ce4723", - "reference": "957e49b2381641af29f595e4f32ded3e76ce4723", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/cba0567bcb25f987f2712092f8d662056719e82d", + "reference": "cba0567bcb25f987f2712092f8d662056719e82d", "shasum": "" }, "type": "library", @@ -296,22 +296,22 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/2.0.0+bedrock-1.19.60" + "source": "https://github.com/pmmp/BedrockData/tree/2.1.1+bedrock-1.19.70" }, - "time": "2023-02-23T21:25:04+00:00" + "time": "2023-03-14T18:03:19+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockItemUpgradeSchema.git", - "reference": "7e53f77ea34ba30b1f94d3c24e64e19d3c4296e7" + "reference": "aab89a1f121a0c127557a4a0cf981330301c9c45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/7e53f77ea34ba30b1f94d3c24e64e19d3c4296e7", - "reference": "7e53f77ea34ba30b1f94d3c24e64e19d3c4296e7", + "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/aab89a1f121a0c127557a4a0cf981330301c9c45", + "reference": "aab89a1f121a0c127557a4a0cf981330301c9c45", "shasum": "" }, "type": "library", @@ -322,22 +322,22 @@ "description": "JSON schemas for upgrading items found in older Minecraft: Bedrock world saves", "support": { "issues": "https://github.com/pmmp/BedrockItemUpgradeSchema/issues", - "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/1.0.0" + "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/1.1.0" }, - "time": "2023-02-01T22:50:02+00:00" + "time": "2023-03-08T22:27:13+00:00" }, { "name": "pocketmine/bedrock-protocol", - "version": "19.3.0+bedrock-1.19.62", + "version": "20.0.0+bedrock-1.19.70", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockProtocol.git", - "reference": "a5bf4753c7f30f781c4541918e238f5bb637e7ad" + "reference": "4892a5020187da805d7b46ab522d8185b0283726" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/a5bf4753c7f30f781c4541918e238f5bb637e7ad", - "reference": "a5bf4753c7f30f781c4541918e238f5bb637e7ad", + "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/4892a5020187da805d7b46ab522d8185b0283726", + "reference": "4892a5020187da805d7b46ab522d8185b0283726", "shasum": "" }, "require": { @@ -351,7 +351,7 @@ "ramsey/uuid": "^4.1" }, "require-dev": { - "phpstan/phpstan": "1.9.13", + "phpstan/phpstan": "1.10.1", "phpstan/phpstan-phpunit": "^1.0.0", "phpstan/phpstan-strict-rules": "^1.0.0", "phpunit/phpunit": "^9.5" @@ -369,9 +369,9 @@ "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", "support": { "issues": "https://github.com/pmmp/BedrockProtocol/issues", - "source": "https://github.com/pmmp/BedrockProtocol/tree/19.3.0+bedrock-1.19.62" + "source": "https://github.com/pmmp/BedrockProtocol/tree/20.0.0+bedrock-1.19.70" }, - "time": "2023-02-19T16:11:03+00:00" + "time": "2023-03-14T17:06:38+00:00" }, { "name": "pocketmine/binaryutils", From 4ba4d556ed02607ae22fff96e245aa7bc947d412 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Mar 2023 23:27:16 +0000 Subject: [PATCH 562/692] Tidy up world version related things I decided to scrap the max schema ID stuff, since it just adds extra places to forget updating. Instead, it's better to use minor version locks and version metadata, as we do for BedrockData and BedrockProtocol. --- src/world/format/io/GlobalBlockStateHandlers.php | 5 ++--- src/world/format/io/GlobalItemDataHandlers.php | 5 ++--- src/world/format/io/data/BedrockWorldData.php | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index 2aee9876c..ed162c8ca 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -34,6 +34,7 @@ use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\LegacyBlockIdToStringIdMap; use pocketmine\utils\Filesystem; use Symfony\Component\Filesystem\Path; +use const PHP_INT_MAX; use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; /** @@ -43,8 +44,6 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH; * benefits for now. */ final class GlobalBlockStateHandlers{ - public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 171; //0171_1.19.60_to_1.9.70.26_beta.json - private static ?BlockObjectToStateSerializer $blockStateSerializer = null; private static ?BlockStateToObjectDeserializer $blockStateDeserializer = null; @@ -65,7 +64,7 @@ final class GlobalBlockStateHandlers{ if(self::$blockDataUpgrader === null){ $blockStateUpgrader = new BlockStateUpgrader(BlockStateUpgradeSchemaUtils::loadSchemas( Path::join(BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH, 'nbt_upgrade_schema'), - self::MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID + PHP_INT_MAX )); self::$blockDataUpgrader = new BlockDataUpgrader( BlockIdMetaUpgrader::loadFromString( diff --git a/src/world/format/io/GlobalItemDataHandlers.php b/src/world/format/io/GlobalItemDataHandlers.php index e3bef6466..ea5568c7c 100644 --- a/src/world/format/io/GlobalItemDataHandlers.php +++ b/src/world/format/io/GlobalItemDataHandlers.php @@ -31,11 +31,10 @@ use pocketmine\data\bedrock\item\upgrade\ItemIdMetaUpgradeSchemaUtils; use pocketmine\data\bedrock\item\upgrade\LegacyItemIdToStringIdMap; use pocketmine\data\bedrock\item\upgrade\R12ItemIdToBlockIdMap; use Symfony\Component\Filesystem\Path; +use const PHP_INT_MAX; use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH; final class GlobalItemDataHandlers{ - public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 91; //0091_1.19.60_to_1.19.70.26_beta.json - private static ?ItemSerializer $itemSerializer = null; private static ?ItemDeserializer $itemDeserializer = null; @@ -52,7 +51,7 @@ final class GlobalItemDataHandlers{ public static function getUpgrader() : ItemDataUpgrader{ return self::$itemDataUpgrader ??= new ItemDataUpgrader( - new ItemIdMetaUpgrader(ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema'), self::MAX_ITEM_ID_UPGRADE_SCHEMA_ID)), + new ItemIdMetaUpgrader(ItemIdMetaUpgradeSchemaUtils::loadSchemas(Path::join(BEDROCK_ITEM_UPGRADE_SCHEMA_PATH, 'id_meta_upgrade_schema'), PHP_INT_MAX)), LegacyItemIdToStringIdMap::getInstance(), R12ItemIdToBlockIdMap::getInstance(), GlobalBlockStateHandlers::getUpgrader() diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index fbe8b36b8..82279e734 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -49,11 +49,11 @@ use function time; class BedrockWorldData extends BaseNbtWorldData{ public const CURRENT_STORAGE_VERSION = 10; - public const CURRENT_STORAGE_NETWORK_VERSION = 560; + public const CURRENT_STORAGE_NETWORK_VERSION = 575; public const CURRENT_CLIENT_VERSION_TARGET = [ 1, //major 19, //minor - 50, //patch + 70, //patch 0, //revision 0 //is beta ]; From 72853677bb5839b4d5a8768fd338b203d49b7dd5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Mar 2023 16:54:13 +0000 Subject: [PATCH 563/692] Fixed mushroom blocks for PM5 closes #5284 --- src/block/RedMushroomBlock.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 17fced412..dfa50e265 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -32,11 +32,13 @@ class RedMushroomBlock extends Opaque{ protected MushroomBlockType $mushroomBlockType; public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ - $this->mushroomBlockType = MushroomBlockType::PORES(); + $this->mushroomBlockType = MushroomBlockType::ALL_CAP(); parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeType(RuntimeDataDescriber $w) : void{ + //these blocks always drop as all-cap, but may exist in other forms in the inventory (particularly creative), + //so this information needs to be kept in the type info $w->mushroomBlockType($this->mushroomBlockType); } @@ -57,4 +59,12 @@ class RedMushroomBlock extends Opaque{ public function isAffectedBySilkTouch() : bool{ return true; } + + public function getSilkTouchDrops(Item $item) : array{ + return [(clone $this)->setMushroomBlockType(MushroomBlockType::ALL_CAP())->asItem()]; + } + + public function getPickedItem(bool $addUserData = false) : Item{ + return (clone $this)->setMushroomBlockType(MushroomBlockType::ALL_CAP())->asItem(); + } } From 11ef6414b003098f88bdc42739c23419f639381c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Mar 2023 13:32:46 +0000 Subject: [PATCH 564/692] Server: remove deprecated method --- src/Server.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Server.php b/src/Server.php index d2f4f4b79..0a246d0cc 100644 --- a/src/Server.php +++ b/src/Server.php @@ -56,10 +56,8 @@ use pocketmine\network\mcpe\compression\ZlibCompressor; use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; use pocketmine\network\mcpe\encryption\EncryptionContext; use pocketmine\network\mcpe\EntityEventBroadcaster; -use pocketmine\network\mcpe\NetworkBroadcastUtils; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\PacketBroadcaster; -use pocketmine\network\mcpe\protocol\ClientboundPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; @@ -1344,15 +1342,6 @@ class Server{ return count($recipients); } - /** - * @param Player[] $players - * @param ClientboundPacket[] $packets - * @deprecated - */ - public function broadcastPackets(array $players, array $packets) : bool{ - return NetworkBroadcastUtils::broadcastPackets($players, $packets); - } - /** * Broadcasts a list of packets in a batch to a list of players * From ec2b53f61adc7c2dc8af9442d72fcecbe4fc406c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Mar 2023 13:35:12 +0000 Subject: [PATCH 565/692] Remove unnecessary PacketBatch instantiations --- src/Server.php | 7 ++----- src/network/mcpe/NetworkSession.php | 2 +- src/network/mcpe/StandardPacketBroadcaster.php | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Server.php b/src/Server.php index 0a246d0cc..5bda2976b 100644 --- a/src/Server.php +++ b/src/Server.php @@ -59,7 +59,6 @@ use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\PacketBroadcaster; use pocketmine\network\mcpe\protocol\ProtocolInfo; -use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; use pocketmine\network\mcpe\raklib\RakLibInterface; use pocketmine\network\mcpe\StandardEntityEventBroadcaster; @@ -1347,16 +1346,14 @@ class Server{ * * @param bool|null $sync Compression on the main thread (true) or workers (false). Default is automatic (null). */ - public function prepareBatch(PacketBatch $stream, Compressor $compressor, ?bool $sync = null, ?TimingsHandler $timings = null) : CompressBatchPromise{ + public function prepareBatch(string $buffer, Compressor $compressor, ?bool $sync = null, ?TimingsHandler $timings = null) : CompressBatchPromise{ $timings ??= Timings::$playerNetworkSendCompress; try{ $timings->startTiming(); - $buffer = $stream->getBuffer(); - if($sync === null){ $threshold = $compressor->getCompressionThreshold(); - $sync = !$this->networkCompressionAsync || $threshold === null || strlen($stream->getBuffer()) < $threshold; + $sync = !$this->networkCompressionAsync || $threshold === null || strlen($buffer) < $threshold; } $promise = new CompressBatchPromise(); diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 60c69f2b3..72c7f97fe 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -523,7 +523,7 @@ class NetworkSession{ PacketBatch::encodeRaw($stream, $this->sendBuffer); if($this->enableCompression){ - $promise = $this->server->prepareBatch(new PacketBatch($stream->getBuffer()), $this->compressor, $syncMode, Timings::$playerNetworkSendCompressSessionBuffer); + $promise = $this->server->prepareBatch($stream->getBuffer(), $this->compressor, $syncMode, Timings::$playerNetworkSendCompressSessionBuffer); }else{ $promise = new CompressBatchPromise(); $promise->resolve($stream->getBuffer()); diff --git a/src/network/mcpe/StandardPacketBroadcaster.php b/src/network/mcpe/StandardPacketBroadcaster.php index 1ed0f16ae..3aa7c535b 100644 --- a/src/network/mcpe/StandardPacketBroadcaster.php +++ b/src/network/mcpe/StandardPacketBroadcaster.php @@ -76,7 +76,7 @@ final class StandardPacketBroadcaster implements PacketBroadcaster{ PacketBatch::encodeRaw($stream, $packetBuffers); $batchBuffer = $stream->getBuffer(); - $promise = $this->server->prepareBatch(new PacketBatch($batchBuffer), $compressor, timings: Timings::$playerNetworkSendCompressBroadcast); + $promise = $this->server->prepareBatch($batchBuffer, $compressor, timings: Timings::$playerNetworkSendCompressBroadcast); foreach($compressorTargets as $target){ $target->queueCompressed($promise); } From 341a9b78b531a0ff47ffcf36c3fb413153409450 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 24 Mar 2023 13:48:33 +0000 Subject: [PATCH 566/692] LegacyStringToItemParser: update documentation --- src/item/LegacyStringToItemParser.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/item/LegacyStringToItemParser.php b/src/item/LegacyStringToItemParser.php index 6a0f852c0..a52b6c716 100644 --- a/src/item/LegacyStringToItemParser.php +++ b/src/item/LegacyStringToItemParser.php @@ -49,6 +49,9 @@ use function trim; * Avoid using this wherever possible. Unless you need to parse item strings containing meta (e.g. "dye:4", "351:4") or * item IDs (e.g. "351"), you should prefer the newer StringToItemParser, which is much more user-friendly, more * flexible, and also supports registering custom aliases for any item in any state. + * + * WARNING: This class does NOT support items added during or after PocketMine-MP 5.0.0. Use StringToItemParser for + * modern items. */ final class LegacyStringToItemParser{ use SingletonTrait; From 0818388bd5c14e5113bea20e6b31407a665b7d69 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 25 Mar 2023 19:41:40 +0000 Subject: [PATCH 567/692] Allow remapped oldState and newState to accept null, to make it easier for third-party tools to use the schemas since PHP emits empty JSON objects as arrays, this makes it pretty annoying to work with the schemas in other languages. However, nullability is something most languages understand pretty easily. This should continue to support old schemas. --- .../upgrade/BlockStateUpgradeSchemaUtils.php | 4 ++-- ...BlockStateUpgradeSchemaModelBlockRemap.php | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 64f79663e..03019aeab 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -150,9 +150,9 @@ final class BlockStateUpgradeSchemaUtils{ foreach(Utils::stringifyKeys($model->remappedStates ?? []) as $oldBlockName => $remaps){ foreach($remaps as $remap){ $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaBlockRemap( - array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->oldState), + array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->oldState ?? []), $remap->newName, - array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->newState), + array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->newState ?? []), ); } } diff --git a/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php index be601d51b..0991e5469 100644 --- a/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php @@ -23,24 +23,25 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade\model; +use function count; + final class BlockStateUpgradeSchemaModelBlockRemap{ /** - * @var BlockStateUpgradeSchemaModelTag[] - * @phpstan-var array + * @var BlockStateUpgradeSchemaModelTag[]|null + * @phpstan-var array|null * @required */ - public array $oldState; + public ?array $oldState; /** @required */ public string $newName; /** - * @var BlockStateUpgradeSchemaModelTag[] - * @phpstan-var array - * @required + * @var BlockStateUpgradeSchemaModelTag[]|null + * @phpstan-var array|null */ - public array $newState; + public ?array $newState; /** * @param BlockStateUpgradeSchemaModelTag[] $oldState @@ -49,8 +50,8 @@ final class BlockStateUpgradeSchemaModelBlockRemap{ * @phpstan-param array $newState */ public function __construct(array $oldState, string $newName, array $newState){ - $this->oldState = $oldState; + $this->oldState = count($oldState) === 0 ? null : $oldState; $this->newName = $newName; - $this->newState = $newState; + $this->newState = count($newState) === 0 ? null : $newState; } } From bea878e9e91f377046bfe1e2b7d88b77f2a5544f Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Mon, 27 Mar 2023 14:17:08 -0500 Subject: [PATCH 568/692] Implement anvil fall damage (#5312) --- src/block/Anvil.php | 8 ++++++++ src/block/utils/Fallable.php | 12 ++++++++++++ src/block/utils/FallableTrait.php | 8 ++++++++ src/entity/Living.php | 14 ++++++++++++++ src/entity/object/FallingBlock.php | 20 ++++++++++++++++++-- src/event/entity/EntityDamageEvent.php | 2 ++ src/event/player/PlayerDeathEvent.php | 14 ++++++++++++++ 7 files changed, 76 insertions(+), 2 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index 17814e2c9..edfb9491d 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -107,6 +107,14 @@ class Anvil extends Transparent implements Fallable{ return true; } + public function getFallDamagePerBlock() : float{ + return 2.0; + } + + public function getMaxFallDamage() : float{ + return 40.0; + } + public function getLandSound() : ?Sound{ return new AnvilFallSound(); } diff --git a/src/block/utils/Fallable.php b/src/block/utils/Fallable.php index 74f96ac8b..8f0dbc834 100644 --- a/src/block/utils/Fallable.php +++ b/src/block/utils/Fallable.php @@ -42,6 +42,18 @@ interface Fallable{ */ public function onHitGround(FallingBlock $blockEntity) : bool; + /** + * Returns the damage caused per fallen block. This is multiplied by the fall distance (and capped according to + * {@link Fallable::getMaxFallDamage()}) to calculate the damage dealt to any entities who intersect with the block + * when it hits the ground. + */ + public function getFallDamagePerBlock() : float; + + /** + * Returns the maximum damage the block can deal to an entity when it hits the ground. + */ + public function getMaxFallDamage() : float; + /** * Returns the sound that will be played when FallingBlock hits the ground. */ diff --git a/src/block/utils/FallableTrait.php b/src/block/utils/FallableTrait.php index d13a7f794..f062792ef 100644 --- a/src/block/utils/FallableTrait.php +++ b/src/block/utils/FallableTrait.php @@ -64,6 +64,14 @@ trait FallableTrait{ return true; } + public function getFallDamagePerBlock() : float{ + return 0.0; + } + + public function getMaxFallDamage() : float{ + return 0.0; + } + public function getLandSound() : ?Sound{ return null; } diff --git a/src/entity/Living.php b/src/entity/Living.php index b30ab7f87..29a8ceae8 100644 --- a/src/entity/Living.php +++ b/src/entity/Living.php @@ -73,6 +73,7 @@ use function max; use function min; use function mt_getrandmax; use function mt_rand; +use function round; use function sqrt; use const M_PI; @@ -429,6 +430,10 @@ abstract class Living extends Entity{ $source->setModifier(-$source->getFinalDamage() * min(ceil(min($totalEpf, 25) * (mt_rand(50, 100) / 100)), 20) * 0.04, EntityDamageEvent::MODIFIER_ARMOR_ENCHANTMENTS); $source->setModifier(-min($this->getAbsorption(), $source->getFinalDamage()), EntityDamageEvent::MODIFIER_ABSORPTION); + + if($cause === EntityDamageEvent::CAUSE_FALLING_BLOCK && $this->armorInventory->getHelmet() instanceof Armor){ + $source->setModifier(-($source->getFinalDamage() / 4), EntityDamageEvent::MODIFIER_ARMOR_HELMET); + } } /** @@ -460,6 +465,15 @@ abstract class Living extends Entity{ if($damage > 0){ $attacker->attack(new EntityDamageByEntityEvent($this, $attacker, EntityDamageEvent::CAUSE_MAGIC, $damage)); } + + if($source->getModifier(EntityDamageEvent::MODIFIER_ARMOR_HELMET) < 0){ + $helmet = $this->armorInventory->getHelmet(); + if($helmet instanceof Armor){ + $finalDamage = $source->getFinalDamage(); + $this->damageItem($helmet, (int) round($finalDamage * 4 + lcg_value() * $finalDamage * 2)); + $this->armorInventory->setHelmet($helmet); + } + } } } diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 301d38b64..0371ec950 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -30,8 +30,10 @@ use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\EntitySizeInfo; +use pocketmine\entity\Living; use pocketmine\entity\Location; use pocketmine\event\entity\EntityBlockChangeEvent; +use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\math\Vector3; use pocketmine\nbt\tag\ByteTag; @@ -44,6 +46,8 @@ use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\sound\BlockBreakSound; use function abs; +use function min; +use function round; class FallingBlock extends Entity{ private const TAG_FALLING_BLOCK = "FallingBlock"; //TAG_Compound @@ -156,8 +160,20 @@ class FallingBlock extends Entity{ } protected function onHitGround() : ?float{ - if($this->block instanceof Fallable && !$this->block->onHitGround($this)){ - $this->flagForDespawn(); + if($this->block instanceof Fallable){ + $damagePerBlock = $this->block->getFallDamagePerBlock(); + if($damagePerBlock > 0 && ($fallenBlocks = round($this->fallDistance) - 1) > 0){ + $damage = min($fallenBlocks * $damagePerBlock, $this->block->getMaxFallDamage()); + foreach($this->getWorld()->getCollidingEntities($this->getBoundingBox()) as $entity){ + if($entity instanceof Living){ + $ev = new EntityDamageByEntityEvent($this, $entity, EntityDamageEvent::CAUSE_FALLING_BLOCK, $damage); + $entity->attack($ev); + } + } + } + if(!$this->block->onHitGround($this)){ + $this->flagForDespawn(); + } } return null; } diff --git a/src/event/entity/EntityDamageEvent.php b/src/event/entity/EntityDamageEvent.php index edb44f1f7..7c3e2aaa4 100644 --- a/src/event/entity/EntityDamageEvent.php +++ b/src/event/entity/EntityDamageEvent.php @@ -46,6 +46,7 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{ public const MODIFIER_TOTEM = 8; public const MODIFIER_WEAPON_ENCHANTMENTS = 9; public const MODIFIER_PREVIOUS_DAMAGE_COOLDOWN = 10; + public const MODIFIER_ARMOR_HELMET = 11; public const CAUSE_CONTACT = 0; public const CAUSE_ENTITY_ATTACK = 1; @@ -63,6 +64,7 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{ public const CAUSE_MAGIC = 13; public const CAUSE_CUSTOM = 14; public const CAUSE_STARVATION = 15; + public const CAUSE_FALLING_BLOCK = 16; private float $baseDamage; private float $originalBase; diff --git a/src/event/player/PlayerDeathEvent.php b/src/event/player/PlayerDeathEvent.php index dd7c21eb2..4a1632cfc 100644 --- a/src/event/player/PlayerDeathEvent.php +++ b/src/event/player/PlayerDeathEvent.php @@ -25,6 +25,7 @@ namespace pocketmine\event\player; use pocketmine\block\BlockTypeIds; use pocketmine\entity\Living; +use pocketmine\entity\object\FallingBlock; use pocketmine\event\entity\EntityDamageByBlockEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; @@ -155,6 +156,19 @@ class PlayerDeathEvent extends EntityDeathEvent{ case EntityDamageEvent::CAUSE_MAGIC: return KnownTranslationFactory::death_attack_magic($name); + case EntityDamageEvent::CAUSE_FALLING_BLOCK: + if($deathCause instanceof EntityDamageByEntityEvent){ + $e = $deathCause->getDamager(); + if($e instanceof FallingBlock){ + if($e->getBlock()->getTypeId() === BlockTypeIds::ANVIL){ + return KnownTranslationFactory::death_attack_anvil($name); + }else{ + return KnownTranslationFactory::death_attack_fallingBlock($name); + } + } + } + break; + case EntityDamageEvent::CAUSE_CUSTOM: break; From dbcd2b1e65c3dc46b7231521773d7aeef7c3dd1c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 5 Apr 2023 21:04:00 +0100 Subject: [PATCH 569/692] ItemTypeIds::toBlockTypeId() now returns null for non-blockitem IDs closes #5648 --- src/item/ItemTypeIds.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index 180842555..ddde0d1cb 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -320,9 +320,9 @@ final class ItemTypeIds{ return -$blockTypeId; } - public static function toBlockTypeId(int $itemTypeId) : int{ - if($itemTypeId > 0){ - throw new \InvalidArgumentException("Item type ID $itemTypeId does not represent a block"); + public static function toBlockTypeId(int $itemTypeId) : ?int{ + if($itemTypeId > 0){ //not a blockitem + return null; } return -$itemTypeId; } From ed88d68fd70b6fb1204f7d584c092bc2b8d46630 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 11 Apr 2023 23:20:58 +0100 Subject: [PATCH 570/692] Remove stuff deprecated in 4.19.0 --- src/entity/object/ExperienceOrb.php | 10 ++-- src/player/PlayerChunkLoader.php | 47 ------------------ src/timings/Timings.php | 6 --- src/world/TickingChunkLoader.php | 40 --------------- src/world/World.php | 76 +---------------------------- 5 files changed, 4 insertions(+), 175 deletions(-) delete mode 100644 src/player/PlayerChunkLoader.php delete mode 100644 src/world/TickingChunkLoader.php diff --git a/src/entity/object/ExperienceOrb.php b/src/entity/object/ExperienceOrb.php index 0d3af7e6c..5120da3e1 100644 --- a/src/entity/object/ExperienceOrb.php +++ b/src/entity/object/ExperienceOrb.php @@ -84,9 +84,6 @@ class ExperienceOrb extends Entity{ return $result; } - /** @deprecated */ - protected int $age = 0; - /** Ticker used for determining interval in which to look for new target players. */ protected int $lookForTargetTime = 0; @@ -111,11 +108,11 @@ class ExperienceOrb extends Entity{ protected function initEntity(CompoundTag $nbt) : void{ parent::initEntity($nbt); - $this->age = $nbt->getShort(self::TAG_AGE, 0); - if($this->age === -32768){ + $age = $nbt->getShort(self::TAG_AGE, 0); + if($age === -32768){ $this->despawnDelay = self::NEVER_DESPAWN; }else{ - $this->despawnDelay = max(0, self::DEFAULT_DESPAWN_DELAY - $this->age); + $this->despawnDelay = max(0, self::DEFAULT_DESPAWN_DELAY - $age); } } @@ -180,7 +177,6 @@ class ExperienceOrb extends Entity{ protected function entityBaseTick(int $tickDiff = 1) : bool{ $hasUpdate = parent::entityBaseTick($tickDiff); - $this->age += $tickDiff; $this->despawnDelay -= $tickDiff; if($this->despawnDelay <= 0){ $this->flagForDespawn(); diff --git a/src/player/PlayerChunkLoader.php b/src/player/PlayerChunkLoader.php deleted file mode 100644 index 175f242d3..000000000 --- a/src/player/PlayerChunkLoader.php +++ /dev/null @@ -1,47 +0,0 @@ -currentLocation = $currentLocation; - } - - public function getX() : float{ - return $this->currentLocation->getFloorX(); - } - - public function getZ() : float{ - return $this->currentLocation->getFloorZ(); - } -} diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 9f011e3ed..a4d2a6967 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -34,12 +34,6 @@ use function get_class; use function str_starts_with; abstract class Timings{ - /** - * @deprecated This was used by the old timings viewer to make a timer appear in the Breakdown section of a timings - * report. Provide a group to your timer's constructor instead. - * @see Timings::GROUP_BREAKDOWN - */ - public const INCLUDED_BY_OTHER_TIMINGS_PREFIX = "** "; public const GROUP_BREAKDOWN = "Minecraft - Breakdown"; private static bool $initialized = false; diff --git a/src/world/TickingChunkLoader.php b/src/world/TickingChunkLoader.php deleted file mode 100644 index a44173c33..000000000 --- a/src/world/TickingChunkLoader.php +++ /dev/null @@ -1,40 +0,0 @@ - TickingChunkLoader - * @phpstan-var array - * - * @deprecated - */ - private array $tickingLoaders = []; - /** - * @var int[] spl_object_id => number of chunks - * @phpstan-var array - * - * @deprecated - */ - private array $tickingLoaderCounter = []; - /** * @var TickingChunkEntry[] chunkHash => TickingChunkEntry * @phpstan-var array @@ -799,15 +783,6 @@ class World implements ChunkManager{ $this->chunkLoaders[$chunkHash][$loaderId] = $loader; - if($loader instanceof TickingChunkLoader){ - if(!isset($this->tickingLoaders[$loaderId])){ - $this->tickingLoaderCounter[$loaderId] = 1; - $this->tickingLoaders[$loaderId] = $loader; - }else{ - ++$this->tickingLoaderCounter[$loaderId]; - } - } - $this->cancelUnloadChunkRequest($chunkX, $chunkZ); if($autoLoad){ @@ -828,11 +803,6 @@ class World implements ChunkManager{ unset($this->chunkPopulationRequestMap[$chunkHash]); } } - - if(isset($this->tickingLoaderCounter[$loaderId]) && --$this->tickingLoaderCounter[$loaderId] === 0){ - unset($this->tickingLoaderCounter[$loaderId]); - unset($this->tickingLoaders[$loaderId]); - } } } @@ -1206,46 +1176,8 @@ class World implements ChunkManager{ } } - /** - * @deprecated - * - * @param true[] $chunkTickList - * @param bool[] $chunkTickableCache - * - * @phpstan-param array $chunkTickList - * @phpstan-param array $chunkTickableCache - * @phpstan-param-out array $chunkTickList - * @phpstan-param-out array $chunkTickableCache - */ - private function selectTickableChunksLegacy(array &$chunkTickList, array &$chunkTickableCache) : void{ - $centerChunks = []; - - $selector = new ChunkSelector(); - foreach($this->tickingLoaders as $loader){ - $centerChunkX = (int) floor($loader->getX()) >> Chunk::COORD_BIT_SIZE; - $centerChunkZ = (int) floor($loader->getZ()) >> Chunk::COORD_BIT_SIZE; - $centerChunkPosHash = World::chunkHash($centerChunkX, $centerChunkZ); - if(isset($centerChunks[$centerChunkPosHash])){ - //we already queued chunks in this radius because of a previous loader on the same chunk - continue; - } - $centerChunks[$centerChunkPosHash] = true; - - foreach($selector->selectChunks( - $this->chunkTickRadius, - $centerChunkX, - $centerChunkZ - ) as $hash){ - World::getXZ($hash, $chunkX, $chunkZ); - if(!isset($chunkTickList[$hash]) && isset($this->chunks[$hash]) && $this->isChunkTickable($chunkX, $chunkZ, $chunkTickableCache)){ - $chunkTickList[$hash] = true; - } - } - } - } - private function tickChunks() : void{ - if($this->chunkTickRadius <= 0 || (count($this->tickingChunks) === 0 && count($this->tickingLoaders) === 0)){ + if($this->chunkTickRadius <= 0 || count($this->tickingChunks) === 0){ return; } @@ -1269,12 +1201,6 @@ class World implements ChunkManager{ $chunkTickList[$hash] = true; } - //TODO: REMOVE THIS - //backwards compatibility for TickingChunkLoader, although I'm not sure this is really necessary in practice - if(count($this->tickingLoaders) !== 0){ - $this->selectTickableChunksLegacy($chunkTickList, $chunkTickableCache); - } - $this->timings->randomChunkUpdatesChunkSelection->stopTiming(); foreach($chunkTickList as $index => $_){ From dd9ea4ee02b1344e2d0eb6862522951d19d8cd51 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 11 Apr 2023 23:27:01 +0100 Subject: [PATCH 571/692] Release 5.0.0-BETA2 --- changelogs/5.0-beta.md | 53 +++++++++++++++++++++++++++++++++++++++++- src/VersionInfo.php | 2 +- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/changelogs/5.0-beta.md b/changelogs/5.0-beta.md index 0fef808fc..e2e9079b5 100644 --- a/changelogs/5.0-beta.md +++ b/changelogs/5.0-beta.md @@ -41,4 +41,55 @@ Released 7th March 2023. - The following methods have been renamed: - `Block->computeStateData()` -> `Block->computeTypeAndStateData()` - `Block->decodeStateData()` -> `Block->decodeTypeAndStateData()` -- Wall state data now packs connections into 7 bits instead of 8. \ No newline at end of file +- Wall state data now packs connections into 7 bits instead of 8. + +# 5.0.0-BETA2 +Released 11th April 2023. + +**This release includes changes from the following releases:** +- [4.17.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.17.md#4170) +- [4.17.1](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.17.md#4171) +- [4.17.2](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.17.md#4172) +- [4.18.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.18.md#4180) +- [4.18.1](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.18.md#4181) +- [4.18.2](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.18.md#4182) +- [4.18.3](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.18.md#4183) +- [4.18.4](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.18.md#4184) +- [4.19.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA2/changelogs/4.19.md#4190) + +## Tools +- Added script `tools/generate-bedrock-data-from-packets.php`. This tool accepts a txt file containing base64-encoded packet dumps. + - This script has been used to generate data for [BedrockData](https://github.com/pmmp/BedrockData) for several years, but has only now been open-sourced. + - It's used to generate data such as crafting recipes, creative inventory data, and various other blobs of data needed to support the current version of Minecraft: Bedrock Edition. + +## Gameplay +- Anvils now damage entities when they fall on top of them. + +## API +### `pocketmine\block\utils` +- The following API interface requirements have been added (BC breaking): + - `public Fallable->getFallDamagePerBlock() : float` (default implementation provided by `FallableTrait`) + - `public Fallable->getMaxFallDamage() : float` (default implementation provided by `FallableTrait`) + +### `pocketmine\data\bedrock\block` +- The following new API methods have been added: + - `public BlockStateData->getVersionAsString() : string` + +#### `pocketmine\data\bedrock\block\upgrade\model` +- `BlockStateUpgradeSchemaModelBlockRemap` now accepts `null` for `oldState` and `newState`. This makes it easier to generate portable schemas for other languages to read. + +### `pocketmine\event\entity` +- The following new API constants have been added: + - `EntityDamageEvent::CAUSE_FALLING_BLOCK` + - `EntityDamageEvent::MODIFIER_ARMOR_HELMET` + +### `pocketmine\item` +- The following API methods have signature changes: + - `ItemTypeIds::toBlockTypeId()` may now return `null` if the item type ID is not a block. + +### `pocketmine\player` +- The following classes have been removed: + - `PlayerChunkLoader` - deprecated in 4.19.0 (this was technically internal, but never marked as such) + +## Internals +- Make use of `Item->canStackWith()` instead of `Item->equals()` wherever possible, to make the code more readable. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 9fa2339ff..4955f5c17 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -33,7 +33,7 @@ final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-BETA2"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "beta"; private function __construct(){ From 18658cb74d056cd9a5bb0c0f41db2bcfae330bf5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 11 Apr 2023 23:27:01 +0100 Subject: [PATCH 572/692] 5.0.0-BETA3 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 4955f5c17..20486d169 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,8 +32,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-BETA2"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-BETA3"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; private function __construct(){ From c3a2199f0e8a34329d8d8f34a23d4a17cbc5fffe Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:05:37 +0100 Subject: [PATCH 573/692] Reduce global usage in world providers --- src/world/format/io/BaseWorldProvider.php | 22 ++++++++++++++------- src/world/format/io/leveldb/LevelDB.php | 24 ++++++++--------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index cd1cc9b5f..a1ddb3c8f 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -24,6 +24,9 @@ declare(strict_types=1); namespace pocketmine\world\format\io; use pocketmine\data\bedrock\block\BlockStateDeserializeException; +use pocketmine\data\bedrock\block\BlockStateDeserializer; +use pocketmine\data\bedrock\block\BlockStateSerializer; +use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; use pocketmine\world\format\PalettedBlockArray; @@ -33,6 +36,10 @@ use function file_exists; abstract class BaseWorldProvider implements WorldProvider{ protected WorldData $worldData; + protected BlockStateDeserializer $blockStateDeserializer; + protected BlockDataUpgrader $blockDataUpgrader; + protected BlockStateSerializer $blockStateSerializer; + public function __construct( protected string $path ){ @@ -40,6 +47,11 @@ abstract class BaseWorldProvider implements WorldProvider{ throw new WorldException("World does not exist"); } + //TODO: this should not rely on singletons + $this->blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); + $this->blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); + $this->blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); + $this->worldData = $this->loadLevelData(); } @@ -52,24 +64,20 @@ abstract class BaseWorldProvider implements WorldProvider{ private function translatePalette(PalettedBlockArray $blockArray) : PalettedBlockArray{ $palette = $blockArray->getPalette(); - //TODO: this should be dependency-injected so it can be replaced, but that would break BC - //also, we want it to be lazy-loaded ... - $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); - $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); $newPalette = []; foreach($palette as $k => $legacyIdMeta){ - $newStateData = $blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); + $newStateData = $this->blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); if($newStateData === null){ //TODO: remember data for unknown states so we can implement them later $newStateData = GlobalBlockStateHandlers::getUnknownBlockStateData(); } try{ - $newPalette[$k] = $blockStateDeserializer->deserialize($newStateData); + $newPalette[$k] = $this->blockStateDeserializer->deserialize($newStateData); }catch(BlockStateDeserializeException){ //TODO: this needs to be logged //TODO: maybe we can remember unknown states for later saving instead of discarding them and destroying maps... - $newPalette[$k] = $blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); + $newPalette[$k] = $this->blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); } } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 8f3aa54ab..ff57d14cd 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -27,7 +27,6 @@ use pocketmine\block\Block; use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateDeserializeException; -use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtException; @@ -158,14 +157,12 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $paletteSize = $bitsPerBlock === 0 ? 1 : $stream->getLInt(); - $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); - $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); for($i = 0; $i < $paletteSize; ++$i){ try{ $offset = $stream->getOffset(); $blockStateNbt = $nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag(); - $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); if($blockStateData === null){ //upgrading blockstates should always succeed, regardless of whether they've been implemented or not throw new BlockStateDeserializeException("Invalid or improperly mapped legacy blockstate: " . $blockStateNbt->toString()); @@ -173,11 +170,11 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $stream->setOffset($offset); try{ - $palette[] = $blockStateDeserializer->deserialize($blockStateData); + $palette[] = $this->blockStateDeserializer->deserialize($blockStateData); }catch(BlockStateDeserializeException){ //TODO: remember data for unknown states so we can implement them later //TODO: log this - $palette[] = $blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); + $palette[] = $this->blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); } }catch(NbtException | BlockStateDeserializeException $e){ throw new CorruptedChunkException("Invalid blockstate NBT at offset $i in paletted storage: " . $e->getMessage(), 0, $e); @@ -188,7 +185,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return PalettedBlockArray::fromData($bitsPerBlock, $words, $palette); } - private static function serializeBlockPalette(BinaryStream $stream, PalettedBlockArray $blocks, BlockStateSerializer $blockStateSerializer) : void{ + private function serializeBlockPalette(BinaryStream $stream, PalettedBlockArray $blocks) : void{ $stream->putByte($blocks->getBitsPerBlock() << 1); $stream->put($blocks->getWordArray()); @@ -198,7 +195,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } $tags = []; foreach($palette as $p){ - $tags[] = new TreeRoot($blockStateSerializer->serialize($p)->toNbt()); + $tags[] = new TreeRoot($this->blockStateSerializer->serialize($p)->toNbt()); } $stream->put((new LittleEndianNbtSerializer())->writeMultiple($tags)); @@ -327,8 +324,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $binaryStream = new BinaryStream($extraRawData); $count = $binaryStream->getLInt(); - $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); - $blockStateDeserializer = GlobalBlockStateHandlers::getDeserializer(); for($i = 0; $i < $count; ++$i){ $key = $binaryStream->getLInt(); $value = $binaryStream->getLShort(); @@ -340,13 +335,13 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockId = $value & 0xff; $blockData = ($value >> 8) & 0xf; - $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($blockId, $blockData); + $blockStateData = $this->blockDataUpgrader->upgradeIntIdMeta($blockId, $blockData); if($blockStateData === null){ //TODO: we could preserve this in case it's supported in the future, but this was historically only //used for grass anyway, so we probably don't need to care continue; } - $blockStateId = $blockStateDeserializer->deserialize($blockStateData); + $blockStateId = $this->blockStateDeserializer->deserialize($blockStateData); if(!isset($extraDataLayers[$ySub])){ $extraDataLayers[$ySub] = new PalettedBlockArray(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS); @@ -693,9 +688,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)){ $subChunks = $chunk->getSubChunks(); - //TODO: this should not rely on globals, but in PM4 we have no other option, and it's not worse than what we - //were doing before anyway ... - $blockStateSerializer = GlobalBlockStateHandlers::getSerializer(); foreach($subChunks as $y => $subChunk){ $key = $index . ChunkDataKey::SUBCHUNK . chr($y); if($subChunk->isEmptyAuthoritative()){ @@ -707,7 +699,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $layers = $subChunk->getBlockLayers(); $subStream->putByte(count($layers)); foreach($layers as $blocks){ - self::serializeBlockPalette($subStream, $blocks, $blockStateSerializer); + $this->serializeBlockPalette($subStream, $blocks); } $write->put($key, $subStream->getBuffer()); From 1c626baf1a2f1086b63bf3d7293dfa415c6d7ab9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:27:55 +0100 Subject: [PATCH 574/692] Fixed dodgy custom block registration test --- tests/phpunit/block/BlockTest.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 8712212c5..cf0b674d6 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -62,16 +62,9 @@ class BlockTest extends TestCase{ * Test registering a new block which does not yet exist */ public function testRegisterNewBlock() : void{ - for($i = BlockTypeIds::FIRST_UNUSED_BLOCK_ID; $i < BlockTypeIds::FIRST_UNUSED_BLOCK_ID + 256; ++$i){ - if(!$this->blockFactory->isRegistered($i)){ - $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); - $this->blockFactory->register($b); - self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); - return; - } - } - - throw new \RuntimeException("Can't test registering new blocks because no unused spaces left"); + $b = new StrangeNewBlock(new BlockIdentifier(BlockTypeIds::newId()), "Strange New Block", new BlockTypeInfo(BlockBreakInfo::instant())); + $this->blockFactory->register($b); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->fromStateId($b->getStateId())); } /** From 874fdf5adb420565d2df91490167952528214a6c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:44:47 +0100 Subject: [PATCH 575/692] ItemBlock: reference blocks directly (take 2) This was first attempted in f64dc01bd1c14ff3f79bd6c18d0c337dbc0e87e0, but reverted, since I hadn't considered how to handle stripping state data from blocks. This removes the abusable API RuntimeBlockStateRegistry::fromTypeId() and related methods. These were only used to allow ItemBlocks to magically start referencing other blocks if the blocks were overridden by a plugin, but this was never a well-supported use-case anyway. Instead of relying on RuntimeBlockStateRegistry, we remember the state that the block had during its constructor, and use that to normalize the non-item properties for asItem(). closes #5609 --- src/block/Anvil.php | 2 +- src/block/Block.php | 48 +++++++++++++++++-------- src/block/Dirt.php | 2 +- src/block/Froglight.php | 2 +- src/block/Light.php | 2 +- src/block/NetherVines.php | 2 +- src/block/RedMushroomBlock.php | 2 +- src/block/RuntimeBlockStateRegistry.php | 28 --------------- src/block/Skull.php | 2 +- src/block/Slab.php | 2 +- src/block/Sponge.php | 2 +- src/block/TNT.php | 2 +- src/block/UnknownBlock.php | 2 +- src/block/Wood.php | 2 +- src/block/utils/ColoredTrait.php | 2 +- src/block/utils/CopperTrait.php | 2 +- src/block/utils/CoralTypeTrait.php | 2 +- src/item/ItemBlock.php | 34 +++++------------- 18 files changed, 57 insertions(+), 83 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index edfb9491d..ee8b25e38 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,7 +51,7 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } diff --git a/src/block/Block.php b/src/block/Block.php index d557411fe..be46de592 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -76,6 +76,8 @@ class Block{ */ private static array $stateDataBits = []; + private int $defaultStateData; + /** * @param string $name English name of the block type (TODO: implement translations) */ @@ -84,6 +86,8 @@ class Block{ $this->fallbackName = $name; $this->typeInfo = $typeInfo; $this->position = new Position(0, 0, 0, null); + + $this->defaultStateData = $this->computeStateData(); } public function __clone(){ @@ -174,7 +178,9 @@ class Block{ * Type information such as colour, wood type, etc. is preserved. */ public function asItem() : Item{ - return new ItemBlock($this); + $normalized = clone $this; + $normalized->decodeStateData($this->defaultStateData); + return new ItemBlock($normalized); } final public function getRequiredTypeDataBits() : int{ @@ -211,6 +217,17 @@ class Block{ } } + private function decodeStateData(int $data) : void{ + $stateBits = $this->getRequiredStateDataBits(); + $reader = new RuntimeDataReader($stateBits, $data); + + $this->describeState($reader); + $readBits = $reader->getOffset(); + if($stateBits !== $readBits){ + throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were provided, but $readBits were read"); + } + } + /** * @internal */ @@ -219,12 +236,7 @@ class Block{ $stateBits = $this->getRequiredStateDataBits(); $reader = new RuntimeDataReader($typeBits + $stateBits, $data); $this->decodeTypeData($reader->readInt($typeBits)); - - $this->describeState($reader); - $readBits = $reader->getOffset() - $typeBits; - if($stateBits !== $readBits){ - throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were provided, but $readBits were read"); - } + $this->decodeStateData($reader->readInt($stateBits)); } /** @@ -243,6 +255,19 @@ class Block{ return $writer->getValue(); } + private function computeStateData() : int{ + $stateBits = $this->getRequiredStateDataBits(); + $writer = new RuntimeDataWriter($stateBits); + + $this->describeState($writer); + $writtenBits = $writer->getOffset(); + if($stateBits !== $writtenBits){ + throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were expected, but $writtenBits were written"); + } + + return $writer->getValue(); + } + /** * @internal */ @@ -251,12 +276,7 @@ class Block{ $stateBits = $this->getRequiredStateDataBits(); $writer = new RuntimeDataWriter($typeBits + $stateBits); $writer->writeInt($typeBits, $this->computeTypeData()); - - $this->describeState($writer); - $writtenBits = $writer->getOffset() - $typeBits; - if($stateBits !== $writtenBits){ - throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were expected, but $writtenBits were written"); - } + $writer->writeInt($stateBits, $this->computeStateData()); return $writer->getValue(); } @@ -269,7 +289,7 @@ class Block{ * The method implementation must NOT use conditional logic to determine which properties are written. It must * always write the same properties in the same order, regardless of the current state of the block. */ - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ //NOOP } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 900879433..33f3800d7 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -45,7 +45,7 @@ class Dirt extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index 13b68e21e..dcd14c900 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -35,7 +35,7 @@ final class Froglight extends SimplePillar{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/Light.php b/src/block/Light.php index 5ee7281c9..963c00385 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -34,7 +34,7 @@ final class Light extends Flowable{ private int $level = self::MAX_LIGHT_LEVEL; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php index 4a924b2be..d00580624 100644 --- a/src/block/NetherVines.php +++ b/src/block/NetherVines.php @@ -52,7 +52,7 @@ class NetherVines extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeState(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->boundedInt(5, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index dfa50e265..07afbfc21 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -36,7 +36,7 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ //these blocks always drop as all-cap, but may exist in other forms in the inventory (particularly creative), //so this information needs to be kept in the type info $w->mushroomBlockType($this->mushroomBlockType); diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index ed3761b72..cdcd4b73a 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -151,18 +151,6 @@ class RuntimeBlockStateRegistry{ } } - /** - * @internal - * Returns the default state of the block type associated with the given type ID. - */ - public function fromTypeId(int $typeId) : Block{ - if(isset($this->typeIndex[$typeId])){ - return clone $this->typeIndex[$typeId]; - } - - throw new \InvalidArgumentException("Block ID $typeId is not registered"); - } - public function fromStateId(int $stateId) : Block{ if($stateId < 0){ throw new \InvalidArgumentException("Block state ID cannot be negative"); @@ -178,22 +166,6 @@ class RuntimeBlockStateRegistry{ return $block; } - /** - * Returns whether a specified block state is already registered in the block factory. - */ - public function isRegistered(int $typeId) : bool{ - $b = $this->typeIndex[$typeId] ?? null; - return $b !== null && !($b instanceof UnknownBlock); - } - - /** - * @return Block[] - * @phpstan-return array - */ - public function getAllKnownTypes() : array{ - return $this->typeIndex; - } - /** * @return Block[] */ diff --git a/src/block/Skull.php b/src/block/Skull.php index 10403ab6b..926c5cc80 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -49,7 +49,7 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } diff --git a/src/block/Slab.php b/src/block/Slab.php index 4e25d15a4..fa5833d7c 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -37,8 +37,8 @@ class Slab extends Transparent{ protected SlabType $slabType; public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ - parent::__construct($idInfo, $name . " Slab", $typeInfo); $this->slabType = SlabType::BOTTOM(); + parent::__construct($idInfo, $name . " Slab", $typeInfo); } protected function describeState(RuntimeDataDescriber $w) : void{ diff --git a/src/block/Sponge.php b/src/block/Sponge.php index b4e523ffa..5b283d18b 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/TNT.php b/src/block/TNT.php index 7012f7145..d50028f92 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -45,7 +45,7 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 7c48b236f..4523fd7ec 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -38,7 +38,7 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); diff --git a/src/block/Wood.php b/src/block/Wood.php index 9a0c36e1d..3fbae40da 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -38,7 +38,7 @@ class Wood extends Opaque{ private bool $stripped = false; - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index 42abe64b9..b9a14bee1 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -31,7 +31,7 @@ trait ColoredTrait{ private $color; /** @see Block::describeType() */ - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index ed230c6ba..11c0178f9 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -44,7 +44,7 @@ trait CopperTrait{ parent::__construct($identifier, $name, $typeInfo); } - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index d2c96c8f4..4607831c8 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -31,7 +31,7 @@ trait CoralTypeTrait{ protected bool $dead = false; /** @see Block::describeType() */ - protected function describeType(RuntimeDataDescriber $w) : void{ + public function describeType(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); $w->bool($this->dead); } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index a7e14b5ce..ccd8793ef 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -35,47 +35,29 @@ use pocketmine\data\runtime\RuntimeDataDescriber; * just place wheat crops when used on the ground). */ final class ItemBlock extends Item{ - private int $blockTypeId; - private int $blockTypeData; - - private int $fuelTime; - private bool $fireProof; - private int $maxStackSize; - - public function __construct(Block $block){ + public function __construct( + private Block $block + ){ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); - $this->blockTypeId = $block->getTypeId(); - $this->blockTypeData = $block->computeTypeData(); - - $this->fuelTime = $block->getFuelTime(); - $this->fireProof = $block->isFireProofAsItem(); - $this->maxStackSize = $block->getMaxStackSize(); } protected function describeType(RuntimeDataDescriber $w) : void{ - $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->blockTypeData); + $this->block->describeType($w); } public function getBlock(?int $clickedFace = null) : Block{ - //TODO: HACKY MESS, CLEAN IT UP - $factory = RuntimeBlockStateRegistry::getInstance(); - if(!$factory->isRegistered($this->blockTypeId)){ - return VanillaBlocks::AIR(); - } - $blockType = $factory->fromTypeId($this->blockTypeId); - $blockType->decodeTypeData($this->blockTypeData); - return $blockType; + return clone $this->block; } public function getFuelTime() : int{ - return $this->fuelTime; + return $this->block->getFuelTime(); } public function isFireProof() : bool{ - return $this->fireProof; + return $this->block->isFireProofAsItem(); } public function getMaxStackSize() : int{ - return $this->maxStackSize; + return $this->block->getMaxStackSize(); } } From 6703f46a08cf022ef1c165a53588914fca1408a2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:47:08 +0100 Subject: [PATCH 576/692] Remove random dead TODOs --- src/block/RuntimeBlockStateRegistry.php | 1 - src/world/format/io/leveldb/LevelDB.php | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index cdcd4b73a..080690c28 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -99,7 +99,6 @@ class RuntimeBlockStateRegistry{ try{ $v->decodeTypeAndStateData($stateData); if($v->computeTypeAndStateData() !== $stateData){ - //TODO: this should probably be a hard error throw new \LogicException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeTypeAndStateData() . " for input $stateData)"); } }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index ff57d14cd..8c0a43287 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -627,7 +627,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $subChunks = $this->deserializeLegacyTerrainData($index, $chunkVersion); break; default: - //TODO: set chunks read-only so the version on disk doesn't get overwritten throw new CorruptedChunkException("don't know how to decode chunk format version $chunkVersion"); } @@ -664,7 +663,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: tile ticks, biome states (?) $chunk = new Chunk( - $subChunks, //TODO: maybe missing biomes should be an error? + $subChunks, $terrainPopulated ); From 6cace51a212318410aabcfc58110ad0b9c1245b5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:47:17 +0100 Subject: [PATCH 577/692] Remove unused variable --- src/world/format/io/leveldb/LevelDB.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 8c0a43287..fa38bf4b8 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -679,7 +679,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $write = new \LevelDBWriteBatch(); - $previousVersion = $this->readVersion($chunkX, $chunkZ); $write->put($index . ChunkDataKey::NEW_VERSION, chr(self::CURRENT_LEVEL_CHUNK_VERSION)); $chunk = $chunkData->getChunk(); From 5950707267d3b60fa3fc086bc9a2910a49ee3315 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:55:09 +0100 Subject: [PATCH 578/692] Block: simplify required type data / state data bits code --- src/block/Block.php | 81 +++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 51 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index be46de592..bfbfcb3b6 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -65,17 +65,8 @@ class Block{ /** @var AxisAlignedBB[]|null */ protected ?array $collisionBoxes = null; - /** - * @var int[] - * @phpstan-var array - */ - private static array $typeDataBits = []; - /** - * @var int[] - * @phpstan-var array - */ - private static array $stateDataBits = []; - + private int $requiredTypeDataBits; + private int $requiredStateDataBits; private int $defaultStateData; /** @@ -87,6 +78,14 @@ class Block{ $this->typeInfo = $typeInfo; $this->position = new Position(0, 0, 0, null); + $calculator = new RuntimeDataSizeCalculator(); + $this->describeType($calculator); + $this->requiredTypeDataBits = $calculator->getBitsUsed(); + + $calculator = new RuntimeDataSizeCalculator(); + $this->describeState($calculator); + $this->requiredStateDataBits = $calculator->getBitsUsed(); + $this->defaultStateData = $this->computeStateData(); } @@ -184,47 +183,33 @@ class Block{ } final public function getRequiredTypeDataBits() : int{ - $class = get_class($this); - if(isset(self::$typeDataBits[$class])){ - return self::$typeDataBits[$class]; - } - $calculator = new RuntimeDataSizeCalculator(); - $this->describeType($calculator); - return self::$typeDataBits[$class] = $calculator->getBitsUsed(); + return $this->requiredTypeDataBits; } final public function getRequiredStateDataBits() : int{ - $class = get_class($this); - if(isset(self::$stateDataBits[$class])){ - return self::$stateDataBits[$class]; - } - $calculator = new RuntimeDataSizeCalculator(); - $this->describeState($calculator); - return self::$stateDataBits[$class] = $calculator->getBitsUsed(); + return $this->requiredStateDataBits; } /** * @internal */ final public function decodeTypeData(int $data) : void{ - $typeBits = $this->getRequiredTypeDataBits(); - $reader = new RuntimeDataReader($typeBits, $data); + $reader = new RuntimeDataReader($this->requiredTypeDataBits, $data); $this->describeType($reader); $readBits = $reader->getOffset(); - if($typeBits !== $readBits){ - throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were provided, but $readBits were read"); + if($this->requiredTypeDataBits !== $readBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredTypeDataBits bits of type data were provided, but $readBits were read"); } } private function decodeStateData(int $data) : void{ - $stateBits = $this->getRequiredStateDataBits(); - $reader = new RuntimeDataReader($stateBits, $data); + $reader = new RuntimeDataReader($this->requiredStateDataBits, $data); $this->describeState($reader); $readBits = $reader->getOffset(); - if($stateBits !== $readBits){ - throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were provided, but $readBits were read"); + if($this->requiredStateDataBits !== $readBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredStateDataBits bits of state data were provided, but $readBits were read"); } } @@ -232,37 +217,33 @@ class Block{ * @internal */ final public function decodeTypeAndStateData(int $data) : void{ - $typeBits = $this->getRequiredTypeDataBits(); - $stateBits = $this->getRequiredStateDataBits(); - $reader = new RuntimeDataReader($typeBits + $stateBits, $data); - $this->decodeTypeData($reader->readInt($typeBits)); - $this->decodeStateData($reader->readInt($stateBits)); + $reader = new RuntimeDataReader($this->requiredTypeDataBits + $this->requiredStateDataBits, $data); + $this->decodeTypeData($reader->readInt($this->requiredTypeDataBits)); + $this->decodeStateData($reader->readInt($this->requiredStateDataBits)); } /** * @internal */ final public function computeTypeData() : int{ - $typeBits = $this->getRequiredTypeDataBits(); - $writer = new RuntimeDataWriter($typeBits); + $writer = new RuntimeDataWriter($this->requiredTypeDataBits); $this->describeType($writer); $writtenBits = $writer->getOffset(); - if($typeBits !== $writtenBits){ - throw new \LogicException(get_class($this) . ": Exactly $typeBits bits of type data were expected, but $writtenBits were written"); + if($this->requiredTypeDataBits !== $writtenBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredTypeDataBits bits of type data were expected, but $writtenBits were written"); } return $writer->getValue(); } private function computeStateData() : int{ - $stateBits = $this->getRequiredStateDataBits(); - $writer = new RuntimeDataWriter($stateBits); + $writer = new RuntimeDataWriter($this->requiredStateDataBits); $this->describeState($writer); $writtenBits = $writer->getOffset(); - if($stateBits !== $writtenBits){ - throw new \LogicException(get_class($this) . ": Exactly $stateBits bits of state data were expected, but $writtenBits were written"); + if($this->requiredStateDataBits !== $writtenBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredStateDataBits bits of state data were expected, but $writtenBits were written"); } return $writer->getValue(); @@ -272,11 +253,9 @@ class Block{ * @internal */ final public function computeTypeAndStateData() : int{ - $typeBits = $this->getRequiredTypeDataBits(); - $stateBits = $this->getRequiredStateDataBits(); - $writer = new RuntimeDataWriter($typeBits + $stateBits); - $writer->writeInt($typeBits, $this->computeTypeData()); - $writer->writeInt($stateBits, $this->computeStateData()); + $writer = new RuntimeDataWriter($this->requiredTypeDataBits + $this->requiredStateDataBits); + $writer->writeInt($this->requiredTypeDataBits, $this->computeTypeData()); + $writer->writeInt($this->requiredStateDataBits, $this->computeStateData()); return $writer->getValue(); } From 027d8f73778b1a6153a79a7edcd875c362e0f0b6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 12:55:18 +0100 Subject: [PATCH 579/692] always the CS... --- src/item/ItemBlock.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index ccd8793ef..16c4badf3 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -24,8 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\Block; -use pocketmine\block\RuntimeBlockStateRegistry; -use pocketmine\block\VanillaBlocks; use pocketmine\data\runtime\RuntimeDataDescriber; /** From e40774d62fec6373f1af4e3e111ccd618e2d1abd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 13:06:56 +0100 Subject: [PATCH 580/692] Block: make internal methods private (they are no longer used outside of Block) --- src/block/Block.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index bfbfcb3b6..8fbb8123d 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -190,10 +190,7 @@ class Block{ return $this->requiredStateDataBits; } - /** - * @internal - */ - final public function decodeTypeData(int $data) : void{ + private function decodeTypeData(int $data) : void{ $reader = new RuntimeDataReader($this->requiredTypeDataBits, $data); $this->describeType($reader); @@ -222,10 +219,7 @@ class Block{ $this->decodeStateData($reader->readInt($this->requiredStateDataBits)); } - /** - * @internal - */ - final public function computeTypeData() : int{ + private function computeTypeData() : int{ $writer = new RuntimeDataWriter($this->requiredTypeDataBits); $this->describeType($writer); From b122703fd0505c2c8315add011df782660e3adf7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 13:18:47 +0100 Subject: [PATCH 581/692] BaseCoral: fixed late property initialization --- src/block/BaseCoral.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/BaseCoral.php b/src/block/BaseCoral.php index 79a489e5b..73b2c48d6 100644 --- a/src/block/BaseCoral.php +++ b/src/block/BaseCoral.php @@ -34,8 +34,8 @@ abstract class BaseCoral extends Transparent{ use CoralTypeTrait; public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ - parent::__construct($idInfo, $name, $typeInfo); $this->coralType = CoralType::TUBE(); + parent::__construct($idInfo, $name, $typeInfo); } public function onNearbyBlockChange() : void{ From 6acabf7a1b7b7c27e6ec4187d466a15b3e48a102 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 13 Apr 2023 13:40:53 +0100 Subject: [PATCH 582/692] Block: add clarifying note about isSameType() I'm still not happy with this method though... --- src/block/Block.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/block/Block.php b/src/block/Block.php index 8fbb8123d..b818cbac9 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -140,6 +140,9 @@ class Block{ /** * Returns whether the given block has an equivalent type to this one. This compares the type IDs. + * + * Type properties (e.g. colour, skull type, etc.) are not compared. This means that different colours of wool, + * concrete, etc. will all be considered as having the same type. */ public function isSameType(Block $other) : bool{ return $this->getTypeId() === $other->getTypeId(); From 4147d0dc7594b308b04a055db8db217680028e10 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 19 Apr 2023 16:42:50 +0100 Subject: [PATCH 583/692] tools/generate-blockstate-upgrade-schema: give better errors when a weird new blockstate version is found --- tools/generate-blockstate-upgrade-schema.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index f05243264..6fa2d5b72 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -196,7 +196,14 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad if($foundVersion === -1 || $mapping->new->getVersion() === $foundVersion){ $foundVersion = $mapping->new->getVersion(); }else{ - throw new AssumptionFailedError("Mixed versions found"); + $logger = \GlobalLogger::get(); + $logger->emergency("Mismatched upgraded versions found: $foundVersion and " . $mapping->new->getVersion()); + $logger->emergency("Mismatched new state: " . $mapping->new->toNbt()); + $logger->emergency("This is probably because the game didn't recognize the input blockstate, so it was returned unchanged."); + $logger->emergency("This is usually because the block is locked behind an experimental toggle that isn't enabled on the world you used when generating this upgrade table."); + $logger->emergency("You can test this in a vanilla game using the /give or /setblock commands to try and acquire the block. Keep trying different experiments until you find the right one."); + + exit(1); } } } From 769be8e140bb671017f7119529e15902479f642b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 20 Apr 2023 00:18:32 +0100 Subject: [PATCH 584/692] =?UTF-8?q?Fix=20CS=C3=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/generate-blockstate-upgrade-schema.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index 6fa2d5b72..85d42a35b 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -30,7 +30,6 @@ use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaUtils; use pocketmine\data\bedrock\block\upgrade\BlockStateUpgradeSchemaValueRemap; use pocketmine\nbt\tag\Tag; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; -use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use function array_key_first; From 6c0ad9589be59009a23ec9100a1f2e3e07671bf2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 21 Apr 2023 20:25:21 +0100 Subject: [PATCH 585/692] Block: rename isSameType() to hasSameTypeId() this should remove any ambiguity about its behaviour. --- src/block/Bamboo.php | 6 +++--- src/block/Block.php | 2 +- src/block/Cactus.php | 4 ++-- src/block/Candle.php | 2 +- src/block/Chest.php | 4 ++-- src/block/ChorusPlant.php | 4 ++-- src/block/Door.php | 8 ++++---- src/block/DoublePlant.php | 2 +- src/block/Liquid.php | 6 +++--- src/block/NetherVines.php | 4 ++-- src/block/Slab.php | 4 ++-- src/block/Stem.php | 2 +- src/block/Sugarcane.php | 10 +++++----- src/world/World.php | 4 ++-- src/world/generator/object/Ore.php | 4 ++-- 15 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index a6a08859b..dae857206 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -131,7 +131,7 @@ class Bamboo extends Transparent{ private function seekToTop() : Bamboo{ $world = $this->position->getWorld(); $top = $this; - while(($next = $world->getBlock($top->position->up())) instanceof Bamboo && $next->isSameType($this)){ + while(($next = $world->getBlock($top->position->up())) instanceof Bamboo && $next->hasSameTypeId($this)){ $top = $next; } return $top; @@ -156,7 +156,7 @@ class Bamboo extends Transparent{ public function onNearbyBlockChange() : void{ $world = $this->position->getWorld(); $below = $world->getBlock($this->position->down()); - if(!$this->canBeSupportedBy($below) && !$below->isSameType($this)){ + if(!$this->canBeSupportedBy($below) && !$below->hasSameTypeId($this)){ $world->useBreakOn($this->position); } } @@ -168,7 +168,7 @@ class Bamboo extends Transparent{ } $height = 1; - while($world->getBlock($this->position->subtract(0, $height, 0))->isSameType($this)){ + while($world->getBlock($this->position->subtract(0, $height, 0))->hasSameTypeId($this)){ if(++$height >= $maxHeight){ return false; } diff --git a/src/block/Block.php b/src/block/Block.php index b818cbac9..d5cd821fd 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -144,7 +144,7 @@ class Block{ * Type properties (e.g. colour, skull type, etc.) are not compared. This means that different colours of wool, * concrete, etc. will all be considered as having the same type. */ - public function isSameType(Block $other) : bool{ + public function hasSameTypeId(Block $other) : bool{ return $this->getTypeId() === $other->getTypeId(); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 18dd726e7..3563eded7 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -79,7 +79,7 @@ class Cactus extends Transparent{ } private function canBeSupportedBy(Block $block) : bool{ - return $block->isSameType($this) || $block->hasTypeTag(BlockTypeTags::SAND); + return $block->hasSameTypeId($this) || $block->hasTypeTag(BlockTypeTags::SAND); } public function onNearbyBlockChange() : void{ @@ -102,7 +102,7 @@ class Cactus extends Transparent{ } public function onRandomTick() : void{ - if(!$this->getSide(Facing::DOWN)->isSameType($this)){ + if(!$this->getSide(Facing::DOWN)->hasSameTypeId($this)){ $world = $this->position->getWorld(); if($this->age === self::MAX_AGE){ for($y = 1; $y < 3; ++$y){ diff --git a/src/block/Candle.php b/src/block/Candle.php index 4870277cc..d95815222 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -95,7 +95,7 @@ class Candle extends Transparent{ } protected function getCandleIfCompatibleType(Block $block) : ?Candle{ - return $block instanceof Candle && $block->isSameType($this) ? $block : null; + return $block instanceof Candle && $block->hasSameTypeId($this) ? $block : null; } public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector, int $face, bool $isClickedBlock) : bool{ diff --git a/src/block/Chest.php b/src/block/Chest.php index bb10e91df..45c190505 100644 --- a/src/block/Chest.php +++ b/src/block/Chest.php @@ -57,13 +57,13 @@ class Chest extends Transparent{ foreach([false, true] as $clockwise){ $side = Facing::rotateY($this->facing, $clockwise); $c = $this->getSide($side); - if($c instanceof Chest && $c->isSameType($this) && $c->facing === $this->facing){ + if($c instanceof Chest && $c->hasSameTypeId($this) && $c->facing === $this->facing){ $pair = $world->getTile($c->position); if($pair instanceof TileChest && !$pair->isPaired()){ [$left, $right] = $clockwise ? [$c, $this] : [$this, $c]; $ev = new ChestPairEvent($left, $right); $ev->call(); - if(!$ev->isCancelled() && $world->getBlock($this->position)->isSameType($this) && $world->getBlock($c->position)->isSameType($c)){ + if(!$ev->isCancelled() && $world->getBlock($this->position)->hasSameTypeId($this) && $world->getBlock($c->position)->hasSameTypeId($c)){ $pair->pairWith($tile); $tile->pairWith($pair); break; diff --git a/src/block/ChorusPlant.php b/src/block/ChorusPlant.php index ebc5308ee..f7642bd04 100644 --- a/src/block/ChorusPlant.php +++ b/src/block/ChorusPlant.php @@ -40,7 +40,7 @@ final class ChorusPlant extends Flowable{ $bb = AxisAlignedBB::one(); foreach($this->getAllSides() as $facing => $block){ $id = $block->getTypeId(); - if($id !== BlockTypeIds::END_STONE && $id !== BlockTypeIds::CHORUS_FLOWER && !$block->isSameType($this)){ + if($id !== BlockTypeIds::END_STONE && $id !== BlockTypeIds::CHORUS_FLOWER && !$block->hasSameTypeId($this)){ $bb->trim($facing, 2 / 16); } } @@ -49,7 +49,7 @@ final class ChorusPlant extends Flowable{ } private function canBeSupportedBy(Block $block) : bool{ - return $block->isSameType($this) || $block->getTypeId() === BlockTypeIds::END_STONE; + return $block->hasSameTypeId($this) || $block->getTypeId() === BlockTypeIds::END_STONE; } private function canStay(Position $position) : bool{ diff --git a/src/block/Door.php b/src/block/Door.php index 98a8f5309..d3a2abfb6 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -53,7 +53,7 @@ class Door extends Transparent{ //copy door properties from other half $other = $this->getSide($this->top ? Facing::DOWN : Facing::UP); - if($other instanceof Door && $other->isSameType($this)){ + if($other instanceof Door && $other->hasSameTypeId($this)){ if($this->top){ $this->facing = $other->facing; $this->open = $other->open; @@ -126,7 +126,7 @@ class Door extends Transparent{ $next = $this->getSide(Facing::rotateY($this->facing, false)); $next2 = $this->getSide(Facing::rotateY($this->facing, true)); - if($next->isSameType($this) || (!$next2->isTransparent() && $next->isTransparent())){ //Door hinge + if($next->hasSameTypeId($this) || (!$next2->isTransparent() && $next->isTransparent())){ //Door hinge $this->hingeRight = true; } @@ -145,7 +145,7 @@ class Door extends Transparent{ $other = $this->getSide($this->top ? Facing::DOWN : Facing::UP); $world = $this->position->getWorld(); - if($other instanceof Door && $other->isSameType($this)){ + if($other instanceof Door && $other->hasSameTypeId($this)){ $other->open = $this->open; $world->setBlock($other->position, $other); } @@ -166,7 +166,7 @@ class Door extends Transparent{ public function getAffectedBlocks() : array{ $other = $this->getSide($this->top ? Facing::DOWN : Facing::UP); - if($other->isSameType($this)){ + if($other->hasSameTypeId($this)){ return [$this, $other]; } return parent::getAffectedBlocks(); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index be231c1ea..cb341adad 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -65,7 +65,7 @@ class DoublePlant extends Flowable{ return ( $other instanceof DoublePlant && - $other->isSameType($this) && + $other->hasSameTypeId($this) && $other->top !== $this->top ); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index 476a8f8c7..ba04510a0 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -144,7 +144,7 @@ abstract class Liquid extends Transparent{ } protected function getEffectiveFlowDecay(Block $block) : int{ - if(!($block instanceof Liquid) || !$block->isSameType($this)){ + if(!($block instanceof Liquid) || !$block->hasSameTypeId($this)){ return -1; } @@ -282,7 +282,7 @@ abstract class Liquid extends Transparent{ $minAdjacentSources = $this->getMinAdjacentSourcesToFormSource(); if($minAdjacentSources !== null && $this->adjacentSources >= $minAdjacentSources){ $bottomBlock = $world->getBlockAt($this->position->x, $this->position->y - 1, $this->position->z); - if($bottomBlock->isSolid() || ($bottomBlock instanceof Liquid && $bottomBlock->isSameType($this) && $bottomBlock->isSource())){ + if($bottomBlock->isSolid() || ($bottomBlock instanceof Liquid && $bottomBlock->hasSameTypeId($this) && $bottomBlock->isSource())){ $newDecay = 0; $falling = false; } @@ -343,7 +343,7 @@ abstract class Liquid extends Transparent{ /** @phpstan-impure */ private function getSmallestFlowDecay(Block $block, int $decay) : int{ - if(!($block instanceof Liquid) || !$block->isSameType($this)){ + if(!($block instanceof Liquid) || !$block->hasSameTypeId($this)){ return $decay; } diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php index d00580624..34ab406c6 100644 --- a/src/block/NetherVines.php +++ b/src/block/NetherVines.php @@ -87,7 +87,7 @@ class NetherVines extends Flowable{ } private function canBeSupportedBy(Block $block) : bool{ - return $block->getSupportType($this->getSupportFace())->hasCenterSupport() || $block->isSameType($this); + return $block->getSupportType($this->getSupportFace())->hasCenterSupport() || $block->hasSameTypeId($this); } public function onNearbyBlockChange() : void{ @@ -101,7 +101,7 @@ class NetherVines extends Flowable{ */ private function seekToTip() : NetherVines{ $top = $this; - while(($next = $top->getSide($this->growthFace)) instanceof NetherVines && $next->isSameType($this)){ + while(($next = $top->getSide($this->growthFace)) instanceof NetherVines && $next->hasSameTypeId($this)){ $top = $next; } return $top; diff --git a/src/block/Slab.php b/src/block/Slab.php index fa5833d7c..265dce695 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -69,7 +69,7 @@ class Slab extends Transparent{ return true; } - if($blockReplace instanceof Slab && !$blockReplace->slabType->equals(SlabType::DOUBLE()) && $blockReplace->isSameType($this)){ + if($blockReplace instanceof Slab && !$blockReplace->slabType->equals(SlabType::DOUBLE()) && $blockReplace->hasSameTypeId($this)){ if($blockReplace->slabType->equals(SlabType::TOP())){ //Trying to combine with top slab return $clickVector->y <= 0.5 || (!$isClickedBlock && $face === Facing::UP); }else{ @@ -81,7 +81,7 @@ class Slab extends Transparent{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($blockReplace instanceof Slab && !$blockReplace->slabType->equals(SlabType::DOUBLE()) && $blockReplace->isSameType($this) && ( + if($blockReplace instanceof Slab && !$blockReplace->slabType->equals(SlabType::DOUBLE()) && $blockReplace->hasSameTypeId($this) && ( ($blockReplace->slabType->equals(SlabType::TOP()) && ($clickVector->y <= 0.5 || $face === Facing::UP)) || ($blockReplace->slabType->equals(SlabType::BOTTOM()) && ($clickVector->y >= 0.5 || $face === Facing::DOWN)) )){ diff --git a/src/block/Stem.php b/src/block/Stem.php index 3c7d1d2c3..5f06a46cb 100644 --- a/src/block/Stem.php +++ b/src/block/Stem.php @@ -47,7 +47,7 @@ abstract class Stem extends Crops{ }else{ $grow = $this->getPlant(); foreach(Facing::HORIZONTAL as $side){ - if($this->getSide($side)->isSameType($grow)){ + if($this->getSide($side)->hasSameTypeId($grow)){ return; } } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index cc41c0fb0..136527e78 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -45,7 +45,7 @@ class Sugarcane extends Flowable{ private function seekToBottom() : Position{ $world = $this->position->getWorld(); $bottom = $this->position; - while(($next = $world->getBlock($bottom->down()))->isSameType($this)){ + while(($next = $world->getBlock($bottom->down()))->hasSameTypeId($this)){ $bottom = $next->position; } return $bottom; @@ -67,7 +67,7 @@ class Sugarcane extends Flowable{ } $world->setBlock($b->position, $ev->getNewState()); $grew = true; - }elseif(!$b->isSameType($this)){ + }elseif(!$b->hasSameTypeId($this)){ break; } } @@ -108,7 +108,7 @@ class Sugarcane extends Flowable{ public function onNearbyBlockChange() : void{ $down = $this->getSide(Facing::DOWN); - if(!$down->isSameType($this) && !$this->canBeSupportedBy($down)){ + if(!$down->hasSameTypeId($this) && !$this->canBeSupportedBy($down)){ $this->position->getWorld()->useBreakOn($this->position); } } @@ -118,7 +118,7 @@ class Sugarcane extends Flowable{ } public function onRandomTick() : void{ - if(!$this->getSide(Facing::DOWN)->isSameType($this)){ + if(!$this->getSide(Facing::DOWN)->hasSameTypeId($this)){ if($this->age === self::MAX_AGE){ $this->grow($this->position); }else{ @@ -130,7 +130,7 @@ class Sugarcane extends Flowable{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $down = $this->getSide(Facing::DOWN); - if($down->isSameType($this)){ + if($down->hasSameTypeId($this)){ return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); }elseif($this->canBeSupportedBy($down)){ foreach(Facing::HORIZONTAL as $side){ diff --git a/src/world/World.php b/src/world/World.php index 4cd7c61f6..5c0233d0d 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1922,7 +1922,7 @@ class World implements ChunkManager{ $itemParser = LegacyStringToItemParser::getInstance(); foreach($item->getCanDestroy() as $v){ $entry = $itemParser->parse($v); - if($entry->getBlock()->isSameType($target)){ + if($entry->getBlock()->hasSameTypeId($target)){ $canBreak = true; break; } @@ -2077,7 +2077,7 @@ class World implements ChunkManager{ $itemParser = LegacyStringToItemParser::getInstance(); foreach($item->getCanPlaceOn() as $v){ $entry = $itemParser->parse($v); - if($entry->getBlock()->isSameType($blockClicked)){ + if($entry->getBlock()->hasSameTypeId($blockClicked)){ $canPlace = true; break; } diff --git a/src/world/generator/object/Ore.php b/src/world/generator/object/Ore.php index e56ddc457..533b73175 100644 --- a/src/world/generator/object/Ore.php +++ b/src/world/generator/object/Ore.php @@ -40,7 +40,7 @@ class Ore{ } public function canPlaceObject(ChunkManager $world, int $x, int $y, int $z) : bool{ - return $world->getBlockAt($x, $y, $z)->isSameType($this->type->replaces); + return $world->getBlockAt($x, $y, $z)->hasSameTypeId($this->type->replaces); } public function placeObject(ChunkManager $world, int $x, int $y, int $z) : void{ @@ -80,7 +80,7 @@ class Ore{ $sizeZ = ($zz + 0.5 - $seedZ) / $size; $sizeZ *= $sizeZ; - if(($sizeX + $sizeY + $sizeZ) < 1 && $world->getBlockAt($xx, $yy, $zz)->isSameType($this->type->replaces)){ + if(($sizeX + $sizeY + $sizeZ) < 1 && $world->getBlockAt($xx, $yy, $zz)->hasSameTypeId($this->type->replaces)){ $world->setBlockAt($xx, $yy, $zz, $this->type->material); } } From d4ca566fd0bb683a3932e21eb889ab1f6df4d6fb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 21 Apr 2023 20:38:28 +0100 Subject: [PATCH 586/692] Move block permutation generation into Block this allows sealing off a whole bunch of internal APIs. --- src/block/Block.php | 48 ++++++++++++++++--------- src/block/RuntimeBlockStateRegistry.php | 31 +--------------- tests/phpunit/block/BlockTest.php | 2 +- 3 files changed, 34 insertions(+), 47 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index d5cd821fd..bb2224723 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -29,6 +29,7 @@ namespace pocketmine\block; use pocketmine\block\tile\Spawnable; use pocketmine\block\tile\Tile; use pocketmine\block\utils\SupportType; +use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\data\runtime\RuntimeDataReader; use pocketmine\data\runtime\RuntimeDataSizeCalculator; @@ -185,14 +186,6 @@ class Block{ return new ItemBlock($normalized); } - final public function getRequiredTypeDataBits() : int{ - return $this->requiredTypeDataBits; - } - - final public function getRequiredStateDataBits() : int{ - return $this->requiredStateDataBits; - } - private function decodeTypeData(int $data) : void{ $reader = new RuntimeDataReader($this->requiredTypeDataBits, $data); @@ -213,10 +206,7 @@ class Block{ } } - /** - * @internal - */ - final public function decodeTypeAndStateData(int $data) : void{ + private function decodeTypeAndStateData(int $data) : void{ $reader = new RuntimeDataReader($this->requiredTypeDataBits + $this->requiredStateDataBits, $data); $this->decodeTypeData($reader->readInt($this->requiredTypeDataBits)); $this->decodeStateData($reader->readInt($this->requiredStateDataBits)); @@ -246,10 +236,7 @@ class Block{ return $writer->getValue(); } - /** - * @internal - */ - final public function computeTypeAndStateData() : int{ + private function computeTypeAndStateData() : int{ $writer = new RuntimeDataWriter($this->requiredTypeDataBits + $this->requiredStateDataBits); $writer->writeInt($this->requiredTypeDataBits, $this->computeTypeData()); $writer->writeInt($this->requiredStateDataBits, $this->computeStateData()); @@ -281,6 +268,35 @@ class Block{ //NOOP } + /** + * Generates copies of this Block in all possible state permutations. + * Every possible combination of known properties (e.g. facing, open/closed, powered/unpowered, on/off) will be + * generated. + * + * @phpstan-return \Generator + */ + public function generateStatePermutations() : \Generator{ + //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes + //at some point we'll need to find a better way to do this + $bits = $this->requiredTypeDataBits + $this->requiredStateDataBits; + if($bits > Block::INTERNAL_STATE_DATA_BITS){ + throw new \LogicException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); + } + for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ + $v = clone $this; + try{ + $v->decodeTypeAndStateData($stateData); + if($v->computeTypeAndStateData() !== $stateData){ + throw new \LogicException(static::class . "::decodeStateData() accepts invalid state data (returned " . $v->computeTypeAndStateData() . " for input $stateData)"); + } + }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it + continue; + } + + yield $v; + } + } + /** * Called when this block is created, set, or has a neighbouring block update, to re-detect dynamic properties which * are not saved on the world. diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index 080690c28..bc08c6a5d 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -25,11 +25,9 @@ namespace pocketmine\block; use pocketmine\block\BlockBreakInfo as BreakInfo; use pocketmine\block\BlockIdentifier as BID; -use pocketmine\data\runtime\InvalidSerializedRuntimeDataException; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\SingletonTrait; use pocketmine\world\light\LightUpdate; -use function get_class; use function min; /** @@ -82,33 +80,6 @@ class RuntimeBlockStateRegistry{ } } - /** - * Generates all the possible valid blockstates for a given block type. - * - * @phpstan-return \Generator - */ - private static function generateAllStatesForType(Block $block) : \Generator{ - //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes - //at some point we'll need to find a better way to do this - $bits = $block->getRequiredTypeDataBits() + $block->getRequiredStateDataBits(); - if($bits > Block::INTERNAL_STATE_DATA_BITS){ - throw new \InvalidArgumentException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); - } - for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ - $v = clone $block; - try{ - $v->decodeTypeAndStateData($stateData); - if($v->computeTypeAndStateData() !== $stateData){ - throw new \LogicException(get_class($block) . "::decodeStateData() accepts invalid state data (returned " . $v->computeTypeAndStateData() . " for input $stateData)"); - } - }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it - continue; - } - - yield $v; - } - } - /** * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading * from disk, and also when being read at runtime. @@ -130,7 +101,7 @@ class RuntimeBlockStateRegistry{ $this->typeIndex[$typeId] = clone $block; - foreach(self::generateAllStatesForType($block) as $v){ + foreach($block->generateStatePermutations() as $v){ $this->fillStaticArrays($v->getStateId(), $v); } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index cf0b674d6..e10ef7fc7 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -119,7 +119,7 @@ class BlockTest extends TestCase{ $states = $this->blockFactory->getAllKnownStates(); foreach($states as $stateId => $state){ - self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . $state->getTypeId() . ":" . $state->computeTypeAndStateData() . ", " . print_r($state, true) . ") - consistency check may need regenerating"); + self::assertArrayHasKey($stateId, $knownStates, "New block state $stateId (" . print_r($state, true) . ") - consistency check may need regenerating"); self::assertSame($knownStates[$stateId], $state->getName()); } asort($knownStates, SORT_STRING); From edcaeef83136fa18219dd6d36e71568a19093bd5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 21 Apr 2023 21:33:45 +0100 Subject: [PATCH 587/692] VanillaBlocks: reduce width of element block registration --- src/block/VanillaBlocks.php | 239 ++++++++++++++++++------------------ 1 file changed, 121 insertions(+), 118 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 31584f668..86534de83 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -1270,124 +1270,127 @@ final class VanillaBlocks{ $instaBreak = new Info(BreakInfo::instant()); self::register("element_zero", new Opaque(new BID(Ids::ELEMENT_ZERO), "???", $instaBreak)); - self::register("element_hydrogen", new Element(new BID(Ids::ELEMENT_HYDROGEN), "Hydrogen", $instaBreak, "h", 1, 5)); - self::register("element_helium", new Element(new BID(Ids::ELEMENT_HELIUM), "Helium", $instaBreak, "he", 2, 7)); - self::register("element_lithium", new Element(new BID(Ids::ELEMENT_LITHIUM), "Lithium", $instaBreak, "li", 3, 0)); - self::register("element_beryllium", new Element(new BID(Ids::ELEMENT_BERYLLIUM), "Beryllium", $instaBreak, "be", 4, 1)); - self::register("element_boron", new Element(new BID(Ids::ELEMENT_BORON), "Boron", $instaBreak, "b", 5, 4)); - self::register("element_carbon", new Element(new BID(Ids::ELEMENT_CARBON), "Carbon", $instaBreak, "c", 6, 5)); - self::register("element_nitrogen", new Element(new BID(Ids::ELEMENT_NITROGEN), "Nitrogen", $instaBreak, "n", 7, 5)); - self::register("element_oxygen", new Element(new BID(Ids::ELEMENT_OXYGEN), "Oxygen", $instaBreak, "o", 8, 5)); - self::register("element_fluorine", new Element(new BID(Ids::ELEMENT_FLUORINE), "Fluorine", $instaBreak, "f", 9, 6)); - self::register("element_neon", new Element(new BID(Ids::ELEMENT_NEON), "Neon", $instaBreak, "ne", 10, 7)); - self::register("element_sodium", new Element(new BID(Ids::ELEMENT_SODIUM), "Sodium", $instaBreak, "na", 11, 0)); - self::register("element_magnesium", new Element(new BID(Ids::ELEMENT_MAGNESIUM), "Magnesium", $instaBreak, "mg", 12, 1)); - self::register("element_aluminum", new Element(new BID(Ids::ELEMENT_ALUMINUM), "Aluminum", $instaBreak, "al", 13, 3)); - self::register("element_silicon", new Element(new BID(Ids::ELEMENT_SILICON), "Silicon", $instaBreak, "si", 14, 4)); - self::register("element_phosphorus", new Element(new BID(Ids::ELEMENT_PHOSPHORUS), "Phosphorus", $instaBreak, "p", 15, 5)); - self::register("element_sulfur", new Element(new BID(Ids::ELEMENT_SULFUR), "Sulfur", $instaBreak, "s", 16, 5)); - self::register("element_chlorine", new Element(new BID(Ids::ELEMENT_CHLORINE), "Chlorine", $instaBreak, "cl", 17, 6)); - self::register("element_argon", new Element(new BID(Ids::ELEMENT_ARGON), "Argon", $instaBreak, "ar", 18, 7)); - self::register("element_potassium", new Element(new BID(Ids::ELEMENT_POTASSIUM), "Potassium", $instaBreak, "k", 19, 0)); - self::register("element_calcium", new Element(new BID(Ids::ELEMENT_CALCIUM), "Calcium", $instaBreak, "ca", 20, 1)); - self::register("element_scandium", new Element(new BID(Ids::ELEMENT_SCANDIUM), "Scandium", $instaBreak, "sc", 21, 2)); - self::register("element_titanium", new Element(new BID(Ids::ELEMENT_TITANIUM), "Titanium", $instaBreak, "ti", 22, 2)); - self::register("element_vanadium", new Element(new BID(Ids::ELEMENT_VANADIUM), "Vanadium", $instaBreak, "v", 23, 2)); - self::register("element_chromium", new Element(new BID(Ids::ELEMENT_CHROMIUM), "Chromium", $instaBreak, "cr", 24, 2)); - self::register("element_manganese", new Element(new BID(Ids::ELEMENT_MANGANESE), "Manganese", $instaBreak, "mn", 25, 2)); - self::register("element_iron", new Element(new BID(Ids::ELEMENT_IRON), "Iron", $instaBreak, "fe", 26, 2)); - self::register("element_cobalt", new Element(new BID(Ids::ELEMENT_COBALT), "Cobalt", $instaBreak, "co", 27, 2)); - self::register("element_nickel", new Element(new BID(Ids::ELEMENT_NICKEL), "Nickel", $instaBreak, "ni", 28, 2)); - self::register("element_copper", new Element(new BID(Ids::ELEMENT_COPPER), "Copper", $instaBreak, "cu", 29, 2)); - self::register("element_zinc", new Element(new BID(Ids::ELEMENT_ZINC), "Zinc", $instaBreak, "zn", 30, 2)); - self::register("element_gallium", new Element(new BID(Ids::ELEMENT_GALLIUM), "Gallium", $instaBreak, "ga", 31, 3)); - self::register("element_germanium", new Element(new BID(Ids::ELEMENT_GERMANIUM), "Germanium", $instaBreak, "ge", 32, 4)); - self::register("element_arsenic", new Element(new BID(Ids::ELEMENT_ARSENIC), "Arsenic", $instaBreak, "as", 33, 4)); - self::register("element_selenium", new Element(new BID(Ids::ELEMENT_SELENIUM), "Selenium", $instaBreak, "se", 34, 5)); - self::register("element_bromine", new Element(new BID(Ids::ELEMENT_BROMINE), "Bromine", $instaBreak, "br", 35, 6)); - self::register("element_krypton", new Element(new BID(Ids::ELEMENT_KRYPTON), "Krypton", $instaBreak, "kr", 36, 7)); - self::register("element_rubidium", new Element(new BID(Ids::ELEMENT_RUBIDIUM), "Rubidium", $instaBreak, "rb", 37, 0)); - self::register("element_strontium", new Element(new BID(Ids::ELEMENT_STRONTIUM), "Strontium", $instaBreak, "sr", 38, 1)); - self::register("element_yttrium", new Element(new BID(Ids::ELEMENT_YTTRIUM), "Yttrium", $instaBreak, "y", 39, 2)); - self::register("element_zirconium", new Element(new BID(Ids::ELEMENT_ZIRCONIUM), "Zirconium", $instaBreak, "zr", 40, 2)); - self::register("element_niobium", new Element(new BID(Ids::ELEMENT_NIOBIUM), "Niobium", $instaBreak, "nb", 41, 2)); - self::register("element_molybdenum", new Element(new BID(Ids::ELEMENT_MOLYBDENUM), "Molybdenum", $instaBreak, "mo", 42, 2)); - self::register("element_technetium", new Element(new BID(Ids::ELEMENT_TECHNETIUM), "Technetium", $instaBreak, "tc", 43, 2)); - self::register("element_ruthenium", new Element(new BID(Ids::ELEMENT_RUTHENIUM), "Ruthenium", $instaBreak, "ru", 44, 2)); - self::register("element_rhodium", new Element(new BID(Ids::ELEMENT_RHODIUM), "Rhodium", $instaBreak, "rh", 45, 2)); - self::register("element_palladium", new Element(new BID(Ids::ELEMENT_PALLADIUM), "Palladium", $instaBreak, "pd", 46, 2)); - self::register("element_silver", new Element(new BID(Ids::ELEMENT_SILVER), "Silver", $instaBreak, "ag", 47, 2)); - self::register("element_cadmium", new Element(new BID(Ids::ELEMENT_CADMIUM), "Cadmium", $instaBreak, "cd", 48, 2)); - self::register("element_indium", new Element(new BID(Ids::ELEMENT_INDIUM), "Indium", $instaBreak, "in", 49, 3)); - self::register("element_tin", new Element(new BID(Ids::ELEMENT_TIN), "Tin", $instaBreak, "sn", 50, 3)); - self::register("element_antimony", new Element(new BID(Ids::ELEMENT_ANTIMONY), "Antimony", $instaBreak, "sb", 51, 4)); - self::register("element_tellurium", new Element(new BID(Ids::ELEMENT_TELLURIUM), "Tellurium", $instaBreak, "te", 52, 4)); - self::register("element_iodine", new Element(new BID(Ids::ELEMENT_IODINE), "Iodine", $instaBreak, "i", 53, 6)); - self::register("element_xenon", new Element(new BID(Ids::ELEMENT_XENON), "Xenon", $instaBreak, "xe", 54, 7)); - self::register("element_cesium", new Element(new BID(Ids::ELEMENT_CESIUM), "Cesium", $instaBreak, "cs", 55, 0)); - self::register("element_barium", new Element(new BID(Ids::ELEMENT_BARIUM), "Barium", $instaBreak, "ba", 56, 1)); - self::register("element_lanthanum", new Element(new BID(Ids::ELEMENT_LANTHANUM), "Lanthanum", $instaBreak, "la", 57, 8)); - self::register("element_cerium", new Element(new BID(Ids::ELEMENT_CERIUM), "Cerium", $instaBreak, "ce", 58, 8)); - self::register("element_praseodymium", new Element(new BID(Ids::ELEMENT_PRASEODYMIUM), "Praseodymium", $instaBreak, "pr", 59, 8)); - self::register("element_neodymium", new Element(new BID(Ids::ELEMENT_NEODYMIUM), "Neodymium", $instaBreak, "nd", 60, 8)); - self::register("element_promethium", new Element(new BID(Ids::ELEMENT_PROMETHIUM), "Promethium", $instaBreak, "pm", 61, 8)); - self::register("element_samarium", new Element(new BID(Ids::ELEMENT_SAMARIUM), "Samarium", $instaBreak, "sm", 62, 8)); - self::register("element_europium", new Element(new BID(Ids::ELEMENT_EUROPIUM), "Europium", $instaBreak, "eu", 63, 8)); - self::register("element_gadolinium", new Element(new BID(Ids::ELEMENT_GADOLINIUM), "Gadolinium", $instaBreak, "gd", 64, 8)); - self::register("element_terbium", new Element(new BID(Ids::ELEMENT_TERBIUM), "Terbium", $instaBreak, "tb", 65, 8)); - self::register("element_dysprosium", new Element(new BID(Ids::ELEMENT_DYSPROSIUM), "Dysprosium", $instaBreak, "dy", 66, 8)); - self::register("element_holmium", new Element(new BID(Ids::ELEMENT_HOLMIUM), "Holmium", $instaBreak, "ho", 67, 8)); - self::register("element_erbium", new Element(new BID(Ids::ELEMENT_ERBIUM), "Erbium", $instaBreak, "er", 68, 8)); - self::register("element_thulium", new Element(new BID(Ids::ELEMENT_THULIUM), "Thulium", $instaBreak, "tm", 69, 8)); - self::register("element_ytterbium", new Element(new BID(Ids::ELEMENT_YTTERBIUM), "Ytterbium", $instaBreak, "yb", 70, 8)); - self::register("element_lutetium", new Element(new BID(Ids::ELEMENT_LUTETIUM), "Lutetium", $instaBreak, "lu", 71, 8)); - self::register("element_hafnium", new Element(new BID(Ids::ELEMENT_HAFNIUM), "Hafnium", $instaBreak, "hf", 72, 2)); - self::register("element_tantalum", new Element(new BID(Ids::ELEMENT_TANTALUM), "Tantalum", $instaBreak, "ta", 73, 2)); - self::register("element_tungsten", new Element(new BID(Ids::ELEMENT_TUNGSTEN), "Tungsten", $instaBreak, "w", 74, 2)); - self::register("element_rhenium", new Element(new BID(Ids::ELEMENT_RHENIUM), "Rhenium", $instaBreak, "re", 75, 2)); - self::register("element_osmium", new Element(new BID(Ids::ELEMENT_OSMIUM), "Osmium", $instaBreak, "os", 76, 2)); - self::register("element_iridium", new Element(new BID(Ids::ELEMENT_IRIDIUM), "Iridium", $instaBreak, "ir", 77, 2)); - self::register("element_platinum", new Element(new BID(Ids::ELEMENT_PLATINUM), "Platinum", $instaBreak, "pt", 78, 2)); - self::register("element_gold", new Element(new BID(Ids::ELEMENT_GOLD), "Gold", $instaBreak, "au", 79, 2)); - self::register("element_mercury", new Element(new BID(Ids::ELEMENT_MERCURY), "Mercury", $instaBreak, "hg", 80, 2)); - self::register("element_thallium", new Element(new BID(Ids::ELEMENT_THALLIUM), "Thallium", $instaBreak, "tl", 81, 3)); - self::register("element_lead", new Element(new BID(Ids::ELEMENT_LEAD), "Lead", $instaBreak, "pb", 82, 3)); - self::register("element_bismuth", new Element(new BID(Ids::ELEMENT_BISMUTH), "Bismuth", $instaBreak, "bi", 83, 3)); - self::register("element_polonium", new Element(new BID(Ids::ELEMENT_POLONIUM), "Polonium", $instaBreak, "po", 84, 4)); - self::register("element_astatine", new Element(new BID(Ids::ELEMENT_ASTATINE), "Astatine", $instaBreak, "at", 85, 6)); - self::register("element_radon", new Element(new BID(Ids::ELEMENT_RADON), "Radon", $instaBreak, "rn", 86, 7)); - self::register("element_francium", new Element(new BID(Ids::ELEMENT_FRANCIUM), "Francium", $instaBreak, "fr", 87, 0)); - self::register("element_radium", new Element(new BID(Ids::ELEMENT_RADIUM), "Radium", $instaBreak, "ra", 88, 1)); - self::register("element_actinium", new Element(new BID(Ids::ELEMENT_ACTINIUM), "Actinium", $instaBreak, "ac", 89, 9)); - self::register("element_thorium", new Element(new BID(Ids::ELEMENT_THORIUM), "Thorium", $instaBreak, "th", 90, 9)); - self::register("element_protactinium", new Element(new BID(Ids::ELEMENT_PROTACTINIUM), "Protactinium", $instaBreak, "pa", 91, 9)); - self::register("element_uranium", new Element(new BID(Ids::ELEMENT_URANIUM), "Uranium", $instaBreak, "u", 92, 9)); - self::register("element_neptunium", new Element(new BID(Ids::ELEMENT_NEPTUNIUM), "Neptunium", $instaBreak, "np", 93, 9)); - self::register("element_plutonium", new Element(new BID(Ids::ELEMENT_PLUTONIUM), "Plutonium", $instaBreak, "pu", 94, 9)); - self::register("element_americium", new Element(new BID(Ids::ELEMENT_AMERICIUM), "Americium", $instaBreak, "am", 95, 9)); - self::register("element_curium", new Element(new BID(Ids::ELEMENT_CURIUM), "Curium", $instaBreak, "cm", 96, 9)); - self::register("element_berkelium", new Element(new BID(Ids::ELEMENT_BERKELIUM), "Berkelium", $instaBreak, "bk", 97, 9)); - self::register("element_californium", new Element(new BID(Ids::ELEMENT_CALIFORNIUM), "Californium", $instaBreak, "cf", 98, 9)); - self::register("element_einsteinium", new Element(new BID(Ids::ELEMENT_EINSTEINIUM), "Einsteinium", $instaBreak, "es", 99, 9)); - self::register("element_fermium", new Element(new BID(Ids::ELEMENT_FERMIUM), "Fermium", $instaBreak, "fm", 100, 9)); - self::register("element_mendelevium", new Element(new BID(Ids::ELEMENT_MENDELEVIUM), "Mendelevium", $instaBreak, "md", 101, 9)); - self::register("element_nobelium", new Element(new BID(Ids::ELEMENT_NOBELIUM), "Nobelium", $instaBreak, "no", 102, 9)); - self::register("element_lawrencium", new Element(new BID(Ids::ELEMENT_LAWRENCIUM), "Lawrencium", $instaBreak, "lr", 103, 9)); - self::register("element_rutherfordium", new Element(new BID(Ids::ELEMENT_RUTHERFORDIUM), "Rutherfordium", $instaBreak, "rf", 104, 2)); - self::register("element_dubnium", new Element(new BID(Ids::ELEMENT_DUBNIUM), "Dubnium", $instaBreak, "db", 105, 2)); - self::register("element_seaborgium", new Element(new BID(Ids::ELEMENT_SEABORGIUM), "Seaborgium", $instaBreak, "sg", 106, 2)); - self::register("element_bohrium", new Element(new BID(Ids::ELEMENT_BOHRIUM), "Bohrium", $instaBreak, "bh", 107, 2)); - self::register("element_hassium", new Element(new BID(Ids::ELEMENT_HASSIUM), "Hassium", $instaBreak, "hs", 108, 2)); - self::register("element_meitnerium", new Element(new BID(Ids::ELEMENT_MEITNERIUM), "Meitnerium", $instaBreak, "mt", 109, 2)); - self::register("element_darmstadtium", new Element(new BID(Ids::ELEMENT_DARMSTADTIUM), "Darmstadtium", $instaBreak, "ds", 110, 2)); - self::register("element_roentgenium", new Element(new BID(Ids::ELEMENT_ROENTGENIUM), "Roentgenium", $instaBreak, "rg", 111, 2)); - self::register("element_copernicium", new Element(new BID(Ids::ELEMENT_COPERNICIUM), "Copernicium", $instaBreak, "cn", 112, 2)); - self::register("element_nihonium", new Element(new BID(Ids::ELEMENT_NIHONIUM), "Nihonium", $instaBreak, "nh", 113, 3)); - self::register("element_flerovium", new Element(new BID(Ids::ELEMENT_FLEROVIUM), "Flerovium", $instaBreak, "fl", 114, 3)); - self::register("element_moscovium", new Element(new BID(Ids::ELEMENT_MOSCOVIUM), "Moscovium", $instaBreak, "mc", 115, 3)); - self::register("element_livermorium", new Element(new BID(Ids::ELEMENT_LIVERMORIUM), "Livermorium", $instaBreak, "lv", 116, 3)); - self::register("element_tennessine", new Element(new BID(Ids::ELEMENT_TENNESSINE), "Tennessine", $instaBreak, "ts", 117, 6)); - self::register("element_oganesson", new Element(new BID(Ids::ELEMENT_OGANESSON), "Oganesson", $instaBreak, "og", 118, 7)); + $register = fn(string $name, int $id, string $displayName, string $symbol, int $atomicWeight, int $group) => + self::register("element_$name", new Element(new BID($id), $displayName, $instaBreak, $symbol, $atomicWeight, $group)); + + $register("hydrogen", Ids::ELEMENT_HYDROGEN, "Hydrogen", "h", 1, 5); + $register("helium", Ids::ELEMENT_HELIUM, "Helium", "he", 2, 7); + $register("lithium", Ids::ELEMENT_LITHIUM, "Lithium", "li", 3, 0); + $register("beryllium", Ids::ELEMENT_BERYLLIUM, "Beryllium", "be", 4, 1); + $register("boron", Ids::ELEMENT_BORON, "Boron", "b", 5, 4); + $register("carbon", Ids::ELEMENT_CARBON, "Carbon", "c", 6, 5); + $register("nitrogen", Ids::ELEMENT_NITROGEN, "Nitrogen", "n", 7, 5); + $register("oxygen", Ids::ELEMENT_OXYGEN, "Oxygen", "o", 8, 5); + $register("fluorine", Ids::ELEMENT_FLUORINE, "Fluorine", "f", 9, 6); + $register("neon", Ids::ELEMENT_NEON, "Neon", "ne", 10, 7); + $register("sodium", Ids::ELEMENT_SODIUM, "Sodium", "na", 11, 0); + $register("magnesium", Ids::ELEMENT_MAGNESIUM, "Magnesium", "mg", 12, 1); + $register("aluminum", Ids::ELEMENT_ALUMINUM, "Aluminum", "al", 13, 3); + $register("silicon", Ids::ELEMENT_SILICON, "Silicon", "si", 14, 4); + $register("phosphorus", Ids::ELEMENT_PHOSPHORUS, "Phosphorus", "p", 15, 5); + $register("sulfur", Ids::ELEMENT_SULFUR, "Sulfur", "s", 16, 5); + $register("chlorine", Ids::ELEMENT_CHLORINE, "Chlorine", "cl", 17, 6); + $register("argon", Ids::ELEMENT_ARGON, "Argon", "ar", 18, 7); + $register("potassium", Ids::ELEMENT_POTASSIUM, "Potassium", "k", 19, 0); + $register("calcium", Ids::ELEMENT_CALCIUM, "Calcium", "ca", 20, 1); + $register("scandium", Ids::ELEMENT_SCANDIUM, "Scandium", "sc", 21, 2); + $register("titanium", Ids::ELEMENT_TITANIUM, "Titanium", "ti", 22, 2); + $register("vanadium", Ids::ELEMENT_VANADIUM, "Vanadium", "v", 23, 2); + $register("chromium", Ids::ELEMENT_CHROMIUM, "Chromium", "cr", 24, 2); + $register("manganese", Ids::ELEMENT_MANGANESE, "Manganese", "mn", 25, 2); + $register("iron", Ids::ELEMENT_IRON, "Iron", "fe", 26, 2); + $register("cobalt", Ids::ELEMENT_COBALT, "Cobalt", "co", 27, 2); + $register("nickel", Ids::ELEMENT_NICKEL, "Nickel", "ni", 28, 2); + $register("copper", Ids::ELEMENT_COPPER, "Copper", "cu", 29, 2); + $register("zinc", Ids::ELEMENT_ZINC, "Zinc", "zn", 30, 2); + $register("gallium", Ids::ELEMENT_GALLIUM, "Gallium", "ga", 31, 3); + $register("germanium", Ids::ELEMENT_GERMANIUM, "Germanium", "ge", 32, 4); + $register("arsenic", Ids::ELEMENT_ARSENIC, "Arsenic", "as", 33, 4); + $register("selenium", Ids::ELEMENT_SELENIUM, "Selenium", "se", 34, 5); + $register("bromine", Ids::ELEMENT_BROMINE, "Bromine", "br", 35, 6); + $register("krypton", Ids::ELEMENT_KRYPTON, "Krypton", "kr", 36, 7); + $register("rubidium", Ids::ELEMENT_RUBIDIUM, "Rubidium", "rb", 37, 0); + $register("strontium", Ids::ELEMENT_STRONTIUM, "Strontium", "sr", 38, 1); + $register("yttrium", Ids::ELEMENT_YTTRIUM, "Yttrium", "y", 39, 2); + $register("zirconium", Ids::ELEMENT_ZIRCONIUM, "Zirconium", "zr", 40, 2); + $register("niobium", Ids::ELEMENT_NIOBIUM, "Niobium", "nb", 41, 2); + $register("molybdenum", Ids::ELEMENT_MOLYBDENUM, "Molybdenum", "mo", 42, 2); + $register("technetium", Ids::ELEMENT_TECHNETIUM, "Technetium", "tc", 43, 2); + $register("ruthenium", Ids::ELEMENT_RUTHENIUM, "Ruthenium", "ru", 44, 2); + $register("rhodium", Ids::ELEMENT_RHODIUM, "Rhodium", "rh", 45, 2); + $register("palladium", Ids::ELEMENT_PALLADIUM, "Palladium", "pd", 46, 2); + $register("silver", Ids::ELEMENT_SILVER, "Silver", "ag", 47, 2); + $register("cadmium", Ids::ELEMENT_CADMIUM, "Cadmium", "cd", 48, 2); + $register("indium", Ids::ELEMENT_INDIUM, "Indium", "in", 49, 3); + $register("tin", Ids::ELEMENT_TIN, "Tin", "sn", 50, 3); + $register("antimony", Ids::ELEMENT_ANTIMONY, "Antimony", "sb", 51, 4); + $register("tellurium", Ids::ELEMENT_TELLURIUM, "Tellurium", "te", 52, 4); + $register("iodine", Ids::ELEMENT_IODINE, "Iodine", "i", 53, 6); + $register("xenon", Ids::ELEMENT_XENON, "Xenon", "xe", 54, 7); + $register("cesium", Ids::ELEMENT_CESIUM, "Cesium", "cs", 55, 0); + $register("barium", Ids::ELEMENT_BARIUM, "Barium", "ba", 56, 1); + $register("lanthanum", Ids::ELEMENT_LANTHANUM, "Lanthanum", "la", 57, 8); + $register("cerium", Ids::ELEMENT_CERIUM, "Cerium", "ce", 58, 8); + $register("praseodymium", Ids::ELEMENT_PRASEODYMIUM, "Praseodymium", "pr", 59, 8); + $register("neodymium", Ids::ELEMENT_NEODYMIUM, "Neodymium", "nd", 60, 8); + $register("promethium", Ids::ELEMENT_PROMETHIUM, "Promethium", "pm", 61, 8); + $register("samarium", Ids::ELEMENT_SAMARIUM, "Samarium", "sm", 62, 8); + $register("europium", Ids::ELEMENT_EUROPIUM, "Europium", "eu", 63, 8); + $register("gadolinium", Ids::ELEMENT_GADOLINIUM, "Gadolinium", "gd", 64, 8); + $register("terbium", Ids::ELEMENT_TERBIUM, "Terbium", "tb", 65, 8); + $register("dysprosium", Ids::ELEMENT_DYSPROSIUM, "Dysprosium", "dy", 66, 8); + $register("holmium", Ids::ELEMENT_HOLMIUM, "Holmium", "ho", 67, 8); + $register("erbium", Ids::ELEMENT_ERBIUM, "Erbium", "er", 68, 8); + $register("thulium", Ids::ELEMENT_THULIUM, "Thulium", "tm", 69, 8); + $register("ytterbium", Ids::ELEMENT_YTTERBIUM, "Ytterbium", "yb", 70, 8); + $register("lutetium", Ids::ELEMENT_LUTETIUM, "Lutetium", "lu", 71, 8); + $register("hafnium", Ids::ELEMENT_HAFNIUM, "Hafnium", "hf", 72, 2); + $register("tantalum", Ids::ELEMENT_TANTALUM, "Tantalum", "ta", 73, 2); + $register("tungsten", Ids::ELEMENT_TUNGSTEN, "Tungsten", "w", 74, 2); + $register("rhenium", Ids::ELEMENT_RHENIUM, "Rhenium", "re", 75, 2); + $register("osmium", Ids::ELEMENT_OSMIUM, "Osmium", "os", 76, 2); + $register("iridium", Ids::ELEMENT_IRIDIUM, "Iridium", "ir", 77, 2); + $register("platinum", Ids::ELEMENT_PLATINUM, "Platinum", "pt", 78, 2); + $register("gold", Ids::ELEMENT_GOLD, "Gold", "au", 79, 2); + $register("mercury", Ids::ELEMENT_MERCURY, "Mercury", "hg", 80, 2); + $register("thallium", Ids::ELEMENT_THALLIUM, "Thallium", "tl", 81, 3); + $register("lead", Ids::ELEMENT_LEAD, "Lead", "pb", 82, 3); + $register("bismuth", Ids::ELEMENT_BISMUTH, "Bismuth", "bi", 83, 3); + $register("polonium", Ids::ELEMENT_POLONIUM, "Polonium", "po", 84, 4); + $register("astatine", Ids::ELEMENT_ASTATINE, "Astatine", "at", 85, 6); + $register("radon", Ids::ELEMENT_RADON, "Radon", "rn", 86, 7); + $register("francium", Ids::ELEMENT_FRANCIUM, "Francium", "fr", 87, 0); + $register("radium", Ids::ELEMENT_RADIUM, "Radium", "ra", 88, 1); + $register("actinium", Ids::ELEMENT_ACTINIUM, "Actinium", "ac", 89, 9); + $register("thorium", Ids::ELEMENT_THORIUM, "Thorium", "th", 90, 9); + $register("protactinium", Ids::ELEMENT_PROTACTINIUM, "Protactinium", "pa", 91, 9); + $register("uranium", Ids::ELEMENT_URANIUM, "Uranium", "u", 92, 9); + $register("neptunium", Ids::ELEMENT_NEPTUNIUM, "Neptunium", "np", 93, 9); + $register("plutonium", Ids::ELEMENT_PLUTONIUM, "Plutonium", "pu", 94, 9); + $register("americium", Ids::ELEMENT_AMERICIUM, "Americium", "am", 95, 9); + $register("curium", Ids::ELEMENT_CURIUM, "Curium", "cm", 96, 9); + $register("berkelium", Ids::ELEMENT_BERKELIUM, "Berkelium", "bk", 97, 9); + $register("californium", Ids::ELEMENT_CALIFORNIUM, "Californium", "cf", 98, 9); + $register("einsteinium", Ids::ELEMENT_EINSTEINIUM, "Einsteinium", "es", 99, 9); + $register("fermium", Ids::ELEMENT_FERMIUM, "Fermium", "fm", 100, 9); + $register("mendelevium", Ids::ELEMENT_MENDELEVIUM, "Mendelevium", "md", 101, 9); + $register("nobelium", Ids::ELEMENT_NOBELIUM, "Nobelium", "no", 102, 9); + $register("lawrencium", Ids::ELEMENT_LAWRENCIUM, "Lawrencium", "lr", 103, 9); + $register("rutherfordium", Ids::ELEMENT_RUTHERFORDIUM, "Rutherfordium", "rf", 104, 2); + $register("dubnium", Ids::ELEMENT_DUBNIUM, "Dubnium", "db", 105, 2); + $register("seaborgium", Ids::ELEMENT_SEABORGIUM, "Seaborgium", "sg", 106, 2); + $register("bohrium", Ids::ELEMENT_BOHRIUM, "Bohrium", "bh", 107, 2); + $register("hassium", Ids::ELEMENT_HASSIUM, "Hassium", "hs", 108, 2); + $register("meitnerium", Ids::ELEMENT_MEITNERIUM, "Meitnerium", "mt", 109, 2); + $register("darmstadtium", Ids::ELEMENT_DARMSTADTIUM, "Darmstadtium", "ds", 110, 2); + $register("roentgenium", Ids::ELEMENT_ROENTGENIUM, "Roentgenium", "rg", 111, 2); + $register("copernicium", Ids::ELEMENT_COPERNICIUM, "Copernicium", "cn", 112, 2); + $register("nihonium", Ids::ELEMENT_NIHONIUM, "Nihonium", "nh", 113, 3); + $register("flerovium", Ids::ELEMENT_FLEROVIUM, "Flerovium", "fl", 114, 3); + $register("moscovium", Ids::ELEMENT_MOSCOVIUM, "Moscovium", "mc", 115, 3); + $register("livermorium", Ids::ELEMENT_LIVERMORIUM, "Livermorium", "lv", 116, 3); + $register("tennessine", Ids::ELEMENT_TENNESSINE, "Tennessine", "ts", 117, 6); + $register("oganesson", Ids::ELEMENT_OGANESSON, "Oganesson", "og", 118, 7); } private static function registerOres() : void{ From a8dec1adb151d787f7c60a50733decf2674cd6b3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 26 Apr 2023 23:30:56 +0100 Subject: [PATCH 588/692] PM5-specific changes for 1.19.80 --- .../json/SmithingTransformRecipeData.php | 5 +- src/crafting/json/SmithingTrimRecipeData.php | 43 +++++++++++++++ src/data/bedrock/block/BlockStateNames.php | 2 - .../bedrock/block/BlockStateStringValues.php | 8 --- src/data/bedrock/block/BlockTypeNames.php | 37 +++++++++++-- .../convert/BlockObjectToStateSerializer.php | 49 +++++++++-------- .../convert/BlockStateSerializerHelper.php | 25 ++------- .../BlockStateToObjectDeserializer.php | 53 +++++++++---------- src/world/format/io/data/BedrockWorldData.php | 4 +- tools/generate-bedrock-data-from-packets.php | 15 ++++++ 10 files changed, 152 insertions(+), 89 deletions(-) create mode 100644 src/crafting/json/SmithingTrimRecipeData.php diff --git a/src/crafting/json/SmithingTransformRecipeData.php b/src/crafting/json/SmithingTransformRecipeData.php index 3ad78f48d..17cdab54b 100644 --- a/src/crafting/json/SmithingTransformRecipeData.php +++ b/src/crafting/json/SmithingTransformRecipeData.php @@ -25,6 +25,8 @@ namespace pocketmine\crafting\json; final class SmithingTransformRecipeData{ + /** @required */ + public RecipeIngredientData $template; /** @required */ public RecipeIngredientData $input; /** @required */ @@ -34,7 +36,8 @@ final class SmithingTransformRecipeData{ /** @required */ public string $block; - public function __construct(RecipeIngredientData $input, RecipeIngredientData $addition, ItemStackData $output, string $block){ + public function __construct(RecipeIngredientData $template, RecipeIngredientData $input, RecipeIngredientData $addition, ItemStackData $output, string $block){ + $this->template = $template; $this->input = $input; $this->addition = $addition; $this->output = $output; diff --git a/src/crafting/json/SmithingTrimRecipeData.php b/src/crafting/json/SmithingTrimRecipeData.php new file mode 100644 index 000000000..9e385984b --- /dev/null +++ b/src/crafting/json/SmithingTrimRecipeData.php @@ -0,0 +1,43 @@ +template = $template; + $this->input = $input; + $this->addition = $addition; + $this->block = $block; + } +} diff --git a/src/data/bedrock/block/BlockStateNames.php b/src/data/bedrock/block/BlockStateNames.php index 47838373f..e241380a0 100644 --- a/src/data/bedrock/block/BlockStateNames.php +++ b/src/data/bedrock/block/BlockStateNames.php @@ -102,10 +102,8 @@ final class BlockStateNames{ public const MONSTER_EGG_STONE_TYPE = "monster_egg_stone_type"; public const MULTI_FACE_DIRECTION_BITS = "multi_face_direction_bits"; public const NEW_LEAF_TYPE = "new_leaf_type"; - public const NEW_LOG_TYPE = "new_log_type"; public const OCCUPIED_BIT = "occupied_bit"; public const OLD_LEAF_TYPE = "old_leaf_type"; - public const OLD_LOG_TYPE = "old_log_type"; public const OPEN_BIT = "open_bit"; public const OUTPUT_LIT_BIT = "output_lit_bit"; public const OUTPUT_SUBTRACT_BIT = "output_subtract_bit"; diff --git a/src/data/bedrock/block/BlockStateStringValues.php b/src/data/bedrock/block/BlockStateStringValues.php index 128e04d38..ba77cd387 100644 --- a/src/data/bedrock/block/BlockStateStringValues.php +++ b/src/data/bedrock/block/BlockStateStringValues.php @@ -141,19 +141,11 @@ final class BlockStateStringValues{ public const NEW_LEAF_TYPE_ACACIA = "acacia"; public const NEW_LEAF_TYPE_DARK_OAK = "dark_oak"; - public const NEW_LOG_TYPE_ACACIA = "acacia"; - public const NEW_LOG_TYPE_DARK_OAK = "dark_oak"; - public const OLD_LEAF_TYPE_BIRCH = "birch"; public const OLD_LEAF_TYPE_JUNGLE = "jungle"; public const OLD_LEAF_TYPE_OAK = "oak"; public const OLD_LEAF_TYPE_SPRUCE = "spruce"; - public const OLD_LOG_TYPE_BIRCH = "birch"; - public const OLD_LOG_TYPE_JUNGLE = "jungle"; - public const OLD_LOG_TYPE_OAK = "oak"; - public const OLD_LOG_TYPE_SPRUCE = "spruce"; - public const PILLAR_AXIS_X = "x"; public const PILLAR_AXIS_Y = "y"; public const PILLAR_AXIS_Z = "z"; diff --git a/src/data/bedrock/block/BlockTypeNames.php b/src/data/bedrock/block/BlockTypeNames.php index 56526ea9d..f94b72176 100644 --- a/src/data/bedrock/block/BlockTypeNames.php +++ b/src/data/bedrock/block/BlockTypeNames.php @@ -33,8 +33,10 @@ final class BlockTypeNames{ public const ACACIA_BUTTON = "minecraft:acacia_button"; public const ACACIA_DOOR = "minecraft:acacia_door"; + public const ACACIA_FENCE = "minecraft:acacia_fence"; public const ACACIA_FENCE_GATE = "minecraft:acacia_fence_gate"; public const ACACIA_HANGING_SIGN = "minecraft:acacia_hanging_sign"; + public const ACACIA_LOG = "minecraft:acacia_log"; public const ACACIA_PRESSURE_PLATE = "minecraft:acacia_pressure_plate"; public const ACACIA_STAIRS = "minecraft:acacia_stairs"; public const ACACIA_STANDING_SIGN = "minecraft:acacia_standing_sign"; @@ -84,8 +86,10 @@ final class BlockTypeNames{ public const BIG_DRIPLEAF = "minecraft:big_dripleaf"; public const BIRCH_BUTTON = "minecraft:birch_button"; public const BIRCH_DOOR = "minecraft:birch_door"; + public const BIRCH_FENCE = "minecraft:birch_fence"; public const BIRCH_FENCE_GATE = "minecraft:birch_fence_gate"; public const BIRCH_HANGING_SIGN = "minecraft:birch_hanging_sign"; + public const BIRCH_LOG = "minecraft:birch_log"; public const BIRCH_PRESSURE_PLATE = "minecraft:birch_pressure_plate"; public const BIRCH_STAIRS = "minecraft:birch_stairs"; public const BIRCH_STANDING_SIGN = "minecraft:birch_standing_sign"; @@ -123,6 +127,7 @@ final class BlockTypeNames{ public const CACTUS = "minecraft:cactus"; public const CAKE = "minecraft:cake"; public const CALCITE = "minecraft:calcite"; + public const CALIBRATED_SCULK_SENSOR = "minecraft:calibrated_sculk_sensor"; public const CAMERA = "minecraft:camera"; public const CAMPFIRE = "minecraft:campfire"; public const CANDLE = "minecraft:candle"; @@ -139,6 +144,23 @@ final class BlockTypeNames{ public const CHAIN_COMMAND_BLOCK = "minecraft:chain_command_block"; public const CHEMICAL_HEAT = "minecraft:chemical_heat"; public const CHEMISTRY_TABLE = "minecraft:chemistry_table"; + public const CHERRY_BUTTON = "minecraft:cherry_button"; + public const CHERRY_DOOR = "minecraft:cherry_door"; + public const CHERRY_DOUBLE_SLAB = "minecraft:cherry_double_slab"; + public const CHERRY_FENCE = "minecraft:cherry_fence"; + public const CHERRY_FENCE_GATE = "minecraft:cherry_fence_gate"; + public const CHERRY_HANGING_SIGN = "minecraft:cherry_hanging_sign"; + public const CHERRY_LEAVES = "minecraft:cherry_leaves"; + public const CHERRY_LOG = "minecraft:cherry_log"; + public const CHERRY_PLANKS = "minecraft:cherry_planks"; + public const CHERRY_PRESSURE_PLATE = "minecraft:cherry_pressure_plate"; + public const CHERRY_SAPLING = "minecraft:cherry_sapling"; + public const CHERRY_SLAB = "minecraft:cherry_slab"; + public const CHERRY_STAIRS = "minecraft:cherry_stairs"; + public const CHERRY_STANDING_SIGN = "minecraft:cherry_standing_sign"; + public const CHERRY_TRAPDOOR = "minecraft:cherry_trapdoor"; + public const CHERRY_WALL_SIGN = "minecraft:cherry_wall_sign"; + public const CHERRY_WOOD = "minecraft:cherry_wood"; public const CHEST = "minecraft:chest"; public const CHISELED_BOOKSHELF = "minecraft:chiseled_bookshelf"; public const CHISELED_DEEPSLATE = "minecraft:chiseled_deepslate"; @@ -207,8 +229,10 @@ final class BlockTypeNames{ public const CYAN_WOOL = "minecraft:cyan_wool"; public const DARK_OAK_BUTTON = "minecraft:dark_oak_button"; public const DARK_OAK_DOOR = "minecraft:dark_oak_door"; + public const DARK_OAK_FENCE = "minecraft:dark_oak_fence"; public const DARK_OAK_FENCE_GATE = "minecraft:dark_oak_fence_gate"; public const DARK_OAK_HANGING_SIGN = "minecraft:dark_oak_hanging_sign"; + public const DARK_OAK_LOG = "minecraft:dark_oak_log"; public const DARK_OAK_PRESSURE_PLATE = "minecraft:dark_oak_pressure_plate"; public const DARK_OAK_STAIRS = "minecraft:dark_oak_stairs"; public const DARK_OAK_TRAPDOOR = "minecraft:dark_oak_trapdoor"; @@ -393,7 +417,6 @@ final class BlockTypeNames{ public const EXPOSED_CUT_COPPER_STAIRS = "minecraft:exposed_cut_copper_stairs"; public const EXPOSED_DOUBLE_CUT_COPPER_SLAB = "minecraft:exposed_double_cut_copper_slab"; public const FARMLAND = "minecraft:farmland"; - public const FENCE = "minecraft:fence"; public const FENCE_GATE = "minecraft:fence_gate"; public const FIRE = "minecraft:fire"; public const FLETCHING_TABLE = "minecraft:fletching_table"; @@ -453,8 +476,10 @@ final class BlockTypeNames{ public const JUKEBOX = "minecraft:jukebox"; public const JUNGLE_BUTTON = "minecraft:jungle_button"; public const JUNGLE_DOOR = "minecraft:jungle_door"; + public const JUNGLE_FENCE = "minecraft:jungle_fence"; public const JUNGLE_FENCE_GATE = "minecraft:jungle_fence_gate"; public const JUNGLE_HANGING_SIGN = "minecraft:jungle_hanging_sign"; + public const JUNGLE_LOG = "minecraft:jungle_log"; public const JUNGLE_PRESSURE_PLATE = "minecraft:jungle_pressure_plate"; public const JUNGLE_STAIRS = "minecraft:jungle_stairs"; public const JUNGLE_STANDING_SIGN = "minecraft:jungle_standing_sign"; @@ -494,8 +519,6 @@ final class BlockTypeNames{ public const LIT_REDSTONE_ORE = "minecraft:lit_redstone_ore"; public const LIT_SMOKER = "minecraft:lit_smoker"; public const LODESTONE = "minecraft:lodestone"; - public const LOG = "minecraft:log"; - public const LOG2 = "minecraft:log2"; public const LOOM = "minecraft:loom"; public const MAGENTA_CANDLE = "minecraft:magenta_candle"; public const MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake"; @@ -551,7 +574,9 @@ final class BlockTypeNames{ public const NETHERREACTOR = "minecraft:netherreactor"; public const NORMAL_STONE_STAIRS = "minecraft:normal_stone_stairs"; public const NOTEBLOCK = "minecraft:noteblock"; + public const OAK_FENCE = "minecraft:oak_fence"; public const OAK_HANGING_SIGN = "minecraft:oak_hanging_sign"; + public const OAK_LOG = "minecraft:oak_log"; public const OAK_STAIRS = "minecraft:oak_stairs"; public const OBSERVER = "minecraft:observer"; public const OBSIDIAN = "minecraft:obsidian"; @@ -571,6 +596,7 @@ final class BlockTypeNames{ public const PINK_CANDLE = "minecraft:pink_candle"; public const PINK_CANDLE_CAKE = "minecraft:pink_candle_cake"; public const PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta"; + public const PINK_PETALS = "minecraft:pink_petals"; public const PINK_WOOL = "minecraft:pink_wool"; public const PISTON = "minecraft:piston"; public const PISTON_ARM_COLLISION = "minecraft:piston_arm_collision"; @@ -682,8 +708,10 @@ final class BlockTypeNames{ public const SPORE_BLOSSOM = "minecraft:spore_blossom"; public const SPRUCE_BUTTON = "minecraft:spruce_button"; public const SPRUCE_DOOR = "minecraft:spruce_door"; + public const SPRUCE_FENCE = "minecraft:spruce_fence"; public const SPRUCE_FENCE_GATE = "minecraft:spruce_fence_gate"; public const SPRUCE_HANGING_SIGN = "minecraft:spruce_hanging_sign"; + public const SPRUCE_LOG = "minecraft:spruce_log"; public const SPRUCE_PRESSURE_PLATE = "minecraft:spruce_pressure_plate"; public const SPRUCE_STAIRS = "minecraft:spruce_stairs"; public const SPRUCE_STANDING_SIGN = "minecraft:spruce_standing_sign"; @@ -711,6 +739,8 @@ final class BlockTypeNames{ public const STRIPPED_ACACIA_LOG = "minecraft:stripped_acacia_log"; public const STRIPPED_BAMBOO_BLOCK = "minecraft:stripped_bamboo_block"; public const STRIPPED_BIRCH_LOG = "minecraft:stripped_birch_log"; + public const STRIPPED_CHERRY_LOG = "minecraft:stripped_cherry_log"; + public const STRIPPED_CHERRY_WOOD = "minecraft:stripped_cherry_wood"; public const STRIPPED_CRIMSON_HYPHAE = "minecraft:stripped_crimson_hyphae"; public const STRIPPED_CRIMSON_STEM = "minecraft:stripped_crimson_stem"; public const STRIPPED_DARK_OAK_LOG = "minecraft:stripped_dark_oak_log"; @@ -723,6 +753,7 @@ final class BlockTypeNames{ public const STRIPPED_WARPED_STEM = "minecraft:stripped_warped_stem"; public const STRUCTURE_BLOCK = "minecraft:structure_block"; public const STRUCTURE_VOID = "minecraft:structure_void"; + public const SUSPICIOUS_GRAVEL = "minecraft:suspicious_gravel"; public const SUSPICIOUS_SAND = "minecraft:suspicious_sand"; public const SWEET_BERRY_BUSH = "minecraft:sweet_berry_bush"; public const TALLGRASS = "minecraft:tallgrass"; diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 871e47847..cf201ac78 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -191,6 +191,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->registerCandleSerializers(); $this->registerFlatColorBlockSerializers(); $this->registerCauldronSerializers(); + $this->registerWoodBlockSerializers(); $this->registerSimpleSerializers(); $this->registerSerializers(); } @@ -226,6 +227,10 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map($block, fn(Stair $block) => Helper::encodeStairs($block, Writer::create($id))); } + public function mapLog(Wood $block, string $unstrippedId, string $strippedId) : void{ + $this->map($block, fn(Wood $block) => Helper::encodeLog($block, $unstrippedId, $strippedId)); + } + /** * @phpstan-template TBlockType of Block * @phpstan-param TBlockType $blockState @@ -357,6 +362,22 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WATER_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, $b->getFillLevel(), new Writer(Ids::CAULDRON))); } + private function registerWoodBlockSerializers() : void{ + $this->mapSimple(Blocks::ACACIA_FENCE(), Ids::ACACIA_FENCE); + $this->mapSimple(Blocks::BIRCH_FENCE(), Ids::BIRCH_FENCE); + $this->mapSimple(Blocks::DARK_OAK_FENCE(), Ids::DARK_OAK_FENCE); + $this->mapSimple(Blocks::JUNGLE_FENCE(), Ids::JUNGLE_FENCE); + $this->mapSimple(Blocks::OAK_FENCE(), Ids::OAK_FENCE); + $this->mapSimple(Blocks::SPRUCE_FENCE(), Ids::SPRUCE_FENCE); + + $this->mapLog(Blocks::ACACIA_LOG(), Ids::ACACIA_LOG, Ids::STRIPPED_ACACIA_LOG); + $this->mapLog(Blocks::BIRCH_LOG(), Ids::BIRCH_LOG, Ids::STRIPPED_BIRCH_LOG); + $this->mapLog(Blocks::DARK_OAK_LOG(), Ids::DARK_OAK_LOG, Ids::STRIPPED_DARK_OAK_LOG); + $this->mapLog(Blocks::JUNGLE_LOG(), Ids::JUNGLE_LOG, Ids::STRIPPED_JUNGLE_LOG); + $this->mapLog(Blocks::OAK_LOG(), Ids::OAK_LOG, Ids::STRIPPED_OAK_LOG); + $this->mapLog(Blocks::SPRUCE_LOG(), Ids::SPRUCE_LOG, Ids::STRIPPED_SPRUCE_LOG); + } + private function registerSimpleSerializers() : void{ $this->mapSimple(Blocks::AIR(), Ids::AIR); $this->mapSimple(Blocks::AMETHYST(), Ids::AMETHYST_BLOCK); @@ -615,11 +636,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ private function registerSerializers() : void{ $this->map(Blocks::ACACIA_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::ACACIA_BUTTON))); $this->map(Blocks::ACACIA_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::ACACIA_DOOR))); - $this->map(Blocks::ACACIA_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::ACACIA_FENCE_GATE))); $this->map(Blocks::ACACIA_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_ACACIA)); - $this->map(Blocks::ACACIA_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_ACACIA, Ids::STRIPPED_ACACIA_LOG)); $this->map(Blocks::ACACIA_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_ACACIA)); $this->map(Blocks::ACACIA_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::ACACIA_PRESSURE_PLATE))); @@ -705,11 +723,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::BIRCH_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::BIRCH_BUTTON))); $this->map(Blocks::BIRCH_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::BIRCH_DOOR))); - $this->map(Blocks::BIRCH_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::BIRCH_FENCE_GATE))); $this->map(Blocks::BIRCH_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_BIRCH)); - $this->map(Blocks::BIRCH_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_BIRCH, Ids::STRIPPED_BIRCH_LOG)); $this->map(Blocks::BIRCH_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_BIRCH)); $this->map(Blocks::BIRCH_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::BIRCH_PRESSURE_PLATE))); @@ -892,12 +907,12 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CRIMSON_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::CRIMSON_BUTTON))); $this->map(Blocks::CRIMSON_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::CRIMSON_DOOR))); $this->map(Blocks::CRIMSON_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::CRIMSON_FENCE_GATE))); - $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); + $this->map(Blocks::CRIMSON_HYPHAE(), fn(Wood $block) => Helper::encodeLog($block, Ids::CRIMSON_HYPHAE, Ids::STRIPPED_CRIMSON_HYPHAE)); $this->map(Blocks::CRIMSON_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::CRIMSON_PRESSURE_PLATE))); $this->map(Blocks::CRIMSON_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::CRIMSON_STANDING_SIGN))); $this->mapSlab(Blocks::CRIMSON_SLAB(), Ids::CRIMSON_SLAB, Ids::CRIMSON_DOUBLE_SLAB); $this->mapStairs(Blocks::CRIMSON_STAIRS(), Ids::CRIMSON_STAIRS); - $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); + $this->map(Blocks::CRIMSON_STEM(), fn(Wood $block) => Helper::encodeLog($block, Ids::CRIMSON_STEM, Ids::STRIPPED_CRIMSON_STEM)); $this->map(Blocks::CRIMSON_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::CRIMSON_TRAPDOOR))); $this->map(Blocks::CRIMSON_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::CRIMSON_WALL_SIGN))); $this->map(Blocks::CUT_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_CUT)); @@ -906,11 +921,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE)); $this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON))); $this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR))); - $this->map(Blocks::DARK_OAK_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::DARK_OAK_FENCE_GATE))); $this->map(Blocks::DARK_OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves2($block, StringValues::NEW_LEAF_TYPE_DARK_OAK)); - $this->map(Blocks::DARK_OAK_LOG(), fn(Wood $block) => Helper::encodeLog2($block, StringValues::NEW_LOG_TYPE_DARK_OAK, Ids::STRIPPED_DARK_OAK_LOG)); $this->map(Blocks::DARK_OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_DARK_OAK)); $this->map(Blocks::DARK_OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::DARK_OAK_PRESSURE_PLATE))); @@ -1046,11 +1058,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::ITEM_FRAME(), fn(ItemFrame $block) => Helper::encodeItemFrame($block, Ids::FRAME)); $this->map(Blocks::JUNGLE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::JUNGLE_BUTTON))); $this->map(Blocks::JUNGLE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::JUNGLE_DOOR))); - $this->map(Blocks::JUNGLE_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::JUNGLE_FENCE_GATE))); $this->map(Blocks::JUNGLE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_JUNGLE)); - $this->map(Blocks::JUNGLE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_JUNGLE, Ids::STRIPPED_JUNGLE_LOG)); $this->map(Blocks::JUNGLE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_JUNGLE)); $this->map(Blocks::JUNGLE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::JUNGLE_PRESSURE_PLATE))); @@ -1114,7 +1123,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::MANGROVE_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::MANGROVE_DOOR))); $this->map(Blocks::MANGROVE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::MANGROVE_FENCE_GATE))); $this->map(Blocks::MANGROVE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves($block, new Writer(Ids::MANGROVE_LEAVES))); - $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); + $this->map(Blocks::MANGROVE_LOG(), fn(Wood $block) => Helper::encodeLog($block, Ids::MANGROVE_LOG, Ids::STRIPPED_MANGROVE_LOG)); $this->map(Blocks::MANGROVE_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::MANGROVE_PRESSURE_PLATE))); $this->map(Blocks::MANGROVE_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::MANGROVE_STANDING_SIGN))); $this->mapSlab(Blocks::MANGROVE_SLAB(), Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB); @@ -1169,11 +1178,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::WOODEN_BUTTON))); $this->map(Blocks::OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::WOODEN_DOOR))); - $this->map(Blocks::OAK_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::FENCE_GATE))); $this->map(Blocks::OAK_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_OAK)); - $this->map(Blocks::OAK_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_OAK, Ids::STRIPPED_OAK_LOG)); $this->map(Blocks::OAK_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_OAK)); $this->map(Blocks::OAK_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WOODEN_PRESSURE_PLATE))); @@ -1333,11 +1339,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::SPRUCE_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::SPRUCE_BUTTON))); $this->map(Blocks::SPRUCE_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::SPRUCE_DOOR))); - $this->map(Blocks::SPRUCE_FENCE(), fn() => Writer::create(Ids::FENCE) - ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::SPRUCE_FENCE_GATE))); $this->map(Blocks::SPRUCE_LEAVES(), fn(Leaves $block) => Helper::encodeLeaves1($block, StringValues::OLD_LEAF_TYPE_SPRUCE)); - $this->map(Blocks::SPRUCE_LOG(), fn(Wood $block) => Helper::encodeLog1($block, StringValues::OLD_LOG_TYPE_SPRUCE, Ids::STRIPPED_SPRUCE_LOG)); $this->map(Blocks::SPRUCE_PLANKS(), fn() => Writer::create(Ids::PLANKS) ->writeString(StateNames::WOOD_TYPE, StringValues::WOOD_TYPE_SPRUCE)); $this->map(Blocks::SPRUCE_PRESSURE_PLATE(), fn(WoodenPressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::SPRUCE_PRESSURE_PLATE))); @@ -1447,12 +1450,12 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ $this->map(Blocks::WARPED_BUTTON(), fn(Button $block) => Helper::encodeButton($block, new Writer(Ids::WARPED_BUTTON))); $this->map(Blocks::WARPED_DOOR(), fn(Door $block) => Helper::encodeDoor($block, new Writer(Ids::WARPED_DOOR))); $this->map(Blocks::WARPED_FENCE_GATE(), fn(FenceGate $block) => Helper::encodeFenceGate($block, new Writer(Ids::WARPED_FENCE_GATE))); - $this->map(Blocks::WARPED_HYPHAE(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_HYPHAE, Ids::STRIPPED_WARPED_HYPHAE)); + $this->map(Blocks::WARPED_HYPHAE(), fn(Wood $block) => Helper::encodeLog($block, Ids::WARPED_HYPHAE, Ids::STRIPPED_WARPED_HYPHAE)); $this->map(Blocks::WARPED_PRESSURE_PLATE(), fn(SimplePressurePlate $block) => Helper::encodeSimplePressurePlate($block, new Writer(Ids::WARPED_PRESSURE_PLATE))); $this->map(Blocks::WARPED_SIGN(), fn(FloorSign $block) => Helper::encodeFloorSign($block, new Writer(Ids::WARPED_STANDING_SIGN))); $this->mapSlab(Blocks::WARPED_SLAB(), Ids::WARPED_SLAB, Ids::WARPED_DOUBLE_SLAB); $this->mapStairs(Blocks::WARPED_STAIRS(), Ids::WARPED_STAIRS); - $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeNewLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); + $this->map(Blocks::WARPED_STEM(), fn(Wood $block) => Helper::encodeLog($block, Ids::WARPED_STEM, Ids::STRIPPED_WARPED_STEM)); $this->map(Blocks::WARPED_TRAPDOOR(), fn(Trapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::WARPED_TRAPDOOR))); $this->map(Blocks::WARPED_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WARPED_WALL_SIGN))); $this->map(Blocks::WATER(), fn(Water $block) => Helper::encodeLiquid($block, Ids::WATER, Ids::FLOWING_WATER)); diff --git a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php index f449cae8f..93e840343 100644 --- a/src/data/bedrock/block/convert/BlockStateSerializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateSerializerHelper.php @@ -168,31 +168,14 @@ final class BlockStateSerializerHelper{ ->writeInt(BlockStateNames::LIQUID_DEPTH, $block->getDecay() | ($block->isFalling() ? 0x8 : 0)); } - private static function encodeLog(Wood $block, BlockStateWriter $out) : BlockStateWriter{ + public static function encodeLog(Wood $block, string $unstrippedId, string $strippedId) : BlockStateWriter{ + $out = $block->isStripped() ? + BlockStateWriter::create($strippedId) : + BlockStateWriter::create($unstrippedId); return $out ->writePillarAxis($block->getAxis()); } - public static function encodeLog1(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ - return self::encodeLog($block, $block->isStripped() ? - BlockStateWriter::create($strippedId) : - BlockStateWriter::create(Ids::LOG)->writeString(BlockStateNames::OLD_LOG_TYPE, $unstrippedType)); - } - - public static function encodeLog2(Wood $block, string $unstrippedType, string $strippedId) : BlockStateWriter{ - return self::encodeLog($block, $block->isStripped() ? - BlockStateWriter::create($strippedId) : - BlockStateWriter::create(Ids::LOG2)->writeString(BlockStateNames::NEW_LOG_TYPE, $unstrippedType) - ); - } - - public static function encodeNewLog(Wood $block, string $unstrippedId, string $strippedId) : BlockStateWriter{ - return self::encodeLog($block, $block->isStripped() ? - BlockStateWriter::create($strippedId) : - BlockStateWriter::create($unstrippedId) - ); - } - public static function encodeMushroomBlock(RedMushroomBlock $block, BlockStateWriter $out) : BlockStateWriter{ return $out ->writeInt(BlockStateNames::HUGE_MUSHROOM_BITS, MushroomBlockTypeIdMap::getInstance()->toId($block->getMushroomBlockType())); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index a6c57937e..bcea70b22 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -39,6 +39,7 @@ use pocketmine\block\utils\FroglightType; use pocketmine\block\utils\LeverFacing; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; +use pocketmine\block\Wood; use pocketmine\data\bedrock\block\BlockLegacyMetadata; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateDeserializeException; @@ -72,6 +73,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->registerCandleDeserializers(); $this->registerFlatColorBlockDeserializers(); $this->registerCauldronDeserializers(); + $this->registerWoodBlockDeserializers(); $this->registerSimpleDeserializers(); $this->registerDeserializers(); } @@ -117,6 +119,12 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map($id, fn(Reader $in) : Stair => Helper::decodeStairs($getBlock(), $in)); } + /** @phpstan-param \Closure() : Wood $getBlock */ + public function mapLog(string $unstrippedId, string $strippedId, \Closure $getBlock) : void{ + $this->map($unstrippedId, fn(Reader $in) => Helper::decodeLog($getBlock(), false, $in)); + $this->map($strippedId, fn(Reader $in) => Helper::decodeLog($getBlock(), true, $in)); + } + private function registerCandleDeserializers() : void{ $this->map(Ids::CANDLE, fn(Reader $in) => Helper::decodeCandle(Blocks::CANDLE(), $in)); $dyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in); @@ -214,6 +222,22 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ $this->map(Ids::LAVA_CAULDRON, $deserializer); } + private function registerWoodBlockDeserializers() : void{ + $this->mapSimple(Ids::ACACIA_FENCE, fn() => Blocks::ACACIA_FENCE()); + $this->mapSimple(Ids::BIRCH_FENCE, fn() => Blocks::BIRCH_FENCE()); + $this->mapSimple(Ids::DARK_OAK_FENCE, fn() => Blocks::DARK_OAK_FENCE()); + $this->mapSimple(Ids::JUNGLE_FENCE, fn() => Blocks::JUNGLE_FENCE()); + $this->mapSimple(Ids::OAK_FENCE, fn() => Blocks::OAK_FENCE()); + $this->mapSimple(Ids::SPRUCE_FENCE, fn() => Blocks::SPRUCE_FENCE()); + + $this->mapLog(Ids::ACACIA_LOG, Ids::STRIPPED_ACACIA_LOG, fn() => Blocks::ACACIA_LOG()); + $this->mapLog(Ids::BIRCH_LOG, Ids::STRIPPED_BIRCH_LOG, fn() => Blocks::BIRCH_LOG()); + $this->mapLog(Ids::DARK_OAK_LOG, Ids::STRIPPED_DARK_OAK_LOG, fn() => Blocks::DARK_OAK_LOG()); + $this->mapLog(Ids::JUNGLE_LOG, Ids::STRIPPED_JUNGLE_LOG, fn() => Blocks::JUNGLE_LOG()); + $this->mapLog(Ids::OAK_LOG, Ids::STRIPPED_OAK_LOG, fn() => Blocks::OAK_LOG()); + $this->mapLog(Ids::SPRUCE_LOG, Ids::STRIPPED_SPRUCE_LOG, fn() => Blocks::SPRUCE_LOG()); + } + private function registerSimpleDeserializers() : void{ $this->mapSimple(Ids::AIR, fn() => Blocks::AIR()); $this->mapSimple(Ids::AMETHYST_BLOCK, fn() => Blocks::AMETHYST()); @@ -745,17 +769,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::FARMLAND() ->setWetness($in->readBoundedInt(StateNames::MOISTURIZED_AMOUNT, 0, 7)); }); - $this->map(Ids::FENCE, function(Reader $in) : Block{ - return match($woodName = $in->readString(StateNames::WOOD_TYPE)){ - StringValues::WOOD_TYPE_OAK => Blocks::OAK_FENCE(), - StringValues::WOOD_TYPE_SPRUCE => Blocks::SPRUCE_FENCE(), - StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_FENCE(), - StringValues::WOOD_TYPE_JUNGLE => Blocks::JUNGLE_FENCE(), - StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_FENCE(), - StringValues::WOOD_TYPE_DARK_OAK => Blocks::DARK_OAK_FENCE(), - default => throw $in->badValueException(StateNames::WOOD_TYPE, $woodName), - }; - }); $this->map(Ids::FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::OAK_FENCE_GATE(), $in)); $this->map(Ids::FIRE, function(Reader $in) : Block{ return Blocks::FIRE() @@ -890,18 +903,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ ->setFacing($in->readHorizontalFacing()) ->setLit(true); }); - $this->map(Ids::LOG, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::OLD_LOG_TYPE)){ - StringValues::OLD_LOG_TYPE_BIRCH => Blocks::BIRCH_LOG(), - StringValues::OLD_LOG_TYPE_JUNGLE => Blocks::JUNGLE_LOG(), - StringValues::OLD_LOG_TYPE_OAK => Blocks::OAK_LOG(), - StringValues::OLD_LOG_TYPE_SPRUCE => Blocks::SPRUCE_LOG(), - default => throw $in->badValueException(StateNames::OLD_LOG_TYPE, $type), - }, false, $in)); - $this->map(Ids::LOG2, fn(Reader $in) => Helper::decodeLog(match($type = $in->readString(StateNames::NEW_LOG_TYPE)){ - StringValues::NEW_LOG_TYPE_ACACIA => Blocks::ACACIA_LOG(), - StringValues::NEW_LOG_TYPE_DARK_OAK => Blocks::DARK_OAK_LOG(), - default => throw $in->badValueException(StateNames::NEW_LOG_TYPE, $type), - }, false, $in)); $this->map(Ids::LOOM, function(Reader $in) : Block{ return Blocks::LOOM() ->setFacing($in->readLegacyHorizontalFacing()); @@ -1229,16 +1230,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::STONECUTTER() ->setFacing($in->readHorizontalFacing()); }); - $this->map(Ids::STRIPPED_ACACIA_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::ACACIA_LOG(), true, $in)); - $this->map(Ids::STRIPPED_BIRCH_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::BIRCH_LOG(), true, $in)); $this->map(Ids::STRIPPED_CRIMSON_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_HYPHAE(), true, $in)); $this->map(Ids::STRIPPED_CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), true, $in)); - $this->map(Ids::STRIPPED_DARK_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::DARK_OAK_LOG(), true, $in)); - $this->map(Ids::STRIPPED_JUNGLE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::JUNGLE_LOG(), true, $in)); $this->map(Ids::STRIPPED_MANGROVE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_LOG(), true, $in)); $this->map(Ids::STRIPPED_MANGROVE_WOOD, fn(Reader $in) => Helper::decodeLog(Blocks::MANGROVE_WOOD(), true, $in)); - $this->map(Ids::STRIPPED_OAK_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::OAK_LOG(), true, $in)); - $this->map(Ids::STRIPPED_SPRUCE_LOG, fn(Reader $in) => Helper::decodeLog(Blocks::SPRUCE_LOG(), true, $in)); $this->map(Ids::STRIPPED_WARPED_HYPHAE, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_HYPHAE(), true, $in)); $this->map(Ids::STRIPPED_WARPED_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::WARPED_STEM(), true, $in)); $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 82279e734..c3f0c194c 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -49,11 +49,11 @@ use function time; class BedrockWorldData extends BaseNbtWorldData{ public const CURRENT_STORAGE_VERSION = 10; - public const CURRENT_STORAGE_NETWORK_VERSION = 575; + public const CURRENT_STORAGE_NETWORK_VERSION = 582; public const CURRENT_CLIENT_VERSION_TARGET = [ 1, //major 19, //minor - 70, //patch + 80, //patch 0, //revision 0 //is beta ]; diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 7be3ad1ab..2201a9159 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -31,6 +31,7 @@ use pocketmine\crafting\json\RecipeIngredientData; use pocketmine\crafting\json\ShapedRecipeData; use pocketmine\crafting\json\ShapelessRecipeData; use pocketmine\crafting\json\SmithingTransformRecipeData; +use pocketmine\crafting\json\SmithingTrimRecipeData; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NBT; @@ -62,6 +63,7 @@ use pocketmine\network\mcpe\protocol\types\recipe\RecipeIngredient; use pocketmine\network\mcpe\protocol\types\recipe\ShapedRecipe; use pocketmine\network\mcpe\protocol\types\recipe\ShapelessRecipe; use pocketmine\network\mcpe\protocol\types\recipe\SmithingTransformRecipe; +use pocketmine\network\mcpe\protocol\types\recipe\SmithingTrimRecipe; use pocketmine\network\mcpe\protocol\types\recipe\StringIdMetaItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\TagItemDescriptor; use pocketmine\network\PacketHandlingException; @@ -348,6 +350,7 @@ class ParserPacketHandler extends PacketHandler{ private function smithingRecipeToJson(SmithingTransformRecipe $recipe) : SmithingTransformRecipeData{ return new SmithingTransformRecipeData( + $this->recipeIngredientToJson($recipe->getTemplate()), $this->recipeIngredientToJson($recipe->getInput()), $this->recipeIngredientToJson($recipe->getAddition()), $this->itemStackToJson($recipe->getOutput()), @@ -355,6 +358,15 @@ class ParserPacketHandler extends PacketHandler{ ); } + private function smithingTrimRecipeToJson(SmithingTrimRecipe $recipe) : SmithingTrimRecipeData{ + return new SmithingTrimRecipeData( + $this->recipeIngredientToJson($recipe->getTemplate()), + $this->recipeIngredientToJson($recipe->getInput()), + $this->recipeIngredientToJson($recipe->getAddition()), + $recipe->getBlockName() + ); + } + public function handleCraftingData(CraftingDataPacket $packet) : bool{ echo "updating crafting data\n"; @@ -374,6 +386,7 @@ class ParserPacketHandler extends PacketHandler{ CraftingDataPacket::ENTRY_SHAPELESS_CHEMISTRY => "shapeless_chemistry", CraftingDataPacket::ENTRY_SHAPED_CHEMISTRY => "shaped_chemistry", CraftingDataPacket::ENTRY_SMITHING_TRANSFORM => "smithing", + CraftingDataPacket::ENTRY_SMITHING_TRIM => "smithing_trim", ]; if(!isset($typeMap[$entry->getTypeId()])){ throw new \UnexpectedValueException("Unknown recipe type ID " . $entry->getTypeId()); @@ -390,6 +403,8 @@ class ParserPacketHandler extends PacketHandler{ $recipes[$mappedType][] = $this->furnaceRecipeToJson($entry); }elseif($entry instanceof SmithingTransformRecipe){ $recipes[$mappedType][] = $this->smithingRecipeToJson($entry); + }elseif($entry instanceof SmithingTrimRecipe){ + $recipes[$mappedType][] = $this->smithingTrimRecipeToJson($entry); }else{ throw new AssumptionFailedError("Unknown recipe type " . get_class($entry)); } From 869c836e2d932ec84e34556eb855d36a5427b40d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 17:12:52 +0100 Subject: [PATCH 589/692] BlockStateUpgradeSchemaUtils: ensure that remapped values are generated in a consistent order this uses lexical order, which isn't ideal for numeric values (1, 10, 2, etc), but it's good enough to ensure that the order is stable. --- .../bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 03019aeab..b7576b2ef 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -35,6 +35,7 @@ use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; use function array_map; +use function array_values; use function count; use function get_debug_type; use function gettype; @@ -175,6 +176,7 @@ final class BlockStateUpgradeSchemaUtils{ foreach($remappedValues as $oldNew){ $remappedValuesMap[$oldNew->old->toString()] = $oldNew; } + ksort($remappedValuesMap); foreach(Utils::stringifyKeys($dedupTableMap) as $dedupName => $dedupValuesMap){ if(count($remappedValuesMap) !== count($dedupValuesMap)){ @@ -199,7 +201,7 @@ final class BlockStateUpgradeSchemaUtils{ //no match, add the values to the table $newDedupName = $propertyName . "_" . str_pad(strval($counter++), 2, "0", STR_PAD_LEFT); $dedupTableMap[$newDedupName] = $remappedValuesMap; - $dedupTable[$newDedupName] = $remappedValues; + $dedupTable[$newDedupName] = array_values($remappedValuesMap); $dedupMapping[$blockName][$propertyName] = $newDedupName; } } From ff8301b86c9ddf970ea06cbf223db1d4c528d2a5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 17:23:32 +0100 Subject: [PATCH 590/692] BlockStateData: fixed outdated version ID --- src/data/bedrock/block/BlockStateData.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index cc04bc31c..31f2b98c0 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -41,8 +41,8 @@ final class BlockStateData{ public const CURRENT_VERSION = (1 << 24) | //major (19 << 16) | //minor - (70 << 8) | //patch - (15); //revision + (80 << 8) | //patch + (11); //revision public const TAG_NAME = "name"; public const TAG_STATES = "states"; From e2108557abb8503656111b51cd07fa2f1c3cee27 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 17:26:19 +0100 Subject: [PATCH 591/692] BlockStateUpgrader: make sure the returned state always has an updated version ID PM itself doesn't require this, but it's useful for tools to know whether to upgrade the schema again (e.g. in testing scenarios). --- src/data/bedrock/block/upgrade/BlockStateUpgrader.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php index b7fd5a422..949bd27b1 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -56,8 +56,10 @@ final class BlockStateUpgrader{ public function upgrade(BlockStateData $blockStateData) : BlockStateData{ $version = $blockStateData->getVersion(); + $highestVersion = $version; foreach($this->upgradeSchemas as $schema){ $resultVersion = $schema->getVersionId(); + $highestVersion = max($highestVersion, $resultVersion); if($version > $resultVersion){ //even if this is actually the same version, we have to apply it anyway because mojang are dumb and //didn't always bump the blockstate version when changing it :( @@ -96,6 +98,11 @@ final class BlockStateUpgrader{ } } + if($highestVersion > $version){ + //always update the version number of the blockstate, even if it didn't change - this is needed for + //external tools + $blockStateData = new BlockStateData($blockStateData->getName(), $blockStateData->getStates(), $highestVersion); + } return $blockStateData; } From 75410a541211dc4819f786fcbb4891bf3f7c1394 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 19:31:00 +0100 Subject: [PATCH 592/692] BlockStateUpgradeSchemaUtils: sort data before emitting JSON this makes it easier to see what's changing, as well as making the order stable across multiple regenerations. --- .../upgrade/BlockStateUpgradeSchemaUtils.php | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index b7576b2ef..3b247be37 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -31,6 +31,7 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; +use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; @@ -42,7 +43,9 @@ use function gettype; use function implode; use function is_object; use function json_decode; +use function json_encode; use function ksort; +use function sort; use function str_pad; use function strval; use const JSON_THROW_ON_ERROR; @@ -170,7 +173,10 @@ final class BlockStateUpgradeSchemaUtils{ $dedupTableMap = []; $counter = 0; - foreach(Utils::stringifyKeys($schema->remappedPropertyValues) as $blockName => $remaps){ + $orderedRemappedValues = $schema->remappedPropertyValues; + ksort($orderedRemappedValues); + foreach(Utils::stringifyKeys($orderedRemappedValues) as $blockName => $remaps){ + ksort($remaps); foreach(Utils::stringifyKeys($remaps) as $propertyName => $remappedValues){ $remappedValuesMap = []; foreach($remappedValues as $oldNew){ @@ -215,6 +221,12 @@ final class BlockStateUpgradeSchemaUtils{ ); } } + ksort($modelTable); + ksort($dedupMapping); + foreach(Utils::stringifyKeys($dedupMapping) as $blockName => $properties){ + ksort($properties); + $dedupMapping[$blockName] = $properties; + } $model->remappedPropertyValuesIndex = $modelTable; $model->remappedPropertyValues = $dedupMapping; @@ -226,26 +238,58 @@ final class BlockStateUpgradeSchemaUtils{ $result->maxVersionMinor = $schema->maxVersionMinor; $result->maxVersionPatch = $schema->maxVersionPatch; $result->maxVersionRevision = $schema->maxVersionRevision; + $result->renamedIds = $schema->renamedIds; + ksort($result->renamedIds); + $result->renamedProperties = $schema->renamedProperties; + ksort($result->renamedProperties); + foreach(Utils::stringifyKeys($result->renamedProperties) as $blockName => $properties){ + ksort($properties); + $result->renamedProperties[$blockName] = $properties; + } + $result->removedProperties = $schema->removedProperties; + ksort($result->removedProperties); + foreach(Utils::stringifyKeys($result->removedProperties) as $blockName => $properties){ + sort($properties); //yes, this is intended to sort(), not ksort() + $result->removedProperties[$blockName] = $properties; + } foreach(Utils::stringifyKeys($schema->addedProperties) as $blockName => $properties){ + $addedProperties = []; foreach(Utils::stringifyKeys($properties) as $propertyName => $propertyValue){ - $result->addedProperties[$blockName][$propertyName] = self::tagToJsonModel($propertyValue); + $addedProperties[$propertyName] = self::tagToJsonModel($propertyValue); } + ksort($addedProperties); + $result->addedProperties[$blockName] = $addedProperties; + } + if(isset($result->addedProperties)){ + ksort($result->addedProperties); } self::buildRemappedValuesIndex($schema, $result); foreach(Utils::stringifyKeys($schema->remappedStates) as $oldBlockName => $remaps){ + $keyedRemaps = []; foreach($remaps as $remap){ - $result->remappedStates[$oldBlockName][] = new BlockStateUpgradeSchemaModelBlockRemap( + $modelRemap = new BlockStateUpgradeSchemaModelBlockRemap( array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState), $remap->newName, array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), ); + $key = json_encode($modelRemap); + if(isset($keyedRemaps[$key])){ + continue; + throw new AssumptionFailedError("Duplicate remap: $key"); + } + $keyedRemaps[$key] = $modelRemap; } + ksort($keyedRemaps); + $result->remappedStates[$oldBlockName] = array_values($keyedRemaps); + } + if(isset($result->remappedStates)){ + ksort($result->remappedStates); } return $result; From 04aabaee5e3a445c1e4bd128859e8acc03827c26 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 19:31:08 +0100 Subject: [PATCH 593/692] Fix CS --- src/data/bedrock/block/upgrade/BlockStateUpgrader.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php index 949bd27b1..16c58fb27 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -28,6 +28,7 @@ use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; use function count; use function ksort; +use function max; use const SORT_NUMERIC; final class BlockStateUpgrader{ From a1cd1d7433d158a82cde8c906342a3b31098a293 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 19:35:03 +0100 Subject: [PATCH 594/692] ... --- src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 3b247be37..c8dfb6cd8 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -279,9 +279,9 @@ final class BlockStateUpgradeSchemaUtils{ array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), ); $key = json_encode($modelRemap); + assert(!isset($keyedRemaps[$key])); if(isset($keyedRemaps[$key])){ continue; - throw new AssumptionFailedError("Duplicate remap: $key"); } $keyedRemaps[$key] = $modelRemap; } From 2121152b763f6527a486adc16973c091b5cb20bc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 20:03:53 +0100 Subject: [PATCH 595/692] Fix CS --- src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index c8dfb6cd8..6af100090 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -31,12 +31,12 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\tag\Tag; -use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; use function array_map; use function array_values; +use function assert; use function count; use function get_debug_type; use function gettype; From 263e1e9950beb9dc0ac22e8724e438d502c69dc6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 20:05:51 +0100 Subject: [PATCH 596/692] Fixed bogus test expectations --- .../data/bedrock/block/upgrade/BlockStateUpgraderTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php b/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php index 86ba0f67b..39013d615 100644 --- a/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php +++ b/tests/phpunit/data/bedrock/block/upgrade/BlockStateUpgraderTest.php @@ -107,7 +107,8 @@ class BlockStateUpgraderTest extends TestCase{ $stateData = $getStateData(); $upgradedStateData = $this->upgrade($stateData, $getStateData); - self::assertSame($stateData, $upgradedStateData, "Adding a property that already exists with a different value should not alter the state"); + //the object may not be the same due to + self::assertTrue($stateData->equals($upgradedStateData), "Adding a property that already exists with a different value should not alter the state"); } private function prepareRemovePropertySchema(BlockStateUpgradeSchema $schema) : void{ From a1d44de4874539a367588f3e3ecd5da31778e870 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 20:34:06 +0100 Subject: [PATCH 597/692] Added support for compressing blockstate remaps using copiedState this significantly reduces the size of schemas when state remaps are used (see pmmp/BedrockBlockUpgradeSchema@85b83b360eec4377e40cc9ab6c6f09d99d109527). in addition, this will likely offer a substantial performance and memory saving when walls get flattened, which will eventually happen. --- .../BlockStateUpgradeSchemaBlockRemap.php | 10 +- .../upgrade/BlockStateUpgradeSchemaUtils.php | 5 + .../block/upgrade/BlockStateUpgrader.php | 15 +- ...BlockStateUpgradeSchemaModelBlockRemap.php | 12 +- tools/generate-blockstate-upgrade-schema.php | 134 +++++++++++++++++- 5 files changed, 166 insertions(+), 10 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php index a0659b40a..7c57e1f1f 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaBlockRemap.php @@ -27,14 +27,18 @@ use pocketmine\nbt\tag\Tag; final class BlockStateUpgradeSchemaBlockRemap{ /** - * @param Tag[] $oldState - * @param Tag[] $newState + * @param Tag[] $oldState + * @param Tag[] $newState + * @param string[] $copiedState + * * @phpstan-param array $oldState * @phpstan-param array $newState + * @phpstan-param list $copiedState */ public function __construct( public array $oldState, public string $newName, - public array $newState + public array $newState, + public array $copiedState ){} } diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 6af100090..833b2a05a 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -157,6 +157,7 @@ final class BlockStateUpgradeSchemaUtils{ array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->oldState ?? []), $remap->newName, array_map(fn(BlockStateUpgradeSchemaModelTag $tag) => self::jsonModelToTag($tag), $remap->newState ?? []), + $remap->copiedState ?? [] ); } } @@ -277,7 +278,11 @@ final class BlockStateUpgradeSchemaUtils{ array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->oldState), $remap->newName, array_map(fn(Tag $tag) => self::tagToJsonModel($tag), $remap->newState), + $remap->copiedState ); + if(count($modelRemap->copiedState) === 0){ + unset($modelRemap->copiedState); //avoid polluting the JSON + } $key = json_encode($modelRemap); assert(!isset($keyedRemaps[$key])); if(isset($keyedRemaps[$key])){ diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php index 16c58fb27..ab0424a33 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgrader.php @@ -70,16 +70,23 @@ final class BlockStateUpgrader{ $oldState = $blockStateData->getStates(); if(isset($schema->remappedStates[$oldName])){ foreach($schema->remappedStates[$oldName] as $remap){ - if(count($oldState) !== count($remap->oldState)){ + if(count($remap->oldState) > count($oldState)){ + //match criteria has more requirements than we have state properties continue; //try next state } - foreach(Utils::stringifyKeys($oldState) as $k => $v){ - if(!isset($remap->oldState[$k]) || !$remap->oldState[$k]->equals($v)){ + foreach(Utils::stringifyKeys($remap->oldState) as $k => $v){ + if(!isset($oldState[$k]) || !$oldState[$k]->equals($v)){ continue 2; //try next state } } + $newState = $remap->newState; + foreach($remap->copiedState as $stateName){ + if(isset($oldState[$stateName])){ + $newState[$stateName] = $oldState[$stateName]; + } + } - $blockStateData = new BlockStateData($remap->newName, $remap->newState, $resultVersion); + $blockStateData = new BlockStateData($remap->newName, $newState, $resultVersion); continue 2; //try next schema } } diff --git a/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php index 0991e5469..49b2e0f28 100644 --- a/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php +++ b/src/data/bedrock/block/upgrade/model/BlockStateUpgradeSchemaModelBlockRemap.php @@ -43,15 +43,25 @@ final class BlockStateUpgradeSchemaModelBlockRemap{ */ public ?array $newState; + /** + * @var string[] + * @phpstan-var list + * May not be present in older schemas + */ + public array $copiedState; + /** * @param BlockStateUpgradeSchemaModelTag[] $oldState * @param BlockStateUpgradeSchemaModelTag[] $newState + * @param string[] $copiedState * @phpstan-param array $oldState * @phpstan-param array $newState + * @phpstan-param list $copiedState */ - public function __construct(array $oldState, string $newName, array $newState){ + public function __construct(array $oldState, string $newName, array $newState, array $copiedState){ $this->oldState = count($oldState) === 0 ? null : $oldState; $this->newName = $newName; $this->newState = count($newState) === 0 ? null : $newState; + $this->copiedState = $copiedState; } } diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index 85d42a35b..8bb271ddf 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -33,12 +33,16 @@ use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use function array_key_first; +use function array_merge; +use function array_values; +use function assert; use function count; use function dirname; use function file_put_contents; use function fwrite; use function json_encode; use function ksort; +use function usort; use const JSON_PRETTY_PRINT; use const SORT_STRING; use const STDERR; @@ -177,13 +181,134 @@ function processState(BlockStateData $old, BlockStateData $new, BlockStateUpgrad $result->remappedStates[$oldName][] = new BlockStateUpgradeSchemaBlockRemap( $oldStates, $new->getName(), - $newStates + $newStates, + [] ); \GlobalLogger::get()->warning("warning: multiple properties added and removed for $oldName; added full state remap");; } } } +/** + * Attempts to compress a list of remapped states by looking at which state properties were consistently unchanged. + * This significantly reduces the output size during flattening when the flattened block has many permutations + * (e.g. walls). + * + * @param BlockStateUpgradeSchemaBlockRemap[] $stateRemaps + * @param BlockStateMapping[] $upgradeTable + * + * @return BlockStateUpgradeSchemaBlockRemap[] + */ +function compressRemappedStates(array $upgradeTable, array $stateRemaps) : array{ + $unchangedStatesByNewName = []; + + foreach($upgradeTable as $pair){ + if(count($pair->old->getStates()) === 0 || count($pair->new->getStates()) === 0){ + //all states have changed in some way - compression not possible + $unchangedStatesByNewName[$pair->new->getName()] = []; + continue; + } + + $oldStates = $pair->old->getStates(); + $newStates = $pair->new->getStates(); + if(!isset($unchangedStatesByNewName[$pair->new->getName()])){ + //build list of unchanged states for this new ID + $unchangedStatesByNewName[$pair->new->getName()] = []; + foreach(Utils::stringifyKeys($oldStates) as $propertyName => $propertyValue){ + if(isset($newStates[$propertyName]) && $newStates[$propertyName]->equals($propertyValue)){ + $unchangedStatesByNewName[$pair->new->getName()][] = $propertyName; + } + } + }else{ + //we already have a list of stuff that probably didn't change - verify that this is the case, and remove + //any that changed in later states with the same ID + foreach($unchangedStatesByNewName[$pair->new->getName()] as $k => $propertyName){ + if( + !isset($oldStates[$propertyName]) || + !isset($newStates[$propertyName]) || + !$oldStates[$propertyName]->equals($newStates[$propertyName]) + ){ + //this property disappeared or changed its value in another state with the same ID - we can't + //compress this state + unset($unchangedStatesByNewName[$pair->new->getName()][$k]); + } + } + } + } + foreach(Utils::stringifyKeys($unchangedStatesByNewName) as $newName => $unchangedStates){ + ksort($unchangedStates); + $unchangedStatesByNewName[$newName] = $unchangedStates; + } + + $compressedRemaps = []; + + foreach($stateRemaps as $remap){ + $oldState = $remap->oldState; + $newState = $remap->newState; + + if($oldState === null || $newState === null){ + //no unchanged states - no compression possible + assert(!isset($unchangedStatesByNewName[$remap->newName])); + $compressedRemaps[$remap->newName][] = $remap; + continue; + } + + $cleanedOldState = $oldState; + $cleanedNewState = $newState; + + foreach($unchangedStatesByNewName[$remap->newName] as $propertyName){ + unset($cleanedOldState[$propertyName]); + unset($cleanedNewState[$propertyName]); + } + ksort($cleanedOldState); + ksort($cleanedNewState); + + $duplicate = false; + $compressedRemaps[$remap->newName] ??= []; + foreach($compressedRemaps[$remap->newName] as $k => $compressedRemap){ + assert($compressedRemap->oldState !== null && $compressedRemap->newState !== null); + + if( + count($compressedRemap->oldState) !== count($cleanedOldState) || + count($compressedRemap->newState) !== count($cleanedNewState) + ){ + continue; + } + foreach(Utils::stringifyKeys($cleanedOldState) as $propertyName => $propertyValue){ + if(!isset($compressedRemap->oldState[$propertyName]) || !$compressedRemap->oldState[$propertyName]->equals($propertyValue)){ + //different filter value + continue 2; + } + } + foreach(Utils::stringifyKeys($cleanedNewState) as $propertyName => $propertyValue){ + if(!isset($compressedRemap->newState[$propertyName]) || !$compressedRemap->newState[$propertyName]->equals($propertyValue)){ + //different replacement value + continue 2; + } + } + $duplicate = true; + break; + } + if(!$duplicate){ + $compressedRemaps[$remap->newName][] = new BlockStateUpgradeSchemaBlockRemap( + $cleanedOldState, + $remap->newName, + $cleanedNewState, + $unchangedStatesByNewName[$remap->newName] + ); + } + } + + $list = array_merge(...array_values($compressedRemaps)); + + //more specific filters must come before less specific ones, in case of a remap on a certain value which is + //otherwise unchanged + usort($list, function(BlockStateUpgradeSchemaBlockRemap $a, BlockStateUpgradeSchemaBlockRemap $b) : int{ + return count($b->oldState) <=> count($a->oldState); + }); + return $list; +} + /** * @param BlockStateMapping[][] $upgradeTable * @phpstan-param array> $upgradeTable @@ -197,6 +322,7 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad }else{ $logger = \GlobalLogger::get(); $logger->emergency("Mismatched upgraded versions found: $foundVersion and " . $mapping->new->getVersion()); + $logger->emergency("Mismatched old state: " . $mapping->old->toNbt()); $logger->emergency("Mismatched new state: " . $mapping->new->toNbt()); $logger->emergency("This is probably because the game didn't recognize the input blockstate, so it was returned unchanged."); $logger->emergency("This is usually because the block is locked behind an experimental toggle that isn't enabled on the world you used when generating this upgrade table."); @@ -238,12 +364,16 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad $result->remappedStates[$mapping->old->getName()][] = new BlockStateUpgradeSchemaBlockRemap( $mapping->old->getStates(), $mapping->new->getName(), - $mapping->new->getStates() + $mapping->new->getStates(), + [] ); } } } } + foreach(Utils::stringifyKeys($result->remappedStates) as $oldName => $remap){ + $result->remappedStates[$oldName] = compressRemappedStates($upgradeTable[$oldName], $remap); + } return $result; } From 728e0bc869f93c4d5df1f022db5ff89e8cb9e36d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 28 Apr 2023 20:58:18 +0100 Subject: [PATCH 598/692] tools/generate-blockstate-upgrade-schema: allow multi-ID remaps to be processed as regular states if their ID didn't change this allows remappedStates to only deal with stuff that has a different ID, which reduced the size of the 1.12 -> 1.13 schema quite nicely. --- tools/generate-blockstate-upgrade-schema.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/generate-blockstate-upgrade-schema.php b/tools/generate-blockstate-upgrade-schema.php index 8bb271ddf..847486a66 100644 --- a/tools/generate-blockstate-upgrade-schema.php +++ b/tools/generate-blockstate-upgrade-schema.php @@ -358,6 +358,15 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad processState($mapping->old, $mapping->new, $result, $removedPropertiesCache, $remappedPropertyValuesCache); } }else{ + if(isset($newNameFound[$oldName])){ + //some of the states stayed under the same ID - we can process these as normal states + foreach($blockStateMappings as $k => $mapping){ + if($mapping->new->getName() === $oldName){ + processState($mapping->old, $mapping->new, $result, $removedPropertiesCache, $remappedPropertyValuesCache); + unset($blockStateMappings[$k]); + } + } + } //block mapped to multiple different new IDs; we can't guess these, so we just do a plain old remap foreach($blockStateMappings as $mapping){ if(!$mapping->old->equals($mapping->new)){ From 17fe894229c14349841a17c0fe4c7cf545b00203 Mon Sep 17 00:00:00 2001 From: kenzeve <81429197+kenzeve@users.noreply.github.com> Date: Sun, 30 Apr 2023 05:11:07 -0600 Subject: [PATCH 599/692] TypeConverter: fixed crash on unknown blockitems (#5729) morton2d_encode is 64-bit function when NBT int tag is 32-bit only, resulting in crash --- src/network/mcpe/convert/TypeConverter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index e4abb42a5..3bbf9c840 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -188,7 +188,7 @@ class TypeConverter{ if($nbt === null){ $nbt = new CompoundTag(); } - $nbt->setInt(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeTypeData())); + $nbt->setLong(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeTypeData())); }else{ [$id, $meta, $blockRuntimeId] = $idMeta; } From b3e94ef1dccc7b540057a626122c87f888acda8a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 May 2023 14:38:27 +0100 Subject: [PATCH 600/692] Chunk: update documentation --- src/world/format/Chunk.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index fd0b83a7b..1a48205a5 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -88,10 +88,10 @@ class Chunk{ * Returns the internal ID of the blockstate at the given coordinates. * * @param int $x 0-15 - * @param int $y 0-255 + * @param int $y dependent on the height of the world * @param int $z 0-15 * - * @return int bitmap, (id << 4) | meta + * @return int the blockstate ID of the given block */ public function getBlockStateId(int $x, int $y, int $z) : int{ return $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBlockStateId($x, $y & SubChunk::COORD_MASK, $z); @@ -111,7 +111,7 @@ class Chunk{ * @param int $x 0-15 * @param int $z 0-15 * - * @return int|null 0-255, or null if there are no blocks in the column + * @return int|null the Y coordinate, or null if there are no blocks in the column */ public function getHighestBlockAt(int $x, int $z) : ?int{ for($y = self::MAX_SUBCHUNK_INDEX; $y >= self::MIN_SUBCHUNK_INDEX; --$y){ @@ -148,9 +148,10 @@ class Chunk{ * Returns the biome ID at the specified X/Z chunk block coordinates * * @param int $x 0-15 + * @param int $y dependent on the height of the world * @param int $z 0-15 * - * @return int 0-255 + * @see BiomeIds */ public function getBiomeId(int $x, int $y, int $z) : int{ return $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBiomeArray()->get($x, $y, $z); @@ -160,8 +161,11 @@ class Chunk{ * Sets the biome ID at the specified X/Z chunk block coordinates * * @param int $x 0-15 + * @param int $y dependent on the height of the world * @param int $z 0-15 - * @param int $biomeId 0-255 + * @param int $biomeId A valid biome ID + * + * @see BiomeIds */ public function setBiomeId(int $x, int $y, int $z, int $biomeId) : void{ $this->getSubChunk($y >> SubChunk::COORD_BIT_SIZE)->getBiomeArray()->set($x, $y, $z, $biomeId); @@ -213,7 +217,7 @@ class Chunk{ * Returns the tile at the specified chunk block coordinates, or null if no tile exists. * * @param int $x 0-15 - * @param int $y 0-255 + * @param int $y dependent on the height of the world * @param int $z 0-15 */ public function getTile(int $x, int $y, int $z) : ?Tile{ @@ -323,7 +327,7 @@ class Chunk{ * Hashes the given chunk block coordinates into a single integer. * * @param int $x 0-15 - * @param int $y 0-255 + * @param int $y dependent on the height of the world * @param int $z 0-15 */ public static function blockHash(int $x, int $y, int $z) : int{ From 29694c19af6c823e7e5c1ef826427898dd5abf1f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 May 2023 14:46:20 +0100 Subject: [PATCH 601/692] BlockStateUpgradeSchemaUtils: Use independent suffixes for each property mapping list --- .../upgrade/BlockStateUpgradeSchemaUtils.php | 69 +++++++++++-------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php index 833b2a05a..c104b3668 100644 --- a/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php +++ b/src/data/bedrock/block/upgrade/BlockStateUpgradeSchemaUtils.php @@ -34,6 +34,7 @@ use pocketmine\nbt\tag\Tag; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; +use function array_key_last; use function array_map; use function array_values; use function assert; @@ -170,9 +171,7 @@ final class BlockStateUpgradeSchemaUtils{ return; } $dedupMapping = []; - $dedupTable = []; $dedupTableMap = []; - $counter = 0; $orderedRemappedValues = $schema->remappedPropertyValues; ksort($orderedRemappedValues); @@ -185,52 +184,62 @@ final class BlockStateUpgradeSchemaUtils{ } ksort($remappedValuesMap); - foreach(Utils::stringifyKeys($dedupTableMap) as $dedupName => $dedupValuesMap){ - if(count($remappedValuesMap) !== count($dedupValuesMap)){ - continue; - } - - foreach(Utils::stringifyKeys($remappedValuesMap) as $oldHash => $remappedOldNew){ - if( - !isset($dedupValuesMap[$oldHash]) || - !$remappedOldNew->old->equals($dedupValuesMap[$oldHash]->old) || - !$remappedOldNew->new->equals($dedupValuesMap[$oldHash]->new) - ){ - continue 2; + if(isset($dedupTableMap[$propertyName])){ + foreach($dedupTableMap[$propertyName] as $k => $dedupValuesMap){ + if(count($remappedValuesMap) !== count($dedupValuesMap)){ + continue; } - } - //we found a match - $dedupMapping[$blockName][$propertyName] = $dedupName; - continue 2; + foreach(Utils::stringifyKeys($remappedValuesMap) as $oldHash => $remappedOldNew){ + if( + !isset($dedupValuesMap[$oldHash]) || + !$remappedOldNew->old->equals($dedupValuesMap[$oldHash]->old) || + !$remappedOldNew->new->equals($dedupValuesMap[$oldHash]->new) + ){ + continue 2; + } + } + + //we found a match + $dedupMapping[$blockName][$propertyName] = $k; + continue 2; + } } //no match, add the values to the table - $newDedupName = $propertyName . "_" . str_pad(strval($counter++), 2, "0", STR_PAD_LEFT); - $dedupTableMap[$newDedupName] = $remappedValuesMap; - $dedupTable[$newDedupName] = array_values($remappedValuesMap); - $dedupMapping[$blockName][$propertyName] = $newDedupName; + $dedupTableMap[$propertyName][] = $remappedValuesMap; + $dedupMapping[$blockName][$propertyName] = array_key_last($dedupTableMap[$propertyName]); } } $modelTable = []; - foreach(Utils::stringifyKeys($dedupTable) as $dedupName => $valuePairs){ - foreach($valuePairs as $k => $pair){ - $modelTable[$dedupName][$k] = new BlockStateUpgradeSchemaModelValueRemap( - BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->old), - BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->new), - ); + foreach(Utils::stringifyKeys($dedupTableMap) as $propertyName => $mappingSet){ + foreach($mappingSet as $setId => $valuePairs){ + $newDedupName = $propertyName . "_" . str_pad(strval($setId), 2, "0", STR_PAD_LEFT); + foreach($valuePairs as $pair){ + $modelTable[$newDedupName][] = new BlockStateUpgradeSchemaModelValueRemap( + BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->old), + BlockStateUpgradeSchemaUtils::tagToJsonModel($pair->new), + ); + } } } + $modelDedupMapping = []; + foreach(Utils::stringifyKeys($dedupMapping) as $blockName => $properties){ + foreach(Utils::stringifyKeys($properties) as $propertyName => $dedupTableIndex){ + $modelDedupMapping[$blockName][$propertyName] = $propertyName . "_" . str_pad(strval($dedupTableIndex), 2, "0", STR_PAD_LEFT); + } + } + ksort($modelTable); - ksort($dedupMapping); + ksort($modelDedupMapping); foreach(Utils::stringifyKeys($dedupMapping) as $blockName => $properties){ ksort($properties); $dedupMapping[$blockName] = $properties; } $model->remappedPropertyValuesIndex = $modelTable; - $model->remappedPropertyValues = $dedupMapping; + $model->remappedPropertyValues = $modelDedupMapping; } public static function toJsonModel(BlockStateUpgradeSchema $schema) : BlockStateUpgradeSchemaModel{ From 096daef0d0535586274160840d9b2497df43380b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 May 2023 16:29:07 +0100 Subject: [PATCH 602/692] World: added setDisplayName() this is an obvious use case, and I'm not really sure why it wasn't supported sooner. --- .../world/WorldDisplayNameChangeEvent.php | 48 +++++++++++++++++++ src/world/World.php | 11 +++++ src/world/format/io/WorldData.php | 2 + src/world/format/io/data/BaseNbtWorldData.php | 4 ++ 4 files changed, 65 insertions(+) create mode 100644 src/event/world/WorldDisplayNameChangeEvent.php diff --git a/src/event/world/WorldDisplayNameChangeEvent.php b/src/event/world/WorldDisplayNameChangeEvent.php new file mode 100644 index 000000000..a3067a1c5 --- /dev/null +++ b/src/event/world/WorldDisplayNameChangeEvent.php @@ -0,0 +1,48 @@ +oldName; + } + + public function getNewName() : string{ + return $this->newName; + } +} diff --git a/src/world/World.php b/src/world/World.php index 52766612f..f499ccb22 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -51,6 +51,7 @@ use pocketmine\event\world\ChunkLoadEvent; use pocketmine\event\world\ChunkPopulateEvent; use pocketmine\event\world\ChunkUnloadEvent; use pocketmine\event\world\SpawnChangeEvent; +use pocketmine\event\world\WorldDisplayNameChangeEvent; use pocketmine\event\world\WorldParticleEvent; use pocketmine\event\world\WorldSaveEvent; use pocketmine\event\world\WorldSoundEvent; @@ -2971,6 +2972,16 @@ class World implements ChunkManager{ return $this->displayName; } + /** + * Sets the World display name. + */ + public function setDisplayName(string $name) : void{ + (new WorldDisplayNameChangeEvent($this, $this->displayName, $name))->call(); + + $this->displayName = $name; + $this->provider->getWorldData()->setName($name); + } + /** * Returns the World folder name. This will not change at runtime and will be unique to a world per runtime. */ diff --git a/src/world/format/io/WorldData.php b/src/world/format/io/WorldData.php index ba60c1ab8..18ac9b1be 100644 --- a/src/world/format/io/WorldData.php +++ b/src/world/format/io/WorldData.php @@ -34,6 +34,8 @@ interface WorldData{ public function getName() : string; + public function setName(string $value) : void; + /** * Returns the generator name */ diff --git a/src/world/format/io/data/BaseNbtWorldData.php b/src/world/format/io/data/BaseNbtWorldData.php index ecd9b483c..cb3f3eb4b 100644 --- a/src/world/format/io/data/BaseNbtWorldData.php +++ b/src/world/format/io/data/BaseNbtWorldData.php @@ -116,6 +116,10 @@ abstract class BaseNbtWorldData implements WorldData{ return $this->compoundTag->getString(self::TAG_LEVEL_NAME); } + public function setName(string $value) : void{ + $this->compoundTag->setString(self::TAG_LEVEL_NAME, $value); + } + public function getGenerator() : string{ return $this->compoundTag->getString(self::TAG_GENERATOR_NAME, "DEFAULT"); } From d80f65ae7cdaaa57136e8711745d2ea7029d8189 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 May 2023 17:53:08 +0100 Subject: [PATCH 603/692] BedrockWorldData: do not load worlds with a newer NetworkVersion than we support often, protocol updates are done without consideration for the current world format version. We don't want to require the world support to be updated at the same time, since this might delay updates. --- src/world/format/io/data/BedrockWorldData.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index c3f0c194c..48d02cbec 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -156,6 +156,12 @@ class BedrockWorldData extends BaseNbtWorldData{ if($version > self::CURRENT_STORAGE_VERSION){ throw new UnsupportedWorldFormatException("LevelDB world format version $version is currently unsupported"); } + //StorageVersion is rarely updated - instead, the game relies on the NetworkVersion tag, which is synced with + //the network protocol version for that version. + $protocolVersion = $worldData->getInt(self::TAG_NETWORK_VERSION, Limits::INT32_MAX); + if($protocolVersion > self::CURRENT_STORAGE_NETWORK_VERSION){ + throw new UnsupportedWorldFormatException("LevelDB world protocol version $protocolVersion is currently unsupported"); + } return $worldData; } From d0b923484109c1598d3c0af298f5868e8de0ed79 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 May 2023 22:29:31 +0100 Subject: [PATCH 604/692] SkyLightUpdate: deal with effective light during initial node discovery this allows the propagation stage to ignore effective light, which allows for further optimisations. --- src/world/light/LightUpdate.php | 11 ++--- src/world/light/SkyLightUpdate.php | 75 +++++++++++++++++------------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index d40e68e05..d4b0213b2 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -106,9 +106,6 @@ abstract class LightUpdate{ $context->removalQueue->enqueue([$x, $y, $z, $oldLevel]); } } - }elseif($this->getEffectiveLight($x, $y, $z) > 0){ //outside the chunk (e.g. virtual sky light from y=256) - $context->spreadVisited[$blockHash] = true; - $context->spreadQueue->enqueue([$x, $y, $z]); } } return $context; @@ -129,9 +126,6 @@ abstract class LightUpdate{ if($this->subChunkExplorer->moveTo($cx, $cy, $cz) !== SubChunkExplorerStatus::INVALID){ $this->computeRemoveLight($cx, $cy, $cz, $oldAdjacentLight, $context); - }elseif($this->getEffectiveLight($cx, $cy, $cz) > 0 && !isset($context->spreadVisited[$index = World::blockHash($cx, $cy, $cz)])){ - $context->spreadVisited[$index] = true; - $context->spreadQueue->enqueue([$cx, $cy, $cz]); } } } @@ -142,7 +136,10 @@ abstract class LightUpdate{ unset($context->spreadVisited[World::blockHash($x, $y, $z)]); - $newAdjacentLight = $this->getEffectiveLight($x, $y, $z); + if($this->subChunkExplorer->moveTo($x, $y, $z) === SubChunkExplorerStatus::INVALID){ + continue; + } + $newAdjacentLight = $this->getCurrentLightArray()->get($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); if($newAdjacentLight <= 0){ continue; } diff --git a/src/world/light/SkyLightUpdate.php b/src/world/light/SkyLightUpdate.php index 501563482..783ca11ab 100644 --- a/src/world/light/SkyLightUpdate.php +++ b/src/world/light/SkyLightUpdate.php @@ -84,16 +84,17 @@ class SkyLightUpdate extends LightUpdate{ $newHeightMap = $oldHeightMap; } - if($newHeightMap > $oldHeightMap){ //Heightmap increase, block placed, remove sky light - for($i = $y; $i >= $oldHeightMap; --$i){ + if($newHeightMap >= $oldHeightMap){ + for($i = $y - 1; $i >= $oldHeightMap; --$i){ $this->setAndUpdateLight($x, $i, $z, 0); //Remove all light beneath, adjacent recalculation will handle the rest. } - }elseif($newHeightMap < $oldHeightMap){ //Heightmap decrease, block changed or removed, add sky light + + //recalculate light for the placed block from its surroundings - this avoids having to check effective light during propagation + $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - ($this->lightFilters[$source] ?? self::BASE_LIGHT_FILTER))); + }else{ //Heightmap decrease, block changed or removed, add sky light for($i = $y; $i >= $newHeightMap; --$i){ $this->setAndUpdateLight($x, $i, $z, 15); } - }else{ //No heightmap change, block changed "underground" - $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - ($this->lightFilters[$source] ?? self::BASE_LIGHT_FILTER))); } } @@ -124,35 +125,45 @@ class SkyLightUpdate extends LightUpdate{ for($x = 0; $x < Chunk::EDGE_LENGTH; ++$x){ for($z = 0; $z < Chunk::EDGE_LENGTH; ++$z){ $currentHeight = $chunk->getHeightMap($x, $z); - $maxAdjacentHeight = World::Y_MIN; - if($x !== 0){ - $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x - 1, $z)); - } - if($x !== 15){ - $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x + 1, $z)); - } - if($z !== 0){ - $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x, $z - 1)); - } - if($z !== 15){ - $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x, $z + 1)); - } - /* - * We skip the top two blocks between current height and max adjacent (if there's a difference) because: - * - the block next to the highest adjacent will do nothing during propagation (it's surrounded by 15s) - * - the block below that block will do the same as the node in the highest adjacent - * NOTE: If block opacity becomes direction-aware in the future, the second point will become invalid. - */ - $nodeColumnEnd = max($currentHeight, $maxAdjacentHeight - 2); - - for($y = $currentHeight; $y <= $nodeColumnEnd; $y++){ - $this->setAndUpdateLight($x + $baseX, $y, $z + $baseZ, 15); - $lightSources++; - } - for($y = $nodeColumnEnd + 1, $yMax = $lowestClearSubChunk * SubChunk::EDGE_LENGTH; $y < $yMax; $y++){ + if($currentHeight === World::Y_MAX){ + //this column has a light-filtering block in the top cell - make sure it's lit from above the world + //light from above the world bounds will not be checked during propagation + $y = $currentHeight - 1; if($this->subChunkExplorer->moveTo($x + $baseX, $y, $z + $baseZ) !== SubChunkExplorerStatus::INVALID){ - $this->getCurrentLightArray()->set($x, $y & SubChunk::COORD_MASK, $z, 15); + $block = $this->subChunkExplorer->currentSubChunk->getBlockStateId($x, $y & SubChunk::COORD_MASK, $z); + $this->setAndUpdateLight($x + $baseX, $y, $z + $baseZ, max(0, 15 - ($this->lightFilters[$block] ?? self::BASE_LIGHT_FILTER))); + } + }else{ + $maxAdjacentHeight = World::Y_MIN; + if($x !== 0){ + $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x - 1, $z)); + } + if($x !== 15){ + $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x + 1, $z)); + } + if($z !== 0){ + $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x, $z - 1)); + } + if($z !== 15){ + $maxAdjacentHeight = max($maxAdjacentHeight, $chunk->getHeightMap($x, $z + 1)); + } + + /* + * We skip the top two blocks between current height and max adjacent (if there's a difference) because: + * - the block next to the highest adjacent will do nothing during propagation (it's surrounded by 15s) + * - the block below that block will do the same as the node in the highest adjacent + * NOTE: If block opacity becomes direction-aware in the future, the second point will become invalid. + */ + $nodeColumnEnd = max($currentHeight, $maxAdjacentHeight - 2); + for($y = $currentHeight; $y <= $nodeColumnEnd; $y++){ + $this->setAndUpdateLight($x + $baseX, $y, $z + $baseZ, 15); + $lightSources++; + } + for($y = $nodeColumnEnd + 1, $yMax = $lowestClearSubChunk * SubChunk::EDGE_LENGTH; $y < $yMax; $y++){ + if($this->subChunkExplorer->moveTo($x + $baseX, $y, $z + $baseZ) !== SubChunkExplorerStatus::INVALID){ + $this->getCurrentLightArray()->set($x, $y & SubChunk::COORD_MASK, $z, 15); + } } } } From 3366e1084b74b181cc36676912561f7517c4b386 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 14:05:55 +0100 Subject: [PATCH 605/692] LightUpdate: squeeze 10-15% more performance out of propagation we can use SubChunkExplorerStatus to decide whether or not to update the local light array reference. We also dereference some properties into local variables, because dereferencing properties is slow. Indirect property dereferences add an extra performance penalty for every layer. --- src/world/light/LightUpdate.php | 46 +++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index d4b0213b2..ffbd9b6b4 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -28,6 +28,7 @@ use pocketmine\world\format\SubChunk; use pocketmine\world\utils\SubChunkExplorer; use pocketmine\world\utils\SubChunkExplorerStatus; use pocketmine\world\World; +use function assert; use function max; //TODO: make light updates asynchronous @@ -115,6 +116,9 @@ abstract class LightUpdate{ $context = $this->prepareNodes(); $touched = 0; + $lightArray = null; + $subChunkExplorer = $this->subChunkExplorer; + $subChunkExplorer->invalidate(); while(!$context->removalQueue->isEmpty()){ $touched++; [$x, $y, $z, $oldAdjacentLight] = $context->removalQueue->dequeue(); @@ -124,22 +128,37 @@ abstract class LightUpdate{ $cy = $y + $oy; $cz = $z + $oz; - if($this->subChunkExplorer->moveTo($cx, $cy, $cz) !== SubChunkExplorerStatus::INVALID){ - $this->computeRemoveLight($cx, $cy, $cz, $oldAdjacentLight, $context); + $moveStatus = $subChunkExplorer->moveTo($cx, $cy, $cz); + if($moveStatus === SubChunkExplorerStatus::INVALID){ + continue; } + if($moveStatus === SubChunkExplorerStatus::MOVED){ + $lightArray = $this->getCurrentLightArray(); + } + assert($lightArray !== null); + $this->computeRemoveLight($cx, $cy, $cz, $oldAdjacentLight, $context, $lightArray); } } + $subChunk = null; + $subChunkExplorer->invalidate(); while(!$context->spreadQueue->isEmpty()){ $touched++; [$x, $y, $z] = $context->spreadQueue->dequeue(); unset($context->spreadVisited[World::blockHash($x, $y, $z)]); - if($this->subChunkExplorer->moveTo($x, $y, $z) === SubChunkExplorerStatus::INVALID){ + $moveStatus = $subChunkExplorer->moveTo($x, $y, $z); + if($moveStatus === SubChunkExplorerStatus::INVALID){ continue; } - $newAdjacentLight = $this->getCurrentLightArray()->get($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); + if($moveStatus === SubChunkExplorerStatus::MOVED){ + $subChunk = $subChunkExplorer->currentSubChunk; + $lightArray = $this->getCurrentLightArray(); + } + assert($lightArray !== null); + + $newAdjacentLight = $lightArray->get($x & SubChunk::COORD_MASK, $y & SubChunk::COORD_MASK, $z & SubChunk::COORD_MASK); if($newAdjacentLight <= 0){ continue; } @@ -149,17 +168,23 @@ abstract class LightUpdate{ $cy = $y + $oy; $cz = $z + $oz; - if($this->subChunkExplorer->moveTo($cx, $cy, $cz) !== SubChunkExplorerStatus::INVALID){ - $this->computeSpreadLight($cx, $cy, $cz, $newAdjacentLight, $context); + $moveStatus = $subChunkExplorer->moveTo($cx, $cy, $cz); + if($moveStatus === SubChunkExplorerStatus::INVALID){ + continue; } + if($moveStatus === SubChunkExplorerStatus::MOVED){ + $subChunk = $subChunkExplorer->currentSubChunk; + $lightArray = $this->getCurrentLightArray(); + } + assert($lightArray !== null); + $this->computeSpreadLight($cx, $cy, $cz, $newAdjacentLight, $context, $lightArray, $subChunk); } } return $touched; } - protected function computeRemoveLight(int $x, int $y, int $z, int $oldAdjacentLevel, LightPropagationContext $context) : void{ - $lightArray = $this->getCurrentLightArray(); + protected function computeRemoveLight(int $x, int $y, int $z, int $oldAdjacentLevel, LightPropagationContext $context, LightArray $lightArray) : void{ $lx = $x & SubChunk::COORD_MASK; $ly = $y & SubChunk::COORD_MASK; $lz = $z & SubChunk::COORD_MASK; @@ -182,13 +207,12 @@ abstract class LightUpdate{ } } - protected function computeSpreadLight(int $x, int $y, int $z, int $newAdjacentLevel, LightPropagationContext $context) : void{ - $lightArray = $this->getCurrentLightArray(); + protected function computeSpreadLight(int $x, int $y, int $z, int $newAdjacentLevel, LightPropagationContext $context, LightArray $lightArray, SubChunk $subChunk) : void{ $lx = $x & SubChunk::COORD_MASK; $ly = $y & SubChunk::COORD_MASK; $lz = $z & SubChunk::COORD_MASK; $current = $lightArray->get($lx, $ly, $lz); - $potentialLight = $newAdjacentLevel - ($this->lightFilters[$this->subChunkExplorer->currentSubChunk->getBlockStateId($lx, $ly, $lz)] ?? self::BASE_LIGHT_FILTER); + $potentialLight = $newAdjacentLevel - ($this->lightFilters[$subChunk->getBlockStateId($lx, $ly, $lz)] ?? self::BASE_LIGHT_FILTER); if($current < $potentialLight){ $lightArray->set($lx, $ly, $lz, $potentialLight); From d0d263191db11c2474de88ccb92a205aeb669ea1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 14:21:33 +0100 Subject: [PATCH 606/692] Fix build --- src/world/light/LightUpdate.php | 2 +- tests/phpstan/configs/actual-problems.neon | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index ffbd9b6b4..1a82bdcef 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -176,7 +176,7 @@ abstract class LightUpdate{ $subChunk = $subChunkExplorer->currentSubChunk; $lightArray = $this->getCurrentLightArray(); } - assert($lightArray !== null); + assert($subChunk !== null); $this->computeSpreadLight($cx, $cy, $cz, $newAdjacentLight, $context, $lightArray, $subChunk); } } diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index 99d24909c..acbfaef03 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -1160,11 +1160,6 @@ parameters: count: 1 path: ../../../src/world/light/LightPopulationTask.php - - - message: "#^Cannot call method getBlockStateId\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" - count: 1 - path: ../../../src/world/light/LightUpdate.php - - message: "#^Cannot call method getBlockSkyLightArray\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" count: 1 @@ -1172,7 +1167,7 @@ parameters: - message: "#^Cannot call method getBlockStateId\\(\\) on pocketmine\\\\world\\\\format\\\\SubChunk\\|null\\.$#" - count: 1 + count: 2 path: ../../../src/world/light/SkyLightUpdate.php - From f29e2f7110e5490dfb6b0d1639669b100079e787 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 15:41:11 +0100 Subject: [PATCH 607/692] WorldProviders now accept Loggers --- src/world/WorldManager.php | 10 ++++++---- src/world/format/io/BaseWorldProvider.php | 3 ++- src/world/format/io/FormatConverter.php | 5 ++--- .../format/io/ReadOnlyWorldProviderManagerEntry.php | 4 ++-- src/world/format/io/WorldProviderManager.php | 8 ++++---- src/world/format/io/WorldProviderManagerEntry.php | 2 +- .../format/io/WritableWorldProviderManagerEntry.php | 6 +++--- src/world/format/io/leveldb/LevelDB.php | 4 ++-- tools/convert-world.php | 2 +- 9 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/world/WorldManager.php b/src/world/WorldManager.php index 1124d513d..513cb527f 100644 --- a/src/world/WorldManager.php +++ b/src/world/WorldManager.php @@ -197,7 +197,7 @@ class WorldManager{ $providerClass = array_shift($providers); try{ - $provider = $providerClass->fromPath($path); + $provider = $providerClass->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name")); }catch(CorruptedWorldException $e){ $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError( $name, @@ -239,8 +239,10 @@ class WorldManager{ } $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_start($name))); - $converter = new FormatConverter($provider, $this->providerManager->getDefault(), Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger()); - $provider = $converter->execute(); + $providerClass = $this->providerManager->getDefault(); + $converter = new FormatConverter($provider, $providerClass, Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger()); + $converter->execute(); + $provider = $providerClass->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name")); $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_finish($name, $converter->getBackupPath()))); } @@ -270,7 +272,7 @@ class WorldManager{ $path = $this->getWorldPath($name); $providerEntry->generate($path, $name, $options); - $world = new World($this->server, $name, $providerEntry->fromPath($path), $this->server->getAsyncPool()); + $world = new World($this->server, $name, $providerEntry->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name")), $this->server->getAsyncPool()); $this->worlds[$world->getId()] = $world; $world->setAutoSave($this->autoSave); diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index a1ddb3c8f..7c881ef84 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -41,7 +41,8 @@ abstract class BaseWorldProvider implements WorldProvider{ protected BlockStateSerializer $blockStateSerializer; public function __construct( - protected string $path + protected string $path, + protected \Logger $logger ){ if(!file_exists($path)){ throw new WorldException("World does not exist"); diff --git a/src/world/format/io/FormatConverter.php b/src/world/format/io/FormatConverter.php index 5f93f3a7b..0a12432da 100644 --- a/src/world/format/io/FormatConverter.php +++ b/src/world/format/io/FormatConverter.php @@ -67,7 +67,7 @@ class FormatConverter{ return $this->backupPath; } - public function execute() : WritableWorldProvider{ + public function execute() : void{ $new = $this->generateNew(); $this->populateLevelData($new->getWorldData()); @@ -91,7 +91,6 @@ class FormatConverter{ } $this->logger->info("Conversion completed"); - return $this->newProvider->fromPath($path); } private function generateNew() : WritableWorldProvider{ @@ -113,7 +112,7 @@ class FormatConverter{ ->setDifficulty($data->getDifficulty()) ); - return $this->newProvider->fromPath($convertedOutput); + return $this->newProvider->fromPath($convertedOutput, $this->logger); } private function populateLevelData(WorldData $data) : void{ diff --git a/src/world/format/io/ReadOnlyWorldProviderManagerEntry.php b/src/world/format/io/ReadOnlyWorldProviderManagerEntry.php index 2bbc11bf3..b9348179f 100644 --- a/src/world/format/io/ReadOnlyWorldProviderManagerEntry.php +++ b/src/world/format/io/ReadOnlyWorldProviderManagerEntry.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io; /** - * @phpstan-type FromPath \Closure(string $path) : WorldProvider + * @phpstan-type FromPath \Closure(string $path, \Logger $logger) : WorldProvider */ class ReadOnlyWorldProviderManagerEntry extends WorldProviderManagerEntry{ @@ -36,5 +36,5 @@ class ReadOnlyWorldProviderManagerEntry extends WorldProviderManagerEntry{ parent::__construct($isValid); } - public function fromPath(string $path) : WorldProvider{ return ($this->fromPath)($path); } + public function fromPath(string $path, \Logger $logger) : WorldProvider{ return ($this->fromPath)($path, $logger); } } diff --git a/src/world/format/io/WorldProviderManager.php b/src/world/format/io/WorldProviderManager.php index 45229e213..8a30bcb57 100644 --- a/src/world/format/io/WorldProviderManager.php +++ b/src/world/format/io/WorldProviderManager.php @@ -41,13 +41,13 @@ final class WorldProviderManager{ private WritableWorldProviderManagerEntry $default; public function __construct(){ - $leveldb = new WritableWorldProviderManagerEntry(\Closure::fromCallable([LevelDB::class, 'isValid']), fn(string $path) => new LevelDB($path), \Closure::fromCallable([LevelDB::class, 'generate'])); + $leveldb = new WritableWorldProviderManagerEntry(\Closure::fromCallable([LevelDB::class, 'isValid']), fn(string $path, \Logger $logger) => new LevelDB($path, $logger), \Closure::fromCallable([LevelDB::class, 'generate'])); $this->default = $leveldb; $this->addProvider($leveldb, "leveldb"); - $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([Anvil::class, 'isValid']), fn(string $path) => new Anvil($path)), "anvil"); - $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([McRegion::class, 'isValid']), fn(string $path) => new McRegion($path)), "mcregion"); - $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([PMAnvil::class, 'isValid']), fn(string $path) => new PMAnvil($path)), "pmanvil"); + $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([Anvil::class, 'isValid']), fn(string $path, \Logger $logger) => new Anvil($path, $logger)), "anvil"); + $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([McRegion::class, 'isValid']), fn(string $path, \Logger $logger) => new McRegion($path, $logger)), "mcregion"); + $this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([PMAnvil::class, 'isValid']), fn(string $path, \Logger $logger) => new PMAnvil($path, $logger)), "pmanvil"); } /** diff --git a/src/world/format/io/WorldProviderManagerEntry.php b/src/world/format/io/WorldProviderManagerEntry.php index 96abcd1ea..c3439fd33 100644 --- a/src/world/format/io/WorldProviderManagerEntry.php +++ b/src/world/format/io/WorldProviderManagerEntry.php @@ -46,5 +46,5 @@ abstract class WorldProviderManagerEntry{ * @throws CorruptedWorldException * @throws UnsupportedWorldFormatException */ - abstract public function fromPath(string $path) : WorldProvider; + abstract public function fromPath(string $path, \Logger $logger) : WorldProvider; } diff --git a/src/world/format/io/WritableWorldProviderManagerEntry.php b/src/world/format/io/WritableWorldProviderManagerEntry.php index 2c5b501ed..873b02831 100644 --- a/src/world/format/io/WritableWorldProviderManagerEntry.php +++ b/src/world/format/io/WritableWorldProviderManagerEntry.php @@ -26,7 +26,7 @@ namespace pocketmine\world\format\io; use pocketmine\world\WorldCreationOptions; /** - * @phpstan-type FromPath \Closure(string $path) : WritableWorldProvider + * @phpstan-type FromPath \Closure(string $path, \Logger $logger) : WritableWorldProvider * @phpstan-type Generate \Closure(string $path, string $name, WorldCreationOptions $options) : void */ final class WritableWorldProviderManagerEntry extends WorldProviderManagerEntry{ @@ -43,8 +43,8 @@ final class WritableWorldProviderManagerEntry extends WorldProviderManagerEntry{ parent::__construct($isValid); } - public function fromPath(string $path) : WritableWorldProvider{ - return ($this->fromPath)($path); + public function fromPath(string $path, \Logger $logger) : WritableWorldProvider{ + return ($this->fromPath)($path, $logger); } /** diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index fa38bf4b8..e6ba569cc 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -102,9 +102,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ ]); } - public function __construct(string $path){ + public function __construct(string $path, \Logger $logger){ self::checkForLevelDBExtension(); - parent::__construct($path); + parent::__construct($path, $logger); try{ $this->db = self::createDB($path); diff --git a/tools/convert-world.php b/tools/convert-world.php index b079a7542..75483c6af 100644 --- a/tools/convert-world.php +++ b/tools/convert-world.php @@ -74,7 +74,7 @@ if(count($oldProviderClasses) > 1){ exit(1); } $oldProviderClass = array_shift($oldProviderClasses); -$oldProvider = $oldProviderClass->fromPath($inputPath); +$oldProvider = $oldProviderClass->fromPath($inputPath, new \PrefixedLogger(\GlobalLogger::get(), "Old World Provider")); $converter = new FormatConverter($oldProvider, $writableFormats[$args["format"]], $backupPath, GlobalLogger::get()); $converter->execute(); From 5fcf5e0c4077daf58670175e2ea4c584c9e8bf02 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 16:46:45 +0100 Subject: [PATCH 608/692] LevelDB: log more stuff, stop bailing on recoverable errors --- .../block/upgrade/BlockDataUpgrader.php | 21 ++-- .../block/upgrade/BlockIdMetaUpgrader.php | 17 ++- src/world/format/io/leveldb/LevelDB.php | 114 +++++++++++------- 3 files changed, 98 insertions(+), 54 deletions(-) diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index ad73cc98a..4b6c6abc4 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; -use pocketmine\data\bedrock\block\BlockTypeNames; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\nbt\tag\CompoundTag; final class BlockDataUpgrader{ @@ -34,25 +34,30 @@ final class BlockDataUpgrader{ private BlockStateUpgrader $blockStateUpgrader ){} - public function upgradeIntIdMeta(int $id, int $meta) : ?BlockStateData{ + /** + * @throws BlockStateDeserializeException + */ + public function upgradeIntIdMeta(int $id, int $meta) : BlockStateData{ return $this->blockIdMetaUpgrader->fromIntIdMeta($id, $meta); } - public function upgradeStringIdMeta(string $id, int $meta) : ?BlockStateData{ + /** + * @throws BlockStateDeserializeException + */ + public function upgradeStringIdMeta(string $id, int $meta) : BlockStateData{ return $this->blockIdMetaUpgrader->fromStringIdMeta($id, $meta); } - public function upgradeBlockStateNbt(CompoundTag $tag) : ?BlockStateData{ + /** + * @throws BlockStateDeserializeException + */ + public function upgradeBlockStateNbt(CompoundTag $tag) : BlockStateData{ if($tag->getTag("name") !== null && $tag->getTag("val") !== null){ //Legacy (pre-1.13) blockstate - upgrade it to a version we understand $id = $tag->getString("name"); $data = $tag->getShort("val"); $blockStateData = $this->upgradeStringIdMeta($id, $data); - if($blockStateData === null){ - //unknown block, invalid ID - $blockStateData = BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); - } }else{ //Modern (post-1.13) blockstate $blockStateData = BlockStateData::fromNbt($tag); diff --git a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php index 972362b86..1c339bd46 100644 --- a/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockIdMetaUpgrader.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\block\upgrade; use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\utils\BinaryDataException; use pocketmine\utils\BinaryStream; @@ -41,14 +42,22 @@ final class BlockIdMetaUpgrader{ private LegacyBlockIdToStringIdMap $legacyNumericIdMap ){} - public function fromStringIdMeta(string $id, int $meta) : ?BlockStateData{ - return $this->mappingTable[$id][$meta] ?? $this->mappingTable[$id][0] ?? null; + /** + * @throws BlockStateDeserializeException + */ + public function fromStringIdMeta(string $id, int $meta) : BlockStateData{ + return $this->mappingTable[$id][$meta] ?? + $this->mappingTable[$id][0] ?? + throw new BlockStateDeserializeException("Unknown legacy block string ID $id"); } - public function fromIntIdMeta(int $id, int $meta) : ?BlockStateData{ + /** + * @throws BlockStateDeserializeException + */ + public function fromIntIdMeta(int $id, int $meta) : BlockStateData{ $stringId = $this->legacyNumericIdMap->legacyToString($id); if($stringId === null){ - return null; + throw new BlockStateDeserializeException("Unknown legacy block numeric ID $id"); } return $this->fromStringIdMeta($stringId, $meta); } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index e6ba569cc..a94a710bb 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -29,7 +29,6 @@ use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\nbt\LittleEndianNbtSerializer; use pocketmine\nbt\NbtDataException; -use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\TreeRoot; use pocketmine\utils\Binary; @@ -144,7 +143,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** * @throws CorruptedChunkException */ - protected function deserializeBlockPalette(BinaryStream $stream) : PalettedBlockArray{ + protected function deserializeBlockPalette(BinaryStream $stream, \Logger $logger) : PalettedBlockArray{ $bitsPerBlock = $stream->getByte() >> 1; try{ @@ -160,25 +159,28 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ for($i = 0; $i < $paletteSize; ++$i){ try{ $offset = $stream->getOffset(); - $blockStateNbt = $nbt->read($stream->getBuffer(), $offset)->mustGetCompoundTag(); - $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); - if($blockStateData === null){ - //upgrading blockstates should always succeed, regardless of whether they've been implemented or not - throw new BlockStateDeserializeException("Invalid or improperly mapped legacy blockstate: " . $blockStateNbt->toString()); - } $stream->setOffset($offset); - - try{ - $palette[] = $this->blockStateDeserializer->deserialize($blockStateData); - }catch(BlockStateDeserializeException){ - //TODO: remember data for unknown states so we can implement them later - //TODO: log this - $palette[] = $this->blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); - } - }catch(NbtException | BlockStateDeserializeException $e){ + }catch(NbtDataException $e){ + //NBT borked, unrecoverable throw new CorruptedChunkException("Invalid blockstate NBT at offset $i in paletted storage: " . $e->getMessage(), 0, $e); } + + //TODO: remember data for unknown states so we can implement them later + try{ + $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + }catch(BlockStateDeserializeException $e){ + //while not ideal, this is not a fatal error + $logger->error("Failed to upgrade blockstate: " . $e->getMessage() . " offset $i in palette, blockstate NBT: " . $blockStateNbt->toString()); + $palette[] = $this->blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); + continue; + } + try{ + $palette[] = $this->blockStateDeserializer->deserialize($blockStateData); + }catch(BlockStateDeserializeException $e){ + $logger->error("Failed to deserialize blockstate: " . $e->getMessage() . " offset $i in palette, blockstate NBT: " . $blockStateNbt->toString()); + $palette[] = $this->blockStateDeserializer->deserialize(GlobalBlockStateHandlers::getUnknownBlockStateData()); + } } //TODO: exceptions @@ -253,7 +255,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ * @return PalettedBlockArray[] * @phpstan-return array */ - private static function deserialize3dBiomes(BinaryStream $stream, int $chunkVersion) : array{ + private static function deserialize3dBiomes(BinaryStream $stream, int $chunkVersion, \Logger $logger) : array{ $previous = null; $result = []; $nextIndex = Chunk::MIN_SUBCHUNK_INDEX; @@ -279,7 +281,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } } if(!$stream->feof()){ - throw new CorruptedChunkException("3D biomes data contains extra unread data"); + //maybe bad output produced by a third-party conversion tool like Chunker + $logger->error("Unexpected trailing data after 3D biomes data"); } return $result; @@ -314,7 +317,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** * @return PalettedBlockArray[] */ - protected function deserializeLegacyExtraData(string $index, int $chunkVersion) : array{ + protected function deserializeLegacyExtraData(string $index, int $chunkVersion, \Logger $logger) : array{ if(($extraRawData = $this->db->get($index . ChunkDataKey::LEGACY_BLOCK_EXTRA_DATA)) === false || $extraRawData === ""){ return []; } @@ -335,12 +338,15 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockId = $value & 0xff; $blockData = ($value >> 8) & 0xf; - $blockStateData = $this->blockDataUpgrader->upgradeIntIdMeta($blockId, $blockData); - if($blockStateData === null){ + try{ + $blockStateData = $this->blockDataUpgrader->upgradeIntIdMeta($blockId, $blockData); + }catch(BlockStateDeserializeException $e){ //TODO: we could preserve this in case it's supported in the future, but this was historically only //used for grass anyway, so we probably don't need to care + $logger->error("Failed to upgrade legacy extra block: " . $e->getMessage() . " ($blockId:$blockData)"); continue; } + //assume this won't throw $blockStateId = $this->blockStateDeserializer->deserialize($blockStateData); if(!isset($extraDataLayers[$ySub])){ @@ -372,8 +378,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ * @phpstan-return array * @throws CorruptedWorldException */ - private function deserializeLegacyTerrainData(string $index, int $chunkVersion) : array{ - $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); + private function deserializeLegacyTerrainData(string $index, int $chunkVersion, \Logger $logger) : array{ + $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion, $logger); $legacyTerrain = $this->db->get($index . ChunkDataKey::LEGACY_TERRAIN); if($legacyTerrain === false){ @@ -396,6 +402,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ }catch(BinaryDataException $e){ throw new CorruptedChunkException($e->getMessage(), 0, $e); } + if(!$binaryStream->feof()){ + $logger->error("Unexpected trailing data in legacy terrain data"); + } $subChunks = []; for($yy = 0; $yy < 8; ++$yy){ @@ -419,18 +428,25 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** * Deserializes a subchunk stored in the legacy non-paletted format used from 1.0 until 1.2.13. */ - private function deserializeNonPalettedSubChunkData(BinaryStream $binaryStream, int $chunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette) : SubChunk{ + private function deserializeNonPalettedSubChunkData(BinaryStream $binaryStream, int $chunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette, \Logger $logger) : SubChunk{ try{ $blocks = $binaryStream->get(4096); $blockData = $binaryStream->get(2048); - - if($chunkVersion < ChunkVersion::v1_1_0){ - $binaryStream->get(4096); //legacy light info, discard it - } }catch(BinaryDataException $e){ throw new CorruptedChunkException($e->getMessage(), 0, $e); } + if($chunkVersion < ChunkVersion::v1_1_0){ + try{ + $binaryStream->get(4096); //legacy light info, discard it + if(!$binaryStream->feof()){ + $logger->error("Unexpected trailing data in legacy subchunk data"); + } + }catch(BinaryDataException $e){ + $logger->error("Failed to read legacy subchunk light info: " . $e->getMessage()); + } + } + $storages = [$this->palettizeLegacySubChunkXZY($blocks, $blockData)]; if($convertedLegacyExtraData !== null){ $storages[] = $convertedLegacyExtraData; @@ -445,7 +461,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ * @see ChunkDataKey::SUBCHUNK * @throws CorruptedChunkException */ - private function deserializeSubChunkData(BinaryStream $binaryStream, int $chunkVersion, int $subChunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette) : SubChunk{ + private function deserializeSubChunkData(BinaryStream $binaryStream, int $chunkVersion, int $subChunkVersion, ?PalettedBlockArray $convertedLegacyExtraData, PalettedBlockArray $biomePalette, \Logger $logger) : SubChunk{ switch($subChunkVersion){ case SubChunkVersion::CLASSIC: case SubChunkVersion::CLASSIC_BUG_2: //these are all identical to version 0, but vanilla respects these so we should also @@ -454,9 +470,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ case SubChunkVersion::CLASSIC_BUG_5: case SubChunkVersion::CLASSIC_BUG_6: case SubChunkVersion::CLASSIC_BUG_7: - return $this->deserializeNonPalettedSubChunkData($binaryStream, $chunkVersion, $convertedLegacyExtraData, $biomePalette); + return $this->deserializeNonPalettedSubChunkData($binaryStream, $chunkVersion, $convertedLegacyExtraData, $biomePalette, $logger); case SubChunkVersion::PALETTED_SINGLE: - $storages = [$this->deserializeBlockPalette($binaryStream)]; + $storages = [$this->deserializeBlockPalette($binaryStream, $logger)]; if($convertedLegacyExtraData !== null){ $storages[] = $convertedLegacyExtraData; } @@ -473,11 +489,11 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $storages = []; for($k = 0; $k < $storageCount; ++$k){ - $storages[] = $this->deserializeBlockPalette($binaryStream); + $storages[] = $this->deserializeBlockPalette($binaryStream, $logger); } return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); default: - //TODO: set chunks read-only so the version on disk doesn't get overwritten + //this should never happen - an unsupported chunk appearing in a supported world is a sign of corruption throw new CorruptedChunkException("don't know how to decode LevelDB subchunk format version $subChunkVersion"); } } @@ -499,7 +515,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ * @return SubChunk[] * @phpstan-return array */ - private function deserializeAllSubChunkData(string $index, int $chunkVersion, bool &$hasBeenUpgraded, array $convertedLegacyExtraData, array $biomeArrays) : array{ + private function deserializeAllSubChunkData(string $index, int $chunkVersion, bool &$hasBeenUpgraded, array $convertedLegacyExtraData, array $biomeArrays, \Logger $logger) : array{ $subChunks = []; $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; @@ -518,7 +534,14 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $hasBeenUpgraded = true; } - $subChunks[$y] = $this->deserializeSubChunkData($binaryStream, $chunkVersion, $subChunkVersion, $convertedLegacyExtraData[$y] ?? null, $biomeArrays[$y]); + $subChunks[$y] = $this->deserializeSubChunkData( + $binaryStream, + $chunkVersion, + $subChunkVersion, + $convertedLegacyExtraData[$y] ?? null, + $biomeArrays[$y], + new \PrefixedLogger($logger, "Subchunk y=$y v$subChunkVersion") + ); } return $subChunks; @@ -530,7 +553,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ * @return PalettedBlockArray[] * @phpstan-return array */ - private function deserializeBiomeData(string $index, int $chunkVersion) : array{ + private function deserializeBiomeData(string $index, int $chunkVersion, \Logger $logger) : array{ $biomeArrays = []; if(($maps2d = $this->db->get($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES)) !== false){ $binaryStream = new BinaryStream($maps2d); @@ -538,6 +561,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ try{ $binaryStream->get(512); //heightmap, discard it $biomes3d = ChunkUtils::extrapolate3DBiomes($binaryStream->get(256)); //never throws + if(!$binaryStream->feof()){ + $logger->error("Unexpected trailing data after 2D biome data"); + } }catch(BinaryDataException $e){ throw new CorruptedChunkException($e->getMessage(), 0, $e); } @@ -549,11 +575,12 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ try{ $binaryStream->get(512); - $biomeArrays = self::deserialize3dBiomes($binaryStream, $chunkVersion); + $biomeArrays = self::deserialize3dBiomes($binaryStream, $chunkVersion, $logger); }catch(BinaryDataException $e){ throw new CorruptedChunkException($e->getMessage(), 0, $e); } }else{ + $logger->error("Missing biome data, using default ocean biome"); for($i = Chunk::MIN_SUBCHUNK_INDEX; $i <= Chunk::MAX_SUBCHUNK_INDEX; ++$i){ $biomeArrays[$i] = new PalettedBlockArray(BiomeIds::OCEAN); //polyfill } @@ -574,6 +601,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return null; } + $logger = new \PrefixedLogger($this->logger, "Loading chunk x=$chunkX z=$chunkZ v$chunkVersion"); + $hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION; switch($chunkVersion){ @@ -617,14 +646,14 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ case ChunkVersion::v1_1_0: //TODO: check beds case ChunkVersion::v1_0_0: - $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion); - $biomeArrays = $this->deserializeBiomeData($index, $chunkVersion); - $subChunks = $this->deserializeAllSubChunkData($index, $chunkVersion, $hasBeenUpgraded, $convertedLegacyExtraData, $biomeArrays); + $convertedLegacyExtraData = $this->deserializeLegacyExtraData($index, $chunkVersion, $logger); + $biomeArrays = $this->deserializeBiomeData($index, $chunkVersion, $logger); + $subChunks = $this->deserializeAllSubChunkData($index, $chunkVersion, $hasBeenUpgraded, $convertedLegacyExtraData, $biomeArrays, $logger); break; case ChunkVersion::v0_9_5: case ChunkVersion::v0_9_2: case ChunkVersion::v0_9_0: - $subChunks = $this->deserializeLegacyTerrainData($index, $chunkVersion); + $subChunks = $this->deserializeLegacyTerrainData($index, $chunkVersion, $logger); break; default: throw new CorruptedChunkException("don't know how to decode chunk format version $chunkVersion"); @@ -668,6 +697,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ ); if($hasBeenUpgraded){ + $logger->debug("Flagging chunk as dirty due to upgraded data"); $chunk->setTerrainDirty(); //trigger rewriting chunk to disk if it was converted from an older format } From 4d0cecbac2991b12ee56d9ff6a5400c48c863e30 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 16:47:25 +0100 Subject: [PATCH 609/692] RegionWorldProvider: use provider logger instead of global logger --- src/world/format/io/region/RegionWorldProvider.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/world/format/io/region/RegionWorldProvider.php b/src/world/format/io/region/RegionWorldProvider.php index ae3afc274..a5b6f54f7 100644 --- a/src/world/format/io/region/RegionWorldProvider.php +++ b/src/world/format/io/region/RegionWorldProvider.php @@ -118,12 +118,11 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ try{ $this->regions[$index] = RegionLoader::loadExisting($path); }catch(CorruptedRegionException $e){ - $logger = \GlobalLogger::get(); - $logger->error("Corrupted region file detected: " . $e->getMessage()); + $this->logger->error("Corrupted region file detected: " . $e->getMessage()); $backupPath = $path . ".bak." . time(); rename($path, $backupPath); - $logger->error("Corrupted region file has been backed up to " . $backupPath); + $this->logger->error("Corrupted region file has been backed up to " . $backupPath); $this->regions[$index] = RegionLoader::createNew($path); } From 6beb80b8fe489b0deb34c1b5ec5e519969a45285 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 2 May 2023 17:13:31 +0100 Subject: [PATCH 610/692] Fixed usages of BlockDataUpgrader which weren't accounting for thrown exceptions --- src/block/tile/FlowerPot.php | 6 +++++- .../bedrock/item/upgrade/ItemDataUpgrader.php | 20 ++++++++++++++----- src/entity/object/FallingBlock.php | 15 +++++++++----- src/world/World.php | 8 +++++--- src/world/format/io/BaseWorldProvider.php | 7 ++++--- 5 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index d6c2c58fb..3f1d4ff2e 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -52,7 +52,11 @@ class FlowerPot extends Spawnable{ $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); if(($itemIdTag = $nbt->getTag(self::TAG_ITEM)) instanceof ShortTag && ($itemMetaTag = $nbt->getTag(self::TAG_ITEM_DATA)) instanceof IntTag){ - $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($itemIdTag->getValue(), $itemMetaTag->getValue()); + try{ + $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($itemIdTag->getValue(), $itemMetaTag->getValue()); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Error loading legacy flower pot item data: " . $e->getMessage(), 0, $e); + } }elseif(($plantBlockTag = $nbt->getCompoundTag(self::TAG_PLANT_BLOCK)) !== null){ try{ $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($plantBlockTag); diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 46fce81ce..249b257e2 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\data\bedrock\item\upgrade; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\upgrade\BlockDataUpgrader; use pocketmine\data\bedrock\item\SavedItemData; use pocketmine\data\bedrock\item\SavedItemStackData; @@ -57,7 +58,11 @@ final class ItemDataUpgrader{ */ public function upgradeItemTypeDataString(string $rawNameId, int $meta, int $count, ?CompoundTag $nbt) : SavedItemStackData{ if(($r12BlockId = $this->r12ItemIdToBlockIdMap->itemIdToBlockId($rawNameId)) !== null){ - $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + try{ + $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Failed to deserialize blockstate for legacy blockitem: " . $e->getMessage(), 0, $e); + } }else{ //probably a standard item $blockStateData = null; @@ -124,12 +129,17 @@ final class ItemDataUpgrader{ $blockStateNbt = $tag->getCompoundTag(SavedItemData::TAG_BLOCK); if($blockStateNbt !== null){ - $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + try{ + $blockStateData = $this->blockDataUpgrader->upgradeBlockStateNbt($blockStateNbt); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Failed to deserialize blockstate for blockitem: " . $e->getMessage(), 0, $e); + } }elseif(($r12BlockId = $this->r12ItemIdToBlockIdMap->itemIdToBlockId($rawNameId)) !== null){ //this is a legacy blockitem represented by ID + meta - $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); - if($blockStateData === null){ - throw new SavedDataLoadingException("Expected a blockstate to be associated with this block"); + try{ + $blockStateData = $this->blockDataUpgrader->upgradeStringIdMeta($r12BlockId, $meta); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Failed to deserialize blockstate for legacy blockitem: " . $e->getMessage(), 0, $e); } }else{ //probably a standard item diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 0371ec950..8c2b1d5e6 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -75,7 +75,11 @@ class FallingBlock extends Entity{ //TODO: 1.8+ save format $blockDataUpgrader = GlobalBlockStateHandlers::getUpgrader(); if(($fallingBlockTag = $nbt->getCompoundTag(self::TAG_FALLING_BLOCK)) !== null){ - $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($fallingBlockTag); + try{ + $blockStateData = $blockDataUpgrader->upgradeBlockStateNbt($fallingBlockTag); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Invalid falling block blockstate: " . $e->getMessage(), 0, $e); + } }else{ if(($tileIdTag = $nbt->getTag(self::TAG_TILE_ID)) instanceof IntTag){ $blockId = $tileIdTag->getValue(); @@ -86,10 +90,11 @@ class FallingBlock extends Entity{ } $damage = $nbt->getByte(self::TAG_DATA, 0); - $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($blockId, $damage); - } - if($blockStateData === null){ - throw new SavedDataLoadingException("Invalid legacy falling block"); + try{ + $blockStateData = $blockDataUpgrader->upgradeIntIdMeta($blockId, $damage); + }catch(BlockStateDeserializeException $e){ + throw new SavedDataLoadingException("Invalid legacy falling block data: " . $e->getMessage(), 0, $e); + } } try{ diff --git a/src/world/World.php b/src/world/World.php index f499ccb22..a9798fb8a 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -37,6 +37,7 @@ use pocketmine\block\UnknownBlock; use pocketmine\block\VanillaBlocks; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\SavedDataLoadingException; use pocketmine\entity\Entity; use pocketmine\entity\EntityFactory; @@ -526,9 +527,10 @@ class World implements ChunkManager{ if($item !== null){ $block = $item->getBlock(); }elseif(preg_match("/^-?\d+$/", $name) === 1){ - //TODO: this may throw if the ID/meta was invalid - $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta((int) $name, 0); - if($blockStateData === null){ + //TODO: this is a really sketchy hack - remove this as soon as possible + try{ + $blockStateData = GlobalBlockStateHandlers::getUpgrader()->upgradeIntIdMeta((int) $name, 0); + }catch(BlockStateDeserializeException){ continue; } $block = RuntimeBlockStateRegistry::getInstance()->fromStateId(GlobalBlockStateHandlers::getDeserializer()->deserialize($blockStateData)); diff --git a/src/world/format/io/BaseWorldProvider.php b/src/world/format/io/BaseWorldProvider.php index 7c881ef84..a4d8651a6 100644 --- a/src/world/format/io/BaseWorldProvider.php +++ b/src/world/format/io/BaseWorldProvider.php @@ -67,9 +67,10 @@ abstract class BaseWorldProvider implements WorldProvider{ $newPalette = []; foreach($palette as $k => $legacyIdMeta){ - $newStateData = $this->blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); - if($newStateData === null){ - //TODO: remember data for unknown states so we can implement them later + //TODO: remember data for unknown states so we can implement them later + try{ + $newStateData = $this->blockDataUpgrader->upgradeIntIdMeta($legacyIdMeta >> 4, $legacyIdMeta & 0xf); + }catch(BlockStateDeserializeException $e){ $newStateData = GlobalBlockStateHandlers::getUnknownBlockStateData(); } From 5e462db0f8b7eb57e09ec5e5fe719efe2f9d5021 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 13:36:24 +0100 Subject: [PATCH 611/692] Move MOTD game mode stringifying to RakLibInterface since this is contextless (there's no way to know the version of the client requesting the MOTD), we can safely assume that this is not going to vary between protocol versions. --- src/network/mcpe/convert/TypeConverter.php | 8 -------- src/network/mcpe/raklib/RakLibInterface.php | 8 ++++++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 3bbf9c840..634f8ee0c 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -79,14 +79,6 @@ class TypeConverter{ } } - public function protocolGameModeName(GameMode $gameMode) : string{ - switch($gameMode->id()){ - case GameMode::SURVIVAL()->id(): return "Survival"; - case GameMode::ADVENTURE()->id(): return "Adventure"; - default: return "Creative"; - } - } - public function protocolGameModeToCore(int $gameMode) : ?GameMode{ switch($gameMode){ case ProtocolGameMode::SURVIVAL: diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index f63099e8a..82d881239 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -26,7 +26,6 @@ namespace pocketmine\network\mcpe\raklib; use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\AdvancedNetworkInterface; use pocketmine\network\mcpe\compression\ZlibCompressor; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\PacketBroadcaster; @@ -36,6 +35,7 @@ use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; use pocketmine\network\Network; use pocketmine\network\NetworkInterfaceStartException; use pocketmine\network\PacketHandlingException; +use pocketmine\player\GameMode; use pocketmine\Server; use pocketmine\snooze\SleeperNotifier; use pocketmine\timings\Timings; @@ -255,7 +255,11 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $info->getMaxPlayerCount(), $this->rakServerId, $this->server->getName(), - TypeConverter::getInstance()->protocolGameModeName($this->server->getGamemode()) + match($this->server->getGamemode()){ + GameMode::SURVIVAL() => "Survival", + GameMode::ADVENTURE() => "Adventure", + default => "Creative" + } ]) . ";" ); } From 01f340985a52b1fb05e677eb9b527e9fb410aad2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 16:33:17 +0100 Subject: [PATCH 612/692] Centralize all conversion-related stuff under TypeConverter instead of having singletons for everything, which are a nightmare to manage for multi version --- src/Server.php | 4 +- src/block/tile/FlowerPot.php | 4 +- src/block/tile/ItemFrame.php | 4 +- src/block/tile/Jukebox.php | 4 +- src/block/tile/Lectern.php | 4 +- .../animation/ConsumingItemAnimation.php | 4 +- src/entity/object/FallingBlock.php | 4 +- src/network/mcpe/ChunkRequestTask.php | 8 +-- src/network/mcpe/cache/CraftingDataCache.php | 3 +- .../mcpe/convert/GlobalItemTypeDictionary.php | 45 --------------- src/network/mcpe/convert/ItemTranslator.php | 13 ----- .../mcpe/convert/RuntimeBlockMapping.php | 15 ----- src/network/mcpe/convert/TypeConverter.php | 56 +++++++++++++++---- .../mcpe/handler/PreSpawnPacketHandler.php | 3 +- src/world/World.php | 4 +- src/world/particle/BlockBreakParticle.php | 4 +- src/world/particle/BlockPunchParticle.php | 4 +- src/world/particle/FloatingTextParticle.php | 4 +- src/world/particle/ItemBreakParticle.php | 4 +- src/world/particle/TerrainParticle.php | 4 +- src/world/sound/BlockBreakSound.php | 4 +- src/world/sound/BlockPlaceSound.php | 4 +- src/world/sound/BlockPunchSound.php | 4 +- src/world/sound/EntityLandSound.php | 4 +- src/world/sound/ItemUseOnBlockSound.php | 4 +- .../mcpe/convert/RuntimeBlockMappingTest.php | 3 +- 26 files changed, 88 insertions(+), 130 deletions(-) delete mode 100644 src/network/mcpe/convert/GlobalItemTypeDictionary.php diff --git a/src/Server.php b/src/Server.php index 5bda2976b..7bc67aa38 100644 --- a/src/Server.php +++ b/src/Server.php @@ -53,7 +53,7 @@ use pocketmine\network\mcpe\compression\CompressBatchPromise; use pocketmine\network\mcpe\compression\CompressBatchTask; use pocketmine\network\mcpe\compression\Compressor; use pocketmine\network\mcpe\compression\ZlibCompressor; -use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\encryption\EncryptionContext; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkSession; @@ -1204,7 +1204,7 @@ class Server{ private function startupPrepareNetworkInterfaces() : bool{ $useQuery = $this->configGroup->getConfigBool("enable-query", true); - $packetSerializerContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()); + $packetSerializerContext = new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()); $packetBroadcaster = new StandardPacketBroadcaster($this, $packetSerializerContext); $entityEventBroadcaster = new StandardEntityEventBroadcaster($packetBroadcaster); diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 3f1d4ff2e..9a05a8cd0 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -33,7 +33,7 @@ use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ShortTag; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\world\format\io\GlobalBlockStateHandlers; /** @@ -95,7 +95,7 @@ class FlowerPot extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setTag(self::TAG_PLANT_BLOCK, RuntimeBlockMapping::getInstance()->toStateData($this->plant->getStateId())->toNbt()); + $nbt->setTag(self::TAG_PLANT_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->toStateData($this->plant->getStateId())->toNbt()); } } diff --git a/src/block/tile/ItemFrame.php b/src/block/tile/ItemFrame.php index 7482fa089..faf0ddbb6 100644 --- a/src/block/tile/ItemFrame.php +++ b/src/block/tile/ItemFrame.php @@ -27,7 +27,7 @@ use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\world\World; /** @@ -100,7 +100,7 @@ class ItemFrame extends Spawnable{ $nbt->setFloat(self::TAG_ITEM_DROP_CHANCE, $this->itemDropChance); $nbt->setByte(self::TAG_ITEM_ROTATION, $this->itemRotation); if(!$this->item->isNull()){ - $nbt->setTag(self::TAG_ITEM, ItemTranslator::getInstance()->toNetworkNbt($this->item)); + $nbt->setTag(self::TAG_ITEM, TypeConverter::getInstance()->getItemTranslator()->toNetworkNbt($this->item)); } } } diff --git a/src/block/tile/Jukebox.php b/src/block/tile/Jukebox.php index 12dd3c302..a94072bb1 100644 --- a/src/block/tile/Jukebox.php +++ b/src/block/tile/Jukebox.php @@ -26,7 +26,7 @@ namespace pocketmine\block\tile; use pocketmine\item\Item; use pocketmine\item\Record; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\TypeConverter; class Jukebox extends Spawnable{ private const TAG_RECORD = "RecordItem"; //Item CompoundTag @@ -59,7 +59,7 @@ class Jukebox extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ //this is needed for the note particles to show on the client side if($this->record !== null){ - $nbt->setTag(self::TAG_RECORD, ItemTranslator::getInstance()->toNetworkNbt($this->record)); + $nbt->setTag(self::TAG_RECORD, TypeConverter::getInstance()->getItemTranslator()->toNetworkNbt($this->record)); } } } diff --git a/src/block/tile/Lectern.php b/src/block/tile/Lectern.php index f094d2316..37e79b10e 100644 --- a/src/block/tile/Lectern.php +++ b/src/block/tile/Lectern.php @@ -26,7 +26,7 @@ namespace pocketmine\block\tile; use pocketmine\item\Item; use pocketmine\item\WritableBookBase; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\TypeConverter; use function count; /** @@ -81,7 +81,7 @@ class Lectern extends Spawnable{ $nbt->setByte(self::TAG_HAS_BOOK, $this->book !== null ? 1 : 0); $nbt->setInt(self::TAG_PAGE, $this->viewedPage); if($this->book !== null){ - $nbt->setTag(self::TAG_BOOK, ItemTranslator::getInstance()->toNetworkNbt($this->book)); + $nbt->setTag(self::TAG_BOOK, TypeConverter::getInstance()->getItemTranslator()->toNetworkNbt($this->book)); $nbt->setInt(self::TAG_TOTAL_PAGES, count($this->book->getPages())); } } diff --git a/src/entity/animation/ConsumingItemAnimation.php b/src/entity/animation/ConsumingItemAnimation.php index 99048abcb..aa6152a57 100644 --- a/src/entity/animation/ConsumingItemAnimation.php +++ b/src/entity/animation/ConsumingItemAnimation.php @@ -25,7 +25,7 @@ namespace pocketmine\entity\animation; use pocketmine\entity\Human; use pocketmine\item\Item; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\ActorEventPacket; use pocketmine\network\mcpe\protocol\types\ActorEvent; @@ -37,7 +37,7 @@ final class ConsumingItemAnimation implements Animation{ ){} public function encode() : array{ - [$netId, $netData] = ItemTranslator::getInstance()->toNetworkId($this->item); + [$netId, $netData] = TypeConverter::getInstance()->getItemTranslator()->toNetworkId($this->item); return [ //TODO: need to check the data values ActorEventPacket::create($this->human->getId(), ActorEvent::EATING_ITEM, ($netId << 16) | $netData) diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 8c2b1d5e6..10f53fc5d 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -39,7 +39,7 @@ use pocketmine\math\Vector3; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; @@ -197,7 +197,7 @@ class FallingBlock extends Entity{ protected function syncNetworkData(EntityMetadataCollection $properties) : void{ parent::syncNetworkData($properties); - $properties->setInt(EntityMetadataProperties::VARIANT, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId())); + $properties->setInt(EntityMetadataProperties::VARIANT, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId())); } public function getOffsetPosition(Vector3 $vector3) : Vector3{ diff --git a/src/network/mcpe/ChunkRequestTask.php b/src/network/mcpe/ChunkRequestTask.php index fe30126ae..0f8f60fe6 100644 --- a/src/network/mcpe/ChunkRequestTask.php +++ b/src/network/mcpe/ChunkRequestTask.php @@ -25,8 +25,7 @@ namespace pocketmine\network\mcpe; use pocketmine\network\mcpe\compression\CompressBatchPromise; use pocketmine\network\mcpe\compression\Compressor; -use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelChunkPacket; use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; @@ -67,8 +66,9 @@ class ChunkRequestTask extends AsyncTask{ public function onRun() : void{ $chunk = FastChunkSerializer::deserializeTerrain($this->chunk); $subCount = ChunkSerializer::getSubChunkCount($chunk); - $encoderContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary()); - $payload = ChunkSerializer::serializeFullChunk($chunk, RuntimeBlockMapping::getInstance(), $encoderContext, $this->tiles); + $converter = TypeConverter::getInstance(); + $encoderContext = new PacketSerializerContext($converter->getItemTypeDictionary()); + $payload = ChunkSerializer::serializeFullChunk($chunk, $converter->getBlockTranslator(), $encoderContext, $this->tiles); $stream = new BinaryStream(); PacketBatch::encodePackets($stream, $encoderContext, [LevelChunkPacket::create(new ChunkPosition($this->chunkX, $this->chunkZ), $subCount, false, null, $payload)]); diff --git a/src/network/mcpe/cache/CraftingDataCache.php b/src/network/mcpe/cache/CraftingDataCache.php index 9b70d00c9..e6ac6167b 100644 --- a/src/network/mcpe/cache/CraftingDataCache.php +++ b/src/network/mcpe/cache/CraftingDataCache.php @@ -30,7 +30,6 @@ use pocketmine\crafting\ShapedRecipe; use pocketmine\crafting\ShapelessRecipe; use pocketmine\crafting\ShapelessRecipeType; use pocketmine\item\Item; -use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\CraftingDataPacket; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; @@ -173,7 +172,7 @@ final class CraftingDataCache{ } $potionContainerChangeRecipes = []; - $itemTypeDictionary = GlobalItemTypeDictionary::getInstance()->getDictionary(); + $itemTypeDictionary = TypeConverter::getInstance()->getItemTypeDictionary(); foreach($manager->getPotionContainerChangeRecipes() as $recipe){ $input = $itemTypeDictionary->fromStringId($recipe->getInputItemId()); $ingredient = $converter->coreRecipeIngredientToNet($recipe->getIngredient())->getDescriptor(); diff --git a/src/network/mcpe/convert/GlobalItemTypeDictionary.php b/src/network/mcpe/convert/GlobalItemTypeDictionary.php deleted file mode 100644 index 0369a9e78..000000000 --- a/src/network/mcpe/convert/GlobalItemTypeDictionary.php +++ /dev/null @@ -1,45 +0,0 @@ -dictionary; } -} diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 13a9bad4f..6309d774c 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -32,8 +32,6 @@ use pocketmine\item\Item; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\utils\AssumptionFailedError; -use pocketmine\utils\SingletonTrait; -use pocketmine\world\format\io\GlobalItemDataHandlers; /** * This class handles translation between network item ID+metadata to PocketMine-MP internal ID+metadata and vice versa. @@ -41,17 +39,6 @@ use pocketmine\world\format\io\GlobalItemDataHandlers; final class ItemTranslator{ public const NO_BLOCK_RUNTIME_ID = 0; - use SingletonTrait; - - private static function make() : self{ - return new self( - GlobalItemTypeDictionary::getInstance()->getDictionary(), - RuntimeBlockMapping::getInstance()->getBlockStateDictionary(), - GlobalItemDataHandlers::getSerializer(), - GlobalItemDataHandlers::getDeserializer() - ); - } - public function __construct( private ItemTypeDictionary $itemTypeDictionary, private BlockStateDictionary $blockStateDictionary, diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index 3d8fc831d..4df98f15c 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -23,22 +23,16 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; -use pocketmine\data\bedrock\BedrockDataFiles; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\data\bedrock\block\BlockStateSerializeException; use pocketmine\data\bedrock\block\BlockStateSerializer; use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\utils\AssumptionFailedError; -use pocketmine\utils\Filesystem; -use pocketmine\utils\SingletonTrait; -use pocketmine\world\format\io\GlobalBlockStateHandlers; /** * @internal */ final class RuntimeBlockMapping{ - use SingletonTrait; - /** * @var int[] * @phpstan-var array @@ -49,15 +43,6 @@ final class RuntimeBlockMapping{ private BlockStateData $fallbackStateData; private int $fallbackStateId; - private static function make() : self{ - $canonicalBlockStatesRaw = Filesystem::fileGetContents(BedrockDataFiles::CANONICAL_BLOCK_STATES_NBT); - $metaMappingRaw = Filesystem::fileGetContents(BedrockDataFiles::BLOCK_STATE_META_MAP_JSON); - return new self( - BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw), - GlobalBlockStateHandlers::getSerializer() - ); - } - public function __construct( private BlockStateDictionary $blockStateDictionary, private BlockStateSerializer $blockStateSerializer diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 634f8ee0c..ad9f631ee 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -28,11 +28,13 @@ use pocketmine\crafting\ExactRecipeIngredient; use pocketmine\crafting\MetaWildcardRecipeIngredient; use pocketmine\crafting\RecipeIngredient; use pocketmine\crafting\TagWildcardRecipeIngredient; +use pocketmine\data\bedrock\BedrockDataFiles; use pocketmine\data\bedrock\item\BlockItemIdMap; use pocketmine\item\Item; use pocketmine\item\VanillaItems; use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary; use pocketmine\network\mcpe\protocol\types\GameMode as ProtocolGameMode; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\recipe\IntIdMetaItemDescriptor; @@ -41,7 +43,10 @@ use pocketmine\network\mcpe\protocol\types\recipe\StringIdMetaItemDescriptor; use pocketmine\network\mcpe\protocol\types\recipe\TagItemDescriptor; use pocketmine\player\GameMode; use pocketmine\utils\AssumptionFailedError; +use pocketmine\utils\Filesystem; use pocketmine\utils\SingletonTrait; +use pocketmine\world\format\io\GlobalBlockStateHandlers; +use pocketmine\world\format\io\GlobalItemDataHandlers; use function get_class; use function morton2d_encode; @@ -52,13 +57,40 @@ class TypeConverter{ private const RECIPE_INPUT_WILDCARD_META = 0x7fff; + private BlockItemIdMap $blockItemIdMap; + private RuntimeBlockMapping $blockTranslator; + private ItemTranslator $itemTranslator; + private ItemTypeDictionary $itemTypeDictionary; private int $shieldRuntimeId; public function __construct(){ //TODO: inject stuff via constructor - $this->shieldRuntimeId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromStringId("minecraft:shield"); + $this->blockItemIdMap = BlockItemIdMap::getInstance(); + + $canonicalBlockStatesRaw = Filesystem::fileGetContents(BedrockDataFiles::CANONICAL_BLOCK_STATES_NBT); + $metaMappingRaw = Filesystem::fileGetContents(BedrockDataFiles::BLOCK_STATE_META_MAP_JSON); + $this->blockTranslator = new RuntimeBlockMapping( + BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw), + GlobalBlockStateHandlers::getSerializer() + ); + + $this->itemTypeDictionary = ItemTypeDictionaryFromDataHelper::loadFromString(Filesystem::fileGetContents(BedrockDataFiles::REQUIRED_ITEM_LIST_JSON)); + $this->shieldRuntimeId = $this->itemTypeDictionary->fromStringId("minecraft:shield"); + + $this->itemTranslator = new ItemTranslator( + $this->itemTypeDictionary, + $this->blockTranslator->getBlockStateDictionary(), + GlobalItemDataHandlers::getSerializer(), + GlobalItemDataHandlers::getDeserializer() + ); } + public function getBlockTranslator() : RuntimeBlockMapping{ return $this->blockTranslator; } + + public function getItemTypeDictionary() : ItemTypeDictionary{ return $this->itemTypeDictionary; } + + public function getItemTranslator() : ItemTranslator{ return $this->itemTranslator; } + /** * Returns a client-friendly gamemode of the specified real gamemode * This function takes care of handling gamemodes known to MCPE (as of 1.1.0.3, that includes Survival, Creative and Adventure) @@ -100,14 +132,14 @@ class TypeConverter{ return new ProtocolRecipeIngredient(null, 0); } if($ingredient instanceof MetaWildcardRecipeIngredient){ - $id = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromStringId($ingredient->getItemId()); + $id = $this->itemTypeDictionary->fromStringId($ingredient->getItemId()); $meta = self::RECIPE_INPUT_WILDCARD_META; $descriptor = new IntIdMetaItemDescriptor($id, $meta); }elseif($ingredient instanceof ExactRecipeIngredient){ $item = $ingredient->getItem(); - [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId($item); + [$id, $meta, $blockRuntimeId] = $this->itemTranslator->toNetworkId($item); if($blockRuntimeId !== ItemTranslator::NO_BLOCK_RUNTIME_ID){ - $meta = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->getMetaFromStateId($blockRuntimeId); + $meta = $this->blockTranslator->getBlockStateDictionary()->getMetaFromStateId($blockRuntimeId); if($meta === null){ throw new AssumptionFailedError("Every block state should have an associated meta value"); } @@ -133,7 +165,7 @@ class TypeConverter{ } if($descriptor instanceof IntIdMetaItemDescriptor){ - $stringId = GlobalItemTypeDictionary::getInstance()->getDictionary()->fromIntId($descriptor->getId()); + $stringId = $this->itemTypeDictionary->fromIntId($descriptor->getId()); $meta = $descriptor->getMeta(); }elseif($descriptor instanceof StringIdMetaItemDescriptor){ $stringId = $descriptor->getId(); @@ -147,14 +179,14 @@ class TypeConverter{ } $blockRuntimeId = null; - if(($blockId = BlockItemIdMap::getInstance()->lookupBlockId($stringId)) !== null){ - $blockRuntimeId = RuntimeBlockMapping::getInstance()->getBlockStateDictionary()->lookupStateIdFromIdMeta($blockId, $meta); + if(($blockId = $this->blockItemIdMap->lookupBlockId($stringId)) !== null){ + $blockRuntimeId = $this->blockTranslator->getBlockStateDictionary()->lookupStateIdFromIdMeta($blockId, $meta); if($blockRuntimeId !== null){ $meta = 0; } } - $result = ItemTranslator::getInstance()->fromNetworkId( - GlobalItemTypeDictionary::getInstance()->getDictionary()->fromStringId($stringId), + $result = $this->itemTranslator->fromNetworkId( + $this->itemTypeDictionary->fromStringId($stringId), $meta, $blockRuntimeId ?? ItemTranslator::NO_BLOCK_RUNTIME_ID ); @@ -172,11 +204,11 @@ class TypeConverter{ $nbt = clone $nbt; } - $idMeta = ItemTranslator::getInstance()->toNetworkIdQuiet($itemStack); + $idMeta = $this->itemTranslator->toNetworkIdQuiet($itemStack); if($idMeta === null){ //Display unmapped items as INFO_UPDATE, but stick something in their NBT to make sure they don't stack with //other unmapped items. - [$id, $meta, $blockRuntimeId] = ItemTranslator::getInstance()->toNetworkId(VanillaBlocks::INFO_UPDATE()->asItem()); + [$id, $meta, $blockRuntimeId] = $this->itemTranslator->toNetworkId(VanillaBlocks::INFO_UPDATE()->asItem()); if($nbt === null){ $nbt = new CompoundTag(); } @@ -206,7 +238,7 @@ class TypeConverter{ } $compound = $itemStack->getNbt(); - $itemResult = ItemTranslator::getInstance()->fromNetworkId($itemStack->getId(), $itemStack->getMeta(), $itemStack->getBlockRuntimeId()); + $itemResult = $this->itemTranslator->fromNetworkId($itemStack->getId(), $itemStack->getMeta(), $itemStack->getBlockRuntimeId()); if($compound !== null){ $compound = clone $compound; diff --git a/src/network/mcpe/handler/PreSpawnPacketHandler.php b/src/network/mcpe/handler/PreSpawnPacketHandler.php index 91263a619..0ba686bed 100644 --- a/src/network/mcpe/handler/PreSpawnPacketHandler.php +++ b/src/network/mcpe/handler/PreSpawnPacketHandler.php @@ -26,7 +26,6 @@ namespace pocketmine\network\mcpe\handler; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\cache\CraftingDataCache; use pocketmine\network\mcpe\cache\StaticPacketCache; -use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\InventoryManager; use pocketmine\network\mcpe\NetworkSession; @@ -108,7 +107,7 @@ class PreSpawnPacketHandler extends PacketHandler{ false, [], 0, - GlobalItemTypeDictionary::getInstance()->getDictionary()->getEntries(), + TypeConverter::getInstance()->getItemTypeDictionary()->getEntries(), )); $this->session->getLogger()->debug("Sending actor identifiers"); diff --git a/src/world/World.php b/src/world/World.php index a9798fb8a..a4528f4c2 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -67,7 +67,7 @@ use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\StringTag; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\NetworkBroadcastUtils; use pocketmine\network\mcpe\protocol\BlockActorDataPacket; use pocketmine\network\mcpe\protocol\ClientboundPacket; @@ -1062,7 +1062,7 @@ class World implements ChunkManager{ public function createBlockUpdatePackets(array $blocks) : array{ $packets = []; - $blockMapping = RuntimeBlockMapping::getInstance(); + $blockMapping = TypeConverter::getInstance()->getBlockTranslator(); foreach($blocks as $b){ if(!($b instanceof Vector3)){ diff --git a/src/world/particle/BlockBreakParticle.php b/src/world/particle/BlockBreakParticle.php index 98b2eb9c8..b9cec0e78 100644 --- a/src/world/particle/BlockBreakParticle.php +++ b/src/world/particle/BlockBreakParticle.php @@ -25,7 +25,7 @@ namespace pocketmine\world\particle; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\types\LevelEvent; @@ -34,6 +34,6 @@ class BlockBreakParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getStateId()), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/particle/BlockPunchParticle.php b/src/world/particle/BlockPunchParticle.php index fe754dc56..c8affffc5 100644 --- a/src/world/particle/BlockPunchParticle.php +++ b/src/world/particle/BlockPunchParticle.php @@ -25,7 +25,7 @@ namespace pocketmine\world\particle; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\types\LevelEvent; @@ -39,6 +39,6 @@ class BlockPunchParticle implements Particle{ ){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) | ($this->face << 24), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) | ($this->face << 24), $pos)]; } } diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index e7766470f..a50aeef3a 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -26,7 +26,7 @@ namespace pocketmine\world\particle; use pocketmine\block\VanillaBlocks; use pocketmine\entity\Entity; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\AddActorPacket; use pocketmine\network\mcpe\protocol\RemoveActorPacket; use pocketmine\network\mcpe\protocol\types\entity\ByteMetadataProperty; @@ -95,7 +95,7 @@ class FloatingTextParticle implements Particle{ EntityMetadataProperties::BOUNDING_BOX_WIDTH => new FloatMetadataProperty(0.0), EntityMetadataProperties::BOUNDING_BOX_HEIGHT => new FloatMetadataProperty(0.0), EntityMetadataProperties::NAMETAG => new StringMetadataProperty($name), - EntityMetadataProperties::VARIANT => new IntMetadataProperty(RuntimeBlockMapping::getInstance()->toRuntimeId(VanillaBlocks::AIR()->getStateId())), + EntityMetadataProperties::VARIANT => new IntMetadataProperty(TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId(VanillaBlocks::AIR()->getStateId())), EntityMetadataProperties::ALWAYS_SHOW_NAMETAG => new ByteMetadataProperty(1), ]; $p[] = AddActorPacket::create( diff --git a/src/world/particle/ItemBreakParticle.php b/src/world/particle/ItemBreakParticle.php index ac0c5ac4b..4f8c9ea91 100644 --- a/src/world/particle/ItemBreakParticle.php +++ b/src/world/particle/ItemBreakParticle.php @@ -25,7 +25,7 @@ namespace pocketmine\world\particle; use pocketmine\item\Item; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\ItemTranslator; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\types\ParticleIds; @@ -33,7 +33,7 @@ class ItemBreakParticle implements Particle{ public function __construct(private Item $item){} public function encode(Vector3 $pos) : array{ - [$id, $meta] = ItemTranslator::getInstance()->toNetworkId($this->item); + [$id, $meta] = TypeConverter::getInstance()->getItemTranslator()->toNetworkId($this->item); return [LevelEventPacket::standardParticle(ParticleIds::ITEM_BREAK, ($id << 16) | $meta, $pos)]; } } diff --git a/src/world/particle/TerrainParticle.php b/src/world/particle/TerrainParticle.php index 27de04b14..0eb1f0494 100644 --- a/src/world/particle/TerrainParticle.php +++ b/src/world/particle/TerrainParticle.php @@ -25,7 +25,7 @@ namespace pocketmine\world\particle; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\types\ParticleIds; @@ -33,6 +33,6 @@ class TerrainParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, RuntimeBlockMapping::getInstance()->toRuntimeId($this->b->getStateId()), $pos)]; + return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/sound/BlockBreakSound.php b/src/world/sound/BlockBreakSound.php index 4f919a396..6cdc5471e 100644 --- a/src/world/sound/BlockBreakSound.php +++ b/src/world/sound/BlockBreakSound.php @@ -25,7 +25,7 @@ namespace pocketmine\world\sound; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -33,6 +33,6 @@ class BlockBreakSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPlaceSound.php b/src/world/sound/BlockPlaceSound.php index 8440dbd47..80704a957 100644 --- a/src/world/sound/BlockPlaceSound.php +++ b/src/world/sound/BlockPlaceSound.php @@ -25,7 +25,7 @@ namespace pocketmine\world\sound; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -33,6 +33,6 @@ class BlockPlaceSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPunchSound.php b/src/world/sound/BlockPunchSound.php index d3898b734..33754b93e 100644 --- a/src/world/sound/BlockPunchSound.php +++ b/src/world/sound/BlockPunchSound.php @@ -25,7 +25,7 @@ namespace pocketmine\world\sound; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -40,7 +40,7 @@ class BlockPunchSound implements Sound{ LevelSoundEvent::HIT, $pos, false, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) + TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) )]; } } diff --git a/src/world/sound/EntityLandSound.php b/src/world/sound/EntityLandSound.php index 545753367..dd23b571f 100644 --- a/src/world/sound/EntityLandSound.php +++ b/src/world/sound/EntityLandSound.php @@ -26,7 +26,7 @@ namespace pocketmine\world\sound; use pocketmine\block\Block; use pocketmine\entity\Entity; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -43,7 +43,7 @@ class EntityLandSound implements Sound{ return [LevelSoundEventPacket::create( LevelSoundEvent::LAND, $pos, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->blockLandedOn->getStateId()), + TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->blockLandedOn->getStateId()), $this->entity::getNetworkTypeId(), false, //TODO: does isBaby have any relevance here? false diff --git a/src/world/sound/ItemUseOnBlockSound.php b/src/world/sound/ItemUseOnBlockSound.php index d3483d36b..4ab7e10a0 100644 --- a/src/world/sound/ItemUseOnBlockSound.php +++ b/src/world/sound/ItemUseOnBlockSound.php @@ -25,7 +25,7 @@ namespace pocketmine\world\sound; use pocketmine\block\Block; use pocketmine\math\Vector3; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -42,7 +42,7 @@ final class ItemUseOnBlockSound implements Sound{ LevelSoundEvent::ITEM_USE_ON, $pos, false, - RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getStateId()) + TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) )]; } } diff --git a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php index 9e7287da2..46fb709ab 100644 --- a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php +++ b/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php @@ -32,8 +32,9 @@ class RuntimeBlockMappingTest extends TestCase{ * @doesNotPerformAssertions */ public function testAllBlockStatesSerialize() : void{ + $blockTranslator = TypeConverter::getInstance()->getBlockTranslator(); foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $state){ - RuntimeBlockMapping::getInstance()->toRuntimeId($state->getStateId()); + $blockTranslator->toRuntimeId($state->getStateId()); } } } From 32e6fdd95adbf43d4d08d361fd75eb2c7819751b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 22:18:27 +0100 Subject: [PATCH 613/692] Rename RuntimeBlockMapping -> BlockTranslator --- ...ntimeBlockMapping.php => BlockTranslator.php} | 2 +- src/network/mcpe/convert/TypeConverter.php | 6 +++--- src/network/mcpe/serializer/ChunkSerializer.php | 16 ++++++++-------- src/world/World.php | 8 ++++---- ...ckMappingTest.php => BlockTranslatorTest.php} | 2 +- tools/generate-bedrock-data-from-packets.php | 12 ++++++------ 6 files changed, 23 insertions(+), 23 deletions(-) rename src/network/mcpe/convert/{RuntimeBlockMapping.php => BlockTranslator.php} (99%) rename tests/phpunit/network/mcpe/convert/{RuntimeBlockMappingTest.php => BlockTranslatorTest.php} (96%) diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/BlockTranslator.php similarity index 99% rename from src/network/mcpe/convert/RuntimeBlockMapping.php rename to src/network/mcpe/convert/BlockTranslator.php index 4df98f15c..a475109f4 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/BlockTranslator.php @@ -32,7 +32,7 @@ use pocketmine\utils\AssumptionFailedError; /** * @internal */ -final class RuntimeBlockMapping{ +final class BlockTranslator{ /** * @var int[] * @phpstan-var array diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index ad9f631ee..2da58ca14 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -58,7 +58,7 @@ class TypeConverter{ private const RECIPE_INPUT_WILDCARD_META = 0x7fff; private BlockItemIdMap $blockItemIdMap; - private RuntimeBlockMapping $blockTranslator; + private BlockTranslator $blockTranslator; private ItemTranslator $itemTranslator; private ItemTypeDictionary $itemTypeDictionary; private int $shieldRuntimeId; @@ -69,7 +69,7 @@ class TypeConverter{ $canonicalBlockStatesRaw = Filesystem::fileGetContents(BedrockDataFiles::CANONICAL_BLOCK_STATES_NBT); $metaMappingRaw = Filesystem::fileGetContents(BedrockDataFiles::BLOCK_STATE_META_MAP_JSON); - $this->blockTranslator = new RuntimeBlockMapping( + $this->blockTranslator = new BlockTranslator( BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw), GlobalBlockStateHandlers::getSerializer() ); @@ -85,7 +85,7 @@ class TypeConverter{ ); } - public function getBlockTranslator() : RuntimeBlockMapping{ return $this->blockTranslator; } + public function getBlockTranslator() : BlockTranslator{ return $this->blockTranslator; } public function getItemTypeDictionary() : ItemTypeDictionary{ return $this->itemTypeDictionary; } diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index 772587855..88c03ae38 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -27,7 +27,7 @@ use pocketmine\block\tile\Spawnable; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\LegacyBiomeIdToStringIdMap; use pocketmine\nbt\TreeRoot; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\BlockTranslator; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use pocketmine\network\mcpe\protocol\serializer\PacketSerializer; use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; @@ -58,13 +58,13 @@ final class ChunkSerializer{ return 0; } - public static function serializeFullChunk(Chunk $chunk, RuntimeBlockMapping $blockMapper, PacketSerializerContext $encoderContext, ?string $tiles = null) : string{ + public static function serializeFullChunk(Chunk $chunk, BlockTranslator $blockTranslator, PacketSerializerContext $encoderContext, ?string $tiles = null) : string{ $stream = PacketSerializer::encoder($encoderContext); $subChunkCount = self::getSubChunkCount($chunk); $writtenCount = 0; for($y = Chunk::MIN_SUBCHUNK_INDEX; $writtenCount < $subChunkCount; ++$y, ++$writtenCount){ - self::serializeSubChunk($chunk->getSubChunk($y), $blockMapper, $stream, false); + self::serializeSubChunk($chunk->getSubChunk($y), $blockTranslator, $stream, false); } $biomeIdMap = LegacyBiomeIdToStringIdMap::getInstance(); @@ -84,13 +84,13 @@ final class ChunkSerializer{ return $stream->getBuffer(); } - public static function serializeSubChunk(SubChunk $subChunk, RuntimeBlockMapping $blockMapper, PacketSerializer $stream, bool $persistentBlockStates) : void{ + public static function serializeSubChunk(SubChunk $subChunk, BlockTranslator $blockTranslator, PacketSerializer $stream, bool $persistentBlockStates) : void{ $layers = $subChunk->getBlockLayers(); $stream->putByte(8); //version $stream->putByte(count($layers)); - $blockStateDictionary = $blockMapper->getBlockStateDictionary(); + $blockStateDictionary = $blockTranslator->getBlockStateDictionary(); foreach($layers as $blocks){ $bitsPerBlock = $blocks->getBitsPerBlock(); @@ -109,16 +109,16 @@ final class ChunkSerializer{ $nbtSerializer = new NetworkNbtSerializer(); foreach($palette as $p){ //TODO: introduce a binary cache for this - $state = $blockStateDictionary->getDataFromStateId($blockMapper->toRuntimeId($p)); + $state = $blockStateDictionary->getDataFromStateId($blockTranslator->toRuntimeId($p)); if($state === null){ - $state = $blockMapper->getFallbackStateData(); + $state = $blockTranslator->getFallbackStateData(); } $stream->put($nbtSerializer->write(new TreeRoot($state->toNbt()))); } }else{ foreach($palette as $p){ - $stream->put(Binary::writeUnsignedVarInt($blockMapper->toRuntimeId($p) << 1)); + $stream->put(Binary::writeUnsignedVarInt($blockTranslator->toRuntimeId($p) << 1)); } } } diff --git a/src/world/World.php b/src/world/World.php index a4528f4c2..a965974b7 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1062,7 +1062,7 @@ class World implements ChunkManager{ public function createBlockUpdatePackets(array $blocks) : array{ $packets = []; - $blockMapping = TypeConverter::getInstance()->getBlockTranslator(); + $blockTranslator = TypeConverter::getInstance()->getBlockTranslator(); foreach($blocks as $b){ if(!($b instanceof Vector3)){ @@ -1074,7 +1074,7 @@ class World implements ChunkManager{ $tile = $this->getTileAt($b->x, $b->y, $b->z); if($tile instanceof Spawnable && count($fakeStateProperties = $tile->getRenderUpdateBugWorkaroundStateProperties($fullBlock)) > 0){ - $originalStateData = $blockMapping->toStateData($fullBlock->getStateId()); + $originalStateData = $blockTranslator->toStateData($fullBlock->getStateId()); $fakeStateData = new BlockStateData( $originalStateData->getName(), array_merge($originalStateData->getStates(), $fakeStateProperties), @@ -1082,14 +1082,14 @@ class World implements ChunkManager{ ); $packets[] = UpdateBlockPacket::create( $blockPosition, - $blockMapping->getBlockStateDictionary()->lookupStateIdFromData($fakeStateData) ?? throw new AssumptionFailedError("Unmapped fake blockstate data: " . $fakeStateData->toNbt()), + $blockTranslator->getBlockStateDictionary()->lookupStateIdFromData($fakeStateData) ?? throw new AssumptionFailedError("Unmapped fake blockstate data: " . $fakeStateData->toNbt()), UpdateBlockPacket::FLAG_NETWORK, UpdateBlockPacket::DATA_LAYER_NORMAL ); } $packets[] = UpdateBlockPacket::create( $blockPosition, - $blockMapping->toRuntimeId($fullBlock->getStateId()), + $blockTranslator->toRuntimeId($fullBlock->getStateId()), UpdateBlockPacket::FLAG_NETWORK, UpdateBlockPacket::DATA_LAYER_NORMAL ); diff --git a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php b/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php similarity index 96% rename from tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php rename to tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php index 46fb709ab..f2dc6ccea 100644 --- a/tests/phpunit/network/mcpe/convert/RuntimeBlockMappingTest.php +++ b/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php @@ -26,7 +26,7 @@ namespace pocketmine\network\mcpe\convert; use PHPUnit\Framework\TestCase; use pocketmine\block\RuntimeBlockStateRegistry; -class RuntimeBlockMappingTest extends TestCase{ +class BlockTranslatorTest extends TestCase{ /** * @doesNotPerformAssertions diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 2201a9159..83f684884 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -39,7 +39,7 @@ use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\convert\BlockStateDictionary; -use pocketmine\network\mcpe\convert\RuntimeBlockMapping; +use pocketmine\network\mcpe\convert\BlockTranslator; use pocketmine\network\mcpe\handler\PacketHandler; use pocketmine\network\mcpe\protocol\AvailableActorIdentifiersPacket; use pocketmine\network\mcpe\protocol\BiomeDefinitionListPacket; @@ -109,10 +109,10 @@ require dirname(__DIR__) . '/vendor/autoload.php'; class ParserPacketHandler extends PacketHandler{ public ?ItemTypeDictionary $itemTypeDictionary = null; - private RuntimeBlockMapping $blockMapping; + private BlockTranslator $blockTranslator; public function __construct(private string $bedrockDataPath){ - $this->blockMapping = new RuntimeBlockMapping( + $this->blockTranslator = new BlockTranslator( BlockStateDictionary::loadFromString( Filesystem::fileGetContents(Path::join($this->bedrockDataPath, "canonical_block_states.nbt")), Filesystem::fileGetContents(Path::join($this->bedrockDataPath, "block_state_meta_map.json")), @@ -150,7 +150,7 @@ class ParserPacketHandler extends PacketHandler{ if($meta !== 0){ throw new PacketHandlingException("Unexpected non-zero blockitem meta"); } - $blockState = $this->blockMapping->getBlockStateDictionary()->getDataFromStateId($itemStack->getBlockRuntimeId()) ?? null; + $blockState = $this->blockTranslator->getBlockStateDictionary()->getDataFromStateId($itemStack->getBlockRuntimeId()) ?? null; if($blockState === null){ throw new PacketHandlingException("Unmapped blockstate ID " . $itemStack->getBlockRuntimeId()); } @@ -268,9 +268,9 @@ class ParserPacketHandler extends PacketHandler{ } $meta = $descriptor->getMeta(); if($meta !== 32767){ - $blockStateId = $this->blockMapping->getBlockStateDictionary()->lookupStateIdFromIdMeta($data->name, $meta); + $blockStateId = $this->blockTranslator->getBlockStateDictionary()->lookupStateIdFromIdMeta($data->name, $meta); if($blockStateId !== null){ - $blockState = $this->blockMapping->getBlockStateDictionary()->getDataFromStateId($blockStateId); + $blockState = $this->blockTranslator->getBlockStateDictionary()->getDataFromStateId($blockStateId); if($blockState !== null && count($blockState->getStates()) > 0){ $data->block_states = self::blockStatePropertiesToString($blockState); } From ed021d193d47dadb6bdf00a991a0967f76c1fe5d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 23:11:00 +0100 Subject: [PATCH 614/692] BlockTranslator: cut memory usage in half this was achieved by storing binary representations of the blockstates, rather than the original BlockStateData. Due to the insane object:data ratio of Tag objects (40:1 for ByteTag for example), modestly sized NBT can explode in memory footprint. This has been previously seen with the absurd 25 MB footprint on file load. Previously, I attempted to mitigate this by deduplicating tag objects, but this was mitigating a symptom rather than addressing the cause. We don't actually need to keep the NBT around in memory, since we don't actually use it for anything other than matching blockstates. In this case, we can allow the code to be possibly a little slower, since the lookup is anyway slow and the result will be cached. In fact, using encoded ordered states as hash keys significantly improves the speed of lookups for stuff like walls, which have many thousands of states. We keep around generateStateData(), since it's still possible we may need the BlockStateData associated, and it can be easily reconstructed from the binary-encoded representation in BlockStateDictionaryEntry. --- .../mcpe/convert/BlockStateDictionary.php | 46 ++-------------- .../convert/BlockStateDictionaryEntry.php | 55 +++++++++++++++++-- .../mcpe/convert/BlockStateLookupCache.php | 20 ++----- src/network/mcpe/convert/BlockTranslator.php | 4 +- src/network/mcpe/convert/ItemTranslator.php | 2 +- .../mcpe/serializer/ChunkSerializer.php | 2 +- tools/generate-bedrock-data-from-packets.php | 4 +- 7 files changed, 67 insertions(+), 66 deletions(-) diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 4c6e8aec0..b70038220 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -25,10 +25,6 @@ namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\NbtDataException; -use pocketmine\nbt\tag\ByteTag; -use pocketmine\nbt\tag\CompoundTag; -use pocketmine\nbt\tag\IntTag; -use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; use function array_map; @@ -58,7 +54,7 @@ final class BlockStateDictionary{ public function __construct( private array $states ){ - $this->stateDataToStateIdLookupCache = new BlockStateLookupCache(array_map(fn(BlockStateDictionaryEntry $entry) => $entry->getStateData(), $this->states)); + $this->stateDataToStateIdLookupCache = new BlockStateLookupCache($this->states); } /** @@ -71,15 +67,15 @@ final class BlockStateDictionary{ $this->idMetaToStateIdLookupCache = []; foreach($this->states as $i => $state){ - $this->idMetaToStateIdLookupCache[$state->getMeta()][$state->getStateData()->getName()] = $i; + $this->idMetaToStateIdLookupCache[$state->getMeta()][$state->getStateName()] = $i; } } return $this->idMetaToStateIdLookupCache; } - public function getDataFromStateId(int $networkRuntimeId) : ?BlockStateData{ - return ($this->states[$networkRuntimeId] ?? null)?->getStateData(); + public function generateDataFromStateId(int $networkRuntimeId) : ?BlockStateData{ + return ($this->states[$networkRuntimeId] ?? null)?->generateStateData(); } /** @@ -113,33 +109,6 @@ final class BlockStateDictionary{ */ public function getStates() : array{ return $this->states; } - /** - * @param string[] $keyIndex - * @param (ByteTag|StringTag|IntTag)[][] $valueIndex - * @phpstan-param array $keyIndex - * @phpstan-param array> $valueIndex - */ - private static function deduplicateCompound(CompoundTag $tag, array &$keyIndex, array &$valueIndex) : CompoundTag{ - if($tag->count() === 0){ - return $tag; - } - - $newTag = CompoundTag::create(); - foreach($tag as $key => $value){ - $key = $keyIndex[$key] ??= $key; - - if($value instanceof CompoundTag){ - $value = self::deduplicateCompound($value, $keyIndex, $valueIndex); - }elseif($value instanceof ByteTag || $value instanceof IntTag || $value instanceof StringTag){ - $value = $valueIndex[$value->getType()][$value->getValue()] ??= $value; - } - - $newTag->setTag($key, $value); - } - - return $newTag; - } - /** * @return BlockStateData[] * @phpstan-return list @@ -147,13 +116,8 @@ final class BlockStateDictionary{ * @throws NbtDataException */ public static function loadPaletteFromString(string $blockPaletteContents) : array{ - $keyIndex = []; - $valueIndex = []; - return array_map( - function(TreeRoot $root) use (&$keyIndex, &$valueIndex) : BlockStateData{ - return BlockStateData::fromNbt(self::deduplicateCompound($root->mustGetCompoundTag(), $keyIndex, $valueIndex)); - }, + fn(TreeRoot $root) => BlockStateData::fromNbt($root->mustGetCompoundTag()), (new NetworkNbtSerializer())->readMultiple($blockPaletteContents) ); } diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php index 53229963b..746e93977 100644 --- a/src/network/mcpe/convert/BlockStateDictionaryEntry.php +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -24,15 +24,60 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\nbt\LittleEndianNbtSerializer; +use pocketmine\nbt\tag\Tag; +use pocketmine\nbt\TreeRoot; +use function array_map; +use function count; +use function ksort; +use const SORT_STRING; final class BlockStateDictionaryEntry{ - public function __construct( - private BlockStateData $stateData, - private int $meta - ){} + private string $stateName; + private string $rawStateProperties; - public function getStateData() : BlockStateData{ return $this->stateData; } + public function __construct( + BlockStateData $stateData, + private int $meta + ){ + $this->stateName = $stateData->getName(); + $this->rawStateProperties = self::encodeStateProperties($stateData->getStates()); + } + + public function getStateName() : string{ return $this->stateName; } + + public function getRawStateProperties() : string{ return $this->rawStateProperties; } + + public function generateStateData() : BlockStateData{ + return new BlockStateData( + $this->stateName, + self::decodeStateProperties($this->rawStateProperties), + BlockStateData::CURRENT_VERSION + ); + } public function getMeta() : int{ return $this->meta; } + + /** + * @return Tag[] + */ + public static function decodeStateProperties(string $rawProperties) : array{ + if($rawProperties === ""){ + return []; + } + return array_map(fn(TreeRoot $root) => $root->getTag(), (new LittleEndianNbtSerializer())->readMultiple($rawProperties)); + } + + /** + * @param Tag[] $properties + */ + public static function encodeStateProperties(array $properties) : string{ + if(count($properties) === 0){ + return ""; + } + //TODO: make a more efficient encoding - NBT will do for now, but it's not very compact + ksort($properties, SORT_STRING); + return (new LittleEndianNbtSerializer())->writeMultiple(array_map(fn(Tag $tag) => new TreeRoot($tag), $properties)); + } } diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index 40b08e37d..cea2c9c57 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -35,7 +35,7 @@ final class BlockStateLookupCache{ /** * @var int[][] - * @phpstan-var array> + * @phpstan-var array> */ private array $nameToNetworkIdsLookup = []; @@ -46,18 +46,18 @@ final class BlockStateLookupCache{ private array $nameToSingleNetworkIdLookup = []; /** - * @param BlockStateData[] $blockStates - * @phpstan-param list $blockStates + * @param BlockStateDictionaryEntry[] $blockStates + * @phpstan-param list $blockStates */ public function __construct(array $blockStates){ foreach($blockStates as $stateId => $stateNbt){ - $this->nameToNetworkIdsLookup[$stateNbt->getName()][$stateId] = $stateNbt; + $this->nameToNetworkIdsLookup[$stateNbt->getStateName()][$stateNbt->getRawStateProperties()] = $stateId; } //setup fast path for stateless blocks foreach(Utils::stringifyKeys($this->nameToNetworkIdsLookup) as $name => $stateIds){ if(count($stateIds) === 1){ - $this->nameToSingleNetworkIdLookup[$name] = array_key_first($stateIds); + $this->nameToSingleNetworkIdLookup[$name] = $stateIds[array_key_first($stateIds)]; } } } @@ -73,14 +73,6 @@ final class BlockStateLookupCache{ return $this->nameToSingleNetworkIdLookup[$name]; } - if(isset($this->nameToNetworkIdsLookup[$name])){ - foreach($this->nameToNetworkIdsLookup[$name] as $stateId => $stateNbt){ - if($stateNbt->equals($data)){ - return $stateId; - } - } - } - - return null; + return $this->nameToNetworkIdsLookup[$name][BlockStateDictionaryEntry::encodeStateProperties($data->getStates())] ?? null; } } diff --git a/src/network/mcpe/convert/BlockTranslator.php b/src/network/mcpe/convert/BlockTranslator.php index a475109f4..d3f07fb30 100644 --- a/src/network/mcpe/convert/BlockTranslator.php +++ b/src/network/mcpe/convert/BlockTranslator.php @@ -51,7 +51,7 @@ final class BlockTranslator{ BlockStateData::current(BlockTypeNames::INFO_UPDATE, []) ) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); //lookup the state data from the dictionary to avoid keeping two copies of the same data around - $this->fallbackStateData = $this->blockStateDictionary->getDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); + $this->fallbackStateData = $this->blockStateDictionary->generateDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); } public function toRuntimeId(int $internalStateId) : int{ @@ -84,7 +84,7 @@ final class BlockTranslator{ //case someone wants to implement multi version). $networkRuntimeId = $this->toRuntimeId($internalStateId); - return $this->blockStateDictionary->getDataFromStateId($networkRuntimeId) ?? throw new AssumptionFailedError("We just looked up this state ID, so it must exist"); + return $this->blockStateDictionary->generateDataFromStateId($networkRuntimeId) ?? throw new AssumptionFailedError("We just looked up this state ID, so it must exist"); } public function getBlockStateDictionary() : BlockStateDictionary{ return $this->blockStateDictionary; } diff --git a/src/network/mcpe/convert/ItemTranslator.php b/src/network/mcpe/convert/ItemTranslator.php index 6309d774c..ea7a64d40 100644 --- a/src/network/mcpe/convert/ItemTranslator.php +++ b/src/network/mcpe/convert/ItemTranslator.php @@ -107,7 +107,7 @@ final class ItemTranslator{ $blockStateData = null; if($networkBlockRuntimeId !== self::NO_BLOCK_RUNTIME_ID){ - $blockStateData = $this->blockStateDictionary->getDataFromStateId($networkBlockRuntimeId); + $blockStateData = $this->blockStateDictionary->generateDataFromStateId($networkBlockRuntimeId); if($blockStateData === null){ throw new TypeConversionException("Blockstate runtimeID $networkBlockRuntimeId does not correspond to any known blockstate"); } diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index 88c03ae38..84682e114 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -109,7 +109,7 @@ final class ChunkSerializer{ $nbtSerializer = new NetworkNbtSerializer(); foreach($palette as $p){ //TODO: introduce a binary cache for this - $state = $blockStateDictionary->getDataFromStateId($blockTranslator->toRuntimeId($p)); + $state = $blockStateDictionary->generateDataFromStateId($blockTranslator->toRuntimeId($p)); if($state === null){ $state = $blockTranslator->getFallbackStateData(); } diff --git a/tools/generate-bedrock-data-from-packets.php b/tools/generate-bedrock-data-from-packets.php index 83f684884..989310e25 100644 --- a/tools/generate-bedrock-data-from-packets.php +++ b/tools/generate-bedrock-data-from-packets.php @@ -150,7 +150,7 @@ class ParserPacketHandler extends PacketHandler{ if($meta !== 0){ throw new PacketHandlingException("Unexpected non-zero blockitem meta"); } - $blockState = $this->blockTranslator->getBlockStateDictionary()->getDataFromStateId($itemStack->getBlockRuntimeId()) ?? null; + $blockState = $this->blockTranslator->getBlockStateDictionary()->generateDataFromStateId($itemStack->getBlockRuntimeId()) ?? null; if($blockState === null){ throw new PacketHandlingException("Unmapped blockstate ID " . $itemStack->getBlockRuntimeId()); } @@ -270,7 +270,7 @@ class ParserPacketHandler extends PacketHandler{ if($meta !== 32767){ $blockStateId = $this->blockTranslator->getBlockStateDictionary()->lookupStateIdFromIdMeta($data->name, $meta); if($blockStateId !== null){ - $blockState = $this->blockTranslator->getBlockStateDictionary()->getDataFromStateId($blockStateId); + $blockState = $this->blockTranslator->getBlockStateDictionary()->generateDataFromStateId($blockStateId); if($blockState !== null && count($blockState->getStates()) > 0){ $data->block_states = self::blockStatePropertiesToString($blockState); } From f9d9cbd0f6fc0bf0bfbeb7c38fc919036e7025ea Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 23:14:53 +0100 Subject: [PATCH 615/692] BlockStateDictionary: slash another 14% off memory usage by deduplicating block type names perhaps we could construct a dictionary from BlockTypeNames reflection?? --- src/network/mcpe/convert/BlockStateDictionary.php | 4 +++- src/network/mcpe/convert/BlockStateDictionaryEntry.php | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index b70038220..55dcd2210 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -130,6 +130,7 @@ final class BlockStateDictionary{ $entries = []; + $uniqueNames = []; foreach(self::loadPaletteFromString($blockPaletteContents) as $i => $state){ $meta = $metaMap[$i] ?? null; if($meta === null){ @@ -138,7 +139,8 @@ final class BlockStateDictionary{ if(!is_int($meta)){ throw new \InvalidArgumentException("Invalid metaMap offset $i, expected int, got " . get_debug_type($meta)); } - $entries[$i] = new BlockStateDictionaryEntry($state, $meta); + $uniqueName = $uniqueNames[$state->getName()] ??= $state->getName(); + $entries[$i] = new BlockStateDictionaryEntry($uniqueName, $state->getStates(), $meta); } return new self($entries); diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php index 746e93977..994695df2 100644 --- a/src/network/mcpe/convert/BlockStateDictionaryEntry.php +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -34,15 +34,17 @@ use const SORT_STRING; final class BlockStateDictionaryEntry{ - private string $stateName; private string $rawStateProperties; + /** + * @param Tag[] $stateProperties + */ public function __construct( - BlockStateData $stateData, + private string $stateName, + array $stateProperties, private int $meta ){ - $this->stateName = $stateData->getName(); - $this->rawStateProperties = self::encodeStateProperties($stateData->getStates()); + $this->rawStateProperties = self::encodeStateProperties($stateProperties); } public function getStateName() : string{ return $this->stateName; } From 43fe819862ee9efe9a6842c92ff9b0c40f1224b7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 May 2023 23:18:06 +0100 Subject: [PATCH 616/692] BlockStateDictionary: added a smelly hack that saves another 40 KB this is really diminishing returns at this point... --- src/network/mcpe/convert/BlockStateDictionary.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 55dcd2210..834390538 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; +use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; @@ -31,6 +32,7 @@ use function array_map; use function get_debug_type; use function is_array; use function is_int; +use function is_string; use function json_decode; use const JSON_THROW_ON_ERROR; @@ -131,6 +133,15 @@ final class BlockStateDictionary{ $entries = []; $uniqueNames = []; + + //this hack allows the internal cache index to use interned strings which are already available in the + //core code anyway, saving around 40 KB of memory + foreach((new \ReflectionClass(BlockTypeNames::class))->getConstants() as $value){ + if(is_string($value)){ + $uniqueNames[$value] = $value; + } + } + foreach(self::loadPaletteFromString($blockPaletteContents) as $i => $state){ $meta = $metaMap[$i] ?? null; if($meta === null){ From d2c37d8bcf2590889da48119ed5fd542038e5ffb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 15:16:18 +0100 Subject: [PATCH 617/692] BlockStateLookupCache: avoid allocating useless arrays for blocks with only 1 permutation this saves about 120 KB of memory. --- src/network/mcpe/convert/BlockStateLookupCache.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index cea2c9c57..3cc3708ee 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -58,6 +58,7 @@ final class BlockStateLookupCache{ foreach(Utils::stringifyKeys($this->nameToNetworkIdsLookup) as $name => $stateIds){ if(count($stateIds) === 1){ $this->nameToSingleNetworkIdLookup[$name] = $stateIds[array_key_first($stateIds)]; + unset($this->nameToNetworkIdsLookup[$name]); } } } From 897ba9f2d9df389086efba8c369a7562a01312bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 15:29:27 +0100 Subject: [PATCH 618/692] BlockStateLookupCache: combine arrays for stateless and stateful blocks this reduces memory usage by another 20 KB or so. --- .../mcpe/convert/BlockStateLookupCache.php | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php index 3cc3708ee..16cf0ef0e 100644 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ b/src/network/mcpe/convert/BlockStateLookupCache.php @@ -27,6 +27,8 @@ use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\utils\Utils; use function array_key_first; use function count; +use function is_array; +use function is_int; /** * Facilitates quickly looking up a block's state ID based on its NBT. @@ -34,31 +36,27 @@ use function count; final class BlockStateLookupCache{ /** - * @var int[][] - * @phpstan-var array> + * @var int[][]|int[] + * @phpstan-var array|int> */ private array $nameToNetworkIdsLookup = []; - /** - * @var int[] - * @phpstan-var array - */ - private array $nameToSingleNetworkIdLookup = []; - /** * @param BlockStateDictionaryEntry[] $blockStates * @phpstan-param list $blockStates */ public function __construct(array $blockStates){ + $table = []; foreach($blockStates as $stateId => $stateNbt){ - $this->nameToNetworkIdsLookup[$stateNbt->getStateName()][$stateNbt->getRawStateProperties()] = $stateId; + $table[$stateNbt->getStateName()][$stateNbt->getRawStateProperties()] = $stateId; } //setup fast path for stateless blocks - foreach(Utils::stringifyKeys($this->nameToNetworkIdsLookup) as $name => $stateIds){ + foreach(Utils::stringifyKeys($table) as $name => $stateIds){ if(count($stateIds) === 1){ - $this->nameToSingleNetworkIdLookup[$name] = $stateIds[array_key_first($stateIds)]; - unset($this->nameToNetworkIdsLookup[$name]); + $this->nameToNetworkIdsLookup[$name] = $stateIds[array_key_first($stateIds)]; + }else{ + $this->nameToNetworkIdsLookup[$name] = $stateIds; } } } @@ -70,10 +68,11 @@ final class BlockStateLookupCache{ public function lookupStateId(BlockStateData $data) : ?int{ $name = $data->getName(); - if(isset($this->nameToSingleNetworkIdLookup[$name])){ - return $this->nameToSingleNetworkIdLookup[$name]; - } - - return $this->nameToNetworkIdsLookup[$name][BlockStateDictionaryEntry::encodeStateProperties($data->getStates())] ?? null; + $lookup = $this->nameToNetworkIdsLookup[$name] ?? null; + return match(true){ + $lookup === null => null, + is_int($lookup) => $lookup, + is_array($lookup) => $lookup[BlockStateDictionaryEntry::encodeStateProperties($data->getStates())] ?? null + }; } } From f1417e8dc9160acb20ed194b864954b806efca9b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 16:14:41 +0100 Subject: [PATCH 619/692] BlockStateDictionaryEntry: deduplicate encoded states this saves about 500 KB of memory at no cost. --- src/network/mcpe/convert/BlockStateDictionaryEntry.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php index 994695df2..57cc29c0c 100644 --- a/src/network/mcpe/convert/BlockStateDictionaryEntry.php +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -33,6 +33,11 @@ use function ksort; use const SORT_STRING; final class BlockStateDictionaryEntry{ + /** + * @var string[] + * @phpstan-var array + */ + private static array $uniqueRawStates = []; private string $rawStateProperties; @@ -44,7 +49,8 @@ final class BlockStateDictionaryEntry{ array $stateProperties, private int $meta ){ - $this->rawStateProperties = self::encodeStateProperties($stateProperties); + $rawStateProperties = self::encodeStateProperties($stateProperties); + $this->rawStateProperties = self::$uniqueRawStates[$rawStateProperties] ??= $rawStateProperties; } public function getStateName() : string{ return $this->stateName; } From 896dd2ec9da73c9516329a2d12c1e23f7ab6a809 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 16:35:31 +0100 Subject: [PATCH 620/692] Boat: use BoatType enum instead of TreeType TreeType really belongs in the generator package. Not all types of tree may have their own boat type (e.g. azalea). We can't use WoodType for this either, because some types of wood also don't have associated boat types (crimson, warped). --- src/item/Boat.php | 12 +++---- src/item/BoatType.php | 70 +++++++++++++++++++++++++++++++++++++++ src/item/VanillaItems.php | 17 +++++----- 3 files changed, 83 insertions(+), 16 deletions(-) create mode 100644 src/item/BoatType.php diff --git a/src/item/Boat.php b/src/item/Boat.php index 1a78b0301..8fd3ea650 100644 --- a/src/item/Boat.php +++ b/src/item/Boat.php @@ -23,18 +23,16 @@ declare(strict_types=1); namespace pocketmine\item; -use pocketmine\block\utils\TreeType; - class Boat extends Item{ - private TreeType $woodType; + private BoatType $boatType; - public function __construct(ItemIdentifier $identifier, string $name, TreeType $woodType){ + public function __construct(ItemIdentifier $identifier, string $name, BoatType $boatType){ parent::__construct($identifier, $name); - $this->woodType = $woodType; + $this->boatType = $boatType; } - public function getWoodType() : TreeType{ - return $this->woodType; + public function getType() : BoatType{ + return $this->boatType; } public function getFuelTime() : int{ diff --git a/src/item/BoatType.php b/src/item/BoatType.php new file mode 100644 index 000000000..09816412b --- /dev/null +++ b/src/item/BoatType.php @@ -0,0 +1,70 @@ +Enum___construct($enumName); + } + + public function getWoodType() : WoodType{ return $this->woodType; } + + public function getDisplayName() : string{ + return $this->woodType->getDisplayName(); + } +} diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 38d7eff9f..9da73abe9 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\block\utils\RecordType; -use pocketmine\block\utils\TreeType; use pocketmine\block\VanillaBlocks; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\entity\Entity; @@ -539,15 +538,15 @@ final class VanillaItems{ self::register("writable_book", new WritableBook(new IID(Ids::WRITABLE_BOOK), "Book & Quill")); self::register("written_book", new WrittenBook(new IID(Ids::WRITTEN_BOOK), "Written Book")); - foreach(TreeType::getAll() as $type){ - //TODO: tree type should be dynamic in the future, but we're staying static for now for the sake of consistency + foreach(BoatType::getAll() as $type){ + //boat type is static, because different types of wood may have different properties self::register($type->name() . "_boat", new Boat(new IID(match($type){ - TreeType::OAK() => Ids::OAK_BOAT, - TreeType::SPRUCE() => Ids::SPRUCE_BOAT, - TreeType::BIRCH() => Ids::BIRCH_BOAT, - TreeType::JUNGLE() => Ids::JUNGLE_BOAT, - TreeType::ACACIA() => Ids::ACACIA_BOAT, - TreeType::DARK_OAK() => Ids::DARK_OAK_BOAT, + BoatType::OAK() => Ids::OAK_BOAT, + BoatType::SPRUCE() => Ids::SPRUCE_BOAT, + BoatType::BIRCH() => Ids::BIRCH_BOAT, + BoatType::JUNGLE() => Ids::JUNGLE_BOAT, + BoatType::ACACIA() => Ids::ACACIA_BOAT, + BoatType::DARK_OAK() => Ids::DARK_OAK_BOAT, default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) }), $type->getDisplayName() . " Boat", $type)); } From 299ff5d9125c740225565784a107ed57a97d9f62 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 16:39:23 +0100 Subject: [PATCH 621/692] Register mangrove boat item --- src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php | 1 + src/item/BoatType.php | 2 ++ src/item/ItemTypeIds.php | 3 ++- src/item/VanillaItems.php | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index aafac3b60..368423911 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -274,6 +274,7 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Item(Ids::LEATHER_HELMET, Items::LEATHER_CAP()); $this->map1to1Item(Ids::LEATHER_LEGGINGS, Items::LEATHER_PANTS()); $this->map1to1Item(Ids::MAGMA_CREAM, Items::MAGMA_CREAM()); + $this->map1to1Item(Ids::MANGROVE_BOAT, Items::MANGROVE_BOAT()); $this->map1to1Item(Ids::MANGROVE_SIGN, Items::MANGROVE_SIGN()); $this->map1to1Item(Ids::MELON_SEEDS, Items::MELON_SEEDS()); $this->map1to1Item(Ids::MELON_SLICE, Items::MELON()); diff --git a/src/item/BoatType.php b/src/item/BoatType.php index 09816412b..5ef0c9255 100644 --- a/src/item/BoatType.php +++ b/src/item/BoatType.php @@ -36,6 +36,7 @@ use pocketmine\utils\EnumTrait; * @method static BoatType BIRCH() * @method static BoatType DARK_OAK() * @method static BoatType JUNGLE() + * @method static BoatType MANGROVE() * @method static BoatType OAK() * @method static BoatType SPRUCE() */ @@ -52,6 +53,7 @@ final class BoatType{ new self("jungle", WoodType::JUNGLE()), new self("acacia", WoodType::ACACIA()), new self("dark_oak", WoodType::DARK_OAK()), + new self("mangrove", WoodType::MANGROVE()), ); } diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index ddde0d1cb..f2be016b9 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -300,8 +300,9 @@ final class ItemTypeIds{ public const SUSPICIOUS_STEW = 20261; public const TURTLE_HELMET = 20262; public const MEDICINE = 20263; + public const MANGROVE_BOAT = 20264; - public const FIRST_UNUSED_ITEM_ID = 20264; + public const FIRST_UNUSED_ITEM_ID = 20265; private static int $nextDynamicId = self::FIRST_UNUSED_ITEM_ID; diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index 9da73abe9..eeaeddc80 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -203,6 +203,7 @@ use pocketmine\world\World; * @method static Armor LEATHER_PANTS() * @method static Armor LEATHER_TUNIC() * @method static Item MAGMA_CREAM() + * @method static Boat MANGROVE_BOAT() * @method static ItemBlockWallOrFloor MANGROVE_SIGN() * @method static Medicine MEDICINE() * @method static Melon MELON() @@ -547,6 +548,7 @@ final class VanillaItems{ BoatType::JUNGLE() => Ids::JUNGLE_BOAT, BoatType::ACACIA() => Ids::ACACIA_BOAT, BoatType::DARK_OAK() => Ids::DARK_OAK_BOAT, + BoatType::MANGROVE() => Ids::MANGROVE_BOAT, default => throw new AssumptionFailedError("Unhandled tree type " . $type->name()) }), $type->getDisplayName() . " Boat", $type)); } From 2c81446e5b8b0e3d55eacba9567eecfd2cf4218c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 16:54:10 +0100 Subject: [PATCH 622/692] Move TreeType to generator package, added dedicated SaplingType enum TreeType includes a bunch of stuff that don't have regular saplings associated with them, such as mangrove and azalea trees. Mangrove has a dedicated propagule block with different behaviour than the others, and azalea trees are grown from azalea blocks, which are solid and have different behaviour to saplings. We may also want to account for crimson and warped 'trees' in TreeType too, although I'm not sure if those belong there or not. --- src/block/BlockLegacyIdHelper.php | 16 ++--- src/block/Sapling.php | 10 +-- src/block/VanillaBlocks.php | 8 +-- src/block/utils/SaplingType.php | 71 +++++++++++++++++++ src/world/biome/BiomeRegistry.php | 2 +- src/world/biome/ForestBiome.php | 2 +- src/world/biome/TaigaBiome.php | 2 +- src/world/generator/object/TreeFactory.php | 1 - .../generator/object}/TreeType.php | 7 +- src/world/generator/populator/Tree.php | 2 +- 10 files changed, 97 insertions(+), 24 deletions(-) create mode 100644 src/block/utils/SaplingType.php rename src/{block/utils => world/generator/object}/TreeType.php (85%) diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/BlockLegacyIdHelper.php index c7cb2f5d7..6d298ed17 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/BlockLegacyIdHelper.php @@ -27,7 +27,7 @@ use pocketmine\block\BlockIdentifier as BID; use pocketmine\block\BlockTypeIds as Ids; use pocketmine\block\tile\Sign as TileSign; use pocketmine\block\utils\LeavesType; -use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\SaplingType; use pocketmine\block\utils\WoodType; use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; @@ -124,14 +124,14 @@ final class BlockLegacyIdHelper{ }); } - public static function getSaplingIdentifier(TreeType $treeType) : BID{ + public static function getSaplingIdentifier(SaplingType $treeType) : BID{ return new BID(match($treeType->id()){ - TreeType::OAK()->id() => Ids::OAK_SAPLING, - TreeType::SPRUCE()->id() => Ids::SPRUCE_SAPLING, - TreeType::BIRCH()->id() => Ids::BIRCH_SAPLING, - TreeType::JUNGLE()->id() => Ids::JUNGLE_SAPLING, - TreeType::ACACIA()->id() => Ids::ACACIA_SAPLING, - TreeType::DARK_OAK()->id() => Ids::DARK_OAK_SAPLING, + SaplingType::OAK()->id() => Ids::OAK_SAPLING, + SaplingType::SPRUCE()->id() => Ids::SPRUCE_SAPLING, + SaplingType::BIRCH()->id() => Ids::BIRCH_SAPLING, + SaplingType::JUNGLE()->id() => Ids::JUNGLE_SAPLING, + SaplingType::ACACIA()->id() => Ids::ACACIA_SAPLING, + SaplingType::DARK_OAK()->id() => Ids::DARK_OAK_SAPLING, default => throw new AssumptionFailedError("All tree types should be covered") }); } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 838a32ce8..73ebfeb1f 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\SaplingType; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\StructureGrowEvent; use pocketmine\item\Fertilizer; @@ -39,11 +39,11 @@ use function mt_rand; class Sapling extends Flowable{ protected bool $ready = false; - private TreeType $treeType; + private SaplingType $saplingType; - public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, TreeType $treeType){ + public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo, SaplingType $saplingType){ parent::__construct($idInfo, $name, $typeInfo); - $this->treeType = $treeType; + $this->saplingType = $saplingType; } protected function describeState(RuntimeDataDescriber $w) : void{ @@ -102,7 +102,7 @@ class Sapling extends Flowable{ private function grow(?Player $player) : bool{ $random = new Random(mt_rand()); - $tree = TreeFactory::get($random, $this->treeType); + $tree = TreeFactory::get($random, $this->saplingType->getTreeType()); $transaction = $tree?->getBlockTransaction($this->position->getWorld(), $this->position->getFloorX(), $this->position->getFloorY(), $this->position->getFloorZ(), $random); if($transaction === null){ return false; diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 86534de83..ac6325d67 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -55,7 +55,7 @@ use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\LeavesType; -use pocketmine\block\utils\TreeType; +use pocketmine\block\utils\SaplingType; use pocketmine\block\utils\WoodType; use pocketmine\crafting\FurnaceType; use pocketmine\entity\projectile\Projectile; @@ -1108,9 +1108,9 @@ final class VanillaBlocks{ }); $saplingTypeInfo = new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]); - foreach(TreeType::getAll() as $treeType){ - $name = $treeType->getDisplayName(); - self::register($treeType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($treeType), $name . " Sapling", $saplingTypeInfo, $treeType)); + foreach(SaplingType::getAll() as $saplingType){ + $name = $saplingType->getDisplayName(); + self::register($saplingType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($saplingType), $name . " Sapling", $saplingTypeInfo, $saplingType)); } foreach(LeavesType::getAll() as $leavesType){ $name = $leavesType->getDisplayName(); diff --git a/src/block/utils/SaplingType.php b/src/block/utils/SaplingType.php new file mode 100644 index 000000000..516ee1516 --- /dev/null +++ b/src/block/utils/SaplingType.php @@ -0,0 +1,71 @@ +Enum___construct($enumName); + } + + public function getTreeType() : TreeType{ return $this->treeType; } + + public function getDisplayName() : string{ + return $this->treeType->getDisplayName(); + } +} diff --git a/src/world/biome/BiomeRegistry.php b/src/world/biome/BiomeRegistry.php index 470360d4b..648184209 100644 --- a/src/world/biome/BiomeRegistry.php +++ b/src/world/biome/BiomeRegistry.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace pocketmine\world\biome; -use pocketmine\block\utils\TreeType; use pocketmine\data\bedrock\BiomeIds; use pocketmine\utils\SingletonTrait; +use pocketmine\world\generator\object\TreeType; final class BiomeRegistry{ use SingletonTrait; diff --git a/src/world/biome/ForestBiome.php b/src/world/biome/ForestBiome.php index f75c303c4..8f80cb474 100644 --- a/src/world/biome/ForestBiome.php +++ b/src/world/biome/ForestBiome.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\biome; -use pocketmine\block\utils\TreeType; +use pocketmine\world\generator\object\TreeType; use pocketmine\world\generator\populator\TallGrass; use pocketmine\world\generator\populator\Tree; diff --git a/src/world/biome/TaigaBiome.php b/src/world/biome/TaigaBiome.php index b96c69bcc..cd68c9748 100644 --- a/src/world/biome/TaigaBiome.php +++ b/src/world/biome/TaigaBiome.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\biome; -use pocketmine\block\utils\TreeType; +use pocketmine\world\generator\object\TreeType; use pocketmine\world\generator\populator\TallGrass; use pocketmine\world\generator\populator\Tree; diff --git a/src/world/generator/object/TreeFactory.php b/src/world/generator/object/TreeFactory.php index 741ceacf9..ecab73c79 100644 --- a/src/world/generator/object/TreeFactory.php +++ b/src/world/generator/object/TreeFactory.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\world\generator\object; -use pocketmine\block\utils\TreeType; use pocketmine\utils\Random; final class TreeFactory{ diff --git a/src/block/utils/TreeType.php b/src/world/generator/object/TreeType.php similarity index 85% rename from src/block/utils/TreeType.php rename to src/world/generator/object/TreeType.php index 180f17a47..1e8bf56e9 100644 --- a/src/block/utils/TreeType.php +++ b/src/world/generator/object/TreeType.php @@ -21,7 +21,7 @@ declare(strict_types=1); -namespace pocketmine\block\utils; +namespace pocketmine\world\generator\object; use pocketmine\utils\EnumTrait; @@ -51,7 +51,10 @@ final class TreeType{ new TreeType("birch", "Birch"), new TreeType("jungle", "Jungle"), new TreeType("acacia", "Acacia"), - new TreeType("dark_oak", "Dark Oak") + new TreeType("dark_oak", "Dark Oak"), + //TODO: cherry blossom, mangrove, azalea + //TODO: do crimson and warped "trees" belong here? I'm not sure if they're actually trees or just fungi + //TODO: perhaps huge mushrooms should be here too??? ); } diff --git a/src/world/generator/populator/Tree.php b/src/world/generator/populator/Tree.php index b98af52ee..3e5aef0a7 100644 --- a/src/world/generator/populator/Tree.php +++ b/src/world/generator/populator/Tree.php @@ -25,11 +25,11 @@ namespace pocketmine\world\generator\populator; use pocketmine\block\BlockTypeIds; use pocketmine\block\BlockTypeTags; -use pocketmine\block\utils\TreeType; use pocketmine\utils\Random; use pocketmine\world\ChunkManager; use pocketmine\world\format\Chunk; use pocketmine\world\generator\object\TreeFactory; +use pocketmine\world\generator\object\TreeType; class Tree implements Populator{ private int $randomAmount = 1; From 85372633eb252950d7bf5da14c0f35fc11699ce1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 17:05:22 +0100 Subject: [PATCH 623/692] Tidy up BlockLegacyIdHelper stuff I don't plan to make wood-like blocks have a dynamic wood/leaves/sapling type, as it's entirely possible their type properties will continue to diverge in future versions. --- src/block/VanillaBlocks.php | 28 ++++++++-------- ...IdHelper.php => WoodLikeBlockIdHelper.php} | 33 ++++++++++++------- 2 files changed, 36 insertions(+), 25 deletions(-) rename src/block/{BlockLegacyIdHelper.php => WoodLikeBlockIdHelper.php} (88%) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index ac6325d67..cbe373346 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -1110,11 +1110,11 @@ final class VanillaBlocks{ foreach(SaplingType::getAll() as $saplingType){ $name = $saplingType->getDisplayName(); - self::register($saplingType->name() . "_sapling", new Sapling(BlockLegacyIdHelper::getSaplingIdentifier($saplingType), $name . " Sapling", $saplingTypeInfo, $saplingType)); + self::register($saplingType->name() . "_sapling", new Sapling(WoodLikeBlockIdHelper::getSaplingIdentifier($saplingType), $name . " Sapling", $saplingTypeInfo, $saplingType)); } foreach(LeavesType::getAll() as $leavesType){ $name = $leavesType->getDisplayName(); - self::register($leavesType->name() . "_leaves", new Leaves(BlockLegacyIdHelper::getLeavesIdentifier($leavesType), $name . " Leaves", $leavesBreakInfo, $leavesType)); + self::register($leavesType->name() . "_leaves", new Leaves(WoodLikeBlockIdHelper::getLeavesIdentifier($leavesType), $name . " Leaves", $leavesBreakInfo, $leavesType)); } $sandstoneBreakInfo = new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD())); @@ -1234,22 +1234,22 @@ final class VanillaBlocks{ $name = $woodType->getDisplayName(); $idName = fn(string $suffix) => $woodType->name() . "_" . $suffix; - self::register($idName(mb_strtolower($woodType->getStandardLogSuffix() ?? "log", 'US-ASCII')), new Wood(BlockLegacyIdHelper::getLogIdentifier($woodType), $name . " " . ($woodType->getStandardLogSuffix() ?? "Log"), $logBreakInfo, $woodType)); - self::register($idName(mb_strtolower($woodType->getAllSidedLogSuffix() ?? "wood", 'US-ASCII')), new Wood(BlockLegacyIdHelper::getAllSidedLogIdentifier($woodType), $name . " " . ($woodType->getAllSidedLogSuffix() ?? "Wood"), $logBreakInfo, $woodType)); + self::register($idName(mb_strtolower($woodType->getStandardLogSuffix() ?? "log", 'US-ASCII')), new Wood(WoodLikeBlockIdHelper::getLogIdentifier($woodType), $name . " " . ($woodType->getStandardLogSuffix() ?? "Log"), $logBreakInfo, $woodType)); + self::register($idName(mb_strtolower($woodType->getAllSidedLogSuffix() ?? "wood", 'US-ASCII')), new Wood(WoodLikeBlockIdHelper::getAllSidedLogIdentifier($woodType), $name . " " . ($woodType->getAllSidedLogSuffix() ?? "Wood"), $logBreakInfo, $woodType)); - self::register($idName("planks"), new Planks(BlockLegacyIdHelper::getWoodenPlanksIdentifier($woodType), $name . " Planks", $planksBreakInfo, $woodType)); - self::register($idName("fence"), new WoodenFence(BlockLegacyIdHelper::getWoodenFenceIdentifier($woodType), $name . " Fence", $planksBreakInfo, $woodType)); - self::register($idName("slab"), new WoodenSlab(BlockLegacyIdHelper::getWoodenSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType)); + self::register($idName("planks"), new Planks(WoodLikeBlockIdHelper::getPlanksIdentifier($woodType), $name . " Planks", $planksBreakInfo, $woodType)); + self::register($idName("fence"), new WoodenFence(WoodLikeBlockIdHelper::getFenceIdentifier($woodType), $name . " Fence", $planksBreakInfo, $woodType)); + self::register($idName("slab"), new WoodenSlab(WoodLikeBlockIdHelper::getSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType)); - self::register($idName("fence_gate"), new FenceGate(BlockLegacyIdHelper::getWoodenFenceGateIdentifier($woodType), $name . " Fence Gate", $planksBreakInfo, $woodType)); - self::register($idName("stairs"), new WoodenStairs(BlockLegacyIdHelper::getWoodenStairsIdentifier($woodType), $name . " Stairs", $planksBreakInfo, $woodType)); - self::register($idName("door"), new WoodenDoor(BlockLegacyIdHelper::getWoodenDoorIdentifier($woodType), $name . " Door", $woodenDoorBreakInfo, $woodType)); + self::register($idName("fence_gate"), new FenceGate(WoodLikeBlockIdHelper::getFenceGateIdentifier($woodType), $name . " Fence Gate", $planksBreakInfo, $woodType)); + self::register($idName("stairs"), new WoodenStairs(WoodLikeBlockIdHelper::getStairsIdentifier($woodType), $name . " Stairs", $planksBreakInfo, $woodType)); + self::register($idName("door"), new WoodenDoor(WoodLikeBlockIdHelper::getDoorIdentifier($woodType), $name . " Door", $woodenDoorBreakInfo, $woodType)); - self::register($idName("button"), new WoodenButton(BlockLegacyIdHelper::getWoodenButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); - self::register($idName("pressure_plate"), new WoodenPressurePlate(BlockLegacyIdHelper::getWoodenPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); - self::register($idName("trapdoor"), new WoodenTrapdoor(BlockLegacyIdHelper::getWoodenTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); + self::register($idName("button"), new WoodenButton(WoodLikeBlockIdHelper::getButtonIdentifier($woodType), $name . " Button", $woodenButtonBreakInfo, $woodType)); + self::register($idName("pressure_plate"), new WoodenPressurePlate(WoodLikeBlockIdHelper::getPressurePlateIdentifier($woodType), $name . " Pressure Plate", $woodenPressurePlateBreakInfo, $woodType)); + self::register($idName("trapdoor"), new WoodenTrapdoor(WoodLikeBlockIdHelper::getTrapdoorIdentifier($woodType), $name . " Trapdoor", $woodenDoorBreakInfo, $woodType)); - [$floorSignId, $wallSignId, $signAsItem] = BlockLegacyIdHelper::getWoodenSignInfo($woodType); + [$floorSignId, $wallSignId, $signAsItem] = WoodLikeBlockIdHelper::getSignInfo($woodType); self::register($idName("sign"), new FloorSign($floorSignId, $name . " Sign", $signBreakInfo, $woodType, $signAsItem)); self::register($idName("wall_sign"), new WallSign($wallSignId, $name . " Wall Sign", $signBreakInfo, $woodType, $signAsItem)); } diff --git a/src/block/BlockLegacyIdHelper.php b/src/block/WoodLikeBlockIdHelper.php similarity index 88% rename from src/block/BlockLegacyIdHelper.php rename to src/block/WoodLikeBlockIdHelper.php index 6d298ed17..a7aacb649 100644 --- a/src/block/BlockLegacyIdHelper.php +++ b/src/block/WoodLikeBlockIdHelper.php @@ -32,9 +32,20 @@ use pocketmine\block\utils\WoodType; use pocketmine\item\VanillaItems; use pocketmine\utils\AssumptionFailedError; -final class BlockLegacyIdHelper{ +/** + * All wood-like blocks have different IDs for different wood types. + * + * We can't make these dynamic, because some types of wood have different type properties (e.g. crimson and warped planks + * are not flammable, but all other planks are). + * + * In the future, it's entirely within the realm of reason that the other types of wood may differ in other ways, such + * as flammability, hardness, required tool tier, etc. + * Therefore, to stay on the safe side of Mojang, wood-like blocks have static types. This does unfortunately generate + * a lot of ugly code. + */ +final class WoodLikeBlockIdHelper{ - public static function getWoodenPlanksIdentifier(WoodType $type) : BID{ + public static function getPlanksIdentifier(WoodType $type) : BID{ return new BID(match($type->id()){ WoodType::OAK()->id() => Ids::OAK_PLANKS, WoodType::SPRUCE()->id() => Ids::SPRUCE_PLANKS, @@ -49,7 +60,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenFenceIdentifier(WoodType $type) : BID{ + public static function getFenceIdentifier(WoodType $type) : BID{ return new BID(match($type->id()){ WoodType::OAK()->id() => Ids::OAK_FENCE, WoodType::SPRUCE()->id() => Ids::SPRUCE_FENCE, @@ -64,7 +75,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenSlabIdentifier(WoodType $type) : BID{ + public static function getSlabIdentifier(WoodType $type) : BID{ return new BID(match($type->id()){ WoodType::OAK()->id() => Ids::OAK_SLAB, WoodType::SPRUCE()->id() => Ids::SPRUCE_SLAB, @@ -140,7 +151,7 @@ final class BlockLegacyIdHelper{ * @return BID[]|\Closure[] * @phpstan-return array{BID, BID, \Closure() : \pocketmine\item\Item} */ - public static function getWoodenSignInfo(WoodType $treeType) : array{ + public static function getSignInfo(WoodType $treeType) : array{ switch($treeType->id()){ case WoodType::OAK()->id(): return [ @@ -201,7 +212,7 @@ final class BlockLegacyIdHelper{ throw new AssumptionFailedError("Switch should cover all wood types"); } - public static function getWoodenTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_TRAPDOOR, WoodType::SPRUCE()->id() => Ids::SPRUCE_TRAPDOOR, @@ -216,7 +227,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenButtonIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getButtonIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_BUTTON, WoodType::SPRUCE()->id() => Ids::SPRUCE_BUTTON, @@ -231,7 +242,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenPressurePlateIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getPressurePlateIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_PRESSURE_PLATE, WoodType::SPRUCE()->id() => Ids::SPRUCE_PRESSURE_PLATE, @@ -246,7 +257,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenDoorIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getDoorIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_DOOR, WoodType::SPRUCE()->id() => Ids::SPRUCE_DOOR, @@ -261,7 +272,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenFenceGateIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getFenceGateIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_FENCE_GATE, WoodType::SPRUCE()->id() => Ids::SPRUCE_FENCE_GATE, @@ -276,7 +287,7 @@ final class BlockLegacyIdHelper{ }); } - public static function getWoodenStairsIdentifier(WoodType $treeType) : BlockIdentifier{ + public static function getStairsIdentifier(WoodType $treeType) : BlockIdentifier{ return new BID(match($treeType->id()){ WoodType::OAK()->id() => Ids::OAK_STAIRS, WoodType::SPRUCE()->id() => Ids::SPRUCE_STAIRS, From d8e77c1920ff13ed99edf122518e9bfd5a664117 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 4 May 2023 18:47:06 +0100 Subject: [PATCH 624/692] Tidy up crafting block registration according to data dumps from bds-mod-mapping, fletching tables have a blast resistance of 12.5, just like the others. --- src/block/VanillaBlocks.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index cbe373346..598793977 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -811,7 +811,6 @@ final class VanillaBlocks{ self::register("cobweb", new Cobweb(new BID(Ids::COBWEB), "Cobweb", new Info(new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1)))); self::register("cocoa_pod", new CocoaBlock(new BID(Ids::COCOA_POD), "Cocoa Block", new Info(BreakInfo::axe(0.2, null, 15.0)))); self::register("coral_block", new CoralBlock(new BID(Ids::CORAL_BLOCK), "Coral Block", new Info(BreakInfo::pickaxe(7.0, ToolTier::WOOD())))); - self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", new Info(BreakInfo::axe(2.5)))); self::register("daylight_sensor", new DaylightSensor(new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class), "Daylight Sensor", new Info(BreakInfo::axe(0.2)))); self::register("dead_bush", new DeadBush(new BID(Ids::DEAD_BUSH), "Dead Bush", new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS]))); self::register("detector_rail", new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail", $railBreakInfo)); @@ -839,7 +838,6 @@ final class VanillaBlocks{ self::register("ender_chest", new EnderChest(new BID(Ids::ENDER_CHEST, TileEnderChest::class), "Ender Chest", new Info(BreakInfo::pickaxe(22.5, ToolTier::WOOD(), 3000.0)))); self::register("farmland", new Farmland(new BID(Ids::FARMLAND), "Farmland", new Info(BreakInfo::shovel(0.6), [Tags::DIRT]))); self::register("fire", new Fire(new BID(Ids::FIRE), "Fire Block", new Info(BreakInfo::instant(), [Tags::FIRE]))); - self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", new Info(BreakInfo::axe(2.5, null, 2.5)))); $flowerTypeInfo = new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]); self::register("dandelion", new Flower(new BID(Ids::DANDELION), "Dandelion", $flowerTypeInfo)); @@ -909,7 +907,6 @@ final class VanillaBlocks{ self::register("lava", new Lava(new BID(Ids::LAVA), "Lava", new Info(BreakInfo::indestructible(500.0)))); self::register("lectern", new Lectern(new BID(Ids::LECTERN, TileLectern::class), "Lectern", new Info(BreakInfo::axe(2.0)))); self::register("lever", new Lever(new BID(Ids::LEVER), "Lever", new Info(new BreakInfo(0.5)))); - self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", new Info(BreakInfo::axe(2.5)))); self::register("magma", new Magma(new BID(Ids::MAGMA), "Magma Block", new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD())))); self::register("melon", new Melon(new BID(Ids::MELON), "Melon Block", new Info(BreakInfo::axe(1.0)))); self::register("melon_stem", new MelonStem(new BID(Ids::MELON_STEM), "Melon Stem", new Info(BreakInfo::instant()))); @@ -1423,6 +1420,9 @@ final class VanillaBlocks{ //TODO: this is the same for all wooden crafting blocks $craftingBlockBreakInfo = new Info(BreakInfo::axe(2.5)); self::register("cartography_table", new CartographyTable(new BID(Ids::CARTOGRAPHY_TABLE), "Cartography Table", $craftingBlockBreakInfo)); + self::register("crafting_table", new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table", $craftingBlockBreakInfo)); + self::register("fletching_table", new FletchingTable(new BID(Ids::FLETCHING_TABLE), "Fletching Table", $craftingBlockBreakInfo)); + self::register("loom", new Loom(new BID(Ids::LOOM), "Loom", $craftingBlockBreakInfo)); self::register("smithing_table", new SmithingTable(new BID(Ids::SMITHING_TABLE), "Smithing Table", $craftingBlockBreakInfo)); } From 4f32f5e0b71e2dc37d03671bde8ec87f036d4983 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 5 May 2023 13:41:06 +0100 Subject: [PATCH 625/692] BlockStateDictionaryEntry: encode property names as well as values sadly we need these to reconstruct the state upon deserialization --- src/network/mcpe/convert/BlockStateDictionaryEntry.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php index 57cc29c0c..8c6244da5 100644 --- a/src/network/mcpe/convert/BlockStateDictionaryEntry.php +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -25,9 +25,9 @@ namespace pocketmine\network\mcpe\convert; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\LittleEndianNbtSerializer; +use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\nbt\TreeRoot; -use function array_map; use function count; use function ksort; use const SORT_STRING; @@ -74,7 +74,7 @@ final class BlockStateDictionaryEntry{ if($rawProperties === ""){ return []; } - return array_map(fn(TreeRoot $root) => $root->getTag(), (new LittleEndianNbtSerializer())->readMultiple($rawProperties)); + return (new LittleEndianNbtSerializer())->read($rawProperties)->mustGetCompoundTag()->getValue(); } /** @@ -86,6 +86,10 @@ final class BlockStateDictionaryEntry{ } //TODO: make a more efficient encoding - NBT will do for now, but it's not very compact ksort($properties, SORT_STRING); - return (new LittleEndianNbtSerializer())->writeMultiple(array_map(fn(Tag $tag) => new TreeRoot($tag), $properties)); + $tag = new CompoundTag(); + foreach($properties as $k => $v){ + $tag->setTag($k, $v); + } + return (new LittleEndianNbtSerializer())->write(new TreeRoot($tag)); } } From 289ede669d71d20a9842c461e6d9bcb9ddc87a75 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 5 May 2023 14:47:23 +0100 Subject: [PATCH 626/692] BlockTranslator: use less ambiguous function names --- src/block/tile/FlowerPot.php | 2 +- src/entity/object/FallingBlock.php | 2 +- src/network/mcpe/convert/BlockTranslator.php | 6 +++--- src/network/mcpe/serializer/ChunkSerializer.php | 4 ++-- src/world/World.php | 4 ++-- src/world/particle/BlockBreakParticle.php | 2 +- src/world/particle/BlockPunchParticle.php | 2 +- src/world/particle/FloatingTextParticle.php | 2 +- src/world/particle/TerrainParticle.php | 2 +- src/world/sound/BlockBreakSound.php | 2 +- src/world/sound/BlockPlaceSound.php | 2 +- src/world/sound/BlockPunchSound.php | 2 +- src/world/sound/EntityLandSound.php | 2 +- src/world/sound/ItemUseOnBlockSound.php | 2 +- tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php | 2 +- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index 9a05a8cd0..5d114f663 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -95,7 +95,7 @@ class FlowerPot extends Spawnable{ protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ if($this->plant !== null){ - $nbt->setTag(self::TAG_PLANT_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->toStateData($this->plant->getStateId())->toNbt()); + $nbt->setTag(self::TAG_PLANT_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkStateData($this->plant->getStateId())->toNbt()); } } diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index 10f53fc5d..9d8af8934 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -197,7 +197,7 @@ class FallingBlock extends Entity{ protected function syncNetworkData(EntityMetadataCollection $properties) : void{ parent::syncNetworkData($properties); - $properties->setInt(EntityMetadataProperties::VARIANT, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId())); + $properties->setInt(EntityMetadataProperties::VARIANT, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId())); } public function getOffsetPosition(Vector3 $vector3) : Vector3{ diff --git a/src/network/mcpe/convert/BlockTranslator.php b/src/network/mcpe/convert/BlockTranslator.php index d3f07fb30..a14c89d13 100644 --- a/src/network/mcpe/convert/BlockTranslator.php +++ b/src/network/mcpe/convert/BlockTranslator.php @@ -54,7 +54,7 @@ final class BlockTranslator{ $this->fallbackStateData = $this->blockStateDictionary->generateDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); } - public function toRuntimeId(int $internalStateId) : int{ + public function internalIdToNetworkId(int $internalStateId) : int{ if(isset($this->networkIdCache[$internalStateId])){ return $this->networkIdCache[$internalStateId]; } @@ -78,11 +78,11 @@ final class BlockTranslator{ /** * Looks up the network state data associated with the given internal state ID. */ - public function toStateData(int $internalStateId) : BlockStateData{ + public function internalIdToNetworkStateData(int $internalStateId) : BlockStateData{ //we don't directly use the blockstate serializer here - we can't assume that the network blockstate NBT is the //same as the disk blockstate NBT, in case we decide to have different world version than network version (or in //case someone wants to implement multi version). - $networkRuntimeId = $this->toRuntimeId($internalStateId); + $networkRuntimeId = $this->internalIdToNetworkId($internalStateId); return $this->blockStateDictionary->generateDataFromStateId($networkRuntimeId) ?? throw new AssumptionFailedError("We just looked up this state ID, so it must exist"); } diff --git a/src/network/mcpe/serializer/ChunkSerializer.php b/src/network/mcpe/serializer/ChunkSerializer.php index 84682e114..afda6b7bb 100644 --- a/src/network/mcpe/serializer/ChunkSerializer.php +++ b/src/network/mcpe/serializer/ChunkSerializer.php @@ -109,7 +109,7 @@ final class ChunkSerializer{ $nbtSerializer = new NetworkNbtSerializer(); foreach($palette as $p){ //TODO: introduce a binary cache for this - $state = $blockStateDictionary->generateDataFromStateId($blockTranslator->toRuntimeId($p)); + $state = $blockStateDictionary->generateDataFromStateId($blockTranslator->internalIdToNetworkId($p)); if($state === null){ $state = $blockTranslator->getFallbackStateData(); } @@ -118,7 +118,7 @@ final class ChunkSerializer{ } }else{ foreach($palette as $p){ - $stream->put(Binary::writeUnsignedVarInt($blockTranslator->toRuntimeId($p) << 1)); + $stream->put(Binary::writeUnsignedVarInt($blockTranslator->internalIdToNetworkId($p) << 1)); } } } diff --git a/src/world/World.php b/src/world/World.php index a965974b7..8707fc47a 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1074,7 +1074,7 @@ class World implements ChunkManager{ $tile = $this->getTileAt($b->x, $b->y, $b->z); if($tile instanceof Spawnable && count($fakeStateProperties = $tile->getRenderUpdateBugWorkaroundStateProperties($fullBlock)) > 0){ - $originalStateData = $blockTranslator->toStateData($fullBlock->getStateId()); + $originalStateData = $blockTranslator->internalIdToNetworkStateData($fullBlock->getStateId()); $fakeStateData = new BlockStateData( $originalStateData->getName(), array_merge($originalStateData->getStates(), $fakeStateProperties), @@ -1089,7 +1089,7 @@ class World implements ChunkManager{ } $packets[] = UpdateBlockPacket::create( $blockPosition, - $blockTranslator->toRuntimeId($fullBlock->getStateId()), + $blockTranslator->internalIdToNetworkId($fullBlock->getStateId()), UpdateBlockPacket::FLAG_NETWORK, UpdateBlockPacket::DATA_LAYER_NORMAL ); diff --git a/src/world/particle/BlockBreakParticle.php b/src/world/particle/BlockBreakParticle.php index b9cec0e78..f3814c5fb 100644 --- a/src/world/particle/BlockBreakParticle.php +++ b/src/world/particle/BlockBreakParticle.php @@ -34,6 +34,6 @@ class BlockBreakParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->b->getStateId()), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_DESTROY, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/particle/BlockPunchParticle.php b/src/world/particle/BlockPunchParticle.php index c8affffc5..74478ca95 100644 --- a/src/world/particle/BlockPunchParticle.php +++ b/src/world/particle/BlockPunchParticle.php @@ -39,6 +39,6 @@ class BlockPunchParticle implements Particle{ ){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) | ($this->face << 24), $pos)]; + return [LevelEventPacket::create(LevelEvent::PARTICLE_PUNCH_BLOCK, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId()) | ($this->face << 24), $pos)]; } } diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index a50aeef3a..e8220d190 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -95,7 +95,7 @@ class FloatingTextParticle implements Particle{ EntityMetadataProperties::BOUNDING_BOX_WIDTH => new FloatMetadataProperty(0.0), EntityMetadataProperties::BOUNDING_BOX_HEIGHT => new FloatMetadataProperty(0.0), EntityMetadataProperties::NAMETAG => new StringMetadataProperty($name), - EntityMetadataProperties::VARIANT => new IntMetadataProperty(TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId(VanillaBlocks::AIR()->getStateId())), + EntityMetadataProperties::VARIANT => new IntMetadataProperty(TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId(VanillaBlocks::AIR()->getStateId())), EntityMetadataProperties::ALWAYS_SHOW_NAMETAG => new ByteMetadataProperty(1), ]; $p[] = AddActorPacket::create( diff --git a/src/world/particle/TerrainParticle.php b/src/world/particle/TerrainParticle.php index 0eb1f0494..b0ac9debd 100644 --- a/src/world/particle/TerrainParticle.php +++ b/src/world/particle/TerrainParticle.php @@ -33,6 +33,6 @@ class TerrainParticle implements Particle{ public function __construct(private Block $b){} public function encode(Vector3 $pos) : array{ - return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->b->getStateId()), $pos)]; + return [LevelEventPacket::standardParticle(ParticleIds::TERRAIN, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->b->getStateId()), $pos)]; } } diff --git a/src/world/sound/BlockBreakSound.php b/src/world/sound/BlockBreakSound.php index 6cdc5471e..ba3ec893e 100644 --- a/src/world/sound/BlockBreakSound.php +++ b/src/world/sound/BlockBreakSound.php @@ -33,6 +33,6 @@ class BlockBreakSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::BREAK, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPlaceSound.php b/src/world/sound/BlockPlaceSound.php index 80704a957..5efe8a384 100644 --- a/src/world/sound/BlockPlaceSound.php +++ b/src/world/sound/BlockPlaceSound.php @@ -33,6 +33,6 @@ class BlockPlaceSound implements Sound{ public function __construct(private Block $block){} public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()))]; + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::PLACE, $pos, false, TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId()))]; } } diff --git a/src/world/sound/BlockPunchSound.php b/src/world/sound/BlockPunchSound.php index 33754b93e..8fee7875b 100644 --- a/src/world/sound/BlockPunchSound.php +++ b/src/world/sound/BlockPunchSound.php @@ -40,7 +40,7 @@ class BlockPunchSound implements Sound{ LevelSoundEvent::HIT, $pos, false, - TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) + TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId()) )]; } } diff --git a/src/world/sound/EntityLandSound.php b/src/world/sound/EntityLandSound.php index dd23b571f..998c5ed02 100644 --- a/src/world/sound/EntityLandSound.php +++ b/src/world/sound/EntityLandSound.php @@ -43,7 +43,7 @@ class EntityLandSound implements Sound{ return [LevelSoundEventPacket::create( LevelSoundEvent::LAND, $pos, - TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->blockLandedOn->getStateId()), + TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->blockLandedOn->getStateId()), $this->entity::getNetworkTypeId(), false, //TODO: does isBaby have any relevance here? false diff --git a/src/world/sound/ItemUseOnBlockSound.php b/src/world/sound/ItemUseOnBlockSound.php index 4ab7e10a0..7daba166e 100644 --- a/src/world/sound/ItemUseOnBlockSound.php +++ b/src/world/sound/ItemUseOnBlockSound.php @@ -42,7 +42,7 @@ final class ItemUseOnBlockSound implements Sound{ LevelSoundEvent::ITEM_USE_ON, $pos, false, - TypeConverter::getInstance()->getBlockTranslator()->toRuntimeId($this->block->getStateId()) + TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId()) )]; } } diff --git a/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php b/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php index f2dc6ccea..ef8e297c4 100644 --- a/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php +++ b/tests/phpunit/network/mcpe/convert/BlockTranslatorTest.php @@ -34,7 +34,7 @@ class BlockTranslatorTest extends TestCase{ public function testAllBlockStatesSerialize() : void{ $blockTranslator = TypeConverter::getInstance()->getBlockTranslator(); foreach(RuntimeBlockStateRegistry::getInstance()->getAllKnownStates() as $state){ - $blockTranslator->toRuntimeId($state->getStateId()); + $blockTranslator->internalIdToNetworkId($state->getStateId()); } } } From 09e823e304074da2eacccafa4aa8405ff1be9f66 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 5 May 2023 14:52:21 +0100 Subject: [PATCH 627/692] BlockStateDictionary: remove useless indirection --- .../mcpe/convert/BlockStateDictionary.php | 32 +++++++- .../mcpe/convert/BlockStateLookupCache.php | 78 ------------------- 2 files changed, 29 insertions(+), 81 deletions(-) delete mode 100644 src/network/mcpe/convert/BlockStateLookupCache.php diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index 834390538..e52c7d3d3 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -28,7 +28,10 @@ use pocketmine\data\bedrock\block\BlockTypeNames; use pocketmine\nbt\NbtDataException; use pocketmine\nbt\TreeRoot; use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer; +use pocketmine\utils\Utils; +use function array_key_first; use function array_map; +use function count; use function get_debug_type; use function is_array; use function is_int; @@ -40,8 +43,12 @@ use const JSON_THROW_ON_ERROR; * Handles translation of network block runtime IDs into blockstate data, and vice versa */ final class BlockStateDictionary{ + /** + * @var int[][]|int[] + * @phpstan-var array|int> + */ + private array $stateDataToStateIdLookup = []; - private BlockStateLookupCache $stateDataToStateIdLookupCache; /** * @var int[][]|null * @phpstan-var array>|null @@ -56,7 +63,19 @@ final class BlockStateDictionary{ public function __construct( private array $states ){ - $this->stateDataToStateIdLookupCache = new BlockStateLookupCache($this->states); + $table = []; + foreach($this->states as $stateId => $stateNbt){ + $table[$stateNbt->getStateName()][$stateNbt->getRawStateProperties()] = $stateId; + } + + //setup fast path for stateless blocks + foreach(Utils::stringifyKeys($table) as $name => $stateIds){ + if(count($stateIds) === 1){ + $this->stateDataToStateIdLookup[$name] = $stateIds[array_key_first($stateIds)]; + }else{ + $this->stateDataToStateIdLookup[$name] = $stateIds; + } + } } /** @@ -85,7 +104,14 @@ final class BlockStateDictionary{ * Returns null if there were no matches. */ public function lookupStateIdFromData(BlockStateData $data) : ?int{ - return $this->stateDataToStateIdLookupCache->lookupStateId($data); + $name = $data->getName(); + + $lookup = $this->stateDataToStateIdLookup[$name] ?? null; + return match(true){ + $lookup === null => null, + is_int($lookup) => $lookup, + is_array($lookup) => $lookup[BlockStateDictionaryEntry::encodeStateProperties($data->getStates())] ?? null + }; } /** diff --git a/src/network/mcpe/convert/BlockStateLookupCache.php b/src/network/mcpe/convert/BlockStateLookupCache.php deleted file mode 100644 index 16cf0ef0e..000000000 --- a/src/network/mcpe/convert/BlockStateLookupCache.php +++ /dev/null @@ -1,78 +0,0 @@ -|int> - */ - private array $nameToNetworkIdsLookup = []; - - /** - * @param BlockStateDictionaryEntry[] $blockStates - * @phpstan-param list $blockStates - */ - public function __construct(array $blockStates){ - $table = []; - foreach($blockStates as $stateId => $stateNbt){ - $table[$stateNbt->getStateName()][$stateNbt->getRawStateProperties()] = $stateId; - } - - //setup fast path for stateless blocks - foreach(Utils::stringifyKeys($table) as $name => $stateIds){ - if(count($stateIds) === 1){ - $this->nameToNetworkIdsLookup[$name] = $stateIds[array_key_first($stateIds)]; - }else{ - $this->nameToNetworkIdsLookup[$name] = $stateIds; - } - } - } - - /** - * Searches for the appropriate state ID which matches the given blockstate NBT. - * Returns null if there were no matches. - */ - public function lookupStateId(BlockStateData $data) : ?int{ - $name = $data->getName(); - - $lookup = $this->nameToNetworkIdsLookup[$name] ?? null; - return match(true){ - $lookup === null => null, - is_int($lookup) => $lookup, - is_array($lookup) => $lookup[BlockStateDictionaryEntry::encodeStateProperties($data->getStates())] ?? null - }; - } -} From f2c6a75145ce62645122ed6055abf1105bce5413 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 5 May 2023 15:26:54 +0100 Subject: [PATCH 628/692] BlockStateDictionary: reduce memory footprint of id/meta -> state ID lookup by >60% the aim of the game here is to avoid allocating lots of tiny arrays, which have a terrible overhead:useful-data ratio. This reduces the footprint of the mapping from 1.6 MB to 600 KB. --- .../mcpe/convert/BlockStateDictionary.php | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index e52c7d3d3..d20448f95 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -51,7 +51,7 @@ final class BlockStateDictionary{ /** * @var int[][]|null - * @phpstan-var array>|null + * @phpstan-var array|int>|null */ private ?array $idMetaToStateIdLookupCache = null; @@ -80,15 +80,25 @@ final class BlockStateDictionary{ /** * @return int[][] - * @phpstan-return array> + * @phpstan-return array|int> */ private function getIdMetaToStateIdLookup() : array{ if($this->idMetaToStateIdLookupCache === null){ + $table = []; //TODO: if we ever allow mutating the dictionary, this would need to be rebuilt on modification - $this->idMetaToStateIdLookupCache = []; foreach($this->states as $i => $state){ - $this->idMetaToStateIdLookupCache[$state->getMeta()][$state->getStateName()] = $i; + $table[$state->getStateName()][$state->getMeta()] = $i; + } + + $this->idMetaToStateIdLookupCache = []; + foreach(Utils::stringifyKeys($table) as $name => $metaToStateId){ + //if only one meta value exists + if(count($metaToStateId) === 1){ + $this->idMetaToStateIdLookupCache[$name] = $metaToStateId[array_key_first($metaToStateId)]; + }else{ + $this->idMetaToStateIdLookupCache[$name] = $metaToStateId; + } } } @@ -127,7 +137,12 @@ final class BlockStateDictionary{ * This is used for deserializing crafting recipe inputs. */ public function lookupStateIdFromIdMeta(string $id, int $meta) : ?int{ - return $this->getIdMetaToStateIdLookup()[$meta][$id] ?? null; + $metas = $this->getIdMetaToStateIdLookup()[$id] ?? null; + return match(true){ + $metas === null => null, + is_int($metas) => $metas, + is_array($metas) => $metas[$meta] ?? null + }; } /** From 8a374df80191e9830f11d5d5db7b13e21da86dbe Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 5 May 2023 17:02:50 +0100 Subject: [PATCH 629/692] BlockTranslator: remove useless call to generateDataFromStateId() BlockStateDictionary doesn't retain BlockStateData anymore, so this optimisation is just wasting CPU cycles. --- src/network/mcpe/convert/BlockTranslator.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/network/mcpe/convert/BlockTranslator.php b/src/network/mcpe/convert/BlockTranslator.php index a14c89d13..4113f86ce 100644 --- a/src/network/mcpe/convert/BlockTranslator.php +++ b/src/network/mcpe/convert/BlockTranslator.php @@ -47,11 +47,9 @@ final class BlockTranslator{ private BlockStateDictionary $blockStateDictionary, private BlockStateSerializer $blockStateSerializer ){ - $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData( - BlockStateData::current(BlockTypeNames::INFO_UPDATE, []) - ) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); - //lookup the state data from the dictionary to avoid keeping two copies of the same data around - $this->fallbackStateData = $this->blockStateDictionary->generateDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); + $this->fallbackStateData = BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); + $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData($this->fallbackStateData) ?? + throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); } public function internalIdToNetworkId(int $internalStateId) : int{ From 7cdf6b094655bce88a2c78f75247b0649875e4e4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 6 May 2023 17:29:59 +0100 Subject: [PATCH 630/692] Fixed merge error --- src/inventory/SimpleInventory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inventory/SimpleInventory.php b/src/inventory/SimpleInventory.php index 19fd6da34..4b44326fa 100644 --- a/src/inventory/SimpleInventory.php +++ b/src/inventory/SimpleInventory.php @@ -86,7 +86,7 @@ class SimpleInventory extends BaseInventory{ protected function getMatchingItemCount(int $slot, Item $test, bool $checkTags) : int{ $slotItem = $this->slots[$slot]; - return $slotItem !== null && $slotItem->equals($test, $checkDamage, $checkTags) ? $slotItem->getCount() : 0; + return $slotItem !== null && $slotItem->equals($test, true, $checkTags) ? $slotItem->getCount() : 0; } public function isSlotEmpty(int $index) : bool{ From e0a6ec0c24281f81d78e23a48f9e303bbd8282cb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 6 May 2023 17:47:09 +0100 Subject: [PATCH 631/692] Start deglobalizing TypeConverter there's a bunch of places we can't reach with this right now: - particles - sounds - tile NBT - entity metadata - crafting data cache - chunk encoding - world block update encoding this is a work in progress, but ultimately we want to get rid of these singletons entirely. --- src/Server.php | 14 ++++++++------ src/entity/Human.php | 3 ++- src/entity/object/ItemEntity.php | 5 +++-- src/network/mcpe/InventoryManager.php | 13 +++++++------ src/network/mcpe/NetworkSession.php | 5 ++++- .../mcpe/StandardEntityEventBroadcaster.php | 9 +++++---- src/network/mcpe/handler/InGamePacketHandler.php | 4 ++-- .../mcpe/handler/PreSpawnPacketHandler.php | 8 +++++--- src/network/mcpe/raklib/RakLibInterface.php | 15 ++++++++++++++- 9 files changed, 50 insertions(+), 26 deletions(-) diff --git a/src/Server.php b/src/Server.php index 7bc67aa38..53c3c05a9 100644 --- a/src/Server.php +++ b/src/Server.php @@ -1174,11 +1174,12 @@ class Server{ bool $useQuery, PacketBroadcaster $packetBroadcaster, EntityEventBroadcaster $entityEventBroadcaster, - PacketSerializerContext $packetSerializerContext + PacketSerializerContext $packetSerializerContext, + TypeConverter $typeConverter ) : bool{ $prettyIp = $ipV6 ? "[$ip]" : $ip; try{ - $rakLibRegistered = $this->network->registerInterface(new RakLibInterface($this, $ip, $port, $ipV6, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext)); + $rakLibRegistered = $this->network->registerInterface(new RakLibInterface($this, $ip, $port, $ipV6, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext, $typeConverter)); }catch(NetworkInterfaceStartException $e){ $this->logger->emergency($this->language->translate(KnownTranslationFactory::pocketmine_server_networkStartFailed( $ip, @@ -1204,15 +1205,16 @@ class Server{ private function startupPrepareNetworkInterfaces() : bool{ $useQuery = $this->configGroup->getConfigBool("enable-query", true); - $packetSerializerContext = new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()); + $typeConverter = TypeConverter::getInstance(); + $packetSerializerContext = new PacketSerializerContext($typeConverter->getItemTypeDictionary()); $packetBroadcaster = new StandardPacketBroadcaster($this, $packetSerializerContext); - $entityEventBroadcaster = new StandardEntityEventBroadcaster($packetBroadcaster); + $entityEventBroadcaster = new StandardEntityEventBroadcaster($packetBroadcaster, $typeConverter); if( - !$this->startupPrepareConnectableNetworkInterfaces($this->getIp(), $this->getPort(), false, $useQuery, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext) || + !$this->startupPrepareConnectableNetworkInterfaces($this->getIp(), $this->getPort(), false, $useQuery, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext, $typeConverter) || ( $this->configGroup->getConfigBool("enable-ipv6", true) && - !$this->startupPrepareConnectableNetworkInterfaces($this->getIpV6(), $this->getPortV6(), true, $useQuery, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext) + !$this->startupPrepareConnectableNetworkInterfaces($this->getIpV6(), $this->getPortV6(), true, $useQuery, $packetBroadcaster, $entityEventBroadcaster, $packetSerializerContext, $typeConverter) ) ){ return false; diff --git a/src/entity/Human.php b/src/entity/Human.php index 38e69724b..840ae7fc9 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -474,6 +474,7 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ $networkSession->sendDataPacket(PlayerListPacket::add([PlayerListEntry::createAdditionEntry($this->uuid, $this->id, $this->getName(), SkinAdapterSingleton::get()->toSkinData($this->skin))])); } + $typeConverter = $networkSession->getTypeConverter(); $networkSession->sendDataPacket(AddPlayerPacket::create( $this->getUniqueId(), $this->getName(), @@ -484,7 +485,7 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ $this->location->pitch, $this->location->yaw, $this->location->yaw, //TODO: head yaw - ItemStackWrapper::legacy(TypeConverter::getInstance()->coreItemStackToNet($this->getInventory()->getItemInHand())), + ItemStackWrapper::legacy($typeConverter->coreItemStackToNet($this->getInventory()->getItemInHand())), GameMode::SURVIVAL, $this->getAllNetworkData(), new PropertySyncData([], []), diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index 81682d3bb..3c95a9c45 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -285,10 +285,11 @@ class ItemEntity extends Entity{ } protected function sendSpawnPacket(Player $player) : void{ - $player->getNetworkSession()->sendDataPacket(AddItemActorPacket::create( + $networkSession = $player->getNetworkSession(); + $networkSession->sendDataPacket(AddItemActorPacket::create( $this->getId(), //TODO: entity unique ID $this->getId(), - ItemStackWrapper::legacy(TypeConverter::getInstance()->coreItemStackToNet($this->getItem())), + ItemStackWrapper::legacy($networkSession->getTypeConverter()->coreItemStackToNet($this->getItem())), $this->location->asVector3(), $this->getMotion(), $this->getAllNetworkData(), diff --git a/src/network/mcpe/InventoryManager.php b/src/network/mcpe/InventoryManager.php index fc7c6641f..d28235821 100644 --- a/src/network/mcpe/InventoryManager.php +++ b/src/network/mcpe/InventoryManager.php @@ -223,10 +223,11 @@ class InventoryManager{ } public function addTransactionPredictedSlotChanges(InventoryTransaction $tx) : void{ + $typeConverter = $this->session->getTypeConverter(); foreach($tx->getActions() as $action){ if($action instanceof SlotChangeAction){ //TODO: ItemStackRequestExecutor can probably build these predictions with much lower overhead - $itemStack = TypeConverter::getInstance()->coreItemStackToNet($action->getTargetItem()); + $itemStack = $typeConverter->coreItemStackToNet($action->getTargetItem()); $this->addPredictedSlotChange($action->getInventory(), $action->getSlot(), $itemStack); } } @@ -421,7 +422,7 @@ class InventoryManager{ //is cleared before removal. return; } - $currentItem = TypeConverter::getInstance()->coreItemStackToNet($inventory->getItem($slot)); + $currentItem = $this->session->getTypeConverter()->coreItemStackToNet($inventory->getItem($slot)); $clientSideItem = $inventoryEntry->predictions[$slot] ?? null; if($clientSideItem === null || !$clientSideItem->equals($currentItem)){ //no prediction or incorrect - do not associate this with the currently active itemstack request @@ -497,7 +498,7 @@ class InventoryManager{ $entry->predictions = []; $entry->pendingSyncs = []; $contents = []; - $typeConverter = TypeConverter::getInstance(); + $typeConverter = $this->session->getTypeConverter(); foreach($inventory->getContents(true) as $slot => $item){ $itemStack = $typeConverter->coreItemStackToNet($item); $info = $this->trackItemStack($entry, $slot, $itemStack, null); @@ -532,7 +533,7 @@ class InventoryManager{ } public function syncMismatchedPredictedSlotChanges() : void{ - $typeConverter = TypeConverter::getInstance(); + $typeConverter = $this->session->getTypeConverter(); foreach($this->inventories as $entry){ $inventory = $entry->inventory; foreach($entry->predictions as $slot => $expectedItem){ @@ -595,7 +596,7 @@ class InventoryManager{ $this->session->sendDataPacket(MobEquipmentPacket::create( $this->player->getId(), - new ItemStackWrapper($itemStackInfo->getStackId(), TypeConverter::getInstance()->coreItemStackToNet($playerInventory->getItemInHand())), + new ItemStackWrapper($itemStackInfo->getStackId(), $this->session->getTypeConverter()->coreItemStackToNet($playerInventory->getItemInHand())), $selected, $selected, ContainerIds::INVENTORY @@ -605,7 +606,7 @@ class InventoryManager{ } public function syncCreative() : void{ - $typeConverter = TypeConverter::getInstance(); + $typeConverter = $this->session->getTypeConverter(); $entries = []; if(!$this->player->isSpectator()){ diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index abab59825..60b0efc66 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -182,6 +182,7 @@ class NetworkSession{ private PacketBroadcaster $broadcaster, private EntityEventBroadcaster $entityEventBroadcaster, private Compressor $compressor, + private TypeConverter $typeConverter, private string $ip, private int $port ){ @@ -538,6 +539,8 @@ class NetworkSession{ return $this->compressor; } + public function getTypeConverter() : TypeConverter{ return $this->typeConverter; } + public function queueCompressed(CompressBatchPromise $payload, bool $immediate = false) : void{ Timings::$playerNetworkSend->startTiming(); try{ @@ -887,7 +890,7 @@ class NetworkSession{ } public function syncGameMode(GameMode $mode, bool $isRollback = false) : void{ - $this->sendDataPacket(SetPlayerGameTypePacket::create(TypeConverter::getInstance()->coreGameModeToProtocol($mode))); + $this->sendDataPacket(SetPlayerGameTypePacket::create($this->typeConverter->coreGameModeToProtocol($mode))); if($this->player !== null){ $this->syncAbilities($this->player); $this->syncAdventureSettings(); //TODO: we might be able to do this with the abilities packet alone diff --git a/src/network/mcpe/StandardEntityEventBroadcaster.php b/src/network/mcpe/StandardEntityEventBroadcaster.php index da0fac6ef..30ac628f6 100644 --- a/src/network/mcpe/StandardEntityEventBroadcaster.php +++ b/src/network/mcpe/StandardEntityEventBroadcaster.php @@ -51,7 +51,8 @@ use const SORT_NUMERIC; final class StandardEntityEventBroadcaster implements EntityEventBroadcaster{ public function __construct( - private StandardPacketBroadcaster $broadcaster + private StandardPacketBroadcaster $broadcaster, + private TypeConverter $typeConverter ){} /** @@ -103,7 +104,7 @@ final class StandardEntityEventBroadcaster implements EntityEventBroadcaster{ $inv = $mob->getInventory(); $this->sendDataPacket($recipients, MobEquipmentPacket::create( $mob->getId(), - ItemStackWrapper::legacy(TypeConverter::getInstance()->coreItemStackToNet($inv->getItemInHand())), + ItemStackWrapper::legacy($this->typeConverter->coreItemStackToNet($inv->getItemInHand())), $inv->getHeldItemIndex(), $inv->getHeldItemIndex(), ContainerIds::INVENTORY @@ -114,7 +115,7 @@ final class StandardEntityEventBroadcaster implements EntityEventBroadcaster{ $inv = $mob->getOffHandInventory(); $this->sendDataPacket($recipients, MobEquipmentPacket::create( $mob->getId(), - ItemStackWrapper::legacy(TypeConverter::getInstance()->coreItemStackToNet($inv->getItem(0))), + ItemStackWrapper::legacy($this->typeConverter->coreItemStackToNet($inv->getItem(0))), 0, 0, ContainerIds::OFFHAND @@ -123,7 +124,7 @@ final class StandardEntityEventBroadcaster implements EntityEventBroadcaster{ public function onMobArmorChange(array $recipients, Living $mob) : void{ $inv = $mob->getArmorInventory(); - $converter = TypeConverter::getInstance(); + $converter = $this->typeConverter; $this->sendDataPacket($recipients, MobArmorEquipmentPacket::create( $mob->getId(), ItemStackWrapper::legacy($converter->coreItemStackToNet($inv->getHelmet())), diff --git a/src/network/mcpe/handler/InGamePacketHandler.php b/src/network/mcpe/handler/InGamePacketHandler.php index d8b6caf1f..a062dfff9 100644 --- a/src/network/mcpe/handler/InGamePacketHandler.php +++ b/src/network/mcpe/handler/InGamePacketHandler.php @@ -443,7 +443,7 @@ class InGamePacketHandler extends PacketHandler{ if($sourceSlotItem->getCount() < $droppedCount){ return false; } - $serverItemStack = TypeConverter::getInstance()->coreItemStackToNet($sourceSlotItem); + $serverItemStack = $this->session->getTypeConverter()->coreItemStackToNet($sourceSlotItem); //because the client doesn't tell us the expected itemstack ID, we have to deep-compare our known //itemstack info with the one the client sent. This is costly, but we don't have any other option :( if(!$serverItemStack->equals($clientItemStack)){ @@ -776,7 +776,7 @@ class InGamePacketHandler extends PacketHandler{ } public function handleSetPlayerGameType(SetPlayerGameTypePacket $packet) : bool{ - $gameMode = TypeConverter::getInstance()->protocolGameModeToCore($packet->gamemode); + $gameMode = $this->session->getTypeConverter()->protocolGameModeToCore($packet->gamemode); if($gameMode === null || !$gameMode->equals($this->player->getGamemode())){ //Set this back to default. TODO: handle this properly $this->session->syncGameMode($this->player->getGamemode(), true); diff --git a/src/network/mcpe/handler/PreSpawnPacketHandler.php b/src/network/mcpe/handler/PreSpawnPacketHandler.php index 0ba686bed..9e0adf5e1 100644 --- a/src/network/mcpe/handler/PreSpawnPacketHandler.php +++ b/src/network/mcpe/handler/PreSpawnPacketHandler.php @@ -65,11 +65,13 @@ class PreSpawnPacketHandler extends PacketHandler{ $location = $this->player->getLocation(); $world = $location->getWorld(); + $typeConverter = $this->session->getTypeConverter(); + $this->session->getLogger()->debug("Preparing StartGamePacket"); $levelSettings = new LevelSettings(); $levelSettings->seed = -1; $levelSettings->spawnSettings = new SpawnSettings(SpawnSettings::BIOME_TYPE_DEFAULT, "", DimensionIds::OVERWORLD); //TODO: implement this properly - $levelSettings->worldGamemode = TypeConverter::getInstance()->coreGameModeToProtocol($this->server->getGamemode()); + $levelSettings->worldGamemode = $typeConverter->coreGameModeToProtocol($this->server->getGamemode()); $levelSettings->difficulty = $world->getDifficulty(); $levelSettings->spawnPosition = BlockPosition::fromVector3($world->getSpawnLocation()); $levelSettings->hasAchievementsDisabled = true; @@ -86,7 +88,7 @@ class PreSpawnPacketHandler extends PacketHandler{ $this->session->sendDataPacket(StartGamePacket::create( $this->player->getId(), $this->player->getId(), - TypeConverter::getInstance()->coreGameModeToProtocol($this->player->getGamemode()), + $typeConverter->coreGameModeToProtocol($this->player->getGamemode()), $this->player->getOffsetPosition($location), $location->pitch, $location->yaw, @@ -107,7 +109,7 @@ class PreSpawnPacketHandler extends PacketHandler{ false, [], 0, - TypeConverter::getInstance()->getItemTypeDictionary()->getEntries(), + $typeConverter->getItemTypeDictionary()->getEntries(), )); $this->session->getLogger()->debug("Sending actor identifiers"); diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 82d881239..6a9f0f0b0 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\raklib; use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\AdvancedNetworkInterface; use pocketmine\network\mcpe\compression\ZlibCompressor; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\PacketBroadcaster; @@ -82,12 +83,23 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ private PacketBroadcaster $packetBroadcaster; private EntityEventBroadcaster $entityEventBroadcaster; private PacketSerializerContext $packetSerializerContext; + private TypeConverter $typeConverter; - public function __construct(Server $server, string $ip, int $port, bool $ipV6, PacketBroadcaster $packetBroadcaster, EntityEventBroadcaster $entityEventBroadcaster, PacketSerializerContext $packetSerializerContext){ + public function __construct( + Server $server, + string $ip, + int $port, + bool $ipV6, + PacketBroadcaster $packetBroadcaster, + EntityEventBroadcaster $entityEventBroadcaster, + PacketSerializerContext $packetSerializerContext, + TypeConverter $typeConverter + ){ $this->server = $server; $this->packetBroadcaster = $packetBroadcaster; $this->packetSerializerContext = $packetSerializerContext; $this->entityEventBroadcaster = $entityEventBroadcaster; + $this->typeConverter = $typeConverter; $this->rakServerId = mt_rand(0, PHP_INT_MAX); @@ -183,6 +195,7 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $this->packetBroadcaster, $this->entityEventBroadcaster, ZlibCompressor::getInstance(), //TODO: this shouldn't be hardcoded, but we might need the RakNet protocol version to select it + $this->typeConverter, $address, $port ); From ed11fd5a83331a07ef76e4ed1524cfbca8b5fa7b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 6 May 2023 17:51:00 +0100 Subject: [PATCH 632/692] CS again... --- src/entity/Human.php | 1 - src/entity/object/ItemEntity.php | 1 - src/network/mcpe/InventoryManager.php | 1 - src/network/mcpe/handler/InGamePacketHandler.php | 1 - src/network/mcpe/handler/PreSpawnPacketHandler.php | 1 - 5 files changed, 5 deletions(-) diff --git a/src/entity/Human.php b/src/entity/Human.php index 840ae7fc9..7733e995f 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -47,7 +47,6 @@ use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ListTag; use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\convert\SkinAdapterSingleton; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkBroadcastUtils; use pocketmine\network\mcpe\protocol\AddPlayerPacket; diff --git a/src/entity/object/ItemEntity.php b/src/entity/object/ItemEntity.php index 3c95a9c45..6e9fdcdcf 100644 --- a/src/entity/object/ItemEntity.php +++ b/src/entity/object/ItemEntity.php @@ -34,7 +34,6 @@ use pocketmine\event\entity\ItemSpawnEvent; use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkBroadcastUtils; use pocketmine\network\mcpe\protocol\AddItemActorPacket; diff --git a/src/network/mcpe/InventoryManager.php b/src/network/mcpe/InventoryManager.php index d28235821..92b384339 100644 --- a/src/network/mcpe/InventoryManager.php +++ b/src/network/mcpe/InventoryManager.php @@ -40,7 +40,6 @@ use pocketmine\inventory\Inventory; use pocketmine\inventory\transaction\action\SlotChangeAction; use pocketmine\inventory\transaction\InventoryTransaction; use pocketmine\item\Item; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\ClientboundPacket; use pocketmine\network\mcpe\protocol\ContainerClosePacket; use pocketmine\network\mcpe\protocol\ContainerOpenPacket; diff --git a/src/network/mcpe/handler/InGamePacketHandler.php b/src/network/mcpe/handler/InGamePacketHandler.php index a062dfff9..d73226697 100644 --- a/src/network/mcpe/handler/InGamePacketHandler.php +++ b/src/network/mcpe/handler/InGamePacketHandler.php @@ -46,7 +46,6 @@ use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\StringTag; use pocketmine\network\mcpe\convert\SkinAdapterSingleton; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\InventoryManager; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\ActorEventPacket; diff --git a/src/network/mcpe/handler/PreSpawnPacketHandler.php b/src/network/mcpe/handler/PreSpawnPacketHandler.php index 9e0adf5e1..036f9aed1 100644 --- a/src/network/mcpe/handler/PreSpawnPacketHandler.php +++ b/src/network/mcpe/handler/PreSpawnPacketHandler.php @@ -26,7 +26,6 @@ namespace pocketmine\network\mcpe\handler; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\cache\CraftingDataCache; use pocketmine\network\mcpe\cache\StaticPacketCache; -use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\InventoryManager; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\PlayerAuthInputPacket; From 926f68d8c5d0901337c6e93c4ef055a29a179893 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 6 May 2023 17:53:24 +0100 Subject: [PATCH 633/692] Move SkinAdapter under TypeConverter, remove SkinAdapterSingleton this is legacy cruft from PM3, which didn't have TypeConverter or SingletonTrait. --- src/entity/Human.php | 8 ++-- src/network/mcpe/NetworkSession.php | 5 +-- .../mcpe/convert/SkinAdapterSingleton.php | 42 ------------------- src/network/mcpe/convert/TypeConverter.php | 10 +++++ .../mcpe/handler/InGamePacketHandler.php | 3 +- .../mcpe/handler/LoginPacketHandler.php | 3 +- 6 files changed, 18 insertions(+), 53 deletions(-) delete mode 100644 src/network/mcpe/convert/SkinAdapterSingleton.php diff --git a/src/entity/Human.php b/src/entity/Human.php index 7733e995f..ae1aa2464 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -46,7 +46,7 @@ use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\IntTag; use pocketmine\nbt\tag\ListTag; use pocketmine\nbt\tag\StringTag; -use pocketmine\network\mcpe\convert\SkinAdapterSingleton; +use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\EntityEventBroadcaster; use pocketmine\network\mcpe\NetworkBroadcastUtils; use pocketmine\network\mcpe\protocol\AddPlayerPacket; @@ -166,7 +166,7 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ */ public function sendSkin(?array $targets = null) : void{ NetworkBroadcastUtils::broadcastPackets($targets ?? $this->hasSpawned, [ - PlayerSkinPacket::create($this->getUniqueId(), "", "", SkinAdapterSingleton::get()->toSkinData($this->skin)) + PlayerSkinPacket::create($this->getUniqueId(), "", "", TypeConverter::getInstance()->getSkinAdapter()->toSkinData($this->skin)) ]); } @@ -469,11 +469,11 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ protected function sendSpawnPacket(Player $player) : void{ $networkSession = $player->getNetworkSession(); + $typeConverter = $networkSession->getTypeConverter(); if(!($this instanceof Player)){ - $networkSession->sendDataPacket(PlayerListPacket::add([PlayerListEntry::createAdditionEntry($this->uuid, $this->id, $this->getName(), SkinAdapterSingleton::get()->toSkinData($this->skin))])); + $networkSession->sendDataPacket(PlayerListPacket::add([PlayerListEntry::createAdditionEntry($this->uuid, $this->id, $this->getName(), $typeConverter->getSkinAdapter()->toSkinData($this->skin))])); } - $typeConverter = $networkSession->getTypeConverter(); $networkSession->sendDataPacket(AddPlayerPacket::create( $this->getUniqueId(), $this->getName(), diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 60b0efc66..6ca258bf3 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -38,7 +38,6 @@ use pocketmine\network\mcpe\cache\ChunkCache; use pocketmine\network\mcpe\compression\CompressBatchPromise; use pocketmine\network\mcpe\compression\Compressor; use pocketmine\network\mcpe\compression\DecompressionException; -use pocketmine\network\mcpe\convert\SkinAdapterSingleton; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\encryption\DecryptionException; use pocketmine\network\mcpe\encryption\EncryptionContext; @@ -1108,12 +1107,12 @@ class NetworkSession{ */ public function syncPlayerList(array $players) : void{ $this->sendDataPacket(PlayerListPacket::add(array_map(function(Player $player) : PlayerListEntry{ - return PlayerListEntry::createAdditionEntry($player->getUniqueId(), $player->getId(), $player->getDisplayName(), SkinAdapterSingleton::get()->toSkinData($player->getSkin()), $player->getXuid()); + return PlayerListEntry::createAdditionEntry($player->getUniqueId(), $player->getId(), $player->getDisplayName(), TypeConverter::getInstance()->getSkinAdapter()->toSkinData($player->getSkin()), $player->getXuid()); }, $players))); } public function onPlayerAdded(Player $p) : void{ - $this->sendDataPacket(PlayerListPacket::add([PlayerListEntry::createAdditionEntry($p->getUniqueId(), $p->getId(), $p->getDisplayName(), SkinAdapterSingleton::get()->toSkinData($p->getSkin()), $p->getXuid())])); + $this->sendDataPacket(PlayerListPacket::add([PlayerListEntry::createAdditionEntry($p->getUniqueId(), $p->getId(), $p->getDisplayName(), TypeConverter::getInstance()->getSkinAdapter()->toSkinData($p->getSkin()), $p->getXuid())])); } public function onPlayerRemoved(Player $p) : void{ diff --git a/src/network/mcpe/convert/SkinAdapterSingleton.php b/src/network/mcpe/convert/SkinAdapterSingleton.php deleted file mode 100644 index db2f7903a..000000000 --- a/src/network/mcpe/convert/SkinAdapterSingleton.php +++ /dev/null @@ -1,42 +0,0 @@ -blockItemIdMap = BlockItemIdMap::getInstance(); @@ -83,6 +85,8 @@ class TypeConverter{ GlobalItemDataHandlers::getSerializer(), GlobalItemDataHandlers::getDeserializer() ); + + $this->skinAdapter = new LegacySkinAdapter(); } public function getBlockTranslator() : BlockTranslator{ return $this->blockTranslator; } @@ -91,6 +95,12 @@ class TypeConverter{ public function getItemTranslator() : ItemTranslator{ return $this->itemTranslator; } + public function getSkinAdapter() : SkinAdapter{ return $this->skinAdapter; } + + public function setSkinAdapter(SkinAdapter $skinAdapter) : void{ + $this->skinAdapter = $skinAdapter; + } + /** * Returns a client-friendly gamemode of the specified real gamemode * This function takes care of handling gamemodes known to MCPE (as of 1.1.0.3, that includes Survival, Creative and Adventure) diff --git a/src/network/mcpe/handler/InGamePacketHandler.php b/src/network/mcpe/handler/InGamePacketHandler.php index d73226697..f49a9b817 100644 --- a/src/network/mcpe/handler/InGamePacketHandler.php +++ b/src/network/mcpe/handler/InGamePacketHandler.php @@ -45,7 +45,6 @@ use pocketmine\math\Facing; use pocketmine\math\Vector3; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\StringTag; -use pocketmine\network\mcpe\convert\SkinAdapterSingleton; use pocketmine\network\mcpe\InventoryManager; use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\ActorEventPacket; @@ -837,7 +836,7 @@ class InGamePacketHandler extends PacketHandler{ $this->session->getLogger()->debug("Processing skin change request"); try{ - $skin = SkinAdapterSingleton::get()->fromSkinData($packet->skin); + $skin = $this->session->getTypeConverter()->getSkinAdapter()->fromSkinData($packet->skin); }catch(InvalidSkinException $e){ throw PacketHandlingException::wrap($e, "Invalid skin in PlayerSkinPacket"); } diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index db9602369..a8c3d4d62 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -28,7 +28,6 @@ use pocketmine\event\player\PlayerPreLoginEvent; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\Translatable; use pocketmine\network\mcpe\auth\ProcessLoginTask; -use pocketmine\network\mcpe\convert\SkinAdapterSingleton; use pocketmine\network\mcpe\JwtException; use pocketmine\network\mcpe\JwtUtils; use pocketmine\network\mcpe\NetworkSession; @@ -72,7 +71,7 @@ class LoginPacketHandler extends PacketHandler{ $clientData = $this->parseClientData($packet->clientDataJwt); try{ - $skin = SkinAdapterSingleton::get()->fromSkinData(ClientDataToSkinDataHelper::fromClientData($clientData)); + $skin = $this->session->getTypeConverter()->getSkinAdapter()->fromSkinData(ClientDataToSkinDataHelper::fromClientData($clientData)); }catch(\InvalidArgumentException | InvalidSkinException $e){ $this->session->getLogger()->debug("Invalid skin: " . $e->getMessage()); $this->session->disconnectWithError(KnownTranslationFactory::disconnectionScreen_invalidSkin()); From 6f0eb019d2797155ee6533cce02d016886fd88b9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 7 May 2023 19:28:07 +0100 Subject: [PATCH 634/692] ItemIdMetaUpgrader: added some auxiliary methods --- .../bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php | 12 ++++++++++++ src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php index 8a271e430..0388fd1e7 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgradeSchema.php @@ -41,6 +41,18 @@ final class ItemIdMetaUpgradeSchema{ public function getSchemaId() : int{ return $this->schemaId; } + /** + * @return string[] + * @phpstan-return array + */ + public function getRenamedIds() : array{ return $this->renamedIds; } + + /** + * @return string[][] + * @phpstan-return array> + */ + public function getRemappedMetas() : array{ return $this->remappedMetas; } + public function renameId(string $id) : ?string{ return $this->renamedIds[mb_strtolower($id, 'US-ASCII')] ?? null; } diff --git a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php index 8afd28f0e..96980c92f 100644 --- a/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemIdMetaUpgrader.php @@ -57,6 +57,12 @@ final class ItemIdMetaUpgrader{ ksort($this->idMetaUpgradeSchemas, SORT_NUMERIC); } + /** + * @return ItemIdMetaUpgradeSchema[] + * @phpstan-return array + */ + public function getSchemas() : array{ return $this->idMetaUpgradeSchemas; } + /** * @phpstan-return array{string, int} */ From d834266635daba24eb981e014f02538100ebc792 Mon Sep 17 00:00:00 2001 From: Hugo_ <55756021+Dhaiven@users.noreply.github.com> Date: Mon, 8 May 2023 18:38:07 +0200 Subject: [PATCH 635/692] BlockGrowEvent: add player information for bonemeal usage (#5596) this is in line with StructureGrowEvent, which also has a similar API. --- src/block/CocoaBlock.php | 6 +++--- src/block/Crops.php | 2 +- src/block/Sugarcane.php | 6 +++--- src/block/SweetBerryBush.php | 2 +- src/event/block/BlockGrowEvent.php | 18 ++++++++++++++++++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index fe4f1736b..9aa4157b7 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -94,7 +94,7 @@ class CocoaBlock extends Transparent{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ - if($item instanceof Fertilizer && $this->grow()){ + if($item instanceof Fertilizer && $this->grow($player)){ $item->pop(); return true; @@ -119,11 +119,11 @@ class CocoaBlock extends Transparent{ } } - private function grow() : bool{ + private function grow(?Player $player = null) : bool{ if($this->age < self::MAX_AGE){ $block = clone $this; $block->age++; - $ev = new BlockGrowEvent($this, $block); + $ev = new BlockGrowEvent($this, $block, $player); $ev->call(); if(!$ev->isCancelled()){ $this->position->getWorld()->setBlock($this->position, $ev->getNewState()); diff --git a/src/block/Crops.php b/src/block/Crops.php index c1c13bee9..1ed62985d 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -69,7 +69,7 @@ abstract class Crops extends Flowable{ $block->age = self::MAX_AGE; } - $ev = new BlockGrowEvent($this, $block); + $ev = new BlockGrowEvent($this, $block, $player); $ev->call(); if(!$ev->isCancelled()){ $this->position->getWorld()->setBlock($this->position, $ev->getNewState()); diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index 136527e78..b71a8e9ea 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -51,7 +51,7 @@ class Sugarcane extends Flowable{ return $bottom; } - private function grow(Position $pos) : bool{ + private function grow(Position $pos, ?Player $player = null) : bool{ $grew = false; $world = $pos->getWorld(); for($y = 1; $y < 3; ++$y){ @@ -60,7 +60,7 @@ class Sugarcane extends Flowable{ } $b = $world->getBlockAt($pos->x, $pos->y + $y, $pos->z); if($b->getTypeId() === BlockTypeIds::AIR){ - $ev = new BlockGrowEvent($b, VanillaBlocks::SUGARCANE()); + $ev = new BlockGrowEvent($b, VanillaBlocks::SUGARCANE(), $player); $ev->call(); if($ev->isCancelled()){ break; @@ -89,7 +89,7 @@ class Sugarcane extends Flowable{ public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($item instanceof Fertilizer){ - if($this->grow($this->seekToBottom())){ + if($this->grow($this->seekToBottom(), $player)){ $item->pop(); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index c9e9232e7..13e710f40 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -87,7 +87,7 @@ class SweetBerryBush extends Flowable{ $block = clone $this; $block->age++; - $ev = new BlockGrowEvent($this, $block); + $ev = new BlockGrowEvent($this, $block, $player); $ev->call(); if(!$ev->isCancelled()){ diff --git a/src/event/block/BlockGrowEvent.php b/src/event/block/BlockGrowEvent.php index 6a2239a14..c3e070a34 100644 --- a/src/event/block/BlockGrowEvent.php +++ b/src/event/block/BlockGrowEvent.php @@ -23,9 +23,27 @@ declare(strict_types=1); namespace pocketmine\event\block; +use pocketmine\block\Block; +use pocketmine\player\Player; + /** * Called when plants or crops grow. */ class BlockGrowEvent extends BaseBlockChangeEvent{ + public function __construct( + Block $block, + Block $newState, + private ?Player $player = null, + ){ + parent::__construct($block, $newState); + } + + /** + * It returns the player which grows the crop. + * It returns null when the crop grows by itself. + */ + public function getPlayer() : ?Player{ + return $this->player; + } } From fa719f37d5ced803268c4a08a2eca99469cfb8ed Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Mon, 8 May 2023 21:24:23 +0300 Subject: [PATCH 636/692] Implement Cave Vines & Glow Berries (#5424) --- src/block/BlockTypeIds.php | 3 +- src/block/CaveVines.php | 191 ++++++++++++++++++ src/block/VanillaBlocks.php | 3 + .../convert/BlockObjectToStateSerializer.php | 12 ++ .../BlockStateToObjectDeserializer.php | 19 ++ .../ItemSerializerDeserializerRegistrar.php | 1 + src/item/GlowBerries.php | 42 ++++ src/item/ItemTypeIds.php | 3 +- src/item/StringToItemParser.php | 2 + src/item/VanillaItems.php | 2 + src/world/sound/GlowBerriesPickSound.php | 35 ++++ .../block_factory_consistency_check.json | 2 +- .../BlockSerializerDeserializerTest.php | 11 +- 13 files changed, 320 insertions(+), 6 deletions(-) create mode 100644 src/block/CaveVines.php create mode 100644 src/item/GlowBerries.php create mode 100644 src/world/sound/GlowBerriesPickSound.php diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 63ffb2025..576d84d5e 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -713,8 +713,9 @@ final class BlockTypeIds{ public const AZALEA_LEAVES = 10686; public const FLOWERING_AZALEA_LEAVES = 10687; public const REINFORCED_DEEPSLATE = 10688; + public const CAVE_VINES = 10689; - public const FIRST_UNUSED_BLOCK_ID = 10689; + public const FIRST_UNUSED_BLOCK_ID = 10690; private static int $nextDynamicId = self::FIRST_UNUSED_BLOCK_ID; diff --git a/src/block/CaveVines.php b/src/block/CaveVines.php new file mode 100644 index 000000000..43109192b --- /dev/null +++ b/src/block/CaveVines.php @@ -0,0 +1,191 @@ +boundedInt(5, 0, self::MAX_AGE, $this->age); + $w->bool($this->berries); + $w->bool($this->head); + } + + public function hasBerries() : bool{ return $this->berries; } + + /** @return $this */ + public function setBerries(bool $berries) : self{ + $this->berries = $berries; + return $this; + } + + public function isHead() : bool{ return $this->head; } + + /** @return $this */ + public function setHead(bool $head) : self{ + $this->head = $head; + return $this; + } + + public function getAge() : int{ + return $this->age; + } + + /** @return $this */ + public function setAge(int $age) : self{ + if($age < 0 || $age > self::MAX_AGE){ + throw new \InvalidArgumentException("Age must be in range 0-" . self::MAX_AGE); + } + $this->age = $age; + return $this; + } + + public function canClimb() : bool{ + return true; + } + + public function getLightLevel() : int{ + return $this->berries ? 14 : 0; + } + + private function canBeSupportedBy(Block $block) : bool{ + return $block->getSupportType(Facing::DOWN)->equals(SupportType::FULL()) || $block->hasSameTypeId($this); + } + + public function onNearbyBlockChange() : void{ + if(!$this->canBeSupportedBy($this->getSide(Facing::UP))){ + $this->position->getWorld()->useBreakOn($this->position); + } + } + + public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ + if(!$this->canBeSupportedBy($blockReplace->getSide(Facing::UP))){ + return false; + } + $this->age = mt_rand(0, self::MAX_AGE); + return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); + } + + public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + if($this->berries){ + $this->position->getWorld()->dropItem($this->position, $this->asItem()); + $this->position->getWorld()->addSound($this->position, new GlowBerriesPickSound()); + + $this->position->getWorld()->setBlock($this->position, $this->setBerries(false)); + return true; + } + if($item instanceof Fertilizer){ + $ev = new BlockGrowEvent($this, (clone $this) + ->setBerries(true) + ->setHead(!$this->getSide(Facing::DOWN)->hasSameTypeId($this)) + ); + $ev->call(); + if($ev->isCancelled()){ + return false; + } + $item->pop(); + $this->position->getWorld()->setBlock($this->position, $ev->getNewState()); + return true; + } + return false; + } + + public function onRandomTick() : void{ + $head = !$this->getSide(Facing::DOWN)->hasSameTypeId($this); + if($head !== $this->head){ + $this->position->getWorld()->setBlock($this->position, $this->setHead($head)); + } + + if($this->age < self::MAX_AGE && mt_rand(1, 10) === 1){ + $growthPos = $this->position->getSide(Facing::DOWN); + $world = $growthPos->getWorld(); + if($world->isInWorld($growthPos->getFloorX(), $growthPos->getFloorY(), $growthPos->getFloorZ())){ + $block = $world->getBlock($growthPos); + if($block->getTypeId() === BlockTypeIds::AIR){ + $ev = new BlockGrowEvent($block, VanillaBlocks::CAVE_VINES() + ->setAge($this->age + 1) + ->setBerries(mt_rand(1, 9) === 1) + ); + + $ev->call(); + + if(!$ev->isCancelled()){ + $world->setBlock($growthPos, $ev->getNewState()); + } + } + } + } + } + + public function ticksRandomly() : bool{ + return true; + } + + protected function recalculateCollisionBoxes() : array{ + return []; + } + + public function hasEntityCollision() : bool{ + return true; + } + + public function onEntityInside(Entity $entity) : bool{ + $entity->resetFallDistance(); + return false; + } + + public function getDropsForCompatibleTool(Item $item) : array{ + return $this->berries ? [$this->asItem()] : []; + } + + public function isAffectedBySilkTouch() : bool{ + return true; + } + + public function asItem() : Item{ + return VanillaItems::GLOW_BERRIES(); + } + + public function getSupportType(int $facing) : SupportType{ + return SupportType::NONE(); + } +} diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index 598793977..a01a0af0e 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -156,6 +156,7 @@ use function mb_strtolower; * @method static CartographyTable CARTOGRAPHY_TABLE() * @method static CarvedPumpkin CARVED_PUMPKIN() * @method static Cauldron CAULDRON() + * @method static CaveVines CAVE_VINES() * @method static Chain CHAIN() * @method static ChemicalHeat CHEMICAL_HEAT() * @method static Chest CHEST() @@ -1579,6 +1580,8 @@ final class VanillaBlocks{ self::register("cake_with_dyed_candle", new CakeWithDyedCandle(new BID(Ids::CAKE_WITH_DYED_CANDLE), "Cake With Dyed Candle", $cakeBreakInfo)); self::register("hanging_roots", new HangingRoots(new BID(Ids::HANGING_ROOTS), "Hanging Roots", new Info(BreakInfo::instant(ToolType::SHEARS, 1)))); + + self::register("cave_vines", new CaveVines(new BID(Ids::CAVE_VINES), "Cave Vines", new Info(BreakInfo::instant()))); } private static function registerBlocksR18() : void{ diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index cf201ac78..02869fa75 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -44,6 +44,7 @@ use pocketmine\block\Candle; use pocketmine\block\Carpet; use pocketmine\block\Carrot; use pocketmine\block\CarvedPumpkin; +use pocketmine\block\CaveVines; use pocketmine\block\Chain; use pocketmine\block\ChemistryTable; use pocketmine\block\Chest; @@ -773,6 +774,17 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ return Writer::create(Ids::CARVED_PUMPKIN) ->writeLegacyHorizontalFacing($block->getFacing()); }); + $this->map(Blocks::CAVE_VINES(), function(CaveVines $block) : Writer{ + //I have no idea why this only has 3 IDs - there are 4 in Java and 4 visually distinct states in Bedrock + return Writer::create($block->hasBerries() ? + ($block->isHead() ? + Ids::CAVE_VINES_HEAD_WITH_BERRIES : + Ids::CAVE_VINES_BODY_WITH_BERRIES + ) : + Ids::CAVE_VINES + ) + ->writeInt(StateNames::GROWING_PLANT_AGE, $block->getAge()); + }); $this->map(Blocks::CHAIN(), function(Chain $block) : Writer{ return Writer::create(Ids::CHAIN) ->writePillarAxis($block->getAxis()); diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index bcea70b22..c66961341 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\block\convert; use pocketmine\block\Bamboo; use pocketmine\block\Block; +use pocketmine\block\CaveVines; use pocketmine\block\ChorusFlower; use pocketmine\block\Light; use pocketmine\block\Slab; @@ -611,6 +612,24 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ return Blocks::CARVED_PUMPKIN() ->setFacing($in->readLegacyHorizontalFacing()); }); + $this->map(Ids::CAVE_VINES, function(Reader $in) : CaveVines{ + return Blocks::CAVE_VINES() + ->setBerries(false) + ->setHead(false) + ->setAge($in->readBoundedInt(StateNames::GROWING_PLANT_AGE, 0, 25)); + }); + $this->map(Ids::CAVE_VINES_BODY_WITH_BERRIES, function(Reader $in) : CaveVines{ + return Blocks::CAVE_VINES() + ->setBerries(true) + ->setHead(false) + ->setAge($in->readBoundedInt(StateNames::GROWING_PLANT_AGE, 0, 25)); + }); + $this->map(Ids::CAVE_VINES_HEAD_WITH_BERRIES, function(Reader $in) : CaveVines{ + return Blocks::CAVE_VINES() + ->setBerries(true) + ->setHead(true) + ->setAge($in->readBoundedInt(StateNames::GROWING_PLANT_AGE, 0, 25)); + }); $this->map(Ids::CHAIN, function(Reader $in) : Block{ return Blocks::CHAIN() ->setAxis($in->readPillarAxis()); diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index 368423911..99be4ea68 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -233,6 +233,7 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1Item(Ids::GHAST_TEAR, Items::GHAST_TEAR()); $this->map1to1Item(Ids::GLASS_BOTTLE, Items::GLASS_BOTTLE()); $this->map1to1Item(Ids::GLISTERING_MELON_SLICE, Items::GLISTERING_MELON()); + $this->map1to1Item(Ids::GLOW_BERRIES, Items::GLOW_BERRIES()); $this->map1to1Item(Ids::GLOW_INK_SAC, Items::GLOW_INK_SAC()); $this->map1to1Item(Ids::GLOWSTONE_DUST, Items::GLOWSTONE_DUST()); $this->map1to1Item(Ids::GOLD_INGOT, Items::GOLD_INGOT()); diff --git a/src/item/GlowBerries.php b/src/item/GlowBerries.php new file mode 100644 index 000000000..e959b7b9e --- /dev/null +++ b/src/item/GlowBerries.php @@ -0,0 +1,42 @@ +registerBlock("carrots", fn() => Blocks::CARROTS()); $result->registerBlock("carved_pumpkin", fn() => Blocks::CARVED_PUMPKIN()); $result->registerBlock("cauldron", fn() => Blocks::CAULDRON()); + $result->registerBlock("cave_vines", fn() => Blocks::CAVE_VINES()); $result->registerBlock("chain", fn() => Blocks::CHAIN()); $result->registerBlock("chemical_heat", fn() => Blocks::CHEMICAL_HEAT()); $result->registerBlock("chemistry_table", fn() => Blocks::COMPOUND_CREATOR()); @@ -1275,6 +1276,7 @@ final class StringToItemParser extends StringToTParser{ $result->register("ghast_tear", fn() => Items::GHAST_TEAR()); $result->register("glass_bottle", fn() => Items::GLASS_BOTTLE()); $result->register("glistering_melon", fn() => Items::GLISTERING_MELON()); + $result->register("glow_berries", fn() => Items::GLOW_BERRIES()); $result->register("glow_ink_sac", fn() => Items::GLOW_INK_SAC()); $result->register("glowstone_dust", fn() => Items::GLOWSTONE_DUST()); $result->register("gold_axe", fn() => Items::GOLDEN_AXE()); diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index eeaeddc80..7e94dd449 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -163,6 +163,7 @@ use pocketmine\world\World; * @method static GlassBottle GLASS_BOTTLE() * @method static Item GLISTERING_MELON() * @method static Item GLOWSTONE_DUST() + * @method static GlowBerries GLOW_BERRIES() * @method static Item GLOW_INK_SAC() * @method static GoldenApple GOLDEN_APPLE() * @method static Axe GOLDEN_AXE() @@ -438,6 +439,7 @@ final class VanillaItems{ self::register("ghast_tear", new Item(new IID(Ids::GHAST_TEAR), "Ghast Tear")); self::register("glass_bottle", new GlassBottle(new IID(Ids::GLASS_BOTTLE), "Glass Bottle")); self::register("glistering_melon", new Item(new IID(Ids::GLISTERING_MELON), "Glistering Melon")); + self::register("glow_berries", new GlowBerries(new IID(Ids::GLOW_BERRIES), "Glow Berries")); self::register("glow_ink_sac", new Item(new IID(Ids::GLOW_INK_SAC), "Glow Ink Sac")); self::register("glowstone_dust", new Item(new IID(Ids::GLOWSTONE_DUST), "Glowstone Dust")); self::register("gold_ingot", new Item(new IID(Ids::GOLD_INGOT), "Gold Ingot")); diff --git a/src/world/sound/GlowBerriesPickSound.php b/src/world/sound/GlowBerriesPickSound.php new file mode 100644 index 000000000..0c76ff75e --- /dev/null +++ b/src/world/sound/GlowBerriesPickSound.php @@ -0,0 +1,35 @@ +setColor($block->getColor()); }elseif($block instanceof Skull && $newBlock instanceof Skull){ $newBlock->setSkullType($block->getSkullType()); + }elseif($block instanceof CaveVines && $newBlock instanceof CaveVines && !$block->hasBerries()){ + $newBlock->setHead($block->isHead()); } self::assertSame($block->getStateId(), $newBlock->getStateId(), "Mismatch of blockstate for " . $block->getName() . ", " . print_r($block, true) . " vs " . print_r($newBlock, true)); From 1b452f3a8880f3d5f6595c98375401a2641f36ce Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 8 May 2023 21:38:58 +0100 Subject: [PATCH 637/692] BlockStateToObjectDeserializer: make flat colour block handling less repetetive --- .../BlockStateToObjectDeserializer.php | 151 ++++++++++-------- 1 file changed, 83 insertions(+), 68 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index c66961341..b839ec43f 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -128,80 +128,95 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ private function registerCandleDeserializers() : void{ $this->map(Ids::CANDLE, fn(Reader $in) => Helper::decodeCandle(Blocks::CANDLE(), $in)); - $dyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in); - $this->map(Ids::BLACK_CANDLE, $dyedCandleDeserializer(DyeColor::BLACK())); - $this->map(Ids::BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::BLUE())); - $this->map(Ids::BROWN_CANDLE, $dyedCandleDeserializer(DyeColor::BROWN())); - $this->map(Ids::CYAN_CANDLE, $dyedCandleDeserializer(DyeColor::CYAN())); - $this->map(Ids::GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::GRAY())); - $this->map(Ids::GREEN_CANDLE, $dyedCandleDeserializer(DyeColor::GREEN())); - $this->map(Ids::LIGHT_BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_BLUE())); - $this->map(Ids::LIGHT_GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_GRAY())); - $this->map(Ids::LIME_CANDLE, $dyedCandleDeserializer(DyeColor::LIME())); - $this->map(Ids::MAGENTA_CANDLE, $dyedCandleDeserializer(DyeColor::MAGENTA())); - $this->map(Ids::ORANGE_CANDLE, $dyedCandleDeserializer(DyeColor::ORANGE())); - $this->map(Ids::PINK_CANDLE, $dyedCandleDeserializer(DyeColor::PINK())); - $this->map(Ids::PURPLE_CANDLE, $dyedCandleDeserializer(DyeColor::PURPLE())); - $this->map(Ids::RED_CANDLE, $dyedCandleDeserializer(DyeColor::RED())); - $this->map(Ids::WHITE_CANDLE, $dyedCandleDeserializer(DyeColor::WHITE())); - $this->map(Ids::YELLOW_CANDLE, $dyedCandleDeserializer(DyeColor::YELLOW())); + foreach([ + Ids::BLACK_CANDLE => DyeColor::BLACK(), + Ids::BLUE_CANDLE => DyeColor::BLUE(), + Ids::BROWN_CANDLE => DyeColor::BROWN(), + Ids::CYAN_CANDLE => DyeColor::CYAN(), + Ids::GRAY_CANDLE => DyeColor::GRAY(), + Ids::GREEN_CANDLE => DyeColor::GREEN(), + Ids::LIGHT_BLUE_CANDLE => DyeColor::LIGHT_BLUE(), + Ids::LIGHT_GRAY_CANDLE => DyeColor::LIGHT_GRAY(), + Ids::LIME_CANDLE => DyeColor::LIME(), + Ids::MAGENTA_CANDLE => DyeColor::MAGENTA(), + Ids::ORANGE_CANDLE => DyeColor::ORANGE(), + Ids::PINK_CANDLE => DyeColor::PINK(), + Ids::PURPLE_CANDLE => DyeColor::PURPLE(), + Ids::RED_CANDLE => DyeColor::RED(), + Ids::WHITE_CANDLE => DyeColor::WHITE(), + Ids::YELLOW_CANDLE => DyeColor::YELLOW(), + ] as $id => $color){ + $this->map($id, fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in)); + } $this->map(Ids::CANDLE_CAKE, fn(Reader $in) => Blocks::CAKE_WITH_CANDLE()->setLit($in->readBool(StateNames::LIT))); - $cakeWithDyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Blocks::CAKE_WITH_DYED_CANDLE() - ->setColor($color) - ->setLit($in->readBool(StateNames::LIT)); - $this->map(Ids::BLACK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLACK())); - $this->map(Ids::BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLUE())); - $this->map(Ids::BROWN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BROWN())); - $this->map(Ids::CYAN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::CYAN())); - $this->map(Ids::GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GRAY())); - $this->map(Ids::GREEN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GREEN())); - $this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_BLUE())); - $this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_GRAY())); - $this->map(Ids::LIME_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIME())); - $this->map(Ids::MAGENTA_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::MAGENTA())); - $this->map(Ids::ORANGE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::ORANGE())); - $this->map(Ids::PINK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PINK())); - $this->map(Ids::PURPLE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PURPLE())); - $this->map(Ids::RED_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::RED())); - $this->map(Ids::WHITE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::WHITE())); - $this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); + foreach([ + Ids::BLACK_CANDLE_CAKE => DyeColor::BLACK(), + Ids::BLUE_CANDLE_CAKE => DyeColor::BLUE(), + Ids::BROWN_CANDLE_CAKE => DyeColor::BROWN(), + Ids::CYAN_CANDLE_CAKE => DyeColor::CYAN(), + Ids::GRAY_CANDLE_CAKE => DyeColor::GRAY(), + Ids::GREEN_CANDLE_CAKE => DyeColor::GREEN(), + Ids::LIGHT_BLUE_CANDLE_CAKE => DyeColor::LIGHT_BLUE(), + Ids::LIGHT_GRAY_CANDLE_CAKE => DyeColor::LIGHT_GRAY(), + Ids::LIME_CANDLE_CAKE => DyeColor::LIME(), + Ids::MAGENTA_CANDLE_CAKE => DyeColor::MAGENTA(), + Ids::ORANGE_CANDLE_CAKE => DyeColor::ORANGE(), + Ids::PINK_CANDLE_CAKE => DyeColor::PINK(), + Ids::PURPLE_CANDLE_CAKE => DyeColor::PURPLE(), + Ids::RED_CANDLE_CAKE => DyeColor::RED(), + Ids::WHITE_CANDLE_CAKE => DyeColor::WHITE(), + Ids::YELLOW_CANDLE_CAKE => DyeColor::YELLOW(), + ] as $id => $color){ + $this->map($id, fn(Reader $in) => Blocks::CAKE_WITH_DYED_CANDLE() + ->setColor($color) + ->setLit($in->readBool(StateNames::LIT)) + ); + } } private function registerFlatColorBlockDeserializers() : void{ - $this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); - $this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); - $this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); - $this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); - $this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); - $this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); - $this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); - $this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in)); - $this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); - $this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); - $this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); - $this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); - $this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in)); - $this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); - $this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); - $this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); + foreach([ + Ids::BLACK_GLAZED_TERRACOTTA => DyeColor::BLACK(), + Ids::BLUE_GLAZED_TERRACOTTA => DyeColor::BLUE(), + Ids::BROWN_GLAZED_TERRACOTTA => DyeColor::BROWN(), + Ids::CYAN_GLAZED_TERRACOTTA => DyeColor::CYAN(), + Ids::GRAY_GLAZED_TERRACOTTA => DyeColor::GRAY(), + Ids::GREEN_GLAZED_TERRACOTTA => DyeColor::GREEN(), + Ids::LIGHT_BLUE_GLAZED_TERRACOTTA => DyeColor::LIGHT_BLUE(), + Ids::SILVER_GLAZED_TERRACOTTA => DyeColor::LIGHT_GRAY(), + Ids::LIME_GLAZED_TERRACOTTA => DyeColor::LIME(), + Ids::MAGENTA_GLAZED_TERRACOTTA => DyeColor::MAGENTA(), + Ids::ORANGE_GLAZED_TERRACOTTA => DyeColor::ORANGE(), + Ids::PINK_GLAZED_TERRACOTTA => DyeColor::PINK(), + Ids::PURPLE_GLAZED_TERRACOTTA => DyeColor::PURPLE(), + Ids::RED_GLAZED_TERRACOTTA => DyeColor::RED(), + Ids::WHITE_GLAZED_TERRACOTTA => DyeColor::WHITE(), + Ids::YELLOW_GLAZED_TERRACOTTA => DyeColor::YELLOW(), + ] as $id => $color){ + $this->map($id, fn(Reader $in) => Helper::decodeGlazedTerracotta($color, $in)); + } - $this->mapSimple(Ids::BLACK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLACK())); - $this->mapSimple(Ids::BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLUE())); - $this->mapSimple(Ids::BROWN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BROWN())); - $this->mapSimple(Ids::CYAN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::CYAN())); - $this->mapSimple(Ids::GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GRAY())); - $this->mapSimple(Ids::GREEN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GREEN())); - $this->mapSimple(Ids::LIGHT_BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_BLUE())); - $this->mapSimple(Ids::LIGHT_GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_GRAY())); - $this->mapSimple(Ids::LIME_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIME())); - $this->mapSimple(Ids::MAGENTA_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::MAGENTA())); - $this->mapSimple(Ids::ORANGE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::ORANGE())); - $this->mapSimple(Ids::PINK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PINK())); - $this->mapSimple(Ids::PURPLE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PURPLE())); - $this->mapSimple(Ids::RED_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::RED())); - $this->mapSimple(Ids::WHITE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::WHITE())); - $this->mapSimple(Ids::YELLOW_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::YELLOW())); + foreach([ + Ids::BLACK_WOOL => DyeColor::BLACK(), + Ids::BLUE_WOOL => DyeColor::BLUE(), + Ids::BROWN_WOOL => DyeColor::BROWN(), + Ids::CYAN_WOOL => DyeColor::CYAN(), + Ids::GRAY_WOOL => DyeColor::GRAY(), + Ids::GREEN_WOOL => DyeColor::GREEN(), + Ids::LIGHT_BLUE_WOOL => DyeColor::LIGHT_BLUE(), + Ids::LIGHT_GRAY_WOOL => DyeColor::LIGHT_GRAY(), + Ids::LIME_WOOL => DyeColor::LIME(), + Ids::MAGENTA_WOOL => DyeColor::MAGENTA(), + Ids::ORANGE_WOOL => DyeColor::ORANGE(), + Ids::PINK_WOOL => DyeColor::PINK(), + Ids::PURPLE_WOOL => DyeColor::PURPLE(), + Ids::RED_WOOL => DyeColor::RED(), + Ids::WHITE_WOOL => DyeColor::WHITE(), + Ids::YELLOW_WOOL => DyeColor::YELLOW(), + ] as $id => $color){ + $this->mapSimple($id, fn() => Blocks::WOOL()->setColor($color)); + } } private function registerCauldronDeserializers() : void{ From 7b1a1e5a18dbaaa080a9ffabd63c6eae90f44911 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 8 May 2023 22:16:55 +0100 Subject: [PATCH 638/692] BlockStateToObjectDeserializer: remove redundant helper --- .../bedrock/block/convert/BlockStateDeserializerHelper.php | 7 ------- .../block/convert/BlockStateToObjectDeserializer.php | 5 ++++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index 6384a3e94..9de65a94d 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -165,13 +165,6 @@ final class BlockStateDeserializerHelper{ ->setRotation($in->readBoundedInt(BlockStateNames::GROUND_SIGN_DIRECTION, 0, 15)); } - /** @throws BlockStateDeserializeException */ - public static function decodeGlazedTerracotta(DyeColor $color, BlockStateReader $in) : GlazedTerracotta{ - return VanillaBlocks::GLAZED_TERRACOTTA() - ->setColor($color) - ->setFacing($in->readHorizontalFacing()); - } - public static function decodeItemFrame(ItemFrame $block, BlockStateReader $in) : ItemFrame{ $in->todo(StateNames::ITEM_FRAME_PHOTO_BIT); //TODO: not sure what the point of this is return $block diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index b839ec43f..2d1fd6090 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -194,7 +194,10 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{ Ids::WHITE_GLAZED_TERRACOTTA => DyeColor::WHITE(), Ids::YELLOW_GLAZED_TERRACOTTA => DyeColor::YELLOW(), ] as $id => $color){ - $this->map($id, fn(Reader $in) => Helper::decodeGlazedTerracotta($color, $in)); + $this->map($id, fn(Reader $in) => Blocks::GLAZED_TERRACOTTA() + ->setColor($color) + ->setFacing($in->readHorizontalFacing()) + ); } foreach([ From 30f1d3e01617748f57d04fa0d2f8b3c276fa19ff Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Wed, 10 May 2023 07:41:25 -0500 Subject: [PATCH 639/692] Fix code style (#5740) --- src/data/bedrock/block/convert/BlockStateDeserializerHelper.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php index 9de65a94d..fab50717c 100644 --- a/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php +++ b/src/data/bedrock/block/convert/BlockStateDeserializerHelper.php @@ -35,7 +35,6 @@ use pocketmine\block\Door; use pocketmine\block\FenceGate; use pocketmine\block\FloorCoralFan; use pocketmine\block\FloorSign; -use pocketmine\block\GlazedTerracotta; use pocketmine\block\ItemFrame; use pocketmine\block\Leaves; use pocketmine\block\Liquid; @@ -48,7 +47,6 @@ use pocketmine\block\Stair; use pocketmine\block\Stem; use pocketmine\block\Trapdoor; use pocketmine\block\utils\CopperOxidation; -use pocketmine\block\utils\DyeColor; use pocketmine\block\VanillaBlocks; use pocketmine\block\Wall; use pocketmine\block\WallCoralFan; From ccb22ceb3fa6cf1725d72f181f14b66937e0ce81 Mon Sep 17 00:00:00 2001 From: platz1de <51201131+platz1de@users.noreply.github.com> Date: Tue, 16 May 2023 13:31:30 +0200 Subject: [PATCH 640/692] Fix flower pots being marked as pottable (#5747) --- src/block/VanillaBlocks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index a01a0af0e..eb909ab92 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -853,7 +853,7 @@ final class VanillaBlocks{ self::register("pink_tulip", new Flower(new BID(Ids::PINK_TULIP), "Pink Tulip", $flowerTypeInfo)); self::register("red_tulip", new Flower(new BID(Ids::RED_TULIP), "Red Tulip", $flowerTypeInfo)); self::register("white_tulip", new Flower(new BID(Ids::WHITE_TULIP), "White Tulip", $flowerTypeInfo)); - self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", $flowerTypeInfo)); + self::register("flower_pot", new FlowerPot(new BID(Ids::FLOWER_POT, TileFlowerPot::class), "Flower Pot", new Info(BreakInfo::instant()))); self::register("frosted_ice", new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice", new Info(BreakInfo::pickaxe(2.5)))); self::register("furnace", new Furnace(new BID(Ids::FURNACE, TileNormalFurnace::class), "Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())), FurnaceType::FURNACE())); self::register("blast_furnace", new Furnace(new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class), "Blast Furnace", new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD())), FurnaceType::BLAST_FURNACE())); From 015c668885a0f63cb041569441d6040c40f2694b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 16 May 2023 14:07:06 +0100 Subject: [PATCH 641/692] Change confusing 'type data' and 'state data' terminology for blocks and items For blocks, we now use 'block-item state' and 'block-only state', which should be much clearer for people implementing custom stuff. 'block-item state', as the name suggests, sticks to the item when the block is acquired as an item. 'block-only state' applies only to the block and is discarded when the block is acquired as an item. 'type data' for items was also renamed, since 'type' is too ambiguous to be anything but super confusing. --- src/block/Anvil.php | 4 +- src/block/Bamboo.php | 2 +- src/block/BambooSapling.php | 2 +- src/block/Barrel.php | 2 +- src/block/Bed.php | 2 +- src/block/Bedrock.php | 2 +- src/block/Bell.php | 2 +- src/block/Block.php | 115 +++++++++--------- src/block/BrewingStand.php | 2 +- src/block/Button.php | 2 +- src/block/Cactus.php | 2 +- src/block/Cake.php | 2 +- src/block/Candle.php | 4 +- src/block/CaveVines.php | 2 +- src/block/ChorusFlower.php | 2 +- src/block/CocoaBlock.php | 2 +- src/block/Crops.php | 2 +- src/block/DaylightSensor.php | 2 +- src/block/DetectorRail.php | 4 +- src/block/Dirt.php | 2 +- src/block/Door.php | 2 +- src/block/DoublePlant.php | 2 +- src/block/EndPortalFrame.php | 2 +- src/block/Farmland.php | 2 +- src/block/FenceGate.php | 2 +- src/block/FillableCauldron.php | 2 +- src/block/Fire.php | 2 +- src/block/FloorCoralFan.php | 2 +- src/block/Froglight.php | 2 +- src/block/FrostedIce.php | 2 +- src/block/Furnace.php | 2 +- src/block/Hopper.php | 2 +- src/block/ItemFrame.php | 2 +- src/block/Lantern.php | 2 +- src/block/Leaves.php | 2 +- src/block/Lectern.php | 2 +- src/block/Lever.php | 2 +- src/block/Light.php | 2 +- src/block/Liquid.php | 2 +- src/block/NetherPortal.php | 2 +- src/block/NetherVines.php | 2 +- src/block/NetherWartPlant.php | 2 +- src/block/Rail.php | 2 +- src/block/RedMushroomBlock.php | 2 +- src/block/RedstoneComparator.php | 2 +- src/block/RedstoneLamp.php | 2 +- src/block/RedstoneOre.php | 2 +- src/block/RedstoneRepeater.php | 2 +- src/block/RedstoneTorch.php | 4 +- src/block/Sapling.php | 2 +- src/block/SeaPickle.php | 2 +- src/block/ShulkerBox.php | 2 +- src/block/SimplePressurePlate.php | 2 +- src/block/Skull.php | 4 +- src/block/Slab.php | 2 +- src/block/SnowLayer.php | 2 +- src/block/Sponge.php | 2 +- src/block/Stair.php | 2 +- src/block/StraightOnlyRail.php | 2 +- src/block/Sugarcane.php | 2 +- src/block/SweetBerryBush.php | 2 +- src/block/TNT.php | 4 +- src/block/Torch.php | 2 +- src/block/Trapdoor.php | 2 +- src/block/Tripwire.php | 2 +- src/block/TripwireHook.php | 2 +- src/block/UnknownBlock.php | 2 +- src/block/Vine.php | 2 +- src/block/Wall.php | 2 +- src/block/WallCoralFan.php | 2 +- src/block/Wood.php | 2 +- .../AnalogRedstoneSignalEmitterTrait.php | 2 +- src/block/utils/AnyFacingTrait.php | 2 +- src/block/utils/CandleTrait.php | 2 +- src/block/utils/ColoredTrait.php | 4 +- src/block/utils/CopperTrait.php | 2 +- src/block/utils/CoralTypeTrait.php | 4 +- src/block/utils/HorizontalFacingTrait.php | 2 +- src/block/utils/PillarRotationTrait.php | 2 +- .../utils/RailPoweredByRedstoneTrait.php | 4 +- src/block/utils/SignLikeRotationTrait.php | 2 +- src/crafting/CraftingManager.php | 8 +- src/crafting/FurnaceRecipeManager.php | 2 +- src/item/Banner.php | 2 +- src/item/CoralFan.php | 4 +- src/item/Dye.php | 2 +- src/item/Item.php | 14 ++- src/item/ItemBlock.php | 4 +- src/item/Medicine.php | 2 +- src/item/Potion.php | 2 +- src/item/SplashPotion.php | 2 +- src/item/StringToItemParser.php | 4 +- src/item/SuspiciousStew.php | 2 +- src/network/mcpe/convert/TypeConverter.php | 2 +- src/player/Player.php | 6 +- 95 files changed, 178 insertions(+), 171 deletions(-) diff --git a/src/block/Anvil.php b/src/block/Anvil.php index ee8b25e38..de8b6d33c 100644 --- a/src/block/Anvil.php +++ b/src/block/Anvil.php @@ -51,11 +51,11 @@ class Anvil extends Transparent implements Fallable{ private int $damage = self::UNDAMAGED; - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::UNDAMAGED, self::VERY_DAMAGED, $this->damage); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Bamboo.php b/src/block/Bamboo.php index dae857206..980f4382d 100644 --- a/src/block/Bamboo.php +++ b/src/block/Bamboo.php @@ -55,7 +55,7 @@ class Bamboo extends Transparent{ protected bool $ready = false; protected int $leafSize = self::NO_LEAVES; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::NO_LEAVES, self::LARGE_LEAVES, $this->leafSize); $w->bool($this->thick); $w->bool($this->ready); diff --git a/src/block/BambooSapling.php b/src/block/BambooSapling.php index cfa81519b..6be42546a 100644 --- a/src/block/BambooSapling.php +++ b/src/block/BambooSapling.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class BambooSapling extends Flowable{ private bool $ready = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/Barrel.php b/src/block/Barrel.php index 68eda5331..1dce2376b 100644 --- a/src/block/Barrel.php +++ b/src/block/Barrel.php @@ -38,7 +38,7 @@ class Barrel extends Opaque{ protected bool $open = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->open); } diff --git a/src/block/Bed.php b/src/block/Bed.php index 678c8a542..13b466026 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -53,7 +53,7 @@ class Bed extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->occupied); $w->bool($this->head); diff --git a/src/block/Bedrock.php b/src/block/Bedrock.php index 4bca83305..e56898691 100644 --- a/src/block/Bedrock.php +++ b/src/block/Bedrock.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Bedrock extends Opaque{ private bool $burnsForever = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->burnsForever); } diff --git a/src/block/Bell.php b/src/block/Bell.php index f20a031c2..753d6453d 100644 --- a/src/block/Bell.php +++ b/src/block/Bell.php @@ -48,7 +48,7 @@ final class Bell extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bellAttachmentType($this->attachmentType); $w->horizontalFacing($this->facing); } diff --git a/src/block/Block.php b/src/block/Block.php index bb2224723..bc76bf952 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -66,9 +66,9 @@ class Block{ /** @var AxisAlignedBB[]|null */ protected ?array $collisionBoxes = null; - private int $requiredTypeDataBits; - private int $requiredStateDataBits; - private int $defaultStateData; + private int $requiredBlockItemStateDataBits; + private int $requiredBlockOnlyStateDataBits; + private int $defaultBlockOnlyStateData; /** * @param string $name English name of the block type (TODO: implement translations) @@ -80,14 +80,14 @@ class Block{ $this->position = new Position(0, 0, 0, null); $calculator = new RuntimeDataSizeCalculator(); - $this->describeType($calculator); - $this->requiredTypeDataBits = $calculator->getBitsUsed(); + $this->describeBlockItemState($calculator); + $this->requiredBlockItemStateDataBits = $calculator->getBitsUsed(); $calculator = new RuntimeDataSizeCalculator(); - $this->describeState($calculator); - $this->requiredStateDataBits = $calculator->getBitsUsed(); + $this->describeBlockOnlyState($calculator); + $this->requiredBlockOnlyStateDataBits = $calculator->getBitsUsed(); - $this->defaultStateData = $this->computeStateData(); + $this->defaultBlockOnlyStateData = $this->encodeBlockOnlyState(); } public function __clone(){ @@ -111,10 +111,10 @@ class Block{ /** * Returns a type ID that identifies this type of block. This allows comparing basic block types, e.g. wool, stone, - * glass, etc. + * glass, etc. Type ID will not change for a given block type. * - * This does **NOT** include information like facing, open/closed, powered/unpowered, colour, etc. This means that, - * for example, red wool and green wool have the same type ID. + * Information such as colour, powered, open/closed, etc. is **not** included in this ID. + * If you want to get a state ID that includes this information, use {@link Block::getStateId()} instead. * * @see BlockTypeIds */ @@ -129,21 +129,22 @@ class Block{ * blocks in chunks at runtime. * * This usually encodes all properties of the block, such as facing, open/closed, powered/unpowered, colour, etc. - * However, some blocks (such as signs and chests) may store additional properties in an associated "tile" if they + * State ID may change depending on the properties of the block (e.g. a torch facing east will have a different + * state ID to one facing west). + * + * Some blocks (such as signs and chests) may store additional properties in an associated "tile" if they * have too many possible values to be encoded into the state ID. These extra properties are **NOT** included in * this function's result. * - * This ID can be used to later obtain a copy of this block using {@link RuntimeBlockStateRegistry::fromStateId()}. + * This ID can be used to later obtain a copy of the block with the same state properties by using + * {@link RuntimeBlockStateRegistry::fromStateId()}. */ public function getStateId() : int{ - return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->computeTypeAndStateData(); + return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->encodeFullState(); } /** - * Returns whether the given block has an equivalent type to this one. This compares the type IDs. - * - * Type properties (e.g. colour, skull type, etc.) are not compared. This means that different colours of wool, - * concrete, etc. will all be considered as having the same type. + * Returns whether the given block has the same type ID as this one. */ public function hasSameTypeId(Block $other) : bool{ return $this->getTypeId() === $other->getTypeId(); @@ -151,6 +152,8 @@ class Block{ /** * Returns whether the given block has the same type and properties as this block. + * + * Note: Tile data (e.g. sign text, chest contents) are not compared here. */ public function isSameState(Block $other) : bool{ return $this->getStateId() === $other->getStateId(); @@ -177,69 +180,69 @@ class Block{ /** * Returns the block as an item. - * State information such as facing, powered/unpowered, open/closed, etc., is discarded. - * Type information such as colour, wood type, etc. is preserved. + * Block-only state such as facing, powered/unpowered, open/closed, etc., is discarded. + * Block-item state such as colour, wood type, etc. is preserved. */ public function asItem() : Item{ $normalized = clone $this; - $normalized->decodeStateData($this->defaultStateData); + $normalized->decodeBlockOnlyState($this->defaultBlockOnlyStateData); return new ItemBlock($normalized); } - private function decodeTypeData(int $data) : void{ - $reader = new RuntimeDataReader($this->requiredTypeDataBits, $data); + private function decodeBlockItemState(int $data) : void{ + $reader = new RuntimeDataReader($this->requiredBlockItemStateDataBits, $data); - $this->describeType($reader); + $this->describeBlockItemState($reader); $readBits = $reader->getOffset(); - if($this->requiredTypeDataBits !== $readBits){ - throw new \LogicException(get_class($this) . ": Exactly $this->requiredTypeDataBits bits of type data were provided, but $readBits were read"); + if($this->requiredBlockItemStateDataBits !== $readBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredBlockItemStateDataBits bits of block-item state data were provided, but $readBits were read"); } } - private function decodeStateData(int $data) : void{ - $reader = new RuntimeDataReader($this->requiredStateDataBits, $data); + private function decodeBlockOnlyState(int $data) : void{ + $reader = new RuntimeDataReader($this->requiredBlockOnlyStateDataBits, $data); - $this->describeState($reader); + $this->describeBlockOnlyState($reader); $readBits = $reader->getOffset(); - if($this->requiredStateDataBits !== $readBits){ - throw new \LogicException(get_class($this) . ": Exactly $this->requiredStateDataBits bits of state data were provided, but $readBits were read"); + if($this->requiredBlockOnlyStateDataBits !== $readBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredBlockOnlyStateDataBits bits of block-only state data were provided, but $readBits were read"); } } - private function decodeTypeAndStateData(int $data) : void{ - $reader = new RuntimeDataReader($this->requiredTypeDataBits + $this->requiredStateDataBits, $data); - $this->decodeTypeData($reader->readInt($this->requiredTypeDataBits)); - $this->decodeStateData($reader->readInt($this->requiredStateDataBits)); + private function decodeFullState(int $data) : void{ + $reader = new RuntimeDataReader($this->requiredBlockItemStateDataBits + $this->requiredBlockOnlyStateDataBits, $data); + $this->decodeBlockItemState($reader->readInt($this->requiredBlockItemStateDataBits)); + $this->decodeBlockOnlyState($reader->readInt($this->requiredBlockOnlyStateDataBits)); } - private function computeTypeData() : int{ - $writer = new RuntimeDataWriter($this->requiredTypeDataBits); + private function encodeBlockItemState() : int{ + $writer = new RuntimeDataWriter($this->requiredBlockItemStateDataBits); - $this->describeType($writer); + $this->describeBlockItemState($writer); $writtenBits = $writer->getOffset(); - if($this->requiredTypeDataBits !== $writtenBits){ - throw new \LogicException(get_class($this) . ": Exactly $this->requiredTypeDataBits bits of type data were expected, but $writtenBits were written"); + if($this->requiredBlockItemStateDataBits !== $writtenBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredBlockItemStateDataBits bits of block-item state data were expected, but $writtenBits were written"); } return $writer->getValue(); } - private function computeStateData() : int{ - $writer = new RuntimeDataWriter($this->requiredStateDataBits); + private function encodeBlockOnlyState() : int{ + $writer = new RuntimeDataWriter($this->requiredBlockOnlyStateDataBits); - $this->describeState($writer); + $this->describeBlockOnlyState($writer); $writtenBits = $writer->getOffset(); - if($this->requiredStateDataBits !== $writtenBits){ - throw new \LogicException(get_class($this) . ": Exactly $this->requiredStateDataBits bits of state data were expected, but $writtenBits were written"); + if($this->requiredBlockOnlyStateDataBits !== $writtenBits){ + throw new \LogicException(get_class($this) . ": Exactly $this->requiredBlockOnlyStateDataBits bits of block-only state data were expected, but $writtenBits were written"); } return $writer->getValue(); } - private function computeTypeAndStateData() : int{ - $writer = new RuntimeDataWriter($this->requiredTypeDataBits + $this->requiredStateDataBits); - $writer->writeInt($this->requiredTypeDataBits, $this->computeTypeData()); - $writer->writeInt($this->requiredStateDataBits, $this->computeStateData()); + private function encodeFullState() : int{ + $writer = new RuntimeDataWriter($this->requiredBlockItemStateDataBits + $this->requiredBlockOnlyStateDataBits); + $writer->writeInt($this->requiredBlockItemStateDataBits, $this->encodeBlockItemState()); + $writer->writeInt($this->requiredBlockOnlyStateDataBits, $this->encodeBlockOnlyState()); return $writer->getValue(); } @@ -252,7 +255,7 @@ class Block{ * The method implementation must NOT use conditional logic to determine which properties are written. It must * always write the same properties in the same order, regardless of the current state of the block. */ - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ //NOOP } @@ -264,7 +267,7 @@ class Block{ * The method implementation must NOT use conditional logic to determine which properties are written. It must * always write the same properties in the same order, regardless of the current state of the block. */ - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ //NOOP } @@ -278,16 +281,16 @@ class Block{ public function generateStatePermutations() : \Generator{ //TODO: this bruteforce approach to discovering all valid states is very inefficient for larger state data sizes //at some point we'll need to find a better way to do this - $bits = $this->requiredTypeDataBits + $this->requiredStateDataBits; + $bits = $this->requiredBlockItemStateDataBits + $this->requiredBlockOnlyStateDataBits; if($bits > Block::INTERNAL_STATE_DATA_BITS){ throw new \LogicException("Block state data cannot use more than " . Block::INTERNAL_STATE_DATA_BITS . " bits"); } for($stateData = 0; $stateData < (1 << $bits); ++$stateData){ $v = clone $this; try{ - $v->decodeTypeAndStateData($stateData); - if($v->computeTypeAndStateData() !== $stateData){ - throw new \LogicException(static::class . "::decodeStateData() accepts invalid state data (returned " . $v->computeTypeAndStateData() . " for input $stateData)"); + $v->decodeFullState($stateData); + if($v->encodeFullState() !== $stateData){ + throw new \LogicException(static::class . "::decodeStateData() accepts invalid state data (returned " . $v->encodeFullState() . " for input $stateData)"); } }catch(InvalidSerializedRuntimeDataException){ //invalid property combination, leave it continue; @@ -732,7 +735,7 @@ class Block{ * @return string */ public function __toString(){ - return "Block[" . $this->getName() . "] (" . $this->getTypeId() . ":" . $this->computeTypeAndStateData() . ")"; + return "Block[" . $this->getName() . "] (" . $this->getTypeId() . ":" . $this->encodeFullState() . ")"; } /** diff --git a/src/block/BrewingStand.php b/src/block/BrewingStand.php index 479d20739..497d282d7 100644 --- a/src/block/BrewingStand.php +++ b/src/block/BrewingStand.php @@ -43,7 +43,7 @@ class BrewingStand extends Transparent{ */ protected array $slots = []; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->brewingStandSlots($this->slots); } diff --git a/src/block/Button.php b/src/block/Button.php index aa6ca8fa0..85d1d3e09 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -38,7 +38,7 @@ abstract class Button extends Flowable{ protected bool $pressed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->pressed); } diff --git a/src/block/Cactus.php b/src/block/Cactus.php index 3563eded7..8fff294f6 100644 --- a/src/block/Cactus.php +++ b/src/block/Cactus.php @@ -41,7 +41,7 @@ class Cactus extends Transparent{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Cake.php b/src/block/Cake.php index 93e51be21..3e26e59b0 100644 --- a/src/block/Cake.php +++ b/src/block/Cake.php @@ -36,7 +36,7 @@ class Cake extends BaseCake{ protected int $bites = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_BITES, $this->bites); } diff --git a/src/block/Candle.php b/src/block/Candle.php index d95815222..5936a0812 100644 --- a/src/block/Candle.php +++ b/src/block/Candle.php @@ -37,7 +37,7 @@ use pocketmine\world\BlockTransaction; class Candle extends Transparent{ use CandleTrait { - describeState as encodeLitState; + describeBlockOnlyState as encodeLitState; getLightLevel as getBaseLightLevel; } @@ -46,7 +46,7 @@ class Candle extends Transparent{ private int $count = self::MIN_COUNT; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $this->encodeLitState($w); $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); } diff --git a/src/block/CaveVines.php b/src/block/CaveVines.php index 43109192b..55f73fb65 100644 --- a/src/block/CaveVines.php +++ b/src/block/CaveVines.php @@ -44,7 +44,7 @@ class CaveVines extends Flowable{ protected bool $berries = false; protected bool $head = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(5, 0, self::MAX_AGE, $this->age); $w->bool($this->berries); $w->bool($this->head); diff --git a/src/block/ChorusFlower.php b/src/block/ChorusFlower.php index 2aa65d1f6..5c5077f22 100644 --- a/src/block/ChorusFlower.php +++ b/src/block/ChorusFlower.php @@ -49,7 +49,7 @@ final class ChorusFlower extends Flowable{ private int $age = self::MIN_AGE; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_AGE, self::MAX_AGE, $this->age); } diff --git a/src/block/CocoaBlock.php b/src/block/CocoaBlock.php index 9aa4157b7..aafce3169 100644 --- a/src/block/CocoaBlock.php +++ b/src/block/CocoaBlock.php @@ -46,7 +46,7 @@ class CocoaBlock extends Transparent{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Crops.php b/src/block/Crops.php index 1ed62985d..8949e663b 100644 --- a/src/block/Crops.php +++ b/src/block/Crops.php @@ -38,7 +38,7 @@ abstract class Crops extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/DaylightSensor.php b/src/block/DaylightSensor.php index 2a55500c6..e1f78aef5 100644 --- a/src/block/DaylightSensor.php +++ b/src/block/DaylightSensor.php @@ -41,7 +41,7 @@ class DaylightSensor extends Transparent{ protected bool $inverted = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); $w->bool($this->inverted); } diff --git a/src/block/DetectorRail.php b/src/block/DetectorRail.php index 8af12276b..3bd791d10 100644 --- a/src/block/DetectorRail.php +++ b/src/block/DetectorRail.php @@ -28,8 +28,8 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class DetectorRail extends StraightOnlyRail{ protected bool $activated = false; - protected function describeState(RuntimeDataDescriber $w) : void{ - parent::describeState($w); + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ + parent::describeBlockOnlyState($w); $w->bool($this->activated); } diff --git a/src/block/Dirt.php b/src/block/Dirt.php index 33f3800d7..539454b41 100644 --- a/src/block/Dirt.php +++ b/src/block/Dirt.php @@ -45,7 +45,7 @@ class Dirt extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->dirtType($this->dirtType); } diff --git a/src/block/Door.php b/src/block/Door.php index d3a2abfb6..06da8e68b 100644 --- a/src/block/Door.php +++ b/src/block/Door.php @@ -41,7 +41,7 @@ class Door extends Transparent{ protected bool $hingeRight = false; protected bool $open = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->hingeRight); diff --git a/src/block/DoublePlant.php b/src/block/DoublePlant.php index cb341adad..aab6d5b04 100644 --- a/src/block/DoublePlant.php +++ b/src/block/DoublePlant.php @@ -33,7 +33,7 @@ use pocketmine\world\BlockTransaction; class DoublePlant extends Flowable{ protected bool $top = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->top); } diff --git a/src/block/EndPortalFrame.php b/src/block/EndPortalFrame.php index 5a6537d4d..08c903f11 100644 --- a/src/block/EndPortalFrame.php +++ b/src/block/EndPortalFrame.php @@ -35,7 +35,7 @@ class EndPortalFrame extends Opaque{ protected bool $eye = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->eye); } diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 3d293fa7e..6fcdcd8bc 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -37,7 +37,7 @@ class Farmland extends Transparent{ protected int $wetness = 0; //"moisture" blockstate property in PC - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_WETNESS, $this->wetness); } diff --git a/src/block/FenceGate.php b/src/block/FenceGate.php index 7ad96d842..c22edabc4 100644 --- a/src/block/FenceGate.php +++ b/src/block/FenceGate.php @@ -42,7 +42,7 @@ class FenceGate extends Transparent{ protected bool $open = false; protected bool $inWall = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->open); $w->bool($this->inWall); diff --git a/src/block/FillableCauldron.php b/src/block/FillableCauldron.php index b6d9b995e..84705ea9d 100644 --- a/src/block/FillableCauldron.php +++ b/src/block/FillableCauldron.php @@ -37,7 +37,7 @@ abstract class FillableCauldron extends Transparent{ private int $fillLevel = self::MIN_FILL_LEVEL; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_FILL_LEVEL, self::MAX_FILL_LEVEL, $this->fillLevel); } diff --git a/src/block/Fire.php b/src/block/Fire.php index 6f4332261..9e485fa61 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -39,7 +39,7 @@ class Fire extends BaseFire{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/FloorCoralFan.php b/src/block/FloorCoralFan.php index 173c87a08..efa560467 100644 --- a/src/block/FloorCoralFan.php +++ b/src/block/FloorCoralFan.php @@ -37,7 +37,7 @@ use function rad2deg; final class FloorCoralFan extends BaseCoral{ private int $axis = Axis::X; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/Froglight.php b/src/block/Froglight.php index dcd14c900..f33fc8261 100644 --- a/src/block/Froglight.php +++ b/src/block/Froglight.php @@ -35,7 +35,7 @@ final class Froglight extends SimplePillar{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->froglightType($this->froglightType); } diff --git a/src/block/FrostedIce.php b/src/block/FrostedIce.php index 5953ce8ae..ba8c7b536 100644 --- a/src/block/FrostedIce.php +++ b/src/block/FrostedIce.php @@ -32,7 +32,7 @@ class FrostedIce extends Ice{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Furnace.php b/src/block/Furnace.php index f830a3835..d943f8cc6 100644 --- a/src/block/Furnace.php +++ b/src/block/Furnace.php @@ -46,7 +46,7 @@ class Furnace extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->lit); } diff --git a/src/block/Hopper.php b/src/block/Hopper.php index 778e5c2a1..ea000503c 100644 --- a/src/block/Hopper.php +++ b/src/block/Hopper.php @@ -39,7 +39,7 @@ class Hopper extends Transparent{ private int $facing = Facing::DOWN; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::UP); $w->bool($this->powered); } diff --git a/src/block/ItemFrame.php b/src/block/ItemFrame.php index 94754910f..f14720fe4 100644 --- a/src/block/ItemFrame.php +++ b/src/block/ItemFrame.php @@ -50,7 +50,7 @@ class ItemFrame extends Flowable{ protected int $itemRotation = 0; protected float $itemDropChance = 1.0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); $w->bool($this->hasMap); } diff --git a/src/block/Lantern.php b/src/block/Lantern.php index a5d8031dd..bc50c3cb6 100644 --- a/src/block/Lantern.php +++ b/src/block/Lantern.php @@ -43,7 +43,7 @@ class Lantern extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->hanging); } diff --git a/src/block/Leaves.php b/src/block/Leaves.php index b83de2dde..62a30a3e8 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -47,7 +47,7 @@ class Leaves extends Transparent{ $this->leavesType = $leavesType; } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->noDecay); $w->bool($this->checkDecay); } diff --git a/src/block/Lectern.php b/src/block/Lectern.php index ae1df8549..a80426acf 100644 --- a/src/block/Lectern.php +++ b/src/block/Lectern.php @@ -46,7 +46,7 @@ class Lectern extends Transparent{ protected bool $producingSignal = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->producingSignal); } diff --git a/src/block/Lever.php b/src/block/Lever.php index 284a646d9..5d86ac7d2 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -44,7 +44,7 @@ class Lever extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->leverFacing($this->facing); $w->bool($this->activated); } diff --git a/src/block/Light.php b/src/block/Light.php index 963c00385..239e1c048 100644 --- a/src/block/Light.php +++ b/src/block/Light.php @@ -34,7 +34,7 @@ final class Light extends Flowable{ private int $level = self::MAX_LIGHT_LEVEL; - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, self::MIN_LIGHT_LEVEL, self::MAX_LIGHT_LEVEL, $this->level); } diff --git a/src/block/Liquid.php b/src/block/Liquid.php index ba04510a0..98f1d5627 100644 --- a/src/block/Liquid.php +++ b/src/block/Liquid.php @@ -48,7 +48,7 @@ abstract class Liquid extends Transparent{ protected int $decay = 0; //PC "level" property protected bool $still = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, 0, self::MAX_DECAY, $this->decay); $w->bool($this->falling); $w->bool($this->still); diff --git a/src/block/NetherPortal.php b/src/block/NetherPortal.php index 0c507a166..a2524914a 100644 --- a/src/block/NetherPortal.php +++ b/src/block/NetherPortal.php @@ -34,7 +34,7 @@ class NetherPortal extends Transparent{ protected int $axis = Axis::X; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalAxis($this->axis); } diff --git a/src/block/NetherVines.php b/src/block/NetherVines.php index 34ab406c6..adf611785 100644 --- a/src/block/NetherVines.php +++ b/src/block/NetherVines.php @@ -52,7 +52,7 @@ class NetherVines extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(5, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/NetherWartPlant.php b/src/block/NetherWartPlant.php index 787b1f5f8..76de2a470 100644 --- a/src/block/NetherWartPlant.php +++ b/src/block/NetherWartPlant.php @@ -37,7 +37,7 @@ class NetherWartPlant extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/Rail.php b/src/block/Rail.php index 12b47e6ea..f516902f0 100644 --- a/src/block/Rail.php +++ b/src/block/Rail.php @@ -34,7 +34,7 @@ class Rail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->railShape($this->railShape); } diff --git a/src/block/RedMushroomBlock.php b/src/block/RedMushroomBlock.php index 07afbfc21..ecac38e18 100644 --- a/src/block/RedMushroomBlock.php +++ b/src/block/RedMushroomBlock.php @@ -36,7 +36,7 @@ class RedMushroomBlock extends Opaque{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ //these blocks always drop as all-cap, but may exist in other forms in the inventory (particularly creative), //so this information needs to be kept in the type info $w->mushroomBlockType($this->mushroomBlockType); diff --git a/src/block/RedstoneComparator.php b/src/block/RedstoneComparator.php index 0f8fee840..2158f1a84 100644 --- a/src/block/RedstoneComparator.php +++ b/src/block/RedstoneComparator.php @@ -44,7 +44,7 @@ class RedstoneComparator extends Flowable{ protected bool $isSubtractMode = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->isSubtractMode); $w->bool($this->powered); diff --git a/src/block/RedstoneLamp.php b/src/block/RedstoneLamp.php index 1d0ff7345..58098c395 100644 --- a/src/block/RedstoneLamp.php +++ b/src/block/RedstoneLamp.php @@ -29,7 +29,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneLamp extends Opaque{ use PoweredByRedstoneTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->powered); } diff --git a/src/block/RedstoneOre.php b/src/block/RedstoneOre.php index 13cf84205..74708c2bd 100644 --- a/src/block/RedstoneOre.php +++ b/src/block/RedstoneOre.php @@ -33,7 +33,7 @@ use function mt_rand; class RedstoneOre extends Opaque{ protected bool $lit = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/RedstoneRepeater.php b/src/block/RedstoneRepeater.php index d1ad17eeb..d4f145238 100644 --- a/src/block/RedstoneRepeater.php +++ b/src/block/RedstoneRepeater.php @@ -43,7 +43,7 @@ class RedstoneRepeater extends Flowable{ protected int $delay = self::MIN_DELAY; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->boundedInt(2, self::MIN_DELAY, self::MAX_DELAY, $this->delay); $w->bool($this->powered); diff --git a/src/block/RedstoneTorch.php b/src/block/RedstoneTorch.php index f85c6c07a..b30c011d4 100644 --- a/src/block/RedstoneTorch.php +++ b/src/block/RedstoneTorch.php @@ -28,8 +28,8 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class RedstoneTorch extends Torch{ protected bool $lit = true; - protected function describeState(RuntimeDataDescriber $w) : void{ - parent::describeState($w); + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ + parent::describeBlockOnlyState($w); $w->bool($this->lit); } diff --git a/src/block/Sapling.php b/src/block/Sapling.php index 73ebfeb1f..b1f255f0d 100644 --- a/src/block/Sapling.php +++ b/src/block/Sapling.php @@ -46,7 +46,7 @@ class Sapling extends Flowable{ $this->saplingType = $saplingType; } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->ready); } diff --git a/src/block/SeaPickle.php b/src/block/SeaPickle.php index c2955cbaa..4e667038e 100644 --- a/src/block/SeaPickle.php +++ b/src/block/SeaPickle.php @@ -38,7 +38,7 @@ class SeaPickle extends Transparent{ protected int $count = self::MIN_COUNT; protected bool $underwater = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(2, self::MIN_COUNT, self::MAX_COUNT, $this->count); $w->bool($this->underwater); } diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index e979b09e5..b2f53e0a7 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -34,7 +34,7 @@ use pocketmine\world\BlockTransaction; class ShulkerBox extends Opaque{ use AnyFacingTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ //NOOP - we don't read or write facing here, because the tile persists it } diff --git a/src/block/SimplePressurePlate.php b/src/block/SimplePressurePlate.php index f4ad37ea4..e4278410d 100644 --- a/src/block/SimplePressurePlate.php +++ b/src/block/SimplePressurePlate.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; abstract class SimplePressurePlate extends PressurePlate{ protected bool $pressed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->pressed); } diff --git a/src/block/Skull.php b/src/block/Skull.php index 926c5cc80..6566da733 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -49,11 +49,11 @@ class Skull extends Flowable{ parent::__construct($idInfo, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->skullType($this->skullType); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Slab.php b/src/block/Slab.php index 265dce695..cbf5dce18 100644 --- a/src/block/Slab.php +++ b/src/block/Slab.php @@ -41,7 +41,7 @@ class Slab extends Transparent{ parent::__construct($idInfo, $name . " Slab", $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->slabType($this->slabType); } diff --git a/src/block/SnowLayer.php b/src/block/SnowLayer.php index ec08620c0..f2425455c 100644 --- a/src/block/SnowLayer.php +++ b/src/block/SnowLayer.php @@ -46,7 +46,7 @@ class SnowLayer extends Flowable implements Fallable{ protected int $layers = self::MIN_LAYERS; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::MIN_LAYERS, self::MAX_LAYERS, $this->layers); } diff --git a/src/block/Sponge.php b/src/block/Sponge.php index 5b283d18b..915c98ee1 100644 --- a/src/block/Sponge.php +++ b/src/block/Sponge.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; class Sponge extends Opaque{ protected bool $wet = false; - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->bool($this->wet); } diff --git a/src/block/Stair.php b/src/block/Stair.php index 971dbc43a..a20746721 100644 --- a/src/block/Stair.php +++ b/src/block/Stair.php @@ -46,7 +46,7 @@ class Stair extends Transparent{ parent::__construct($idInfo, $name, $typeInfo); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->upsideDown); } diff --git a/src/block/StraightOnlyRail.php b/src/block/StraightOnlyRail.php index fe3d19b25..054983dbc 100644 --- a/src/block/StraightOnlyRail.php +++ b/src/block/StraightOnlyRail.php @@ -36,7 +36,7 @@ class StraightOnlyRail extends BaseRail{ private int $railShape = BlockLegacyMetadata::RAIL_STRAIGHT_NORTH_SOUTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->straightOnlyRailShape($this->railShape); } diff --git a/src/block/Sugarcane.php b/src/block/Sugarcane.php index b71a8e9ea..4cc5989a7 100644 --- a/src/block/Sugarcane.php +++ b/src/block/Sugarcane.php @@ -38,7 +38,7 @@ class Sugarcane extends Flowable{ protected int $age = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, self::MAX_AGE, $this->age); } diff --git a/src/block/SweetBerryBush.php b/src/block/SweetBerryBush.php index 13e710f40..b75a343ec 100644 --- a/src/block/SweetBerryBush.php +++ b/src/block/SweetBerryBush.php @@ -45,7 +45,7 @@ class SweetBerryBush extends Flowable{ protected int $age = self::STAGE_SAPLING; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(3, self::STAGE_SAPLING, self::STAGE_MATURE, $this->age); } diff --git a/src/block/TNT.php b/src/block/TNT.php index d50028f92..a0256bb67 100644 --- a/src/block/TNT.php +++ b/src/block/TNT.php @@ -45,11 +45,11 @@ class TNT extends Opaque{ protected bool $unstable = false; //TODO: Usage unclear, seems to be a weird hack in vanilla protected bool $worksUnderwater = false; - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->bool($this->worksUnderwater); } - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->unstable); } diff --git a/src/block/Torch.php b/src/block/Torch.php index b7bc5136f..163c0d115 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -36,7 +36,7 @@ class Torch extends Flowable{ protected int $facing = Facing::UP; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facingExcept($this->facing, Facing::DOWN); } diff --git a/src/block/Trapdoor.php b/src/block/Trapdoor.php index 79e3f0e8f..d12a922df 100644 --- a/src/block/Trapdoor.php +++ b/src/block/Trapdoor.php @@ -40,7 +40,7 @@ class Trapdoor extends Transparent{ protected bool $open = false; protected bool $top = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->top); $w->bool($this->open); diff --git a/src/block/Tripwire.php b/src/block/Tripwire.php index b8b3e732d..2ddad2784 100644 --- a/src/block/Tripwire.php +++ b/src/block/Tripwire.php @@ -33,7 +33,7 @@ class Tripwire extends Flowable{ protected bool $connected = false; protected bool $disarmed = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->triggered); $w->bool($this->suspended); $w->bool($this->connected); diff --git a/src/block/TripwireHook.php b/src/block/TripwireHook.php index 2ad6057b8..325819825 100644 --- a/src/block/TripwireHook.php +++ b/src/block/TripwireHook.php @@ -38,7 +38,7 @@ class TripwireHook extends Flowable{ protected bool $connected = false; protected bool $powered = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); $w->bool($this->connected); $w->bool($this->powered); diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index 4523fd7ec..a8cbd2d40 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -38,7 +38,7 @@ class UnknownBlock extends Transparent{ $this->stateData = $stateData; } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ //use type instead of state, so we don't lose any information like colour //this might be an improperly registered plugin block $w->int(Block::INTERNAL_STATE_DATA_BITS, $this->stateData); diff --git a/src/block/Vine.php b/src/block/Vine.php index 53d4b1efe..cc516bbca 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -39,7 +39,7 @@ class Vine extends Flowable{ /** @var int[] */ protected array $faces = []; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacingFlags($this->faces); } diff --git a/src/block/Wall.php b/src/block/Wall.php index 8b128c525..30584c92b 100644 --- a/src/block/Wall.php +++ b/src/block/Wall.php @@ -42,7 +42,7 @@ class Wall extends Transparent{ protected array $connections = []; protected bool $post = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->wallConnections($this->connections); $w->bool($this->post); } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index c7e350c47..432dd5ddb 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -36,7 +36,7 @@ use pocketmine\world\BlockTransaction; final class WallCoralFan extends BaseCoral{ use HorizontalFacingTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/Wood.php b/src/block/Wood.php index 3fbae40da..127533b98 100644 --- a/src/block/Wood.php +++ b/src/block/Wood.php @@ -38,7 +38,7 @@ class Wood extends Opaque{ private bool $stripped = false; - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->bool($this->stripped); } diff --git a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php index 783517dcd..fe61f652c 100644 --- a/src/block/utils/AnalogRedstoneSignalEmitterTrait.php +++ b/src/block/utils/AnalogRedstoneSignalEmitterTrait.php @@ -28,7 +28,7 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait AnalogRedstoneSignalEmitterTrait{ protected int $signalStrength = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->signalStrength); } diff --git a/src/block/utils/AnyFacingTrait.php b/src/block/utils/AnyFacingTrait.php index 78fdd9bf9..4805b7b7c 100644 --- a/src/block/utils/AnyFacingTrait.php +++ b/src/block/utils/AnyFacingTrait.php @@ -29,7 +29,7 @@ use pocketmine\math\Facing; trait AnyFacingTrait{ protected int $facing = Facing::DOWN; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->facing($this->facing); } diff --git a/src/block/utils/CandleTrait.php b/src/block/utils/CandleTrait.php index 60dd61849..99e164a84 100644 --- a/src/block/utils/CandleTrait.php +++ b/src/block/utils/CandleTrait.php @@ -39,7 +39,7 @@ use pocketmine\world\sound\FlintSteelSound; trait CandleTrait{ private bool $lit = false; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->bool($this->lit); } diff --git a/src/block/utils/ColoredTrait.php b/src/block/utils/ColoredTrait.php index b9a14bee1..dab86fb66 100644 --- a/src/block/utils/ColoredTrait.php +++ b/src/block/utils/ColoredTrait.php @@ -30,8 +30,8 @@ trait ColoredTrait{ /** @var DyeColor */ private $color; - /** @see Block::describeType() */ - public function describeType(RuntimeDataDescriber $w) : void{ + /** @see Block::describeBlockItemState() */ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/block/utils/CopperTrait.php b/src/block/utils/CopperTrait.php index 11c0178f9..5fede94dd 100644 --- a/src/block/utils/CopperTrait.php +++ b/src/block/utils/CopperTrait.php @@ -44,7 +44,7 @@ trait CopperTrait{ parent::__construct($identifier, $name, $typeInfo); } - public function describeType(RuntimeDataDescriber $w) : void{ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->copperOxidation($this->oxidation); $w->bool($this->waxed); } diff --git a/src/block/utils/CoralTypeTrait.php b/src/block/utils/CoralTypeTrait.php index 4607831c8..5dcd539d4 100644 --- a/src/block/utils/CoralTypeTrait.php +++ b/src/block/utils/CoralTypeTrait.php @@ -30,8 +30,8 @@ trait CoralTypeTrait{ protected CoralType $coralType; protected bool $dead = false; - /** @see Block::describeType() */ - public function describeType(RuntimeDataDescriber $w) : void{ + /** @see Block::describeBlockItemState() */ + public function describeBlockItemState(RuntimeDataDescriber $w) : void{ $w->coralType($this->coralType); $w->bool($this->dead); } diff --git a/src/block/utils/HorizontalFacingTrait.php b/src/block/utils/HorizontalFacingTrait.php index b1558b154..a5bd6dcf4 100644 --- a/src/block/utils/HorizontalFacingTrait.php +++ b/src/block/utils/HorizontalFacingTrait.php @@ -30,7 +30,7 @@ use pocketmine\math\Facing; trait HorizontalFacingTrait{ protected int $facing = Facing::NORTH; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->horizontalFacing($this->facing); } diff --git a/src/block/utils/PillarRotationTrait.php b/src/block/utils/PillarRotationTrait.php index 0fc206a20..3f0117dec 100644 --- a/src/block/utils/PillarRotationTrait.php +++ b/src/block/utils/PillarRotationTrait.php @@ -35,7 +35,7 @@ use pocketmine\world\BlockTransaction; trait PillarRotationTrait{ protected int $axis = Axis::Y; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->axis($this->axis); } diff --git a/src/block/utils/RailPoweredByRedstoneTrait.php b/src/block/utils/RailPoweredByRedstoneTrait.php index a95fea253..05384f611 100644 --- a/src/block/utils/RailPoweredByRedstoneTrait.php +++ b/src/block/utils/RailPoweredByRedstoneTrait.php @@ -28,8 +28,8 @@ use pocketmine\data\runtime\RuntimeDataDescriber; trait RailPoweredByRedstoneTrait{ use PoweredByRedstoneTrait; - protected function describeState(RuntimeDataDescriber $w) : void{ - parent::describeState($w); + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ + parent::describeBlockOnlyState($w); $w->bool($this->powered); } } diff --git a/src/block/utils/SignLikeRotationTrait.php b/src/block/utils/SignLikeRotationTrait.php index 2fed25910..233c75095 100644 --- a/src/block/utils/SignLikeRotationTrait.php +++ b/src/block/utils/SignLikeRotationTrait.php @@ -30,7 +30,7 @@ trait SignLikeRotationTrait{ /** @var int */ private $rotation = 0; - protected function describeState(RuntimeDataDescriber $w) : void{ + protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ $w->boundedInt(4, 0, 15, $this->rotation); } diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index 1b1428b05..4ae32e769 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -103,7 +103,7 @@ class CraftingManager{ */ public static function sort(Item $i1, Item $i2) : int{ //Use spaceship operator to compare each property, then try the next one if they are equivalent. - ($retval = $i1->getTypeId() <=> $i2->getTypeId()) === 0 && ($retval = $i1->computeTypeData() <=> $i2->computeTypeData()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; + ($retval = $i1->getTypeId() <=> $i2->getTypeId()) === 0 && ($retval = $i1->computeStateData() <=> $i2->computeStateData()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; return $retval; } @@ -142,7 +142,7 @@ class CraftingManager{ foreach($outputs as $o){ //count is not written because the outputs might be from multiple repetitions of a single recipe //this reduces the accuracy of the hash, but it won't matter in most cases. - $result->putVarInt(morton2d_encode($o->getTypeId(), $o->computeTypeData())); + $result->putVarInt(morton2d_encode($o->getTypeId(), $o->computeStateData())); $result->put((new LittleEndianNbtSerializer())->write(new TreeRoot($o->getNamedTag()))); } @@ -283,8 +283,8 @@ class CraftingManager{ } public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ - $inputHash = morton2d_encode($input->getTypeId(), $input->computeTypeData()); - $ingredientHash = morton2d_encode($ingredient->getTypeId(), $ingredient->computeTypeData()); + $inputHash = morton2d_encode($input->getTypeId(), $input->computeStateData()); + $ingredientHash = morton2d_encode($ingredient->getTypeId(), $ingredient->computeStateData()); $cached = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; if($cached !== null){ return $cached; diff --git a/src/crafting/FurnaceRecipeManager.php b/src/crafting/FurnaceRecipeManager.php index 74e2817b6..951c55681 100644 --- a/src/crafting/FurnaceRecipeManager.php +++ b/src/crafting/FurnaceRecipeManager.php @@ -66,7 +66,7 @@ final class FurnaceRecipeManager{ } public function match(Item $input) : ?FurnaceRecipe{ - $index = morton2d_encode($input->getTypeId(), $input->computeTypeData()); + $index = morton2d_encode($input->getTypeId(), $input->computeStateData()); $simpleRecipe = $this->lookupCache[$index] ?? null; if($simpleRecipe !== null){ return $simpleRecipe; diff --git a/src/item/Banner.php b/src/item/Banner.php index 5de6bd909..250f2099e 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -63,7 +63,7 @@ class Banner extends ItemBlockWallOrFloor{ return $this; } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/CoralFan.php b/src/item/CoralFan.php index 7ea31d53d..294eb6d6e 100644 --- a/src/item/CoralFan.php +++ b/src/item/CoralFan.php @@ -33,7 +33,7 @@ use pocketmine\math\Facing; final class CoralFan extends Item{ use CoralTypeTrait { - describeType as encodeCoralType; + describeBlockItemState as encodeCoralType; } public function __construct(ItemIdentifier $identifier){ @@ -41,7 +41,7 @@ final class CoralFan extends Item{ parent::__construct($identifier, VanillaBlocks::CORAL_FAN()->getName()); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ //this is aliased to ensure a compile error in case the functions in Item or Block start to differ in future //right now we can directly reuse encodeType from CoralTypeTrait, but that might silently stop working if Item //were to be altered. CoralTypeTrait was originally intended for blocks, so it's better not to assume anything. diff --git a/src/item/Dye.php b/src/item/Dye.php index 969c66eee..f71b44e3a 100644 --- a/src/item/Dye.php +++ b/src/item/Dye.php @@ -34,7 +34,7 @@ class Dye extends Item{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->dyeColor($this->color); } diff --git a/src/item/Item.php b/src/item/Item.php index c052331a3..6fe45fccc 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -469,13 +469,17 @@ class Item implements \JsonSerializable{ return $this->identifier->getTypeId(); } - final public function computeTypeData() : int{ + final public function computeStateData() : int{ $writer = new RuntimeDataWriter(16); //TODO: max bits should be a constant instead of being hardcoded all over the place - $this->describeType($writer); + $this->describeState($writer); return $writer->getValue(); } - protected function describeType(RuntimeDataDescriber $w) : void{ + /** + * Describes state properties of the item, such as colour, skull type, etc. + * This allows associating basic extra data with the item at runtime in a more efficient format than NBT. + */ + protected function describeState(RuntimeDataDescriber $w) : void{ //NOOP } @@ -627,7 +631,7 @@ class Item implements \JsonSerializable{ */ final public function equals(Item $item, bool $checkDamage = true, bool $checkCompound = true) : bool{ return $this->getTypeId() === $item->getTypeId() && - $this->computeTypeData() === $item->computeTypeData() && + $this->computeStateData() === $item->computeStateData() && (!$checkCompound || $this->getNamedTag()->equals($item->getNamedTag())); } @@ -646,7 +650,7 @@ class Item implements \JsonSerializable{ } final public function __toString() : string{ - return "Item " . $this->name . " (" . $this->getTypeId() . ":" . $this->computeTypeData() . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); + return "Item " . $this->name . " (" . $this->getTypeId() . ":" . $this->computeStateData() . ")x" . $this->count . ($this->hasNamedTag() ? " tags:0x" . base64_encode((new LittleEndianNbtSerializer())->write(new TreeRoot($this->getNamedTag()))) : ""); } /** diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index 16c4badf3..fbbe2efeb 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -39,8 +39,8 @@ final class ItemBlock extends Item{ parent::__construct(ItemIdentifier::fromBlock($block), $block->getName()); } - protected function describeType(RuntimeDataDescriber $w) : void{ - $this->block->describeType($w); + protected function describeState(RuntimeDataDescriber $w) : void{ + $this->block->describeBlockItemState($w); } public function getBlock(?int $clickedFace = null) : Block{ diff --git a/src/item/Medicine.php b/src/item/Medicine.php index 099af6d3c..a15ac0353 100644 --- a/src/item/Medicine.php +++ b/src/item/Medicine.php @@ -36,7 +36,7 @@ class Medicine extends Item implements ConsumableItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->medicineType($this->medicineType); } diff --git a/src/item/Potion.php b/src/item/Potion.php index 7fcbeaa04..0ef339866 100644 --- a/src/item/Potion.php +++ b/src/item/Potion.php @@ -36,7 +36,7 @@ class Potion extends Item implements ConsumableItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/SplashPotion.php b/src/item/SplashPotion.php index a99d7541d..c54562f2b 100644 --- a/src/item/SplashPotion.php +++ b/src/item/SplashPotion.php @@ -38,7 +38,7 @@ class SplashPotion extends ProjectileItem{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->potionType($this->potionType); } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index 72bc4d6a9..c2905a40b 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1540,7 +1540,7 @@ final class StringToItemParser extends StringToTParser{ public function register(string $alias, \Closure $callback) : void{ parent::register($alias, $callback); $item = $callback($alias); - $this->reverseMap[$item->getTypeId()][$item->computeTypeData()][$alias] = true; + $this->reverseMap[$item->getTypeId()][$item->computeStateData()][$alias] = true; } /** @phpstan-param \Closure(string $input) : Block $callback */ @@ -1559,7 +1559,7 @@ final class StringToItemParser extends StringToTParser{ * @phpstan-return list */ public function lookupAliases(Item $item) : array{ - $aliases = $this->reverseMap[$item->getTypeId()][$item->computeTypeData()] ?? []; + $aliases = $this->reverseMap[$item->getTypeId()][$item->computeStateData()] ?? []; return array_keys($aliases); } diff --git a/src/item/SuspiciousStew.php b/src/item/SuspiciousStew.php index 1ecb94d7b..a2adc0b61 100644 --- a/src/item/SuspiciousStew.php +++ b/src/item/SuspiciousStew.php @@ -34,7 +34,7 @@ class SuspiciousStew extends Food{ parent::__construct($identifier, $name); } - protected function describeType(RuntimeDataDescriber $w) : void{ + protected function describeState(RuntimeDataDescriber $w) : void{ $w->suspiciousStewType($this->suspiciousStewType); } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index b6c7909b6..6c31f015a 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -222,7 +222,7 @@ class TypeConverter{ if($nbt === null){ $nbt = new CompoundTag(); } - $nbt->setLong(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeTypeData())); + $nbt->setLong(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeStateData())); }else{ [$id, $meta, $blockRuntimeId] = $idMeta; } diff --git a/src/player/Player.php b/src/player/Player.php index a858a4f21..561116cf2 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -687,7 +687,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function getItemCooldownExpiry(Item $item) : int{ $this->checkItemCooldowns(); - return $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())] ?? 0; + return $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())] ?? 0; } /** @@ -695,7 +695,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function hasItemCooldown(Item $item) : bool{ $this->checkItemCooldowns(); - return isset($this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())]); + return isset($this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())]); } /** @@ -704,7 +704,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ public function resetItemCooldown(Item $item, ?int $ticks = null) : void{ $ticks = $ticks ?? $item->getCooldownTicks(); if($ticks > 0){ - $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeTypeData())] = $this->server->getTick() + $ticks; + $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())] = $this->server->getTick() + $ticks; } } From c9bb4335a1b722c0c2d7fbe1b759ff2656635f1b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 16 May 2023 14:14:18 +0100 Subject: [PATCH 642/692] Item: added getStateId(), removed state data from public API state data was only used for indexing stuff along with state ID anyway, so it makes more sense to lock it away in here instead. --- src/crafting/CraftingManager.php | 9 ++++----- src/crafting/FurnaceRecipeManager.php | 3 +-- src/item/Item.php | 10 +++++++--- src/item/StringToItemParser.php | 4 ++-- src/network/mcpe/convert/TypeConverter.php | 3 +-- src/player/Player.php | 7 +++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/crafting/CraftingManager.php b/src/crafting/CraftingManager.php index 4ae32e769..74bc2ba10 100644 --- a/src/crafting/CraftingManager.php +++ b/src/crafting/CraftingManager.php @@ -29,7 +29,6 @@ use pocketmine\nbt\TreeRoot; use pocketmine\utils\BinaryStream; use pocketmine\utils\DestructorCallbackTrait; use pocketmine\utils\ObjectSet; -use function morton2d_encode; use function usort; class CraftingManager{ @@ -103,7 +102,7 @@ class CraftingManager{ */ public static function sort(Item $i1, Item $i2) : int{ //Use spaceship operator to compare each property, then try the next one if they are equivalent. - ($retval = $i1->getTypeId() <=> $i2->getTypeId()) === 0 && ($retval = $i1->computeStateData() <=> $i2->computeStateData()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; + ($retval = $i1->getStateId() <=> $i2->getStateId()) === 0 && ($retval = $i1->getCount() <=> $i2->getCount()) === 0; return $retval; } @@ -142,7 +141,7 @@ class CraftingManager{ foreach($outputs as $o){ //count is not written because the outputs might be from multiple repetitions of a single recipe //this reduces the accuracy of the hash, but it won't matter in most cases. - $result->putVarInt(morton2d_encode($o->getTypeId(), $o->computeStateData())); + $result->putVarInt($o->getStateId()); $result->put((new LittleEndianNbtSerializer())->write(new TreeRoot($o->getNamedTag()))); } @@ -283,8 +282,8 @@ class CraftingManager{ } public function matchBrewingRecipe(Item $input, Item $ingredient) : ?BrewingRecipe{ - $inputHash = morton2d_encode($input->getTypeId(), $input->computeStateData()); - $ingredientHash = morton2d_encode($ingredient->getTypeId(), $ingredient->computeStateData()); + $inputHash = $input->getStateId(); + $ingredientHash = $ingredient->getStateId(); $cached = $this->brewingRecipeCache[$inputHash][$ingredientHash] ?? null; if($cached !== null){ return $cached; diff --git a/src/crafting/FurnaceRecipeManager.php b/src/crafting/FurnaceRecipeManager.php index 951c55681..d13465b44 100644 --- a/src/crafting/FurnaceRecipeManager.php +++ b/src/crafting/FurnaceRecipeManager.php @@ -25,7 +25,6 @@ namespace pocketmine\crafting; use pocketmine\item\Item; use pocketmine\utils\ObjectSet; -use function morton2d_encode; final class FurnaceRecipeManager{ /** @var FurnaceRecipe[] */ @@ -66,7 +65,7 @@ final class FurnaceRecipeManager{ } public function match(Item $input) : ?FurnaceRecipe{ - $index = morton2d_encode($input->getTypeId(), $input->computeStateData()); + $index = $input->getStateId(); $simpleRecipe = $this->lookupCache[$index] ?? null; if($simpleRecipe !== null){ return $simpleRecipe; diff --git a/src/item/Item.php b/src/item/Item.php index 6fe45fccc..35b46cd90 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -55,6 +55,7 @@ use function count; use function gettype; use function hex2bin; use function is_string; +use function morton2d_encode; class Item implements \JsonSerializable{ use ItemEnchantmentHandlingTrait; @@ -469,7 +470,11 @@ class Item implements \JsonSerializable{ return $this->identifier->getTypeId(); } - final public function computeStateData() : int{ + final public function getStateId() : int{ + return morton2d_encode($this->identifier->getTypeId(), $this->computeStateData()); + } + + private function computeStateData() : int{ $writer = new RuntimeDataWriter(16); //TODO: max bits should be a constant instead of being hardcoded all over the place $this->describeState($writer); return $writer->getValue(); @@ -630,8 +635,7 @@ class Item implements \JsonSerializable{ * @param bool $checkCompound Whether to verify that the items' NBT match. */ final public function equals(Item $item, bool $checkDamage = true, bool $checkCompound = true) : bool{ - return $this->getTypeId() === $item->getTypeId() && - $this->computeStateData() === $item->computeStateData() && + return $this->getStateId() === $item->getStateId() && (!$checkCompound || $this->getNamedTag()->equals($item->getNamedTag())); } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c2905a40b..c98e29719 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1540,7 +1540,7 @@ final class StringToItemParser extends StringToTParser{ public function register(string $alias, \Closure $callback) : void{ parent::register($alias, $callback); $item = $callback($alias); - $this->reverseMap[$item->getTypeId()][$item->computeStateData()][$alias] = true; + $this->reverseMap[$item->getStateId()][$alias] = true; } /** @phpstan-param \Closure(string $input) : Block $callback */ @@ -1559,7 +1559,7 @@ final class StringToItemParser extends StringToTParser{ * @phpstan-return list */ public function lookupAliases(Item $item) : array{ - $aliases = $this->reverseMap[$item->getTypeId()][$item->computeStateData()] ?? []; + $aliases = $this->reverseMap[$item->getStateId()] ?? []; return array_keys($aliases); } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 6c31f015a..e01a5a10f 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -48,7 +48,6 @@ use pocketmine\utils\SingletonTrait; use pocketmine\world\format\io\GlobalBlockStateHandlers; use pocketmine\world\format\io\GlobalItemDataHandlers; use function get_class; -use function morton2d_encode; class TypeConverter{ use SingletonTrait; @@ -222,7 +221,7 @@ class TypeConverter{ if($nbt === null){ $nbt = new CompoundTag(); } - $nbt->setLong(self::PM_ID_TAG, morton2d_encode($itemStack->getTypeId(), $itemStack->computeStateData())); + $nbt->setLong(self::PM_ID_TAG, $itemStack->getStateId()); }else{ [$id, $meta, $blockRuntimeId] = $idMeta; } diff --git a/src/player/Player.php b/src/player/Player.php index 561116cf2..1f4237acf 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -146,7 +146,6 @@ use function max; use function mb_strlen; use function microtime; use function min; -use function morton2d_encode; use function preg_match; use function spl_object_id; use function sqrt; @@ -687,7 +686,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function getItemCooldownExpiry(Item $item) : int{ $this->checkItemCooldowns(); - return $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())] ?? 0; + return $this->usedItemsCooldown[$item->getStateId()] ?? 0; } /** @@ -695,7 +694,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ */ public function hasItemCooldown(Item $item) : bool{ $this->checkItemCooldowns(); - return isset($this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())]); + return isset($this->usedItemsCooldown[$item->getStateId()]); } /** @@ -704,7 +703,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ public function resetItemCooldown(Item $item, ?int $ticks = null) : void{ $ticks = $ticks ?? $item->getCooldownTicks(); if($ticks > 0){ - $this->usedItemsCooldown[morton2d_encode($item->getTypeId(), $item->computeStateData())] = $this->server->getTick() + $ticks; + $this->usedItemsCooldown[$item->getStateId()] = $this->server->getTick() + $ticks; } } From 9621836e36b9a9bb8c3ce1d339871bd6a07d7cc1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 17 May 2023 15:21:49 +0100 Subject: [PATCH 643/692] Clean up confusing mess around block and item overriding right now, I don't see an obvious reason to do this. If it turns out I was wrong later on, we can add functionality back, but we can't remove functionality after release. --- src/block/RuntimeBlockStateRegistry.php | 18 ++++++------------ .../convert/BlockObjectToStateSerializer.php | 3 +-- src/data/bedrock/item/ItemDeserializer.php | 3 +++ src/data/bedrock/item/ItemSerializer.php | 3 +-- tests/phpunit/block/BlockTest.php | 9 --------- 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index bc08c6a5d..e524fb262 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -81,22 +81,16 @@ class RuntimeBlockStateRegistry{ } /** - * Maps a block type to its corresponding type ID. This is necessary for the block to be recognized when loading - * from disk, and also when being read at runtime. + * Maps a block type's state permutations to its corresponding state IDs. This is necessary for the block to be + * recognized when fetching it by its state ID from chunks at runtime. * - * NOTE: If you are registering a new block type, you will need to add it to the creative inventory yourself - it - * will not automatically appear there. - * - * @param bool $override Whether to override existing registrations - * - * @throws \InvalidArgumentException if something attempted to override an already-registered block without specifying the - * $override parameter. + * @throws \InvalidArgumentException if the desired block type ID is already registered */ - public function register(Block $block, bool $override = false) : void{ + public function register(Block $block) : void{ $typeId = $block->getTypeId(); - if(!$override && isset($this->typeIndex[$typeId])){ - throw new \InvalidArgumentException("Block ID $typeId is already used by another block, and override was not requested"); + if(isset($this->typeIndex[$typeId])){ + throw new \InvalidArgumentException("Block ID $typeId is already used by another block"); } $this->typeIndex[$typeId] = clone $block; diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 02869fa75..fabb525d5 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -210,8 +210,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ */ public function map(Block $block, \Closure $serializer) : void{ if(isset($this->serializers[$block->getTypeId()])){ - //TODO: REMOVE ME - throw new AssumptionFailedError("Registering the same block twice!"); + throw new \InvalidArgumentException("Block type ID " . $block->getTypeId() . " already has a serializer registered"); } $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; } diff --git a/src/data/bedrock/item/ItemDeserializer.php b/src/data/bedrock/item/ItemDeserializer.php index f4f43e3cb..f7854313f 100644 --- a/src/data/bedrock/item/ItemDeserializer.php +++ b/src/data/bedrock/item/ItemDeserializer.php @@ -51,6 +51,9 @@ final class ItemDeserializer{ * @phpstan-param \Closure(Data) : Item $deserializer */ public function map(string $id, \Closure $deserializer) : void{ + if(isset($this->deserializers[$id])){ + throw new \InvalidArgumentException("Deserializer is already assigned for \"$id\""); + } $this->deserializers[$id] = $deserializer; } diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index fbdf2c41b..0b153c3da 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -67,8 +67,7 @@ final class ItemSerializer{ public function map(Item $item, \Closure $serializer) : void{ $index = $item->getTypeId(); if(isset($this->itemSerializers[$index])){ - //TODO: REMOVE ME - throw new AssumptionFailedError("Registering the same item twice!"); + throw new \InvalidArgumentException("Item type ID " . $index . " already has a serializer registered"); } $this->itemSerializers[$index][get_class($item)] = $serializer; } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index e10ef7fc7..81f1c3516 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -49,15 +49,6 @@ class BlockTest extends TestCase{ $this->blockFactory->register($block); } - /** - * Test registering a block deliberately overwriting another block works as expected - */ - public function testDeliberateOverrideBlock() : void{ - $block = new MyCustomBlock(new BlockIdentifier(BlockTypeIds::COBBLESTONE), "Cobblestone", new BlockTypeInfo(BlockBreakInfo::instant())); - $this->blockFactory->register($block, true); - self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->fromStateId($block->getStateId())); - } - /** * Test registering a new block which does not yet exist */ From 59ca7b75e172ff7ebab75bfdb23b18fa75016768 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 17 May 2023 15:32:38 +0100 Subject: [PATCH 644/692] Fixed PHPStan error --- src/item/StringToItemParser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index c98e29719..a6aea2ae2 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -1532,8 +1532,8 @@ final class StringToItemParser extends StringToTParser{ } /** - * @var true[][][] - * @phpstan-var array>> + * @var true[][] + * @phpstan-var array> */ private array $reverseMap = []; From b8abe34904beab1befd3707ac3fa4a9761533b89 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 17 May 2023 19:47:42 +0100 Subject: [PATCH 645/692] Release 5.0.0-BETA3 --- changelogs/5.0-beta.md | 101 +++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-beta.md b/changelogs/5.0-beta.md index e2e9079b5..27eef09a0 100644 --- a/changelogs/5.0-beta.md +++ b/changelogs/5.0-beta.md @@ -93,3 +93,104 @@ Released 11th April 2023. ## Internals - Make use of `Item->canStackWith()` instead of `Item->equals()` wherever possible, to make the code more readable. + +# 5.0.0-BETA3 +Released 17th May 2023. + +**This release includes changes from the following releases:** +- [4.19.1](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.19.md#4191) +- [4.19.2](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.19.md#4192) +- [4.19.3](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.19.md#4193) +- [4.20.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.20.md#4200) +- [4.20.1](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.20.md#4201) +- [4.20.2](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.20.md#4202) +- [4.20.3](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.20.md#4203) +- [4.20.4](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.20.md#4204) +- [4.21.0](https://github.com/pmmp/PocketMine-MP/blob/5.0.0-BETA3/changelogs/4.21.md#4210) + +## General +- Improved light propagation performance by 10-15%. + +## Fixes +- Fixed late initialization of coral type in `BaseCoral`. + +## Tools +- `tools/generate-blockstate-upgrade-schema.php` has the following improvements: + - Now generates better errors when inconsistent blockstate versions are encountered. + - Now generates more stable outputs when re-run on the same input. + - Output now uses `copiedState` in `remappedStates` where possible. This significantly reduces the size of the output for blocks with partially flattened states. + +## Gameplay +- The following blocks have been added: + - Cave Vines +- The following items have been added: + - Glow Berries + - Mangrove Boat (incomplete) +- Fixed flower pots being able to be placed inside flower pots. + +## API +### `pocketmine\block` +- The following API methods have been renamed: + - `Block->isSameType()` -> `Block->hasSameTypeId()` + - `Block->describeType()` -> `Block->describeBlockItemState()` + - `Block->describeState()` -> `Block->describeBlockOnlyState()` +- The following API methods have been removed: + - `Block->getRequiredTypeDataBits()` + - `Block->getRequiredStateDataBits()` +- The following API methods have been added: + - `public Block->generateStatePermutations() : \Generator` - yields all possible states this block type can be in (used for `RuntimeBlockStateRegistry`) +- The following API methods have signature changes: + - `Sapling::__construct()` now accepts `SaplingType $saplingType` instead of `TreeType $treeType` + - `RuntimeBlockStateRegistry->register()` no longer accepts an `$override` parameter. +- The following classes have been added: + - `utils\SaplingType` - enum of all sapling types +- `utils\TreeType` has been moved to `pocketmine\world\generator\object` namespace. + +### `pocketmine\data\bedrock\item\upgrade` +- The following API methods have been added: + - `public ItemIdMetaUpgrader->getSchemas() : array` - returns a list of loaded schemas indexed by schema ID + - `public ItemIdMetaUpgradeSchema->getRenamedIds() : array` - returns a map of old ID -> new ID + - `public ItemIdMetaUpgradeSchema->getRemappedMetas() : array>` - returns a map of old ID -> list of old meta -> new ID + +### `pocketmine\event\block` +- The following API methods have been added: + - `public BlockGrowEvent->getPlayer() : ?Player` - returns the player that triggered the block growth, or `null` if it was not triggered by a player +- The following API methods have signature changes: + - `BlockGrowEvent::__construct()` now accepts an optional `?Player $player` parameter. + +### `pocketmine\event\world` +- The following classes have been added: + - `WorldDisplayNameChangeEvent` - called when a world's display name is changed + +### `pocketmine\item` +- `Boat` now uses a new `BoatType` enum instead of `TreeType`. This is because not all tree types have an associated boat type, and some boat types are not made from tree materials (e.g. bamboo raft). + - The following API methods have been removed: + - `Boat->getWoodType()` + - The following API methods have been added: + - `public Boat->getType() : BoatType` + - `public Item->getStateId() : int` - returns an encoded ID containing the item type ID and encoded item state + - The following API methods have been renamed: + - `Item->describeType()` -> `Item->describeState()` + - The following classes have been added: + - `BoatType` - enum of all boat types + - The following API methods have signature changes: + - `BoatType::__construct()` now accepts `BoatType $boatType` instead of `TreeType $woodType`. + +### `pocketmine\world` +- The following API methods have been added: + - `public World->setDisplayName(string $name) : void` + +### `pocketmine\world\format` +- Fixed outdated documentation for various methods of `Chunk`. + +### `pocketmine\world\format\io\data` +- The following API interface requirements have been added: + - `public WorldData->setDisplayName(string $value) : void` + +## Internals +- Reduced global usage in world providers. In the future, we want to have blockstate deserializers etc. injected rather than being global singletons. +- `BlockStateUpgrader` now always updates the blockstate version, even if no changes were made. PM itself doesn't require this, but it's useful for tools to know whether to upgrade the data again (e.g. in testing scenarios). +- `BlockStateDictionary` memory usage is now reduced from 9 MB to 3.5 MB using various techniques, including string reuse and binary-encoded states. +- `RuntimeBlockMapping` has been renamed to `BlockTranslator`. +- Singletons in the `pocketmine\network\mcpe\convert` package have been centralized under `TypeConverter`. In the future, this will be injected where needed, allowing different converters to be used for different sessions (useful for multiversion). +- Overriding of serializers and deserializers of items and blocks is now consistently disallowed. Due to the lack of a good reason to allow overriding built-in blocks and items, this is no longer allowed. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 7c1433ee8..8dca56164 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-BETA3"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "beta"; private function __construct(){ From edcf0f840562e63330df6fa31666a5dbf950b89f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 17 May 2023 19:47:42 +0100 Subject: [PATCH 646/692] 5.0.0-BETA4 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 8dca56164..b89ac4b66 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-BETA3"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-BETA4"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; private function __construct(){ From db95bf8b9b1c0f31a53fe368e82e6116c8386dec Mon Sep 17 00:00:00 2001 From: ShockedPlot7560 Date: Thu, 18 May 2023 15:11:28 +0200 Subject: [PATCH 647/692] Caching creative inventory entries (#5703) Due to the high cost of Item::serializeCompoundTag(), it's very costly to rebuild this every time we need it. This is sent during the pre-spawn step, where we need to minimize costs as much as possible. --- src/inventory/CreativeInventory.php | 22 ++++++ src/network/mcpe/InventoryManager.php | 15 +--- .../mcpe/cache/CreativeInventoryCache.php | 69 +++++++++++++++++++ 3 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 src/network/mcpe/cache/CreativeInventoryCache.php diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 7d6754f8c..8892661a0 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -25,7 +25,9 @@ namespace pocketmine\inventory; use pocketmine\item\Durable; use pocketmine\item\Item; +use pocketmine\utils\DestructorCallbackTrait; use pocketmine\utils\Filesystem; +use pocketmine\utils\ObjectSet; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils; use Symfony\Component\Filesystem\Path; @@ -33,11 +35,17 @@ use function json_decode; final class CreativeInventory{ use SingletonTrait; + use DestructorCallbackTrait; /** @var Item[] */ private array $creative = []; + /** @phpstan-var ObjectSet<\Closure() : void> */ + private ObjectSet $contentChangedCallbacks; + private function __construct(){ + $this->contentChangedCallbacks = new ObjectSet(); + $creativeItems = json_decode(Filesystem::fileGetContents(Path::join(\pocketmine\RESOURCE_PATH, "legacy_creativeitems.json")), true); foreach($creativeItems as $data){ @@ -55,6 +63,7 @@ final class CreativeInventory{ */ public function clear() : void{ $this->creative = []; + $this->onContentChange(); } /** @@ -84,6 +93,7 @@ final class CreativeInventory{ */ public function add(Item $item) : void{ $this->creative[] = clone $item; + $this->onContentChange(); } /** @@ -94,10 +104,22 @@ final class CreativeInventory{ $index = $this->getItemIndex($item); if($index !== -1){ unset($this->creative[$index]); + $this->onContentChange(); } } public function contains(Item $item) : bool{ return $this->getItemIndex($item) !== -1; } + + /** @phpstan-return ObjectSet<\Closure() : void> */ + public function getContentChangedCallbacks() : ObjectSet{ + return $this->contentChangedCallbacks; + } + + private function onContentChange() : void{ + foreach($this->contentChangedCallbacks as $callback){ + $callback(); + } + } } diff --git a/src/network/mcpe/InventoryManager.php b/src/network/mcpe/InventoryManager.php index c6d83c65e..38cd986de 100644 --- a/src/network/mcpe/InventoryManager.php +++ b/src/network/mcpe/InventoryManager.php @@ -37,19 +37,17 @@ use pocketmine\inventory\CreativeInventory; use pocketmine\inventory\Inventory; use pocketmine\inventory\transaction\action\SlotChangeAction; use pocketmine\inventory\transaction\InventoryTransaction; -use pocketmine\item\Item; +use pocketmine\network\mcpe\cache\CreativeInventoryCache; use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\ClientboundPacket; use pocketmine\network\mcpe\protocol\ContainerClosePacket; use pocketmine\network\mcpe\protocol\ContainerOpenPacket; use pocketmine\network\mcpe\protocol\ContainerSetDataPacket; -use pocketmine\network\mcpe\protocol\CreativeContentPacket; use pocketmine\network\mcpe\protocol\InventoryContentPacket; use pocketmine\network\mcpe\protocol\InventorySlotPacket; use pocketmine\network\mcpe\protocol\MobEquipmentPacket; use pocketmine\network\mcpe\protocol\types\BlockPosition; use pocketmine\network\mcpe\protocol\types\inventory\ContainerIds; -use pocketmine\network\mcpe\protocol\types\inventory\CreativeContentEntry; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\inventory\ItemStackWrapper; use pocketmine\network\mcpe\protocol\types\inventory\NetworkInventoryAction; @@ -599,16 +597,7 @@ class InventoryManager{ } public function syncCreative() : void{ - $typeConverter = TypeConverter::getInstance(); - - $entries = []; - if(!$this->player->isSpectator()){ - //creative inventory may have holes if items were unregistered - ensure network IDs used are always consistent - foreach(CreativeInventory::getInstance()->getAll() as $k => $item){ - $entries[] = new CreativeContentEntry($k, $typeConverter->coreItemStackToNet($item)); - } - } - $this->session->sendDataPacket(CreativeContentPacket::create($entries)); + $this->session->sendDataPacket(CreativeInventoryCache::getInstance()->getCache(CreativeInventory::getInstance())); } private function newItemStackId() : int{ diff --git a/src/network/mcpe/cache/CreativeInventoryCache.php b/src/network/mcpe/cache/CreativeInventoryCache.php new file mode 100644 index 000000000..04fc52604 --- /dev/null +++ b/src/network/mcpe/cache/CreativeInventoryCache.php @@ -0,0 +1,69 @@ + + */ + private array $caches = []; + + public function getCache(CreativeInventory $inventory) : CreativeContentPacket{ + $id = spl_object_id($inventory); + if(!isset($this->caches[$id])){ + $inventory->getDestructorCallbacks()->add(function() use ($id) : void{ + unset($this->caches[$id]); + }); + $inventory->getContentChangedCallbacks()->add(function() use ($id) : void{ + unset($this->caches[$id]); + }); + $this->caches[$id] = $this->buildCreativeInventoryCache($inventory); + } + return $this->caches[$id]; + } + + /** + * Rebuild the cache for the given inventory. + */ + private function buildCreativeInventoryCache(CreativeInventory $inventory) : CreativeContentPacket{ + $entries = []; + $typeConverter = TypeConverter::getInstance(); + //creative inventory may have holes if items were unregistered - ensure network IDs used are always consistent + foreach($inventory->getAll() as $k => $item){ + $entries[] = new CreativeContentEntry($k, $typeConverter->coreItemStackToNet($item)); + } + + return CreativeContentPacket::create($entries); + } +} From b8a1b324610703c0e65484de9d081cf96b1fc781 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Thu, 18 May 2023 21:53:37 +0300 Subject: [PATCH 648/692] Fixed late property initializing in UnknownBlock (#5755) --- src/block/UnknownBlock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/block/UnknownBlock.php b/src/block/UnknownBlock.php index a8cbd2d40..97c7c80a4 100644 --- a/src/block/UnknownBlock.php +++ b/src/block/UnknownBlock.php @@ -34,8 +34,8 @@ class UnknownBlock extends Transparent{ private int $stateData; public function __construct(BlockIdentifier $idInfo, BlockTypeInfo $typeInfo, int $stateData){ - parent::__construct($idInfo, "Unknown", $typeInfo); $this->stateData = $stateData; + parent::__construct($idInfo, "Unknown", $typeInfo); } public function describeBlockItemState(RuntimeDataDescriber $w) : void{ From bd6af68f916c60990235177c936acda1ce3a4013 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 19 May 2023 15:13:34 +0100 Subject: [PATCH 649/692] Update symfony/filesystem to 6.2.10 --- composer.json | 2 +- composer.lock | 102 +++++--------------------------------------------- 2 files changed, 10 insertions(+), 94 deletions(-) diff --git a/composer.json b/composer.json index f3754ed1f..46e706133 100644 --- a/composer.json +++ b/composer.json @@ -52,7 +52,7 @@ "pocketmine/raklib-ipc": "^0.1.0", "pocketmine/snooze": "^0.3.0", "ramsey/uuid": "^4.1", - "symfony/filesystem": "^5.4", + "symfony/filesystem": "^6.2", "webmozart/path-util": "^2.3" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 7fd54f9d5..0157dc19a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8cd9901818949493821aaf543667aac4", + "content-hash": "e913903f9b2491e95e91e6d7f05e9540", "packages": [ { "name": "adhocore/json-comment", @@ -1084,23 +1084,22 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.23", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -1128,7 +1127,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + "source": "https://github.com/symfony/filesystem/tree/v6.2.10" }, "funding": [ { @@ -1144,7 +1143,7 @@ "type": "tidelift" } ], - "time": "2023-03-02T11:38:35+00:00" + "time": "2023-04-18T13:46:08+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1311,89 +1310,6 @@ ], "time": "2022-11-03T14:55:06+00:00" }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, { "name": "webmozart/assert", "version": "1.11.0", From 4a3843a881aa0a3c29bf3d522437b3b2cfeacc16 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 19 May 2023 15:40:04 +0100 Subject: [PATCH 650/692] WaterCauldron: reduce code repetition --- src/block/WaterCauldron.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php index fddccf43b..276b309ca 100644 --- a/src/block/WaterCauldron.php +++ b/src/block/WaterCauldron.php @@ -108,14 +108,14 @@ final class WaterCauldron extends FillableCauldron{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ - if(($newColor = match($item->getTypeId()){ - ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE()->getRgbValue(), - ItemTypeIds::INK_SAC => DyeColor::BLACK()->getRgbValue(), - ItemTypeIds::COCOA_BEANS => DyeColor::BROWN()->getRgbValue(), - ItemTypeIds::BONE_MEAL => DyeColor::WHITE()->getRgbValue(), - ItemTypeIds::DYE => $item instanceof Dye ? $item->getColor()->getRgbValue() : null, + if(($dyeColor = match($item->getTypeId()){ + ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE(), + ItemTypeIds::INK_SAC => DyeColor::BLACK(), + ItemTypeIds::COCOA_BEANS => DyeColor::BROWN(), + ItemTypeIds::BONE_MEAL => DyeColor::WHITE(), + ItemTypeIds::DYE => $item instanceof Dye ? $item->getColor() : null, default => null - }) !== null && $newColor->toRGBA() !== $this->customWaterColor?->toRGBA() + }) !== null && ($newColor = $dyeColor->getRgbValue())->toRGBA() !== $this->customWaterColor?->toRGBA() ){ $this->position->getWorld()->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor))); $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound()); From 8454076235e49eddcf18c5a76dcdf6def63fc6b6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 19 May 2023 15:45:12 +0100 Subject: [PATCH 651/692] WaterCauldron: remove more repeated code --- src/block/WaterCauldron.php | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/block/WaterCauldron.php b/src/block/WaterCauldron.php index 276b309ca..6a3c95048 100644 --- a/src/block/WaterCauldron.php +++ b/src/block/WaterCauldron.php @@ -108,6 +108,7 @@ final class WaterCauldron extends FillableCauldron{ } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ + $world = $this->position->getWorld(); if(($dyeColor = match($item->getTypeId()){ ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE(), ItemTypeIds::INK_SAC => DyeColor::BLACK(), @@ -117,8 +118,8 @@ final class WaterCauldron extends FillableCauldron{ default => null }) !== null && ($newColor = $dyeColor->getRgbValue())->toRGBA() !== $this->customWaterColor?->toRGBA() ){ - $this->position->getWorld()->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor))); - $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound()); + $world->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor))); + $world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound()); $item->pop(); }elseif($item instanceof Potion || $item instanceof SplashPotion){ //TODO: lingering potion @@ -137,13 +138,13 @@ final class WaterCauldron extends FillableCauldron{ default => false } && $item->getCustomColor()?->toRGBA() !== $this->customWaterColor->toRGBA()){ $item->setCustomColor($this->customWaterColor); - $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::DYE_ARMOR_USE_AMOUNT)); - $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronDyeItemSound()); + $world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::DYE_ARMOR_USE_AMOUNT)); + $world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronDyeItemSound()); } }elseif($item->getCustomColor() !== null){ $item->clearCustomColor(); - $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_ARMOR_USE_AMOUNT)); - $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + $world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_ARMOR_USE_AMOUNT)); + $world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); } }elseif($item instanceof Banner){ $patterns = $item->getPatterns(); @@ -151,8 +152,8 @@ final class WaterCauldron extends FillableCauldron{ array_pop($patterns); $item->setPatterns($patterns); - $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT)); - $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + $world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT)); + $world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); } }elseif(ItemTypeIds::toBlockTypeId($item->getTypeId()) === BlockTypeIds::DYED_SHULKER_BOX){ if($this->customWaterColor === null){ @@ -162,8 +163,8 @@ final class WaterCauldron extends FillableCauldron{ $item->pop(); $returnedItems[] = $newItem; - $this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_SHULKER_BOX_USE_AMOUNT)); - $this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); + $world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_SHULKER_BOX_USE_AMOUNT)); + $world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound()); } }else{ match($item->getTypeId()){ From 8245cfab0ed9e25e9549559e47f3070065c53cad Mon Sep 17 00:00:00 2001 From: BrandPVP <114182697+BrandPVP@users.noreply.github.com> Date: Fri, 19 May 2023 18:18:18 +0300 Subject: [PATCH 652/692] PlayerDeathEvent: add ability to set message displayed on the death screen (#5726) --- src/event/player/PlayerDeathEvent.php | 10 ++++++++++ src/player/Player.php | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/event/player/PlayerDeathEvent.php b/src/event/player/PlayerDeathEvent.php index 132411c58..58a07fb1b 100644 --- a/src/event/player/PlayerDeathEvent.php +++ b/src/event/player/PlayerDeathEvent.php @@ -39,6 +39,7 @@ class PlayerDeathEvent extends EntityDeathEvent{ protected $player; private Translatable|string $deathMessage; + private Translatable|string $deathScreenMessage; private bool $keepInventory = false; private bool $keepXp = false; @@ -50,6 +51,7 @@ class PlayerDeathEvent extends EntityDeathEvent{ parent::__construct($entity, $drops, $xp); $this->player = $entity; $this->deathMessage = $deathMessage ?? self::deriveMessage($entity->getDisplayName(), $entity->getLastDamageCause()); + $this->deathScreenMessage = $this->deathMessage; } /** @@ -71,6 +73,14 @@ class PlayerDeathEvent extends EntityDeathEvent{ $this->deathMessage = $deathMessage; } + public function getDeathScreenMessage() : Translatable|string{ + return $this->deathScreenMessage; + } + + public function setDeathScreenMessage(Translatable|string $deathScreenMessage) : void{ + $this->deathScreenMessage = $deathScreenMessage; + } + public function getKeepInventory() : bool{ return $this->keepInventory; } diff --git a/src/player/Player.php b/src/player/Player.php index e8dae37f4..2c481f275 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2344,7 +2344,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ $this->startDeathAnimation(); - $this->getNetworkSession()->onServerDeath($ev->getDeathMessage()); + $this->getNetworkSession()->onServerDeath($ev->getDeathScreenMessage()); } protected function onDeathUpdate(int $tickDiff) : bool{ From e0630fbb256401bb392229eda9f8b8b0a220d034 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 01:29:26 +0100 Subject: [PATCH 653/692] pmmpthread support --- .github/workflows/main.yml | 10 +-- composer.json | 8 +- composer.lock | 79 ++++++++++--------- phpstan.neon.dist | 2 +- src/PocketMine.php | 2 +- src/Server.php | 4 +- src/console/ConsoleReaderChildProcess.php | 15 ++-- .../mcpe/raklib/PthreadsChannelReader.php | 5 +- .../mcpe/raklib/PthreadsChannelWriter.php | 5 +- src/network/mcpe/raklib/RakLibInterface.php | 9 ++- src/network/mcpe/raklib/RakLibServer.php | 19 ++--- .../SnoozeAwarePthreadsChannelWriter.php | 5 +- src/scheduler/AsyncPool.php | 9 ++- src/scheduler/AsyncTask.php | 20 +++-- src/scheduler/AsyncWorker.php | 11 +-- src/scheduler/DumpWorkerMemoryTask.php | 10 ++- src/thread/CommonThreadPartsTrait.php | 12 +-- src/thread/NonThreadSafeValue.php | 3 +- src/thread/Thread.php | 6 +- src/thread/ThreadManager.php | 10 ++- src/thread/Worker.php | 7 +- src/utils/MainLogger.php | 14 ++-- src/utils/MainLoggerThread.php | 10 ++- .../stubs/{pthreads.stub => pmmpthread.stub} | 10 ++- 24 files changed, 159 insertions(+), 126 deletions(-) rename tests/phpstan/stubs/{pthreads.stub => pmmpthread.stub} (70%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fa0eccf60..b4a884882 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Build and prepare PHP cache - uses: pmmp/setup-php-action@c7fb29d83535320922068087c7285bdedbbfa3c2 + uses: pmmp/setup-php-action@fa2accea978a84097cf40ecc7d46b2d71f258bd5 with: php-version: ${{ matrix.php }} install-path: "./bin" @@ -38,7 +38,7 @@ jobs: - uses: actions/checkout@v3 - name: Setup PHP - uses: pmmp/setup-php-action@c7fb29d83535320922068087c7285bdedbbfa3c2 + uses: pmmp/setup-php-action@fa2accea978a84097cf40ecc7d46b2d71f258bd5 with: php-version: ${{ matrix.php }} install-path: "./bin" @@ -77,7 +77,7 @@ jobs: - uses: actions/checkout@v3 - name: Setup PHP - uses: pmmp/setup-php-action@c7fb29d83535320922068087c7285bdedbbfa3c2 + uses: pmmp/setup-php-action@fa2accea978a84097cf40ecc7d46b2d71f258bd5 with: php-version: ${{ matrix.php }} install-path: "./bin" @@ -118,7 +118,7 @@ jobs: submodules: true - name: Setup PHP - uses: pmmp/setup-php-action@c7fb29d83535320922068087c7285bdedbbfa3c2 + uses: pmmp/setup-php-action@fa2accea978a84097cf40ecc7d46b2d71f258bd5 with: php-version: ${{ matrix.php }} install-path: "./bin" @@ -157,7 +157,7 @@ jobs: - uses: actions/checkout@v3 - name: Setup PHP - uses: pmmp/setup-php-action@c7fb29d83535320922068087c7285bdedbbfa3c2 + uses: pmmp/setup-php-action@fa2accea978a84097cf40ecc7d46b2d71f258bd5 with: php-version: ${{ matrix.php }} install-path: "./bin" diff --git a/composer.json b/composer.json index fb0748573..63d5b0d00 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "ext-openssl": "*", "ext-pcre": "*", "ext-phar": "*", - "ext-pthreads": "^5.1", + "ext-pmmpthread": "^6.0", "ext-reflection": "*", "ext-simplexml": "*", "ext-sockets": "*", @@ -40,17 +40,17 @@ "pocketmine/bedrock-protocol": "~21.0.0+bedrock-1.19.80", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", - "pocketmine/classloader": "^0.3.0", + "pocketmine/classloader": "dev-stable", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", "pocketmine/locale-data": "~2.19.0", "pocketmine/log": "^0.4.0", - "pocketmine/log-pthreads": "^0.5.0", + "pocketmine/log-pthreads": "dev-stable", "pocketmine/math": "^0.4.0", "pocketmine/nbt": "^0.3.2", "pocketmine/raklib": "^0.15.0", "pocketmine/raklib-ipc": "^0.2.0", - "pocketmine/snooze": "^0.4.0", + "pocketmine/snooze": "dev-master", "ramsey/uuid": "^4.1", "symfony/filesystem": "^5.4" }, diff --git a/composer.lock b/composer.lock index cdcb19063..4b6e1622f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8c09886bd34e74a61c3ea1ee2be3b2e9", + "content-hash": "507c2a45350440a7717ed089190fe4f0", "packages": [ { "name": "adhocore/json-comment", @@ -466,32 +466,33 @@ }, { "name": "pocketmine/classloader", - "version": "0.3.0", + "version": "dev-stable", "source": { "type": "git", "url": "https://github.com/pmmp/ClassLoader.git", - "reference": "407caf521186ec1f03024f39031cc681ad491026" + "reference": "e15c9b4d310581d2d2c9bf2794869cb940e011e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/407caf521186ec1f03024f39031cc681ad491026", - "reference": "407caf521186ec1f03024f39031cc681ad491026", + "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/e15c9b4d310581d2d2c9bf2794869cb940e011e1", + "reference": "e15c9b4d310581d2d2c9bf2794869cb940e011e1", "shasum": "" }, "require": { - "ext-pthreads": "^5.0", + "ext-pmmpthread": "^6.0", "ext-reflection": "*", - "php": "^8.0" + "php": "^8.1" }, "conflict": { "pocketmine/spl": "<0.4" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "1.9.4", + "phpstan/phpstan": "1.10.15", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5" }, + "default-branch": true, "type": "library", "autoload": { "classmap": [ @@ -505,9 +506,9 @@ "description": "Ad-hoc autoloading components used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/ClassLoader/issues", - "source": "https://github.com/pmmp/ClassLoader/tree/0.3.0" + "source": "https://github.com/pmmp/ClassLoader/tree/stable" }, - "time": "2023-01-23T19:46:53+00:00" + "time": "2023-05-19T23:39:02+00:00" }, { "name": "pocketmine/color", @@ -652,21 +653,21 @@ }, { "name": "pocketmine/log-pthreads", - "version": "0.5.0", + "version": "dev-stable", "source": { "type": "git", "url": "https://github.com/pmmp/LogPthreads.git", - "reference": "0ecfea6dcfc9a9f5c86e126ac1661732de5c5666" + "reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/0ecfea6dcfc9a9f5c86e126ac1661732de5c5666", - "reference": "0ecfea6dcfc9a9f5c86e126ac1661732de5c5666", + "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/bb3b5395042d12ec0d7ad5c855fd86eaf12869d3", + "reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3", "shasum": "" }, "require": { - "ext-pthreads": "^5.0", - "php": "^8.0", + "ext-pmmpthread": "^6.0", + "php": "^8.1", "pocketmine/log": "^0.4.0" }, "conflict": { @@ -674,9 +675,10 @@ }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "1.8.11", + "phpstan/phpstan": "1.10.3", "phpstan/phpstan-strict-rules": "^1.0" }, + "default-branch": true, "type": "library", "autoload": { "classmap": [ @@ -690,9 +692,9 @@ "description": "Logging components specialized for pthreads used by PocketMine-MP and related projects", "support": { "issues": "https://github.com/pmmp/LogPthreads/issues", - "source": "https://github.com/pmmp/LogPthreads/tree/0.5.0" + "source": "https://github.com/pmmp/LogPthreads/tree/stable" }, - "time": "2023-01-23T19:52:12+00:00" + "time": "2023-05-19T23:38:36+00:00" }, { "name": "pocketmine/math", @@ -863,27 +865,28 @@ }, { "name": "pocketmine/snooze", - "version": "0.4.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/pmmp/Snooze.git", - "reference": "6b1d6cc645d674590ff9be2438ac00032f9ee292" + "reference": "3207a201cbb10eebb4a96749678f7adef216bb71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Snooze/zipball/6b1d6cc645d674590ff9be2438ac00032f9ee292", - "reference": "6b1d6cc645d674590ff9be2438ac00032f9ee292", + "url": "https://api.github.com/repos/pmmp/Snooze/zipball/3207a201cbb10eebb4a96749678f7adef216bb71", + "reference": "3207a201cbb10eebb4a96749678f7adef216bb71", "shasum": "" }, "require": { - "ext-pthreads": "^5.0", - "php-64bit": "^8.0" + "ext-pmmpthread": "^6.0", + "php-64bit": "^8.1" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "1.9.14", + "phpstan/phpstan": "1.10.3", "phpstan/phpstan-strict-rules": "^1.0" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -897,9 +900,9 @@ "description": "Thread notification management library for code using the pthreads extension", "support": { "issues": "https://github.com/pmmp/Snooze/issues", - "source": "https://github.com/pmmp/Snooze/tree/0.4.0" + "source": "https://github.com/pmmp/Snooze/tree/master" }, - "time": "2023-01-23T19:43:19+00:00" + "time": "2023-05-19T23:38:19+00:00" }, { "name": "ramsey/collection", @@ -1527,16 +1530,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -1577,9 +1580,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "phar-io/manifest", @@ -3293,7 +3296,11 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "pocketmine/classloader": 20, + "pocketmine/log-pthreads": 20, + "pocketmine/snooze": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -3314,7 +3321,7 @@ "ext-openssl": "*", "ext-pcre": "*", "ext-phar": "*", - "ext-pthreads": "^5.1", + "ext-pmmpthread": "^6.0", "ext-reflection": "*", "ext-simplexml": "*", "ext-sockets": "*", diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 16b692ec9..b3aeaf4f6 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -44,7 +44,7 @@ parameters: - tests/phpstan/stubs/JsonMapper.stub - tests/phpstan/stubs/leveldb.stub - tests/phpstan/stubs/phpasn1.stub - - tests/phpstan/stubs/pthreads.stub + - tests/phpstan/stubs/pmmpthread.stub reportUnmatchedIgnoredErrors: false #no other way to silence platform-specific non-warnings staticReflectionClassNamePatterns: - "#^COM$#" diff --git a/src/PocketMine.php b/src/PocketMine.php index 8bdb55b0d..c085fa19c 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -338,7 +338,7 @@ JIT_WARNING $logger->info("Stopping other threads"); $killer = new ServerKiller(8); - $killer->start(PTHREADS_INHERIT_NONE); + $killer->start(); usleep(10000); //Fixes ServerKiller not being able to start on single-core machines if(ThreadManager::getInstance()->stopAll() > 0){ diff --git a/src/Server.php b/src/Server.php index c19553a88..1262bc00e 100644 --- a/src/Server.php +++ b/src/Server.php @@ -417,7 +417,7 @@ class Server{ return $this->autoloader; } - public function getLogger() : \AttachableThreadedLogger{ + public function getLogger() : \AttachableThreadSafeLogger{ return $this->logger; } @@ -760,7 +760,7 @@ class Server{ public function __construct( private \DynamicClassLoader $autoloader, - private \AttachableThreadedLogger $logger, + private \AttachableThreadSafeLogger $logger, string $dataPath, string $pluginPath ){ diff --git a/src/console/ConsoleReaderChildProcess.php b/src/console/ConsoleReaderChildProcess.php index 3dd2c24c2..c37aaa8c9 100644 --- a/src/console/ConsoleReaderChildProcess.php +++ b/src/console/ConsoleReaderChildProcess.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\console; +use pmmp\thread\Thread as NativeThread; +use pmmp\thread\ThreadSafeArray; use pocketmine\utils\Process; use function cli_set_process_title; use function count; @@ -30,7 +32,6 @@ use function dirname; use function feof; use function fwrite; use function stream_socket_client; -use const PTHREADS_INHERIT_NONE; require dirname(__DIR__, 2) . '/vendor/autoload.php'; @@ -46,14 +47,14 @@ if($socket === false){ throw new \RuntimeException("Failed to connect to server process ($errCode): $errMessage"); } -/** @phpstan-var \ThreadedArray $channel */ -$channel = new \ThreadedArray(); -$thread = new class($channel) extends \Thread{ +/** @phpstan-var ThreadSafeArray $channel */ +$channel = new ThreadSafeArray(); +$thread = new class($channel) extends NativeThread{ /** - * @phpstan-param \ThreadedArray $channel + * @phpstan-param ThreadSafeArray $channel */ public function __construct( - private \ThreadedArray $channel, + private ThreadSafeArray $channel, ){} public function run() : void{ @@ -73,7 +74,7 @@ $thread = new class($channel) extends \Thread{ } }; -$thread->start(PTHREADS_INHERIT_NONE); +$thread->start(NativeThread::INHERIT_NONE); while(!feof($socket)){ $line = $channel->synchronized(function() use ($channel) : ?string{ if(count($channel) === 0){ diff --git a/src/network/mcpe/raklib/PthreadsChannelReader.php b/src/network/mcpe/raklib/PthreadsChannelReader.php index 68c718b0f..44057c27c 100644 --- a/src/network/mcpe/raklib/PthreadsChannelReader.php +++ b/src/network/mcpe/raklib/PthreadsChannelReader.php @@ -23,13 +23,14 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pmmp\thread\ThreadSafeArray; use raklib\server\ipc\InterThreadChannelReader; final class PthreadsChannelReader implements InterThreadChannelReader{ /** - * @phpstan-param \ThreadedArray $buffer + * @phpstan-param ThreadSafeArray $buffer */ - public function __construct(private \ThreadedArray $buffer){} + public function __construct(private ThreadSafeArray $buffer){} public function read() : ?string{ return $this->buffer->shift(); diff --git a/src/network/mcpe/raklib/PthreadsChannelWriter.php b/src/network/mcpe/raklib/PthreadsChannelWriter.php index afbeefdd2..a85415d8d 100644 --- a/src/network/mcpe/raklib/PthreadsChannelWriter.php +++ b/src/network/mcpe/raklib/PthreadsChannelWriter.php @@ -23,13 +23,14 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pmmp\thread\ThreadSafeArray; use raklib\server\ipc\InterThreadChannelWriter; final class PthreadsChannelWriter implements InterThreadChannelWriter{ /** - * @phpstan-param \ThreadedArray $buffer + * @phpstan-param ThreadSafeArray $buffer */ - public function __construct(private \ThreadedArray $buffer){} + public function __construct(private ThreadSafeArray $buffer){} public function write(string $str) : void{ $this->buffer[] = $str; diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 6a9f0f0b0..68f02b649 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pmmp\thread\ThreadSafeArray; use pocketmine\lang\KnownTranslationFactory; use pocketmine\network\AdvancedNetworkInterface; use pocketmine\network\mcpe\compression\ZlibCompressor; @@ -105,10 +106,10 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $this->sleeper = new SleeperNotifier(); - /** @phpstan-var \ThreadedArray $mainToThreadBuffer */ - $mainToThreadBuffer = new \ThreadedArray(); - /** @phpstan-var \ThreadedArray $threadToMainBuffer */ - $threadToMainBuffer = new \ThreadedArray(); + /** @phpstan-var ThreadSafeArray $mainToThreadBuffer */ + $mainToThreadBuffer = new ThreadSafeArray(); + /** @phpstan-var ThreadSafeArray $threadToMainBuffer */ + $threadToMainBuffer = new ThreadSafeArray(); $this->rakLib = new RakLibServer( $this->server->getLogger(), diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 3238d1b44..3a3cea673 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pmmp\thread\Thread as NativeThread; +use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\NonThreadSafeValue; use pocketmine\thread\Thread; @@ -38,7 +40,6 @@ use function error_get_last; use function gc_enable; use function ini_set; use function register_shutdown_function; -use const PTHREADS_INHERIT_NONE; class RakLibServer extends Thread{ protected bool $cleanShutdown = false; @@ -50,13 +51,13 @@ class RakLibServer extends Thread{ protected NonThreadSafeValue $address; /** - * @phpstan-param \ThreadedArray $mainToThreadBuffer - * @phpstan-param \ThreadedArray $threadToMainBuffer + * @phpstan-param ThreadSafeArray $mainToThreadBuffer + * @phpstan-param ThreadSafeArray $threadToMainBuffer */ public function __construct( - protected \ThreadedLogger $logger, - protected \ThreadedArray $mainToThreadBuffer, - protected \ThreadedArray $threadToMainBuffer, + protected \ThreadSafeLogger $logger, + protected ThreadSafeArray $mainToThreadBuffer, + protected ThreadSafeArray $threadToMainBuffer, InternetAddress $address, protected int $serverId, protected int $maxMtuSize, @@ -88,13 +89,13 @@ class RakLibServer extends Thread{ } private function setCrashInfo(RakLibThreadCrashInfo $info) : void{ - $this->synchronized(function(RakLibThreadCrashInfo $info) : void{ + $this->synchronized(function() use ($info) : void{ $this->crashInfo = new NonThreadSafeValue($info); $this->notify(); - }, $info); + }); } - public function startAndWait(int $options = PTHREADS_INHERIT_NONE) : void{ + public function startAndWait(int $options = NativeThread::INHERIT_NONE) : void{ $this->start($options); $this->synchronized(function() : void{ while(!$this->ready && $this->crashInfo === null){ diff --git a/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php index 723cb3730..28f7be2b5 100644 --- a/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php +++ b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php @@ -23,15 +23,16 @@ declare(strict_types=1); namespace pocketmine\network\mcpe\raklib; +use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperNotifier; use raklib\server\ipc\InterThreadChannelWriter; final class SnoozeAwarePthreadsChannelWriter implements InterThreadChannelWriter{ /** - * @phpstan-param \ThreadedArray $buffer + * @phpstan-param ThreadSafeArray $buffer */ public function __construct( - private \ThreadedArray $buffer, + private ThreadSafeArray $buffer, private SleeperNotifier $notifier ){} diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 71dee756a..e04e58fd1 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\scheduler; +use pmmp\thread\Thread as NativeThread; +use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperHandler; use pocketmine\snooze\SleeperNotifier; use pocketmine\utils\Utils; @@ -33,14 +35,13 @@ use function count; use function spl_object_id; use function time; use const PHP_INT_MAX; -use const PTHREADS_INHERIT_INI; /** * Manages general-purpose worker threads used for processing asynchronous tasks, and the tasks submitted to those * workers. */ class AsyncPool{ - private const WORKER_START_OPTIONS = PTHREADS_INHERIT_INI; + private const WORKER_START_OPTIONS = NativeThread::INHERIT_INI | NativeThread::INHERIT_COMMENTS; /** * @var \SplQueue[]|AsyncTask[][] @@ -69,7 +70,7 @@ class AsyncPool{ protected int $size, private int $workerMemoryLimit, private \ClassLoader $classLoader, - private \ThreadedLogger $logger, + private \ThreadSafeLogger $logger, private SleeperHandler $eventLoop ){} @@ -158,7 +159,7 @@ class AsyncPool{ throw new \InvalidArgumentException("Cannot submit the same AsyncTask instance more than once"); } - $task->progressUpdates = new \ThreadedArray(); + $task->progressUpdates = new ThreadSafeArray(); $task->setSubmitted(); $this->getWorker($worker)->stack($task); diff --git a/src/scheduler/AsyncTask.php b/src/scheduler/AsyncTask.php index 2194f47db..c48097bbc 100644 --- a/src/scheduler/AsyncTask.php +++ b/src/scheduler/AsyncTask.php @@ -23,7 +23,11 @@ declare(strict_types=1); namespace pocketmine\scheduler; +use pmmp\thread\Runnable; +use pmmp\thread\Thread as NativeThread; +use pmmp\thread\ThreadSafeArray; use pocketmine\thread\NonThreadSafeValue; +use function assert; use function igbinary_serialize; use function igbinary_unserialize; use function is_null; @@ -54,7 +58,7 @@ use function spl_object_id; * If you want to store non-thread-safe objects to access when the task completes, store them using * {@link AsyncTask::storeLocal}. */ -abstract class AsyncTask extends \ThreadedRunnable{ +abstract class AsyncTask extends Runnable{ /** * @var \ArrayObject|mixed[]|null object hash => mixed data * @phpstan-var \ArrayObject>|null @@ -63,11 +67,8 @@ abstract class AsyncTask extends \ThreadedRunnable{ */ private static ?\ArrayObject $threadLocalStorage = null; - /** @var AsyncWorker|null $worker */ - public $worker = null; - - /** @phpstan-var \ThreadedArray */ - public \ThreadedArray $progressUpdates; + /** @phpstan-var ThreadSafeArray */ + public ThreadSafeArray $progressUpdates; /** @phpstan-var NonThreadSafeValue|string|int|bool|float|null */ private NonThreadSafeValue|string|int|bool|null|float $result = null; @@ -85,12 +86,15 @@ abstract class AsyncTask extends \ThreadedRunnable{ $this->onRun(); }catch(\Throwable $e){ $this->crashed = true; - $this->worker->handleException($e); + + \GlobalLogger::get()->logException($e); } } $this->finished = true; - $this->worker->getNotifier()->wakeupSleeper(); + $worker = NativeThread::getCurrentThread(); + assert($worker instanceof AsyncWorker); + $worker->getNotifier()->wakeupSleeper(); } public function isCrashed() : bool{ diff --git a/src/scheduler/AsyncWorker.php b/src/scheduler/AsyncWorker.php index 0b7087571..f012b61d3 100644 --- a/src/scheduler/AsyncWorker.php +++ b/src/scheduler/AsyncWorker.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\scheduler; +use pmmp\thread\Thread as NativeThread; use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\Worker; use function gc_enable; @@ -33,7 +34,7 @@ class AsyncWorker extends Worker{ private static array $store = []; public function __construct( - private \ThreadedLogger $logger, + private \ThreadSafeLogger $logger, private int $id, private int $memoryLimit, private SleeperNotifier $notifier @@ -57,7 +58,7 @@ class AsyncWorker extends Worker{ } } - public function getLogger() : \ThreadedLogger{ + public function getLogger() : \ThreadSafeLogger{ return $this->logger; } @@ -78,7 +79,7 @@ class AsyncWorker extends Worker{ * want to use on this worker thread from multiple AsyncTasks. */ public function saveToThreadStore(string $identifier, mixed $value) : void{ - if(\Thread::getCurrentThread() !== $this){ + if(NativeThread::getCurrentThread() !== $this){ throw new \LogicException("Thread-local data can only be stored in the thread context"); } self::$store[$identifier] = $value; @@ -93,7 +94,7 @@ class AsyncWorker extends Worker{ * Objects stored in this storage may ONLY be retrieved while the task is running. */ public function getFromThreadStore(string $identifier) : mixed{ - if(\Thread::getCurrentThread() !== $this){ + if(NativeThread::getCurrentThread() !== $this){ throw new \LogicException("Thread-local data can only be fetched in the thread context"); } return self::$store[$identifier] ?? null; @@ -103,7 +104,7 @@ class AsyncWorker extends Worker{ * Removes previously-stored mixed data from the worker's thread-local object store. */ public function removeFromThreadStore(string $identifier) : void{ - if(\Thread::getCurrentThread() !== $this){ + if(NativeThread::getCurrentThread() !== $this){ throw new \LogicException("Thread-local data can only be removed in the thread context"); } unset(self::$store[$identifier]); diff --git a/src/scheduler/DumpWorkerMemoryTask.php b/src/scheduler/DumpWorkerMemoryTask.php index b1cf3840c..5ef787b5b 100644 --- a/src/scheduler/DumpWorkerMemoryTask.php +++ b/src/scheduler/DumpWorkerMemoryTask.php @@ -23,8 +23,10 @@ declare(strict_types=1); namespace pocketmine\scheduler; +use pmmp\thread\Thread as NativeThread; use pocketmine\MemoryManager; use Symfony\Component\Filesystem\Path; +use function assert; /** * Task used to dump memory from AsyncWorkers @@ -37,12 +39,14 @@ class DumpWorkerMemoryTask extends AsyncTask{ ){} public function onRun() : void{ + $worker = NativeThread::getCurrentThread(); + assert($worker instanceof AsyncWorker); MemoryManager::dumpMemory( - $this->worker, - Path::join($this->outputFolder, "AsyncWorker#" . $this->worker->getAsyncWorkerId()), + $worker, + Path::join($this->outputFolder, "AsyncWorker#" . $worker->getAsyncWorkerId()), $this->maxNesting, $this->maxStringSize, - new \PrefixedLogger($this->worker->getLogger(), "Memory Dump") + new \PrefixedLogger($worker->getLogger(), "Memory Dump") ); } } diff --git a/src/thread/CommonThreadPartsTrait.php b/src/thread/CommonThreadPartsTrait.php index 777acd009..a2429b056 100644 --- a/src/thread/CommonThreadPartsTrait.php +++ b/src/thread/CommonThreadPartsTrait.php @@ -23,16 +23,17 @@ declare(strict_types=1); namespace pocketmine\thread; +use pmmp\thread\ThreadSafeArray; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\Server; use function error_reporting; trait CommonThreadPartsTrait{ /** - * @var \ThreadedArray|\ClassLoader[]|null - * @phpstan-var \ThreadedArray|null + * @var ThreadSafeArray|\ClassLoader[]|null + * @phpstan-var ThreadSafeArray|null */ - private ?\ThreadedArray $classLoaders = null; + private ?ThreadSafeArray $classLoaders = null; protected ?string $composerAutoloaderPath = null; protected bool $isKilled = false; @@ -55,14 +56,15 @@ trait CommonThreadPartsTrait{ } if($this->classLoaders === null){ - $this->classLoaders = new \ThreadedArray(); + $loaders = $this->classLoaders = new ThreadSafeArray(); }else{ + $loaders = $this->classLoaders; foreach($this->classLoaders as $k => $autoloader){ unset($this->classLoaders[$k]); } } foreach($autoloaders as $autoloader){ - $this->classLoaders[] = $autoloader; + $loaders[] = $autoloader; } } diff --git a/src/thread/NonThreadSafeValue.php b/src/thread/NonThreadSafeValue.php index 9d443b065..d0c65f4a4 100644 --- a/src/thread/NonThreadSafeValue.php +++ b/src/thread/NonThreadSafeValue.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\thread; +use pmmp\thread\ThreadSafe; use function get_debug_type; use function igbinary_serialize; use function igbinary_unserialize; @@ -34,7 +35,7 @@ use function igbinary_unserialize; * * @phpstan-template TValue */ -final class NonThreadSafeValue extends \ThreadedBase{ +final class NonThreadSafeValue extends ThreadSafe{ private string $variable; /** diff --git a/src/thread/Thread.php b/src/thread/Thread.php index 1c73cb1e2..706f96429 100644 --- a/src/thread/Thread.php +++ b/src/thread/Thread.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\thread; +use pmmp\thread\Thread as NativeThread; use pocketmine\scheduler\AsyncTask; -use const PTHREADS_INHERIT_NONE; /** * Specialized Thread class aimed at PocketMine-MP-related usages. It handles setting up autoloading and error handling. @@ -35,10 +35,10 @@ use const PTHREADS_INHERIT_NONE; * CPU. * @see AsyncTask */ -abstract class Thread extends \Thread{ +abstract class Thread extends NativeThread{ use CommonThreadPartsTrait; - public function start(int $options = PTHREADS_INHERIT_NONE) : bool{ + public function start(int $options = NativeThread::INHERIT_NONE) : bool{ //this is intentionally not traitified ThreadManager::getInstance()->add($this); diff --git a/src/thread/ThreadManager.php b/src/thread/ThreadManager.php index a60d9bf9e..0ec7f1b13 100644 --- a/src/thread/ThreadManager.php +++ b/src/thread/ThreadManager.php @@ -23,9 +23,11 @@ declare(strict_types=1); namespace pocketmine\thread; +use pmmp\thread\ThreadSafe; +use pmmp\thread\ThreadSafeArray; use function spl_object_id; -class ThreadManager extends \ThreadedBase{ +class ThreadManager extends ThreadSafe{ private static ?self $instance = null; @@ -40,11 +42,11 @@ class ThreadManager extends \ThreadedBase{ return self::$instance; } - /** @phpstan-var \ThreadedArray */ - private \ThreadedArray $threads; + /** @phpstan-var ThreadSafeArray */ + private ThreadSafeArray $threads; private function __construct(){ - $this->threads = new \ThreadedArray(); + $this->threads = new ThreadSafeArray(); } public function add(Worker|Thread $thread) : void{ diff --git a/src/thread/Worker.php b/src/thread/Worker.php index 572da3c67..3bc5cda97 100644 --- a/src/thread/Worker.php +++ b/src/thread/Worker.php @@ -23,8 +23,9 @@ declare(strict_types=1); namespace pocketmine\thread; +use pmmp\thread\Thread as NativeThread; +use pmmp\thread\Worker as NativeWorker; use pocketmine\scheduler\AsyncTask; -use const PTHREADS_INHERIT_NONE; /** * Specialized Worker class for PocketMine-MP-related use cases. It handles setting up autoloading and error handling. @@ -36,10 +37,10 @@ use const PTHREADS_INHERIT_NONE; * If you want to run tasks on other CPU cores, check out AsyncTask first. * @see AsyncTask */ -abstract class Worker extends \Worker{ +abstract class Worker extends NativeWorker{ use CommonThreadPartsTrait; - public function start(int $options = PTHREADS_INHERIT_NONE) : bool{ + public function start(int $options = NativeThread::INHERIT_NONE) : bool{ //this is intentionally not traitified ThreadManager::getInstance()->add($this); diff --git a/src/utils/MainLogger.php b/src/utils/MainLogger.php index f79615586..8658ff47e 100644 --- a/src/utils/MainLogger.php +++ b/src/utils/MainLogger.php @@ -24,14 +24,14 @@ declare(strict_types=1); namespace pocketmine\utils; use LogLevel; +use pmmp\thread\Thread as NativeThread; use pocketmine\thread\Thread; use pocketmine\thread\Worker; use function implode; use function sprintf; use const PHP_EOL; -use const PTHREADS_INHERIT_NONE; -class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ +class MainLogger extends \AttachableThreadSafeLogger implements \BufferedLogger{ protected bool $logDebug; private string $format = TextFormat::AQUA . "[%s] " . TextFormat::RESET . "%s[%s/%s]: %s" . TextFormat::RESET; @@ -52,7 +52,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ $this->timezone = $timezone->getName(); $this->logWriterThread = new MainLoggerThread($logFile); - $this->logWriterThread->start(PTHREADS_INHERIT_NONE); + $this->logWriterThread->start(NativeThread::INHERIT_NONE); } /** @@ -165,7 +165,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ } public function shutdownLogWriterThread() : void{ - if(\Thread::getCurrentThreadId() === $this->logWriterThread->getCreatorId()){ + if(NativeThread::getCurrentThreadId() === $this->logWriterThread->getCreatorId()){ $this->logWriterThread->shutdown(); }else{ throw new \LogicException("Only the creator thread can shutdown the logger thread"); @@ -175,7 +175,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ protected function send(string $message, string $level, string $prefix, string $color) : void{ $time = new \DateTime('now', new \DateTimeZone($this->timezone)); - $thread = \Thread::getCurrentThread(); + $thread = NativeThread::getCurrentThread(); if($thread === null){ $threadName = $this->mainThreadName . " thread"; }elseif($thread instanceof Thread || $thread instanceof Worker){ @@ -195,7 +195,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ $this->logWriterThread->write($time->format("Y-m-d") . " " . TextFormat::clean($message) . PHP_EOL); /** - * @var \ThreadedLoggerAttachment $attachment + * @var \ThreadSafeLoggerAttachment $attachment */ foreach($this->attachments as $attachment){ $attachment->log($level, $message); @@ -208,7 +208,7 @@ class MainLogger extends \AttachableThreadedLogger implements \BufferedLogger{ } public function __destruct(){ - if(!$this->logWriterThread->isJoined() && \Thread::getCurrentThreadId() === $this->logWriterThread->getCreatorId()){ + if(!$this->logWriterThread->isJoined() && NativeThread::getCurrentThreadId() === $this->logWriterThread->getCreatorId()){ $this->shutdownLogWriterThread(); } } diff --git a/src/utils/MainLoggerThread.php b/src/utils/MainLoggerThread.php index c7287e349..548e23a4f 100644 --- a/src/utils/MainLoggerThread.php +++ b/src/utils/MainLoggerThread.php @@ -23,22 +23,24 @@ declare(strict_types=1); namespace pocketmine\utils; +use pmmp\thread\Thread; +use pmmp\thread\ThreadSafeArray; use function fclose; use function fopen; use function fwrite; use function is_resource; use function touch; -final class MainLoggerThread extends \Thread{ - /** @phpstan-var \ThreadedArray */ - private \ThreadedArray $buffer; +final class MainLoggerThread extends Thread{ + /** @phpstan-var ThreadSafeArray */ + private ThreadSafeArray $buffer; private bool $syncFlush = false; private bool $shutdown = false; public function __construct( private string $logFile ){ - $this->buffer = new \ThreadedArray(); + $this->buffer = new ThreadSafeArray(); touch($this->logFile); } diff --git a/tests/phpstan/stubs/pthreads.stub b/tests/phpstan/stubs/pmmpthread.stub similarity index 70% rename from tests/phpstan/stubs/pthreads.stub rename to tests/phpstan/stubs/pmmpthread.stub index a48fceea0..9fe0a850a 100644 --- a/tests/phpstan/stubs/pthreads.stub +++ b/tests/phpstan/stubs/pmmpthread.stub @@ -1,9 +1,11 @@ */ -abstract class ThreadedBase implements \IteratorAggregate{ +abstract class ThreadSafe implements \IteratorAggregate{ /** * @template TReturn @@ -17,9 +19,9 @@ abstract class ThreadedBase implements \IteratorAggregate{ /** * @template TKey of array-key * @template TValue - * @implements ArrayAccess + * @implements \ArrayAccess */ -final class ThreadedArray extends ThreadedBase implements Countable, ArrayAccess{ +final class ThreadSafeArray extends ThreadSafe implements \Countable, \ArrayAccess{ /** * @return TValue|null @@ -30,4 +32,4 @@ final class ThreadedArray extends ThreadedBase implements Countable, ArrayAccess * @return TValue|null */ public function shift() : mixed{} -} \ No newline at end of file +} From 3116fb8187db2ce17b637266cb6cb74d3d11af25 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 01:47:50 +0100 Subject: [PATCH 654/692] ... --- src/PocketMine.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/PocketMine.php b/src/PocketMine.php index c085fa19c..018d8e0bf 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -103,7 +103,7 @@ namespace pocketmine { "openssl" => "OpenSSL", "pcre" => "PCRE", "phar" => "Phar", - "pthreads" => "pthreads", + "pmmpthread" => "pmmpthread", "reflection" => "Reflection", "sockets" => "Sockets", "spl" => "SPL", @@ -118,12 +118,9 @@ namespace pocketmine { } } - if(($pthreads_version = phpversion("pthreads")) !== false){ - if(substr_count($pthreads_version, ".") < 2){ - $pthreads_version = "0.$pthreads_version"; - } - if(version_compare($pthreads_version, "5.1.0") < 0 || version_compare($pthreads_version, "6.0.0") >= 0){ - $messages[] = "pthreads ^5.0.0 is required, while you have $pthreads_version."; + if(($pmmpthread_version = phpversion("pmmpthread")) !== false){ + if(version_compare($pmmpthread_version, "6.0.0-beta1") < 0 || version_compare($pmmpthread_version, "7.0.0") >= 0){ + $messages[] = "pmmpthread ^6.0.0 is required, while you have $pmmpthread_version."; } } From 9509d7e04db45b33c25d8633666b083e3caaf34f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 01:51:21 +0100 Subject: [PATCH 655/692] Scrub PHPStan baselines --- tests/phpstan/configs/actual-problems.neon | 25 ------------------ tests/phpstan/configs/phpstan-bugs.neon | 30 ---------------------- 2 files changed, 55 deletions(-) diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index acbfaef03..b3e0b4496 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -440,11 +440,6 @@ parameters: count: 3 path: ../../../src/block/tile/Spawnable.php - - - message: "#^Parameter \\#2 \\$replace of function str_replace expects array\\|string, string\\|null given\\.$#" - count: 1 - path: ../../../src/command/Command.php - - message: "#^Cannot call method addParticle\\(\\) on pocketmine\\\\world\\\\World\\|null\\.$#" count: 1 @@ -800,31 +795,11 @@ parameters: count: 1 path: ../../../src/resourcepacks/ZippedResourcePack.php - - - message: "#^Cannot call method getNotifier\\(\\) on pocketmine\\\\scheduler\\\\AsyncWorker\\|null\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncTask.php - - - - message: "#^Cannot call method handleException\\(\\) on pocketmine\\\\scheduler\\\\AsyncWorker\\|null\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncTask.php - - message: "#^Property pocketmine\\\\scheduler\\\\BulkCurlTask\\:\\:\\$operations \\(string\\) does not accept string\\|null\\.$#" count: 1 path: ../../../src/scheduler/BulkCurlTask.php - - - message: "#^Cannot call method getAsyncWorkerId\\(\\) on pocketmine\\\\scheduler\\\\AsyncWorker\\|null\\.$#" - count: 1 - path: ../../../src/scheduler/DumpWorkerMemoryTask.php - - - - message: "#^Cannot call method getLogger\\(\\) on pocketmine\\\\scheduler\\\\AsyncWorker\\|null\\.$#" - count: 1 - path: ../../../src/scheduler/DumpWorkerMemoryTask.php - - message: "#^Cannot call method getNextRun\\(\\) on array\\\\|int\\|pocketmine\\\\scheduler\\\\TaskHandler\\.$#" count: 1 diff --git a/tests/phpstan/configs/phpstan-bugs.neon b/tests/phpstan/configs/phpstan-bugs.neon index f45f9a643..42d682f68 100644 --- a/tests/phpstan/configs/phpstan-bugs.neon +++ b/tests/phpstan/configs/phpstan-bugs.neon @@ -5,11 +5,6 @@ parameters: count: 1 path: ../../../src/block/BaseBanner.php - - - message: "#^Comparison operation \"\\<\" between int\\<1, max\\> and 1 is always false\\.$#" - count: 1 - path: ../../../src/console/ConsoleCommandSender.php - - message: "#^Call to function assert\\(\\) with false and 'unknown hit type' will always evaluate to false\\.$#" count: 1 @@ -35,41 +30,16 @@ parameters: count: 1 path: ../../../src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php - - - message: "#^Comparison operation \"\\<\" between int\\<1, max\\> and 1 is always false\\.$#" - count: 1 - path: ../../../src/player/Player.php - - message: "#^Dead catch \\- RuntimeException is never thrown in the try block\\.$#" count: 1 path: ../../../src/plugin/PluginManager.php - - - message: "#^Parameter \\#1 \\$work of method Worker\\:\\:stack\\(\\) expects Threaded, pocketmine\\\\scheduler\\\\AsyncTask given\\.$#" - count: 1 - path: ../../../src/scheduler/AsyncPool.php - - message: "#^Static property pocketmine\\\\scheduler\\\\AsyncTask\\:\\:\\$threadLocalStorage \\(ArrayObject\\\\>\\|null\\) does not accept non\\-empty\\-array\\\\>\\|ArrayObject\\\\>\\.$#" count: 1 path: ../../../src/scheduler/AsyncTask.php - - - message: "#^Property pocketmine\\\\thread\\\\Thread\\:\\:\\$classLoaders \\(ThreadedArray\\\\|null\\) does not accept array\\{ClassLoader\\}\\|ThreadedArray\\\\.$#" - count: 1 - path: ../../../src/thread/Thread.php - - - - message: "#^Property pocketmine\\\\thread\\\\Worker\\:\\:\\$classLoaders \\(ThreadedArray\\\\|null\\) does not accept array\\{ClassLoader\\}\\|ThreadedArray\\\\.$#" - count: 1 - path: ../../../src/thread/Worker.php - - - - message: "#^Call to function is_resource\\(\\) with resource will always evaluate to true\\.$#" - count: 2 - path: ../../../src/world/format/io/region/RegionLoader.php - - message: "#^Casting to int something that's already int\\.$#" count: 1 From 097feba4d538ffe67622f79aaaeec5a21d8f4c45 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 16:57:24 +0100 Subject: [PATCH 656/692] Absorb pocketmine/log-pthreads into PM core this was previously part of the abandoned package pocketmine/spl. It had to be separated in the PM3 days, because RakLib depended on it. Since RakLib 0.13, RakLib stopped being dependent on or aware of pthreads, so it no longer depends on any thread-related packages. It's also possible to absorb pocketmine/snooze and pocketmine/classloader back into the core with this in mind. --- composer.json | 1 - composer.lock | 48 +------------- src/Server.php | 5 +- src/network/mcpe/raklib/RakLibServer.php | 3 +- src/scheduler/AsyncPool.php | 3 +- src/scheduler/AsyncWorker.php | 5 +- src/thread/log/AttachableThreadSafeLogger.php | 64 +++++++++++++++++++ src/thread/log/ThreadSafeLogger.php | 30 +++++++++ src/thread/log/ThreadSafeLoggerAttachment.php | 30 +++++++++ src/utils/MainLogger.php | 6 +- 10 files changed, 139 insertions(+), 56 deletions(-) create mode 100644 src/thread/log/AttachableThreadSafeLogger.php create mode 100644 src/thread/log/ThreadSafeLogger.php create mode 100644 src/thread/log/ThreadSafeLoggerAttachment.php diff --git a/composer.json b/composer.json index 63d5b0d00..c8fb559d7 100644 --- a/composer.json +++ b/composer.json @@ -45,7 +45,6 @@ "pocketmine/errorhandler": "^0.6.0", "pocketmine/locale-data": "~2.19.0", "pocketmine/log": "^0.4.0", - "pocketmine/log-pthreads": "dev-stable", "pocketmine/math": "^0.4.0", "pocketmine/nbt": "^0.3.2", "pocketmine/raklib": "^0.15.0", diff --git a/composer.lock b/composer.lock index 4b6e1622f..05d87b634 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "507c2a45350440a7717ed089190fe4f0", + "content-hash": "0dc836612512d87a694945ffb87a4096", "packages": [ { "name": "adhocore/json-comment", @@ -651,51 +651,6 @@ }, "time": "2021-06-18T19:08:09+00:00" }, - { - "name": "pocketmine/log-pthreads", - "version": "dev-stable", - "source": { - "type": "git", - "url": "https://github.com/pmmp/LogPthreads.git", - "reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/bb3b5395042d12ec0d7ad5c855fd86eaf12869d3", - "reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3", - "shasum": "" - }, - "require": { - "ext-pmmpthread": "^6.0", - "php": "^8.1", - "pocketmine/log": "^0.4.0" - }, - "conflict": { - "pocketmine/spl": "<0.4" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "1.10.3", - "phpstan/phpstan-strict-rules": "^1.0" - }, - "default-branch": true, - "type": "library", - "autoload": { - "classmap": [ - "./src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "description": "Logging components specialized for pthreads used by PocketMine-MP and related projects", - "support": { - "issues": "https://github.com/pmmp/LogPthreads/issues", - "source": "https://github.com/pmmp/LogPthreads/tree/stable" - }, - "time": "2023-05-19T23:38:36+00:00" - }, { "name": "pocketmine/math", "version": "0.4.3", @@ -3298,7 +3253,6 @@ "minimum-stability": "stable", "stability-flags": { "pocketmine/classloader": 20, - "pocketmine/log-pthreads": 20, "pocketmine/snooze": 20 }, "prefer-stable": false, diff --git a/src/Server.php b/src/Server.php index 1262bc00e..df419c918 100644 --- a/src/Server.php +++ b/src/Server.php @@ -92,6 +92,7 @@ use pocketmine\resourcepacks\ResourcePackManager; use pocketmine\scheduler\AsyncPool; use pocketmine\snooze\SleeperHandler; use pocketmine\stats\SendUsageTask; +use pocketmine\thread\log\AttachableThreadSafeLogger; use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; use pocketmine\updater\UpdateChecker; @@ -417,7 +418,7 @@ class Server{ return $this->autoloader; } - public function getLogger() : \AttachableThreadSafeLogger{ + public function getLogger() : AttachableThreadSafeLogger{ return $this->logger; } @@ -760,7 +761,7 @@ class Server{ public function __construct( private \DynamicClassLoader $autoloader, - private \AttachableThreadSafeLogger $logger, + private AttachableThreadSafeLogger $logger, string $dataPath, string $pluginPath ){ diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 3a3cea673..5d4492f5f 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\raklib; use pmmp\thread\Thread as NativeThread; use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperNotifier; +use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\thread\NonThreadSafeValue; use pocketmine\thread\Thread; use raklib\generic\SocketException; @@ -55,7 +56,7 @@ class RakLibServer extends Thread{ * @phpstan-param ThreadSafeArray $threadToMainBuffer */ public function __construct( - protected \ThreadSafeLogger $logger, + protected ThreadSafeLogger $logger, protected ThreadSafeArray $mainToThreadBuffer, protected ThreadSafeArray $threadToMainBuffer, InternetAddress $address, diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index e04e58fd1..72d8b29e5 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -27,6 +27,7 @@ use pmmp\thread\Thread as NativeThread; use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperHandler; use pocketmine\snooze\SleeperNotifier; +use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\utils\Utils; use function array_keys; use function array_map; @@ -70,7 +71,7 @@ class AsyncPool{ protected int $size, private int $workerMemoryLimit, private \ClassLoader $classLoader, - private \ThreadSafeLogger $logger, + private ThreadSafeLogger $logger, private SleeperHandler $eventLoop ){} diff --git a/src/scheduler/AsyncWorker.php b/src/scheduler/AsyncWorker.php index f012b61d3..89908ff31 100644 --- a/src/scheduler/AsyncWorker.php +++ b/src/scheduler/AsyncWorker.php @@ -25,6 +25,7 @@ namespace pocketmine\scheduler; use pmmp\thread\Thread as NativeThread; use pocketmine\snooze\SleeperNotifier; +use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\thread\Worker; use function gc_enable; use function ini_set; @@ -34,7 +35,7 @@ class AsyncWorker extends Worker{ private static array $store = []; public function __construct( - private \ThreadSafeLogger $logger, + private ThreadSafeLogger $logger, private int $id, private int $memoryLimit, private SleeperNotifier $notifier @@ -58,7 +59,7 @@ class AsyncWorker extends Worker{ } } - public function getLogger() : \ThreadSafeLogger{ + public function getLogger() : ThreadSafeLogger{ return $this->logger; } diff --git a/src/thread/log/AttachableThreadSafeLogger.php b/src/thread/log/AttachableThreadSafeLogger.php new file mode 100644 index 000000000..16c06f7ff --- /dev/null +++ b/src/thread/log/AttachableThreadSafeLogger.php @@ -0,0 +1,64 @@ + + */ + protected ThreadSafeArray $attachments; + + public function __construct(){ + $this->attachments = new ThreadSafeArray(); + } + + public function addAttachment(ThreadSafeLoggerAttachment $attachment) : void{ + $this->attachments[] = $attachment; + } + + public function removeAttachment(ThreadSafeLoggerAttachment $attachment) : void{ + foreach($this->attachments as $i => $a){ + if($attachment === $a){ + unset($this->attachments[$i]); + } + } + } + + public function removeAttachments() : void{ + foreach($this->attachments as $i => $a){ + unset($this->attachments[$i]); + } + } + + /** + * @return ThreadSafeLoggerAttachment[] + */ + public function getAttachments() : array{ + return (array) $this->attachments; + } +} diff --git a/src/thread/log/ThreadSafeLogger.php b/src/thread/log/ThreadSafeLogger.php new file mode 100644 index 000000000..a937f8f58 --- /dev/null +++ b/src/thread/log/ThreadSafeLogger.php @@ -0,0 +1,30 @@ +logWriterThread->write($time->format("Y-m-d") . " " . TextFormat::clean($message) . PHP_EOL); /** - * @var \ThreadSafeLoggerAttachment $attachment + * @var ThreadSafeLoggerAttachment $attachment */ foreach($this->attachments as $attachment){ $attachment->log($level, $message); From 1cb7846f7c0bf76baaf92a0ccd217078a6a1bb10 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 18:24:10 +0100 Subject: [PATCH 657/692] Remove LogPthreads from CONTRIBUTING.md --- CONTRIBUTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0f3698d49..adbf6ad3e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,6 @@ Take a look at the table below if you can't find the class or function you're lo | [pmmp/ClassLoader](https://github.com/pmmp/`ClassLoader`) | `BaseClassLoader`
`ClassLoader`
`DynamicClassLoader` | | [pmmp/Color](https://github.com/pmmp/Color) | `pocketmine\color` | | [pmmp/ErrorHandler](https://github.com/pmmp/ErrorHandler) | `pocketmine\errorhandler` | -| [pmmp/LogPthreads](https://github.com/pmmp/LogPthreads) | `ThreadedLoggerAttachment`
`ThreadedLogger`
`AttachableThreadedLogger` | | [pmmp/Log](https://github.com/pmmp/Log) | `AttachableLogger`
`BufferedLogger`
`GlobalLogger`
`LogLevel`
`Logger`
`PrefixedLogger`
`SimpleLogger` | | [pmmp/Math](https://github.com/pmmp/Math) | `pocketmine\math` | | [pmmp/NBT](https://github.com/pmmp/NBT) | `pocketmine\nbt` | From 5afeeb8f89238cdd6a88a9b367d0b3269c9ec5a9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 18:55:36 +0100 Subject: [PATCH 658/692] Remove nonsensical code from block and item serializers At the time when I wrote this code, I was still in the head space of the kind of ID hijacking that PM4 plugins do to override built-in blocks. However, this kind of internal ID reuse makes no sense in PM5, since said IDs are only used in the core itself at runtime to identify types and states. Even if we were to allow overriding block deserializers, overriding serializers makes no sense whatsoever, since the original block would continue to exist and be accessible. There is a case to be made to allow overriding the deserializer, but not for the serializer. --- .../convert/BlockObjectToStateSerializer.php | 22 ++++----- src/data/bedrock/item/ItemSerializer.php | 45 ++++++++----------- 2 files changed, 26 insertions(+), 41 deletions(-) diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index fabb525d5..3680e4806 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -169,7 +169,6 @@ use pocketmine\data\bedrock\block\convert\BlockStateWriter as Writer; use pocketmine\math\Axis; use pocketmine\math\Facing; use pocketmine\utils\AssumptionFailedError; -use function class_parents; use function get_class; final class BlockObjectToStateSerializer implements BlockStateSerializer{ @@ -177,8 +176,8 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ * These callables actually accept Block, but for the sake of type completeness, it has to be never, since we can't * describe the bottom type of a type hierarchy only containing Block. * - * @var \Closure[][] - * @phpstan-var array> + * @var \Closure[] + * @phpstan-var array */ private array $serializers = []; @@ -212,7 +211,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ if(isset($this->serializers[$block->getTypeId()])){ throw new \InvalidArgumentException("Block type ID " . $block->getTypeId() . " already has a serializer registered"); } - $this->serializers[$block->getTypeId()][get_class($block)] = $serializer; + $this->serializers[$block->getTypeId()] = $serializer; } public function mapSimple(Block $block, string $id) : void{ @@ -240,21 +239,16 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ public function serializeBlock(Block $blockState) : BlockStateData{ $typeId = $blockState->getTypeId(); - $locatedSerializer = $this->serializers[$typeId][get_class($blockState)] ?? null; - if($locatedSerializer === null){ - foreach(class_parents($blockState) as $parent){ - if(isset($this->serializers[$typeId][$parent])){ - $locatedSerializer = $this->serializers[$typeId][$parent]; - break; - } - } - } - + $locatedSerializer = $this->serializers[$typeId] ?? null; if($locatedSerializer === null){ throw new BlockStateSerializeException("No serializer registered for " . get_class($blockState) . " with type ID $typeId"); } /** + * TODO: there is no guarantee that this type actually matches that of $blockState - a plugin may have stolen + * the type ID of the block (which never makes sense, even in a world where overriding block types is a thing). + * In the future we'll need some way to guarantee that type IDs are never reused (perhaps spl_object_id()?) + * * @var \Closure $serializer * @phpstan-var \Closure(TBlockType) : Writer $serializer */ diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 0b153c3da..478f9873d 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -33,7 +33,6 @@ use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\VanillaItems as Items; use pocketmine\utils\AssumptionFailedError; -use function class_parents; use function get_class; final class ItemSerializer{ @@ -41,14 +40,14 @@ final class ItemSerializer{ * These callables actually accept Item, but for the sake of type completeness, it has to be never, since we can't * describe the bottom type of a type hierarchy only containing Item. * - * @var \Closure[][] - * @phpstan-var array> + * @var \Closure[] + * @phpstan-var array */ private array $itemSerializers = []; /** * @var \Closure[][] - * @phpstan-var array> + * @phpstan-var array */ private array $blockItemSerializers = []; @@ -69,7 +68,7 @@ final class ItemSerializer{ if(isset($this->itemSerializers[$index])){ throw new \InvalidArgumentException("Item type ID " . $index . " already has a serializer registered"); } - $this->itemSerializers[$index][get_class($item)] = $serializer; + $this->itemSerializers[$index] = $serializer; } /** @@ -82,7 +81,7 @@ final class ItemSerializer{ if(isset($this->blockItemSerializers[$index])){ throw new AssumptionFailedError("Registering the same blockitem twice!"); } - $this->blockItemSerializers[$index][get_class($block)] = $serializer; + $this->blockItemSerializers[$index] = $serializer; } /** @@ -100,21 +99,16 @@ final class ItemSerializer{ }else{ $index = $item->getTypeId(); - $locatedSerializer = $this->itemSerializers[$index][get_class($item)] ?? null; - if($locatedSerializer === null){ - foreach(class_parents($item) as $parent){ - if(isset($this->itemSerializers[$index][$parent])){ - $locatedSerializer = $this->itemSerializers[$index][$parent]; - break; - } - } - } - + $locatedSerializer = $this->itemSerializers[$index] ?? null; if($locatedSerializer === null){ throw new ItemTypeSerializeException("No serializer registered for " . get_class($item) . " ($index) " . $item->getName()); } /** + * TODO: there is no guarantee that this type actually matches that of $item - a plugin may have stolen + * the type ID of the item (which never makes sense, even in a world where overriding item types is a thing). + * In the future we'll need some way to guarantee that type IDs are never reused (perhaps spl_object_id()?) + * * @var \Closure $serializer * @phpstan-var \Closure(TItemType) : Data $serializer */ @@ -156,18 +150,15 @@ final class ItemSerializer{ private function serializeBlockItem(Block $block) : Data{ $index = $block->getTypeId(); - $locatedSerializer = $this->blockItemSerializers[$index][get_class($block)] ?? null; - if($locatedSerializer === null){ - foreach(class_parents($block) as $parent){ - if(isset($this->blockItemSerializers[$index][$parent])){ - $locatedSerializer = $this->blockItemSerializers[$index][$parent]; - break; - } - } - } - + $locatedSerializer = $this->blockItemSerializers[$index] ?? null; if($locatedSerializer !== null){ - /** @phpstan-var \Closure(TBlockType) : Data $serializer */ + /** + * TODO: there is no guarantee that this type actually matches that of $block - a plugin may have stolen + * the type ID of the block (which never makes sense, even in a world where overriding block types is a thing). + * In the future we'll need some way to guarantee that type IDs are never reused (perhaps spl_object_id()?) + * + * @phpstan-var \Closure(TBlockType) : Data $serializer + */ $serializer = $locatedSerializer; $data = $serializer($block); }else{ From 3109a179dbb4ccea702a8f29f484354f5e452176 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 18:56:28 +0100 Subject: [PATCH 659/692] ... --- src/data/bedrock/item/ItemSerializer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index 478f9873d..d32050d7c 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -46,7 +46,7 @@ final class ItemSerializer{ private array $itemSerializers = []; /** - * @var \Closure[][] + * @var \Closure[] * @phpstan-var array */ private array $blockItemSerializers = []; From fdb724c646f3cf5fef9f7c664d908a822cf4e2bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 20 May 2023 18:58:59 +0100 Subject: [PATCH 660/692] ItemSerializer: change exception type --- src/data/bedrock/item/ItemSerializer.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/bedrock/item/ItemSerializer.php b/src/data/bedrock/item/ItemSerializer.php index d32050d7c..39aeb7bfb 100644 --- a/src/data/bedrock/item/ItemSerializer.php +++ b/src/data/bedrock/item/ItemSerializer.php @@ -32,7 +32,6 @@ use pocketmine\item\CoralFan; use pocketmine\item\Item; use pocketmine\item\ItemBlock; use pocketmine\item\VanillaItems as Items; -use pocketmine\utils\AssumptionFailedError; use function get_class; final class ItemSerializer{ @@ -79,7 +78,7 @@ final class ItemSerializer{ public function mapBlock(Block $block, \Closure $serializer) : void{ $index = $block->getTypeId(); if(isset($this->blockItemSerializers[$index])){ - throw new AssumptionFailedError("Registering the same blockitem twice!"); + throw new \InvalidArgumentException("Block type ID " . $index . " already has a serializer registered"); } $this->blockItemSerializers[$index] = $serializer; } From 69273f3ff72214c4b6250d292f93b321e3c54358 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 21 May 2023 16:37:41 +0100 Subject: [PATCH 661/692] AsyncTask::setResult(): permit returning ThreadSafe objects to the main thread this is now supported thanks to the object rescue feature implemented in pthreads 5.1, making returning of thread-safe values from async tasks possible. This needs to be explicitly supported, since otherwise it will attempt to serialize them, which isn't supported anymore. --- src/scheduler/AsyncTask.php | 6 +- tests/phpunit/scheduler/AsyncPoolTest.php | 19 +++++++ .../scheduler/ThreadSafeResultAsyncTask.php | 55 +++++++++++++++++++ 3 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php diff --git a/src/scheduler/AsyncTask.php b/src/scheduler/AsyncTask.php index c48097bbc..367957b4e 100644 --- a/src/scheduler/AsyncTask.php +++ b/src/scheduler/AsyncTask.php @@ -25,6 +25,7 @@ namespace pocketmine\scheduler; use pmmp\thread\Runnable; use pmmp\thread\Thread as NativeThread; +use pmmp\thread\ThreadSafe; use pmmp\thread\ThreadSafeArray; use pocketmine\thread\NonThreadSafeValue; use function assert; @@ -70,8 +71,7 @@ abstract class AsyncTask extends Runnable{ /** @phpstan-var ThreadSafeArray */ public ThreadSafeArray $progressUpdates; - /** @phpstan-var NonThreadSafeValue|string|int|bool|float|null */ - private NonThreadSafeValue|string|int|bool|null|float $result = null; + private ThreadSafe|string|int|bool|null|float $result = null; private bool $cancelRun = false; private bool $submitted = false; @@ -124,7 +124,7 @@ abstract class AsyncTask extends Runnable{ } public function setResult(mixed $result) : void{ - $this->result = is_scalar($result) || is_null($result) ? $result : new NonThreadSafeValue($result); + $this->result = is_scalar($result) || is_null($result) || $result instanceof ThreadSafe ? $result : new NonThreadSafeValue($result); } public function cancelRun() : void{ diff --git a/tests/phpunit/scheduler/AsyncPoolTest.php b/tests/phpunit/scheduler/AsyncPoolTest.php index 9a61c33ff..436251d9e 100644 --- a/tests/phpunit/scheduler/AsyncPoolTest.php +++ b/tests/phpunit/scheduler/AsyncPoolTest.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace pocketmine\scheduler; use PHPUnit\Framework\TestCase; +use pmmp\thread\ThreadSafeArray; +use pocketmine\promise\PromiseResolver; use pocketmine\snooze\SleeperHandler; use pocketmine\utils\MainLogger; use function define; @@ -69,4 +71,21 @@ class AsyncPoolTest extends TestCase{ } self::assertTrue(PublishProgressRaceAsyncTask::$success, "Progress was not reported before task completion"); } + + public function testThreadSafeSetResult() : void{ + $resolver = new PromiseResolver(); + $resolver->getPromise()->onCompletion( + function(ThreadSafeArray $result) : void{ + self::assertCount(1, $result); + self::assertSame(["foo"], (array) $result); + }, + function() : void{ + self::fail("Promise failed"); + } + ); + $this->pool->submitTask(new ThreadSafeResultAsyncTask($resolver)); + while($this->pool->collectTasks()){ + usleep(50 * 1000); + } + } } diff --git a/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php b/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php new file mode 100644 index 000000000..750c56834 --- /dev/null +++ b/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php @@ -0,0 +1,55 @@ + $promise + */ + public function __construct( + PromiseResolver $promise + ){ + $this->storeLocal(self::TLS_KEY_PROMISE, $promise); + } + + public function onRun() : void{ + //this only works in pthreads 5.1+ and pmmpthread + //in prior versions the ThreadSafe would be destroyed before onCompletion is called + $result = new ThreadSafeArray(); + $result[] = "foo"; + $this->setResult($result); + } + + public function onCompletion() : void{ + /** @var PromiseResolver $promise */ + $promise = $this->fetchLocal(self::TLS_KEY_PROMISE); + $promise->resolve($this->getResult()); + } +} From 815b4e2babe9a2d3ac53f9e73a2f89181b23e7d7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 21 May 2023 16:46:23 +0100 Subject: [PATCH 662/692] Fix PHPStan --- tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php b/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php index 750c56834..791d36d75 100644 --- a/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php +++ b/tests/phpunit/scheduler/ThreadSafeResultAsyncTask.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\scheduler; -use pmmp\thread\ThreadSafe; use pmmp\thread\ThreadSafeArray; use pocketmine\promise\PromiseResolver; @@ -31,7 +30,7 @@ class ThreadSafeResultAsyncTask extends AsyncTask{ private const TLS_KEY_PROMISE = "promise"; /** - * @phpstan-param PromiseResolver $promise + * @phpstan-param PromiseResolver> $promise */ public function __construct( PromiseResolver $promise @@ -48,8 +47,10 @@ class ThreadSafeResultAsyncTask extends AsyncTask{ } public function onCompletion() : void{ - /** @var PromiseResolver $promise */ + /** @var PromiseResolver> $promise */ $promise = $this->fetchLocal(self::TLS_KEY_PROMISE); - $promise->resolve($this->getResult()); + /** @var ThreadSafeArray $result */ + $result = $this->getResult(); + $promise->resolve($result); } } From d2c34615f50824a141b850e320de36d80709d428 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 22 May 2023 22:35:39 +0100 Subject: [PATCH 663/692] Update build/php to pmmp/PHP-Binaries@b1d5c0d737be86538bb35e1408cd53a616de5a27 --- build/php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/php b/build/php index f860ade30..b1d5c0d73 160000 --- a/build/php +++ b/build/php @@ -1 +1 @@ -Subproject commit f860ade30acc074a98bbf5ff286f35b5eda10c86 +Subproject commit b1d5c0d737be86538bb35e1408cd53a616de5a27 From 4aba9d9725f63b4708a8f04ac3c8c2e222377f74 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 22 May 2023 22:52:43 +0100 Subject: [PATCH 664/692] Absorb pocketmine/classloader into the core code the only use for this class is to facilitate random runtime plugin loading, and it's not complete even for that purpose. Since nothing but PM uses pocketmine/classloader anyway, it doesn't make sense to have it outside the core. As with LogPthreads, it's just adding more maintenance work. --- composer.json | 1 - composer.lock | 49 +----- src/PocketMine.php | 3 +- src/Server.php | 5 +- src/plugin/PharPluginLoader.php | 3 +- src/scheduler/AsyncPool.php | 3 +- src/thread/CommonThreadPartsTrait.php | 10 +- src/thread/ThreadSafeClassLoader.php | 182 ++++++++++++++++++++++ tests/phpunit/scheduler/AsyncPoolTest.php | 3 +- 9 files changed, 199 insertions(+), 60 deletions(-) create mode 100644 src/thread/ThreadSafeClassLoader.php diff --git a/composer.json b/composer.json index c8fb559d7..fd47dca93 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,6 @@ "pocketmine/bedrock-protocol": "~21.0.0+bedrock-1.19.80", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", - "pocketmine/classloader": "dev-stable", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", "pocketmine/locale-data": "~2.19.0", diff --git a/composer.lock b/composer.lock index 05d87b634..a9d1e6d81 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0dc836612512d87a694945ffb87a4096", + "content-hash": "812a98ecf031488987b3216e785fee19", "packages": [ { "name": "adhocore/json-comment", @@ -464,52 +464,6 @@ }, "time": "2020-12-11T01:45:37+00:00" }, - { - "name": "pocketmine/classloader", - "version": "dev-stable", - "source": { - "type": "git", - "url": "https://github.com/pmmp/ClassLoader.git", - "reference": "e15c9b4d310581d2d2c9bf2794869cb940e011e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/e15c9b4d310581d2d2c9bf2794869cb940e011e1", - "reference": "e15c9b4d310581d2d2c9bf2794869cb940e011e1", - "shasum": "" - }, - "require": { - "ext-pmmpthread": "^6.0", - "ext-reflection": "*", - "php": "^8.1" - }, - "conflict": { - "pocketmine/spl": "<0.4" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "1.10.15", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "default-branch": true, - "type": "library", - "autoload": { - "classmap": [ - "./src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "description": "Ad-hoc autoloading components used by PocketMine-MP", - "support": { - "issues": "https://github.com/pmmp/ClassLoader/issues", - "source": "https://github.com/pmmp/ClassLoader/tree/stable" - }, - "time": "2023-05-19T23:39:02+00:00" - }, { "name": "pocketmine/color", "version": "0.3.1", @@ -3252,7 +3206,6 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "pocketmine/classloader": 20, "pocketmine/snooze": 20 }, "prefer-stable": false, diff --git a/src/PocketMine.php b/src/PocketMine.php index 018d8e0bf..7003cca85 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -26,6 +26,7 @@ namespace pocketmine { use Composer\InstalledVersions; use pocketmine\errorhandler\ErrorToExceptionHandler; use pocketmine\thread\ThreadManager; + use pocketmine\thread\ThreadSafeClassLoader; use pocketmine\utils\Filesystem; use pocketmine\utils\MainLogger; use pocketmine\utils\Process; @@ -327,7 +328,7 @@ JIT_WARNING /* * We now use the Composer autoloader, but this autoloader is still for loading plugins. */ - $autoloader = new \BaseClassLoader(); + $autoloader = new ThreadSafeClassLoader(); $autoloader->register(false); new Server($autoloader, $logger, $dataPath, $pluginPath); diff --git a/src/Server.php b/src/Server.php index df419c918..f604c93d7 100644 --- a/src/Server.php +++ b/src/Server.php @@ -93,6 +93,7 @@ use pocketmine\scheduler\AsyncPool; use pocketmine\snooze\SleeperHandler; use pocketmine\stats\SendUsageTask; use pocketmine\thread\log\AttachableThreadSafeLogger; +use pocketmine\thread\ThreadSafeClassLoader; use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; use pocketmine\updater\UpdateChecker; @@ -414,7 +415,7 @@ class Server{ return $this->configGroup->getConfigString("motd", self::DEFAULT_SERVER_NAME); } - public function getLoader() : \DynamicClassLoader{ + public function getLoader() : ThreadSafeClassLoader{ return $this->autoloader; } @@ -760,7 +761,7 @@ class Server{ } public function __construct( - private \DynamicClassLoader $autoloader, + private ThreadSafeClassLoader $autoloader, private AttachableThreadSafeLogger $logger, string $dataPath, string $pluginPath diff --git a/src/plugin/PharPluginLoader.php b/src/plugin/PharPluginLoader.php index b812f20c8..a8dc04804 100644 --- a/src/plugin/PharPluginLoader.php +++ b/src/plugin/PharPluginLoader.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\plugin; +use pocketmine\thread\ThreadSafeClassLoader; use function is_file; use function str_ends_with; @@ -31,7 +32,7 @@ use function str_ends_with; */ class PharPluginLoader implements PluginLoader{ public function __construct( - private \DynamicClassLoader $loader + private ThreadSafeClassLoader $loader ){} public function canLoadPlugin(string $path) : bool{ diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 72d8b29e5..1ee726765 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -28,6 +28,7 @@ use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperHandler; use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\log\ThreadSafeLogger; +use pocketmine\thread\ThreadSafeClassLoader; use pocketmine\utils\Utils; use function array_keys; use function array_map; @@ -70,7 +71,7 @@ class AsyncPool{ public function __construct( protected int $size, private int $workerMemoryLimit, - private \ClassLoader $classLoader, + private ThreadSafeClassLoader $classLoader, private ThreadSafeLogger $logger, private SleeperHandler $eventLoop ){} diff --git a/src/thread/CommonThreadPartsTrait.php b/src/thread/CommonThreadPartsTrait.php index a2429b056..c35dd7791 100644 --- a/src/thread/CommonThreadPartsTrait.php +++ b/src/thread/CommonThreadPartsTrait.php @@ -30,8 +30,8 @@ use function error_reporting; trait CommonThreadPartsTrait{ /** - * @var ThreadSafeArray|\ClassLoader[]|null - * @phpstan-var ThreadSafeArray|null + * @var ThreadSafeArray|ThreadSafeClassLoader[]|null + * @phpstan-var ThreadSafeArray|null */ private ?ThreadSafeArray $classLoaders = null; protected ?string $composerAutoloaderPath = null; @@ -39,14 +39,14 @@ trait CommonThreadPartsTrait{ protected bool $isKilled = false; /** - * @return \ClassLoader[] + * @return ThreadSafeClassLoader[] */ public function getClassLoaders() : ?array{ return $this->classLoaders !== null ? (array) $this->classLoaders : null; } /** - * @param \ClassLoader[] $autoloaders + * @param ThreadSafeClassLoader[] $autoloaders */ public function setClassLoaders(?array $autoloaders = null) : void{ $this->composerAutoloaderPath = \pocketmine\COMPOSER_AUTOLOADER_PATH; @@ -82,7 +82,7 @@ trait CommonThreadPartsTrait{ $autoloaders = $this->classLoaders; if($autoloaders !== null){ foreach($autoloaders as $autoloader){ - /** @var \ClassLoader $autoloader */ + /** @var ThreadSafeClassLoader $autoloader */ $autoloader->register(false); } } diff --git a/src/thread/ThreadSafeClassLoader.php b/src/thread/ThreadSafeClassLoader.php new file mode 100644 index 000000000..95b983dc1 --- /dev/null +++ b/src/thread/ThreadSafeClassLoader.php @@ -0,0 +1,182 @@ + + */ + private $fallbackLookup; + /** + * @var ThreadSafeArray|string[][] + * @phpstan-var ThreadSafeArray> + */ + private $psr4Lookup; + + public function __construct(){ + $this->fallbackLookup = new ThreadSafeArray(); + $this->psr4Lookup = new ThreadSafeArray(); + } + + protected function normalizePath(string $path) : string{ + $parts = explode("://", $path, 2); + if(count($parts) === 2){ + return $parts[0] . "://" . str_replace('/', DIRECTORY_SEPARATOR, $parts[1]); + } + return str_replace('/', DIRECTORY_SEPARATOR, $parts[0]); + } + + public function addPath(string $namespacePrefix, string $path, bool $prepend = false) : void{ + $path = $this->normalizePath($path); + if($namespacePrefix === '' || $namespacePrefix === '\\'){ + $this->fallbackLookup->synchronized(function() use ($path, $prepend) : void{ + $this->appendOrPrependLookupEntry($this->fallbackLookup, $path, $prepend); + }); + }else{ + $namespacePrefix = trim($namespacePrefix, '\\') . '\\'; + $this->psr4Lookup->synchronized(function() use ($namespacePrefix, $path, $prepend) : void{ + $list = $this->psr4Lookup[$namespacePrefix] ?? null; + if($list === null){ + $list = $this->psr4Lookup[$namespacePrefix] = new ThreadSafeArray(); + } + $this->appendOrPrependLookupEntry($list, $path, $prepend); + }); + } + } + + /** + * @phpstan-param ThreadSafeArray $list + */ + protected function appendOrPrependLookupEntry(ThreadSafeArray $list, string $entry, bool $prepend) : void{ + if($prepend){ + $entries = $this->getAndRemoveLookupEntries($list); + $list[] = $entry; + foreach($entries as $removedEntry){ + $list[] = $removedEntry; + } + }else{ + $list[] = $entry; + } + } + + /** + * @return string[] + * + * @phpstan-param ThreadSafeArray $list + * @phpstan-return list + */ + protected function getAndRemoveLookupEntries(ThreadSafeArray $list) : array{ + $entries = []; + while(($entry = $list->shift()) !== null){ + $entries[] = $entry; + } + return $entries; + } + + public function register(bool $prepend = false) : bool{ + return spl_autoload_register(function(string $name) : void{ + $this->loadClass($name); + }, true, $prepend); + } + + /** + * Called when there is a class to load + */ + public function loadClass(string $name) : bool{ + $path = $this->findClass($name); + if($path !== null){ + include($path); + if(!class_exists($name, false) && !interface_exists($name, false) && !trait_exists($name, false)){ + return false; + } + + if(method_exists($name, "onClassLoaded") && (new \ReflectionClass($name))->getMethod("onClassLoaded")->isStatic()){ + $name::onClassLoaded(); + } + + return true; + } + + return false; + } + + /** + * Returns the path for the class, if any + */ + public function findClass(string $name) : ?string{ + $baseName = str_replace("\\", DIRECTORY_SEPARATOR, $name); + + foreach($this->fallbackLookup as $path){ + $filename = $path . DIRECTORY_SEPARATOR . $baseName . ".php"; + if(file_exists($filename)){ + return $filename; + } + } + + // PSR-4 lookup + $logicalPathPsr4 = $baseName . ".php"; + + return $this->psr4Lookup->synchronized(function() use ($name, $logicalPathPsr4) : ?string{ + $subPath = $name; + while(false !== $lastPos = strrpos($subPath, '\\')){ + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + $lookup = $this->psr4Lookup[$search] ?? null; + if($lookup !== null){ + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach($lookup as $dir){ + if(file_exists($file = $dir . $pathEnd)){ + return $file; + } + } + } + } + return null; + }); + } +} diff --git a/tests/phpunit/scheduler/AsyncPoolTest.php b/tests/phpunit/scheduler/AsyncPoolTest.php index 436251d9e..fd7dc344a 100644 --- a/tests/phpunit/scheduler/AsyncPoolTest.php +++ b/tests/phpunit/scheduler/AsyncPoolTest.php @@ -27,6 +27,7 @@ use PHPUnit\Framework\TestCase; use pmmp\thread\ThreadSafeArray; use pocketmine\promise\PromiseResolver; use pocketmine\snooze\SleeperHandler; +use pocketmine\thread\ThreadSafeClassLoader; use pocketmine\utils\MainLogger; use function define; use function dirname; @@ -45,7 +46,7 @@ class AsyncPoolTest extends TestCase{ public function setUp() : void{ @define('pocketmine\\COMPOSER_AUTOLOADER_PATH', dirname(__DIR__, 3) . '/vendor/autoload.php'); $this->mainLogger = new MainLogger(tempnam(sys_get_temp_dir(), "pmlog"), false, "Main", new \DateTimeZone('UTC')); - $this->pool = new AsyncPool(2, 1024, new \BaseClassLoader(), $this->mainLogger, new SleeperHandler()); + $this->pool = new AsyncPool(2, 1024, new ThreadSafeClassLoader(), $this->mainLogger, new SleeperHandler()); } public function tearDown() : void{ From c66a3a8b3e0340fc0fbb34757855f4b5e42069e9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:09:22 +0100 Subject: [PATCH 665/692] Update to Snooze 0.5.0 --- composer.json | 2 +- composer.lock | 19 +++++++-------- src/network/mcpe/raklib/RakLibInterface.php | 25 ++++++++++---------- src/network/mcpe/raklib/RakLibServer.php | 6 ++--- src/scheduler/AsyncPool.php | 26 ++++++++++----------- src/scheduler/AsyncWorker.php | 14 +++++++++-- 6 files changed, 48 insertions(+), 44 deletions(-) diff --git a/composer.json b/composer.json index fd47dca93..392cbd8c6 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,7 @@ "pocketmine/nbt": "^0.3.2", "pocketmine/raklib": "^0.15.0", "pocketmine/raklib-ipc": "^0.2.0", - "pocketmine/snooze": "dev-master", + "pocketmine/snooze": "^0.5.0", "ramsey/uuid": "^4.1", "symfony/filesystem": "^5.4" }, diff --git a/composer.lock b/composer.lock index a9d1e6d81..f1b31a9d7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "812a98ecf031488987b3216e785fee19", + "content-hash": "4bccf431b24bf685b0829ea44e54e806", "packages": [ { "name": "adhocore/json-comment", @@ -774,16 +774,16 @@ }, { "name": "pocketmine/snooze", - "version": "dev-master", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/pmmp/Snooze.git", - "reference": "3207a201cbb10eebb4a96749678f7adef216bb71" + "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Snooze/zipball/3207a201cbb10eebb4a96749678f7adef216bb71", - "reference": "3207a201cbb10eebb4a96749678f7adef216bb71", + "url": "https://api.github.com/repos/pmmp/Snooze/zipball/a86d9ee60ce44755d166d3c7ba4b8b8be8360915", + "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915", "shasum": "" }, "require": { @@ -795,7 +795,6 @@ "phpstan/phpstan": "1.10.3", "phpstan/phpstan-strict-rules": "^1.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -809,9 +808,9 @@ "description": "Thread notification management library for code using the pthreads extension", "support": { "issues": "https://github.com/pmmp/Snooze/issues", - "source": "https://github.com/pmmp/Snooze/tree/master" + "source": "https://github.com/pmmp/Snooze/tree/0.5.0" }, - "time": "2023-05-19T23:38:19+00:00" + "time": "2023-05-22T23:43:01+00:00" }, { "name": "ramsey/collection", @@ -3205,9 +3204,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "pocketmine/snooze": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 68f02b649..93dff68a2 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -39,7 +39,6 @@ use pocketmine\network\NetworkInterfaceStartException; use pocketmine\network\PacketHandlingException; use pocketmine\player\GameMode; use pocketmine\Server; -use pocketmine\snooze\SleeperNotifier; use pocketmine\timings\Timings; use pocketmine\utils\Utils; use raklib\generic\DisconnectReason; @@ -79,7 +78,7 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ private RakLibToUserThreadMessageReceiver $eventReceiver; private UserToRakLibThreadMessageSender $interface; - private SleeperNotifier $sleeper; + private int $sleeperNotifierId; private PacketBroadcaster $packetBroadcaster; private EntityEventBroadcaster $entityEventBroadcaster; @@ -104,7 +103,15 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $this->rakServerId = mt_rand(0, PHP_INT_MAX); - $this->sleeper = new SleeperNotifier(); + $sleeperEntry = $this->server->getTickSleeper()->addNotifier(function() : void{ + Timings::$connection->startTiming(); + try{ + while($this->eventReceiver->handle($this)); + }finally{ + Timings::$connection->stopTiming(); + } + }); + $this->sleeperNotifierId = $sleeperEntry->getNotifierId(); /** @phpstan-var ThreadSafeArray $mainToThreadBuffer */ $mainToThreadBuffer = new ThreadSafeArray(); @@ -119,7 +126,7 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ $this->rakServerId, $this->server->getConfigGroup()->getPropertyInt("network.max-mtu-size", 1492), self::MCPE_RAKNET_PROTOCOL_VERSION, - $this->sleeper + $sleeperEntry ); $this->eventReceiver = new RakLibToUserThreadMessageReceiver( new PthreadsChannelReader($threadToMainBuffer) @@ -130,14 +137,6 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ } public function start() : void{ - $this->server->getTickSleeper()->addNotifier($this->sleeper, function() : void{ - Timings::$connection->startTiming(); - try{ - while($this->eventReceiver->handle($this)); - }finally{ - Timings::$connection->stopTiming(); - } - }); $this->server->getLogger()->debug("Waiting for RakLib to start..."); try{ $this->rakLib->startAndWait(); @@ -182,7 +181,7 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ } public function shutdown() : void{ - $this->server->getTickSleeper()->removeNotifier($this->sleeper); + $this->server->getTickSleeper()->removeNotifier($this->sleeperNotifierId); $this->rakLib->quit(); } diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 5d4492f5f..a3f7c1609 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -25,7 +25,7 @@ namespace pocketmine\network\mcpe\raklib; use pmmp\thread\Thread as NativeThread; use pmmp\thread\ThreadSafeArray; -use pocketmine\snooze\SleeperNotifier; +use pocketmine\snooze\SleeperHandlerEntry; use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\thread\NonThreadSafeValue; use pocketmine\thread\Thread; @@ -63,7 +63,7 @@ class RakLibServer extends Thread{ protected int $serverId, protected int $maxMtuSize, protected int $protocolVersion, - protected SleeperNotifier $mainThreadNotifier + protected SleeperHandlerEntry $sleeperEntry ){ $this->mainPath = \pocketmine\PATH; $this->address = new NonThreadSafeValue($address); @@ -133,7 +133,7 @@ class RakLibServer extends Thread{ $this->maxMtuSize, new SimpleProtocolAcceptor($this->protocolVersion), new UserToRakLibThreadMessageReceiver(new PthreadsChannelReader($this->mainToThreadBuffer)), - new RakLibToUserThreadMessageSender(new SnoozeAwarePthreadsChannelWriter($this->threadToMainBuffer, $this->mainThreadNotifier)), + new RakLibToUserThreadMessageSender(new SnoozeAwarePthreadsChannelWriter($this->threadToMainBuffer, $this->sleeperEntry->createNotifier())), new ExceptionTraceCleaner($this->mainPath) ); $this->synchronized(function() : void{ diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 1ee726765..6a696fd1b 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -26,7 +26,6 @@ namespace pocketmine\scheduler; use pmmp\thread\Thread as NativeThread; use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperHandler; -use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\thread\ThreadSafeClassLoader; use pocketmine\utils\Utils; @@ -52,8 +51,8 @@ class AsyncPool{ private array $taskQueues = []; /** - * @var AsyncWorker[] - * @phpstan-var array + * @var AsyncPoolWorkerEntry[] + * @phpstan-var array */ private array $workers = []; /** @@ -132,13 +131,12 @@ class AsyncPool{ */ private function getWorker(int $worker) : AsyncWorker{ if(!isset($this->workers[$worker])){ - $notifier = new SleeperNotifier(); - $this->workers[$worker] = new AsyncWorker($this->logger, $worker, $this->workerMemoryLimit, $notifier); - $this->eventLoop->addNotifier($notifier, function() use ($worker) : void{ + $sleeperEntry = $this->eventLoop->addNotifier(function() use ($worker) : void{ $this->collectTasksFromWorker($worker); }); - $this->workers[$worker]->setClassLoaders([$this->classLoader]); - $this->workers[$worker]->start(self::WORKER_START_OPTIONS); + $this->workers[$worker] = new AsyncPoolWorkerEntry(new AsyncWorker($this->logger, $worker, $this->workerMemoryLimit, $sleeperEntry), $sleeperEntry->getNotifierId()); + $this->workers[$worker]->worker->setClassLoaders([$this->classLoader]); + $this->workers[$worker]->worker->start(self::WORKER_START_OPTIONS); $this->taskQueues[$worker] = new \SplQueue(); @@ -147,7 +145,7 @@ class AsyncPool{ } } - return $this->workers[$worker]; + return $this->workers[$worker]->worker; } /** @@ -270,7 +268,7 @@ class AsyncPool{ break; //current task is still running, skip to next worker } } - $this->workers[$worker]->collect(); + $this->workers[$worker]->worker->collect(); return $more; } @@ -289,8 +287,8 @@ class AsyncPool{ $time = time(); foreach($this->taskQueues as $i => $queue){ if((!isset($this->workerLastUsed[$i]) || $this->workerLastUsed[$i] + 300 < $time) && $queue->isEmpty()){ - $this->workers[$i]->quit(); - $this->eventLoop->removeNotifier($this->workers[$i]->getNotifier()); + $this->workers[$i]->worker->quit(); + $this->eventLoop->removeNotifier($this->workers[$i]->sleeperNotifierId); unset($this->workers[$i], $this->taskQueues[$i], $this->workerLastUsed[$i]); $ret++; } @@ -308,8 +306,8 @@ class AsyncPool{ } foreach($this->workers as $worker){ - $worker->quit(); - $this->eventLoop->removeNotifier($worker->getNotifier()); + $worker->worker->quit(); + $this->eventLoop->removeNotifier($worker->sleeperNotifierId); } $this->workers = []; $this->taskQueues = []; diff --git a/src/scheduler/AsyncWorker.php b/src/scheduler/AsyncWorker.php index 89908ff31..517542495 100644 --- a/src/scheduler/AsyncWorker.php +++ b/src/scheduler/AsyncWorker.php @@ -24,9 +24,11 @@ declare(strict_types=1); namespace pocketmine\scheduler; use pmmp\thread\Thread as NativeThread; +use pocketmine\snooze\SleeperHandlerEntry; use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\log\ThreadSafeLogger; use pocketmine\thread\Worker; +use pocketmine\utils\AssumptionFailedError; use function gc_enable; use function ini_set; @@ -34,15 +36,21 @@ class AsyncWorker extends Worker{ /** @var mixed[] */ private static array $store = []; + private const TLS_KEY_NOTIFIER = self::class . "::notifier"; + public function __construct( private ThreadSafeLogger $logger, private int $id, private int $memoryLimit, - private SleeperNotifier $notifier + private SleeperHandlerEntry $sleeperEntry ){} public function getNotifier() : SleeperNotifier{ - return $this->notifier; + $notifier = $this->getFromThreadStore(self::TLS_KEY_NOTIFIER); + if(!$notifier instanceof SleeperNotifier){ + throw new AssumptionFailedError("SleeperNotifier not found in thread-local storage"); + } + return $notifier; } protected function onRun() : void{ @@ -57,6 +65,8 @@ class AsyncWorker extends Worker{ ini_set('memory_limit', '-1'); $this->logger->debug("No memory limit set"); } + + $this->saveToThreadStore(self::TLS_KEY_NOTIFIER, $this->sleeperEntry->createNotifier()); } public function getLogger() : ThreadSafeLogger{ From a7aebed0a03c91566e46eed140ca33755f3817eb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:19:03 +0100 Subject: [PATCH 666/692] Update DevTools submodule to pmmp/DevTools@aa1586db050d55012e99be52dad5a2ee2cbb6ec7 --- tests/plugins/DevTools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/plugins/DevTools b/tests/plugins/DevTools index ff5a4fb83..aa1586db0 160000 --- a/tests/plugins/DevTools +++ b/tests/plugins/DevTools @@ -1 +1 @@ -Subproject commit ff5a4fb83035dc5074162de5ec36185bc11cf9bb +Subproject commit aa1586db050d55012e99be52dad5a2ee2cbb6ec7 From ed64eac76f02c9ab872e8450f28ed04f3174aee9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:21:30 +0100 Subject: [PATCH 667/692] ... --- src/scheduler/AsyncPoolWorkerEntry.php | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/scheduler/AsyncPoolWorkerEntry.php diff --git a/src/scheduler/AsyncPoolWorkerEntry.php b/src/scheduler/AsyncPoolWorkerEntry.php new file mode 100644 index 000000000..ce2412620 --- /dev/null +++ b/src/scheduler/AsyncPoolWorkerEntry.php @@ -0,0 +1,32 @@ + Date: Tue, 23 May 2023 01:31:25 +0100 Subject: [PATCH 668/692] Consolidate worker data under AsyncPoolWorkerEntry instead of having a bunch of arrays... this improves the system integrity and makes it less obnoxious to look at --- src/scheduler/AsyncPool.php | 65 ++++++++++---------------- src/scheduler/AsyncPoolWorkerEntry.php | 20 +++++++- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/scheduler/AsyncPool.php b/src/scheduler/AsyncPool.php index 6a696fd1b..85a27390a 100644 --- a/src/scheduler/AsyncPool.php +++ b/src/scheduler/AsyncPool.php @@ -44,22 +44,11 @@ use const PHP_INT_MAX; class AsyncPool{ private const WORKER_START_OPTIONS = NativeThread::INHERIT_INI | NativeThread::INHERIT_COMMENTS; - /** - * @var \SplQueue[]|AsyncTask[][] - * @phpstan-var array> - */ - private array $taskQueues = []; - /** * @var AsyncPoolWorkerEntry[] * @phpstan-var array */ private array $workers = []; - /** - * @var int[] - * @phpstan-var array - */ - private array $workerLastUsed = []; /** * @var \Closure[] @@ -129,23 +118,21 @@ class AsyncPool{ * Fetches the worker with the specified ID, starting it if it does not exist, and firing any registered worker * start hooks. */ - private function getWorker(int $worker) : AsyncWorker{ - if(!isset($this->workers[$worker])){ - $sleeperEntry = $this->eventLoop->addNotifier(function() use ($worker) : void{ - $this->collectTasksFromWorker($worker); + private function getWorker(int $workerId) : AsyncPoolWorkerEntry{ + if(!isset($this->workers[$workerId])){ + $sleeperEntry = $this->eventLoop->addNotifier(function() use ($workerId) : void{ + $this->collectTasksFromWorker($workerId); }); - $this->workers[$worker] = new AsyncPoolWorkerEntry(new AsyncWorker($this->logger, $worker, $this->workerMemoryLimit, $sleeperEntry), $sleeperEntry->getNotifierId()); - $this->workers[$worker]->worker->setClassLoaders([$this->classLoader]); - $this->workers[$worker]->worker->start(self::WORKER_START_OPTIONS); - - $this->taskQueues[$worker] = new \SplQueue(); + $this->workers[$workerId] = new AsyncPoolWorkerEntry(new AsyncWorker($this->logger, $workerId, $this->workerMemoryLimit, $sleeperEntry), $sleeperEntry->getNotifierId()); + $this->workers[$workerId]->worker->setClassLoaders([$this->classLoader]); + $this->workers[$workerId]->worker->start(self::WORKER_START_OPTIONS); foreach($this->workerStartHooks as $hook){ - $hook($worker); + $hook($workerId); } } - return $this->workers[$worker]->worker; + return $this->workers[$workerId]; } /** @@ -162,9 +149,7 @@ class AsyncPool{ $task->progressUpdates = new ThreadSafeArray(); $task->setSubmitted(); - $this->getWorker($worker)->stack($task); - $this->taskQueues[$worker]->enqueue($task); - $this->workerLastUsed[$worker] = time(); + $this->getWorker($worker)->submit($task); } /** @@ -177,8 +162,8 @@ class AsyncPool{ public function selectWorker() : int{ $worker = null; $minUsage = PHP_INT_MAX; - foreach($this->taskQueues as $i => $queue){ - if(($usage = $queue->count()) < $minUsage){ + foreach($this->workers as $i => $entry){ + if(($usage = $entry->tasks->count()) < $minUsage){ $worker = $i; $minUsage = $usage; if($usage === 0){ @@ -221,13 +206,13 @@ class AsyncPool{ * @return bool whether there are tasks left to be collected */ public function collectTasks() : bool{ - foreach($this->taskQueues as $worker => $queue){ - $this->collectTasksFromWorker($worker); + foreach($this->workers as $workerId => $entry){ + $this->collectTasksFromWorker($workerId); } //we check this in a second loop, because task collection could have caused new tasks to be added to the queues - foreach($this->taskQueues as $queue){ - if(!$queue->isEmpty()){ + foreach($this->workers as $entry){ + if(!$entry->tasks->isEmpty()){ return true; } } @@ -235,10 +220,10 @@ class AsyncPool{ } public function collectTasksFromWorker(int $worker) : bool{ - if(!isset($this->taskQueues[$worker])){ + if(!isset($this->workers[$worker])){ throw new \InvalidArgumentException("No such worker $worker"); } - $queue = $this->taskQueues[$worker]; + $queue = $this->workers[$worker]->tasks; $more = false; while(!$queue->isEmpty()){ /** @var AsyncTask $task */ @@ -279,17 +264,17 @@ class AsyncPool{ * @phpstan-return array */ public function getTaskQueueSizes() : array{ - return array_map(function(\SplQueue $queue) : int{ return $queue->count(); }, $this->taskQueues); + return array_map(function(AsyncPoolWorkerEntry $entry) : int{ return $entry->tasks->count(); }, $this->workers); } public function shutdownUnusedWorkers() : int{ $ret = 0; $time = time(); - foreach($this->taskQueues as $i => $queue){ - if((!isset($this->workerLastUsed[$i]) || $this->workerLastUsed[$i] + 300 < $time) && $queue->isEmpty()){ - $this->workers[$i]->worker->quit(); - $this->eventLoop->removeNotifier($this->workers[$i]->sleeperNotifierId); - unset($this->workers[$i], $this->taskQueues[$i], $this->workerLastUsed[$i]); + foreach($this->workers as $i => $entry){ + if($entry->lastUsed + 300 < $time && $entry->tasks->isEmpty()){ + $entry->worker->quit(); + $this->eventLoop->removeNotifier($entry->sleeperNotifierId); + unset($this->workers[$i]); $ret++; } } @@ -310,7 +295,5 @@ class AsyncPool{ $this->eventLoop->removeNotifier($worker->sleeperNotifierId); } $this->workers = []; - $this->taskQueues = []; - $this->workerLastUsed = []; } } diff --git a/src/scheduler/AsyncPoolWorkerEntry.php b/src/scheduler/AsyncPoolWorkerEntry.php index ce2412620..6f6fdc5d3 100644 --- a/src/scheduler/AsyncPoolWorkerEntry.php +++ b/src/scheduler/AsyncPoolWorkerEntry.php @@ -23,10 +23,28 @@ declare(strict_types=1); namespace pocketmine\scheduler; +use function time; + final class AsyncPoolWorkerEntry{ + public int $lastUsed; + /** + * @var \SplQueue|AsyncTask[] + * @phpstan-var \SplQueue + */ + public \SplQueue $tasks; + public function __construct( public readonly AsyncWorker $worker, public readonly int $sleeperNotifierId - ){} + ){ + $this->lastUsed = time(); + $this->tasks = new \SplQueue(); + } + + public function submit(AsyncTask $task) : void{ + $this->tasks->enqueue($task); + $this->lastUsed = time(); + $this->worker->stack($task); + } } From 9d9c628acd3fa22e2ef5e08c7ed6d94757c0888e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:32:44 +0100 Subject: [PATCH 669/692] Mark AsyncPoolWorkerEntry as @internal --- src/scheduler/AsyncPoolWorkerEntry.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/scheduler/AsyncPoolWorkerEntry.php b/src/scheduler/AsyncPoolWorkerEntry.php index 6f6fdc5d3..0c62ab931 100644 --- a/src/scheduler/AsyncPoolWorkerEntry.php +++ b/src/scheduler/AsyncPoolWorkerEntry.php @@ -25,6 +25,9 @@ namespace pocketmine\scheduler; use function time; +/** + * @internal + */ final class AsyncPoolWorkerEntry{ public int $lastUsed; From 1c691167171fd9310446649e06bcc006c616db2f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:52:57 +0100 Subject: [PATCH 670/692] Release 5.0.0-BETA4 --- changelogs/5.0-beta.md | 19 +++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-beta.md b/changelogs/5.0-beta.md index 27eef09a0..c100cfefc 100644 --- a/changelogs/5.0-beta.md +++ b/changelogs/5.0-beta.md @@ -194,3 +194,22 @@ Released 17th May 2023. - `RuntimeBlockMapping` has been renamed to `BlockTranslator`. - Singletons in the `pocketmine\network\mcpe\convert` package have been centralized under `TypeConverter`. In the future, this will be injected where needed, allowing different converters to be used for different sessions (useful for multiversion). - Overriding of serializers and deserializers of items and blocks is now consistently disallowed. Due to the lack of a good reason to allow overriding built-in blocks and items, this is no longer allowed. + +# 5.0.0-BETA4 +Released 23rd May 2023. + +## General +- [`ext-pmmpthread` version 6.0.0](https://github.com/pmmp/ext-pmmpthread/releases/6.0.0) (renamed from `ext-pthreads`) is now required. This version has API changes compared to pthreads v5. Please read the linked changelog for details. +- [`pocketmine/snooze` version 0.5.0](https://github.com/pmmp/Snooze/releases/0.5.0) is now required. +- `pocketmine/classloader` and `pocketmine/log-pthreads` packages have been removed. The relevant classes from these packages are now included in-house in the `pocketmine/thread` namespace. + - `BaseClassLoader` is replaced with `pocketmine\thread\ThreadSafeClassLoader` + - `ThreadedLogger` is replaced by `pocketmine\thread\ThreadSafeLogger` + - `AttachableThreadedLogger` is replaced by `pocketmine\thread\AttachableThreadSafeLogger` + - `ThreadedLoggerAttachment` is replaced by `pocketmine\thread\ThreadSafeLoggerAttachment` + +## Fixes +- Fixed crash on unknown blocks due to late initialization of properties in `UnknownBlock`. + +## API changes +### `pocketmine\scheduler` +- `AsyncTask->setResult()` now works with thread-safe objects. This was previously not possible due to limitations in the `pthreads` extension. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index b89ac4b66..f91a871f0 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-BETA4"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "beta"; private function __construct(){ From 2ebf8757c1911fa4e925b7435fa491f32071e5ae Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 May 2023 01:53:00 +0100 Subject: [PATCH 671/692] 5.0.0-BETA5 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index f91a871f0..7ac6ec3f9 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.0.0-BETA4"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "5.0.0-BETA5"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; private function __construct(){ From ffe3556be1c8c20218190da184510518694f3234 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 25 May 2023 16:35:45 +0100 Subject: [PATCH 672/692] Block: XOR state data with type ID, improve hash distribution since most blocks have no state data, their lower 8 bits of state data were all zero. This makes state IDs a bit more distributed for minimal cost. I considered flipping these around and using type ID in the lower bits directly, but this worsened distribution for walls. In the worst case, largest number of collisions drops from 11 to 5 with this change, and the number of states with unique hash keys increased from 3518 to 4461 (out of 7638). This is still a long way from perfect, but it's a decent improvement, improving the overall load factor from 1.6 to 1.3. related to #5604 --- src/block/Block.php | 3 ++- src/block/RuntimeBlockStateRegistry.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index bc76bf952..3ce2dc188 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -140,7 +140,8 @@ class Block{ * {@link RuntimeBlockStateRegistry::fromStateId()}. */ public function getStateId() : int{ - return ($this->getTypeId() << self::INTERNAL_STATE_DATA_BITS) | $this->encodeFullState(); + $typeId = $this->getTypeId(); + return ($typeId << self::INTERNAL_STATE_DATA_BITS) | ($this->encodeFullState() ^ ($typeId & self::INTERNAL_STATE_DATA_MASK)); } /** diff --git a/src/block/RuntimeBlockStateRegistry.php b/src/block/RuntimeBlockStateRegistry.php index e524fb262..78be658bc 100644 --- a/src/block/RuntimeBlockStateRegistry.php +++ b/src/block/RuntimeBlockStateRegistry.php @@ -123,7 +123,7 @@ class RuntimeBlockStateRegistry{ $block = clone $this->fullList[$stateId]; }else{ $typeId = $stateId >> Block::INTERNAL_STATE_DATA_BITS; - $stateData = $stateId & Block::INTERNAL_STATE_DATA_MASK; + $stateData = ($stateId ^ $typeId) & Block::INTERNAL_STATE_DATA_MASK; $block = new UnknownBlock(new BID($typeId), new BlockTypeInfo(BreakInfo::instant()), $stateData); } From 24e897f813b793c50db054c33d669f4408e23b06 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 25 May 2023 16:48:34 +0100 Subject: [PATCH 673/692] Updated blockstate registry consistency check --- tests/phpunit/block/block_factory_consistency_check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index 358520a15..0317cfe3e 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -1 +1 @@ -{"knownStates":{"???":[2624000],"Acacia Button":[2560256,2560257,2560258,2560259,2560260,2560261,2560264,2560265,2560266,2560267,2560268,2560269],"Acacia Door":[2560512,2560513,2560514,2560515,2560516,2560517,2560518,2560519,2560520,2560521,2560522,2560523,2560524,2560525,2560526,2560527,2560528,2560529,2560530,2560531,2560532,2560533,2560534,2560535,2560536,2560537,2560538,2560539,2560540,2560541,2560542,2560543],"Acacia Fence":[2560768],"Acacia Fence Gate":[2561024,2561025,2561026,2561027,2561028,2561029,2561030,2561031,2561032,2561033,2561034,2561035,2561036,2561037,2561038,2561039],"Acacia Leaves":[2561280,2561281,2561282,2561283],"Acacia Log":[2561536,2561537,2561538,2561539,2561540,2561541],"Acacia Planks":[2561792],"Acacia Pressure Plate":[2562048,2562049],"Acacia Sapling":[2562304,2562305],"Acacia Sign":[2562560,2562561,2562562,2562563,2562564,2562565,2562566,2562567,2562568,2562569,2562570,2562571,2562572,2562573,2562574,2562575],"Acacia Slab":[2562816,2562817,2562818],"Acacia Stairs":[2563072,2563073,2563074,2563075,2563076,2563077,2563078,2563079],"Acacia Trapdoor":[2563328,2563329,2563330,2563331,2563332,2563333,2563334,2563335,2563336,2563337,2563338,2563339,2563340,2563341,2563342,2563343],"Acacia Wall Sign":[2563584,2563585,2563586,2563587],"Acacia Wood":[2563840,2563841,2563842,2563843,2563844,2563845],"Actinium":[2594048],"Activator Rail":[2564096,2564097,2564098,2564099,2564100,2564101,2564104,2564105,2564106,2564107,2564108,2564109],"Air":[2560000],"All Sided Mushroom Stem":[2564352],"Allium":[2564608],"Aluminum":[2594304],"Americium":[2594560],"Amethyst":[2698240],"Ancient Debris":[2698496],"Andesite":[2564864],"Andesite Slab":[2565120,2565121,2565122],"Andesite Stairs":[2565376,2565377,2565378,2565379,2565380,2565381,2565382,2565383],"Andesite Wall":[2565632,2565633,2565634,2565635,2565636,2565637,2565638,2565639,2565640,2565641,2565642,2565643,2565644,2565645,2565646,2565647,2565648,2565649,2565650,2565651,2565652,2565653,2565654,2565655,2565656,2565657,2565658,2565659,2565660,2565661,2565662,2565663,2565664,2565665,2565666,2565667,2565668,2565669,2565670,2565671,2565672,2565673,2565674,2565675,2565676,2565677,2565678,2565679,2565680,2565681,2565682,2565683,2565684,2565685,2565686,2565687,2565688,2565689,2565690,2565691,2565692,2565693,2565694,2565695,2565696,2565697,2565698,2565699,2565700,2565701,2565702,2565703,2565704,2565705,2565706,2565707,2565708,2565709,2565710,2565711,2565712,2565760,2565761,2565762,2565763,2565764,2565765,2565766,2565767,2565768,2565769,2565770,2565771,2565772,2565773,2565774,2565775,2565776,2565777,2565778,2565779,2565780,2565781,2565782,2565783,2565784,2565785,2565786,2565787,2565788,2565789,2565790,2565791,2565792,2565793,2565794,2565795,2565796,2565797,2565798,2565799,2565800,2565801,2565802,2565803,2565804,2565805,2565806,2565807,2565808,2565809,2565810,2565811,2565812,2565813,2565814,2565815,2565816,2565817,2565818,2565819,2565820,2565821,2565822,2565823,2565824,2565825,2565826,2565827,2565828,2565829,2565830,2565831,2565832,2565833,2565834,2565835,2565836,2565837,2565838,2565839,2565840],"Antimony":[2594816],"Anvil":[2565888,2565889,2565890,2565892,2565893,2565894,2565896,2565897,2565898,2565900,2565901,2565902],"Argon":[2595072],"Arsenic":[2595328],"Astatine":[2595584],"Azalea Leaves":[2735616,2735617,2735618,2735619],"Azure Bluet":[2566144],"Bamboo":[2566400,2566401,2566402,2566404,2566405,2566406,2566408,2566409,2566410,2566412,2566413,2566414],"Bamboo Sapling":[2566656,2566657],"Banner":[2566912,2566913,2566914,2566915,2566916,2566917,2566918,2566919,2566920,2566921,2566922,2566923,2566924,2566925,2566926,2566927,2566928,2566929,2566930,2566931,2566932,2566933,2566934,2566935,2566936,2566937,2566938,2566939,2566940,2566941,2566942,2566943,2566944,2566945,2566946,2566947,2566948,2566949,2566950,2566951,2566952,2566953,2566954,2566955,2566956,2566957,2566958,2566959,2566960,2566961,2566962,2566963,2566964,2566965,2566966,2566967,2566968,2566969,2566970,2566971,2566972,2566973,2566974,2566975,2566976,2566977,2566978,2566979,2566980,2566981,2566982,2566983,2566984,2566985,2566986,2566987,2566988,2566989,2566990,2566991,2566992,2566993,2566994,2566995,2566996,2566997,2566998,2566999,2567000,2567001,2567002,2567003,2567004,2567005,2567006,2567007,2567008,2567009,2567010,2567011,2567012,2567013,2567014,2567015,2567016,2567017,2567018,2567019,2567020,2567021,2567022,2567023,2567024,2567025,2567026,2567027,2567028,2567029,2567030,2567031,2567032,2567033,2567034,2567035,2567036,2567037,2567038,2567039,2567040,2567041,2567042,2567043,2567044,2567045,2567046,2567047,2567048,2567049,2567050,2567051,2567052,2567053,2567054,2567055,2567056,2567057,2567058,2567059,2567060,2567061,2567062,2567063,2567064,2567065,2567066,2567067,2567068,2567069,2567070,2567071,2567072,2567073,2567074,2567075,2567076,2567077,2567078,2567079,2567080,2567081,2567082,2567083,2567084,2567085,2567086,2567087,2567088,2567089,2567090,2567091,2567092,2567093,2567094,2567095,2567096,2567097,2567098,2567099,2567100,2567101,2567102,2567103,2567104,2567105,2567106,2567107,2567108,2567109,2567110,2567111,2567112,2567113,2567114,2567115,2567116,2567117,2567118,2567119,2567120,2567121,2567122,2567123,2567124,2567125,2567126,2567127,2567128,2567129,2567130,2567131,2567132,2567133,2567134,2567135,2567136,2567137,2567138,2567139,2567140,2567141,2567142,2567143,2567144,2567145,2567146,2567147,2567148,2567149,2567150,2567151,2567152,2567153,2567154,2567155,2567156,2567157,2567158,2567159,2567160,2567161,2567162,2567163,2567164,2567165,2567166,2567167],"Barium":[2595840],"Barrel":[2567168,2567169,2567170,2567171,2567172,2567173,2567176,2567177,2567178,2567179,2567180,2567181],"Barrier":[2567424],"Basalt":[2698752,2698753,2698754],"Beacon":[2567680],"Bed Block":[2567936,2567937,2567938,2567939,2567940,2567941,2567942,2567943,2567944,2567945,2567946,2567947,2567948,2567949,2567950,2567951,2567952,2567953,2567954,2567955,2567956,2567957,2567958,2567959,2567960,2567961,2567962,2567963,2567964,2567965,2567966,2567967,2567968,2567969,2567970,2567971,2567972,2567973,2567974,2567975,2567976,2567977,2567978,2567979,2567980,2567981,2567982,2567983,2567984,2567985,2567986,2567987,2567988,2567989,2567990,2567991,2567992,2567993,2567994,2567995,2567996,2567997,2567998,2567999,2568000,2568001,2568002,2568003,2568004,2568005,2568006,2568007,2568008,2568009,2568010,2568011,2568012,2568013,2568014,2568015,2568016,2568017,2568018,2568019,2568020,2568021,2568022,2568023,2568024,2568025,2568026,2568027,2568028,2568029,2568030,2568031,2568032,2568033,2568034,2568035,2568036,2568037,2568038,2568039,2568040,2568041,2568042,2568043,2568044,2568045,2568046,2568047,2568048,2568049,2568050,2568051,2568052,2568053,2568054,2568055,2568056,2568057,2568058,2568059,2568060,2568061,2568062,2568063,2568064,2568065,2568066,2568067,2568068,2568069,2568070,2568071,2568072,2568073,2568074,2568075,2568076,2568077,2568078,2568079,2568080,2568081,2568082,2568083,2568084,2568085,2568086,2568087,2568088,2568089,2568090,2568091,2568092,2568093,2568094,2568095,2568096,2568097,2568098,2568099,2568100,2568101,2568102,2568103,2568104,2568105,2568106,2568107,2568108,2568109,2568110,2568111,2568112,2568113,2568114,2568115,2568116,2568117,2568118,2568119,2568120,2568121,2568122,2568123,2568124,2568125,2568126,2568127,2568128,2568129,2568130,2568131,2568132,2568133,2568134,2568135,2568136,2568137,2568138,2568139,2568140,2568141,2568142,2568143,2568144,2568145,2568146,2568147,2568148,2568149,2568150,2568151,2568152,2568153,2568154,2568155,2568156,2568157,2568158,2568159,2568160,2568161,2568162,2568163,2568164,2568165,2568166,2568167,2568168,2568169,2568170,2568171,2568172,2568173,2568174,2568175,2568176,2568177,2568178,2568179,2568180,2568181,2568182,2568183,2568184,2568185,2568186,2568187,2568188,2568189,2568190,2568191],"Bedrock":[2568192,2568193],"Beetroot Block":[2568448,2568449,2568450,2568451,2568452,2568453,2568454,2568455],"Bell":[2568704,2568705,2568706,2568707,2568708,2568709,2568710,2568711,2568712,2568713,2568714,2568715,2568716,2568717,2568718,2568719],"Berkelium":[2596096],"Beryllium":[2596352],"Birch Button":[2568960,2568961,2568962,2568963,2568964,2568965,2568968,2568969,2568970,2568971,2568972,2568973],"Birch Door":[2569216,2569217,2569218,2569219,2569220,2569221,2569222,2569223,2569224,2569225,2569226,2569227,2569228,2569229,2569230,2569231,2569232,2569233,2569234,2569235,2569236,2569237,2569238,2569239,2569240,2569241,2569242,2569243,2569244,2569245,2569246,2569247],"Birch Fence":[2569472],"Birch Fence Gate":[2569728,2569729,2569730,2569731,2569732,2569733,2569734,2569735,2569736,2569737,2569738,2569739,2569740,2569741,2569742,2569743],"Birch Leaves":[2569984,2569985,2569986,2569987],"Birch Log":[2570240,2570241,2570242,2570243,2570244,2570245],"Birch Planks":[2570496],"Birch Pressure Plate":[2570752,2570753],"Birch Sapling":[2571008,2571009],"Birch Sign":[2571264,2571265,2571266,2571267,2571268,2571269,2571270,2571271,2571272,2571273,2571274,2571275,2571276,2571277,2571278,2571279],"Birch Slab":[2571520,2571521,2571522],"Birch Stairs":[2571776,2571777,2571778,2571779,2571780,2571781,2571782,2571783],"Birch Trapdoor":[2572032,2572033,2572034,2572035,2572036,2572037,2572038,2572039,2572040,2572041,2572042,2572043,2572044,2572045,2572046,2572047],"Birch Wall Sign":[2572288,2572289,2572290,2572291],"Birch Wood":[2572544,2572545,2572546,2572547,2572548,2572549],"Bismuth":[2596608],"Blackstone":[2699520],"Blackstone Slab":[2699776,2699777,2699778],"Blackstone Stairs":[2700032,2700033,2700034,2700035,2700036,2700037,2700038,2700039],"Blackstone Wall":[2700288,2700289,2700290,2700291,2700292,2700293,2700294,2700295,2700296,2700297,2700298,2700299,2700300,2700301,2700302,2700303,2700304,2700305,2700306,2700307,2700308,2700309,2700310,2700311,2700312,2700313,2700314,2700315,2700316,2700317,2700318,2700319,2700320,2700321,2700322,2700323,2700324,2700325,2700326,2700327,2700328,2700329,2700330,2700331,2700332,2700333,2700334,2700335,2700336,2700337,2700338,2700339,2700340,2700341,2700342,2700343,2700344,2700345,2700346,2700347,2700348,2700349,2700350,2700351,2700352,2700353,2700354,2700355,2700356,2700357,2700358,2700359,2700360,2700361,2700362,2700363,2700364,2700365,2700366,2700367,2700368,2700416,2700417,2700418,2700419,2700420,2700421,2700422,2700423,2700424,2700425,2700426,2700427,2700428,2700429,2700430,2700431,2700432,2700433,2700434,2700435,2700436,2700437,2700438,2700439,2700440,2700441,2700442,2700443,2700444,2700445,2700446,2700447,2700448,2700449,2700450,2700451,2700452,2700453,2700454,2700455,2700456,2700457,2700458,2700459,2700460,2700461,2700462,2700463,2700464,2700465,2700466,2700467,2700468,2700469,2700470,2700471,2700472,2700473,2700474,2700475,2700476,2700477,2700478,2700479,2700480,2700481,2700482,2700483,2700484,2700485,2700486,2700487,2700488,2700489,2700490,2700491,2700492,2700493,2700494,2700495,2700496],"Blast Furnace":[2573056,2573057,2573058,2573059,2573060,2573061,2573062,2573063],"Blue Ice":[2573568],"Blue Orchid":[2573824],"Blue Torch":[2574081,2574082,2574083,2574084,2574085],"Bohrium":[2596864],"Bone Block":[2574336,2574337,2574338],"Bookshelf":[2574592],"Boron":[2597120],"Brewing Stand":[2574848,2574849,2574850,2574851,2574852,2574853,2574854,2574855],"Brick Slab":[2575104,2575105,2575106],"Brick Stairs":[2575360,2575361,2575362,2575363,2575364,2575365,2575366,2575367],"Brick Wall":[2575616,2575617,2575618,2575619,2575620,2575621,2575622,2575623,2575624,2575625,2575626,2575627,2575628,2575629,2575630,2575631,2575632,2575633,2575634,2575635,2575636,2575637,2575638,2575639,2575640,2575641,2575642,2575643,2575644,2575645,2575646,2575647,2575648,2575649,2575650,2575651,2575652,2575653,2575654,2575655,2575656,2575657,2575658,2575659,2575660,2575661,2575662,2575663,2575664,2575665,2575666,2575667,2575668,2575669,2575670,2575671,2575672,2575673,2575674,2575675,2575676,2575677,2575678,2575679,2575680,2575681,2575682,2575683,2575684,2575685,2575686,2575687,2575688,2575689,2575690,2575691,2575692,2575693,2575694,2575695,2575696,2575744,2575745,2575746,2575747,2575748,2575749,2575750,2575751,2575752,2575753,2575754,2575755,2575756,2575757,2575758,2575759,2575760,2575761,2575762,2575763,2575764,2575765,2575766,2575767,2575768,2575769,2575770,2575771,2575772,2575773,2575774,2575775,2575776,2575777,2575778,2575779,2575780,2575781,2575782,2575783,2575784,2575785,2575786,2575787,2575788,2575789,2575790,2575791,2575792,2575793,2575794,2575795,2575796,2575797,2575798,2575799,2575800,2575801,2575802,2575803,2575804,2575805,2575806,2575807,2575808,2575809,2575810,2575811,2575812,2575813,2575814,2575815,2575816,2575817,2575818,2575819,2575820,2575821,2575822,2575823,2575824],"Bricks":[2575872],"Bromine":[2597376],"Brown Mushroom":[2576384],"Brown Mushroom Block":[2576640,2576641,2576642,2576643,2576644,2576645,2576646,2576647,2576648,2576649,2576650],"Cactus":[2576896,2576897,2576898,2576899,2576900,2576901,2576902,2576903,2576904,2576905,2576906,2576907,2576908,2576909,2576910,2576911],"Cadmium":[2597632],"Cake":[2577152,2577153,2577154,2577155,2577156,2577157,2577158],"Cake With Candle":[2729472,2729473],"Cake With Dyed Candle":[2729728,2729729,2729730,2729731,2729732,2729733,2729734,2729735,2729736,2729737,2729738,2729739,2729740,2729741,2729742,2729743,2729744,2729745,2729746,2729747,2729748,2729749,2729750,2729751,2729752,2729753,2729754,2729755,2729756,2729757,2729758,2729759],"Calcite":[2704640],"Calcium":[2597888],"Californium":[2598144],"Candle":[2728960,2728961,2728962,2728963,2728964,2728965,2728966,2728967],"Carbon":[2598400],"Carpet":[2577408,2577409,2577410,2577411,2577412,2577413,2577414,2577415,2577416,2577417,2577418,2577419,2577420,2577421,2577422,2577423],"Carrot Block":[2577664,2577665,2577666,2577667,2577668,2577669,2577670,2577671],"Cartography Table":[2730496],"Carved Pumpkin":[2577920,2577921,2577922,2577923],"Cauldron":[2731520],"Cave Vines":[2736384,2736385,2736386,2736387,2736388,2736389,2736390,2736391,2736392,2736393,2736394,2736395,2736396,2736397,2736398,2736399,2736400,2736401,2736402,2736403,2736404,2736405,2736406,2736407,2736408,2736409,2736416,2736417,2736418,2736419,2736420,2736421,2736422,2736423,2736424,2736425,2736426,2736427,2736428,2736429,2736430,2736431,2736432,2736433,2736434,2736435,2736436,2736437,2736438,2736439,2736440,2736441,2736448,2736449,2736450,2736451,2736452,2736453,2736454,2736455,2736456,2736457,2736458,2736459,2736460,2736461,2736462,2736463,2736464,2736465,2736466,2736467,2736468,2736469,2736470,2736471,2736472,2736473,2736480,2736481,2736482,2736483,2736484,2736485,2736486,2736487,2736488,2736489,2736490,2736491,2736492,2736493,2736494,2736495,2736496,2736497,2736498,2736499,2736500,2736501,2736502,2736503,2736504,2736505],"Cerium":[2598656],"Cesium":[2598912],"Chain":[2734592,2734593,2734594],"Chest":[2578432,2578433,2578434,2578435],"Chiseled Deepslate":[2710016],"Chiseled Nether Bricks":[2710272],"Chiseled Polished Blackstone":[2702080],"Chiseled Quartz Block":[2578688,2578689,2578690],"Chiseled Red Sandstone":[2578944],"Chiseled Sandstone":[2579200],"Chiseled Stone Bricks":[2579456],"Chlorine":[2599168],"Chorus Flower":[2732800,2732801,2732802,2732803,2732804,2732805],"Chorus Plant":[2733056],"Chromium":[2599424],"Clay Block":[2579712],"Coal Block":[2579968],"Coal Ore":[2580224],"Cobalt":[2599680],"Cobbled Deepslate":[2707712],"Cobbled Deepslate Slab":[2707968,2707969,2707970],"Cobbled Deepslate Stairs":[2708224,2708225,2708226,2708227,2708228,2708229,2708230,2708231],"Cobbled Deepslate Wall":[2708480,2708481,2708482,2708483,2708484,2708485,2708486,2708487,2708488,2708489,2708490,2708491,2708492,2708493,2708494,2708495,2708496,2708497,2708498,2708499,2708500,2708501,2708502,2708503,2708504,2708505,2708506,2708507,2708508,2708509,2708510,2708511,2708512,2708513,2708514,2708515,2708516,2708517,2708518,2708519,2708520,2708521,2708522,2708523,2708524,2708525,2708526,2708527,2708528,2708529,2708530,2708531,2708532,2708533,2708534,2708535,2708536,2708537,2708538,2708539,2708540,2708541,2708542,2708543,2708544,2708545,2708546,2708547,2708548,2708549,2708550,2708551,2708552,2708553,2708554,2708555,2708556,2708557,2708558,2708559,2708560,2708608,2708609,2708610,2708611,2708612,2708613,2708614,2708615,2708616,2708617,2708618,2708619,2708620,2708621,2708622,2708623,2708624,2708625,2708626,2708627,2708628,2708629,2708630,2708631,2708632,2708633,2708634,2708635,2708636,2708637,2708638,2708639,2708640,2708641,2708642,2708643,2708644,2708645,2708646,2708647,2708648,2708649,2708650,2708651,2708652,2708653,2708654,2708655,2708656,2708657,2708658,2708659,2708660,2708661,2708662,2708663,2708664,2708665,2708666,2708667,2708668,2708669,2708670,2708671,2708672,2708673,2708674,2708675,2708676,2708677,2708678,2708679,2708680,2708681,2708682,2708683,2708684,2708685,2708686,2708687,2708688],"Cobblestone":[2580480],"Cobblestone Slab":[2580736,2580737,2580738],"Cobblestone Stairs":[2580992,2580993,2580994,2580995,2580996,2580997,2580998,2580999],"Cobblestone Wall":[2581248,2581249,2581250,2581251,2581252,2581253,2581254,2581255,2581256,2581257,2581258,2581259,2581260,2581261,2581262,2581263,2581264,2581265,2581266,2581267,2581268,2581269,2581270,2581271,2581272,2581273,2581274,2581275,2581276,2581277,2581278,2581279,2581280,2581281,2581282,2581283,2581284,2581285,2581286,2581287,2581288,2581289,2581290,2581291,2581292,2581293,2581294,2581295,2581296,2581297,2581298,2581299,2581300,2581301,2581302,2581303,2581304,2581305,2581306,2581307,2581308,2581309,2581310,2581311,2581312,2581313,2581314,2581315,2581316,2581317,2581318,2581319,2581320,2581321,2581322,2581323,2581324,2581325,2581326,2581327,2581328,2581376,2581377,2581378,2581379,2581380,2581381,2581382,2581383,2581384,2581385,2581386,2581387,2581388,2581389,2581390,2581391,2581392,2581393,2581394,2581395,2581396,2581397,2581398,2581399,2581400,2581401,2581402,2581403,2581404,2581405,2581406,2581407,2581408,2581409,2581410,2581411,2581412,2581413,2581414,2581415,2581416,2581417,2581418,2581419,2581420,2581421,2581422,2581423,2581424,2581425,2581426,2581427,2581428,2581429,2581430,2581431,2581432,2581433,2581434,2581435,2581436,2581437,2581438,2581439,2581440,2581441,2581442,2581443,2581444,2581445,2581446,2581447,2581448,2581449,2581450,2581451,2581452,2581453,2581454,2581455,2581456],"Cobweb":[2581504],"Cocoa Block":[2581760,2581761,2581762,2581763,2581764,2581765,2581766,2581767,2581768,2581769,2581770,2581771],"Compound Creator":[2582016,2582017,2582018,2582019],"Concrete":[2582272,2582273,2582274,2582275,2582276,2582277,2582278,2582279,2582280,2582281,2582282,2582283,2582284,2582285,2582286,2582287],"Concrete Powder":[2582528,2582529,2582530,2582531,2582532,2582533,2582534,2582535,2582536,2582537,2582538,2582539,2582540,2582541,2582542,2582543],"Copernicium":[2600192],"Copper":[2600448],"Copper Block":[2727936,2727937,2727938,2727939,2727940,2727941,2727942,2727943],"Copper Ore":[2724864],"Coral":[2582784,2582785,2582786,2582787,2582788,2582792,2582793,2582794,2582795,2582796],"Coral Block":[2583040,2583041,2583042,2583043,2583044,2583048,2583049,2583050,2583051,2583052],"Coral Fan":[2583296,2583297,2583298,2583299,2583300,2583304,2583305,2583306,2583307,2583308,2583312,2583313,2583314,2583315,2583316,2583320,2583321,2583322,2583323,2583324],"Cornflower":[2583552],"Cracked Deepslate Bricks":[2706176],"Cracked Deepslate Tiles":[2707456],"Cracked Nether Bricks":[2710528],"Cracked Polished Blackstone Bricks":[2703360],"Cracked Stone Bricks":[2583808],"Crafting Table":[2584064],"Crimson Button":[2717184,2717185,2717186,2717187,2717188,2717189,2717192,2717193,2717194,2717195,2717196,2717197],"Crimson Door":[2718720,2718721,2718722,2718723,2718724,2718725,2718726,2718727,2718728,2718729,2718730,2718731,2718732,2718733,2718734,2718735,2718736,2718737,2718738,2718739,2718740,2718741,2718742,2718743,2718744,2718745,2718746,2718747,2718748,2718749,2718750,2718751],"Crimson Fence":[2713344],"Crimson Fence Gate":[2719488,2719489,2719490,2719491,2719492,2719493,2719494,2719495,2719496,2719497,2719498,2719499,2719500,2719501,2719502,2719503],"Crimson Hyphae":[2715648,2715649,2715650,2715651,2715652,2715653],"Crimson Planks":[2712576],"Crimson Pressure Plate":[2717952,2717953],"Crimson Sign":[2721024,2721025,2721026,2721027,2721028,2721029,2721030,2721031,2721032,2721033,2721034,2721035,2721036,2721037,2721038,2721039],"Crimson Slab":[2714112,2714113,2714114],"Crimson Stairs":[2720256,2720257,2720258,2720259,2720260,2720261,2720262,2720263],"Crimson Stem":[2714880,2714881,2714882,2714883,2714884,2714885],"Crimson Trapdoor":[2716416,2716417,2716418,2716419,2716420,2716421,2716422,2716423,2716424,2716425,2716426,2716427,2716428,2716429,2716430,2716431],"Crimson Wall Sign":[2721792,2721793,2721794,2721795],"Crying Obsidian":[2727168],"Curium":[2600704],"Cut Copper Block":[2728192,2728193,2728194,2728195,2728196,2728197,2728198,2728199],"Cut Copper Slab Slab":[2728448,2728449,2728450,2728451,2728452,2728453,2728454,2728455,2728456,2728457,2728458,2728459,2728460,2728461,2728462,2728463,2728464,2728465,2728466,2728467,2728468,2728469,2728470,2728471],"Cut Copper Stairs":[2728704,2728705,2728706,2728707,2728708,2728709,2728710,2728711,2728712,2728713,2728714,2728715,2728716,2728717,2728718,2728719,2728720,2728721,2728722,2728723,2728724,2728725,2728726,2728727,2728728,2728729,2728730,2728731,2728732,2728733,2728734,2728735,2728736,2728737,2728738,2728739,2728740,2728741,2728742,2728743,2728744,2728745,2728746,2728747,2728748,2728749,2728750,2728751,2728752,2728753,2728754,2728755,2728756,2728757,2728758,2728759,2728760,2728761,2728762,2728763,2728764,2728765,2728766,2728767],"Cut Red Sandstone":[2584320],"Cut Red Sandstone Slab":[2584576,2584577,2584578],"Cut Sandstone":[2584832],"Cut Sandstone Slab":[2585088,2585089,2585090],"Dandelion":[2585600],"Dark Oak Button":[2585856,2585857,2585858,2585859,2585860,2585861,2585864,2585865,2585866,2585867,2585868,2585869],"Dark Oak Door":[2586112,2586113,2586114,2586115,2586116,2586117,2586118,2586119,2586120,2586121,2586122,2586123,2586124,2586125,2586126,2586127,2586128,2586129,2586130,2586131,2586132,2586133,2586134,2586135,2586136,2586137,2586138,2586139,2586140,2586141,2586142,2586143],"Dark Oak Fence":[2586368],"Dark Oak Fence Gate":[2586624,2586625,2586626,2586627,2586628,2586629,2586630,2586631,2586632,2586633,2586634,2586635,2586636,2586637,2586638,2586639],"Dark Oak Leaves":[2586880,2586881,2586882,2586883],"Dark Oak Log":[2587136,2587137,2587138,2587139,2587140,2587141],"Dark Oak Planks":[2587392],"Dark Oak Pressure Plate":[2587648,2587649],"Dark Oak Sapling":[2587904,2587905],"Dark Oak Sign":[2588160,2588161,2588162,2588163,2588164,2588165,2588166,2588167,2588168,2588169,2588170,2588171,2588172,2588173,2588174,2588175],"Dark Oak Slab":[2588416,2588417,2588418],"Dark Oak Stairs":[2588672,2588673,2588674,2588675,2588676,2588677,2588678,2588679],"Dark Oak Trapdoor":[2588928,2588929,2588930,2588931,2588932,2588933,2588934,2588935,2588936,2588937,2588938,2588939,2588940,2588941,2588942,2588943],"Dark Oak Wall Sign":[2589184,2589185,2589186,2589187],"Dark Oak Wood":[2589440,2589441,2589442,2589443,2589444,2589445],"Dark Prismarine":[2589696],"Dark Prismarine Slab":[2589952,2589953,2589954],"Dark Prismarine Stairs":[2590208,2590209,2590210,2590211,2590212,2590213,2590214,2590215],"Darmstadtium":[2600960],"Daylight Sensor":[2590464,2590465,2590466,2590467,2590468,2590469,2590470,2590471,2590472,2590473,2590474,2590475,2590476,2590477,2590478,2590479,2590480,2590481,2590482,2590483,2590484,2590485,2590486,2590487,2590488,2590489,2590490,2590491,2590492,2590493,2590494,2590495],"Dead Bush":[2590720],"Deepslate":[2704896,2704897,2704898],"Deepslate Brick Slab":[2705408,2705409,2705410],"Deepslate Brick Stairs":[2705664,2705665,2705666,2705667,2705668,2705669,2705670,2705671],"Deepslate Brick Wall":[2705920,2705921,2705922,2705923,2705924,2705925,2705926,2705927,2705928,2705929,2705930,2705931,2705932,2705933,2705934,2705935,2705936,2705937,2705938,2705939,2705940,2705941,2705942,2705943,2705944,2705945,2705946,2705947,2705948,2705949,2705950,2705951,2705952,2705953,2705954,2705955,2705956,2705957,2705958,2705959,2705960,2705961,2705962,2705963,2705964,2705965,2705966,2705967,2705968,2705969,2705970,2705971,2705972,2705973,2705974,2705975,2705976,2705977,2705978,2705979,2705980,2705981,2705982,2705983,2705984,2705985,2705986,2705987,2705988,2705989,2705990,2705991,2705992,2705993,2705994,2705995,2705996,2705997,2705998,2705999,2706000,2706048,2706049,2706050,2706051,2706052,2706053,2706054,2706055,2706056,2706057,2706058,2706059,2706060,2706061,2706062,2706063,2706064,2706065,2706066,2706067,2706068,2706069,2706070,2706071,2706072,2706073,2706074,2706075,2706076,2706077,2706078,2706079,2706080,2706081,2706082,2706083,2706084,2706085,2706086,2706087,2706088,2706089,2706090,2706091,2706092,2706093,2706094,2706095,2706096,2706097,2706098,2706099,2706100,2706101,2706102,2706103,2706104,2706105,2706106,2706107,2706108,2706109,2706110,2706111,2706112,2706113,2706114,2706115,2706116,2706117,2706118,2706119,2706120,2706121,2706122,2706123,2706124,2706125,2706126,2706127,2706128],"Deepslate Bricks":[2705152],"Deepslate Coal Ore":[2722816],"Deepslate Copper Ore":[2724608],"Deepslate Diamond Ore":[2723072],"Deepslate Emerald Ore":[2723328],"Deepslate Gold Ore":[2724352],"Deepslate Iron Ore":[2724096],"Deepslate Lapis Lazuli Ore":[2723584],"Deepslate Redstone Ore":[2723840,2723841],"Deepslate Tile Slab":[2706688,2706689,2706690],"Deepslate Tile Stairs":[2706944,2706945,2706946,2706947,2706948,2706949,2706950,2706951],"Deepslate Tile Wall":[2707200,2707201,2707202,2707203,2707204,2707205,2707206,2707207,2707208,2707209,2707210,2707211,2707212,2707213,2707214,2707215,2707216,2707217,2707218,2707219,2707220,2707221,2707222,2707223,2707224,2707225,2707226,2707227,2707228,2707229,2707230,2707231,2707232,2707233,2707234,2707235,2707236,2707237,2707238,2707239,2707240,2707241,2707242,2707243,2707244,2707245,2707246,2707247,2707248,2707249,2707250,2707251,2707252,2707253,2707254,2707255,2707256,2707257,2707258,2707259,2707260,2707261,2707262,2707263,2707264,2707265,2707266,2707267,2707268,2707269,2707270,2707271,2707272,2707273,2707274,2707275,2707276,2707277,2707278,2707279,2707280,2707328,2707329,2707330,2707331,2707332,2707333,2707334,2707335,2707336,2707337,2707338,2707339,2707340,2707341,2707342,2707343,2707344,2707345,2707346,2707347,2707348,2707349,2707350,2707351,2707352,2707353,2707354,2707355,2707356,2707357,2707358,2707359,2707360,2707361,2707362,2707363,2707364,2707365,2707366,2707367,2707368,2707369,2707370,2707371,2707372,2707373,2707374,2707375,2707376,2707377,2707378,2707379,2707380,2707381,2707382,2707383,2707384,2707385,2707386,2707387,2707388,2707389,2707390,2707391,2707392,2707393,2707394,2707395,2707396,2707397,2707398,2707399,2707400,2707401,2707402,2707403,2707404,2707405,2707406,2707407,2707408],"Deepslate Tiles":[2706432],"Detector Rail":[2590976,2590977,2590978,2590979,2590980,2590981,2590984,2590985,2590986,2590987,2590988,2590989],"Diamond Block":[2591232],"Diamond Ore":[2591488],"Diorite":[2591744],"Diorite Slab":[2592000,2592001,2592002],"Diorite Stairs":[2592256,2592257,2592258,2592259,2592260,2592261,2592262,2592263],"Diorite Wall":[2592512,2592513,2592514,2592515,2592516,2592517,2592518,2592519,2592520,2592521,2592522,2592523,2592524,2592525,2592526,2592527,2592528,2592529,2592530,2592531,2592532,2592533,2592534,2592535,2592536,2592537,2592538,2592539,2592540,2592541,2592542,2592543,2592544,2592545,2592546,2592547,2592548,2592549,2592550,2592551,2592552,2592553,2592554,2592555,2592556,2592557,2592558,2592559,2592560,2592561,2592562,2592563,2592564,2592565,2592566,2592567,2592568,2592569,2592570,2592571,2592572,2592573,2592574,2592575,2592576,2592577,2592578,2592579,2592580,2592581,2592582,2592583,2592584,2592585,2592586,2592587,2592588,2592589,2592590,2592591,2592592,2592640,2592641,2592642,2592643,2592644,2592645,2592646,2592647,2592648,2592649,2592650,2592651,2592652,2592653,2592654,2592655,2592656,2592657,2592658,2592659,2592660,2592661,2592662,2592663,2592664,2592665,2592666,2592667,2592668,2592669,2592670,2592671,2592672,2592673,2592674,2592675,2592676,2592677,2592678,2592679,2592680,2592681,2592682,2592683,2592684,2592685,2592686,2592687,2592688,2592689,2592690,2592691,2592692,2592693,2592694,2592695,2592696,2592697,2592698,2592699,2592700,2592701,2592702,2592703,2592704,2592705,2592706,2592707,2592708,2592709,2592710,2592711,2592712,2592713,2592714,2592715,2592716,2592717,2592718,2592719,2592720],"Dirt":[2592768,2592769,2592770],"Double Tallgrass":[2593024,2593025],"Dragon Egg":[2593280],"Dried Kelp Block":[2593536],"Dubnium":[2601216],"Dyed Candle":[2729216,2729217,2729218,2729219,2729220,2729221,2729222,2729223,2729224,2729225,2729226,2729227,2729228,2729229,2729230,2729231,2729232,2729233,2729234,2729235,2729236,2729237,2729238,2729239,2729240,2729241,2729242,2729243,2729244,2729245,2729246,2729247,2729248,2729249,2729250,2729251,2729252,2729253,2729254,2729255,2729256,2729257,2729258,2729259,2729260,2729261,2729262,2729263,2729264,2729265,2729266,2729267,2729268,2729269,2729270,2729271,2729272,2729273,2729274,2729275,2729276,2729277,2729278,2729279,2729280,2729281,2729282,2729283,2729284,2729285,2729286,2729287,2729288,2729289,2729290,2729291,2729292,2729293,2729294,2729295,2729296,2729297,2729298,2729299,2729300,2729301,2729302,2729303,2729304,2729305,2729306,2729307,2729308,2729309,2729310,2729311,2729312,2729313,2729314,2729315,2729316,2729317,2729318,2729319,2729320,2729321,2729322,2729323,2729324,2729325,2729326,2729327,2729328,2729329,2729330,2729331,2729332,2729333,2729334,2729335,2729336,2729337,2729338,2729339,2729340,2729341,2729342,2729343],"Dyed Shulker Box":[2593792,2593793,2593794,2593795,2593796,2593797,2593798,2593799,2593800,2593801,2593802,2593803,2593804,2593805,2593806,2593807],"Dysprosium":[2601472],"Einsteinium":[2601728],"Element Constructor":[2599936,2599937,2599938,2599939],"Emerald Block":[2624768],"Emerald Ore":[2625024],"Enchanting Table":[2625280],"End Portal Frame":[2625536,2625537,2625538,2625539,2625540,2625541,2625542,2625543],"End Rod":[2625792,2625793,2625794,2625795,2625796,2625797],"End Stone":[2626048],"End Stone Brick Slab":[2626304,2626305,2626306],"End Stone Brick Stairs":[2626560,2626561,2626562,2626563,2626564,2626565,2626566,2626567],"End Stone Brick Wall":[2626816,2626817,2626818,2626819,2626820,2626821,2626822,2626823,2626824,2626825,2626826,2626827,2626828,2626829,2626830,2626831,2626832,2626833,2626834,2626835,2626836,2626837,2626838,2626839,2626840,2626841,2626842,2626843,2626844,2626845,2626846,2626847,2626848,2626849,2626850,2626851,2626852,2626853,2626854,2626855,2626856,2626857,2626858,2626859,2626860,2626861,2626862,2626863,2626864,2626865,2626866,2626867,2626868,2626869,2626870,2626871,2626872,2626873,2626874,2626875,2626876,2626877,2626878,2626879,2626880,2626881,2626882,2626883,2626884,2626885,2626886,2626887,2626888,2626889,2626890,2626891,2626892,2626893,2626894,2626895,2626896,2626944,2626945,2626946,2626947,2626948,2626949,2626950,2626951,2626952,2626953,2626954,2626955,2626956,2626957,2626958,2626959,2626960,2626961,2626962,2626963,2626964,2626965,2626966,2626967,2626968,2626969,2626970,2626971,2626972,2626973,2626974,2626975,2626976,2626977,2626978,2626979,2626980,2626981,2626982,2626983,2626984,2626985,2626986,2626987,2626988,2626989,2626990,2626991,2626992,2626993,2626994,2626995,2626996,2626997,2626998,2626999,2627000,2627001,2627002,2627003,2627004,2627005,2627006,2627007,2627008,2627009,2627010,2627011,2627012,2627013,2627014,2627015,2627016,2627017,2627018,2627019,2627020,2627021,2627022,2627023,2627024],"End Stone Bricks":[2627072],"Ender Chest":[2627328,2627329,2627330,2627331],"Erbium":[2601984],"Europium":[2602240],"Fake Wooden Slab":[2627584,2627585,2627586],"Farmland":[2627840,2627841,2627842,2627843,2627844,2627845,2627846,2627847],"Fermium":[2602496],"Fern":[2628096],"Fire Block":[2628352,2628353,2628354,2628355,2628356,2628357,2628358,2628359,2628360,2628361,2628362,2628363,2628364,2628365,2628366,2628367],"Flerovium":[2602752],"Fletching Table":[2628608],"Flower Pot":[2628864],"Flowering Azalea Leaves":[2735872,2735873,2735874,2735875],"Fluorine":[2603008],"Francium":[2603264],"Froglight":[2733824,2733825,2733826,2733828,2733829,2733830,2733832,2733833,2733834],"Frosted Ice":[2629120,2629121,2629122,2629123],"Furnace":[2629376,2629377,2629378,2629379,2629380,2629381,2629382,2629383],"Gadolinium":[2603520],"Gallium":[2603776],"Germanium":[2604032],"Gilded Blackstone":[2727424],"Glass":[2629632],"Glass Pane":[2629888],"Glazed Terracotta":[2697984,2697985,2697986,2697987,2697988,2697989,2697990,2697991,2697992,2697993,2697994,2697995,2697996,2697997,2697998,2697999,2698000,2698001,2698002,2698003,2698004,2698005,2698006,2698007,2698008,2698009,2698010,2698011,2698012,2698013,2698014,2698015,2698016,2698017,2698018,2698019,2698020,2698021,2698022,2698023,2698024,2698025,2698026,2698027,2698028,2698029,2698030,2698031,2698032,2698033,2698034,2698035,2698036,2698037,2698038,2698039,2698040,2698041,2698042,2698043,2698044,2698045,2698046,2698047],"Glow Item Frame":[2735104,2735105,2735106,2735107,2735108,2735109,2735112,2735113,2735114,2735115,2735116,2735117],"Glowing Obsidian":[2630144],"Glowstone":[2630400],"Gold":[2604288],"Gold Block":[2630656],"Gold Ore":[2630912],"Granite":[2631168],"Granite Slab":[2631424,2631425,2631426],"Granite Stairs":[2631680,2631681,2631682,2631683,2631684,2631685,2631686,2631687],"Granite Wall":[2631936,2631937,2631938,2631939,2631940,2631941,2631942,2631943,2631944,2631945,2631946,2631947,2631948,2631949,2631950,2631951,2631952,2631953,2631954,2631955,2631956,2631957,2631958,2631959,2631960,2631961,2631962,2631963,2631964,2631965,2631966,2631967,2631968,2631969,2631970,2631971,2631972,2631973,2631974,2631975,2631976,2631977,2631978,2631979,2631980,2631981,2631982,2631983,2631984,2631985,2631986,2631987,2631988,2631989,2631990,2631991,2631992,2631993,2631994,2631995,2631996,2631997,2631998,2631999,2632000,2632001,2632002,2632003,2632004,2632005,2632006,2632007,2632008,2632009,2632010,2632011,2632012,2632013,2632014,2632015,2632016,2632064,2632065,2632066,2632067,2632068,2632069,2632070,2632071,2632072,2632073,2632074,2632075,2632076,2632077,2632078,2632079,2632080,2632081,2632082,2632083,2632084,2632085,2632086,2632087,2632088,2632089,2632090,2632091,2632092,2632093,2632094,2632095,2632096,2632097,2632098,2632099,2632100,2632101,2632102,2632103,2632104,2632105,2632106,2632107,2632108,2632109,2632110,2632111,2632112,2632113,2632114,2632115,2632116,2632117,2632118,2632119,2632120,2632121,2632122,2632123,2632124,2632125,2632126,2632127,2632128,2632129,2632130,2632131,2632132,2632133,2632134,2632135,2632136,2632137,2632138,2632139,2632140,2632141,2632142,2632143,2632144],"Grass":[2632192],"Grass Path":[2632448],"Gravel":[2632704],"Green Torch":[2633473,2633474,2633475,2633476,2633477],"Hafnium":[2604544],"Hanging Roots":[2730240],"Hardened Clay":[2633728],"Hardened Glass":[2633984],"Hardened Glass Pane":[2634240],"Hassium":[2604800],"Hay Bale":[2634496,2634497,2634498],"Heat Block":[2578176],"Helium":[2605056],"Holmium":[2605312],"Honeycomb Block":[2722560],"Hopper":[2634752,2634754,2634755,2634756,2634757,2634760,2634762,2634763,2634764,2634765],"Hydrogen":[2605568],"Ice":[2635008],"Indium":[2605824],"Infested Chiseled Stone Brick":[2635264],"Infested Cobblestone":[2635520],"Infested Cracked Stone Brick":[2635776],"Infested Mossy Stone Brick":[2636032],"Infested Stone":[2636288],"Infested Stone Brick":[2636544],"Invisible Bedrock":[2637312],"Iodine":[2606080],"Iridium":[2606336],"Iron":[2606592],"Iron Bars":[2637824],"Iron Block":[2637568],"Iron Door":[2638080,2638081,2638082,2638083,2638084,2638085,2638086,2638087,2638088,2638089,2638090,2638091,2638092,2638093,2638094,2638095,2638096,2638097,2638098,2638099,2638100,2638101,2638102,2638103,2638104,2638105,2638106,2638107,2638108,2638109,2638110,2638111],"Iron Ore":[2638336],"Iron Trapdoor":[2638592,2638593,2638594,2638595,2638596,2638597,2638598,2638599,2638600,2638601,2638602,2638603,2638604,2638605,2638606,2638607],"Item Frame":[2638848,2638849,2638850,2638851,2638852,2638853,2638856,2638857,2638858,2638859,2638860,2638861],"Jack o'Lantern":[2647296,2647297,2647298,2647299],"Jukebox":[2639104],"Jungle Button":[2639360,2639361,2639362,2639363,2639364,2639365,2639368,2639369,2639370,2639371,2639372,2639373],"Jungle Door":[2639616,2639617,2639618,2639619,2639620,2639621,2639622,2639623,2639624,2639625,2639626,2639627,2639628,2639629,2639630,2639631,2639632,2639633,2639634,2639635,2639636,2639637,2639638,2639639,2639640,2639641,2639642,2639643,2639644,2639645,2639646,2639647],"Jungle Fence":[2639872],"Jungle Fence Gate":[2640128,2640129,2640130,2640131,2640132,2640133,2640134,2640135,2640136,2640137,2640138,2640139,2640140,2640141,2640142,2640143],"Jungle Leaves":[2640384,2640385,2640386,2640387],"Jungle Log":[2640640,2640641,2640642,2640643,2640644,2640645],"Jungle Planks":[2640896],"Jungle Pressure Plate":[2641152,2641153],"Jungle Sapling":[2641408,2641409],"Jungle Sign":[2641664,2641665,2641666,2641667,2641668,2641669,2641670,2641671,2641672,2641673,2641674,2641675,2641676,2641677,2641678,2641679],"Jungle Slab":[2641920,2641921,2641922],"Jungle Stairs":[2642176,2642177,2642178,2642179,2642180,2642181,2642182,2642183],"Jungle Trapdoor":[2642432,2642433,2642434,2642435,2642436,2642437,2642438,2642439,2642440,2642441,2642442,2642443,2642444,2642445,2642446,2642447],"Jungle Wall Sign":[2642688,2642689,2642690,2642691],"Jungle Wood":[2642944,2642945,2642946,2642947,2642948,2642949],"Krypton":[2606848],"Lab Table":[2643200,2643201,2643202,2643203],"Ladder":[2643456,2643457,2643458,2643459],"Lantern":[2643712,2643713],"Lanthanum":[2607104],"Lapis Lazuli Block":[2643968],"Lapis Lazuli Ore":[2644224],"Large Fern":[2644480,2644481],"Lava":[2644736,2644737,2644738,2644739,2644740,2644741,2644742,2644743,2644744,2644745,2644746,2644747,2644748,2644749,2644750,2644751,2644752,2644753,2644754,2644755,2644756,2644757,2644758,2644759,2644760,2644761,2644762,2644763,2644764,2644765,2644766,2644767],"Lava Cauldron":[2732032,2732033,2732034,2732035,2732036,2732037],"Lawrencium":[2607360],"Lead":[2607616],"Lectern":[2644992,2644993,2644994,2644995,2644996,2644997,2644998,2644999],"Legacy Stonecutter":[2645248],"Lever":[2645504,2645505,2645506,2645507,2645508,2645509,2645510,2645511,2645512,2645513,2645514,2645515,2645516,2645517,2645518,2645519],"Light Block":[2703616,2703617,2703618,2703619,2703620,2703621,2703622,2703623,2703624,2703625,2703626,2703627,2703628,2703629,2703630,2703631],"Lightning Rod":[2727680,2727681,2727682,2727683,2727684,2727685],"Lilac":[2646272,2646273],"Lily Pad":[2646784],"Lily of the Valley":[2646528],"Lithium":[2607872],"Livermorium":[2608128],"Loom":[2647552,2647553,2647554,2647555],"Lutetium":[2608384],"Magma Block":[2648064],"Magnesium":[2608640],"Manganese":[2608896],"Mangrove Button":[2716928,2716929,2716930,2716931,2716932,2716933,2716936,2716937,2716938,2716939,2716940,2716941],"Mangrove Door":[2718464,2718465,2718466,2718467,2718468,2718469,2718470,2718471,2718472,2718473,2718474,2718475,2718476,2718477,2718478,2718479,2718480,2718481,2718482,2718483,2718484,2718485,2718486,2718487,2718488,2718489,2718490,2718491,2718492,2718493,2718494,2718495],"Mangrove Fence":[2713088],"Mangrove Fence Gate":[2719232,2719233,2719234,2719235,2719236,2719237,2719238,2719239,2719240,2719241,2719242,2719243,2719244,2719245,2719246,2719247],"Mangrove Leaves":[2735360,2735361,2735362,2735363],"Mangrove Log":[2714624,2714625,2714626,2714627,2714628,2714629],"Mangrove Planks":[2712320],"Mangrove Pressure Plate":[2717696,2717697],"Mangrove Roots":[2733312],"Mangrove Sign":[2720768,2720769,2720770,2720771,2720772,2720773,2720774,2720775,2720776,2720777,2720778,2720779,2720780,2720781,2720782,2720783],"Mangrove Slab":[2713856,2713857,2713858],"Mangrove Stairs":[2720000,2720001,2720002,2720003,2720004,2720005,2720006,2720007],"Mangrove Trapdoor":[2716160,2716161,2716162,2716163,2716164,2716165,2716166,2716167,2716168,2716169,2716170,2716171,2716172,2716173,2716174,2716175],"Mangrove Wall Sign":[2721536,2721537,2721538,2721539],"Mangrove Wood":[2715392,2715393,2715394,2715395,2715396,2715397],"Material Reducer":[2648320,2648321,2648322,2648323],"Meitnerium":[2609152],"Melon Block":[2648576],"Melon Stem":[2648832,2648833,2648834,2648835,2648836,2648837,2648838,2648839],"Mendelevium":[2609408],"Mercury":[2609664],"Mob Head":[2649096,2649097,2649098,2649099,2649100,2649101,2649104,2649105,2649106,2649107,2649108,2649109,2649112,2649113,2649114,2649115,2649116,2649117,2649120,2649121,2649122,2649123,2649124,2649125,2649128,2649129,2649130,2649131,2649132,2649133],"Molybdenum":[2609920],"Monster Spawner":[2649344],"Moscovium":[2610176],"Mossy Cobblestone":[2649600],"Mossy Cobblestone Slab":[2649856,2649857,2649858],"Mossy Cobblestone Stairs":[2650112,2650113,2650114,2650115,2650116,2650117,2650118,2650119],"Mossy Cobblestone Wall":[2650368,2650369,2650370,2650371,2650372,2650373,2650374,2650375,2650376,2650377,2650378,2650379,2650380,2650381,2650382,2650383,2650384,2650385,2650386,2650387,2650388,2650389,2650390,2650391,2650392,2650393,2650394,2650395,2650396,2650397,2650398,2650399,2650400,2650401,2650402,2650403,2650404,2650405,2650406,2650407,2650408,2650409,2650410,2650411,2650412,2650413,2650414,2650415,2650416,2650417,2650418,2650419,2650420,2650421,2650422,2650423,2650424,2650425,2650426,2650427,2650428,2650429,2650430,2650431,2650432,2650433,2650434,2650435,2650436,2650437,2650438,2650439,2650440,2650441,2650442,2650443,2650444,2650445,2650446,2650447,2650448,2650496,2650497,2650498,2650499,2650500,2650501,2650502,2650503,2650504,2650505,2650506,2650507,2650508,2650509,2650510,2650511,2650512,2650513,2650514,2650515,2650516,2650517,2650518,2650519,2650520,2650521,2650522,2650523,2650524,2650525,2650526,2650527,2650528,2650529,2650530,2650531,2650532,2650533,2650534,2650535,2650536,2650537,2650538,2650539,2650540,2650541,2650542,2650543,2650544,2650545,2650546,2650547,2650548,2650549,2650550,2650551,2650552,2650553,2650554,2650555,2650556,2650557,2650558,2650559,2650560,2650561,2650562,2650563,2650564,2650565,2650566,2650567,2650568,2650569,2650570,2650571,2650572,2650573,2650574,2650575,2650576],"Mossy Stone Brick Slab":[2650624,2650625,2650626],"Mossy Stone Brick Stairs":[2650880,2650881,2650882,2650883,2650884,2650885,2650886,2650887],"Mossy Stone Brick Wall":[2651136,2651137,2651138,2651139,2651140,2651141,2651142,2651143,2651144,2651145,2651146,2651147,2651148,2651149,2651150,2651151,2651152,2651153,2651154,2651155,2651156,2651157,2651158,2651159,2651160,2651161,2651162,2651163,2651164,2651165,2651166,2651167,2651168,2651169,2651170,2651171,2651172,2651173,2651174,2651175,2651176,2651177,2651178,2651179,2651180,2651181,2651182,2651183,2651184,2651185,2651186,2651187,2651188,2651189,2651190,2651191,2651192,2651193,2651194,2651195,2651196,2651197,2651198,2651199,2651200,2651201,2651202,2651203,2651204,2651205,2651206,2651207,2651208,2651209,2651210,2651211,2651212,2651213,2651214,2651215,2651216,2651264,2651265,2651266,2651267,2651268,2651269,2651270,2651271,2651272,2651273,2651274,2651275,2651276,2651277,2651278,2651279,2651280,2651281,2651282,2651283,2651284,2651285,2651286,2651287,2651288,2651289,2651290,2651291,2651292,2651293,2651294,2651295,2651296,2651297,2651298,2651299,2651300,2651301,2651302,2651303,2651304,2651305,2651306,2651307,2651308,2651309,2651310,2651311,2651312,2651313,2651314,2651315,2651316,2651317,2651318,2651319,2651320,2651321,2651322,2651323,2651324,2651325,2651326,2651327,2651328,2651329,2651330,2651331,2651332,2651333,2651334,2651335,2651336,2651337,2651338,2651339,2651340,2651341,2651342,2651343,2651344],"Mossy Stone Bricks":[2651392],"Mud":[2725376],"Mud Brick Slab":[2725888,2725889,2725890],"Mud Brick Stairs":[2726144,2726145,2726146,2726147,2726148,2726149,2726150,2726151],"Mud Brick Wall":[2726400,2726401,2726402,2726403,2726404,2726405,2726406,2726407,2726408,2726409,2726410,2726411,2726412,2726413,2726414,2726415,2726416,2726417,2726418,2726419,2726420,2726421,2726422,2726423,2726424,2726425,2726426,2726427,2726428,2726429,2726430,2726431,2726432,2726433,2726434,2726435,2726436,2726437,2726438,2726439,2726440,2726441,2726442,2726443,2726444,2726445,2726446,2726447,2726448,2726449,2726450,2726451,2726452,2726453,2726454,2726455,2726456,2726457,2726458,2726459,2726460,2726461,2726462,2726463,2726464,2726465,2726466,2726467,2726468,2726469,2726470,2726471,2726472,2726473,2726474,2726475,2726476,2726477,2726478,2726479,2726480,2726528,2726529,2726530,2726531,2726532,2726533,2726534,2726535,2726536,2726537,2726538,2726539,2726540,2726541,2726542,2726543,2726544,2726545,2726546,2726547,2726548,2726549,2726550,2726551,2726552,2726553,2726554,2726555,2726556,2726557,2726558,2726559,2726560,2726561,2726562,2726563,2726564,2726565,2726566,2726567,2726568,2726569,2726570,2726571,2726572,2726573,2726574,2726575,2726576,2726577,2726578,2726579,2726580,2726581,2726582,2726583,2726584,2726585,2726586,2726587,2726588,2726589,2726590,2726591,2726592,2726593,2726594,2726595,2726596,2726597,2726598,2726599,2726600,2726601,2726602,2726603,2726604,2726605,2726606,2726607,2726608],"Mud Bricks":[2725632],"Muddy Mangrove Roots":[2733568,2733569,2733570],"Mushroom Stem":[2651648],"Mycelium":[2651904],"Neodymium":[2610432],"Neon":[2610688],"Neptunium":[2610944],"Nether Brick Fence":[2652160],"Nether Brick Slab":[2652416,2652417,2652418],"Nether Brick Stairs":[2652672,2652673,2652674,2652675,2652676,2652677,2652678,2652679],"Nether Brick Wall":[2652928,2652929,2652930,2652931,2652932,2652933,2652934,2652935,2652936,2652937,2652938,2652939,2652940,2652941,2652942,2652943,2652944,2652945,2652946,2652947,2652948,2652949,2652950,2652951,2652952,2652953,2652954,2652955,2652956,2652957,2652958,2652959,2652960,2652961,2652962,2652963,2652964,2652965,2652966,2652967,2652968,2652969,2652970,2652971,2652972,2652973,2652974,2652975,2652976,2652977,2652978,2652979,2652980,2652981,2652982,2652983,2652984,2652985,2652986,2652987,2652988,2652989,2652990,2652991,2652992,2652993,2652994,2652995,2652996,2652997,2652998,2652999,2653000,2653001,2653002,2653003,2653004,2653005,2653006,2653007,2653008,2653056,2653057,2653058,2653059,2653060,2653061,2653062,2653063,2653064,2653065,2653066,2653067,2653068,2653069,2653070,2653071,2653072,2653073,2653074,2653075,2653076,2653077,2653078,2653079,2653080,2653081,2653082,2653083,2653084,2653085,2653086,2653087,2653088,2653089,2653090,2653091,2653092,2653093,2653094,2653095,2653096,2653097,2653098,2653099,2653100,2653101,2653102,2653103,2653104,2653105,2653106,2653107,2653108,2653109,2653110,2653111,2653112,2653113,2653114,2653115,2653116,2653117,2653118,2653119,2653120,2653121,2653122,2653123,2653124,2653125,2653126,2653127,2653128,2653129,2653130,2653131,2653132,2653133,2653134,2653135,2653136],"Nether Bricks":[2653184],"Nether Gold Ore":[2725120],"Nether Portal":[2653440,2653441],"Nether Quartz Ore":[2653696],"Nether Reactor Core":[2653952],"Nether Wart":[2654208,2654209,2654210,2654211],"Nether Wart Block":[2654464],"Netherite Block":[2731008],"Netherrack":[2654720],"Nickel":[2611200],"Nihonium":[2611456],"Niobium":[2611712],"Nitrogen":[2611968],"Nobelium":[2612224],"Note Block":[2654976],"Oak Button":[2655232,2655233,2655234,2655235,2655236,2655237,2655240,2655241,2655242,2655243,2655244,2655245],"Oak Door":[2655488,2655489,2655490,2655491,2655492,2655493,2655494,2655495,2655496,2655497,2655498,2655499,2655500,2655501,2655502,2655503,2655504,2655505,2655506,2655507,2655508,2655509,2655510,2655511,2655512,2655513,2655514,2655515,2655516,2655517,2655518,2655519],"Oak Fence":[2655744],"Oak Fence Gate":[2656000,2656001,2656002,2656003,2656004,2656005,2656006,2656007,2656008,2656009,2656010,2656011,2656012,2656013,2656014,2656015],"Oak Leaves":[2656256,2656257,2656258,2656259],"Oak Log":[2656512,2656513,2656514,2656515,2656516,2656517],"Oak Planks":[2656768],"Oak Pressure Plate":[2657024,2657025],"Oak Sapling":[2657280,2657281],"Oak Sign":[2657536,2657537,2657538,2657539,2657540,2657541,2657542,2657543,2657544,2657545,2657546,2657547,2657548,2657549,2657550,2657551],"Oak Slab":[2657792,2657793,2657794],"Oak Stairs":[2658048,2658049,2658050,2658051,2658052,2658053,2658054,2658055],"Oak Trapdoor":[2658304,2658305,2658306,2658307,2658308,2658309,2658310,2658311,2658312,2658313,2658314,2658315,2658316,2658317,2658318,2658319],"Oak Wall Sign":[2658560,2658561,2658562,2658563],"Oak Wood":[2658816,2658817,2658818,2658819,2658820,2658821],"Obsidian":[2659072],"Oganesson":[2612480],"Orange Tulip":[2659584],"Osmium":[2612736],"Oxeye Daisy":[2659840],"Oxygen":[2612992],"Packed Ice":[2660096],"Packed Mud":[2726656],"Palladium":[2613248],"Peony":[2660352,2660353],"Phosphorus":[2613504],"Pink Tulip":[2660864],"Platinum":[2613760],"Plutonium":[2614016],"Podzol":[2661120],"Polished Andesite":[2661376],"Polished Andesite Slab":[2661632,2661633,2661634],"Polished Andesite Stairs":[2661888,2661889,2661890,2661891,2661892,2661893,2661894,2661895],"Polished Basalt":[2699008,2699009,2699010],"Polished Blackstone":[2700544],"Polished Blackstone Brick Slab":[2702592,2702593,2702594],"Polished Blackstone Brick Stairs":[2702848,2702849,2702850,2702851,2702852,2702853,2702854,2702855],"Polished Blackstone Brick Wall":[2703104,2703105,2703106,2703107,2703108,2703109,2703110,2703111,2703112,2703113,2703114,2703115,2703116,2703117,2703118,2703119,2703120,2703121,2703122,2703123,2703124,2703125,2703126,2703127,2703128,2703129,2703130,2703131,2703132,2703133,2703134,2703135,2703136,2703137,2703138,2703139,2703140,2703141,2703142,2703143,2703144,2703145,2703146,2703147,2703148,2703149,2703150,2703151,2703152,2703153,2703154,2703155,2703156,2703157,2703158,2703159,2703160,2703161,2703162,2703163,2703164,2703165,2703166,2703167,2703168,2703169,2703170,2703171,2703172,2703173,2703174,2703175,2703176,2703177,2703178,2703179,2703180,2703181,2703182,2703183,2703184,2703232,2703233,2703234,2703235,2703236,2703237,2703238,2703239,2703240,2703241,2703242,2703243,2703244,2703245,2703246,2703247,2703248,2703249,2703250,2703251,2703252,2703253,2703254,2703255,2703256,2703257,2703258,2703259,2703260,2703261,2703262,2703263,2703264,2703265,2703266,2703267,2703268,2703269,2703270,2703271,2703272,2703273,2703274,2703275,2703276,2703277,2703278,2703279,2703280,2703281,2703282,2703283,2703284,2703285,2703286,2703287,2703288,2703289,2703290,2703291,2703292,2703293,2703294,2703295,2703296,2703297,2703298,2703299,2703300,2703301,2703302,2703303,2703304,2703305,2703306,2703307,2703308,2703309,2703310,2703311,2703312],"Polished Blackstone Bricks":[2702336],"Polished Blackstone Button":[2700800,2700801,2700802,2700803,2700804,2700805,2700808,2700809,2700810,2700811,2700812,2700813],"Polished Blackstone Pressure Plate":[2701056,2701057],"Polished Blackstone Slab":[2701312,2701313,2701314],"Polished Blackstone Stairs":[2701568,2701569,2701570,2701571,2701572,2701573,2701574,2701575],"Polished Blackstone Wall":[2701824,2701825,2701826,2701827,2701828,2701829,2701830,2701831,2701832,2701833,2701834,2701835,2701836,2701837,2701838,2701839,2701840,2701841,2701842,2701843,2701844,2701845,2701846,2701847,2701848,2701849,2701850,2701851,2701852,2701853,2701854,2701855,2701856,2701857,2701858,2701859,2701860,2701861,2701862,2701863,2701864,2701865,2701866,2701867,2701868,2701869,2701870,2701871,2701872,2701873,2701874,2701875,2701876,2701877,2701878,2701879,2701880,2701881,2701882,2701883,2701884,2701885,2701886,2701887,2701888,2701889,2701890,2701891,2701892,2701893,2701894,2701895,2701896,2701897,2701898,2701899,2701900,2701901,2701902,2701903,2701904,2701952,2701953,2701954,2701955,2701956,2701957,2701958,2701959,2701960,2701961,2701962,2701963,2701964,2701965,2701966,2701967,2701968,2701969,2701970,2701971,2701972,2701973,2701974,2701975,2701976,2701977,2701978,2701979,2701980,2701981,2701982,2701983,2701984,2701985,2701986,2701987,2701988,2701989,2701990,2701991,2701992,2701993,2701994,2701995,2701996,2701997,2701998,2701999,2702000,2702001,2702002,2702003,2702004,2702005,2702006,2702007,2702008,2702009,2702010,2702011,2702012,2702013,2702014,2702015,2702016,2702017,2702018,2702019,2702020,2702021,2702022,2702023,2702024,2702025,2702026,2702027,2702028,2702029,2702030,2702031,2702032],"Polished Deepslate":[2708736],"Polished Deepslate Slab":[2708992,2708993,2708994],"Polished Deepslate Stairs":[2709248,2709249,2709250,2709251,2709252,2709253,2709254,2709255],"Polished Deepslate Wall":[2709504,2709505,2709506,2709507,2709508,2709509,2709510,2709511,2709512,2709513,2709514,2709515,2709516,2709517,2709518,2709519,2709520,2709521,2709522,2709523,2709524,2709525,2709526,2709527,2709528,2709529,2709530,2709531,2709532,2709533,2709534,2709535,2709536,2709537,2709538,2709539,2709540,2709541,2709542,2709543,2709544,2709545,2709546,2709547,2709548,2709549,2709550,2709551,2709552,2709553,2709554,2709555,2709556,2709557,2709558,2709559,2709560,2709561,2709562,2709563,2709564,2709565,2709566,2709567,2709568,2709569,2709570,2709571,2709572,2709573,2709574,2709575,2709576,2709577,2709578,2709579,2709580,2709581,2709582,2709583,2709584,2709632,2709633,2709634,2709635,2709636,2709637,2709638,2709639,2709640,2709641,2709642,2709643,2709644,2709645,2709646,2709647,2709648,2709649,2709650,2709651,2709652,2709653,2709654,2709655,2709656,2709657,2709658,2709659,2709660,2709661,2709662,2709663,2709664,2709665,2709666,2709667,2709668,2709669,2709670,2709671,2709672,2709673,2709674,2709675,2709676,2709677,2709678,2709679,2709680,2709681,2709682,2709683,2709684,2709685,2709686,2709687,2709688,2709689,2709690,2709691,2709692,2709693,2709694,2709695,2709696,2709697,2709698,2709699,2709700,2709701,2709702,2709703,2709704,2709705,2709706,2709707,2709708,2709709,2709710,2709711,2709712],"Polished Diorite":[2662144],"Polished Diorite Slab":[2662400,2662401,2662402],"Polished Diorite Stairs":[2662656,2662657,2662658,2662659,2662660,2662661,2662662,2662663],"Polished Granite":[2662912],"Polished Granite Slab":[2663168,2663169,2663170],"Polished Granite Stairs":[2663424,2663425,2663426,2663427,2663428,2663429,2663430,2663431],"Polonium":[2614272],"Poppy":[2663680],"Potassium":[2614528],"Potato Block":[2663936,2663937,2663938,2663939,2663940,2663941,2663942,2663943],"Potion Cauldron":[2732288,2732289,2732290,2732291,2732292,2732293],"Powered Rail":[2664192,2664193,2664194,2664195,2664196,2664197,2664200,2664201,2664202,2664203,2664204,2664205],"Praseodymium":[2614784],"Prismarine":[2664448],"Prismarine Bricks":[2664704],"Prismarine Bricks Slab":[2664960,2664961,2664962],"Prismarine Bricks Stairs":[2665216,2665217,2665218,2665219,2665220,2665221,2665222,2665223],"Prismarine Slab":[2665472,2665473,2665474],"Prismarine Stairs":[2665728,2665729,2665730,2665731,2665732,2665733,2665734,2665735],"Prismarine Wall":[2665984,2665985,2665986,2665987,2665988,2665989,2665990,2665991,2665992,2665993,2665994,2665995,2665996,2665997,2665998,2665999,2666000,2666001,2666002,2666003,2666004,2666005,2666006,2666007,2666008,2666009,2666010,2666011,2666012,2666013,2666014,2666015,2666016,2666017,2666018,2666019,2666020,2666021,2666022,2666023,2666024,2666025,2666026,2666027,2666028,2666029,2666030,2666031,2666032,2666033,2666034,2666035,2666036,2666037,2666038,2666039,2666040,2666041,2666042,2666043,2666044,2666045,2666046,2666047,2666048,2666049,2666050,2666051,2666052,2666053,2666054,2666055,2666056,2666057,2666058,2666059,2666060,2666061,2666062,2666063,2666064,2666112,2666113,2666114,2666115,2666116,2666117,2666118,2666119,2666120,2666121,2666122,2666123,2666124,2666125,2666126,2666127,2666128,2666129,2666130,2666131,2666132,2666133,2666134,2666135,2666136,2666137,2666138,2666139,2666140,2666141,2666142,2666143,2666144,2666145,2666146,2666147,2666148,2666149,2666150,2666151,2666152,2666153,2666154,2666155,2666156,2666157,2666158,2666159,2666160,2666161,2666162,2666163,2666164,2666165,2666166,2666167,2666168,2666169,2666170,2666171,2666172,2666173,2666174,2666175,2666176,2666177,2666178,2666179,2666180,2666181,2666182,2666183,2666184,2666185,2666186,2666187,2666188,2666189,2666190,2666191,2666192],"Promethium":[2615040],"Protactinium":[2615296],"Pumpkin":[2666240],"Pumpkin Stem":[2666496,2666497,2666498,2666499,2666500,2666501,2666502,2666503],"Purple Torch":[2667009,2667010,2667011,2667012,2667013],"Purpur Block":[2667264],"Purpur Pillar":[2667520,2667521,2667522],"Purpur Slab":[2667776,2667777,2667778],"Purpur Stairs":[2668032,2668033,2668034,2668035,2668036,2668037,2668038,2668039],"Quartz Block":[2668288],"Quartz Bricks":[2709760],"Quartz Pillar":[2668544,2668545,2668546],"Quartz Slab":[2668800,2668801,2668802],"Quartz Stairs":[2669056,2669057,2669058,2669059,2669060,2669061,2669062,2669063],"Radium":[2615552],"Radon":[2615808],"Rail":[2669312,2669313,2669314,2669315,2669316,2669317,2669318,2669319,2669320,2669321],"Raw Copper Block":[2703872],"Raw Gold Block":[2704128],"Raw Iron Block":[2704384],"Red Mushroom":[2669824],"Red Mushroom Block":[2670080,2670081,2670082,2670083,2670084,2670085,2670086,2670087,2670088,2670089,2670090],"Red Nether Brick Slab":[2670336,2670337,2670338],"Red Nether Brick Stairs":[2670592,2670593,2670594,2670595,2670596,2670597,2670598,2670599],"Red Nether Brick Wall":[2670848,2670849,2670850,2670851,2670852,2670853,2670854,2670855,2670856,2670857,2670858,2670859,2670860,2670861,2670862,2670863,2670864,2670865,2670866,2670867,2670868,2670869,2670870,2670871,2670872,2670873,2670874,2670875,2670876,2670877,2670878,2670879,2670880,2670881,2670882,2670883,2670884,2670885,2670886,2670887,2670888,2670889,2670890,2670891,2670892,2670893,2670894,2670895,2670896,2670897,2670898,2670899,2670900,2670901,2670902,2670903,2670904,2670905,2670906,2670907,2670908,2670909,2670910,2670911,2670912,2670913,2670914,2670915,2670916,2670917,2670918,2670919,2670920,2670921,2670922,2670923,2670924,2670925,2670926,2670927,2670928,2670976,2670977,2670978,2670979,2670980,2670981,2670982,2670983,2670984,2670985,2670986,2670987,2670988,2670989,2670990,2670991,2670992,2670993,2670994,2670995,2670996,2670997,2670998,2670999,2671000,2671001,2671002,2671003,2671004,2671005,2671006,2671007,2671008,2671009,2671010,2671011,2671012,2671013,2671014,2671015,2671016,2671017,2671018,2671019,2671020,2671021,2671022,2671023,2671024,2671025,2671026,2671027,2671028,2671029,2671030,2671031,2671032,2671033,2671034,2671035,2671036,2671037,2671038,2671039,2671040,2671041,2671042,2671043,2671044,2671045,2671046,2671047,2671048,2671049,2671050,2671051,2671052,2671053,2671054,2671055,2671056],"Red Nether Bricks":[2671104],"Red Sand":[2671360],"Red Sandstone":[2671616],"Red Sandstone Slab":[2671872,2671873,2671874],"Red Sandstone Stairs":[2672128,2672129,2672130,2672131,2672132,2672133,2672134,2672135],"Red Sandstone Wall":[2672384,2672385,2672386,2672387,2672388,2672389,2672390,2672391,2672392,2672393,2672394,2672395,2672396,2672397,2672398,2672399,2672400,2672401,2672402,2672403,2672404,2672405,2672406,2672407,2672408,2672409,2672410,2672411,2672412,2672413,2672414,2672415,2672416,2672417,2672418,2672419,2672420,2672421,2672422,2672423,2672424,2672425,2672426,2672427,2672428,2672429,2672430,2672431,2672432,2672433,2672434,2672435,2672436,2672437,2672438,2672439,2672440,2672441,2672442,2672443,2672444,2672445,2672446,2672447,2672448,2672449,2672450,2672451,2672452,2672453,2672454,2672455,2672456,2672457,2672458,2672459,2672460,2672461,2672462,2672463,2672464,2672512,2672513,2672514,2672515,2672516,2672517,2672518,2672519,2672520,2672521,2672522,2672523,2672524,2672525,2672526,2672527,2672528,2672529,2672530,2672531,2672532,2672533,2672534,2672535,2672536,2672537,2672538,2672539,2672540,2672541,2672542,2672543,2672544,2672545,2672546,2672547,2672548,2672549,2672550,2672551,2672552,2672553,2672554,2672555,2672556,2672557,2672558,2672559,2672560,2672561,2672562,2672563,2672564,2672565,2672566,2672567,2672568,2672569,2672570,2672571,2672572,2672573,2672574,2672575,2672576,2672577,2672578,2672579,2672580,2672581,2672582,2672583,2672584,2672585,2672586,2672587,2672588,2672589,2672590,2672591,2672592],"Red Torch":[2672641,2672642,2672643,2672644,2672645],"Red Tulip":[2672896],"Redstone":[2674688,2674689,2674690,2674691,2674692,2674693,2674694,2674695,2674696,2674697,2674698,2674699,2674700,2674701,2674702,2674703],"Redstone Block":[2673152],"Redstone Comparator":[2673408,2673409,2673410,2673411,2673412,2673413,2673414,2673415,2673416,2673417,2673418,2673419,2673420,2673421,2673422,2673423],"Redstone Lamp":[2673664,2673665],"Redstone Ore":[2673920,2673921],"Redstone Repeater":[2674176,2674177,2674178,2674179,2674180,2674181,2674182,2674183,2674184,2674185,2674186,2674187,2674188,2674189,2674190,2674191,2674192,2674193,2674194,2674195,2674196,2674197,2674198,2674199,2674200,2674201,2674202,2674203,2674204,2674205,2674206,2674207],"Redstone Torch":[2674433,2674434,2674435,2674436,2674437,2674441,2674442,2674443,2674444,2674445],"Reinforced Deepslate":[2736128],"Rhenium":[2616064],"Rhodium":[2616320],"Roentgenium":[2616576],"Rose Bush":[2675200,2675201],"Rubidium":[2616832],"Ruthenium":[2617088],"Rutherfordium":[2617344],"Samarium":[2617600],"Sand":[2675456],"Sandstone":[2675712],"Sandstone Slab":[2675968,2675969,2675970],"Sandstone Stairs":[2676224,2676225,2676226,2676227,2676228,2676229,2676230,2676231],"Sandstone Wall":[2676480,2676481,2676482,2676483,2676484,2676485,2676486,2676487,2676488,2676489,2676490,2676491,2676492,2676493,2676494,2676495,2676496,2676497,2676498,2676499,2676500,2676501,2676502,2676503,2676504,2676505,2676506,2676507,2676508,2676509,2676510,2676511,2676512,2676513,2676514,2676515,2676516,2676517,2676518,2676519,2676520,2676521,2676522,2676523,2676524,2676525,2676526,2676527,2676528,2676529,2676530,2676531,2676532,2676533,2676534,2676535,2676536,2676537,2676538,2676539,2676540,2676541,2676542,2676543,2676544,2676545,2676546,2676547,2676548,2676549,2676550,2676551,2676552,2676553,2676554,2676555,2676556,2676557,2676558,2676559,2676560,2676608,2676609,2676610,2676611,2676612,2676613,2676614,2676615,2676616,2676617,2676618,2676619,2676620,2676621,2676622,2676623,2676624,2676625,2676626,2676627,2676628,2676629,2676630,2676631,2676632,2676633,2676634,2676635,2676636,2676637,2676638,2676639,2676640,2676641,2676642,2676643,2676644,2676645,2676646,2676647,2676648,2676649,2676650,2676651,2676652,2676653,2676654,2676655,2676656,2676657,2676658,2676659,2676660,2676661,2676662,2676663,2676664,2676665,2676666,2676667,2676668,2676669,2676670,2676671,2676672,2676673,2676674,2676675,2676676,2676677,2676678,2676679,2676680,2676681,2676682,2676683,2676684,2676685,2676686,2676687,2676688],"Scandium":[2617856],"Sculk":[2734848],"Sea Lantern":[2676736],"Sea Pickle":[2676992,2676993,2676994,2676995,2676996,2676997,2676998,2676999],"Seaborgium":[2618112],"Selenium":[2618368],"Shroomlight":[2712064],"Shulker Box":[2677248],"Silicon":[2618624],"Silver":[2618880],"Slime Block":[2677504],"Smithing Table":[2730752],"Smoker":[2677760,2677761,2677762,2677763,2677764,2677765,2677766,2677767],"Smooth Basalt":[2699264],"Smooth Quartz Block":[2678016],"Smooth Quartz Slab":[2678272,2678273,2678274],"Smooth Quartz Stairs":[2678528,2678529,2678530,2678531,2678532,2678533,2678534,2678535],"Smooth Red Sandstone":[2678784],"Smooth Red Sandstone Slab":[2679040,2679041,2679042],"Smooth Red Sandstone Stairs":[2679296,2679297,2679298,2679299,2679300,2679301,2679302,2679303],"Smooth Sandstone":[2679552],"Smooth Sandstone Slab":[2679808,2679809,2679810],"Smooth Sandstone Stairs":[2680064,2680065,2680066,2680067,2680068,2680069,2680070,2680071],"Smooth Stone":[2680320],"Smooth Stone Slab":[2680576,2680577,2680578],"Snow Block":[2680832],"Snow Layer":[2681088,2681089,2681090,2681091,2681092,2681093,2681094,2681095],"Sodium":[2619136],"Soul Fire":[2711808],"Soul Lantern":[2711296,2711297],"Soul Sand":[2681344],"Soul Soil":[2711552],"Soul Torch":[2711041,2711042,2711043,2711044,2711045],"Sponge":[2681600,2681601],"Spore Blossom":[2731264],"Spruce Button":[2681856,2681857,2681858,2681859,2681860,2681861,2681864,2681865,2681866,2681867,2681868,2681869],"Spruce Door":[2682112,2682113,2682114,2682115,2682116,2682117,2682118,2682119,2682120,2682121,2682122,2682123,2682124,2682125,2682126,2682127,2682128,2682129,2682130,2682131,2682132,2682133,2682134,2682135,2682136,2682137,2682138,2682139,2682140,2682141,2682142,2682143],"Spruce Fence":[2682368],"Spruce Fence Gate":[2682624,2682625,2682626,2682627,2682628,2682629,2682630,2682631,2682632,2682633,2682634,2682635,2682636,2682637,2682638,2682639],"Spruce Leaves":[2682880,2682881,2682882,2682883],"Spruce Log":[2683136,2683137,2683138,2683139,2683140,2683141],"Spruce Planks":[2683392],"Spruce Pressure Plate":[2683648,2683649],"Spruce Sapling":[2683904,2683905],"Spruce Sign":[2684160,2684161,2684162,2684163,2684164,2684165,2684166,2684167,2684168,2684169,2684170,2684171,2684172,2684173,2684174,2684175],"Spruce Slab":[2684416,2684417,2684418],"Spruce Stairs":[2684672,2684673,2684674,2684675,2684676,2684677,2684678,2684679],"Spruce Trapdoor":[2684928,2684929,2684930,2684931,2684932,2684933,2684934,2684935,2684936,2684937,2684938,2684939,2684940,2684941,2684942,2684943],"Spruce Wall Sign":[2685184,2685185,2685186,2685187],"Spruce Wood":[2685440,2685441,2685442,2685443,2685444,2685445],"Stained Clay":[2685696,2685697,2685698,2685699,2685700,2685701,2685702,2685703,2685704,2685705,2685706,2685707,2685708,2685709,2685710,2685711],"Stained Glass":[2685952,2685953,2685954,2685955,2685956,2685957,2685958,2685959,2685960,2685961,2685962,2685963,2685964,2685965,2685966,2685967],"Stained Glass Pane":[2686208,2686209,2686210,2686211,2686212,2686213,2686214,2686215,2686216,2686217,2686218,2686219,2686220,2686221,2686222,2686223],"Stained Hardened Glass":[2686464,2686465,2686466,2686467,2686468,2686469,2686470,2686471,2686472,2686473,2686474,2686475,2686476,2686477,2686478,2686479],"Stained Hardened Glass Pane":[2686720,2686721,2686722,2686723,2686724,2686725,2686726,2686727,2686728,2686729,2686730,2686731,2686732,2686733,2686734,2686735],"Stone":[2686976],"Stone Brick Slab":[2687232,2687233,2687234],"Stone Brick Stairs":[2687488,2687489,2687490,2687491,2687492,2687493,2687494,2687495],"Stone Brick Wall":[2687744,2687745,2687746,2687747,2687748,2687749,2687750,2687751,2687752,2687753,2687754,2687755,2687756,2687757,2687758,2687759,2687760,2687761,2687762,2687763,2687764,2687765,2687766,2687767,2687768,2687769,2687770,2687771,2687772,2687773,2687774,2687775,2687776,2687777,2687778,2687779,2687780,2687781,2687782,2687783,2687784,2687785,2687786,2687787,2687788,2687789,2687790,2687791,2687792,2687793,2687794,2687795,2687796,2687797,2687798,2687799,2687800,2687801,2687802,2687803,2687804,2687805,2687806,2687807,2687808,2687809,2687810,2687811,2687812,2687813,2687814,2687815,2687816,2687817,2687818,2687819,2687820,2687821,2687822,2687823,2687824,2687872,2687873,2687874,2687875,2687876,2687877,2687878,2687879,2687880,2687881,2687882,2687883,2687884,2687885,2687886,2687887,2687888,2687889,2687890,2687891,2687892,2687893,2687894,2687895,2687896,2687897,2687898,2687899,2687900,2687901,2687902,2687903,2687904,2687905,2687906,2687907,2687908,2687909,2687910,2687911,2687912,2687913,2687914,2687915,2687916,2687917,2687918,2687919,2687920,2687921,2687922,2687923,2687924,2687925,2687926,2687927,2687928,2687929,2687930,2687931,2687932,2687933,2687934,2687935,2687936,2687937,2687938,2687939,2687940,2687941,2687942,2687943,2687944,2687945,2687946,2687947,2687948,2687949,2687950,2687951,2687952],"Stone Bricks":[2688000],"Stone Button":[2688256,2688257,2688258,2688259,2688260,2688261,2688264,2688265,2688266,2688267,2688268,2688269],"Stone Pressure Plate":[2688512,2688513],"Stone Slab":[2688768,2688769,2688770],"Stone Stairs":[2689024,2689025,2689026,2689027,2689028,2689029,2689030,2689031],"Stonecutter":[2689280,2689281,2689282,2689283],"Strontium":[2619392],"Sugarcane":[2692608,2692609,2692610,2692611,2692612,2692613,2692614,2692615,2692616,2692617,2692618,2692619,2692620,2692621,2692622,2692623],"Sulfur":[2619648],"Sunflower":[2692864,2692865],"Sweet Berry Bush":[2693120,2693121,2693122,2693123],"TNT":[2693632,2693633,2693634,2693635],"Tall Grass":[2693376],"Tantalum":[2619904],"Technetium":[2620160],"Tellurium":[2620416],"Tennessine":[2620672],"Terbium":[2620928],"Thallium":[2621184],"Thorium":[2621440],"Thulium":[2621696],"Tin":[2621952],"Tinted Glass":[2722304],"Titanium":[2622208],"Torch":[2693889,2693890,2693891,2693892,2693893],"Trapped Chest":[2694144,2694145,2694146,2694147],"Tripwire":[2694400,2694401,2694402,2694403,2694404,2694405,2694406,2694407,2694408,2694409,2694410,2694411,2694412,2694413,2694414,2694415],"Tripwire Hook":[2694656,2694657,2694658,2694659,2694660,2694661,2694662,2694663,2694664,2694665,2694666,2694667,2694668,2694669,2694670,2694671],"Tuff":[2710784],"Tungsten":[2622464],"Twisting Vines":[2734080,2734081,2734082,2734083,2734084,2734085,2734086,2734087,2734088,2734089,2734090,2734091,2734092,2734093,2734094,2734095,2734096,2734097,2734098,2734099,2734100,2734101,2734102,2734103,2734104,2734105],"Underwater Torch":[2694913,2694914,2694915,2694916,2694917],"Uranium":[2622720],"Vanadium":[2622976],"Vines":[2695168,2695169,2695170,2695171,2695172,2695173,2695174,2695175,2695176,2695177,2695178,2695179,2695180,2695181,2695182,2695183],"Wall Banner":[2695424,2695425,2695426,2695427,2695428,2695429,2695430,2695431,2695432,2695433,2695434,2695435,2695436,2695437,2695438,2695439,2695440,2695441,2695442,2695443,2695444,2695445,2695446,2695447,2695448,2695449,2695450,2695451,2695452,2695453,2695454,2695455,2695456,2695457,2695458,2695459,2695460,2695461,2695462,2695463,2695464,2695465,2695466,2695467,2695468,2695469,2695470,2695471,2695472,2695473,2695474,2695475,2695476,2695477,2695478,2695479,2695480,2695481,2695482,2695483,2695484,2695485,2695486,2695487],"Wall Coral Fan":[2695680,2695681,2695682,2695683,2695684,2695688,2695689,2695690,2695691,2695692,2695696,2695697,2695698,2695699,2695700,2695704,2695705,2695706,2695707,2695708,2695712,2695713,2695714,2695715,2695716,2695720,2695721,2695722,2695723,2695724,2695728,2695729,2695730,2695731,2695732,2695736,2695737,2695738,2695739,2695740],"Warped Button":[2717440,2717441,2717442,2717443,2717444,2717445,2717448,2717449,2717450,2717451,2717452,2717453],"Warped Door":[2718976,2718977,2718978,2718979,2718980,2718981,2718982,2718983,2718984,2718985,2718986,2718987,2718988,2718989,2718990,2718991,2718992,2718993,2718994,2718995,2718996,2718997,2718998,2718999,2719000,2719001,2719002,2719003,2719004,2719005,2719006,2719007],"Warped Fence":[2713600],"Warped Fence Gate":[2719744,2719745,2719746,2719747,2719748,2719749,2719750,2719751,2719752,2719753,2719754,2719755,2719756,2719757,2719758,2719759],"Warped Hyphae":[2715904,2715905,2715906,2715907,2715908,2715909],"Warped Planks":[2712832],"Warped Pressure Plate":[2718208,2718209],"Warped Sign":[2721280,2721281,2721282,2721283,2721284,2721285,2721286,2721287,2721288,2721289,2721290,2721291,2721292,2721293,2721294,2721295],"Warped Slab":[2714368,2714369,2714370],"Warped Stairs":[2720512,2720513,2720514,2720515,2720516,2720517,2720518,2720519],"Warped Stem":[2715136,2715137,2715138,2715139,2715140,2715141],"Warped Trapdoor":[2716672,2716673,2716674,2716675,2716676,2716677,2716678,2716679,2716680,2716681,2716682,2716683,2716684,2716685,2716686,2716687],"Warped Wall Sign":[2722048,2722049,2722050,2722051],"Warped Wart Block":[2726912],"Water":[2695936,2695937,2695938,2695939,2695940,2695941,2695942,2695943,2695944,2695945,2695946,2695947,2695948,2695949,2695950,2695951,2695952,2695953,2695954,2695955,2695956,2695957,2695958,2695959,2695960,2695961,2695962,2695963,2695964,2695965,2695966,2695967],"Water Cauldron":[2731776,2731777,2731778,2731779,2731780,2731781],"Weeping Vines":[2734336,2734337,2734338,2734339,2734340,2734341,2734342,2734343,2734344,2734345,2734346,2734347,2734348,2734349,2734350,2734351,2734352,2734353,2734354,2734355,2734356,2734357,2734358,2734359,2734360,2734361],"Weighted Pressure Plate Heavy":[2696192,2696193,2696194,2696195,2696196,2696197,2696198,2696199,2696200,2696201,2696202,2696203,2696204,2696205,2696206,2696207],"Weighted Pressure Plate Light":[2696448,2696449,2696450,2696451,2696452,2696453,2696454,2696455,2696456,2696457,2696458,2696459,2696460,2696461,2696462,2696463],"Wheat Block":[2696704,2696705,2696706,2696707,2696708,2696709,2696710,2696711],"White Tulip":[2697216],"Wither Rose":[2729984],"Wool":[2697472,2697473,2697474,2697475,2697476,2697477,2697478,2697479,2697480,2697481,2697482,2697483,2697484,2697485,2697486,2697487],"Xenon":[2623232],"Ytterbium":[2623488],"Yttrium":[2623744],"Zinc":[2624256],"Zirconium":[2624512],"ate!upd":[2637056],"reserved6":[2674944],"update!":[2636800]},"stateDataBits":8} \ No newline at end of file +{"knownStates":{"???":[2624010],"Acacia Button":[2560272,2560273,2560274,2560275,2560276,2560277,2560280,2560281,2560282,2560283,2560284,2560285],"Acacia Door":[2560512,2560513,2560514,2560515,2560516,2560517,2560518,2560519,2560520,2560521,2560522,2560523,2560524,2560525,2560526,2560527,2560528,2560529,2560530,2560531,2560532,2560533,2560534,2560535,2560536,2560537,2560538,2560539,2560540,2560541,2560542,2560543],"Acacia Fence":[2560787],"Acacia Fence Gate":[2561040,2561041,2561042,2561043,2561044,2561045,2561046,2561047,2561048,2561049,2561050,2561051,2561052,2561053,2561054,2561055],"Acacia Leaves":[2561300,2561301,2561302,2561303],"Acacia Log":[2561554,2561555,2561556,2561557,2561558,2561559],"Acacia Planks":[2561815],"Acacia Pressure Plate":[2562072,2562073],"Acacia Sapling":[2562328,2562329],"Acacia Sign":[2562576,2562577,2562578,2562579,2562580,2562581,2562582,2562583,2562584,2562585,2562586,2562587,2562588,2562589,2562590,2562591],"Acacia Slab":[2562841,2562842,2562843],"Acacia Stairs":[2563096,2563097,2563098,2563099,2563100,2563101,2563102,2563103],"Acacia Trapdoor":[2563344,2563345,2563346,2563347,2563348,2563349,2563350,2563351,2563352,2563353,2563354,2563355,2563356,2563357,2563358,2563359],"Acacia Wall Sign":[2563612,2563613,2563614,2563615],"Acacia Wood":[2563866,2563867,2563868,2563869,2563870,2563871],"Actinium":[2594197],"Activator Rail":[2564128,2564129,2564130,2564131,2564132,2564133,2564136,2564137,2564138,2564139,2564140,2564141],"Air":[2560016],"All Sided Mushroom Stem":[2564385],"Allium":[2564642],"Aluminum":[2594454],"Americium":[2594711],"Amethyst":[2698284],"Ancient Debris":[2698541],"Andesite":[2564899],"Andesite Slab":[2565156,2565157,2565158],"Andesite Stairs":[2565408,2565409,2565410,2565411,2565412,2565413,2565414,2565415],"Andesite Wall":[2565632,2565633,2565634,2565635,2565636,2565637,2565638,2565639,2565640,2565641,2565642,2565643,2565644,2565645,2565646,2565647,2565648,2565649,2565650,2565651,2565652,2565653,2565654,2565655,2565656,2565657,2565658,2565659,2565660,2565661,2565662,2565663,2565664,2565665,2565666,2565667,2565668,2565669,2565670,2565671,2565672,2565673,2565674,2565675,2565676,2565677,2565678,2565679,2565680,2565681,2565682,2565683,2565684,2565685,2565686,2565687,2565688,2565689,2565690,2565691,2565692,2565693,2565694,2565695,2565728,2565729,2565730,2565731,2565732,2565733,2565734,2565735,2565736,2565737,2565738,2565739,2565740,2565741,2565742,2565743,2565750,2565760,2565761,2565762,2565763,2565764,2565765,2565766,2565767,2565768,2565769,2565770,2565771,2565772,2565773,2565774,2565775,2565776,2565777,2565778,2565779,2565780,2565781,2565782,2565783,2565784,2565785,2565786,2565787,2565788,2565789,2565790,2565791,2565792,2565793,2565794,2565795,2565796,2565797,2565798,2565799,2565800,2565801,2565802,2565803,2565804,2565805,2565806,2565807,2565808,2565809,2565810,2565811,2565812,2565813,2565814,2565815,2565816,2565817,2565818,2565819,2565820,2565821,2565822,2565823,2565856,2565857,2565858,2565859,2565860,2565861,2565862,2565863,2565864,2565865,2565866,2565867,2565868,2565869,2565870,2565871,2565878],"Antimony":[2594968],"Anvil":[2565921,2565922,2565923,2565925,2565926,2565927,2565929,2565930,2565931,2565933,2565934,2565935],"Argon":[2595225],"Arsenic":[2595482],"Astatine":[2595739],"Azalea Leaves":[2735804,2735805,2735806,2735807],"Azure Bluet":[2566184],"Bamboo":[2566432,2566433,2566435,2566436,2566437,2566439,2566440,2566441,2566443,2566444,2566445,2566447],"Bamboo Sapling":[2566698,2566699],"Banner":[2566912,2566913,2566914,2566915,2566916,2566917,2566918,2566919,2566920,2566921,2566922,2566923,2566924,2566925,2566926,2566927,2566928,2566929,2566930,2566931,2566932,2566933,2566934,2566935,2566936,2566937,2566938,2566939,2566940,2566941,2566942,2566943,2566944,2566945,2566946,2566947,2566948,2566949,2566950,2566951,2566952,2566953,2566954,2566955,2566956,2566957,2566958,2566959,2566960,2566961,2566962,2566963,2566964,2566965,2566966,2566967,2566968,2566969,2566970,2566971,2566972,2566973,2566974,2566975,2566976,2566977,2566978,2566979,2566980,2566981,2566982,2566983,2566984,2566985,2566986,2566987,2566988,2566989,2566990,2566991,2566992,2566993,2566994,2566995,2566996,2566997,2566998,2566999,2567000,2567001,2567002,2567003,2567004,2567005,2567006,2567007,2567008,2567009,2567010,2567011,2567012,2567013,2567014,2567015,2567016,2567017,2567018,2567019,2567020,2567021,2567022,2567023,2567024,2567025,2567026,2567027,2567028,2567029,2567030,2567031,2567032,2567033,2567034,2567035,2567036,2567037,2567038,2567039,2567040,2567041,2567042,2567043,2567044,2567045,2567046,2567047,2567048,2567049,2567050,2567051,2567052,2567053,2567054,2567055,2567056,2567057,2567058,2567059,2567060,2567061,2567062,2567063,2567064,2567065,2567066,2567067,2567068,2567069,2567070,2567071,2567072,2567073,2567074,2567075,2567076,2567077,2567078,2567079,2567080,2567081,2567082,2567083,2567084,2567085,2567086,2567087,2567088,2567089,2567090,2567091,2567092,2567093,2567094,2567095,2567096,2567097,2567098,2567099,2567100,2567101,2567102,2567103,2567104,2567105,2567106,2567107,2567108,2567109,2567110,2567111,2567112,2567113,2567114,2567115,2567116,2567117,2567118,2567119,2567120,2567121,2567122,2567123,2567124,2567125,2567126,2567127,2567128,2567129,2567130,2567131,2567132,2567133,2567134,2567135,2567136,2567137,2567138,2567139,2567140,2567141,2567142,2567143,2567144,2567145,2567146,2567147,2567148,2567149,2567150,2567151,2567152,2567153,2567154,2567155,2567156,2567157,2567158,2567159,2567160,2567161,2567162,2567163,2567164,2567165,2567166,2567167],"Barium":[2595996],"Barrel":[2567200,2567201,2567204,2567205,2567206,2567207,2567208,2567209,2567212,2567213,2567214,2567215],"Barrier":[2567469],"Basalt":[2698796,2698798,2698799],"Beacon":[2567726],"Bed Block":[2567936,2567937,2567938,2567939,2567940,2567941,2567942,2567943,2567944,2567945,2567946,2567947,2567948,2567949,2567950,2567951,2567952,2567953,2567954,2567955,2567956,2567957,2567958,2567959,2567960,2567961,2567962,2567963,2567964,2567965,2567966,2567967,2567968,2567969,2567970,2567971,2567972,2567973,2567974,2567975,2567976,2567977,2567978,2567979,2567980,2567981,2567982,2567983,2567984,2567985,2567986,2567987,2567988,2567989,2567990,2567991,2567992,2567993,2567994,2567995,2567996,2567997,2567998,2567999,2568000,2568001,2568002,2568003,2568004,2568005,2568006,2568007,2568008,2568009,2568010,2568011,2568012,2568013,2568014,2568015,2568016,2568017,2568018,2568019,2568020,2568021,2568022,2568023,2568024,2568025,2568026,2568027,2568028,2568029,2568030,2568031,2568032,2568033,2568034,2568035,2568036,2568037,2568038,2568039,2568040,2568041,2568042,2568043,2568044,2568045,2568046,2568047,2568048,2568049,2568050,2568051,2568052,2568053,2568054,2568055,2568056,2568057,2568058,2568059,2568060,2568061,2568062,2568063,2568064,2568065,2568066,2568067,2568068,2568069,2568070,2568071,2568072,2568073,2568074,2568075,2568076,2568077,2568078,2568079,2568080,2568081,2568082,2568083,2568084,2568085,2568086,2568087,2568088,2568089,2568090,2568091,2568092,2568093,2568094,2568095,2568096,2568097,2568098,2568099,2568100,2568101,2568102,2568103,2568104,2568105,2568106,2568107,2568108,2568109,2568110,2568111,2568112,2568113,2568114,2568115,2568116,2568117,2568118,2568119,2568120,2568121,2568122,2568123,2568124,2568125,2568126,2568127,2568128,2568129,2568130,2568131,2568132,2568133,2568134,2568135,2568136,2568137,2568138,2568139,2568140,2568141,2568142,2568143,2568144,2568145,2568146,2568147,2568148,2568149,2568150,2568151,2568152,2568153,2568154,2568155,2568156,2568157,2568158,2568159,2568160,2568161,2568162,2568163,2568164,2568165,2568166,2568167,2568168,2568169,2568170,2568171,2568172,2568173,2568174,2568175,2568176,2568177,2568178,2568179,2568180,2568181,2568182,2568183,2568184,2568185,2568186,2568187,2568188,2568189,2568190,2568191],"Bedrock":[2568240,2568241],"Beetroot Block":[2568496,2568497,2568498,2568499,2568500,2568501,2568502,2568503],"Bell":[2568752,2568753,2568754,2568755,2568756,2568757,2568758,2568759,2568760,2568761,2568762,2568763,2568764,2568765,2568766,2568767],"Berkelium":[2596253],"Beryllium":[2596510],"Birch Button":[2569008,2569009,2569010,2569011,2569014,2569015,2569016,2569017,2569018,2569019,2569022,2569023],"Birch Door":[2569248,2569249,2569250,2569251,2569252,2569253,2569254,2569255,2569256,2569257,2569258,2569259,2569260,2569261,2569262,2569263,2569264,2569265,2569266,2569267,2569268,2569269,2569270,2569271,2569272,2569273,2569274,2569275,2569276,2569277,2569278,2569279],"Birch Fence":[2569525],"Birch Fence Gate":[2569776,2569777,2569778,2569779,2569780,2569781,2569782,2569783,2569784,2569785,2569786,2569787,2569788,2569789,2569790,2569791],"Birch Leaves":[2570036,2570037,2570038,2570039],"Birch Log":[2570296,2570297,2570298,2570299,2570300,2570301],"Birch Planks":[2570553],"Birch Pressure Plate":[2570810,2570811],"Birch Sapling":[2571066,2571067],"Birch Sign":[2571312,2571313,2571314,2571315,2571316,2571317,2571318,2571319,2571320,2571321,2571322,2571323,2571324,2571325,2571326,2571327],"Birch Slab":[2571580,2571581,2571583],"Birch Stairs":[2571832,2571833,2571834,2571835,2571836,2571837,2571838,2571839],"Birch Trapdoor":[2572080,2572081,2572082,2572083,2572084,2572085,2572086,2572087,2572088,2572089,2572090,2572091,2572092,2572093,2572094,2572095],"Birch Wall Sign":[2572352,2572353,2572354,2572355],"Birch Wood":[2572608,2572609,2572610,2572611,2572612,2572613],"Bismuth":[2596767],"Blackstone":[2699569],"Blackstone Slab":[2699824,2699826,2699827],"Blackstone Stairs":[2700080,2700081,2700082,2700083,2700084,2700085,2700086,2700087],"Blackstone Wall":[2700288,2700289,2700290,2700291,2700292,2700293,2700294,2700295,2700296,2700297,2700298,2700299,2700300,2700301,2700302,2700303,2700304,2700305,2700306,2700307,2700308,2700309,2700310,2700311,2700312,2700313,2700314,2700315,2700316,2700317,2700318,2700319,2700320,2700321,2700322,2700323,2700324,2700325,2700326,2700327,2700328,2700329,2700330,2700331,2700332,2700333,2700334,2700335,2700336,2700337,2700338,2700339,2700340,2700341,2700342,2700343,2700344,2700345,2700346,2700347,2700348,2700349,2700350,2700351,2700388,2700400,2700401,2700402,2700403,2700404,2700405,2700406,2700407,2700408,2700409,2700410,2700411,2700412,2700413,2700414,2700415,2700416,2700417,2700418,2700419,2700420,2700421,2700422,2700423,2700424,2700425,2700426,2700427,2700428,2700429,2700430,2700431,2700432,2700433,2700434,2700435,2700436,2700437,2700438,2700439,2700440,2700441,2700442,2700443,2700444,2700445,2700446,2700447,2700448,2700449,2700450,2700451,2700452,2700453,2700454,2700455,2700456,2700457,2700458,2700459,2700460,2700461,2700462,2700463,2700464,2700465,2700466,2700467,2700468,2700469,2700470,2700471,2700472,2700473,2700474,2700475,2700476,2700477,2700478,2700479,2700516,2700528,2700529,2700530,2700531,2700532,2700533,2700534,2700535,2700536,2700537,2700538,2700539,2700540,2700541,2700542,2700543],"Blast Furnace":[2573120,2573121,2573122,2573123,2573124,2573125,2573126,2573127],"Blue Ice":[2573637],"Blue Orchid":[2573894],"Blue Torch":[2574146,2574147,2574148,2574149,2574150],"Bohrium":[2597024],"Bone Block":[2574408,2574409,2574410],"Bookshelf":[2574665],"Boron":[2597281],"Brewing Stand":[2574920,2574921,2574922,2574923,2574924,2574925,2574926,2574927],"Brick Slab":[2575177,2575178,2575179],"Brick Stairs":[2575432,2575433,2575434,2575435,2575436,2575437,2575438,2575439],"Brick Wall":[2575616,2575617,2575618,2575619,2575620,2575621,2575622,2575623,2575624,2575625,2575626,2575627,2575628,2575629,2575630,2575631,2575645,2575680,2575681,2575682,2575683,2575684,2575685,2575686,2575687,2575688,2575689,2575690,2575691,2575692,2575693,2575694,2575695,2575696,2575697,2575698,2575699,2575700,2575701,2575702,2575703,2575704,2575705,2575706,2575707,2575708,2575709,2575710,2575711,2575712,2575713,2575714,2575715,2575716,2575717,2575718,2575719,2575720,2575721,2575722,2575723,2575724,2575725,2575726,2575727,2575728,2575729,2575730,2575731,2575732,2575733,2575734,2575735,2575736,2575737,2575738,2575739,2575740,2575741,2575742,2575743,2575744,2575745,2575746,2575747,2575748,2575749,2575750,2575751,2575752,2575753,2575754,2575755,2575756,2575757,2575758,2575759,2575773,2575808,2575809,2575810,2575811,2575812,2575813,2575814,2575815,2575816,2575817,2575818,2575819,2575820,2575821,2575822,2575823,2575824,2575825,2575826,2575827,2575828,2575829,2575830,2575831,2575832,2575833,2575834,2575835,2575836,2575837,2575838,2575839,2575840,2575841,2575842,2575843,2575844,2575845,2575846,2575847,2575848,2575849,2575850,2575851,2575852,2575853,2575854,2575855,2575856,2575857,2575858,2575859,2575860,2575861,2575862,2575863,2575864,2575865,2575866,2575867,2575868,2575869,2575870,2575871],"Bricks":[2575950],"Bromine":[2597538],"Brown Mushroom":[2576464],"Brown Mushroom Block":[2576720,2576721,2576722,2576723,2576724,2576725,2576726,2576727,2576728,2576729,2576731],"Cactus":[2576976,2576977,2576978,2576979,2576980,2576981,2576982,2576983,2576984,2576985,2576986,2576987,2576988,2576989,2576990,2576991],"Cadmium":[2597795],"Cake":[2577232,2577233,2577234,2577235,2577237,2577238,2577239],"Cake With Candle":[2729638,2729639],"Cake With Dyed Candle":[2729888,2729889,2729890,2729891,2729892,2729893,2729894,2729895,2729896,2729897,2729898,2729899,2729900,2729901,2729902,2729903,2729904,2729905,2729906,2729907,2729908,2729909,2729910,2729911,2729912,2729913,2729914,2729915,2729916,2729917,2729918,2729919],"Calcite":[2704709],"Calcium":[2598052],"Californium":[2598309],"Candle":[2729120,2729121,2729122,2729123,2729124,2729125,2729126,2729127],"Carbon":[2598566],"Carpet":[2577488,2577489,2577490,2577491,2577492,2577493,2577494,2577495,2577496,2577497,2577498,2577499,2577500,2577501,2577502,2577503],"Carrot Block":[2577744,2577745,2577746,2577747,2577748,2577749,2577750,2577751],"Cartography Table":[2730666],"Carved Pumpkin":[2578004,2578005,2578006,2578007],"Cauldron":[2731694],"Cave Vines":[2736512,2736513,2736514,2736515,2736516,2736517,2736518,2736519,2736520,2736521,2736522,2736523,2736524,2736525,2736526,2736527,2736528,2736529,2736530,2736531,2736532,2736533,2736534,2736535,2736536,2736537,2736544,2736545,2736546,2736547,2736548,2736549,2736550,2736551,2736552,2736553,2736554,2736555,2736556,2736557,2736558,2736559,2736560,2736561,2736562,2736563,2736564,2736565,2736566,2736567,2736568,2736569,2736576,2736577,2736578,2736579,2736580,2736581,2736582,2736583,2736584,2736585,2736586,2736587,2736588,2736589,2736590,2736591,2736592,2736593,2736594,2736595,2736596,2736597,2736598,2736599,2736600,2736601,2736608,2736609,2736610,2736611,2736612,2736613,2736614,2736615,2736616,2736617,2736618,2736619,2736620,2736621,2736622,2736623,2736624,2736625,2736626,2736627,2736628,2736629,2736630,2736631,2736632,2736633],"Cerium":[2598823],"Cesium":[2599080],"Chain":[2734776,2734778,2734779],"Chest":[2578520,2578521,2578522,2578523],"Chiseled Deepslate":[2710106],"Chiseled Nether Bricks":[2710363],"Chiseled Polished Blackstone":[2702139],"Chiseled Quartz Block":[2578776,2578777,2578779],"Chiseled Red Sandstone":[2579034],"Chiseled Sandstone":[2579291],"Chiseled Stone Bricks":[2579548],"Chlorine":[2599337],"Chorus Flower":[2732976,2732977,2732978,2732979,2732982,2732983],"Chorus Plant":[2733236],"Chromium":[2599594],"Clay Block":[2579805],"Coal Block":[2580062],"Coal Ore":[2580319],"Cobalt":[2599851],"Cobbled Deepslate":[2707793],"Cobbled Deepslate Slab":[2708048,2708050,2708051],"Cobbled Deepslate Stairs":[2708304,2708305,2708306,2708307,2708308,2708309,2708310,2708311],"Cobbled Deepslate Wall":[2708484,2708496,2708497,2708498,2708499,2708500,2708501,2708502,2708503,2708504,2708505,2708506,2708507,2708508,2708509,2708510,2708511,2708544,2708545,2708546,2708547,2708548,2708549,2708550,2708551,2708552,2708553,2708554,2708555,2708556,2708557,2708558,2708559,2708560,2708561,2708562,2708563,2708564,2708565,2708566,2708567,2708568,2708569,2708570,2708571,2708572,2708573,2708574,2708575,2708576,2708577,2708578,2708579,2708580,2708581,2708582,2708583,2708584,2708585,2708586,2708587,2708588,2708589,2708590,2708591,2708592,2708593,2708594,2708595,2708596,2708597,2708598,2708599,2708600,2708601,2708602,2708603,2708604,2708605,2708606,2708607,2708612,2708624,2708625,2708626,2708627,2708628,2708629,2708630,2708631,2708632,2708633,2708634,2708635,2708636,2708637,2708638,2708639,2708672,2708673,2708674,2708675,2708676,2708677,2708678,2708679,2708680,2708681,2708682,2708683,2708684,2708685,2708686,2708687,2708688,2708689,2708690,2708691,2708692,2708693,2708694,2708695,2708696,2708697,2708698,2708699,2708700,2708701,2708702,2708703,2708704,2708705,2708706,2708707,2708708,2708709,2708710,2708711,2708712,2708713,2708714,2708715,2708716,2708717,2708718,2708719,2708720,2708721,2708722,2708723,2708724,2708725,2708726,2708727,2708728,2708729,2708730,2708731,2708732,2708733,2708734,2708735],"Cobblestone":[2580576],"Cobblestone Slab":[2580832,2580833,2580835],"Cobblestone Stairs":[2581088,2581089,2581090,2581091,2581092,2581093,2581094,2581095],"Cobblestone Wall":[2581280,2581281,2581282,2581283,2581284,2581285,2581286,2581287,2581288,2581289,2581290,2581291,2581292,2581293,2581294,2581295,2581299,2581312,2581313,2581314,2581315,2581316,2581317,2581318,2581319,2581320,2581321,2581322,2581323,2581324,2581325,2581326,2581327,2581328,2581329,2581330,2581331,2581332,2581333,2581334,2581335,2581336,2581337,2581338,2581339,2581340,2581341,2581342,2581343,2581344,2581345,2581346,2581347,2581348,2581349,2581350,2581351,2581352,2581353,2581354,2581355,2581356,2581357,2581358,2581359,2581360,2581361,2581362,2581363,2581364,2581365,2581366,2581367,2581368,2581369,2581370,2581371,2581372,2581373,2581374,2581375,2581408,2581409,2581410,2581411,2581412,2581413,2581414,2581415,2581416,2581417,2581418,2581419,2581420,2581421,2581422,2581423,2581427,2581440,2581441,2581442,2581443,2581444,2581445,2581446,2581447,2581448,2581449,2581450,2581451,2581452,2581453,2581454,2581455,2581456,2581457,2581458,2581459,2581460,2581461,2581462,2581463,2581464,2581465,2581466,2581467,2581468,2581469,2581470,2581471,2581472,2581473,2581474,2581475,2581476,2581477,2581478,2581479,2581480,2581481,2581482,2581483,2581484,2581485,2581486,2581487,2581488,2581489,2581490,2581491,2581492,2581493,2581494,2581495,2581496,2581497,2581498,2581499,2581500,2581501,2581502,2581503],"Cobweb":[2581604],"Cocoa Block":[2581856,2581857,2581858,2581859,2581860,2581861,2581862,2581863,2581868,2581869,2581870,2581871],"Compound Creator":[2582116,2582117,2582118,2582119],"Concrete":[2582368,2582369,2582370,2582371,2582372,2582373,2582374,2582375,2582376,2582377,2582378,2582379,2582380,2582381,2582382,2582383],"Concrete Powder":[2582624,2582625,2582626,2582627,2582628,2582629,2582630,2582631,2582632,2582633,2582634,2582635,2582636,2582637,2582638,2582639],"Copernicium":[2600365],"Copper":[2600622],"Copper Block":[2728096,2728097,2728098,2728099,2728100,2728101,2728102,2728103],"Copper Ore":[2725012],"Coral":[2582880,2582881,2582882,2582883,2582885,2582888,2582889,2582890,2582891,2582893],"Coral Block":[2583136,2583137,2583138,2583139,2583142,2583144,2583145,2583146,2583147,2583150],"Coral Fan":[2583392,2583393,2583394,2583395,2583399,2583400,2583401,2583402,2583403,2583407,2583408,2583409,2583410,2583411,2583415,2583416,2583417,2583418,2583419,2583423],"Cornflower":[2583660],"Cracked Deepslate Bricks":[2706251],"Cracked Deepslate Tiles":[2707536],"Cracked Nether Bricks":[2710620],"Cracked Polished Blackstone Bricks":[2703424],"Cracked Stone Bricks":[2583917],"Crafting Table":[2584174],"Crimson Button":[2717298,2717299,2717300,2717301,2717302,2717303,2717306,2717307,2717308,2717309,2717310,2717311],"Crimson Door":[2718816,2718817,2718818,2718819,2718820,2718821,2718822,2718823,2718824,2718825,2718826,2718827,2718828,2718829,2718830,2718831,2718832,2718833,2718834,2718835,2718836,2718837,2718838,2718839,2718840,2718841,2718842,2718843,2718844,2718845,2718846,2718847],"Crimson Fence":[2713447],"Crimson Fence Gate":[2719600,2719601,2719602,2719603,2719604,2719605,2719606,2719607,2719608,2719609,2719610,2719611,2719612,2719613,2719614,2719615],"Crimson Hyphae":[2715760,2715761,2715762,2715763,2715764,2715765],"Crimson Planks":[2712676],"Crimson Pressure Plate":[2718072,2718073],"Crimson Sign":[2721152,2721153,2721154,2721155,2721156,2721157,2721158,2721159,2721160,2721161,2721162,2721163,2721164,2721165,2721166,2721167],"Crimson Slab":[2714216,2714218,2714219],"Crimson Stairs":[2720384,2720385,2720386,2720387,2720388,2720389,2720390,2720391],"Crimson Stem":[2714984,2714985,2714988,2714989,2714990,2714991],"Crimson Trapdoor":[2716528,2716529,2716530,2716531,2716532,2716533,2716534,2716535,2716536,2716537,2716538,2716539,2716540,2716541,2716542,2716543],"Crimson Wall Sign":[2721928,2721929,2721930,2721931],"Crying Obsidian":[2727325],"Curium":[2600879],"Cut Copper Block":[2728352,2728353,2728354,2728355,2728356,2728357,2728358,2728359],"Cut Copper Slab Slab":[2728608,2728609,2728610,2728611,2728612,2728613,2728614,2728615,2728616,2728617,2728618,2728619,2728620,2728621,2728622,2728623,2728624,2728625,2728626,2728627,2728628,2728629,2728630,2728631],"Cut Copper Stairs":[2728832,2728833,2728834,2728835,2728836,2728837,2728838,2728839,2728840,2728841,2728842,2728843,2728844,2728845,2728846,2728847,2728848,2728849,2728850,2728851,2728852,2728853,2728854,2728855,2728856,2728857,2728858,2728859,2728860,2728861,2728862,2728863,2728864,2728865,2728866,2728867,2728868,2728869,2728870,2728871,2728872,2728873,2728874,2728875,2728876,2728877,2728878,2728879,2728880,2728881,2728882,2728883,2728884,2728885,2728886,2728887,2728888,2728889,2728890,2728891,2728892,2728893,2728894,2728895],"Cut Red Sandstone":[2584431],"Cut Red Sandstone Slab":[2584688,2584689,2584690],"Cut Sandstone":[2584945],"Cut Sandstone Slab":[2585200,2585202,2585203],"Dandelion":[2585716],"Dark Oak Button":[2585968,2585969,2585972,2585973,2585974,2585975,2585976,2585977,2585980,2585981,2585982,2585983],"Dark Oak Door":[2586208,2586209,2586210,2586211,2586212,2586213,2586214,2586215,2586216,2586217,2586218,2586219,2586220,2586221,2586222,2586223,2586224,2586225,2586226,2586227,2586228,2586229,2586230,2586231,2586232,2586233,2586234,2586235,2586236,2586237,2586238,2586239],"Dark Oak Fence":[2586487],"Dark Oak Fence Gate":[2586736,2586737,2586738,2586739,2586740,2586741,2586742,2586743,2586744,2586745,2586746,2586747,2586748,2586749,2586750,2586751],"Dark Oak Leaves":[2587000,2587001,2587002,2587003],"Dark Oak Log":[2587256,2587257,2587258,2587259,2587262,2587263],"Dark Oak Planks":[2587515],"Dark Oak Pressure Plate":[2587772,2587773],"Dark Oak Sapling":[2588028,2588029],"Dark Oak Sign":[2588272,2588273,2588274,2588275,2588276,2588277,2588278,2588279,2588280,2588281,2588282,2588283,2588284,2588285,2588286,2588287],"Dark Oak Slab":[2588541,2588542,2588543],"Dark Oak Stairs":[2588800,2588801,2588802,2588803,2588804,2588805,2588806,2588807],"Dark Oak Trapdoor":[2589056,2589057,2589058,2589059,2589060,2589061,2589062,2589063,2589064,2589065,2589066,2589067,2589068,2589069,2589070,2589071],"Dark Oak Wall Sign":[2589312,2589313,2589314,2589315],"Dark Oak Wood":[2589568,2589569,2589570,2589571,2589574,2589575],"Dark Prismarine":[2589828],"Dark Prismarine Slab":[2590084,2590085,2590087],"Dark Prismarine Stairs":[2590336,2590337,2590338,2590339,2590340,2590341,2590342,2590343],"Darmstadtium":[2601136],"Daylight Sensor":[2590592,2590593,2590594,2590595,2590596,2590597,2590598,2590599,2590600,2590601,2590602,2590603,2590604,2590605,2590606,2590607,2590608,2590609,2590610,2590611,2590612,2590613,2590614,2590615,2590616,2590617,2590618,2590619,2590620,2590621,2590622,2590623],"Dead Bush":[2590856],"Deepslate":[2704964,2704966,2704967],"Deepslate Brick Slab":[2705480,2705481,2705482],"Deepslate Brick Stairs":[2705736,2705737,2705738,2705739,2705740,2705741,2705742,2705743],"Deepslate Brick Wall":[2705920,2705921,2705922,2705923,2705924,2705925,2705926,2705927,2705928,2705929,2705930,2705931,2705932,2705933,2705934,2705935,2705946,2705984,2705985,2705986,2705987,2705988,2705989,2705990,2705991,2705992,2705993,2705994,2705995,2705996,2705997,2705998,2705999,2706000,2706001,2706002,2706003,2706004,2706005,2706006,2706007,2706008,2706009,2706010,2706011,2706012,2706013,2706014,2706015,2706016,2706017,2706018,2706019,2706020,2706021,2706022,2706023,2706024,2706025,2706026,2706027,2706028,2706029,2706030,2706031,2706032,2706033,2706034,2706035,2706036,2706037,2706038,2706039,2706040,2706041,2706042,2706043,2706044,2706045,2706046,2706047,2706048,2706049,2706050,2706051,2706052,2706053,2706054,2706055,2706056,2706057,2706058,2706059,2706060,2706061,2706062,2706063,2706074,2706112,2706113,2706114,2706115,2706116,2706117,2706118,2706119,2706120,2706121,2706122,2706123,2706124,2706125,2706126,2706127,2706128,2706129,2706130,2706131,2706132,2706133,2706134,2706135,2706136,2706137,2706138,2706139,2706140,2706141,2706142,2706143,2706144,2706145,2706146,2706147,2706148,2706149,2706150,2706151,2706152,2706153,2706154,2706155,2706156,2706157,2706158,2706159,2706160,2706161,2706162,2706163,2706164,2706165,2706166,2706167,2706168,2706169,2706170,2706171,2706172,2706173,2706174,2706175],"Deepslate Bricks":[2705223],"Deepslate Coal Ore":[2722956],"Deepslate Copper Ore":[2724755],"Deepslate Diamond Ore":[2723213],"Deepslate Emerald Ore":[2723470],"Deepslate Gold Ore":[2724498],"Deepslate Iron Ore":[2724241],"Deepslate Lapis Lazuli Ore":[2723727],"Deepslate Redstone Ore":[2723984,2723985],"Deepslate Tile Slab":[2706764,2706765,2706767],"Deepslate Tile Stairs":[2707016,2707017,2707018,2707019,2707020,2707021,2707022,2707023],"Deepslate Tile Wall":[2707200,2707201,2707202,2707203,2707204,2707205,2707206,2707207,2707208,2707209,2707210,2707211,2707212,2707213,2707214,2707215,2707231,2707264,2707265,2707266,2707267,2707268,2707269,2707270,2707271,2707272,2707273,2707274,2707275,2707276,2707277,2707278,2707279,2707280,2707281,2707282,2707283,2707284,2707285,2707286,2707287,2707288,2707289,2707290,2707291,2707292,2707293,2707294,2707295,2707296,2707297,2707298,2707299,2707300,2707301,2707302,2707303,2707304,2707305,2707306,2707307,2707308,2707309,2707310,2707311,2707312,2707313,2707314,2707315,2707316,2707317,2707318,2707319,2707320,2707321,2707322,2707323,2707324,2707325,2707326,2707327,2707328,2707329,2707330,2707331,2707332,2707333,2707334,2707335,2707336,2707337,2707338,2707339,2707340,2707341,2707342,2707343,2707359,2707392,2707393,2707394,2707395,2707396,2707397,2707398,2707399,2707400,2707401,2707402,2707403,2707404,2707405,2707406,2707407,2707408,2707409,2707410,2707411,2707412,2707413,2707414,2707415,2707416,2707417,2707418,2707419,2707420,2707421,2707422,2707423,2707424,2707425,2707426,2707427,2707428,2707429,2707430,2707431,2707432,2707433,2707434,2707435,2707436,2707437,2707438,2707439,2707440,2707441,2707442,2707443,2707444,2707445,2707446,2707447,2707448,2707449,2707450,2707451,2707452,2707453,2707454,2707455],"Deepslate Tiles":[2706508],"Detector Rail":[2591104,2591105,2591106,2591107,2591108,2591109,2591112,2591113,2591114,2591115,2591116,2591117],"Diamond Block":[2591370],"Diamond Ore":[2591627],"Diorite":[2591884],"Diorite Slab":[2592140,2592141,2592143],"Diorite Stairs":[2592392,2592393,2592394,2592395,2592396,2592397,2592398,2592399],"Diorite Wall":[2592512,2592513,2592514,2592515,2592516,2592517,2592518,2592519,2592520,2592521,2592522,2592523,2592524,2592525,2592526,2592527,2592528,2592529,2592530,2592531,2592532,2592533,2592534,2592535,2592536,2592537,2592538,2592539,2592540,2592541,2592542,2592543,2592544,2592545,2592546,2592547,2592548,2592549,2592550,2592551,2592552,2592553,2592554,2592555,2592556,2592557,2592558,2592559,2592560,2592561,2592562,2592563,2592564,2592565,2592566,2592567,2592568,2592569,2592570,2592571,2592572,2592573,2592574,2592575,2592576,2592577,2592578,2592579,2592580,2592581,2592582,2592583,2592584,2592585,2592586,2592587,2592588,2592589,2592590,2592591,2592607,2592640,2592641,2592642,2592643,2592644,2592645,2592646,2592647,2592648,2592649,2592650,2592651,2592652,2592653,2592654,2592655,2592656,2592657,2592658,2592659,2592660,2592661,2592662,2592663,2592664,2592665,2592666,2592667,2592668,2592669,2592670,2592671,2592672,2592673,2592674,2592675,2592676,2592677,2592678,2592679,2592680,2592681,2592682,2592683,2592684,2592685,2592686,2592687,2592688,2592689,2592690,2592691,2592692,2592693,2592694,2592695,2592696,2592697,2592698,2592699,2592700,2592701,2592702,2592703,2592704,2592705,2592706,2592707,2592708,2592709,2592710,2592711,2592712,2592713,2592714,2592715,2592716,2592717,2592718,2592719,2592735],"Dirt":[2592912,2592913,2592914],"Double Tallgrass":[2593168,2593169],"Dragon Egg":[2593426],"Dried Kelp Block":[2593683],"Dubnium":[2601393],"Dyed Candle":[2729344,2729345,2729346,2729347,2729348,2729349,2729350,2729351,2729352,2729353,2729354,2729355,2729356,2729357,2729358,2729359,2729360,2729361,2729362,2729363,2729364,2729365,2729366,2729367,2729368,2729369,2729370,2729371,2729372,2729373,2729374,2729375,2729376,2729377,2729378,2729379,2729380,2729381,2729382,2729383,2729384,2729385,2729386,2729387,2729388,2729389,2729390,2729391,2729392,2729393,2729394,2729395,2729396,2729397,2729398,2729399,2729400,2729401,2729402,2729403,2729404,2729405,2729406,2729407,2729408,2729409,2729410,2729411,2729412,2729413,2729414,2729415,2729416,2729417,2729418,2729419,2729420,2729421,2729422,2729423,2729424,2729425,2729426,2729427,2729428,2729429,2729430,2729431,2729432,2729433,2729434,2729435,2729436,2729437,2729438,2729439,2729440,2729441,2729442,2729443,2729444,2729445,2729446,2729447,2729448,2729449,2729450,2729451,2729452,2729453,2729454,2729455,2729456,2729457,2729458,2729459,2729460,2729461,2729462,2729463,2729464,2729465,2729466,2729467,2729468,2729469,2729470,2729471],"Dyed Shulker Box":[2593936,2593937,2593938,2593939,2593940,2593941,2593942,2593943,2593944,2593945,2593946,2593947,2593948,2593949,2593950,2593951],"Dysprosium":[2601650],"Einsteinium":[2601907],"Element Constructor":[2600108,2600109,2600110,2600111],"Emerald Block":[2624781],"Emerald Ore":[2625038],"Enchanting Table":[2625295],"End Portal Frame":[2625552,2625553,2625554,2625555,2625556,2625557,2625558,2625559],"End Rod":[2625808,2625809,2625810,2625811,2625812,2625813],"End Stone":[2626066],"End Stone Brick Slab":[2626321,2626322,2626323],"End Stone Brick Stairs":[2626576,2626577,2626578,2626579,2626580,2626581,2626582,2626583],"End Stone Brick Wall":[2626816,2626817,2626818,2626819,2626820,2626821,2626822,2626823,2626824,2626825,2626826,2626827,2626828,2626829,2626830,2626831,2626832,2626833,2626834,2626835,2626836,2626837,2626838,2626839,2626840,2626841,2626842,2626843,2626844,2626845,2626846,2626847,2626848,2626849,2626850,2626851,2626852,2626853,2626854,2626855,2626856,2626857,2626858,2626859,2626860,2626861,2626862,2626863,2626864,2626865,2626866,2626867,2626868,2626869,2626870,2626871,2626872,2626873,2626874,2626875,2626876,2626877,2626878,2626879,2626885,2626896,2626897,2626898,2626899,2626900,2626901,2626902,2626903,2626904,2626905,2626906,2626907,2626908,2626909,2626910,2626911,2626944,2626945,2626946,2626947,2626948,2626949,2626950,2626951,2626952,2626953,2626954,2626955,2626956,2626957,2626958,2626959,2626960,2626961,2626962,2626963,2626964,2626965,2626966,2626967,2626968,2626969,2626970,2626971,2626972,2626973,2626974,2626975,2626976,2626977,2626978,2626979,2626980,2626981,2626982,2626983,2626984,2626985,2626986,2626987,2626988,2626989,2626990,2626991,2626992,2626993,2626994,2626995,2626996,2626997,2626998,2626999,2627000,2627001,2627002,2627003,2627004,2627005,2627006,2627007,2627013,2627024,2627025,2627026,2627027,2627028,2627029,2627030,2627031,2627032,2627033,2627034,2627035,2627036,2627037,2627038,2627039],"End Stone Bricks":[2627094],"Ender Chest":[2627348,2627349,2627350,2627351],"Erbium":[2602164],"Europium":[2602421],"Fake Wooden Slab":[2627608,2627609,2627610],"Farmland":[2627864,2627865,2627866,2627867,2627868,2627869,2627870,2627871],"Fermium":[2602678],"Fern":[2628122],"Fire Block":[2628368,2628369,2628370,2628371,2628372,2628373,2628374,2628375,2628376,2628377,2628378,2628379,2628380,2628381,2628382,2628383],"Flerovium":[2602935],"Fletching Table":[2628636],"Flower Pot":[2628893],"Flowering Azalea Leaves":[2736060,2736061,2736062,2736063],"Fluorine":[2603192],"Francium":[2603449],"Froglight":[2734001,2734002,2734003,2734005,2734006,2734007,2734013,2734014,2734015],"Frosted Ice":[2629148,2629149,2629150,2629151],"Furnace":[2629400,2629401,2629402,2629403,2629404,2629405,2629406,2629407],"Gadolinium":[2603706],"Gallium":[2603963],"Germanium":[2604220],"Gilded Blackstone":[2727582],"Glass":[2629664],"Glass Pane":[2629921],"Glazed Terracotta":[2697984,2697985,2697986,2697987,2697988,2697989,2697990,2697991,2697992,2697993,2697994,2697995,2697996,2697997,2697998,2697999,2698000,2698001,2698002,2698003,2698004,2698005,2698006,2698007,2698008,2698009,2698010,2698011,2698012,2698013,2698014,2698015,2698016,2698017,2698018,2698019,2698020,2698021,2698022,2698023,2698024,2698025,2698026,2698027,2698028,2698029,2698030,2698031,2698032,2698033,2698034,2698035,2698036,2698037,2698038,2698039,2698040,2698041,2698042,2698043,2698044,2698045,2698046,2698047],"Glow Item Frame":[2735280,2735281,2735284,2735285,2735286,2735287,2735288,2735289,2735292,2735293,2735294,2735295],"Glowing Obsidian":[2630178],"Glowstone":[2630435],"Gold":[2604477],"Gold Block":[2630692],"Gold Ore":[2630949],"Granite":[2631206],"Granite Slab":[2631461,2631462,2631463],"Granite Stairs":[2631720,2631721,2631722,2631723,2631724,2631725,2631726,2631727],"Granite Wall":[2631936,2631937,2631938,2631939,2631940,2631941,2631942,2631943,2631944,2631945,2631946,2631947,2631948,2631949,2631950,2631951,2631952,2631953,2631954,2631955,2631956,2631957,2631958,2631959,2631960,2631961,2631962,2631963,2631964,2631965,2631966,2631967,2631968,2631969,2631970,2631971,2631972,2631973,2631974,2631975,2631976,2631977,2631978,2631979,2631980,2631981,2631982,2631983,2631984,2631985,2631986,2631987,2631988,2631989,2631990,2631991,2631992,2631993,2631994,2631995,2631996,2631997,2631998,2631999,2632032,2632033,2632034,2632035,2632036,2632037,2632038,2632039,2632040,2632041,2632042,2632043,2632044,2632045,2632046,2632047,2632057,2632064,2632065,2632066,2632067,2632068,2632069,2632070,2632071,2632072,2632073,2632074,2632075,2632076,2632077,2632078,2632079,2632080,2632081,2632082,2632083,2632084,2632085,2632086,2632087,2632088,2632089,2632090,2632091,2632092,2632093,2632094,2632095,2632096,2632097,2632098,2632099,2632100,2632101,2632102,2632103,2632104,2632105,2632106,2632107,2632108,2632109,2632110,2632111,2632112,2632113,2632114,2632115,2632116,2632117,2632118,2632119,2632120,2632121,2632122,2632123,2632124,2632125,2632126,2632127,2632160,2632161,2632162,2632163,2632164,2632165,2632166,2632167,2632168,2632169,2632170,2632171,2632172,2632173,2632174,2632175,2632185],"Grass":[2632234],"Grass Path":[2632491],"Gravel":[2632748],"Green Torch":[2633514,2633515,2633516,2633517,2633518],"Hafnium":[2604734],"Hanging Roots":[2730409],"Hardened Clay":[2633776],"Hardened Glass":[2634033],"Hardened Glass Pane":[2634290],"Hassium":[2604991],"Hay Bale":[2634545,2634546,2634547],"Heat Block":[2578263],"Helium":[2605248],"Holmium":[2605505],"Honeycomb Block":[2722699],"Hopper":[2634800,2634801,2634804,2634806,2634807,2634808,2634809,2634812,2634814,2634815],"Hydrogen":[2605762],"Ice":[2635061],"Indium":[2606019],"Infested Chiseled Stone Brick":[2635318],"Infested Cobblestone":[2635575],"Infested Cracked Stone Brick":[2635832],"Infested Mossy Stone Brick":[2636089],"Infested Stone":[2636346],"Infested Stone Brick":[2636603],"Invisible Bedrock":[2637374],"Iodine":[2606276],"Iridium":[2606533],"Iron":[2606790],"Iron Bars":[2637888],"Iron Block":[2637631],"Iron Door":[2638144,2638145,2638146,2638147,2638148,2638149,2638150,2638151,2638152,2638153,2638154,2638155,2638156,2638157,2638158,2638159,2638160,2638161,2638162,2638163,2638164,2638165,2638166,2638167,2638168,2638169,2638170,2638171,2638172,2638173,2638174,2638175],"Iron Ore":[2638402],"Iron Trapdoor":[2638656,2638657,2638658,2638659,2638660,2638661,2638662,2638663,2638664,2638665,2638666,2638667,2638668,2638669,2638670,2638671],"Item Frame":[2638912,2638913,2638916,2638917,2638918,2638919,2638920,2638921,2638924,2638925,2638926,2638927],"Jack o'Lantern":[2647396,2647397,2647398,2647399],"Jukebox":[2639173],"Jungle Button":[2639426,2639427,2639428,2639429,2639430,2639431,2639434,2639435,2639436,2639437,2639438,2639439],"Jungle Door":[2639680,2639681,2639682,2639683,2639684,2639685,2639686,2639687,2639688,2639689,2639690,2639691,2639692,2639693,2639694,2639695,2639696,2639697,2639698,2639699,2639700,2639701,2639702,2639703,2639704,2639705,2639706,2639707,2639708,2639709,2639710,2639711],"Jungle Fence":[2639944],"Jungle Fence Gate":[2640192,2640193,2640194,2640195,2640196,2640197,2640198,2640199,2640200,2640201,2640202,2640203,2640204,2640205,2640206,2640207],"Jungle Leaves":[2640456,2640457,2640458,2640459],"Jungle Log":[2640712,2640713,2640714,2640715,2640718,2640719],"Jungle Planks":[2640972],"Jungle Pressure Plate":[2641228,2641229],"Jungle Sapling":[2641486,2641487],"Jungle Sign":[2641728,2641729,2641730,2641731,2641732,2641733,2641734,2641735,2641736,2641737,2641738,2641739,2641740,2641741,2641742,2641743],"Jungle Slab":[2642000,2642001,2642002],"Jungle Stairs":[2642256,2642257,2642258,2642259,2642260,2642261,2642262,2642263],"Jungle Trapdoor":[2642512,2642513,2642514,2642515,2642516,2642517,2642518,2642519,2642520,2642521,2642522,2642523,2642524,2642525,2642526,2642527],"Jungle Wall Sign":[2642768,2642769,2642770,2642771],"Jungle Wood":[2643024,2643025,2643028,2643029,2643030,2643031],"Krypton":[2607047],"Lab Table":[2643284,2643285,2643286,2643287],"Ladder":[2643540,2643541,2643542,2643543],"Lantern":[2643798,2643799],"Lanthanum":[2607304],"Lapis Lazuli Block":[2644056],"Lapis Lazuli Ore":[2644313],"Large Fern":[2644570,2644571],"Lava":[2644800,2644801,2644802,2644803,2644804,2644805,2644806,2644807,2644808,2644809,2644810,2644811,2644812,2644813,2644814,2644815,2644816,2644817,2644818,2644819,2644820,2644821,2644822,2644823,2644824,2644825,2644826,2644827,2644828,2644829,2644830,2644831],"Lava Cauldron":[2732208,2732209,2732210,2732211,2732212,2732213],"Lawrencium":[2607561],"Lead":[2607818],"Lectern":[2645080,2645081,2645082,2645083,2645084,2645085,2645086,2645087],"Legacy Stonecutter":[2645341],"Lever":[2645584,2645585,2645586,2645587,2645588,2645589,2645590,2645591,2645592,2645593,2645594,2645595,2645596,2645597,2645598,2645599],"Light Block":[2703680,2703681,2703682,2703683,2703684,2703685,2703686,2703687,2703688,2703689,2703690,2703691,2703692,2703693,2703694,2703695],"Lightning Rod":[2727834,2727835,2727836,2727837,2727838,2727839],"Lilac":[2646368,2646369],"Lily Pad":[2646883],"Lily of the Valley":[2646626],"Lithium":[2608075],"Livermorium":[2608332],"Loom":[2647652,2647653,2647654,2647655],"Lutetium":[2608589],"Magma Block":[2648168],"Magnesium":[2608846],"Manganese":[2609103],"Mangrove Button":[2717040,2717041,2717044,2717045,2717046,2717047,2717048,2717049,2717052,2717053,2717054,2717055],"Mangrove Door":[2718560,2718561,2718562,2718563,2718564,2718565,2718566,2718567,2718568,2718569,2718570,2718571,2718572,2718573,2718574,2718575,2718576,2718577,2718578,2718579,2718580,2718581,2718582,2718583,2718584,2718585,2718586,2718587,2718588,2718589,2718590,2718591],"Mangrove Fence":[2713190],"Mangrove Fence Gate":[2719344,2719345,2719346,2719347,2719348,2719349,2719350,2719351,2719352,2719353,2719354,2719355,2719356,2719357,2719358,2719359],"Mangrove Leaves":[2735548,2735549,2735550,2735551],"Mangrove Log":[2714728,2714729,2714732,2714733,2714734,2714735],"Mangrove Planks":[2712419],"Mangrove Pressure Plate":[2717816,2717817],"Mangrove Roots":[2733493],"Mangrove Sign":[2720896,2720897,2720898,2720899,2720900,2720901,2720902,2720903,2720904,2720905,2720906,2720907,2720908,2720909,2720910,2720911],"Mangrove Slab":[2713960,2713961,2713963],"Mangrove Stairs":[2720128,2720129,2720130,2720131,2720132,2720133,2720134,2720135],"Mangrove Trapdoor":[2716272,2716273,2716274,2716275,2716276,2716277,2716278,2716279,2716280,2716281,2716282,2716283,2716284,2716285,2716286,2716287],"Mangrove Wall Sign":[2721668,2721669,2721670,2721671],"Mangrove Wood":[2715498,2715499,2715500,2715501,2715502,2715503],"Material Reducer":[2648424,2648425,2648426,2648427],"Meitnerium":[2609360],"Melon Block":[2648682],"Melon Stem":[2648936,2648937,2648938,2648939,2648940,2648941,2648942,2648943],"Mendelevium":[2609617],"Mercury":[2609874],"Mob Head":[2649152,2649153,2649156,2649157,2649158,2649159,2649160,2649161,2649164,2649165,2649166,2649167,2649184,2649185,2649188,2649189,2649190,2649191,2649200,2649201,2649204,2649205,2649206,2649207,2649208,2649209,2649212,2649213,2649214,2649215],"Molybdenum":[2610131],"Monster Spawner":[2649453],"Moscovium":[2610388],"Mossy Cobblestone":[2649710],"Mossy Cobblestone Slab":[2649965,2649966,2649967],"Mossy Cobblestone Stairs":[2650224,2650225,2650226,2650227,2650228,2650229,2650230,2650231],"Mossy Cobblestone Wall":[2650401,2650416,2650417,2650418,2650419,2650420,2650421,2650422,2650423,2650424,2650425,2650426,2650427,2650428,2650429,2650430,2650431,2650432,2650433,2650434,2650435,2650436,2650437,2650438,2650439,2650440,2650441,2650442,2650443,2650444,2650445,2650446,2650447,2650448,2650449,2650450,2650451,2650452,2650453,2650454,2650455,2650456,2650457,2650458,2650459,2650460,2650461,2650462,2650463,2650464,2650465,2650466,2650467,2650468,2650469,2650470,2650471,2650472,2650473,2650474,2650475,2650476,2650477,2650478,2650479,2650480,2650481,2650482,2650483,2650484,2650485,2650486,2650487,2650488,2650489,2650490,2650491,2650492,2650493,2650494,2650495,2650529,2650544,2650545,2650546,2650547,2650548,2650549,2650550,2650551,2650552,2650553,2650554,2650555,2650556,2650557,2650558,2650559,2650560,2650561,2650562,2650563,2650564,2650565,2650566,2650567,2650568,2650569,2650570,2650571,2650572,2650573,2650574,2650575,2650576,2650577,2650578,2650579,2650580,2650581,2650582,2650583,2650584,2650585,2650586,2650587,2650588,2650589,2650590,2650591,2650592,2650593,2650594,2650595,2650596,2650597,2650598,2650599,2650600,2650601,2650602,2650603,2650604,2650605,2650606,2650607,2650608,2650609,2650610,2650611,2650612,2650613,2650614,2650615,2650616,2650617,2650618,2650619,2650620,2650621,2650622,2650623],"Mossy Stone Brick Slab":[2650736,2650738,2650739],"Mossy Stone Brick Stairs":[2650992,2650993,2650994,2650995,2650996,2650997,2650998,2650999],"Mossy Stone Brick Wall":[2651172,2651184,2651185,2651186,2651187,2651188,2651189,2651190,2651191,2651192,2651193,2651194,2651195,2651196,2651197,2651198,2651199,2651200,2651201,2651202,2651203,2651204,2651205,2651206,2651207,2651208,2651209,2651210,2651211,2651212,2651213,2651214,2651215,2651216,2651217,2651218,2651219,2651220,2651221,2651222,2651223,2651224,2651225,2651226,2651227,2651228,2651229,2651230,2651231,2651232,2651233,2651234,2651235,2651236,2651237,2651238,2651239,2651240,2651241,2651242,2651243,2651244,2651245,2651246,2651247,2651248,2651249,2651250,2651251,2651252,2651253,2651254,2651255,2651256,2651257,2651258,2651259,2651260,2651261,2651262,2651263,2651300,2651312,2651313,2651314,2651315,2651316,2651317,2651318,2651319,2651320,2651321,2651322,2651323,2651324,2651325,2651326,2651327,2651328,2651329,2651330,2651331,2651332,2651333,2651334,2651335,2651336,2651337,2651338,2651339,2651340,2651341,2651342,2651343,2651344,2651345,2651346,2651347,2651348,2651349,2651350,2651351,2651352,2651353,2651354,2651355,2651356,2651357,2651358,2651359,2651360,2651361,2651362,2651363,2651364,2651365,2651366,2651367,2651368,2651369,2651370,2651371,2651372,2651373,2651374,2651375,2651376,2651377,2651378,2651379,2651380,2651381,2651382,2651383,2651384,2651385,2651386,2651387,2651388,2651389,2651390,2651391],"Mossy Stone Bricks":[2651509],"Mud":[2725526],"Mud Brick Slab":[2726040,2726041,2726042],"Mud Brick Stairs":[2726296,2726297,2726298,2726299,2726300,2726301,2726302,2726303],"Mud Brick Wall":[2726400,2726401,2726402,2726403,2726404,2726405,2726406,2726407,2726408,2726409,2726410,2726411,2726412,2726413,2726414,2726415,2726416,2726417,2726418,2726419,2726420,2726421,2726422,2726423,2726424,2726425,2726426,2726427,2726428,2726429,2726430,2726431,2726432,2726433,2726434,2726435,2726436,2726437,2726438,2726439,2726440,2726441,2726442,2726443,2726444,2726445,2726446,2726447,2726448,2726449,2726450,2726451,2726452,2726453,2726454,2726455,2726456,2726457,2726458,2726459,2726460,2726461,2726462,2726463,2726474,2726480,2726481,2726482,2726483,2726484,2726485,2726486,2726487,2726488,2726489,2726490,2726491,2726492,2726493,2726494,2726495,2726528,2726529,2726530,2726531,2726532,2726533,2726534,2726535,2726536,2726537,2726538,2726539,2726540,2726541,2726542,2726543,2726544,2726545,2726546,2726547,2726548,2726549,2726550,2726551,2726552,2726553,2726554,2726555,2726556,2726557,2726558,2726559,2726560,2726561,2726562,2726563,2726564,2726565,2726566,2726567,2726568,2726569,2726570,2726571,2726572,2726573,2726574,2726575,2726576,2726577,2726578,2726579,2726580,2726581,2726582,2726583,2726584,2726585,2726586,2726587,2726588,2726589,2726590,2726591,2726602,2726608,2726609,2726610,2726611,2726612,2726613,2726614,2726615,2726616,2726617,2726618,2726619,2726620,2726621,2726622,2726623],"Mud Bricks":[2725783],"Muddy Mangrove Roots":[2733748,2733750,2733751],"Mushroom Stem":[2651766],"Mycelium":[2652023],"Neodymium":[2610645],"Neon":[2610902],"Neptunium":[2611159],"Nether Brick Fence":[2652280],"Nether Brick Slab":[2652536,2652537,2652539],"Nether Brick Stairs":[2652792,2652793,2652794,2652795,2652796,2652797,2652798,2652799],"Nether Brick Wall":[2652971,2652976,2652977,2652978,2652979,2652980,2652981,2652982,2652983,2652984,2652985,2652986,2652987,2652988,2652989,2652990,2652991,2652992,2652993,2652994,2652995,2652996,2652997,2652998,2652999,2653000,2653001,2653002,2653003,2653004,2653005,2653006,2653007,2653008,2653009,2653010,2653011,2653012,2653013,2653014,2653015,2653016,2653017,2653018,2653019,2653020,2653021,2653022,2653023,2653024,2653025,2653026,2653027,2653028,2653029,2653030,2653031,2653032,2653033,2653034,2653035,2653036,2653037,2653038,2653039,2653040,2653041,2653042,2653043,2653044,2653045,2653046,2653047,2653048,2653049,2653050,2653051,2653052,2653053,2653054,2653055,2653099,2653104,2653105,2653106,2653107,2653108,2653109,2653110,2653111,2653112,2653113,2653114,2653115,2653116,2653117,2653118,2653119,2653120,2653121,2653122,2653123,2653124,2653125,2653126,2653127,2653128,2653129,2653130,2653131,2653132,2653133,2653134,2653135,2653136,2653137,2653138,2653139,2653140,2653141,2653142,2653143,2653144,2653145,2653146,2653147,2653148,2653149,2653150,2653151,2653152,2653153,2653154,2653155,2653156,2653157,2653158,2653159,2653160,2653161,2653162,2653163,2653164,2653165,2653166,2653167,2653168,2653169,2653170,2653171,2653172,2653173,2653174,2653175,2653176,2653177,2653178,2653179,2653180,2653181,2653182,2653183],"Nether Bricks":[2653308],"Nether Gold Ore":[2725269],"Nether Portal":[2653564,2653565],"Nether Quartz Ore":[2653822],"Nether Reactor Core":[2654079],"Nether Wart":[2654336,2654337,2654338,2654339],"Nether Wart Block":[2654593],"Netherite Block":[2731180],"Netherrack":[2654850],"Nickel":[2611416],"Nihonium":[2611673],"Niobium":[2611930],"Nitrogen":[2612187],"Nobelium":[2612444],"Note Block":[2655107],"Oak Button":[2655360,2655361,2655364,2655365,2655366,2655367,2655368,2655369,2655372,2655373,2655374,2655375],"Oak Door":[2655616,2655617,2655618,2655619,2655620,2655621,2655622,2655623,2655624,2655625,2655626,2655627,2655628,2655629,2655630,2655631,2655632,2655633,2655634,2655635,2655636,2655637,2655638,2655639,2655640,2655641,2655642,2655643,2655644,2655645,2655646,2655647],"Oak Fence":[2655878],"Oak Fence Gate":[2656128,2656129,2656130,2656131,2656132,2656133,2656134,2656135,2656136,2656137,2656138,2656139,2656140,2656141,2656142,2656143],"Oak Leaves":[2656392,2656393,2656394,2656395],"Oak Log":[2656648,2656649,2656650,2656651,2656652,2656653],"Oak Planks":[2656906],"Oak Pressure Plate":[2657162,2657163],"Oak Sapling":[2657420,2657421],"Oak Sign":[2657664,2657665,2657666,2657667,2657668,2657669,2657670,2657671,2657672,2657673,2657674,2657675,2657676,2657677,2657678,2657679],"Oak Slab":[2657932,2657934,2657935],"Oak Stairs":[2658184,2658185,2658186,2658187,2658188,2658189,2658190,2658191],"Oak Trapdoor":[2658448,2658449,2658450,2658451,2658452,2658453,2658454,2658455,2658456,2658457,2658458,2658459,2658460,2658461,2658462,2658463],"Oak Wall Sign":[2658704,2658705,2658706,2658707],"Oak Wood":[2658960,2658961,2658962,2658963,2658966,2658967],"Obsidian":[2659219],"Oganesson":[2612701],"Orange Tulip":[2659733],"Osmium":[2612958],"Oxeye Daisy":[2659990],"Oxygen":[2613215],"Packed Ice":[2660247],"Packed Mud":[2726811],"Palladium":[2613472],"Peony":[2660504,2660505],"Phosphorus":[2613729],"Pink Tulip":[2661018],"Platinum":[2613986],"Plutonium":[2614243],"Podzol":[2661275],"Polished Andesite":[2661532],"Polished Andesite Slab":[2661788,2661789,2661791],"Polished Andesite Stairs":[2662040,2662041,2662042,2662043,2662044,2662045,2662046,2662047],"Polished Basalt":[2699053,2699054,2699055],"Polished Blackstone":[2700597],"Polished Blackstone Brick Slab":[2702652,2702653,2702655],"Polished Blackstone Brick Stairs":[2702904,2702905,2702906,2702907,2702908,2702909,2702910,2702911],"Polished Blackstone Brick Wall":[2703104,2703105,2703106,2703107,2703108,2703109,2703110,2703111,2703112,2703113,2703114,2703115,2703116,2703117,2703118,2703119,2703120,2703121,2703122,2703123,2703124,2703125,2703126,2703127,2703128,2703129,2703130,2703131,2703132,2703133,2703134,2703135,2703136,2703137,2703138,2703139,2703140,2703141,2703142,2703143,2703144,2703145,2703146,2703147,2703148,2703149,2703150,2703151,2703152,2703153,2703154,2703155,2703156,2703157,2703158,2703159,2703160,2703161,2703162,2703163,2703164,2703165,2703166,2703167,2703215,2703216,2703217,2703218,2703219,2703220,2703221,2703222,2703223,2703224,2703225,2703226,2703227,2703228,2703229,2703230,2703231,2703232,2703233,2703234,2703235,2703236,2703237,2703238,2703239,2703240,2703241,2703242,2703243,2703244,2703245,2703246,2703247,2703248,2703249,2703250,2703251,2703252,2703253,2703254,2703255,2703256,2703257,2703258,2703259,2703260,2703261,2703262,2703263,2703264,2703265,2703266,2703267,2703268,2703269,2703270,2703271,2703272,2703273,2703274,2703275,2703276,2703277,2703278,2703279,2703280,2703281,2703282,2703283,2703284,2703285,2703286,2703287,2703288,2703289,2703290,2703291,2703292,2703293,2703294,2703295,2703343,2703344,2703345,2703346,2703347,2703348,2703349,2703350,2703351,2703352,2703353,2703354,2703355,2703356,2703357,2703358,2703359],"Polished Blackstone Bricks":[2702396],"Polished Blackstone Button":[2700850,2700851,2700852,2700853,2700854,2700855,2700858,2700859,2700860,2700861,2700862,2700863],"Polished Blackstone Pressure Plate":[2701110,2701111],"Polished Blackstone Slab":[2701368,2701369,2701370],"Polished Blackstone Stairs":[2701624,2701625,2701626,2701627,2701628,2701629,2701630,2701631],"Polished Blackstone Wall":[2701824,2701825,2701826,2701827,2701828,2701829,2701830,2701831,2701832,2701833,2701834,2701835,2701836,2701837,2701838,2701839,2701840,2701841,2701842,2701843,2701844,2701845,2701846,2701847,2701848,2701849,2701850,2701851,2701852,2701853,2701854,2701855,2701856,2701857,2701858,2701859,2701860,2701861,2701862,2701863,2701864,2701865,2701866,2701867,2701868,2701869,2701870,2701871,2701872,2701873,2701874,2701875,2701876,2701877,2701878,2701879,2701880,2701881,2701882,2701883,2701884,2701885,2701886,2701887,2701930,2701936,2701937,2701938,2701939,2701940,2701941,2701942,2701943,2701944,2701945,2701946,2701947,2701948,2701949,2701950,2701951,2701952,2701953,2701954,2701955,2701956,2701957,2701958,2701959,2701960,2701961,2701962,2701963,2701964,2701965,2701966,2701967,2701968,2701969,2701970,2701971,2701972,2701973,2701974,2701975,2701976,2701977,2701978,2701979,2701980,2701981,2701982,2701983,2701984,2701985,2701986,2701987,2701988,2701989,2701990,2701991,2701992,2701993,2701994,2701995,2701996,2701997,2701998,2701999,2702000,2702001,2702002,2702003,2702004,2702005,2702006,2702007,2702008,2702009,2702010,2702011,2702012,2702013,2702014,2702015,2702058,2702064,2702065,2702066,2702067,2702068,2702069,2702070,2702071,2702072,2702073,2702074,2702075,2702076,2702077,2702078,2702079],"Polished Deepslate":[2708821],"Polished Deepslate Slab":[2709076,2709078,2709079],"Polished Deepslate Stairs":[2709328,2709329,2709330,2709331,2709332,2709333,2709334,2709335],"Polished Deepslate Wall":[2709512,2709520,2709521,2709522,2709523,2709524,2709525,2709526,2709527,2709528,2709529,2709530,2709531,2709532,2709533,2709534,2709535,2709568,2709569,2709570,2709571,2709572,2709573,2709574,2709575,2709576,2709577,2709578,2709579,2709580,2709581,2709582,2709583,2709584,2709585,2709586,2709587,2709588,2709589,2709590,2709591,2709592,2709593,2709594,2709595,2709596,2709597,2709598,2709599,2709600,2709601,2709602,2709603,2709604,2709605,2709606,2709607,2709608,2709609,2709610,2709611,2709612,2709613,2709614,2709615,2709616,2709617,2709618,2709619,2709620,2709621,2709622,2709623,2709624,2709625,2709626,2709627,2709628,2709629,2709630,2709631,2709640,2709648,2709649,2709650,2709651,2709652,2709653,2709654,2709655,2709656,2709657,2709658,2709659,2709660,2709661,2709662,2709663,2709696,2709697,2709698,2709699,2709700,2709701,2709702,2709703,2709704,2709705,2709706,2709707,2709708,2709709,2709710,2709711,2709712,2709713,2709714,2709715,2709716,2709717,2709718,2709719,2709720,2709721,2709722,2709723,2709724,2709725,2709726,2709727,2709728,2709729,2709730,2709731,2709732,2709733,2709734,2709735,2709736,2709737,2709738,2709739,2709740,2709741,2709742,2709743,2709744,2709745,2709746,2709747,2709748,2709749,2709750,2709751,2709752,2709753,2709754,2709755,2709756,2709757,2709758,2709759],"Polished Diorite":[2662303],"Polished Diorite Slab":[2662560,2662561,2662562],"Polished Diorite Stairs":[2662816,2662817,2662818,2662819,2662820,2662821,2662822,2662823],"Polished Granite":[2663074],"Polished Granite Slab":[2663329,2663330,2663331],"Polished Granite Stairs":[2663584,2663585,2663586,2663587,2663588,2663589,2663590,2663591],"Polonium":[2614500],"Poppy":[2663845],"Potassium":[2614757],"Potato Block":[2664096,2664097,2664098,2664099,2664100,2664101,2664102,2664103],"Potion Cauldron":[2732464,2732465,2732466,2732467,2732468,2732469],"Powered Rail":[2664354,2664355,2664356,2664357,2664358,2664359,2664362,2664363,2664364,2664365,2664366,2664367],"Praseodymium":[2615014],"Prismarine":[2664616],"Prismarine Bricks":[2664873],"Prismarine Bricks Slab":[2665128,2665130,2665131],"Prismarine Bricks Stairs":[2665384,2665385,2665386,2665387,2665388,2665389,2665390,2665391],"Prismarine Slab":[2665644,2665645,2665646],"Prismarine Stairs":[2665896,2665897,2665898,2665899,2665900,2665901,2665902,2665903],"Prismarine Wall":[2665984,2665985,2665986,2665987,2665988,2665989,2665990,2665991,2665992,2665993,2665994,2665995,2665996,2665997,2665998,2665999,2666000,2666001,2666002,2666003,2666004,2666005,2666006,2666007,2666008,2666009,2666010,2666011,2666012,2666013,2666014,2666015,2666016,2666017,2666018,2666019,2666020,2666021,2666022,2666023,2666024,2666025,2666026,2666027,2666028,2666029,2666030,2666031,2666032,2666033,2666034,2666035,2666036,2666037,2666038,2666039,2666040,2666041,2666042,2666043,2666044,2666045,2666046,2666047,2666080,2666081,2666082,2666083,2666084,2666085,2666086,2666087,2666088,2666089,2666090,2666091,2666092,2666093,2666094,2666095,2666110,2666112,2666113,2666114,2666115,2666116,2666117,2666118,2666119,2666120,2666121,2666122,2666123,2666124,2666125,2666126,2666127,2666128,2666129,2666130,2666131,2666132,2666133,2666134,2666135,2666136,2666137,2666138,2666139,2666140,2666141,2666142,2666143,2666144,2666145,2666146,2666147,2666148,2666149,2666150,2666151,2666152,2666153,2666154,2666155,2666156,2666157,2666158,2666159,2666160,2666161,2666162,2666163,2666164,2666165,2666166,2666167,2666168,2666169,2666170,2666171,2666172,2666173,2666174,2666175,2666208,2666209,2666210,2666211,2666212,2666213,2666214,2666215,2666216,2666217,2666218,2666219,2666220,2666221,2666222,2666223,2666238],"Promethium":[2615271],"Protactinium":[2615528],"Pumpkin":[2666415],"Pumpkin Stem":[2666672,2666673,2666674,2666675,2666676,2666677,2666678,2666679],"Purple Torch":[2667184,2667185,2667187,2667190,2667191],"Purpur Block":[2667443],"Purpur Pillar":[2667700,2667701,2667702],"Purpur Slab":[2667956,2667957,2667959],"Purpur Stairs":[2668208,2668209,2668210,2668211,2668212,2668213,2668214,2668215],"Quartz Block":[2668471],"Quartz Bricks":[2709849],"Quartz Pillar":[2668728,2668729,2668730],"Quartz Slab":[2668984,2668985,2668987],"Quartz Stairs":[2669240,2669241,2669242,2669243,2669244,2669245,2669246,2669247],"Radium":[2615785],"Radon":[2616042],"Rail":[2669490,2669491,2669496,2669497,2669498,2669499,2669500,2669501,2669502,2669503],"Raw Copper Block":[2703938],"Raw Gold Block":[2704195],"Raw Iron Block":[2704452],"Red Mushroom":[2670013],"Red Mushroom Block":[2670260,2670262,2670263,2670264,2670265,2670266,2670267,2670268,2670269,2670270,2670271],"Red Nether Brick Slab":[2670525,2670526,2670527],"Red Nether Brick Stairs":[2670784,2670785,2670786,2670787,2670788,2670789,2670790,2670791],"Red Nether Brick Wall":[2670848,2670849,2670850,2670851,2670852,2670853,2670854,2670855,2670856,2670857,2670858,2670859,2670860,2670861,2670862,2670863,2670865,2670912,2670913,2670914,2670915,2670916,2670917,2670918,2670919,2670920,2670921,2670922,2670923,2670924,2670925,2670926,2670927,2670928,2670929,2670930,2670931,2670932,2670933,2670934,2670935,2670936,2670937,2670938,2670939,2670940,2670941,2670942,2670943,2670944,2670945,2670946,2670947,2670948,2670949,2670950,2670951,2670952,2670953,2670954,2670955,2670956,2670957,2670958,2670959,2670960,2670961,2670962,2670963,2670964,2670965,2670966,2670967,2670968,2670969,2670970,2670971,2670972,2670973,2670974,2670975,2670976,2670977,2670978,2670979,2670980,2670981,2670982,2670983,2670984,2670985,2670986,2670987,2670988,2670989,2670990,2670991,2670993,2671040,2671041,2671042,2671043,2671044,2671045,2671046,2671047,2671048,2671049,2671050,2671051,2671052,2671053,2671054,2671055,2671056,2671057,2671058,2671059,2671060,2671061,2671062,2671063,2671064,2671065,2671066,2671067,2671068,2671069,2671070,2671071,2671072,2671073,2671074,2671075,2671076,2671077,2671078,2671079,2671080,2671081,2671082,2671083,2671084,2671085,2671086,2671087,2671088,2671089,2671090,2671091,2671092,2671093,2671094,2671095,2671096,2671097,2671098,2671099,2671100,2671101,2671102,2671103],"Red Nether Bricks":[2671298],"Red Sand":[2671555],"Red Sandstone":[2671812],"Red Sandstone Slab":[2672068,2672069,2672071],"Red Sandstone Stairs":[2672320,2672321,2672322,2672323,2672324,2672325,2672326,2672327],"Red Sandstone Wall":[2672384,2672385,2672386,2672387,2672388,2672389,2672390,2672391,2672392,2672393,2672394,2672395,2672396,2672397,2672398,2672399,2672407,2672448,2672449,2672450,2672451,2672452,2672453,2672454,2672455,2672456,2672457,2672458,2672459,2672460,2672461,2672462,2672463,2672464,2672465,2672466,2672467,2672468,2672469,2672470,2672471,2672472,2672473,2672474,2672475,2672476,2672477,2672478,2672479,2672480,2672481,2672482,2672483,2672484,2672485,2672486,2672487,2672488,2672489,2672490,2672491,2672492,2672493,2672494,2672495,2672496,2672497,2672498,2672499,2672500,2672501,2672502,2672503,2672504,2672505,2672506,2672507,2672508,2672509,2672510,2672511,2672512,2672513,2672514,2672515,2672516,2672517,2672518,2672519,2672520,2672521,2672522,2672523,2672524,2672525,2672526,2672527,2672535,2672576,2672577,2672578,2672579,2672580,2672581,2672582,2672583,2672584,2672585,2672586,2672587,2672588,2672589,2672590,2672591,2672592,2672593,2672594,2672595,2672596,2672597,2672598,2672599,2672600,2672601,2672602,2672603,2672604,2672605,2672606,2672607,2672608,2672609,2672610,2672611,2672612,2672613,2672614,2672615,2672616,2672617,2672618,2672619,2672620,2672621,2672622,2672623,2672624,2672625,2672626,2672627,2672628,2672629,2672630,2672631,2672632,2672633,2672634,2672635,2672636,2672637,2672638,2672639],"Red Torch":[2672841,2672842,2672843,2672844,2672845],"Red Tulip":[2673097],"Redstone":[2674896,2674897,2674898,2674899,2674900,2674901,2674902,2674903,2674904,2674905,2674906,2674907,2674908,2674909,2674910,2674911],"Redstone Block":[2673354],"Redstone Comparator":[2673600,2673601,2673602,2673603,2673604,2673605,2673606,2673607,2673608,2673609,2673610,2673611,2673612,2673613,2673614,2673615],"Redstone Lamp":[2673868,2673869],"Redstone Ore":[2674124,2674125],"Redstone Repeater":[2674368,2674369,2674370,2674371,2674372,2674373,2674374,2674375,2674376,2674377,2674378,2674379,2674380,2674381,2674382,2674383,2674384,2674385,2674386,2674387,2674388,2674389,2674390,2674391,2674392,2674393,2674394,2674395,2674396,2674397,2674398,2674399],"Redstone Torch":[2674626,2674627,2674628,2674629,2674630,2674634,2674635,2674636,2674637,2674638],"Reinforced Deepslate":[2736320],"Rhenium":[2616299],"Rhodium":[2616556],"Roentgenium":[2616813],"Rose Bush":[2675410,2675411],"Rubidium":[2617070],"Ruthenium":[2617327],"Rutherfordium":[2617584],"Samarium":[2617841],"Sand":[2675667],"Sandstone":[2675924],"Sandstone Slab":[2676180,2676181,2676183],"Sandstone Stairs":[2676432,2676433,2676434,2676435,2676436,2676437,2676438,2676439],"Sandstone Wall":[2676487,2676496,2676497,2676498,2676499,2676500,2676501,2676502,2676503,2676504,2676505,2676506,2676507,2676508,2676509,2676510,2676511,2676544,2676545,2676546,2676547,2676548,2676549,2676550,2676551,2676552,2676553,2676554,2676555,2676556,2676557,2676558,2676559,2676560,2676561,2676562,2676563,2676564,2676565,2676566,2676567,2676568,2676569,2676570,2676571,2676572,2676573,2676574,2676575,2676576,2676577,2676578,2676579,2676580,2676581,2676582,2676583,2676584,2676585,2676586,2676587,2676588,2676589,2676590,2676591,2676592,2676593,2676594,2676595,2676596,2676597,2676598,2676599,2676600,2676601,2676602,2676603,2676604,2676605,2676606,2676607,2676615,2676624,2676625,2676626,2676627,2676628,2676629,2676630,2676631,2676632,2676633,2676634,2676635,2676636,2676637,2676638,2676639,2676672,2676673,2676674,2676675,2676676,2676677,2676678,2676679,2676680,2676681,2676682,2676683,2676684,2676685,2676686,2676687,2676688,2676689,2676690,2676691,2676692,2676693,2676694,2676695,2676696,2676697,2676698,2676699,2676700,2676701,2676702,2676703,2676704,2676705,2676706,2676707,2676708,2676709,2676710,2676711,2676712,2676713,2676714,2676715,2676716,2676717,2676718,2676719,2676720,2676721,2676722,2676723,2676724,2676725,2676726,2676727,2676728,2676729,2676730,2676731,2676732,2676733,2676734,2676735],"Scandium":[2618098],"Sculk":[2735035],"Sea Lantern":[2676952],"Sea Pickle":[2677208,2677209,2677210,2677211,2677212,2677213,2677214,2677215],"Seaborgium":[2618355],"Selenium":[2618612],"Shroomlight":[2712162],"Shulker Box":[2677466],"Silicon":[2618869],"Silver":[2619126],"Slime Block":[2677723],"Smithing Table":[2730923],"Smoker":[2677976,2677977,2677978,2677979,2677980,2677981,2677982,2677983],"Smooth Basalt":[2699312],"Smooth Quartz Block":[2678237],"Smooth Quartz Slab":[2678492,2678494,2678495],"Smooth Quartz Stairs":[2678744,2678745,2678746,2678747,2678748,2678749,2678750,2678751],"Smooth Red Sandstone":[2679008],"Smooth Red Sandstone Slab":[2679264,2679265,2679267],"Smooth Red Sandstone Stairs":[2679520,2679521,2679522,2679523,2679524,2679525,2679526,2679527],"Smooth Sandstone":[2679779],"Smooth Sandstone Slab":[2680036,2680037,2680038],"Smooth Sandstone Stairs":[2680288,2680289,2680290,2680291,2680292,2680293,2680294,2680295],"Smooth Stone":[2680550],"Smooth Stone Slab":[2680805,2680806,2680807],"Snow Block":[2681064],"Snow Layer":[2681320,2681321,2681322,2681323,2681324,2681325,2681326,2681327],"Sodium":[2619383],"Soul Fire":[2711905],"Soul Lantern":[2711390,2711391],"Soul Sand":[2681578],"Soul Soil":[2711648],"Soul Torch":[2711130,2711131,2711132,2711133,2711135],"Sponge":[2681834,2681835],"Spore Blossom":[2731437],"Spruce Button":[2682080,2682081,2682084,2682085,2682086,2682087,2682088,2682089,2682092,2682093,2682094,2682095],"Spruce Door":[2682336,2682337,2682338,2682339,2682340,2682341,2682342,2682343,2682344,2682345,2682346,2682347,2682348,2682349,2682350,2682351,2682352,2682353,2682354,2682355,2682356,2682357,2682358,2682359,2682360,2682361,2682362,2682363,2682364,2682365,2682366,2682367],"Spruce Fence":[2682606],"Spruce Fence Gate":[2682848,2682849,2682850,2682851,2682852,2682853,2682854,2682855,2682856,2682857,2682858,2682859,2682860,2682861,2682862,2682863],"Spruce Leaves":[2683120,2683121,2683122,2683123],"Spruce Log":[2683376,2683377,2683378,2683379,2683380,2683381],"Spruce Planks":[2683634],"Spruce Pressure Plate":[2683890,2683891],"Spruce Sapling":[2684148,2684149],"Spruce Sign":[2684400,2684401,2684402,2684403,2684404,2684405,2684406,2684407,2684408,2684409,2684410,2684411,2684412,2684413,2684414,2684415],"Spruce Slab":[2684660,2684662,2684663],"Spruce Stairs":[2684912,2684913,2684914,2684915,2684916,2684917,2684918,2684919],"Spruce Trapdoor":[2685168,2685169,2685170,2685171,2685172,2685173,2685174,2685175,2685176,2685177,2685178,2685179,2685180,2685181,2685182,2685183],"Spruce Wall Sign":[2685432,2685433,2685434,2685435],"Spruce Wood":[2685688,2685689,2685690,2685691,2685694,2685695],"Stained Clay":[2685936,2685937,2685938,2685939,2685940,2685941,2685942,2685943,2685944,2685945,2685946,2685947,2685948,2685949,2685950,2685951],"Stained Glass":[2686192,2686193,2686194,2686195,2686196,2686197,2686198,2686199,2686200,2686201,2686202,2686203,2686204,2686205,2686206,2686207],"Stained Glass Pane":[2686448,2686449,2686450,2686451,2686452,2686453,2686454,2686455,2686456,2686457,2686458,2686459,2686460,2686461,2686462,2686463],"Stained Hardened Glass":[2686704,2686705,2686706,2686707,2686708,2686709,2686710,2686711,2686712,2686713,2686714,2686715,2686716,2686717,2686718,2686719],"Stained Hardened Glass Pane":[2686960,2686961,2686962,2686963,2686964,2686965,2686966,2686967,2686968,2686969,2686970,2686971,2686972,2686973,2686974,2686975],"Stone":[2686976],"Stone Brick Slab":[2687232,2687233,2687235],"Stone Brick Stairs":[2687488,2687489,2687490,2687491,2687492,2687493,2687494,2687495],"Stone Brick Wall":[2687744,2687745,2687746,2687747,2687748,2687749,2687750,2687751,2687752,2687753,2687754,2687755,2687756,2687757,2687758,2687759,2687760,2687761,2687762,2687763,2687764,2687765,2687766,2687767,2687768,2687769,2687770,2687771,2687772,2687773,2687774,2687775,2687776,2687777,2687778,2687779,2687780,2687781,2687782,2687783,2687784,2687785,2687786,2687787,2687788,2687789,2687790,2687791,2687792,2687793,2687794,2687795,2687796,2687797,2687798,2687799,2687800,2687801,2687802,2687803,2687804,2687805,2687806,2687807,2687808,2687809,2687810,2687811,2687812,2687813,2687814,2687815,2687816,2687817,2687818,2687819,2687820,2687821,2687822,2687823,2687827,2687872,2687873,2687874,2687875,2687876,2687877,2687878,2687879,2687880,2687881,2687882,2687883,2687884,2687885,2687886,2687887,2687888,2687889,2687890,2687891,2687892,2687893,2687894,2687895,2687896,2687897,2687898,2687899,2687900,2687901,2687902,2687903,2687904,2687905,2687906,2687907,2687908,2687909,2687910,2687911,2687912,2687913,2687914,2687915,2687916,2687917,2687918,2687919,2687920,2687921,2687922,2687923,2687924,2687925,2687926,2687927,2687928,2687929,2687930,2687931,2687932,2687933,2687934,2687935,2687936,2687937,2687938,2687939,2687940,2687941,2687942,2687943,2687944,2687945,2687946,2687947,2687948,2687949,2687950,2687951,2687955],"Stone Bricks":[2688004],"Stone Button":[2688256,2688257,2688260,2688261,2688262,2688263,2688264,2688265,2688268,2688269,2688270,2688271],"Stone Pressure Plate":[2688518,2688519],"Stone Slab":[2688773,2688774,2688775],"Stone Stairs":[2689032,2689033,2689034,2689035,2689036,2689037,2689038,2689039],"Stonecutter":[2689288,2689289,2689290,2689291],"Strontium":[2619640],"Sugarcane":[2692624,2692625,2692626,2692627,2692628,2692629,2692630,2692631,2692632,2692633,2692634,2692635,2692636,2692637,2692638,2692639],"Sulfur":[2619897],"Sunflower":[2692886,2692887],"Sweet Berry Bush":[2693144,2693145,2693146,2693147],"TNT":[2693656,2693657,2693658,2693659],"Tall Grass":[2693401],"Tantalum":[2620154],"Technetium":[2620411],"Tellurium":[2620668],"Tennessine":[2620925],"Terbium":[2621182],"Thallium":[2621439],"Thorium":[2621440],"Thulium":[2621697],"Tin":[2621954],"Tinted Glass":[2722442],"Titanium":[2622211],"Torch":[2693912,2693913,2693914,2693918,2693919],"Trapped Chest":[2694172,2694173,2694174,2694175],"Tripwire":[2694416,2694417,2694418,2694419,2694420,2694421,2694422,2694423,2694424,2694425,2694426,2694427,2694428,2694429,2694430,2694431],"Tripwire Hook":[2694672,2694673,2694674,2694675,2694676,2694677,2694678,2694679,2694680,2694681,2694682,2694683,2694684,2694685,2694686,2694687],"Tuff":[2710877],"Tungsten":[2622468],"Twisting Vines":[2734240,2734241,2734248,2734249,2734250,2734251,2734252,2734253,2734254,2734255,2734256,2734257,2734258,2734259,2734260,2734261,2734262,2734263,2734264,2734265,2734266,2734267,2734268,2734269,2734270,2734271],"Underwater Torch":[2694938,2694939,2694940,2694941,2694942],"Uranium":[2622725],"Vanadium":[2622982],"Vines":[2695200,2695201,2695202,2695203,2695204,2695205,2695206,2695207,2695208,2695209,2695210,2695211,2695212,2695213,2695214,2695215],"Wall Banner":[2695424,2695425,2695426,2695427,2695428,2695429,2695430,2695431,2695432,2695433,2695434,2695435,2695436,2695437,2695438,2695439,2695440,2695441,2695442,2695443,2695444,2695445,2695446,2695447,2695448,2695449,2695450,2695451,2695452,2695453,2695454,2695455,2695456,2695457,2695458,2695459,2695460,2695461,2695462,2695463,2695464,2695465,2695466,2695467,2695468,2695469,2695470,2695471,2695472,2695473,2695474,2695475,2695476,2695477,2695478,2695479,2695480,2695481,2695482,2695483,2695484,2695485,2695486,2695487],"Wall Coral Fan":[2695680,2695681,2695682,2695683,2695686,2695688,2695689,2695690,2695691,2695694,2695696,2695697,2695698,2695699,2695702,2695704,2695705,2695706,2695707,2695710,2695712,2695713,2695714,2695715,2695718,2695720,2695721,2695722,2695723,2695726,2695728,2695729,2695730,2695731,2695734,2695736,2695737,2695738,2695739,2695742],"Warped Button":[2717554,2717555,2717556,2717557,2717558,2717559,2717562,2717563,2717564,2717565,2717566,2717567],"Warped Door":[2719072,2719073,2719074,2719075,2719076,2719077,2719078,2719079,2719080,2719081,2719082,2719083,2719084,2719085,2719086,2719087,2719088,2719089,2719090,2719091,2719092,2719093,2719094,2719095,2719096,2719097,2719098,2719099,2719100,2719101,2719102,2719103],"Warped Fence":[2713704],"Warped Fence Gate":[2719872,2719873,2719874,2719875,2719876,2719877,2719878,2719879,2719880,2719881,2719882,2719883,2719884,2719885,2719886,2719887],"Warped Hyphae":[2716016,2716017,2716018,2716019,2716020,2716021],"Warped Planks":[2712933],"Warped Pressure Plate":[2718330,2718331],"Warped Sign":[2721408,2721409,2721410,2721411,2721412,2721413,2721414,2721415,2721416,2721417,2721418,2721419,2721420,2721421,2721422,2721423],"Warped Slab":[2714473,2714474,2714475],"Warped Stairs":[2720640,2720641,2720642,2720643,2720644,2720645,2720646,2720647],"Warped Stem":[2715242,2715243,2715244,2715245,2715246,2715247],"Warped Trapdoor":[2716784,2716785,2716786,2716787,2716788,2716789,2716790,2716791,2716792,2716793,2716794,2716795,2716796,2716797,2716798,2716799],"Warped Wall Sign":[2722184,2722185,2722186,2722187],"Warped Wart Block":[2727068],"Water":[2695968,2695969,2695970,2695971,2695972,2695973,2695974,2695975,2695976,2695977,2695978,2695979,2695980,2695981,2695982,2695983,2695984,2695985,2695986,2695987,2695988,2695989,2695990,2695991,2695992,2695993,2695994,2695995,2695996,2695997,2695998,2695999],"Water Cauldron":[2731946,2731947,2731948,2731949,2731950,2731951],"Weeping Vines":[2734496,2734497,2734504,2734505,2734506,2734507,2734508,2734509,2734510,2734511,2734512,2734513,2734514,2734515,2734516,2734517,2734518,2734519,2734520,2734521,2734522,2734523,2734524,2734525,2734526,2734527],"Weighted Pressure Plate Heavy":[2696224,2696225,2696226,2696227,2696228,2696229,2696230,2696231,2696232,2696233,2696234,2696235,2696236,2696237,2696238,2696239],"Weighted Pressure Plate Light":[2696480,2696481,2696482,2696483,2696484,2696485,2696486,2696487,2696488,2696489,2696490,2696491,2696492,2696493,2696494,2696495],"Wheat Block":[2696736,2696737,2696738,2696739,2696740,2696741,2696742,2696743],"White Tulip":[2697256],"Wither Rose":[2730152],"Wool":[2697504,2697505,2697506,2697507,2697508,2697509,2697510,2697511,2697512,2697513,2697514,2697515,2697516,2697517,2697518,2697519],"Xenon":[2623239],"Ytterbium":[2623496],"Yttrium":[2623753],"Zinc":[2624267],"Zirconium":[2624524],"ate!upd":[2637117],"reserved6":[2675153],"update!":[2636860]},"stateDataBits":8} \ No newline at end of file From cc77f18ff0e7f1472055d546f2fa01669d91a8da Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 25 May 2023 17:38:39 +0100 Subject: [PATCH 674/692] =?UTF-8?q?=C3=82Block:=20added=20a=20TODO=20for?= =?UTF-8?q?=20getStateId()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/block/Block.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/block/Block.php b/src/block/Block.php index 3ce2dc188..29990bd1c 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -141,6 +141,11 @@ class Block{ */ public function getStateId() : int{ $typeId = $this->getTypeId(); + //TODO: this XOR mask improves hashtable distribution, but it's only effective if the number of unique block + //type IDs is larger than the number of available state data bits. We should probably hash (e.g. using xxhash) + //the type ID to create a better mask. + //Alternatively, we could hash the whole state ID, but this is currently problematic, since we currently need + //to be able to recover the state data from the state ID because of UnknownBlock. return ($typeId << self::INTERNAL_STATE_DATA_BITS) | ($this->encodeFullState() ^ ($typeId & self::INTERNAL_STATE_DATA_MASK)); } From edafe9d21fd2b72b6baa6cb2c879abd6a263a446 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 May 2023 14:01:21 +0100 Subject: [PATCH 675/692] Entity: Rename and document isImmobile() and friends while I could implement server-side ability to disable entity movement, I don't think that's particularly useful. However, the intended function of this (disabling client sided AI) is useful, so it makes more sense to rename it to match its functionality, rather than changing its functionality to match the name. closes #3130 --- src/entity/Entity.php | 26 +++++++++++++++------ src/network/mcpe/NetworkSession.php | 4 ++-- src/world/particle/FloatingTextParticle.php | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 5fd0a433c..cb7d140da 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -170,7 +170,7 @@ abstract class Entity{ protected bool $canClimb = false; protected bool $canClimbWalls = false; - protected bool $immobile = false; + protected bool $noClientPredictions = false; protected bool $invisible = false; protected bool $silent = false; @@ -314,12 +314,24 @@ abstract class Entity{ $this->networkPropertiesDirty = true; } - public function isImmobile() : bool{ - return $this->immobile; + /** + * Returns whether clients may predict this entity's behaviour and movement. Used for things like water movement, + * burning, and movement smoothing (interpolation). + */ + public function hasNoClientPredictions() : bool{ + return $this->noClientPredictions; } - public function setImmobile(bool $value = true) : void{ - $this->immobile = $value; + /** + * Things such as movement in water, burning, etc. may be predicted by the client. This is sometimes not desirable, + * since server-side logic may differ from client-side prediction. However, things like movement smoothing + * (interpolation) are also controlled by this, so it should be used with care. + * + * Setting this flag will also disable player movement inputs, but this should not be relied on, as cheat clients + * will be able to bypass it. + */ + public function setNoClientPredictions(bool $value = true) : void{ + $this->noClientPredictions = $value; $this->networkPropertiesDirty = true; } @@ -730,7 +742,7 @@ abstract class Entity{ $wasStill = $this->lastMotion->lengthSquared() == 0.0; if($wasStill !== $still){ //TODO: hack for client-side AI interference: prevent client sided movement when motion is 0 - $this->setImmobile($still); + $this->setNoClientPredictions($still); } if($teleport || $diffPosition > 0.0001 || $diffRotation > 1.0 || (!$wasStill && $still)){ @@ -1651,7 +1663,7 @@ abstract class Entity{ $properties->setGenericFlag(EntityMetadataFlags::CAN_CLIMB, $this->canClimb); $properties->setGenericFlag(EntityMetadataFlags::CAN_SHOW_NAMETAG, $this->nameTagVisible); $properties->setGenericFlag(EntityMetadataFlags::HAS_COLLISION, true); - $properties->setGenericFlag(EntityMetadataFlags::IMMOBILE, $this->immobile); + $properties->setGenericFlag(EntityMetadataFlags::NO_AI, $this->noClientPredictions); $properties->setGenericFlag(EntityMetadataFlags::INVISIBLE, $this->invisible); $properties->setGenericFlag(EntityMetadataFlags::SILENT, $this->silent); $properties->setGenericFlag(EntityMetadataFlags::ONFIRE, $this->isOnFire()); diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 2a8505056..9053dd6b6 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -809,7 +809,7 @@ class NetworkSession{ private function beginSpawnSequence() : void{ $this->setHandler(new PreSpawnPacketHandler($this->server, $this->player, $this, $this->invManager)); - $this->player->setImmobile(); //TODO: HACK: fix client-side falling pre-spawn + $this->player->setNoClientPredictions(); //TODO: HACK: fix client-side falling pre-spawn $this->logger->debug("Waiting for chunk radius request"); } @@ -824,7 +824,7 @@ class NetworkSession{ private function onClientSpawnResponse() : void{ $this->logger->debug("Received spawn response, entering in-game phase"); - $this->player->setImmobile(false); //TODO: HACK: we set this during the spawn sequence to prevent the client sending junk movements + $this->player->setNoClientPredictions(false); //TODO: HACK: we set this during the spawn sequence to prevent the client sending junk movements $this->player->doFirstSpawn(); $this->forceAsyncCompression = false; $this->setHandler(new InGamePacketHandler($this->player, $this, $this->invManager)); diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index e8220d190..180bb4a41 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -87,7 +87,7 @@ class FloatingTextParticle implements Particle{ $name = $this->title . ($this->text !== "" ? "\n" . $this->text : ""); $actorFlags = ( - 1 << EntityMetadataFlags::IMMOBILE + 1 << EntityMetadataFlags::NO_AI ); $actorMetadata = [ EntityMetadataProperties::FLAGS => new LongMetadataProperty($actorFlags), From bdb0ed0701e4d20b9909e55d964bdcf0d5fd16dd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 May 2023 14:52:28 +0100 Subject: [PATCH 676/692] Consistently use 'mob head' terminology in the API previously, we were sometimes using 'mob head' and other times 'skull', sometimes even within the same file. --- build/generate-runtime-enum-serializers.php | 4 +-- src/block/{Skull.php => MobHead.php} | 28 +++++++-------- src/block/VanillaBlocks.php | 6 ++-- src/block/tile/{Skull.php => MobHead.php} | 36 +++++++++---------- src/block/tile/TileFactory.php | 2 +- .../utils/{SkullType.php => MobHeadType.php} | 32 ++++++++--------- .../convert/BlockObjectToStateSerializer.php | 4 +-- .../ItemSerializerDeserializerRegistrar.php | 12 +++---- src/data/runtime/RuntimeEnumDescriber.php | 4 +-- .../runtime/RuntimeEnumDeserializerTrait.php | 24 ++++++------- .../runtime/RuntimeEnumSerializerTrait.php | 24 ++++++------- .../RuntimeEnumSizeCalculatorTrait.php | 8 ++--- src/item/StringToItemParser.php | 16 ++++----- tests/phpstan/configs/actual-problems.neon | 8 ++--- .../BlockSerializerDeserializerTest.php | 6 ++-- 15 files changed, 107 insertions(+), 107 deletions(-) rename src/block/{Skull.php => MobHead.php} (85%) rename src/block/tile/{Skull.php => MobHead.php} (69%) rename src/block/utils/{SkullType.php => MobHeadType.php} (71%) diff --git a/build/generate-runtime-enum-serializers.php b/build/generate-runtime-enum-serializers.php index db1d384ca..1273e26f8 100644 --- a/build/generate-runtime-enum-serializers.php +++ b/build/generate-runtime-enum-serializers.php @@ -30,8 +30,8 @@ use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\FroglightType; use pocketmine\block\utils\LeverFacing; +use pocketmine\block\utils\MobHeadType; use pocketmine\block\utils\MushroomBlockType; -use pocketmine\block\utils\SkullType; use pocketmine\block\utils\SlabType; use pocketmine\item\MedicineType; use pocketmine\item\PotionType; @@ -150,7 +150,7 @@ $enumsUsed = [ LeverFacing::getAll(), MedicineType::getAll(), MushroomBlockType::getAll(), - SkullType::getAll(), + MobHeadType::getAll(), SlabType::getAll(), SuspiciousStewType::getAll(), PotionType::getAll() diff --git a/src/block/Skull.php b/src/block/MobHead.php similarity index 85% rename from src/block/Skull.php rename to src/block/MobHead.php index 6566da733..1b3f2d88f 100644 --- a/src/block/Skull.php +++ b/src/block/MobHead.php @@ -23,8 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\block\tile\Skull as TileSkull; -use pocketmine\block\utils\SkullType; +use pocketmine\block\tile\MobHead as TileMobHead; +use pocketmine\block\utils\MobHeadType; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; @@ -35,22 +35,22 @@ use pocketmine\world\BlockTransaction; use function assert; use function floor; -class Skull extends Flowable{ +class MobHead extends Flowable{ public const MIN_ROTATION = 0; public const MAX_ROTATION = 15; - protected SkullType $skullType; + protected MobHeadType $mobHeadType; protected int $facing = Facing::NORTH; protected int $rotation = self::MIN_ROTATION; //TODO: split this into floor skull and wall skull handling public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){ - $this->skullType = SkullType::SKELETON(); //TODO: this should be a parameter + $this->mobHeadType = MobHeadType::SKELETON(); //TODO: this should be a parameter parent::__construct($idInfo, $name, $typeInfo); } public function describeBlockItemState(RuntimeDataDescriber $w) : void{ - $w->skullType($this->skullType); + $w->mobHeadType($this->mobHeadType); } protected function describeBlockOnlyState(RuntimeDataDescriber $w) : void{ @@ -60,8 +60,8 @@ class Skull extends Flowable{ public function readStateFromWorld() : Block{ parent::readStateFromWorld(); $tile = $this->position->getWorld()->getTile($this->position); - if($tile instanceof TileSkull){ - $this->skullType = $tile->getSkullType(); + if($tile instanceof TileMobHead){ + $this->mobHeadType = $tile->getMobHeadType(); $this->rotation = $tile->getRotation(); } @@ -72,18 +72,18 @@ class Skull extends Flowable{ parent::writeStateToWorld(); //extra block properties storage hack $tile = $this->position->getWorld()->getTile($this->position); - assert($tile instanceof TileSkull); + assert($tile instanceof TileMobHead); $tile->setRotation($this->rotation); - $tile->setSkullType($this->skullType); + $tile->setMobHeadType($this->mobHeadType); } - public function getSkullType() : SkullType{ - return $this->skullType; + public function getMobHeadType() : MobHeadType{ + return $this->mobHeadType; } /** @return $this */ - public function setSkullType(SkullType $skullType) : self{ - $this->skullType = $skullType; + public function setMobHeadType(MobHeadType $mobHeadType) : self{ + $this->mobHeadType = $mobHeadType; return $this; } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index eb909ab92..ef2ad7c6e 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -48,11 +48,11 @@ use pocketmine\block\tile\Hopper as TileHopper; use pocketmine\block\tile\ItemFrame as TileItemFrame; use pocketmine\block\tile\Jukebox as TileJukebox; use pocketmine\block\tile\Lectern as TileLectern; +use pocketmine\block\tile\MobHead as TileMobHead; use pocketmine\block\tile\MonsterSpawner as TileMonsterSpawner; use pocketmine\block\tile\NormalFurnace as TileNormalFurnace; use pocketmine\block\tile\Note as TileNote; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; -use pocketmine\block\tile\Skull as TileSkull; use pocketmine\block\tile\Smoker as TileSmoker; use pocketmine\block\utils\LeavesType; use pocketmine\block\utils\SaplingType; @@ -503,7 +503,7 @@ use function mb_strtolower; * @method static ChemistryTable MATERIAL_REDUCER() * @method static Melon MELON() * @method static MelonStem MELON_STEM() - * @method static Skull MOB_HEAD() + * @method static MobHead MOB_HEAD() * @method static MonsterSpawner MONSTER_SPAWNER() * @method static Opaque MOSSY_COBBLESTONE() * @method static Slab MOSSY_COBBLESTONE_SLAB() @@ -981,7 +981,7 @@ final class VanillaBlocks{ self::register("sea_lantern", new SeaLantern(new BID(Ids::SEA_LANTERN), "Sea Lantern", new Info(new BreakInfo(0.3)))); self::register("sea_pickle", new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle", new Info(BreakInfo::instant()))); - self::register("mob_head", new Skull(new BID(Ids::MOB_HEAD, TileSkull::class), "Mob Head", new Info(new BreakInfo(1.0)))); + self::register("mob_head", new MobHead(new BID(Ids::MOB_HEAD, TileMobHead::class), "Mob Head", new Info(new BreakInfo(1.0)))); self::register("slime", new Slime(new BID(Ids::SLIME), "Slime Block", new Info(BreakInfo::instant()))); self::register("snow", new Snow(new BID(Ids::SNOW), "Snow Block", new Info(BreakInfo::shovel(0.2, ToolTier::WOOD())))); self::register("snow_layer", new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer", new Info(BreakInfo::shovel(0.1, ToolTier::WOOD())))); diff --git a/src/block/tile/Skull.php b/src/block/tile/MobHead.php similarity index 69% rename from src/block/tile/Skull.php rename to src/block/tile/MobHead.php index 92ca7af69..35a82e834 100644 --- a/src/block/tile/Skull.php +++ b/src/block/tile/MobHead.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace pocketmine\block\tile; -use pocketmine\block\utils\SkullType; +use pocketmine\block\utils\MobHeadType; use pocketmine\math\Vector3; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; @@ -31,60 +31,60 @@ use pocketmine\world\World; /** * @deprecated - * @see \pocketmine\block\Skull + * @see \pocketmine\block\MobHead */ -class Skull extends Spawnable{ +class MobHead extends Spawnable{ private const TAG_SKULL_TYPE = "SkullType"; //TAG_Byte private const TAG_ROT = "Rot"; //TAG_Byte private const TAG_MOUTH_MOVING = "MouthMoving"; //TAG_Byte private const TAG_MOUTH_TICK_COUNT = "MouthTickCount"; //TAG_Int - private SkullType $skullType; - private int $skullRotation = 0; + private MobHeadType $mobHeadType; + private int $rotation = 0; public function __construct(World $world, Vector3 $pos){ - $this->skullType = SkullType::SKELETON(); + $this->mobHeadType = MobHeadType::SKELETON(); parent::__construct($world, $pos); } public function readSaveData(CompoundTag $nbt) : void{ if(($skullTypeTag = $nbt->getTag(self::TAG_SKULL_TYPE)) instanceof ByteTag){ try{ - $this->skullType = SkullType::fromMagicNumber($skullTypeTag->getValue()); + $this->mobHeadType = MobHeadType::fromMagicNumber($skullTypeTag->getValue()); }catch(\InvalidArgumentException $e){ //bad data, drop it } } $rotation = $nbt->getByte(self::TAG_ROT, 0); if($rotation >= 0 && $rotation <= 15){ - $this->skullRotation = $rotation; + $this->rotation = $rotation; } } protected function writeSaveData(CompoundTag $nbt) : void{ - $nbt->setByte(self::TAG_SKULL_TYPE, $this->skullType->getMagicNumber()); - $nbt->setByte(self::TAG_ROT, $this->skullRotation); + $nbt->setByte(self::TAG_SKULL_TYPE, $this->mobHeadType->getMagicNumber()); + $nbt->setByte(self::TAG_ROT, $this->rotation); } - public function setSkullType(SkullType $type) : void{ - $this->skullType = $type; + public function setMobHeadType(MobHeadType $type) : void{ + $this->mobHeadType = $type; } - public function getSkullType() : SkullType{ - return $this->skullType; + public function getMobHeadType() : MobHeadType{ + return $this->mobHeadType; } public function getRotation() : int{ - return $this->skullRotation; + return $this->rotation; } public function setRotation(int $rotation) : void{ - $this->skullRotation = $rotation; + $this->rotation = $rotation; } protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ - $nbt->setByte(self::TAG_SKULL_TYPE, $this->skullType->getMagicNumber()); - $nbt->setByte(self::TAG_ROT, $this->skullRotation); + $nbt->setByte(self::TAG_SKULL_TYPE, $this->mobHeadType->getMagicNumber()); + $nbt->setByte(self::TAG_ROT, $this->rotation); } } diff --git a/src/block/tile/TileFactory.php b/src/block/tile/TileFactory.php index e59ff2ab2..b3abb1315 100644 --- a/src/block/tile/TileFactory.php +++ b/src/block/tile/TileFactory.php @@ -75,7 +75,7 @@ final class TileFactory{ $this->register(Sign::class, ["Sign", "minecraft:sign"]); $this->register(Smoker::class, ["Smoker", "minecraft:smoker"]); $this->register(SporeBlossom::class, ["SporeBlossom", "minecraft:spore_blossom"]); - $this->register(Skull::class, ["Skull", "minecraft:skull"]); + $this->register(MobHead::class, ["Skull", "minecraft:skull"]); $this->register(GlowingItemFrame::class, ["GlowItemFrame"]); //TODO: Campfire diff --git a/src/block/utils/SkullType.php b/src/block/utils/MobHeadType.php similarity index 71% rename from src/block/utils/SkullType.php rename to src/block/utils/MobHeadType.php index c2031cde3..3259a0757 100644 --- a/src/block/utils/SkullType.php +++ b/src/block/utils/MobHeadType.php @@ -31,34 +31,34 @@ use pocketmine\utils\EnumTrait; * @see build/generate-registry-annotations.php * @generate-registry-docblock * - * @method static SkullType CREEPER() - * @method static SkullType DRAGON() - * @method static SkullType PLAYER() - * @method static SkullType SKELETON() - * @method static SkullType WITHER_SKELETON() - * @method static SkullType ZOMBIE() + * @method static MobHeadType CREEPER() + * @method static MobHeadType DRAGON() + * @method static MobHeadType PLAYER() + * @method static MobHeadType SKELETON() + * @method static MobHeadType WITHER_SKELETON() + * @method static MobHeadType ZOMBIE() */ -final class SkullType{ +final class MobHeadType{ use EnumTrait { register as Enum_register; __construct as Enum___construct; } - /** @var SkullType[] */ + /** @var MobHeadType[] */ private static array $numericIdMap = []; protected static function setup() : void{ self::registerAll( - new SkullType("skeleton", "Skeleton Skull", 0), - new SkullType("wither_skeleton", "Wither Skeleton Skull", 1), - new SkullType("zombie", "Zombie Head", 2), - new SkullType("player", "Player Head", 3), - new SkullType("creeper", "Creeper Head", 4), - new SkullType("dragon", "Dragon Head", 5) + new MobHeadType("skeleton", "Skeleton Skull", 0), + new MobHeadType("wither_skeleton", "Wither Skeleton Skull", 1), + new MobHeadType("zombie", "Zombie Head", 2), + new MobHeadType("player", "Player Head", 3), + new MobHeadType("creeper", "Creeper Head", 4), + new MobHeadType("dragon", "Dragon Head", 5) ); } - protected static function register(SkullType $type) : void{ + protected static function register(MobHeadType $type) : void{ self::Enum_register($type); self::$numericIdMap[$type->getMagicNumber()] = $type; } @@ -68,7 +68,7 @@ final class SkullType{ * * @throws \InvalidArgumentException */ - public static function fromMagicNumber(int $magicNumber) : SkullType{ + public static function fromMagicNumber(int $magicNumber) : MobHeadType{ if(!isset(self::$numericIdMap[$magicNumber])){ throw new \InvalidArgumentException("Unknown skull type magic number $magicNumber"); } diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index 3680e4806..9809eb958 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -93,6 +93,7 @@ use pocketmine\block\LightningRod; use pocketmine\block\LitPumpkin; use pocketmine\block\Loom; use pocketmine\block\MelonStem; +use pocketmine\block\MobHead; use pocketmine\block\NetherPortal; use pocketmine\block\NetherVines; use pocketmine\block\NetherWartPlant; @@ -112,7 +113,6 @@ use pocketmine\block\Sapling; use pocketmine\block\SeaPickle; use pocketmine\block\SimplePillar; use pocketmine\block\SimplePressurePlate; -use pocketmine\block\Skull; use pocketmine\block\Slab; use pocketmine\block\SnowLayer; use pocketmine\block\Sponge; @@ -1148,7 +1148,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{ }); $this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE))); $this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM))); - $this->map(Blocks::MOB_HEAD(), function(Skull $block) : Writer{ + $this->map(Blocks::MOB_HEAD(), function(MobHead $block) : Writer{ return Writer::create(Ids::SKULL) ->writeFacingWithoutDown($block->getFacing()); }); diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index 99be4ea68..699c7e393 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -25,9 +25,9 @@ namespace pocketmine\data\bedrock\item; use pocketmine\block\Bed; use pocketmine\block\Block; -use pocketmine\block\Skull; +use pocketmine\block\MobHead; use pocketmine\block\utils\DyeColor; -use pocketmine\block\utils\SkullType; +use pocketmine\block\utils\MobHeadType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; @@ -444,15 +444,15 @@ final class ItemSerializerDeserializerRegistrar{ $this->map1to1BlockWithMeta( Ids::SKULL, Blocks::MOB_HEAD(), - function(Skull $block, int $meta) : void{ + function(MobHead $block, int $meta) : void{ try{ - $skullType = SkullType::fromMagicNumber($meta); + $skullType = MobHeadType::fromMagicNumber($meta); }catch(\InvalidArgumentException $e){ throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); } - $block->setSkullType($skullType); + $block->setMobHeadType($skullType); }, - fn(Skull $block) => $block->getSkullType()->getMagicNumber() + fn(MobHead $block) => $block->getMobHeadType()->getMagicNumber() ); } diff --git a/src/data/runtime/RuntimeEnumDescriber.php b/src/data/runtime/RuntimeEnumDescriber.php index dc0083e8b..643ecd301 100644 --- a/src/data/runtime/RuntimeEnumDescriber.php +++ b/src/data/runtime/RuntimeEnumDescriber.php @@ -45,12 +45,12 @@ interface RuntimeEnumDescriber{ public function medicineType(\pocketmine\item\MedicineType &$value) : void; + public function mobHeadType(\pocketmine\block\utils\MobHeadType &$value) : void; + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void; public function potionType(\pocketmine\item\PotionType &$value) : void; - public function skullType(\pocketmine\block\utils\SkullType &$value) : void; - public function slabType(\pocketmine\block\utils\SlabType &$value) : void; public function suspiciousStewType(\pocketmine\item\SuspiciousStewType &$value) : void; diff --git a/src/data/runtime/RuntimeEnumDeserializerTrait.php b/src/data/runtime/RuntimeEnumDeserializerTrait.php index 278cfc152..4ad50f06d 100644 --- a/src/data/runtime/RuntimeEnumDeserializerTrait.php +++ b/src/data/runtime/RuntimeEnumDeserializerTrait.php @@ -126,6 +126,18 @@ trait RuntimeEnumDeserializerTrait{ }; } + public function mobHeadType(\pocketmine\block\utils\MobHeadType &$value) : void{ + $value = match($this->readInt(3)){ + 0 => \pocketmine\block\utils\MobHeadType::CREEPER(), + 1 => \pocketmine\block\utils\MobHeadType::DRAGON(), + 2 => \pocketmine\block\utils\MobHeadType::PLAYER(), + 3 => \pocketmine\block\utils\MobHeadType::SKELETON(), + 4 => \pocketmine\block\utils\MobHeadType::WITHER_SKELETON(), + 5 => \pocketmine\block\utils\MobHeadType::ZOMBIE(), + default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for MobHeadType") + }; + } + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ $value = match($this->readInt(4)){ 0 => \pocketmine\block\utils\MushroomBlockType::ALL_CAP(), @@ -191,18 +203,6 @@ trait RuntimeEnumDeserializerTrait{ }; } - public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ - $value = match($this->readInt(3)){ - 0 => \pocketmine\block\utils\SkullType::CREEPER(), - 1 => \pocketmine\block\utils\SkullType::DRAGON(), - 2 => \pocketmine\block\utils\SkullType::PLAYER(), - 3 => \pocketmine\block\utils\SkullType::SKELETON(), - 4 => \pocketmine\block\utils\SkullType::WITHER_SKELETON(), - 5 => \pocketmine\block\utils\SkullType::ZOMBIE(), - default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for SkullType") - }; - } - public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ $value = match($this->readInt(2)){ 0 => \pocketmine\block\utils\SlabType::BOTTOM(), diff --git a/src/data/runtime/RuntimeEnumSerializerTrait.php b/src/data/runtime/RuntimeEnumSerializerTrait.php index e3b8a6d2c..805723ac5 100644 --- a/src/data/runtime/RuntimeEnumSerializerTrait.php +++ b/src/data/runtime/RuntimeEnumSerializerTrait.php @@ -126,6 +126,18 @@ trait RuntimeEnumSerializerTrait{ }); } + public function mobHeadType(\pocketmine\block\utils\MobHeadType &$value) : void{ + $this->writeInt(3, match($value){ + \pocketmine\block\utils\MobHeadType::CREEPER() => 0, + \pocketmine\block\utils\MobHeadType::DRAGON() => 1, + \pocketmine\block\utils\MobHeadType::PLAYER() => 2, + \pocketmine\block\utils\MobHeadType::SKELETON() => 3, + \pocketmine\block\utils\MobHeadType::WITHER_SKELETON() => 4, + \pocketmine\block\utils\MobHeadType::ZOMBIE() => 5, + default => throw new \pocketmine\utils\AssumptionFailedError("All MobHeadType cases should be covered") + }); + } + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ $this->writeInt(4, match($value){ \pocketmine\block\utils\MushroomBlockType::ALL_CAP() => 0, @@ -191,18 +203,6 @@ trait RuntimeEnumSerializerTrait{ }); } - public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ - $this->writeInt(3, match($value){ - \pocketmine\block\utils\SkullType::CREEPER() => 0, - \pocketmine\block\utils\SkullType::DRAGON() => 1, - \pocketmine\block\utils\SkullType::PLAYER() => 2, - \pocketmine\block\utils\SkullType::SKELETON() => 3, - \pocketmine\block\utils\SkullType::WITHER_SKELETON() => 4, - \pocketmine\block\utils\SkullType::ZOMBIE() => 5, - default => throw new \pocketmine\utils\AssumptionFailedError("All SkullType cases should be covered") - }); - } - public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ $this->writeInt(2, match($value){ \pocketmine\block\utils\SlabType::BOTTOM() => 0, diff --git a/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php b/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php index 25defa2c0..3c8d189e1 100644 --- a/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php +++ b/src/data/runtime/RuntimeEnumSizeCalculatorTrait.php @@ -63,6 +63,10 @@ trait RuntimeEnumSizeCalculatorTrait{ $this->addBits(2); } + public function mobHeadType(\pocketmine\block\utils\MobHeadType &$value) : void{ + $this->addBits(3); + } + public function mushroomBlockType(\pocketmine\block\utils\MushroomBlockType &$value) : void{ $this->addBits(4); } @@ -71,10 +75,6 @@ trait RuntimeEnumSizeCalculatorTrait{ $this->addBits(6); } - public function skullType(\pocketmine\block\utils\SkullType &$value) : void{ - $this->addBits(3); - } - public function slabType(\pocketmine\block\utils\SlabType &$value) : void{ $this->addBits(2); } diff --git a/src/item/StringToItemParser.php b/src/item/StringToItemParser.php index a6aea2ae2..cd5b6d55a 100644 --- a/src/item/StringToItemParser.php +++ b/src/item/StringToItemParser.php @@ -30,7 +30,7 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\DirtType; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\FroglightType; -use pocketmine\block\utils\SkullType; +use pocketmine\block\utils\MobHeadType; use pocketmine\block\utils\SlabType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\item\VanillaItems as Items; @@ -264,7 +264,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("cracked_polished_blackstone_bricks", fn() => Blocks::CRACKED_POLISHED_BLACKSTONE_BRICKS()); $result->registerBlock("cracked_stone_bricks", fn() => Blocks::CRACKED_STONE_BRICKS()); $result->registerBlock("crafting_table", fn() => Blocks::CRAFTING_TABLE()); - $result->registerBlock("creeper_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::CREEPER())); + $result->registerBlock("creeper_head", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::CREEPER())); $result->registerBlock("crimson_button", fn() => Blocks::CRIMSON_BUTTON()); $result->registerBlock("crimson_door", fn() => Blocks::CRIMSON_DOOR()); $result->registerBlock("crimson_fence", fn() => Blocks::CRIMSON_FENCE()); @@ -356,7 +356,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("double_wooden_slab", fn() => Blocks::OAK_SLAB()->setSlabType(SlabType::DOUBLE())); $result->registerBlock("double_wooden_slabs", fn() => Blocks::OAK_SLAB()->setSlabType(SlabType::DOUBLE())); $result->registerBlock("dragon_egg", fn() => Blocks::DRAGON_EGG()); - $result->registerBlock("dragon_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::DRAGON())); + $result->registerBlock("dragon_head", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::DRAGON())); $result->registerBlock("dried_kelp_block", fn() => Blocks::DRIED_KELP()); $result->registerBlock("dyed_shulker_box", fn() => Blocks::DYED_SHULKER_BOX()); $result->registerBlock("element_0", fn() => Blocks::ELEMENT_ZERO()); @@ -844,7 +844,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("pink_tulip", fn() => Blocks::PINK_TULIP()); $result->registerBlock("plank", fn() => Blocks::OAK_PLANKS()); $result->registerBlock("planks", fn() => Blocks::OAK_PLANKS()); - $result->registerBlock("player_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::PLAYER())); + $result->registerBlock("player_head", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::PLAYER())); $result->registerBlock("podzol", fn() => Blocks::PODZOL()); $result->registerBlock("polished_andesite", fn() => Blocks::POLISHED_ANDESITE()); $result->registerBlock("polished_andesite_slab", fn() => Blocks::POLISHED_ANDESITE_SLAB()); @@ -950,8 +950,8 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("shulker_box", fn() => Blocks::SHULKER_BOX()); $result->registerBlock("sign", fn() => Blocks::OAK_SIGN()); $result->registerBlock("sign_post", fn() => Blocks::OAK_SIGN()); - $result->registerBlock("skeleton_skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::SKELETON())); - $result->registerBlock("skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::SKELETON())); + $result->registerBlock("skeleton_skull", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::SKELETON())); + $result->registerBlock("skull", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::SKELETON())); $result->registerBlock("skull_block", fn() => Blocks::MOB_HEAD()); $result->registerBlock("slab", fn() => Blocks::SMOOTH_STONE_SLAB()); $result->registerBlock("slabs", fn() => Blocks::SMOOTH_STONE_SLAB()); @@ -1100,7 +1100,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("wheat_block", fn() => Blocks::WHEAT()); $result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP()); $result->registerBlock("wither_rose", fn() => Blocks::WITHER_ROSE()); - $result->registerBlock("wither_skeleton_skull", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::WITHER_SKELETON())); + $result->registerBlock("wither_skeleton_skull", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::WITHER_SKELETON())); $result->registerBlock("wood", fn() => Blocks::OAK_LOG()->setStripped(false)); $result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG()->setStripped(false)); $result->registerBlock("wood_door_block", fn() => Blocks::OAK_DOOR()); @@ -1120,7 +1120,7 @@ final class StringToItemParser extends StringToTParser{ $result->registerBlock("wool", fn() => Blocks::WOOL()); $result->registerBlock("workbench", fn() => Blocks::CRAFTING_TABLE()); $result->registerBlock("yellow_flower", fn() => Blocks::DANDELION()); - $result->registerBlock("zombie_head", fn() => Blocks::MOB_HEAD()->setSkullType(SkullType::ZOMBIE())); + $result->registerBlock("zombie_head", fn() => Blocks::MOB_HEAD()->setMobHeadType(MobHeadType::ZOMBIE())); } private static function registerDynamicItems(self $result) : void{ diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index b3e0b4496..c100bce31 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -426,14 +426,14 @@ parameters: path: ../../../src/block/tile/Chest.php - - message: "#^Constant pocketmine\\\\block\\\\tile\\\\Skull\\:\\:TAG_MOUTH_MOVING is unused\\.$#" + message: "#^Constant pocketmine\\\\block\\\\tile\\\\MobHead\\:\\:TAG_MOUTH_MOVING is unused\\.$#" count: 1 - path: ../../../src/block/tile/Skull.php + path: ../../../src/block/tile/MobHead.php - - message: "#^Constant pocketmine\\\\block\\\\tile\\\\Skull\\:\\:TAG_MOUTH_TICK_COUNT is unused\\.$#" + message: "#^Constant pocketmine\\\\block\\\\tile\\\\MobHead\\:\\:TAG_MOUTH_TICK_COUNT is unused\\.$#" count: 1 - path: ../../../src/block/tile/Skull.php + path: ../../../src/block/tile/MobHead.php - message: "#^Parameter \\#2 \\$value of method pocketmine\\\\nbt\\\\tag\\\\CompoundTag\\:\\:setInt\\(\\) expects int, float\\|int given\\.$#" diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index 46f5922b6..6db39bb48 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -28,8 +28,8 @@ use pocketmine\block\BaseBanner; use pocketmine\block\Bed; use pocketmine\block\BlockTypeIds; use pocketmine\block\CaveVines; +use pocketmine\block\MobHead; use pocketmine\block\RuntimeBlockStateRegistry; -use pocketmine\block\Skull; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\data\bedrock\block\BlockStateSerializeException; use function print_r; @@ -72,8 +72,8 @@ final class BlockSerializerDeserializerTest extends TestCase{ ($block instanceof Bed && $newBlock instanceof Bed) ){ $newBlock->setColor($block->getColor()); - }elseif($block instanceof Skull && $newBlock instanceof Skull){ - $newBlock->setSkullType($block->getSkullType()); + }elseif($block instanceof MobHead && $newBlock instanceof MobHead){ + $newBlock->setMobHeadType($block->getMobHeadType()); }elseif($block instanceof CaveVines && $newBlock instanceof CaveVines && !$block->hasBerries()){ $newBlock->setHead($block->isHead()); } From fddab29e87981b53a35a5238cd2a328b1d18a294 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 May 2023 15:47:12 +0100 Subject: [PATCH 677/692] Move mob head and note instrument save IDs into pocketmine\data\bedrock to be consistent, these shouldn't be exposed in the API like this... I'm not very happy with the whole 'type ID map' paradigm (particularly its lack of static analysis guarantees), but the most important thing right now is to get this stuff out of the API so that plugin devs don't try and abuse it. We're not going to change the whole system days before PM5 release. --- src/block/tile/MobHead.php | 14 ++-- src/block/utils/MobHeadType.php | 40 ++--------- src/data/bedrock/MobHeadTypeIdMap.php | 68 +++++++++++++++++++ src/data/bedrock/NoteInstrumentIdMap.php | 67 ++++++++++++++++++ .../ItemSerializerDeserializerRegistrar.php | 11 +-- src/world/sound/NoteInstrument.php | 25 ++----- src/world/sound/NoteSound.php | 4 +- 7 files changed, 162 insertions(+), 67 deletions(-) create mode 100644 src/data/bedrock/MobHeadTypeIdMap.php create mode 100644 src/data/bedrock/NoteInstrumentIdMap.php diff --git a/src/block/tile/MobHead.php b/src/block/tile/MobHead.php index 35a82e834..70a199bf6 100644 --- a/src/block/tile/MobHead.php +++ b/src/block/tile/MobHead.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace pocketmine\block\tile; use pocketmine\block\utils\MobHeadType; +use pocketmine\data\bedrock\MobHeadTypeIdMap; +use pocketmine\data\SavedDataLoadingException; use pocketmine\math\Vector3; use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; @@ -50,11 +52,11 @@ class MobHead extends Spawnable{ public function readSaveData(CompoundTag $nbt) : void{ if(($skullTypeTag = $nbt->getTag(self::TAG_SKULL_TYPE)) instanceof ByteTag){ - try{ - $this->mobHeadType = MobHeadType::fromMagicNumber($skullTypeTag->getValue()); - }catch(\InvalidArgumentException $e){ - //bad data, drop it + $mobHeadType = MobHeadTypeIdMap::getInstance()->fromId($skullTypeTag->getValue()); + if($mobHeadType === null){ + throw new SavedDataLoadingException("Invalid skull type tag value " . $skullTypeTag->getValue()); } + $this->mobHeadType = $mobHeadType; } $rotation = $nbt->getByte(self::TAG_ROT, 0); if($rotation >= 0 && $rotation <= 15){ @@ -63,7 +65,7 @@ class MobHead extends Spawnable{ } protected function writeSaveData(CompoundTag $nbt) : void{ - $nbt->setByte(self::TAG_SKULL_TYPE, $this->mobHeadType->getMagicNumber()); + $nbt->setByte(self::TAG_SKULL_TYPE, MobHeadTypeIdMap::getInstance()->toId($this->mobHeadType)); $nbt->setByte(self::TAG_ROT, $this->rotation); } @@ -84,7 +86,7 @@ class MobHead extends Spawnable{ } protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ - $nbt->setByte(self::TAG_SKULL_TYPE, $this->mobHeadType->getMagicNumber()); + $nbt->setByte(self::TAG_SKULL_TYPE, MobHeadTypeIdMap::getInstance()->toId($this->mobHeadType)); $nbt->setByte(self::TAG_ROT, $this->rotation); } } diff --git a/src/block/utils/MobHeadType.php b/src/block/utils/MobHeadType.php index 3259a0757..45d31e9bb 100644 --- a/src/block/utils/MobHeadType.php +++ b/src/block/utils/MobHeadType.php @@ -40,45 +40,23 @@ use pocketmine\utils\EnumTrait; */ final class MobHeadType{ use EnumTrait { - register as Enum_register; __construct as Enum___construct; } - /** @var MobHeadType[] */ - private static array $numericIdMap = []; - protected static function setup() : void{ self::registerAll( - new MobHeadType("skeleton", "Skeleton Skull", 0), - new MobHeadType("wither_skeleton", "Wither Skeleton Skull", 1), - new MobHeadType("zombie", "Zombie Head", 2), - new MobHeadType("player", "Player Head", 3), - new MobHeadType("creeper", "Creeper Head", 4), - new MobHeadType("dragon", "Dragon Head", 5) + new MobHeadType("skeleton", "Skeleton Skull"), + new MobHeadType("wither_skeleton", "Wither Skeleton Skull"), + new MobHeadType("zombie", "Zombie Head"), + new MobHeadType("player", "Player Head"), + new MobHeadType("creeper", "Creeper Head"), + new MobHeadType("dragon", "Dragon Head") ); } - protected static function register(MobHeadType $type) : void{ - self::Enum_register($type); - self::$numericIdMap[$type->getMagicNumber()] = $type; - } - - /** - * @internal - * - * @throws \InvalidArgumentException - */ - public static function fromMagicNumber(int $magicNumber) : MobHeadType{ - if(!isset(self::$numericIdMap[$magicNumber])){ - throw new \InvalidArgumentException("Unknown skull type magic number $magicNumber"); - } - return self::$numericIdMap[$magicNumber]; - } - private function __construct( string $enumName, - private string $displayName, - private int $magicNumber + private string $displayName ){ $this->Enum___construct($enumName); } @@ -86,8 +64,4 @@ final class MobHeadType{ public function getDisplayName() : string{ return $this->displayName; } - - public function getMagicNumber() : int{ - return $this->magicNumber; - } } diff --git a/src/data/bedrock/MobHeadTypeIdMap.php b/src/data/bedrock/MobHeadTypeIdMap.php new file mode 100644 index 000000000..9b9fe2c06 --- /dev/null +++ b/src/data/bedrock/MobHeadTypeIdMap.php @@ -0,0 +1,68 @@ + + */ + private array $idToEnum = []; + + /** + * @var int[] + * @phpstan-var array + */ + private array $enumToId = []; + + private function __construct(){ + $this->register(0, MobHeadType::SKELETON()); + $this->register(1, MobHeadType::WITHER_SKELETON()); + $this->register(2, MobHeadType::ZOMBIE()); + $this->register(3, MobHeadType::PLAYER()); + $this->register(4, MobHeadType::CREEPER()); + $this->register(5, MobHeadType::DRAGON()); + } + + private function register(int $id, MobHeadType $type) : void{ + $this->idToEnum[$id] = $type; + $this->enumToId[$type->id()] = $id; + } + + public function fromId(int $id) : ?MobHeadType{ + return $this->idToEnum[$id] ?? null; + } + + public function toId(MobHeadType $type) : int{ + if(!isset($this->enumToId[$type->id()])){ + throw new \InvalidArgumentException("Type does not have a mapped ID"); + } + return $this->enumToId[$type->id()]; + } +} diff --git a/src/data/bedrock/NoteInstrumentIdMap.php b/src/data/bedrock/NoteInstrumentIdMap.php new file mode 100644 index 000000000..b9a647053 --- /dev/null +++ b/src/data/bedrock/NoteInstrumentIdMap.php @@ -0,0 +1,67 @@ + + */ + private array $idToEnum = []; + + /** + * @var int[] + * @phpstan-var array + */ + private array $enumToId = []; + + private function __construct(){ + $this->register(0, NoteInstrument::PIANO()); + $this->register(1, NoteInstrument::BASS_DRUM()); + $this->register(2, NoteInstrument::SNARE()); + $this->register(3, NoteInstrument::CLICKS_AND_STICKS()); + $this->register(4, NoteInstrument::DOUBLE_BASS()); + } + + private function register(int $id, NoteInstrument $instrument) : void{ + $this->idToEnum[$id] = $instrument; + $this->enumToId[$instrument->id()] = $id; + } + + public function fromId(int $id) : ?NoteInstrument{ + return $this->idToEnum[$id] ?? null; + } + + public function toId(NoteInstrument $instrument) : int{ + if(!isset($this->enumToId[$instrument->id()])){ + throw new \InvalidArgumentException("Type does not have a mapped ID"); + } + return $this->enumToId[$instrument->id()]; + } +} diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index 699c7e393..7e2e3bad0 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -27,13 +27,13 @@ use pocketmine\block\Bed; use pocketmine\block\Block; use pocketmine\block\MobHead; use pocketmine\block\utils\DyeColor; -use pocketmine\block\utils\MobHeadType; use pocketmine\block\VanillaBlocks as Blocks; use pocketmine\data\bedrock\CompoundTypeIds; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\data\bedrock\item\ItemTypeNames as Ids; use pocketmine\data\bedrock\item\SavedItemData as Data; use pocketmine\data\bedrock\MedicineTypeIdMap; +use pocketmine\data\bedrock\MobHeadTypeIdMap; use pocketmine\data\bedrock\PotionTypeIdMap; use pocketmine\data\bedrock\SuspiciousStewTypeIdMap; use pocketmine\item\Banner; @@ -445,14 +445,9 @@ final class ItemSerializerDeserializerRegistrar{ Ids::SKULL, Blocks::MOB_HEAD(), function(MobHead $block, int $meta) : void{ - try{ - $skullType = MobHeadType::fromMagicNumber($meta); - }catch(\InvalidArgumentException $e){ - throw new ItemTypeDeserializeException($e->getMessage(), 0, $e); - } - $block->setMobHeadType($skullType); + $block->setMobHeadType(MobHeadTypeIdMap::getInstance()->fromId($meta) ?? throw new ItemTypeDeserializeException("Unknown mob head type ID $meta")); }, - fn(MobHead $block) => $block->getMobHeadType()->getMagicNumber() + fn(MobHead $block) => MobHeadTypeIdMap::getInstance()->toId($block->getMobHeadType()) ); } diff --git a/src/world/sound/NoteInstrument.php b/src/world/sound/NoteInstrument.php index 06053c566..824f9e3c4 100644 --- a/src/world/sound/NoteInstrument.php +++ b/src/world/sound/NoteInstrument.php @@ -38,28 +38,15 @@ use pocketmine\utils\EnumTrait; * @method static NoteInstrument SNARE() */ final class NoteInstrument{ - use EnumTrait { - __construct as Enum___construct; - } + use EnumTrait; protected static function setup() : void{ self::registerAll( - new self("piano", 0), - new self("bass_drum", 1), - new self("snare", 2), - new self("clicks_and_sticks", 3), - new self("double_bass", 4) + new self("piano"), + new self("bass_drum"), + new self("snare"), + new self("clicks_and_sticks"), + new self("double_bass") ); } - - private function __construct( - string $name, - private int $magicNumber - ){ - $this->Enum___construct($name); - } - - public function getMagicNumber() : int{ - return $this->magicNumber; - } } diff --git a/src/world/sound/NoteSound.php b/src/world/sound/NoteSound.php index b0459bdbe..608256709 100644 --- a/src/world/sound/NoteSound.php +++ b/src/world/sound/NoteSound.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\world\sound; +use pocketmine\data\bedrock\NoteInstrumentIdMap; use pocketmine\math\Vector3; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\types\LevelSoundEvent; @@ -38,6 +39,7 @@ class NoteSound implements Sound{ } public function encode(Vector3 $pos) : array{ - return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::NOTE, $pos, false, ($this->instrument->getMagicNumber() << 8) | $this->note)]; + $instrumentId = NoteInstrumentIdMap::getInstance()->toId($this->instrument); + return [LevelSoundEventPacket::nonActorSound(LevelSoundEvent::NOTE, $pos, false, ($instrumentId << 8) | $this->note)]; } } From 06b0fa4d67654926b478996b4643d2c3040ce1fa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 May 2023 15:47:35 +0100 Subject: [PATCH 678/692] Fix PHPStan --- tests/phpstan/configs/actual-problems.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index c100bce31..6f43a9972 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -621,7 +621,7 @@ parameters: path: ../../../src/network/mcpe/NetworkSession.php - - message: "#^Cannot call method setImmobile\\(\\) on pocketmine\\\\player\\\\Player\\|null\\.$#" + message: "#^Cannot call method setNoClientPredictions\\(\\) on pocketmine\\\\player\\\\Player\\|null\\.$#" count: 2 path: ../../../src/network/mcpe/NetworkSession.php From b8ba2d03ba3ec954d948466b471fe92afadf5df1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 May 2023 16:58:06 +0100 Subject: [PATCH 679/692] Added new note instruments up to 1.19 1.20 adds extra ones for each type of mob head, but we're not supporting 1.20 yet. --- src/data/bedrock/NoteInstrumentIdMap.php | 11 +++++++++++ src/world/sound/NoteInstrument.php | 24 +++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/data/bedrock/NoteInstrumentIdMap.php b/src/data/bedrock/NoteInstrumentIdMap.php index b9a647053..0b8a43735 100644 --- a/src/data/bedrock/NoteInstrumentIdMap.php +++ b/src/data/bedrock/NoteInstrumentIdMap.php @@ -47,6 +47,17 @@ final class NoteInstrumentIdMap{ $this->register(2, NoteInstrument::SNARE()); $this->register(3, NoteInstrument::CLICKS_AND_STICKS()); $this->register(4, NoteInstrument::DOUBLE_BASS()); + $this->register(5, NoteInstrument::BELL()); + $this->register(6, NoteInstrument::FLUTE()); + $this->register(7, NoteInstrument::CHIME()); + $this->register(8, NoteInstrument::GUITAR()); + $this->register(9, NoteInstrument::XYLOPHONE()); + $this->register(10, NoteInstrument::IRON_XYLOPHONE()); + $this->register(11, NoteInstrument::COW_BELL()); + $this->register(12, NoteInstrument::DIDGERIDOO()); + $this->register(13, NoteInstrument::BIT()); + $this->register(14, NoteInstrument::BANJO()); + $this->register(15, NoteInstrument::PLING()); } private function register(int $id, NoteInstrument $instrument) : void{ diff --git a/src/world/sound/NoteInstrument.php b/src/world/sound/NoteInstrument.php index 824f9e3c4..87e5d496d 100644 --- a/src/world/sound/NoteInstrument.php +++ b/src/world/sound/NoteInstrument.php @@ -31,11 +31,22 @@ use pocketmine\utils\EnumTrait; * @see build/generate-registry-annotations.php * @generate-registry-docblock * + * @method static NoteInstrument BANJO() * @method static NoteInstrument BASS_DRUM() + * @method static NoteInstrument BELL() + * @method static NoteInstrument BIT() + * @method static NoteInstrument CHIME() * @method static NoteInstrument CLICKS_AND_STICKS() + * @method static NoteInstrument COW_BELL() + * @method static NoteInstrument DIDGERIDOO() * @method static NoteInstrument DOUBLE_BASS() + * @method static NoteInstrument FLUTE() + * @method static NoteInstrument GUITAR() + * @method static NoteInstrument IRON_XYLOPHONE() * @method static NoteInstrument PIANO() + * @method static NoteInstrument PLING() * @method static NoteInstrument SNARE() + * @method static NoteInstrument XYLOPHONE() */ final class NoteInstrument{ use EnumTrait; @@ -46,7 +57,18 @@ final class NoteInstrument{ new self("bass_drum"), new self("snare"), new self("clicks_and_sticks"), - new self("double_bass") + new self("double_bass"), + new self("bell"), + new self("flute"), + new self("chime"), + new self("guitar"), + new self("xylophone"), + new self("iron_xylophone"), + new self("cow_bell"), + new self("didgeridoo"), + new self("bit"), + new self("banjo"), + new self("pling") ); } } From 473c062b401a6134e5ded0dae498c751f84a7643 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 May 2023 17:28:36 +0100 Subject: [PATCH 680/692] Improve documentation for BlockTypeIds and ItemTypeIds --- src/block/BlockTypeIds.php | 11 +++++++---- src/item/ItemTypeIds.php | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/block/BlockTypeIds.php b/src/block/BlockTypeIds.php index 576d84d5e..5a96485ed 100644 --- a/src/block/BlockTypeIds.php +++ b/src/block/BlockTypeIds.php @@ -24,11 +24,14 @@ declare(strict_types=1); namespace pocketmine\block; /** - * Enum of all the block runtime IDs used by PocketMine-MP. These IDs are specific to PocketMine-MP and have no - * relevance to any Minecraft vanilla things. + * Every block in {@link VanillaBlocks} has a corresponding constant in this class. These constants can be used to + * identify and compare block types efficiently using {@link Block::getTypeId()}. * - * WARNING: DO NOT STORE THESE IDS. They can and will change without warning. - * They should ONLY be used to IDENTIFY blocks at runtime. + * Type ID is also used internally as part of block state ID, which is used to store blocks and their simple properties + * in a memory-efficient way in chunks at runtime. + * + * WARNING: These are NOT a replacement for Minecraft legacy IDs. Do **NOT** hardcode their values, or store them in + * configs or databases. They will change without warning. */ final class BlockTypeIds{ diff --git a/src/item/ItemTypeIds.php b/src/item/ItemTypeIds.php index a7b4611ef..2e6fef995 100644 --- a/src/item/ItemTypeIds.php +++ b/src/item/ItemTypeIds.php @@ -24,11 +24,11 @@ declare(strict_types=1); namespace pocketmine\item; /** - * Enum of all the item runtime IDs used by PocketMine-MP. These IDs are specific to PocketMine-MP and have no - * relevance to any Minecraft vanilla things. + * Every item in {@link VanillaItems} has a corresponding constant in this class. These constants can be used to + * identify and compare item types efficiently using {@link Item::getTypeId()}. * - * WARNING: DO NOT STORE THESE IDS. They can and will change without warning. - * They should ONLY be used to IDENTIFY items at runtime. + * WARNING: These are NOT a replacement for Minecraft legacy IDs. Do **NOT** hardcode their values, or store them in + * configs or databases. They will change without warning. */ final class ItemTypeIds{ From 9baf59702bf63453d071c92150823e1a0683d025 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 May 2023 18:00:54 +0100 Subject: [PATCH 681/692] Stop using insecure UUIDs from non-XBL players closes #4076 I opted for the minimal approach of replacing only UUIDs for non-XBL players, since most servers are using XBL anyway (as they should). --- .../mcpe/handler/LoginPacketHandler.php | 2 +- src/player/PlayerInfo.php | 20 ++++++++++++++++++- src/player/XboxLivePlayerInfo.php | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index a8c3d4d62..e738323e4 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -95,7 +95,7 @@ class LoginPacketHandler extends PacketHandler{ }else{ $playerInfo = new PlayerInfo( $extraData->displayName, - $uuid, + null, //we can't trust UUIDs of non-XBL players - replace this with a server-generated UUID $skin, $clientData->LanguageCode, (array) $clientData diff --git a/src/player/PlayerInfo.php b/src/player/PlayerInfo.php index 966993435..82736f0f8 100644 --- a/src/player/PlayerInfo.php +++ b/src/player/PlayerInfo.php @@ -25,24 +25,42 @@ namespace pocketmine\player; use pocketmine\entity\Skin; use pocketmine\utils\TextFormat; +use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; /** * Encapsulates data needed to create a player. */ class PlayerInfo{ + /** + * Namespace for server-generated UUIDs for unauthenticated (non-XBL) players. + * This must not be changed. + */ + private const UNAUTHENTICATED_PLAYER_UUID_NS = '6a6424c0-a26f-43b7-8e72-4176d051748d'; + + private UuidInterface $uuid; /** * @param mixed[] $extraData * @phpstan-param array $extraData */ public function __construct( private string $username, - private UuidInterface $uuid, + ?UuidInterface $uuid, private Skin $skin, private string $locale, private array $extraData = [] ){ $this->username = TextFormat::clean($username); + $this->uuid = $uuid ?? self::generateServerAuthoritativeUuid($this->username); + } + + /** + * Generates a UUID based on the player's username. This is used for any non-authenticated player, as we can't + * trust UUIDs sent by unauthenticated players. + */ + public static function generateServerAuthoritativeUuid(string $username) : UuidInterface{ + //TODO: should we be cleaning the username here? + return Uuid::uuid5(self::UNAUTHENTICATED_PLAYER_UUID_NS, TextFormat::clean($username)); } public function getUsername() : string{ diff --git a/src/player/XboxLivePlayerInfo.php b/src/player/XboxLivePlayerInfo.php index 8a17ee744..1d2bdd0e0 100644 --- a/src/player/XboxLivePlayerInfo.php +++ b/src/player/XboxLivePlayerInfo.php @@ -48,7 +48,7 @@ final class XboxLivePlayerInfo extends PlayerInfo{ public function withoutXboxData() : PlayerInfo{ return new PlayerInfo( $this->getUsername(), - $this->getUuid(), + null, //we can't trust UUIDs of non-XBL players - replace this with a server-generated UUID $this->getSkin(), $this->getLocale(), $this->getExtraData() From 7f1550ef0466571fbfd6193a771f4396e488d786 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 27 May 2023 18:10:55 +0100 Subject: [PATCH 682/692] Revert "Stop using insecure UUIDs from non-XBL players" This reverts commit 9baf59702bf63453d071c92150823e1a0683d025. I forgot this is also needed for the player list, and for skin updates to work ... this will need to be revisited --- .../mcpe/handler/LoginPacketHandler.php | 2 +- src/player/PlayerInfo.php | 20 +------------------ src/player/XboxLivePlayerInfo.php | 2 +- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/src/network/mcpe/handler/LoginPacketHandler.php b/src/network/mcpe/handler/LoginPacketHandler.php index e738323e4..a8c3d4d62 100644 --- a/src/network/mcpe/handler/LoginPacketHandler.php +++ b/src/network/mcpe/handler/LoginPacketHandler.php @@ -95,7 +95,7 @@ class LoginPacketHandler extends PacketHandler{ }else{ $playerInfo = new PlayerInfo( $extraData->displayName, - null, //we can't trust UUIDs of non-XBL players - replace this with a server-generated UUID + $uuid, $skin, $clientData->LanguageCode, (array) $clientData diff --git a/src/player/PlayerInfo.php b/src/player/PlayerInfo.php index 82736f0f8..966993435 100644 --- a/src/player/PlayerInfo.php +++ b/src/player/PlayerInfo.php @@ -25,42 +25,24 @@ namespace pocketmine\player; use pocketmine\entity\Skin; use pocketmine\utils\TextFormat; -use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; /** * Encapsulates data needed to create a player. */ class PlayerInfo{ - /** - * Namespace for server-generated UUIDs for unauthenticated (non-XBL) players. - * This must not be changed. - */ - private const UNAUTHENTICATED_PLAYER_UUID_NS = '6a6424c0-a26f-43b7-8e72-4176d051748d'; - - private UuidInterface $uuid; /** * @param mixed[] $extraData * @phpstan-param array $extraData */ public function __construct( private string $username, - ?UuidInterface $uuid, + private UuidInterface $uuid, private Skin $skin, private string $locale, private array $extraData = [] ){ $this->username = TextFormat::clean($username); - $this->uuid = $uuid ?? self::generateServerAuthoritativeUuid($this->username); - } - - /** - * Generates a UUID based on the player's username. This is used for any non-authenticated player, as we can't - * trust UUIDs sent by unauthenticated players. - */ - public static function generateServerAuthoritativeUuid(string $username) : UuidInterface{ - //TODO: should we be cleaning the username here? - return Uuid::uuid5(self::UNAUTHENTICATED_PLAYER_UUID_NS, TextFormat::clean($username)); } public function getUsername() : string{ diff --git a/src/player/XboxLivePlayerInfo.php b/src/player/XboxLivePlayerInfo.php index 1d2bdd0e0..8a17ee744 100644 --- a/src/player/XboxLivePlayerInfo.php +++ b/src/player/XboxLivePlayerInfo.php @@ -48,7 +48,7 @@ final class XboxLivePlayerInfo extends PlayerInfo{ public function withoutXboxData() : PlayerInfo{ return new PlayerInfo( $this->getUsername(), - null, //we can't trust UUIDs of non-XBL players - replace this with a server-generated UUID + $this->getUuid(), $this->getSkin(), $this->getLocale(), $this->getExtraData() From f5a1a0c9cbe7f2d815069cd43a86bc25f2a60d02 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 16:32:24 +0100 Subject: [PATCH 683/692] =?UTF-8?q?=C3=82Insert=20PM=20data=20version=20in?= =?UTF-8?q?to=20blockstates,=20chunks,=20entities,=20tiles=20and=20level.d?= =?UTF-8?q?at=20this=20information=20will=20allow=20us=20to=20correct=20fo?= =?UTF-8?q?r=20any=20bugs=20introduced=20by=20past=20versions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit however, we still need to propagate this information to permit actually using it when loading data. --- src/VersionInfo.php | 15 +++++++++++++++ src/block/tile/Tile.php | 4 +++- src/data/bedrock/block/BlockStateData.php | 7 +++++-- src/data/bedrock/item/SavedItemData.php | 2 ++ .../bedrock/item/upgrade/ItemDataUpgrader.php | 1 + src/entity/Entity.php | 3 +++ src/world/format/io/data/BedrockWorldData.php | 2 ++ src/world/format/io/data/JavaWorldData.php | 3 +++ src/world/format/io/leveldb/ChunkDataKey.php | 4 ++++ src/world/format/io/leveldb/LevelDB.php | 4 ++++ 10 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 7ac6ec3f9..39cb18bc5 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -35,6 +35,21 @@ final class VersionInfo{ public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "beta"; + /** + * PocketMine-MP-specific version ID for world data. Used to determine what fixes need to be applied to old world + * data (e.g. stuff saved wrongly by past versions). + * This version supplements the Minecraft vanilla world version. + * + * This should be bumped if any **non-Mojang** BC-breaking change or bug fix is made to world save data of any kind + * (entities, tiles, blocks, biomes etc.). For example, if PM accidentally saved a block with its facing value + * swapped, we would bump this, but not if Mojang did the same change. + */ + public const WORLD_DATA_VERSION = 1; + /** + * Name of the NBT tag used to store the world data version. + */ + public const TAG_WORLD_DATA_VERSION = "PMMPDataVersion"; //TAG_Long + private function __construct(){ //NOOP } diff --git a/src/block/tile/Tile.php b/src/block/tile/Tile.php index 7722c32a5..7b709f679 100644 --- a/src/block/tile/Tile.php +++ b/src/block/tile/Tile.php @@ -34,6 +34,7 @@ use pocketmine\nbt\NbtDataException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; +use pocketmine\VersionInfo; use pocketmine\world\Position; use pocketmine\world\World; use function get_class; @@ -71,7 +72,8 @@ abstract class Tile{ ->setString(self::TAG_ID, TileFactory::getInstance()->getSaveId(get_class($this))) ->setInt(self::TAG_X, $this->position->getFloorX()) ->setInt(self::TAG_Y, $this->position->getFloorY()) - ->setInt(self::TAG_Z, $this->position->getFloorZ()); + ->setInt(self::TAG_Z, $this->position->getFloorZ()) + ->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); $this->writeSaveData($nbt); return $nbt; diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index 31f2b98c0..e30836f3b 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -27,6 +27,7 @@ use pocketmine\nbt\NbtException; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\Tag; use pocketmine\utils\Utils; +use pocketmine\VersionInfo; use function array_keys; use function count; use function implode; @@ -96,12 +97,13 @@ final class BlockStateData{ $name = $nbt->getString(self::TAG_NAME); $states = $nbt->getCompoundTag(self::TAG_STATES) ?? throw new BlockStateDeserializeException("Missing tag \"" . self::TAG_STATES . "\""); $version = $nbt->getInt(self::TAG_VERSION, 0); + //TODO: read version from VersionInfo::TAG_WORLD_DATA_VERSION - we may need it to fix up old blockstates }catch(NbtException $e){ throw new BlockStateDeserializeException($e->getMessage(), 0, $e); } $allKeys = $nbt->getValue(); - unset($allKeys[self::TAG_NAME], $allKeys[self::TAG_STATES], $allKeys[self::TAG_VERSION]); + unset($allKeys[self::TAG_NAME], $allKeys[self::TAG_STATES], $allKeys[self::TAG_VERSION], $allKeys[VersionInfo::TAG_WORLD_DATA_VERSION]); if(count($allKeys) !== 0){ throw new BlockStateDeserializeException("Unexpected extra keys: " . implode(", ", array_keys($allKeys))); } @@ -117,7 +119,8 @@ final class BlockStateData{ return CompoundTag::create() ->setString(self::TAG_NAME, $this->name) ->setInt(self::TAG_VERSION, $this->version) - ->setTag(self::TAG_STATES, $statesTag); + ->setTag(self::TAG_STATES, $statesTag) + ->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); } public function equals(self $that) : bool{ diff --git a/src/data/bedrock/item/SavedItemData.php b/src/data/bedrock/item/SavedItemData.php index fa631e4e7..87e91732e 100644 --- a/src/data/bedrock/item/SavedItemData.php +++ b/src/data/bedrock/item/SavedItemData.php @@ -25,6 +25,7 @@ namespace pocketmine\data\bedrock\item; use pocketmine\data\bedrock\block\BlockStateData; use pocketmine\nbt\tag\CompoundTag; +use pocketmine\VersionInfo; final class SavedItemData{ @@ -59,6 +60,7 @@ final class SavedItemData{ if($this->tag !== null){ $result->setTag(self::TAG_TAG, $this->tag); } + $result->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); return $result; } diff --git a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php index 249b257e2..d7d097de8 100644 --- a/src/data/bedrock/item/upgrade/ItemDataUpgrader.php +++ b/src/data/bedrock/item/upgrade/ItemDataUpgrader.php @@ -149,6 +149,7 @@ final class ItemDataUpgrader{ [$newNameId, $newMeta] = $this->idMetaUpgrader->upgrade($rawNameId, $meta); //TODO: this won't account for spawn eggs from before 1.16.100 - perhaps we're lucky and they just left the meta in there anyway? + //TODO: read version from VersionInfo::TAG_WORLD_DATA_VERSION - we may need it to fix up old items return new SavedItemData($newNameId, $newMeta, $blockStateData, $tag->getCompoundTag(SavedItemData::TAG_TAG)); } diff --git a/src/entity/Entity.php b/src/entity/Entity.php index cb7d140da..095ab7ab3 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -60,6 +60,7 @@ use pocketmine\Server; use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; use pocketmine\utils\Utils; +use pocketmine\VersionInfo; use pocketmine\world\format\Chunk; use pocketmine\world\Position; use pocketmine\world\sound\Sound; @@ -489,6 +490,8 @@ abstract class Entity{ $nbt->setShort(self::TAG_FIRE, $this->fireTicks); $nbt->setByte(self::TAG_ON_GROUND, $this->onGround ? 1 : 0); + $nbt->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); + return $nbt; } diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 48d02cbec..faef3ab21 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -33,6 +33,7 @@ use pocketmine\nbt\TreeRoot; use pocketmine\utils\Binary; use pocketmine\utils\Filesystem; use pocketmine\utils\Limits; +use pocketmine\VersionInfo; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; use pocketmine\world\generator\Flat; @@ -201,6 +202,7 @@ class BedrockWorldData extends BaseNbtWorldData{ $this->compoundTag->setInt(self::TAG_NETWORK_VERSION, self::CURRENT_STORAGE_NETWORK_VERSION); $this->compoundTag->setInt(self::TAG_STORAGE_VERSION, self::CURRENT_STORAGE_VERSION); $this->compoundTag->setTag(self::TAG_LAST_OPENED_WITH_VERSION, new ListTag(array_map(fn(int $v) => new IntTag($v), self::CURRENT_CLIENT_VERSION_TARGET))); + $this->compoundTag->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); $nbt = new LittleEndianNbtSerializer(); $buffer = $nbt->write(new TreeRoot($this->compoundTag)); diff --git a/src/world/format/io/data/JavaWorldData.php b/src/world/format/io/data/JavaWorldData.php index baa2a34fe..b53ad34a5 100644 --- a/src/world/format/io/data/JavaWorldData.php +++ b/src/world/format/io/data/JavaWorldData.php @@ -30,6 +30,7 @@ use pocketmine\nbt\tag\StringTag; use pocketmine\nbt\TreeRoot; use pocketmine\utils\Filesystem; use pocketmine\utils\Utils; +use pocketmine\VersionInfo; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\World; @@ -126,6 +127,8 @@ class JavaWorldData extends BaseNbtWorldData{ } public function save() : void{ + $this->compoundTag->setLong(VersionInfo::TAG_WORLD_DATA_VERSION, VersionInfo::WORLD_DATA_VERSION); + $nbt = new BigEndianNbtSerializer(); $buffer = Utils::assumeNotFalse(zlib_encode($nbt->write(new TreeRoot(CompoundTag::create()->setTag(self::TAG_ROOT_DATA, $this->compoundTag))), ZLIB_ENCODING_GZIP)); Filesystem::safeFilePutContents($this->dataPath, $buffer); diff --git a/src/world/format/io/leveldb/ChunkDataKey.php b/src/world/format/io/leveldb/ChunkDataKey.php index 6d1b2980c..13cfe0bbe 100644 --- a/src/world/format/io/leveldb/ChunkDataKey.php +++ b/src/world/format/io/leveldb/ChunkDataKey.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\world\format\io\leveldb; +use pocketmine\VersionInfo; + final class ChunkDataKey{ private function __construct(){ //NOOP @@ -50,4 +52,6 @@ final class ChunkDataKey{ public const OLD_VERSION = "\x76"; + public const PM_DATA_VERSION = VersionInfo::TAG_WORLD_DATA_VERSION; + } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index a94a710bb..61ee88a06 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -34,6 +34,7 @@ use pocketmine\nbt\TreeRoot; use pocketmine\utils\Binary; use pocketmine\utils\BinaryDataException; use pocketmine\utils\BinaryStream; +use pocketmine\VersionInfo; use pocketmine\world\format\Chunk; use pocketmine\world\format\io\BaseWorldProvider; use pocketmine\world\format\io\ChunkData; @@ -601,6 +602,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return null; } + //TODO: read PM_DATA_VERSION - we'll need it to fix up old chunks + $logger = new \PrefixedLogger($this->logger, "Loading chunk x=$chunkX z=$chunkZ v$chunkVersion"); $hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION; @@ -710,6 +713,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $write = new \LevelDBWriteBatch(); $write->put($index . ChunkDataKey::NEW_VERSION, chr(self::CURRENT_LEVEL_CHUNK_VERSION)); + $write->put($index . ChunkDataKey::PM_DATA_VERSION, Binary::writeLLong(VersionInfo::WORLD_DATA_VERSION)); $chunk = $chunkData->getChunk(); From c10be0f346b5cfc5ea2f3a1e2762ae103f787bc8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 17:03:39 +0100 Subject: [PATCH 684/692] WorldProvider: allow loadChunk() to return additional information about the loaded chunk data this will be needed for dealing with #5733. I don't plan to fix that before 5.0, but we need to make the appropriate BC breaks now, before release. --- src/world/World.php | 10 ++--- src/world/format/io/FormatConverter.php | 7 +-- src/world/format/io/LoadedChunkData.php | 45 +++++++++++++++++++ src/world/format/io/WorldProvider.php | 6 +-- src/world/format/io/leveldb/LevelDB.php | 9 +++- .../io/region/LegacyAnvilChunkTrait.php | 19 +++++--- src/world/format/io/region/McRegion.php | 19 +++++--- .../format/io/region/RegionWorldProvider.php | 6 +-- 8 files changed, 91 insertions(+), 30 deletions(-) create mode 100644 src/world/format/io/LoadedChunkData.php diff --git a/src/world/World.php b/src/world/World.php index 13101d50f..6942b732f 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -2702,25 +2702,25 @@ class World implements ChunkManager{ $this->timings->syncChunkLoadData->startTiming(); - $chunk = null; + $loadedChunkData = null; try{ - $chunk = $this->provider->loadChunk($x, $z); + $loadedChunkData = $this->provider->loadChunk($x, $z); }catch(CorruptedChunkException $e){ $this->logger->critical("Failed to load chunk x=$x z=$z: " . $e->getMessage()); } $this->timings->syncChunkLoadData->stopTiming(); - if($chunk === null){ + if($loadedChunkData === null){ $this->timings->syncChunkLoad->stopTiming(); return null; } - $this->chunks[$chunkHash] = $chunk->getChunk(); + $this->chunks[$chunkHash] = $loadedChunkData->getData()->getChunk(); unset($this->blockCache[$chunkHash]); - $this->initChunk($x, $z, $chunk); + $this->initChunk($x, $z, $loadedChunkData->getData()); (new ChunkLoadEvent($this, $x, $z, $this->chunks[$chunkHash], false))->call(); diff --git a/src/world/format/io/FormatConverter.php b/src/world/format/io/FormatConverter.php index 0a12432da..e318d7c62 100644 --- a/src/world/format/io/FormatConverter.php +++ b/src/world/format/io/FormatConverter.php @@ -140,10 +140,11 @@ class FormatConverter{ $start = microtime(true); $thisRound = $start; - foreach($this->oldProvider->getAllChunks(true, $this->logger) as $coords => $chunk){ + foreach($this->oldProvider->getAllChunks(true, $this->logger) as $coords => $loadedChunkData){ [$chunkX, $chunkZ] = $coords; - $chunk->getChunk()->setTerrainDirty(); - $new->saveChunk($chunkX, $chunkZ, $chunk); + $chunkData = $loadedChunkData->getData(); + $chunkData->getChunk()->setTerrainDirty(); + $new->saveChunk($chunkX, $chunkZ, $chunkData); $counter++; if(($counter % $this->chunksPerProgressUpdate) === 0){ $time = microtime(true); diff --git a/src/world/format/io/LoadedChunkData.php b/src/world/format/io/LoadedChunkData.php new file mode 100644 index 000000000..bb31a97e1 --- /dev/null +++ b/src/world/format/io/LoadedChunkData.php @@ -0,0 +1,45 @@ +data; } + + public function isUpgraded() : bool{ return $this->upgraded; } + + public function getFixerFlags() : int{ return $this->fixerFlags; } +} diff --git a/src/world/format/io/WorldProvider.php b/src/world/format/io/WorldProvider.php index 3d08df860..546ca1204 100644 --- a/src/world/format/io/WorldProvider.php +++ b/src/world/format/io/WorldProvider.php @@ -43,7 +43,7 @@ interface WorldProvider{ * * @throws CorruptedChunkException */ - public function loadChunk(int $chunkX, int $chunkZ) : ?ChunkData; + public function loadChunk(int $chunkX, int $chunkZ) : ?LoadedChunkData; /** * Performs garbage collection in the world provider, such as cleaning up regions in Region-based worlds. @@ -63,8 +63,8 @@ interface WorldProvider{ /** * Returns a generator which yields all the chunks in this world. * - * @return \Generator|ChunkData[] - * @phpstan-return \Generator + * @return \Generator|LoadedChunkData[] + * @phpstan-return \Generator * @throws CorruptedChunkException */ public function getAllChunks(bool $skipCorrupted = false, ?\Logger $logger = null) : \Generator; diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 61ee88a06..17d0770b3 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -44,6 +44,7 @@ use pocketmine\world\format\io\exception\CorruptedChunkException; use pocketmine\world\format\io\exception\CorruptedWorldException; use pocketmine\world\format\io\exception\UnsupportedWorldFormatException; use pocketmine\world\format\io\GlobalBlockStateHandlers; +use pocketmine\world\format\io\LoadedChunkData; use pocketmine\world\format\io\WorldData; use pocketmine\world\format\io\WritableWorldProvider; use pocketmine\world\format\PalettedBlockArray; @@ -593,7 +594,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ /** * @throws CorruptedChunkException */ - public function loadChunk(int $chunkX, int $chunkZ) : ?ChunkData{ + public function loadChunk(int $chunkX, int $chunkZ) : ?LoadedChunkData{ $index = LevelDB::chunkIndex($chunkX, $chunkZ); $chunkVersion = $this->readVersion($chunkX, $chunkZ); @@ -704,7 +705,11 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $chunk->setTerrainDirty(); //trigger rewriting chunk to disk if it was converted from an older format } - return new ChunkData($chunk, $entities, $tiles); + return new LoadedChunkData( + data: new ChunkData($chunk, $entities, $tiles), + upgraded: $hasBeenUpgraded, + fixerFlags: LoadedChunkData::FIXER_FLAG_ALL //TODO: fill this by version rather than just setting all flags + ); } public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void{ diff --git a/src/world/format/io/region/LegacyAnvilChunkTrait.php b/src/world/format/io/region/LegacyAnvilChunkTrait.php index 05d4b0fb8..84bbb72f7 100644 --- a/src/world/format/io/region/LegacyAnvilChunkTrait.php +++ b/src/world/format/io/region/LegacyAnvilChunkTrait.php @@ -36,6 +36,7 @@ use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\ChunkUtils; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\io\LoadedChunkData; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; use function strlen; @@ -54,7 +55,7 @@ trait LegacyAnvilChunkTrait{ /** * @throws CorruptedChunkException */ - protected function deserializeChunk(string $data) : ?ChunkData{ + protected function deserializeChunk(string $data) : ?LoadedChunkData{ $decompressed = @zlib_decode($data); if($decompressed === false){ throw new CorruptedChunkException("Failed to decompress chunk NBT"); @@ -99,13 +100,17 @@ trait LegacyAnvilChunkTrait{ } } - return new ChunkData( - new Chunk( - $subChunks, - $chunk->getByte("TerrainPopulated", 0) !== 0 + return new LoadedChunkData( + data: new ChunkData( + new Chunk( + $subChunks, + $chunk->getByte("TerrainPopulated", 0) !== 0 + ), + ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], + ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], ), - ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], - ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], + upgraded: true, + fixerFlags: LoadedChunkData::FIXER_FLAG_ALL ); } diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index f911d0043..3ed185b1f 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -37,6 +37,7 @@ use pocketmine\world\format\Chunk; use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\ChunkUtils; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\io\LoadedChunkData; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; use function strlen; @@ -46,7 +47,7 @@ class McRegion extends RegionWorldProvider{ /** * @throws CorruptedChunkException */ - protected function deserializeChunk(string $data) : ?ChunkData{ + protected function deserializeChunk(string $data) : ?LoadedChunkData{ $decompressed = @zlib_decode($data); if($decompressed === false){ throw new CorruptedChunkException("Failed to decompress chunk NBT"); @@ -98,13 +99,17 @@ class McRegion extends RegionWorldProvider{ } } - return new ChunkData( - new Chunk( - $subChunks, - $chunk->getByte("TerrainPopulated", 0) !== 0 + return new LoadedChunkData( + data: new ChunkData( + new Chunk( + $subChunks, + $chunk->getByte("TerrainPopulated", 0) !== 0 + ), + ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], + ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], ), - ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], - ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], + upgraded: true, + fixerFlags: LoadedChunkData::FIXER_FLAG_ALL ); } diff --git a/src/world/format/io/region/RegionWorldProvider.php b/src/world/format/io/region/RegionWorldProvider.php index a5b6f54f7..a4a3055c6 100644 --- a/src/world/format/io/region/RegionWorldProvider.php +++ b/src/world/format/io/region/RegionWorldProvider.php @@ -28,9 +28,9 @@ use pocketmine\nbt\tag\ByteArrayTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; use pocketmine\world\format\io\BaseWorldProvider; -use pocketmine\world\format\io\ChunkData; use pocketmine\world\format\io\data\JavaWorldData; use pocketmine\world\format\io\exception\CorruptedChunkException; +use pocketmine\world\format\io\LoadedChunkData; use pocketmine\world\format\io\WorldData; use Symfony\Component\Filesystem\Path; use function assert; @@ -147,7 +147,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ /** * @throws CorruptedChunkException */ - abstract protected function deserializeChunk(string $data) : ?ChunkData; + abstract protected function deserializeChunk(string $data) : ?LoadedChunkData; /** * @return CompoundTag[] @@ -189,7 +189,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ /** * @throws CorruptedChunkException */ - public function loadChunk(int $chunkX, int $chunkZ) : ?ChunkData{ + public function loadChunk(int $chunkX, int $chunkZ) : ?LoadedChunkData{ $regionX = $regionZ = null; self::getRegionIndex($chunkX, $chunkZ, $regionX, $regionZ); assert(is_int($regionX) && is_int($regionZ)); From ce5e663a733d06efad274078febd998d91ad5374 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 17:22:39 +0100 Subject: [PATCH 685/692] Assume chunks are dirty by default having them be clean by default makes no sense. It only makes sense for them to be clean if they were loaded directly from disk without any alterations. Default clean is a footgun. --- src/world/World.php | 8 +++++++- src/world/format/Chunk.php | 2 +- src/world/format/io/leveldb/LevelDB.php | 12 +----------- src/world/generator/PopulationTask.php | 2 -- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/world/World.php b/src/world/World.php index 6942b732f..b6da5e95d 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -2717,7 +2717,13 @@ class World implements ChunkManager{ return null; } - $this->chunks[$chunkHash] = $loadedChunkData->getData()->getChunk(); + $chunk = $loadedChunkData->getData()->getChunk(); + if(!$loadedChunkData->isUpgraded()){ + $chunk->clearTerrainDirtyFlags(); + }else{ + $this->logger->debug("Chunk $x $z has been upgraded, will be saved at the next autosave opportunity"); + } + $this->chunks[$chunkHash] = $chunk; unset($this->blockCache[$chunkHash]); $this->initChunk($x, $z, $loadedChunkData->getData()); diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index 1a48205a5..fdf8089d2 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -44,7 +44,7 @@ class Chunk{ public const COORD_BIT_SIZE = SubChunk::COORD_BIT_SIZE; public const COORD_MASK = SubChunk::COORD_MASK; - private int $terrainDirtyFlags = 0; + private int $terrainDirtyFlags = ~0; protected ?bool $lightPopulated = false; protected bool $terrainPopulated = false; diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 17d0770b3..5f89800cc 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -695,18 +695,8 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: tile ticks, biome states (?) - $chunk = new Chunk( - $subChunks, - $terrainPopulated - ); - - if($hasBeenUpgraded){ - $logger->debug("Flagging chunk as dirty due to upgraded data"); - $chunk->setTerrainDirty(); //trigger rewriting chunk to disk if it was converted from an older format - } - return new LoadedChunkData( - data: new ChunkData($chunk, $entities, $tiles), + data: new ChunkData(new Chunk($subChunks, $terrainPopulated), $entities, $tiles), upgraded: $hasBeenUpgraded, fixerFlags: LoadedChunkData::FIXER_FLAG_ALL //TODO: fill this by version rather than just setting all flags ); diff --git a/src/world/generator/PopulationTask.php b/src/world/generator/PopulationTask.php index e7e2b407c..7e077f141 100644 --- a/src/world/generator/PopulationTask.php +++ b/src/world/generator/PopulationTask.php @@ -117,8 +117,6 @@ class PopulationTask extends AsyncTask{ if($chunk === null){ throw new AssumptionFailedError("We just set this chunk, so it must exist"); } - $chunk->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS, true); - $chunk->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES, true); } return $chunk; } From d57954dff09ce312840866b23bf4a985c6031ad8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 17:30:04 +0100 Subject: [PATCH 686/692] PopulationTask: ensure that unmodified chunks don't get sent back to the main thread for no reason --- src/world/generator/PopulationTask.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/world/generator/PopulationTask.php b/src/world/generator/PopulationTask.php index 7e077f141..8479a79fa 100644 --- a/src/world/generator/PopulationTask.php +++ b/src/world/generator/PopulationTask.php @@ -79,7 +79,14 @@ class PopulationTask extends AsyncTask{ /** @var string[] $serialChunks */ $serialChunks = igbinary_unserialize($this->adjacentChunks); $chunks = array_map( - fn(?string $serialized) => $serialized !== null ? FastChunkSerializer::deserializeTerrain($serialized) : null, + function(?string $serialized) : ?Chunk{ + if($serialized === null){ + return null; + } + $chunk = FastChunkSerializer::deserializeTerrain($serialized); + $chunk->clearTerrainDirtyFlags(); //this allows us to avoid sending existing chunks back to the main thread if they haven't changed during generation + return $chunk; + }, $serialChunks ); From a49842278abd6742ec652f954bf9c6f0766a4532 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 17:44:00 +0100 Subject: [PATCH 687/692] WorldProvider subsystem no longer depends on Chunk Instead, it provides the data needed to construct the chunk, which doesn't require the provider to be aware of anywhere near as much logic. --- src/world/World.php | 15 ++++++++----- src/world/format/io/ChunkData.php | 13 ++++++++--- src/world/format/io/FormatConverter.php | 5 ++--- src/world/format/io/WritableWorldProvider.php | 2 +- src/world/format/io/leveldb/LevelDB.php | 22 ++++++++++--------- .../io/region/LegacyAnvilChunkTrait.php | 6 ++--- src/world/format/io/region/McRegion.php | 6 ++--- .../io/region/WritableRegionWorldProvider.php | 2 +- 8 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/world/World.php b/src/world/World.php index b6da5e95d..b2b6dfac2 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1400,10 +1400,11 @@ class World implements ChunkManager{ foreach($this->chunks as $chunkHash => $chunk){ self::getXZ($chunkHash, $chunkX, $chunkZ); $this->provider->saveChunk($chunkX, $chunkZ, new ChunkData( - $chunk, + $chunk->getSubChunks(), + $chunk->isPopulated(), array_map(fn(Entity $e) => $e->saveNBT(), array_filter($this->getChunkEntities($chunkX, $chunkZ), fn(Entity $e) => $e->canSaveWithChunk())), array_map(fn(Tile $t) => $t->saveNBT(), $chunk->getTiles()), - )); + ), $chunk->getTerrainDirtyFlags()); $chunk->clearTerrainDirtyFlags(); } }finally{ @@ -2717,7 +2718,8 @@ class World implements ChunkManager{ return null; } - $chunk = $loadedChunkData->getData()->getChunk(); + $chunkData = $loadedChunkData->getData(); + $chunk = new Chunk($chunkData->getSubChunks(), $chunkData->isPopulated()); if(!$loadedChunkData->isUpgraded()){ $chunk->clearTerrainDirtyFlags(); }else{ @@ -2726,7 +2728,7 @@ class World implements ChunkManager{ $this->chunks[$chunkHash] = $chunk; unset($this->blockCache[$chunkHash]); - $this->initChunk($x, $z, $loadedChunkData->getData()); + $this->initChunk($x, $z, $chunkData); (new ChunkLoadEvent($this, $x, $z, $this->chunks[$chunkHash], false))->call(); @@ -2853,10 +2855,11 @@ class World implements ChunkManager{ $this->timings->syncChunkSave->startTiming(); try{ $this->provider->saveChunk($x, $z, new ChunkData( - $chunk, + $chunk->getSubChunks(), + $chunk->isPopulated(), array_map(fn(Entity $e) => $e->saveNBT(), array_filter($this->getChunkEntities($x, $z), fn(Entity $e) => $e->canSaveWithChunk())), array_map(fn(Tile $t) => $t->saveNBT(), $chunk->getTiles()), - )); + ), $chunk->getTerrainDirtyFlags()); }finally{ $this->timings->syncChunkSave->stopTiming(); } diff --git a/src/world/format/io/ChunkData.php b/src/world/format/io/ChunkData.php index edd28dcbf..458e00196 100644 --- a/src/world/format/io/ChunkData.php +++ b/src/world/format/io/ChunkData.php @@ -24,21 +24,28 @@ declare(strict_types=1); namespace pocketmine\world\format\io; use pocketmine\nbt\tag\CompoundTag; -use pocketmine\world\format\Chunk; +use pocketmine\world\format\SubChunk; final class ChunkData{ /** + * @param SubChunk[] $subChunks * @param CompoundTag[] $entityNBT * @param CompoundTag[] $tileNBT */ public function __construct( - private Chunk $chunk, + private array $subChunks, + private bool $populated, private array $entityNBT, private array $tileNBT ){} - public function getChunk() : Chunk{ return $this->chunk; } + /** + * @return SubChunk[] + */ + public function getSubChunks() : array{ return $this->subChunks; } + + public function isPopulated() : bool{ return $this->populated; } /** @return CompoundTag[] */ public function getEntityNBT() : array{ return $this->entityNBT; } diff --git a/src/world/format/io/FormatConverter.php b/src/world/format/io/FormatConverter.php index e318d7c62..2dcbe398e 100644 --- a/src/world/format/io/FormatConverter.php +++ b/src/world/format/io/FormatConverter.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\world\format\io; use pocketmine\utils\Filesystem; +use pocketmine\world\format\Chunk; use pocketmine\world\generator\GeneratorManager; use pocketmine\world\generator\normal\Normal; use pocketmine\world\WorldCreationOptions; @@ -142,9 +143,7 @@ class FormatConverter{ $thisRound = $start; foreach($this->oldProvider->getAllChunks(true, $this->logger) as $coords => $loadedChunkData){ [$chunkX, $chunkZ] = $coords; - $chunkData = $loadedChunkData->getData(); - $chunkData->getChunk()->setTerrainDirty(); - $new->saveChunk($chunkX, $chunkZ, $chunkData); + $new->saveChunk($chunkX, $chunkZ, $loadedChunkData->getData(), ~0); $counter++; if(($counter % $this->chunksPerProgressUpdate) === 0){ $time = microtime(true); diff --git a/src/world/format/io/WritableWorldProvider.php b/src/world/format/io/WritableWorldProvider.php index 8ed1b0c09..5c6344b52 100644 --- a/src/world/format/io/WritableWorldProvider.php +++ b/src/world/format/io/WritableWorldProvider.php @@ -27,5 +27,5 @@ interface WritableWorldProvider extends WorldProvider{ /** * Saves a chunk (usually to disk). */ - public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void; + public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData, int $dirtyFlags) : void; } diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index 5f89800cc..c0ae51673 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -290,12 +290,15 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ return $result; } - private static function serialize3dBiomes(BinaryStream $stream, Chunk $chunk) : void{ + /** + * @param SubChunk[] $subChunks + */ + private static function serialize3dBiomes(BinaryStream $stream, array $subChunks) : void{ //TODO: the server-side min/max may not coincide with the world storage min/max - we may need additional logic to handle this for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; $y++){ //TODO: is it worth trying to use the previous palette if it's the same as the current one? vanilla supports //this, but it's not clear if it's worth the effort to implement. - self::serializeBiomePalette($stream, $chunk->getSubChunk($y)->getBiomeArray()); + self::serializeBiomePalette($stream, $subChunks[$y]->getBiomeArray()); } } @@ -696,13 +699,13 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ //TODO: tile ticks, biome states (?) return new LoadedChunkData( - data: new ChunkData(new Chunk($subChunks, $terrainPopulated), $entities, $tiles), + data: new ChunkData($subChunks, $terrainPopulated, $entities, $tiles), upgraded: $hasBeenUpgraded, fixerFlags: LoadedChunkData::FIXER_FLAG_ALL //TODO: fill this by version rather than just setting all flags ); } - public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void{ + public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData, int $dirtyFlags) : void{ $index = LevelDB::chunkIndex($chunkX, $chunkZ); $write = new \LevelDBWriteBatch(); @@ -710,10 +713,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $write->put($index . ChunkDataKey::NEW_VERSION, chr(self::CURRENT_LEVEL_CHUNK_VERSION)); $write->put($index . ChunkDataKey::PM_DATA_VERSION, Binary::writeLLong(VersionInfo::WORLD_DATA_VERSION)); - $chunk = $chunkData->getChunk(); + $subChunks = $chunkData->getSubChunks(); - if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS)){ - $subChunks = $chunk->getSubChunks(); + if(($dirtyFlags & Chunk::DIRTY_FLAG_BLOCKS) !== 0){ foreach($subChunks as $y => $subChunk){ $key = $index . ChunkDataKey::SUBCHUNK . chr($y); @@ -734,16 +736,16 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ } } - if($chunk->getTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES)){ + if(($dirtyFlags & Chunk::DIRTY_FLAG_BIOMES) !== 0){ $write->delete($index . ChunkDataKey::HEIGHTMAP_AND_2D_BIOMES); $stream = new BinaryStream(); $stream->put(str_repeat("\x00", 512)); //fake heightmap - self::serialize3dBiomes($stream, $chunk); + self::serialize3dBiomes($stream, $subChunks); $write->put($index . ChunkDataKey::HEIGHTMAP_AND_3D_BIOMES, $stream->getBuffer()); } //TODO: use this properly - $write->put($index . ChunkDataKey::FINALIZATION, chr($chunk->isPopulated() ? self::FINALISATION_DONE : self::FINALISATION_NEEDS_POPULATION)); + $write->put($index . ChunkDataKey::FINALIZATION, chr($chunkData->isPopulated() ? self::FINALISATION_DONE : self::FINALISATION_NEEDS_POPULATION)); $this->writeTags($chunkData->getTileNBT(), $index . ChunkDataKey::BLOCK_ENTITIES, $write); $this->writeTags($chunkData->getEntityNBT(), $index . ChunkDataKey::ENTITIES, $write); diff --git a/src/world/format/io/region/LegacyAnvilChunkTrait.php b/src/world/format/io/region/LegacyAnvilChunkTrait.php index 84bbb72f7..ffb7b585a 100644 --- a/src/world/format/io/region/LegacyAnvilChunkTrait.php +++ b/src/world/format/io/region/LegacyAnvilChunkTrait.php @@ -102,10 +102,8 @@ trait LegacyAnvilChunkTrait{ return new LoadedChunkData( data: new ChunkData( - new Chunk( - $subChunks, - $chunk->getByte("TerrainPopulated", 0) !== 0 - ), + $subChunks, + $chunk->getByte("TerrainPopulated", 0) !== 0, ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], ), diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index 3ed185b1f..b596e33af 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -101,10 +101,8 @@ class McRegion extends RegionWorldProvider{ return new LoadedChunkData( data: new ChunkData( - new Chunk( - $subChunks, - $chunk->getByte("TerrainPopulated", 0) !== 0 - ), + $subChunks, + $chunk->getByte("TerrainPopulated", 0) !== 0, ($entitiesTag = $chunk->getTag("Entities")) instanceof ListTag ? self::getCompoundList("Entities", $entitiesTag) : [], ($tilesTag = $chunk->getTag("TileEntities")) instanceof ListTag ? self::getCompoundList("TileEntities", $tilesTag) : [], ), diff --git a/src/world/format/io/region/WritableRegionWorldProvider.php b/src/world/format/io/region/WritableRegionWorldProvider.php index 56cc2ff71..40353f5f9 100644 --- a/src/world/format/io/region/WritableRegionWorldProvider.php +++ b/src/world/format/io/region/WritableRegionWorldProvider.php @@ -53,7 +53,7 @@ abstract class WritableRegionWorldProvider extends RegionWorldProvider implement abstract protected function serializeChunk(ChunkData $chunk) : string; - public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData) : void{ + public function saveChunk(int $chunkX, int $chunkZ, ChunkData $chunkData, int $dirtyFlags) : void{ self::getRegionIndex($chunkX, $chunkZ, $regionX, $regionZ); $this->loadRegion($regionX, $regionZ)->writeChunk($chunkX & 0x1f, $chunkZ & 0x1f, $this->serializeChunk($chunkData)); } From 5a9cdef40c4a66d6b59d9fb4428f021030791fc3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 17:45:19 +0100 Subject: [PATCH 688/692] Chunk: added DIRTY_FLAGS_ALL and DIRTY_FLAGS_NONE --- src/world/format/Chunk.php | 11 +++++++---- src/world/format/io/FormatConverter.php | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index fdf8089d2..1f94ad9d0 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -36,6 +36,9 @@ class Chunk{ public const DIRTY_FLAG_BLOCKS = 1 << 0; public const DIRTY_FLAG_BIOMES = 1 << 3; + public const DIRTY_FLAGS_ALL = ~0; + public const DIRTY_FLAGS_NONE = 0; + public const MIN_SUBCHUNK_INDEX = -4; public const MAX_SUBCHUNK_INDEX = 19; public const MAX_SUBCHUNKS = self::MAX_SUBCHUNK_INDEX - self::MIN_SUBCHUNK_INDEX + 1; @@ -44,7 +47,7 @@ class Chunk{ public const COORD_BIT_SIZE = SubChunk::COORD_BIT_SIZE; public const COORD_MASK = SubChunk::COORD_MASK; - private int $terrainDirtyFlags = ~0; + private int $terrainDirtyFlags = self::DIRTY_FLAGS_ALL; protected ?bool $lightPopulated = false; protected bool $terrainPopulated = false; @@ -248,7 +251,7 @@ class Chunk{ } public function isTerrainDirty() : bool{ - return $this->terrainDirtyFlags !== 0; + return $this->terrainDirtyFlags !== self::DIRTY_FLAGS_NONE; } public function getTerrainDirtyFlag(int $flag) : bool{ @@ -268,11 +271,11 @@ class Chunk{ } public function setTerrainDirty() : void{ - $this->terrainDirtyFlags = ~0; + $this->terrainDirtyFlags = self::DIRTY_FLAGS_ALL; } public function clearTerrainDirtyFlags() : void{ - $this->terrainDirtyFlags = 0; + $this->terrainDirtyFlags = self::DIRTY_FLAGS_NONE; } public function getSubChunk(int $y) : SubChunk{ diff --git a/src/world/format/io/FormatConverter.php b/src/world/format/io/FormatConverter.php index 2dcbe398e..1d485afa2 100644 --- a/src/world/format/io/FormatConverter.php +++ b/src/world/format/io/FormatConverter.php @@ -143,7 +143,7 @@ class FormatConverter{ $thisRound = $start; foreach($this->oldProvider->getAllChunks(true, $this->logger) as $coords => $loadedChunkData){ [$chunkX, $chunkZ] = $coords; - $new->saveChunk($chunkX, $chunkZ, $loadedChunkData->getData(), ~0); + $new->saveChunk($chunkX, $chunkZ, $loadedChunkData->getData(), Chunk::DIRTY_FLAGS_ALL); $counter++; if(($counter % $this->chunksPerProgressUpdate) === 0){ $time = microtime(true); From 8744032ab6e19baf4e902e61b39fb7b2f8f73f44 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 May 2023 18:26:23 +0100 Subject: [PATCH 689/692] Fixed empty block handling after blockstate ID XOR change --- src/block/Block.php | 5 +++++ src/world/format/Chunk.php | 7 +++---- src/world/format/io/leveldb/LevelDB.php | 15 +++++++-------- src/world/format/io/region/Anvil.php | 3 +-- .../format/io/region/LegacyAnvilChunkTrait.php | 3 +-- src/world/format/io/region/McRegion.php | 5 ++--- src/world/format/io/region/PMAnvil.php | 3 +-- tests/phpunit/block/BlockTest.php | 5 +++++ 8 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 29990bd1c..21781d170 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -58,6 +58,11 @@ class Block{ public const INTERNAL_STATE_DATA_BITS = 8; public const INTERNAL_STATE_DATA_MASK = ~(~0 << self::INTERNAL_STATE_DATA_BITS); + /** + * @internal + */ + public const EMPTY_STATE_ID = (BlockTypeIds::AIR << self::INTERNAL_STATE_DATA_BITS) | (BlockTypeIds::AIR & self::INTERNAL_STATE_DATA_MASK); + protected BlockIdentifier $idInfo; protected string $fallbackName; protected BlockTypeInfo $typeInfo; diff --git a/src/world/format/Chunk.php b/src/world/format/Chunk.php index 1f94ad9d0..e4c877dc9 100644 --- a/src/world/format/Chunk.php +++ b/src/world/format/Chunk.php @@ -27,7 +27,6 @@ declare(strict_types=1); namespace pocketmine\world\format; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\block\tile\Tile; use pocketmine\data\bedrock\BiomeIds; use function array_map; @@ -71,7 +70,7 @@ class Chunk{ foreach($this->subChunks as $y => $null){ //TODO: we should probably require all subchunks to be provided here - $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], new PalettedBlockArray(BiomeIds::OCEAN)); + $this->subChunks[$y] = $subChunks[$y + self::MIN_SUBCHUNK_INDEX] ?? new SubChunk(Block::EMPTY_STATE_ID, [], new PalettedBlockArray(BiomeIds::OCEAN)); } $val = (self::MAX_SUBCHUNK_INDEX + 1) * SubChunk::EDGE_LENGTH; @@ -293,8 +292,8 @@ class Chunk{ throw new \InvalidArgumentException("Invalid subchunk Y coordinate $y"); } - $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], new PalettedBlockArray(BiomeIds::OCEAN)); - $this->setTerrainDirtyFlag(self::DIRTY_FLAG_BLOCKS, true); + $this->subChunks[$y - self::MIN_SUBCHUNK_INDEX] = $subChunk ?? new SubChunk(Block::EMPTY_STATE_ID, [], new PalettedBlockArray(BiomeIds::OCEAN)); + $this->terrainDirtyFlags |= self::DIRTY_FLAG_BLOCKS; } /** diff --git a/src/world/format/io/leveldb/LevelDB.php b/src/world/format/io/leveldb/LevelDB.php index c0ae51673..a42d8d53e 100644 --- a/src/world/format/io/leveldb/LevelDB.php +++ b/src/world/format/io/leveldb/LevelDB.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\world\format\io\leveldb; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\data\bedrock\block\BlockStateDeserializeException; use pocketmine\nbt\LittleEndianNbtSerializer; @@ -355,7 +354,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $blockStateId = $this->blockStateDeserializer->deserialize($blockStateData); if(!isset($extraDataLayers[$ySub])){ - $extraDataLayers[$ySub] = new PalettedBlockArray(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS); + $extraDataLayers[$ySub] = new PalettedBlockArray(Block::EMPTY_STATE_ID); } $extraDataLayers[$ySub]->set($x, $y, $z, $blockStateId); } @@ -417,13 +416,13 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ if(isset($convertedLegacyExtraData[$yy])){ $storages[] = $convertedLegacyExtraData[$yy]; } - $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, clone $biomes3d); + $subChunks[$yy] = new SubChunk(Block::EMPTY_STATE_ID, $storages, clone $biomes3d); } //make sure extrapolated biomes get filled in correctly for($yy = Chunk::MIN_SUBCHUNK_INDEX; $yy <= Chunk::MAX_SUBCHUNK_INDEX; ++$yy){ if(!isset($subChunks[$yy])){ - $subChunks[$yy] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); + $subChunks[$yy] = new SubChunk(Block::EMPTY_STATE_ID, [], clone $biomes3d); } } @@ -457,7 +456,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $storages[] = $convertedLegacyExtraData; } - return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + return new SubChunk(Block::EMPTY_STATE_ID, $storages, $biomePalette); } /** @@ -481,7 +480,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ if($convertedLegacyExtraData !== null){ $storages[] = $convertedLegacyExtraData; } - return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + return new SubChunk(Block::EMPTY_STATE_ID, $storages, $biomePalette); case SubChunkVersion::PALETTED_MULTI: case SubChunkVersion::PALETTED_MULTI_WITH_OFFSET: //legacy extradata layers intentionally ignored because they aren't supposed to exist in v8 @@ -496,7 +495,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ for($k = 0; $k < $storageCount; ++$k){ $storages[] = $this->deserializeBlockPalette($binaryStream, $logger); } - return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, $storages, $biomePalette); + return new SubChunk(Block::EMPTY_STATE_ID, $storages, $biomePalette); default: //this should never happen - an unsupported chunk appearing in a supported world is a sign of corruption throw new CorruptedChunkException("don't know how to decode LevelDB subchunk format version $subChunkVersion"); @@ -526,7 +525,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{ $subChunkKeyOffset = self::hasOffsetCavesAndCliffsSubChunks($chunkVersion) ? self::CAVES_CLIFFS_EXPERIMENTAL_SUBCHUNK_KEY_OFFSET : 0; for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ if(($data = $this->db->get($index . ChunkDataKey::SUBCHUNK . chr($y + $subChunkKeyOffset))) === false){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], $biomeArrays[$y]); + $subChunks[$y] = new SubChunk(Block::EMPTY_STATE_ID, [], $biomeArrays[$y]); continue; } diff --git a/src/world/format/io/region/Anvil.php b/src/world/format/io/region/Anvil.php index c1b6b9671..abefc9f25 100644 --- a/src/world/format/io/region/Anvil.php +++ b/src/world/format/io/region/Anvil.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; @@ -33,7 +32,7 @@ class Anvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk, PalettedBlockArray $biomes3d) : SubChunk{ - return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkYZX( + return new SubChunk(Block::EMPTY_STATE_ID, [$this->palettizeLegacySubChunkYZX( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )], $biomes3d); diff --git a/src/world/format/io/region/LegacyAnvilChunkTrait.php b/src/world/format/io/region/LegacyAnvilChunkTrait.php index ffb7b585a..ba97d43b5 100644 --- a/src/world/format/io/region/LegacyAnvilChunkTrait.php +++ b/src/world/format/io/region/LegacyAnvilChunkTrait.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\nbt\BigEndianNbtSerializer; use pocketmine\nbt\NbtDataException; @@ -96,7 +95,7 @@ trait LegacyAnvilChunkTrait{ } for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ if(!isset($subChunks[$y])){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); + $subChunks[$y] = new SubChunk(Block::EMPTY_STATE_ID, [], clone $biomes3d); } } diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index b596e33af..878c84df4 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\data\bedrock\BiomeIds; use pocketmine\nbt\BigEndianNbtSerializer; use pocketmine\nbt\NbtDataException; @@ -91,11 +90,11 @@ class McRegion extends RegionWorldProvider{ $fullData = self::readFixedSizeByteArray($chunk, "Data", 16384); for($y = 0; $y < 8; ++$y){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)], clone $biomes3d); + $subChunks[$y] = new SubChunk(Block::EMPTY_STATE_ID, [$this->palettizeLegacySubChunkFromColumn($fullIds, $fullData, $y)], clone $biomes3d); } for($y = Chunk::MIN_SUBCHUNK_INDEX; $y <= Chunk::MAX_SUBCHUNK_INDEX; ++$y){ if(!isset($subChunks[$y])){ - $subChunks[$y] = new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [], clone $biomes3d); + $subChunks[$y] = new SubChunk(Block::EMPTY_STATE_ID, [], clone $biomes3d); } } diff --git a/src/world/format/io/region/PMAnvil.php b/src/world/format/io/region/PMAnvil.php index 8d31f73bc..41dc0fa80 100644 --- a/src/world/format/io/region/PMAnvil.php +++ b/src/world/format/io/region/PMAnvil.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace pocketmine\world\format\io\region; use pocketmine\block\Block; -use pocketmine\block\BlockTypeIds; use pocketmine\nbt\tag\CompoundTag; use pocketmine\world\format\PalettedBlockArray; use pocketmine\world\format\SubChunk; @@ -37,7 +36,7 @@ class PMAnvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; protected function deserializeSubChunk(CompoundTag $subChunk, PalettedBlockArray $biomes3d) : SubChunk{ - return new SubChunk(BlockTypeIds::AIR << Block::INTERNAL_STATE_DATA_BITS, [$this->palettizeLegacySubChunkXZY( + return new SubChunk(Block::EMPTY_STATE_ID, [$this->palettizeLegacySubChunkXZY( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), self::readFixedSizeByteArray($subChunk, "Data", 2048) )], $biomes3d); diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 81f1c3516..711b7e51a 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -119,4 +119,9 @@ class BlockTest extends TestCase{ self::assertSame($name, $states[$k]->getName()); } } + + public function testEmptyStateId() : void{ + $block = $this->blockFactory->fromStateId(Block::EMPTY_STATE_ID); + self::assertInstanceOf(Air::class, $block); + } } From 4f4dca7fc05634dca27bad33f70ae08d9be699ae Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 30 May 2023 21:41:25 +0100 Subject: [PATCH 690/692] Mark WoodLikeBlockIdHelper as internal --- src/block/WoodLikeBlockIdHelper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/block/WoodLikeBlockIdHelper.php b/src/block/WoodLikeBlockIdHelper.php index a7aacb649..a4134669a 100644 --- a/src/block/WoodLikeBlockIdHelper.php +++ b/src/block/WoodLikeBlockIdHelper.php @@ -42,6 +42,8 @@ use pocketmine\utils\AssumptionFailedError; * as flammability, hardness, required tool tier, etc. * Therefore, to stay on the safe side of Mojang, wood-like blocks have static types. This does unfortunately generate * a lot of ugly code. + * + * @internal */ final class WoodLikeBlockIdHelper{ From 07225df936e061b3779d8a82164aeb83b21b465f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 31 May 2023 21:48:06 +0100 Subject: [PATCH 691/692] Block: fixed tile-stored properties sticking to the item in asItem() this was enabling duplication of items, since the dropped item object would contain a Block which still referenced the framed Item. --- src/block/Block.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/block/Block.php b/src/block/Block.php index 21781d170..f838ca450 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -73,7 +73,8 @@ class Block{ private int $requiredBlockItemStateDataBits; private int $requiredBlockOnlyStateDataBits; - private int $defaultBlockOnlyStateData; + + private Block $defaultState; /** * @param string $name English name of the block type (TODO: implement translations) @@ -92,7 +93,7 @@ class Block{ $this->describeBlockOnlyState($calculator); $this->requiredBlockOnlyStateDataBits = $calculator->getBitsUsed(); - $this->defaultBlockOnlyStateData = $this->encodeBlockOnlyState(); + $this->defaultState = clone $this; } public function __clone(){ @@ -193,10 +194,11 @@ class Block{ * Returns the block as an item. * Block-only state such as facing, powered/unpowered, open/closed, etc., is discarded. * Block-item state such as colour, wood type, etc. is preserved. + * Complex state properties stored in the tile data (e.g. inventory) are discarded. */ public function asItem() : Item{ - $normalized = clone $this; - $normalized->decodeBlockOnlyState($this->defaultBlockOnlyStateData); + $normalized = clone $this->defaultState; + $normalized->decodeBlockItemState($this->encodeBlockItemState()); return new ItemBlock($normalized); } From de49910e8471b3363db47281cbce92b5fb88fb2d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 31 May 2023 22:18:25 +0100 Subject: [PATCH 692/692] Fix CS --- src/inventory/CreativeInventory.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/inventory/CreativeInventory.php b/src/inventory/CreativeInventory.php index 746c6b81b..7502a6785 100644 --- a/src/inventory/CreativeInventory.php +++ b/src/inventory/CreativeInventory.php @@ -28,7 +28,6 @@ use pocketmine\crafting\json\ItemStackData; use pocketmine\data\bedrock\BedrockDataFiles; use pocketmine\item\Item; use pocketmine\utils\DestructorCallbackTrait; -use pocketmine\utils\Filesystem; use pocketmine\utils\ObjectSet; use pocketmine\utils\SingletonTrait; use pocketmine\utils\Utils;